open-insight/LSL2/STPROC/COMM_DIALOG_MAT_SCAN.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

766 lines
22 KiB
Plaintext

COMPILE FUNCTION Comm_Dialog_Mat_Scan(Instruction, Parm1,Parm2)
#pragma precomp SRP_PreCompiler
/*
Commuter module for Dialog_Mat_Scan (Material - Barcode Scan) window
10/24/2004 - John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, Dialog_Box, obj_WO_Mat_Log, Logging_Services
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, obj_Appwindow, End_Dialog, End_Window
DECLARE SUBROUTINE Send_Message, Print_Cass_Ship_Label, Print_SAP_Cass_Ship_Label, Post_Event
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, Logging_Services
DECLARE FUNCTION obj_Schedule, Dialog_Box, Utility, obj_WO_Mat, Database_Services, Environment_Services, Start_Window, End_Window
$INSERT RDS_EQUATES
$INSERT REACT_RUN_EQUATES
$INSERT WO_LOG_EQUATES
$INSERT POPUP_EQUATES
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT WO_MAT_EQUATES
Equ Tab$ to \09\
Equ CRLF$ to \0D0A\
Equ LF$ to \0A\
Equ Comma$ to ','
EQU COL$LABEL_SCAN TO 1
EQU COL$CURR_STATUS TO 2
EQU COL$CURR_LOC TO 3
EQU COL$CR_COMP TO 4
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WoMatLog'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Material Log.csv'
Headers = 'Logging DTM' : @FM : 'User' : @FM : 'Notes'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
ErrTitle = 'Error in Comm_Dialog_Mat_Scan'
ErrorMsg = ''
Result = ''
BEGIN CASE
CASE Instruction = 'Create' ; GOSUB Create
CASE Instruction = 'Refresh' ; GOSUB Refresh
CASE Instruction = 'OK' ; GOSUB OK
CASE Instruction = 'Cancel' ; GOSUB Cancel
CASE Instruction = 'CassIDPC' ; GOSUB CassIDPC
CASE Instruction = 'LocLF' ; GOSUB LocLF
CASE 1
ErrorMsg = 'Unknown Instruction passed to routine'
END CASE
IF ErrorMsg NE '' THEN
ErrMsg(ErrTitle:@SVM:ErrorMsg)
END
RETURN Result
* * * * * * *
Create:
* * * * * * *
IF @User4 EQ 'DAN_CR' OR @User4 EQ 'DON_T' OR @User4 EQ 'MADELINE_S' OR @User4 EQ 'JUSTIN_H' OR @User4 EQ 'JOSEPH_F' THEN
Set_Property(@WINDOW:'.BTN_NEW','VISIBLE',True$)
END
IF NOT(Security_Check('RDS',READ$)) THEN
Security_Err_Msg('RDS',READ$)
End_Dialog(@WINDOW,'Cancel')
RETURN
END
obj_Appwindow('Create',@WINDOW)
IF Parm1<1,1> = 'Ship' THEN
WONo = Parm1<1,2>[-1,'B ']
Set_Property(@WINDOW,'@WONO',WONo)
Set_Property(@WINDOW,'@SHIPMENT',1)
Set_Property(@WINDOW,'TEXT',Parm1<1,2>)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scan WO ':WONo:' Shipment')
END ELSE
Set_Property(@WINDOW:'@SHIPMENT','')
Set_Property(@WINDOW:'@WONO','')
END
GOSUB Refresh
RETURN
* * * * * * *
Clear:
* * * * * * *
Send_Event(@WINDOW,'PAGE',1)
GOTO Refresh
RETURN
* * * * * * *
Refresh:
* * * * * * *
WindowLabel = Get_Property(@WINDOW:'.WINDOW_LABEL','TEXT')
IF INDEX(WindowLabel,' IN ',1) THEN
BackColor = GREEN$
END ELSE
BackColor = YELLOW$
END
CtrlName = @WINDOW:'.CASS_IDS'
CassArray = Get_Property(CtrlName,'DEFPROP')
CassStatuses = CassArray<COL$CURR_STATUS> ;* Second Column
CurrLocations = CassArray<COL$CURR_LOC>
CurrCRCompFlags = ICONV(CassArray<COL$CR_COMP>,'B')
Location = Get_Property(@WINDOW:'.LOCATION_CODE','DEFPROP')
SWAP '\J' WITH '*' IN Location
Beeped = 0
FOR I = 1 TO COUNT(CassStatuses,@VM) + (CassStatuses NE '')
CassStatus = CassStatuses<1,I>
CurrLocation = CurrLocations<1,I>
CurrCRCompFlag = CurrCRCompFlags<1,I>
BEGIN CASE
CASE Location[-3,3] = 'PTO' AND CurrLocation NE ''
IF CurrCRCompFlag OR CassStatus = 'Verify Qty' THEN
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,I,GREEN$)
END ELSE
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,I,RED$)
IF NOT(Beeped) THEN
void = Utility('BEEP')
Beeped = 1
END
END
CASE Location[-2,2] = 'SB' AND CurrLocation NE ''
IF INDEX(CassStatus,'-',1) THEN
CassStatus = FIELD(CassStatus,'-',1)
CassStatus = TRIM(CassStatus)
END
IF CassStatus[-4,4] NE 'Ship' THEN
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,I,RED$)
IF NOT(Beeped) THEN
void = Utility('BEEP')
Beeped = 1
END
END ELSE
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,I,GREEN$)
END
CASE 1
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,I,GREEN$)
END CASE
NEXT I
IF Beeped = 1 THEN
Set_Property(@WINDOW:'.OK_BUTTON','ENABLED',0)
END ELSE
Set_Property(@WINDOW:'.OK_BUTTON','ENABLED',1)
END
LastLabel = CassArray<COL$LABEL_SCAN>[-1,'B':@VM]
IF LastLabel NE '' THEN
Send_Message(CtrlName, "INSERT", -1,'':@VM :'') ;* Insert blank row at bottom of the list
Set_Property(CtrlName,'SELPOS',1:@FM:-1) ;* Move cursor down
END
RETURN
* * * * * * *
OK:
* * * * * * *
LocCd = Get_Property(@WINDOW:'.LOCATION_CODE','DEFPROP')
IF LocCd = '' THEN
ErrMsg('Missing Location Code')
RETURN
END
SWAP '/J' WITH '*' IN LocCd
WhCd = LocCd[1,'*']
LocCd = LocCd[COL2()+1,'*']
CassIDs = Get_Property(@WINDOW:'.CASS_IDS','ARRAY')<1>
LOOP
UNTIL CassIDs[-1,1] NE @VM OR CassIDs = ''
CassIDs[-1,1] = ''
REPEAT
IF CassIDs<1,1> = '' THEN RETURN
TestCassID = CassIDs<1,1>
Convert '*' to '.' in TestCassID
Action = 'PLACE' ;* Default Action
PrintLabelWOs = ''
PLSteps = ''
PLCassNos = ''
PLRDSNos = ''
IF INDEX(TestCassID,'.',2) THEN EpiPRO = 1 ELSE EpiPRO = 0
IF INDEX(TestCassID,'.',1) THEN GaN = 1 ELSE GaN = 0
IF LocCd = 'PTO' THEN
PrintLabelWOs = Get_Property(@WINDOW,'@WONO') ;
FOR I = 1 To COUNT(CassIDs,@VM) + (CassIDs NE '')
CassID = CassIDs<1,I>
BEGIN CASE
CASE EpiPRO EQ True$
IF CassID[1,1] = 'O' THEN CassID[1,1] = ''
IF CassID[1,1] = 'I' THEN CassID[1,1] = ''
WONo = FIELD(CassID,'.',1)
StepNo = FIELD(CassID,'.',2)
CassNo = FIELD(CassID,'.',3)
RDSNo = ''
CASE GaN EQ True$
IF CassID[1,1] = 'O' THEN CassID[1,1] = ''
IF CassID[1,1] = 'I' THEN CassID[1,1] = ''
Convert '*' to '.' in CassID
WONo = FIELD(CassID,'.',1)
StepNo = 1
CassNo = FIELD(CassID,'.',2)
RDSNo = ''
CASE Otherwise$
RDSNo = CassID
ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X')
WONo = ReactRunRec<REACT_RUN_WO_NO$>
StepNo = ReactRunRec<REACT_RUN_WO_STEP$>
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
END CASE
PLSteps<1,-1> = StepNo ;
PLCassNos<1,-1> = CassNo ;
PLRDSNos<1,-1> = RDSNo ;
NEXT I
WOCnt = COUNT(PrintLabelWOs,@FM) + (PrintLabelWOs NE '')
FOR I = 1 TO WOCnt
PrintLabelWO = PrintLabelWOs<I>
PrintLabelProdOrd = XLATE('WO_LOG',PrintLabelWO,WO_LOG_PROD_ORD_NO$,'X')
IF PrintLabelProdOrd NE '' THEN
Print_SAP_Cass_Ship_Label(PrintLabelWO,PLSteps<I>,PLCassNos<I>,PLRDSNos<I>)
END
NEXT I
END
IF Get_Property(@WINDOW,'@SHIPMENT') THEN
IF INDEX(TestCassID,'.',2) THEN EpiPRO = 1 ELSE EpiPRO = 0
Result = '' ;* This gets returned to COMM_SHIPMENT and placed on the shipment record
FOR I = 1 To COUNT(CassIDs,@VM) + (CassIDs NE '')
CassID = CassIDs<1,I>
IF NOT(EpiPRO) THEN
RDSNo = CassID
ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X')
WONo = ReactRunRec<REACT_RUN_WO_NO$>
StepNo = ReactRunRec<REACT_RUN_WO_STEP$>
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
Result<-1> = StepNo:@VM:CassNo:@VM:RDSNo
END ELSE
IF CassID[1,1] = 'O' THEN CassID[1,1] = ''
IF CassID[1,1] = 'I' THEN CassID[1,1] = ''
Step = FIELD(CassID,'.',2)
CassNo = FIELD(CassID,'.',3)
Result<-1> = Step:@VM:CassNo
END
NEXT I
Action = 'SHIP'
END
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
WONos = ''
CassNos = ''
CassCnt = COUNT(CassIDs,@VM) + (CassIDs NE '')
FOR I = 1 TO CassCnt
CassID = CassIDs<1,I>
BEGIN CASE
CASE ( (EpiPro EQ True$) or (GaN EQ True$) )
IF CassID[1,1] = 'I' OR CassID[1,1] = 'O' THEN CassID[1,1] = '' ;* Skip the first character (I or O)
Convert '*' to '.' in CassID
WONos<1,I> = CassID[1,'.']
CassNos<1,I> = CassID[-1,'B.']
CASE Otherwise$
* Numeric CassID is an RDS
ReactRunRec = XLATE('REACT_RUN',CassID,'','X')
WONos<1,I> = ReactRunRec<REACT_RUN_WO_NO$>
CassNos<1,I> = ReactRunRec<REACT_RUN_CASS_NO$>
END CASE
NEXT I
UserID = @USER4
LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006
Set_Status(0)
// Log form contents
FormContents = Get_Property(@Window:'.CASS_IDS', 'LIST')
NumRows = DCount(FormContents, @FM)
LogContents = ''
For Row = 1 to NumRows
Cass = FormContents<Row, 1>
IF Cass NE '' THEN
LogContents<-1> = FormContents<Row>
END
Next Row
LogData = ''
LogData<1> = '*** Form Contents ***'
LogData<2, 1> = LoggingDTM
LogData<2, 2> = @User4
LogData<3> = LogContents
Logging_Services('AppendLog', objLog, LogData, @FM, @VM)
// Log Material Log parameters
LogData<1> = ' '
LogData<2> = '*** Material Log Parameters ***'
LogData<3> = 'LogFile: ':LogFile
LogData<4> = 'CurrDTM: ':CurrDTM
LogData<5> = 'Action: ':Action
LogData<6> = 'WhCd: ':WhCd
LogData<7> = 'LocCd: ':LocCd
LogData<8> = 'WONos: ':WONos
LogData<9> = 'CassNos: ':CassNos
LogData<10> = 'UserID: ':UserID
LogData<11> = 'CassIDs: ':CassIDs
LogData<12> = ' '
Logging_Services('AppendLog', objLog, LogData, @FM, @VM)
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONos:@RM:CassNos:@RM:UserID:@RM:CassIDs)
errCode = ''
IF Get_Status(errCode) THEN
Errmsg(errCode)
END
IF Get_Property(@WINDOW,'@SHIPMENT') THEN
End_Dialog(@WINDOW,Result) ;* Move this down and replace the CLEAR when called from the Shipment window
RETURN
END ELSE
Send_Event(@WINDOW,'CLEAR')
END
RETURN
* * * * * * * *
Cancel:
* * * * * * * *
End_Dialog(@WINDOW,'Cancel')
RETURN
* * * * * * * *
CassIDPC:
* * * * * * * *
CtrlEntID = @WINDOW:'.CASS_IDS'
Shipment = Get_Property(@WINDOW, '@SHIPMENT') ;* Shipment flag
AtWONo = Get_Property(@WINDOW, '@WONO')
Location = Get_Property(@WINDOW:'.LOCATION_CODE','DEFPROP')[-1,'B*']
PrevSelPos = Get_Property(CtrlEntId,"PREVSELPOS")
PrevCol = PrevSelPos<1>
PrevRow = PrevSelPos<2>
CurrPos = Get_Property(CtrlEntId,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
ListData = Get_Property(CtrlEntId,'LIST')
ArrayData = Get_Property(CtrlEntId,'ARRAY')
IF ListData<CurrRow,CurrCol> = '' THEN
ColPointer = CurrCol
LinePointer = CurrRow
ColCnt = 1
* Find the first non-empty cell
LOOP
Test = ListData<LinePointer,(ColPointer) >
UNTIL Test NE '' OR (LinePointer = 0 AND ColPointer = 1)
ColPointer -= 1
IF ColPointer = 0 THEN
ColPointer = ColCnt
LinePointer -= 1
END
REPEAT
* Move one past the non empty cell
BEGIN CASE
CASE LinePointer = 0
* Empty Table
LinePointer = 1
CoilPointer = 1
CASE ColPointer = ColCnt
LinePointer += 1
ColPointer = 1
CASE 1
ColPointer += 1
END CASE
Set_Property(CtrlEntId,"SELPOS",ColPointer:@FM:LinePointer)
END
IF ListData<PrevRow,PrevCol> NE '' AND PrevCol = COL$LABEL_SCAN THEN
ScanCassID = TRIM(ListData<PrevRow,PrevCol>)
IF ScanCassID[1,2] = '1T' THEN
Swap '1T' with '' in ScanCassID
Set_Property(CtrlEntId,"CELLPOS",ScanCassID,PrevSelPos)
END
CassID = ScanCassID
* Check for data already in the list (repeat scan)
TestArray = ArrayData<1> ;* First Column
TestArray<1,PrevRow> = '' ;* Remove the label just scanned
LOCATE CassID IN TestArray USING @VM SETTING Pos THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* Label Data already scanned
RETURN
END
IF INDEX(CassID,'.',2) THEN
EpiPRO = 1
GaN = 0
END ELSE IF INDEX(CassID,'.',1) THEN
GaN = 1
EpiPRO = 0
END
CONVERT '.' TO '*' IN CassID
Test = ''
CurrStatus = ''
BEGIN CASE
CASE CassID[1,1] = 'I'
* WM_IN table
TestKey = CassID[2,99]
Test = XLATE('WM_IN',TestKey,'','X')
CurrStatus = OCONV(XLATE('WM_IN',TestKey,'CURR_STATUS','X'),'[WM_IN_CURR_STATUS_CONV]')
TestWO = FIELD(TestKey,'*',1)
IF Location = 'PTO' THEN
IF AtWONo = '' THEN
Set_Property(@WINDOW,'@WONO',TestWO)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scanning WO ':TestWO)
END
END
WOMatKey = TestWO:'*':FIELD(TestKey,'*',3)
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
IF LastPTO THEN
MsgHead = 'Cassette already scanned through the PTO'
MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$
MsgText := 'Are you sure you wish to rescan and reprint the shipping label?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
IF NOT(OK) THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* User opted out of rescan and print
RETURN
END
END
CASE CassID[1,1] = 'O'
* GaN or EPP
TestKey = CassID[2,99]
IF GaN THEN
Test = XLATE('WO_MAT',TestKey,'','X')
END ELSE
Test = XLATE('WM_OUT',TestKey,'','X')
END
CurrStatus = OCONV(XLATE('WM_OUT',TestKey,'CURR_STATUS','X'),'[WM_OUT_CURR_STATUS_CONV]')
TestWO = FIELD(TestKey,'*',1)
IF Location = 'PTO' THEN
IF AtWONo = '' THEN
Set_Property(@WINDOW,'@WONO',TestWO)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scanning WO ':TestWO)
END
END
IF (FIELD(TestKey,'*',3)) THEN
WOMatKey = TestWO:'*':FIELD(TestKey,'*',3)
END ELSE
WOMatKey = TestWO:'*':FIELD(TestKey,'*',2)
END
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
IF LastPTO THEN
MsgHead = 'Cassette already scanned through PTO'
MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$
MsgText := 'Are you sure you wish to rescan and reprint the shipping label?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
IF NOT(OK) THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* User opted out of rescan and print
RETURN
END
END
CASE ( INDEX(CassID,'*',1) AND NOT(INDEX(CassID,'*',2)) OR INDEX(CassID,'.',1) AND NOT(INDEX(CassID,'.',2)) )
* This is a WO_MAT format label
TestKey = CassID
Test = XLATE('WO_MAT',TestKey,'','X')
CurrStatus = OCONV(XLATE('WO_MAT',TestKey,'CURR_STATUS','X'),'[WO_MAT_CURR_STATUS_CONV]')
TestWO = FIELD(TestKey,'*',1)
IF Location = 'PTO' THEN
IF AtWONo = '' THEN
Set_Property(@WINDOW,'@WONO',TestWO)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scanning WO ':TestWO)
END
END
WOMatKey = TestKey
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
IF LastPTO THEN
MsgHead = 'Cassette already scanned through the PTO'
MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$
MsgText := 'Are you sure you wish to rescan and reprint the shipping label?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
IF NOT(OK) THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* User opted out of rescan and print
RETURN
END
END
CASE INDEX(CassID,'*',2)
* EpiPRO material indeterminate direction
TestKey = CassID
Test = XLATE('WM_IN',TestKey,'','X')
CurrStatus = OCONV(XLATE('WM_IN',TestKey,'CURR_STATUS','X'),'[WM_IN_CURR_STATUS_CONV]')
IF Test = '' THEN
Test = XLATE('WM_OUT',TestKey,'','X')
CurrStatus = OCONV(XLATE('WM_OUT',TestKey,'CURR_STATUS','X'),'[WM_OUT_CURR_STATUS_CONV]')
END
TestWO = FIELD(TestKey,'*',1)
IF Location = 'PTO' THEN
IF AtWONo = '' THEN
Set_Property(@WINDOW,'@WONO',TestWO)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scanning WO ':TestWO)
END
END
WOMatKey = FIELD(TestKey,'*',3)
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
IF LastPTO THEN
MsgHead = 'Cassette already scanned through the PTO'
MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$
MsgText := 'Are you sure you wish to rescan and reprint the shipping label?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
IF NOT(OK) THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* User opted out of rescan and print
RETURN
END
END
CASE 1
ReactRunRec = XLATE('REACT_RUN',CassID,'','X')
IF ReactRunRec EQ '' THEN
RDSRec = XLATE('RDS',CassID,'','X')
TestWO = RDSRec<RDS_WO$>
CassNo = RDSRec<RDS_CASS_NO$>
END ELSE
TestWO = ReactRunRec<REACT_RUN_WO_NO$>
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
END
IF Location = 'PTO' THEN
IF AtWONo = '' THEN
Set_Property(@WINDOW,'@WONO',TestWO)
Set_Property(@WINDOW:'.WINDOW_LABEL','TEXT','Scanning WO ':TestWO)
END
END
WOMatKey = TestWO:'*':CassNo
Test = XLATE('WO_MAT',WOMatKey,'','X')
CurrStatus = OCONV(XLATE('WO_MAT',WOMatKey,'CURR_STATUS','X'),'[WO_MAT_CURR_STATUS_CONV]')
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
SAPBatchNo = Test<WO_MAT_SAP_BATCH_NO$>
IF LastPTO THEN
MsgHead = 'Cassette already scanned through the PTO'
MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$
MsgText := 'Are you sure you wish to rescan and reprint the shipping label?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
IF NOT(OK) THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* User opted out of rescan and print
RETURN
END
END
END CASE
WoMatAction = Database_Services('ReadDataColumn', 'WO_MAT',WoMatKey, 8)
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
hasPack = Index(WoMatAction, 'PACK', 1) > 0
IF ( (Location EQ 'PTO') AND (hasPack EQ False$) ) THEN
MsgHead = 'Cassette is missing Packaging scan'
MsgText = 'Unable to print SAP label without packaging scan.':CRLF$
MsgText := 'Please return cassette #':CassID:' to warehouse manager.'
OK = Msg(@WINDOW, '', 'OK', '', MsgHead:@FM:MsgText)
Set_Property(CtrlEntID, 'SELPOS', PrevSelPos);*remove entry from grid
Set_Property(CtrlEntID, 'INVALUE', '', PrevSelPos)
LogFile = 'WO_MAT'
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
Action = 'PLACE'
WhCd = '1K'
LocCd = 'PTI'
WONo = Field(WOMatKey, '*', 1)
CassNo = Field(WOMatKey, '*', 2)
UserID = @User4
Tag = 'Missing Packaging Scan'
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:Tag)
RETURN
END ELSE
IF ( (Location EQ 'PTO') AND (SAPBatchNo EQ '') ) THEN
MsgHead = 'Cassette does not have SAP Batch ID'
MsgText = 'Unable to print SAP label without SAP Batch ID.':CRLF$
MsgText := 'Please return cassette #':CassID:' to warehouse manager.'
OK = Msg(@WINDOW, '', 'OK', '', MsgHead:@FM:MsgText)
Set_Property(CtrlEntID, 'SELPOS', PrevSelPos);*remove entry from grid
Set_Property(CtrlEntID, 'INVALUE', '', PrevSelPos)
//write log entry, showing SAP ID missing in tag
LogFile = 'WO_MAT'
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
Action = 'PLACE'
WhCd = '1K'
LocCd = 'PTI'
WONo = Field(WOMatKey, '*', 1)
CassNo = Field(WOMatKey, '*', 2)
UserID = @User4
Tag = 'Missing SAP Batch ID'
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:Tag)
RETURN
END
END
CRComp = obj_WO_Mat('CRComp',WOMatKey:@RM:@RM)
CRComp = OCONV(CRComp,'B')
CurrLoc = XLATE('WO_MAT',WOmatKey,'CURR_LOCATION','X')
AtWONo = Get_Property(@WINDOW,'@WONO')
IF AtWONo NE '' THEN
IF TestWO NE AtWONo THEN
ErrMsg('':@VM:'Process Error':@SVM:'Label Scanned is NOT part of WO ':AtWoNo)
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* Work Order scanned doesn't match 1st WO scanned or passed in from the Shipment
RETURN
END
END
IF Test = '' THEN
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos) ;* No corresponding data record found for label scanned
RETURN
END
Set_Property(CtrlEntID,'CELLPOS',CurrStatus,2:@FM:PrevRow) ;* Load Current Status
Set_Property(CtrlEntID,'CELLPOS',CurrLoc,3:@FM:PrevRow) ;* Load Current Location
Set_Property(CtrlEntID,'CELLPOS',CRComp,4:@FM:PrevRow) ;* Load Cleanroom Complete flag
END
GOSUB Refresh
RETURN
* * * * * * *
LocLF:
* * * * * * *
DataIn = Get_Property(@WINDOW:'.LOCATION_CODE','DEFPROP')
IF DataIn = '' THEN RETURN
SWAP '/J' WITH '*' IN DataIn
IF DataIn = '1K*PTI' THEN
ErrMsg('PTI scans may not be done with this form. Use the PTI Material Scan form instead.')
Set_Property(@WINDOW:'.LOCATION_CODE','DEFPROP','')
Set_Property(@WINDOW:'.LOCATION_CODE','FOCUS',1)
END ELSE IF DataIn = '1K*PTO' THEN
ErrMsg('PTO scans may not be done with this form. Use the PTO Material Scan form instead.')
Set_Property(@WINDOW:'.LOCATION_CODE','DEFPROP','')
Set_Property(@WINDOW:'.LOCATION_CODE','FOCUS',1)
void = End_Window(@WINDOW)
void = Start_Window( 'NDW_PTO_MAT_SCAN', '', '', '', '' )
END ELSE IF RowExists('LOCATION',DataIn) THEN
Set_Property(@WINDOW:'.LOCATION_CODE','DEFPROP',DataIn)
END ELSE
ErrMsg(QUOTE(DataIn):' is not a valid location in the LOCATION table.')
Set_Property(@WINDOW:'.LOCATION_CODE','DEFPROP','')
Set_Property(@WINDOW:'.LOCATION_CODE','FOCUS',1)
END
RETURN