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 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 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