COMPILE FUNCTION Comm_Dialog_Lot_No_Change(Method, Parm1) /* Commuter module for Dialog_Lot_No_Change window. 05/06/2004 - John C. Henry, J.C. Henry & Co., Inc. */ DECLARE SUBROUTINE Set_Property, End_Dialog, Set_Status, ErrMsg DECLARE SUBROUTINE obj_Appwindow, Start_Window, Msg, Btree.Extract DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Popup, Send_Message EQU CRLF$ TO \0D0A\ $INSERT APPCOLORS $INSERT POPUP_EQUATES $INSERT LOGICAL $INSERT WO_MAT_EQUATES EQU COL$WM_CASS_NO TO 1 EQU COL$WM_LOT_NO TO 2 EQU COL$WM_RDS_NO TO 3 EQU COL$LOT_NO TO 1 EQU COL$CASS_NOS TO 2 ErrTitle = 'Error in Comm_Dialog_Lot_No_Change' ErrorMsg = '' ErrCode = '' Result = '' BEGIN CASE CASE Method = 'Create' ; GOSUB Create CASE Method = 'OrgLotNoLF' ; GOSUB OrgLotNoLF CASE Method = 'NewLotNoLF' ; GOSUB NewLotNoLF CASE Method = 'CassNoLF' ; GOSUB CassNoLF CASE Method = 'SelectCassettes' ; GOSUB SelectCassettes CASE Method = 'SelectOriginal' ; GOSUB SelectOriginal CASE Method = 'SelectNew' ; GOSUB SelectNew CASE Method = 'LULotNo' ; GOSUB LULotNo CASE Method = 'OK' ; GOSUB OK CASE Method = 'Cancel' ; GOSUB Cancel CASE Method = 'Refresh' ; GOSUB Refresh CASE Method = 'LotNoPC' ; GOSUB LotNoPC CASE 1 ErrMsg(ErrTitle:@SVM:'Unknown method ':QUOTE(Method):' passed to routine.') END CASE RETURN Result * * * * * * * Create: * * * * * * * obj_AppWindow('Create') WONo = Parm1[1,@FM] Title = 'Work Order: ':WONo:' - Lot No Change' Set_Property(@WINDOW,'TEXT',Title) OPEN 'DICT.WO_MAT' TO DictVar ELSE ErrMsg('Unable to open "DICT.WO_MAT" for index lookup in COMM_DIALOG_LOT_NO_CHANGE routine.') RETURN END SearchString = 'WO_NO':@VM:WONo:@FM WOMatKeys = '' Flag = '' Btree.Extract(SearchString, 'WO_MAT', DictVar, WOMatKeys, '', Flag) IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END IF INDEX(WOMatKeys,@VM,1) THEN WOMatKeys := @VM CONVERT @VM TO @RM IN WOMatKeys CALL V119('S','','A','R',WOMatKeys,'') IF Get_Status(errCode) THEN DEBUG CONVERT @RM TO @VM IN WOMatKeys WOMatKeys[-1,1] = '' ;* Strip trailing delimiter END ELSE NULL END WOMatList = '' LotNoArray = '' LotNos = '' CassNos = '' RDSNos = '' OPEN 'WO_MAT' TO WOMatTable ELSE ErrMsg('Unable to open "WO_MAT" for reads in COMM_DIALOG_LOT_NO_CHANGE - Create Event') RETURN END kCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '') FOR I = 1 TO kCnt WOMatKey = WOMatKeys<1,I> READ WOMatRec FROM WOMatTable,WOMatKey THEN CassNo = FIELD(WOMatKey,'*',2) LotNo = WOMatRec RDSNos = WOMatRec SWAP @VM WITH ', ' IN RDSNos WOMatList = CassNo:@VM:LotNo:@VM:RDSNos LOCATE LotNo IN LotNos USING @FM SETTING Pos THEN LOCATE CassNo IN CassNos USING @VM SETTING vPos ELSE CassNos = INSERT(CassNos,Pos,vPos,0,CassNo) END END ELSE LotNos = INSERT(LotNos,Pos,0,0,LotNo) CassNos = INSERT(CassNos,Pos,0,0,CassNo) END END NEXT I Set_Property(@WINDOW:'.WO_MAT_KEYS','LIST',WOMatList) SWAP @VM WITH ', ' IN CassNos CONVERT @FM TO @VM IN CassNos CONVERT @FM TO @VM IN LotNos LotNoArray = LotNos:@FM:CassNos Set_Property(@WINDOW:'.LOT_NOS','DEFPROP',LotNoArray) RETURN * * * * * * * LotNoPC: * * * * * * * CtrlEntID = @WINDOW:'.LOT_NOS' CurrList = Get_Property(CtrlEntID,'LIST') CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrLotNo = CurrList CurrCassNos = CurrList WOMatCtrl = @WINDOW:'.WO_MAT_KEYS' WOMatList = Get_Property(WOMatCtrl,'LIST') LineCnt = COUNT(WOMatList,@FM) + (WOMatList NE '') FOR Line = 1 TO LineCnt LineLotNo = WOMatList IF LineLotNo = CurrLotNo THEN stat = Send_Message(WOMatCtrl,'COLOR_BY_POS',0,Line,YELLOW$) END ELSE stat = Send_Message(WOMatCtrl,'COLOR_BY_POS',0,Line,GREEN$) END NEXT Line RETURN * * * * * * * LULotNo: * * * * * * * * * * * * NOT USED JCH - Remove when done on 2 DEC 2016 ********************************************** ReturnCtrl = Parm1[1,@RM] IF ReturnCtrl = '' THEN ReturnCtrl = Get_Property(@WINDOW,'FOCUS') LotList = Get_Property(@WINDOW,'@LOT_NOS') TypeOver = '' TypeOver = LotList RetVal = Popup(@WINDOW,TypeOver,'CUST_LOT_NO') IF RetVal NE '' THEN obj_Appwindow('LUValReturn',RetVal:@RM:ReturnCtrl) END RETURN * * * * * * * SelectOriginal: * * * * * * * CtrlEntID = @WINDOW:'.LOT_NOS' CurrList = Get_Property(CtrlEntID,'LIST') CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrLotNo = CurrList Set_Property(@WINDOW:'.ORG_LOT_NO','DEFPROP',CurrLotNo) Return * * * * * * * OrgLotNoLF: * * * * * * * OrgLotNo = Get_Property(@WINDOW:'.ORG_LOT_NO','TEXT') IF OrgLotNo = '' THEN RETURN ValidLotNos = Get_Property(@WINDOW,'@LOT_NOS') LOCATE OrgLotNo IN ValidLotNos USING @VM SETTING Pos ELSE ErrMsg('Lot No:':QUOTE(OrgLotNo):' is not on this Work Order!') Set_Property(@WINDOW,'FOCUS',@WINDOW:'.ORG_LOT_NO') Set_Property(@WINDOW:'.ORG_LOT_NO','TEXT','') END Return * * * * * * * SelectNew: * * * * * * * CtrlEntID = @WINDOW:'.LOT_NOS' CurrList = Get_Property(CtrlEntID,'LIST') CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrLotNo = CurrList Set_Property(@WINDOW:'.NEW_LOT_NO','DEFPROP',CurrLotNo) Return * * * * * * * NewLotNoLF: * * * * * * * Return * * * * * * * SelectCassettes: * * * * * * * WOMatCtrl = @WINDOW:'.WO_MAT_KEYS' WOMatKeyList = Get_Property(WOMatCtrl,'LIST') SlotSelection = Get_Property(WOMatCtrl,'SELPOS') SelectedRows = SlotSelection<2> CONVERT @VM TO @FM in SelectedRows SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '') IF SelCnt = 0 THEN ErrMsg('No WO Cassettes selected.') RETURN End CassNoDisp = '' For I = 1 To SelCnt SelectedRow = SelectedRows CassNoDisp<-1> = WOMatKeyList Next I Swap @FM With ', ' In CassNoDisp Set_Property(@WINDOW:'.CASS_NOS','DEFPROP',CassNoDisp) RETURN * * * * * * * CassNoLF: * * * * * * * Return * * * * * * * Refresh: * * * * * * * RETURN * * * * * * * Close: * * * * * * * * * * * * * * Cancel: * * * * * * * End_Dialog(@WINDOW,'Cancel') RETURN * * * * * * * OK: * * * * * * * Ctrls = @WINDOW:'.ORG_LOT_NO':@RM ; Props = 'DEFPROP':@RM Ctrls := @WINDOW:'.NEW_LOT_NO':@RM ; Props := 'DEFPROP':@RM Ctrls := @WINDOW:'.REASON':@RM ; Props := 'DEFPROP':@RM Ctrls := @WINDOW:'.CASS_NOS' ; Props := 'DEFPROP' Vals = Get_Property(Ctrls,Props) OrgLotNo = Vals[1,@RM] NewLotNo = Vals[COL2()+1,@RM] Reason = Vals[COL2()+1,@RM] CassNos = Vals[COL2()+1,@RM] Swap ', ' With @VM In CassNos IF OrgLotNo = '' THEN ErrMsg('Original Lot Number is a required field and must be filled in.') Set_Property(@WINDOW,'FOCUS',@WINDOW:'.ORG_LOT_NO') RETURN END IF NewLotNo = '' THEN ErrMsg('New Lot Number is a required field and must be filled in.') Set_Property(@WINDOW,'FOCUS',@WINDOW:'.NEW_LOT_NO') RETURN END IF Reason = '' THEN ErrMsg('Reason is a required field and must be filled in.') Set_Property(@WINDOW,'FOCUS',@WINDOW:'.REVISION') RETURN END IF CassNos = '' THEN ErrMsg('CassNos is a required field and must be filled in.') Set_Property(@WINDOW,'FOCUS',@WINDOW:'.CASS_NOS') RETURN END Result = OrgLotNo Result<2> = NewLotNo Result<3> = Reason Result<4> = CassNos End_Dialog(@WINDOW,Result) RETURN