271 lines
7.0 KiB
Plaintext
271 lines
7.0 KiB
Plaintext
COMPILE FUNCTION obj_Location(Method,Parms)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
/*
|
|
Methods for the LOCATION (Inventory Location) Tables
|
|
|
|
4/22/2016 JCH - Initial coding
|
|
|
|
|
|
*/
|
|
|
|
DECLARE FUNCTION Get_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, obj_Tables, Logging_Services, Environment_Services
|
|
DECLARE SUBROUTINE ErrMsg, Set_Status, FieldStore, obj_Tables, obj_WO_Wfr, RList, Msg, Send_Dyn, Btree.Extract, Logging_Services
|
|
|
|
$Insert LOCATION_EQUATES
|
|
$INSERT RLIST_EQUATES
|
|
|
|
ErrTitle = 'Error in Stored Procedure "obj_Location"'
|
|
ErrorMsg = ''
|
|
ErrCode = ''
|
|
|
|
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
|
|
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Method = 'SetWfrID' ; Gosub SetWfrID
|
|
Case Method = 'ClearWfrID' ; Gosub ClearWfrID
|
|
CASE Method = 'StageLocations' ; GOSUB Locations
|
|
CASE Method = 'KitLocations' ; GOSUB Locations
|
|
CASE Method = 'PTILocations' ; GOSUB Locations
|
|
|
|
CASE 1
|
|
NULL
|
|
|
|
END CASE
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
SetWfrID:
|
|
* * * * * * *
|
|
|
|
LocID = Parms[1,@RM]
|
|
WfrIDs = Parms[COL2()+1,@RM]
|
|
|
|
If LocID = '' THEN ErrorMsg = 'Null Parameter "LocID" passed to routine. (':Method:')'
|
|
If WfrIDs = '' THEN ErrorMsg = 'Null Parameter "WfrID" passed to routine. (':Method:')'
|
|
|
|
LogWfrIDs = WfrIDs
|
|
Convert @VM to ',' in LogWfrIDs
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ SetWfrID' : @FM : '1. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
|
|
If ErrorMsg NE '' Then Return
|
|
|
|
otParms = 'LOCATION':@RM:LocID
|
|
LocRec = obj_Tables('ReadRec',otParms)
|
|
|
|
WriteFlag = 0
|
|
|
|
wCnt = COUNT(WfrIDs,@VM) + (WfrIDs NE '')
|
|
|
|
FOR I = 1 TO wCnt
|
|
WfrID = WfrIDs<1,I>
|
|
|
|
Locate WfrID In LocRec<LOCATION_WFR_ID$> USING @VM SETTING Pos ELSE
|
|
LocRec = Insert(LocRec,LOCATION_WFR_ID$ ,Pos,0, WfrID)
|
|
WriteFlag = 1
|
|
END
|
|
|
|
NEXT I
|
|
|
|
IF WriteFlag THEN
|
|
otParms = FieldStore(otParms,@RM,4,0,LocRec)
|
|
obj_Tables('WriteRec',otParms)
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ SetWfrID' : @FM : '2. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
END ELSE
|
|
obj_Tables('UnlockRec',otParms)
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ SetWfrID' : @FM : '3. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
END
|
|
|
|
Return
|
|
|
|
|
|
|
|
* * * * * * *
|
|
ClearWfrID:
|
|
* * * * * * *
|
|
|
|
LocID = Parms[1,@RM]
|
|
WfrIDs = Parms[COL2()+1,@RM]
|
|
|
|
If LocID = '' THEN ErrorMsg = 'Null Parameter "LocID" passed to routine. (':Method:')'
|
|
If WfrIDs = '' THEN ErrorMsg = 'Null Parameter "WfrIDs" passed to routine. (':Method:')'
|
|
|
|
LogWfrIDs = WfrIDs
|
|
Convert @VM to ',' in LogWfrIDs
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ ClearWfrID' : @FM : '1. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
|
|
|
|
If ErrorMsg NE '' Then Return
|
|
|
|
otParms = 'LOCATION':@RM:LocID
|
|
LocRec = obj_Tables('ReadRec',otParms)
|
|
|
|
WriteFlag = 0
|
|
|
|
wCnt = COUNT(WfrIDs,@VM) + (WfrIDs NE '')
|
|
|
|
FOR I = 1 TO wCnt
|
|
WfrID = WfrIDs<1,I>
|
|
|
|
Locate WfrID In LocRec<LOCATION_WFR_ID$> USING @VM SETTING Pos Then
|
|
LocRec = Delete(LocRec,LOCATION_WFR_ID$,Pos,0)
|
|
WriteFlag = 1
|
|
End
|
|
|
|
NEXT I
|
|
|
|
IF WriteFlag THEN
|
|
otParms = FieldStore(otParms,@RM,4,0,LocRec)
|
|
obj_Tables('WriteRec',otParms)
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ ClearWfrID' : @FM : '2. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
END ELSE
|
|
obj_Tables('UnlockRec',otParms)
|
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @USER4 : @FM: ' obj_Location/ ClearWfrID' : @FM : '3. LocID : ' : LocID : ', WfrIDs : ' : LogWfrIDs, @RM, @FM)
|
|
END
|
|
|
|
|
|
Return
|
|
|
|
|
|
* * * * * * *
|
|
Locations:
|
|
* * * * * * *
|
|
|
|
WONo = Parms[1,@RM]
|
|
|
|
IF WONo = '' THEN RETURN
|
|
|
|
BEGIN CASE
|
|
CASE Method = 'StageLocations' ; LocVar = '1K*R]'
|
|
CASE Method = 'KitLocations' ; LocVar = 'SR*KTR]'
|
|
CASE Method = 'PTILocations'
|
|
LocVar = ''
|
|
LocVar<0, -1> = 'SR*KTR]'
|
|
LocVar<0, -1> = 'SR*RB'
|
|
LocVar<0, -1> = '1K*PTI'
|
|
LocVar<0, -1> = 'CR*GAN1'
|
|
LocVar<0, -1> = 'CR*BE'
|
|
LocVar<0, -1> = 'CR*BO'
|
|
LocVar<0, -1> = 'CR*CLN1'
|
|
LocVar<0, -1> = 'CR*CLN2'
|
|
LocVar<0, -1> = 'CR*TUN'
|
|
LocVar<0, -1> = 'CR*EPP1'
|
|
LocVar<0, -1> = 'CR*EPP2'
|
|
LocVar<0, -1> = 'CR*EPR'
|
|
LocVar<0, -1> = 'CR*FE'
|
|
LocVar<0, -1> = 'CR*FEH'
|
|
LocVar<0, -1> = 'CR*FO'
|
|
LocVar<0, -1> = 'CR*FOH'
|
|
LocVar<0, -1> = 'CR*MU'
|
|
|
|
OPEN 'DICT.WO_MAT' TO DictVar THEN
|
|
|
|
SearchString = 'WO_NO':@VM:WONo:@FM
|
|
SearchString := 'CURR_LOCATION':@VM:LocVar:@FM
|
|
Flag = ''
|
|
WOMatKeys = ''
|
|
|
|
Btree.Extract(SearchString, 'WO_MAT', DictVar, WOMatKeys, '', Flag)
|
|
IF Get_Status(errCode) THEN
|
|
Msg(@WINDOW,MsgUp)
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
END ELSE
|
|
RETURN
|
|
END
|
|
|
|
Locations = ''
|
|
LocCnts = ''
|
|
LocCassNos = ''
|
|
|
|
LOOP
|
|
WOMatKey = WOMatKeys[1,@VM]
|
|
UNTIL WOMatKey = '' OR WOMatKeys = ''
|
|
|
|
CurrLoc = XLATE('WO_MAT',WOMatKey,'CURR_LOCATION','X')
|
|
CassNo = FIELD(WOMatKey,'*',2,1)
|
|
|
|
LOCATE CurrLoc IN Locations USING @VM SETTING Pos THEN
|
|
LocCnts<1,Pos> = LocCnts<1,Pos> +1
|
|
LocCassNos<1,Pos> = LocCassNos<1,Pos>:',':CassNo
|
|
END ELSE
|
|
Locations = INSERT(Locations,1,Pos,0,CurrLoc)
|
|
LocCnts = INSERT(LocCnts,1,Pos,0,1)
|
|
LocCassNos = INSERT(LocCassNos,1,Pos,0,CassNo)
|
|
END
|
|
|
|
WOMatKeys[1,COL2()] = ''
|
|
|
|
REPEAT
|
|
|
|
Result = Locations:@FM:LocCnts:@FM:LocCassNos
|
|
|
|
RETURN
|
|
|
|
CASE 1
|
|
RETURN
|
|
END CASE
|
|
|
|
OPEN 'DICT.WO_MAT' TO DictVar THEN
|
|
|
|
SearchString = 'WO_NO':@VM:WONo:@FM
|
|
SearchString := 'CURR_LOCATION':@VM:LocVar:@FM
|
|
Flag = ''
|
|
|
|
Btree.Extract(SearchString, 'WO_MAT', DictVar, WOMatKeys, '', Flag)
|
|
IF Get_Status(errCode) THEN
|
|
Msg(@WINDOW,MsgUp)
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
END ELSE
|
|
RETURN
|
|
END
|
|
|
|
Locations = ''
|
|
LocCnts = ''
|
|
LocCassNos = ''
|
|
|
|
LOOP
|
|
WOMatKey = WOMatKeys[1,@VM]
|
|
UNTIL WOMatKey = '' OR WOMatKeys = ''
|
|
|
|
CurrLoc = XLATE('WO_MAT',WOMatKey,'CURR_LOCATION','X')
|
|
CassNo = FIELD(WOMatKey,'*',2,1)
|
|
|
|
LOCATE CurrLoc IN Locations USING @VM SETTING Pos THEN
|
|
LocCnts<1,Pos> = LocCnts<1,Pos> +1
|
|
LocCassNos<1,Pos> = LocCassNos<1,Pos>:',':CassNo
|
|
END ELSE
|
|
Locations = INSERT(Locations,1,Pos,0,CurrLoc)
|
|
LocCnts = INSERT(LocCnts,1,Pos,0,1)
|
|
LocCassNos = INSERT(LocCassNos,1,Pos,0,CassNo)
|
|
END
|
|
|
|
WOMatKeys[1,COL2()] = ''
|
|
|
|
REPEAT
|
|
|
|
Result = Locations:@FM:LocCnts:@FM:LocCassNos
|
|
|
|
RETURN
|
|
|
|
|