766 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 | |
| 
 |