424 lines
10 KiB
Plaintext
424 lines
10 KiB
Plaintext
COMPILE FUNCTION Comm_Dialog_PO_No_Change(Method, Parm1)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
/*
|
|
Commuter module for Dialog_PO_No_Change window.
|
|
|
|
02/20/2017 - David Klotz & Francois Rivard
|
|
*/
|
|
|
|
DECLARE SUBROUTINE Set_Property, End_Dialog, Set_Status, ErrMsg
|
|
DECLARE SUBROUTINE obj_Appwindow, Start_Window, Msg, Btree.Extract
|
|
DECLARE SUBROUTINE RList, obj_Tables
|
|
DECLARE SUBROUTINE Print_WO_Mat_In_Labels, Print_WMI_Labels, Print_WMO_Labels, Print_Cass_Labels
|
|
|
|
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Popup, Send_Message, MemberOf
|
|
DECLARE FUNCTION obj_Tables
|
|
DECLARE FUNCTION Msg, Obj_WO_Step
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
|
|
$INSERT APPCOLORS
|
|
$INSERT COMPANY_EQUATES
|
|
$INSERT CUST_EPI_PART_EQUATES
|
|
$INSERT EPI_PART_EQUATES
|
|
$INSERT LSL_USERS_EQU
|
|
$INSERT MSG_EQUATES
|
|
$INSERT NOTIFICATION_EQU
|
|
$INSERT POPUP_EQUATES
|
|
$INSERT LOGICAL
|
|
$INSERT PROD_SPEC_EQU
|
|
$INSERT PROD_VER_EQUATES
|
|
$INSERT QUOTE_EQU
|
|
$INSERT QUOTE_DET_EQU
|
|
$INSERT QUOTE_SIGS_EQU
|
|
$INSERT RDS_EQUATES
|
|
$INSERT REACT_RUN_EQUATES
|
|
$INSERT SECURITY_RIGHTS_EQU
|
|
$INSERT WM_IN_EQUATES
|
|
$INSERT WM_OUT_EQUATES
|
|
$INSERT WO_LOG_EQUATES
|
|
$INSERT WO_STEP_EQU
|
|
$INSERT WO_MAT_EQUATES
|
|
|
|
$INSERT ORDER_EQU
|
|
$INSERT ORDER_DET_EQU
|
|
|
|
EQU COL$CASSETTES TO 1
|
|
EQU TARGET_ACTIVELIST$ TO 5
|
|
|
|
EQU COL$WO_PARAM_CASSETTE TO 1
|
|
EQU COL$WO_PARAM_RDS TO 2
|
|
EQU COL$WO_PARAM_LOT TO 3
|
|
EQU COL$WO_PARAM_PO TO 4
|
|
* EQU COL$WO_PARAM_HOT_LOT TO 5
|
|
|
|
ErrTitle = 'Error in Comm_Dialog_PO_No_Change'
|
|
ErrorMsg = ''
|
|
ErrCode = ''
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Method = 'Create' ; GOSUB Create
|
|
CASE Method = 'NewPONoLF' ; GOSUB NewPONoLF
|
|
CASE Method = 'SelectAll' ; GOSUB SelectAll
|
|
CASE Method = 'ClearAll' ; GOSUB ClearAll
|
|
CASE Method = 'PrintLabels' ; GOSUB PrintLabels
|
|
CASE Method = 'Update' ; GOSUB Update
|
|
CASE Method = 'Exit' ; GOSUB Exit
|
|
CASE Method = 'Close' ; GOSUB Close
|
|
|
|
CASE 1
|
|
ErrMsg(ErrTitle:@SVM:'Unknown method ':QUOTE(Method):' passed to routine.')
|
|
|
|
END CASE
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
obj_AppWindow('Create')
|
|
|
|
WONo = Parm1[1,@FM]
|
|
|
|
/* Initialize the window's header with the Work Order number */
|
|
Title = 'Work Order: ':WONo:' - Change PO Number'
|
|
Set_Property(@WINDOW,'TEXT',Title)
|
|
|
|
Set_Property(@WINDOW:'.WO_NO','TEXT',WONo)
|
|
|
|
GOSUB RefreshCassettesList
|
|
|
|
RETURN
|
|
|
|
|
|
**********
|
|
NewPONoLF:
|
|
**********
|
|
RETURN
|
|
|
|
|
|
************
|
|
PrintLabels:
|
|
************
|
|
|
|
RDSListCtrl = @WINDOW:'.WO_NO'
|
|
WONo = Get_Property(RDSListCtrl, 'TEXT')
|
|
|
|
IF (WONo NE '') THEN
|
|
|
|
WOSteps = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')
|
|
|
|
IF INDEX(WOSteps,@VM,1) THEN
|
|
Buttons = ''
|
|
FOR I = 1 TO COUNT(WOSteps,@VM) + (WOSteps NE '')
|
|
Buttons<I> = 'Step ':I
|
|
NEXT I
|
|
SWAP @FM WITH ',' IN Buttons
|
|
Buttons = 'B':Buttons
|
|
TypeOver = ''
|
|
TypeOver<MTEXT$> = 'Which Work Order step do you wish to print labels for?'
|
|
TypeOver<MTYPE$> = Buttons
|
|
TypeOver<MICON$> = '?'
|
|
TypeOver<MCAPTION$> = 'MultiStep WorkOrder Selection'
|
|
WOStep = Msg(@window, TypeOver)
|
|
MultiStepFlag = WOStep
|
|
|
|
END ELSE
|
|
WOStep = 1
|
|
MultiStepFlag = 0
|
|
END
|
|
|
|
IF (WOStep = 1) THEN
|
|
PSNo = XLATE('WO_STEP',WONo:'*1',WO_STEP_PROD_SPEC_ID$,'X')
|
|
ReactorType = XLATE('PROD_SPEC',PSNo,PROD_SPEC_REACTOR_TYPE$,'X')
|
|
BEGIN CASE
|
|
CASE ReactorType = 'GAN'
|
|
Print_WO_Mat_In_Labels(WONo,'')
|
|
|
|
CASE ReactorType = 'EPP' OR ReactorType = 'P'
|
|
Print_WMI_Labels(WONo,1)
|
|
Print_WMO_Labels(WONo,1)
|
|
|
|
CASE 1
|
|
RDSNos = XLATE('WO_STEP',WOSteps<1,1>,WO_STEP_RDS_KEY$,'X')
|
|
IF INDEX(RDSNos,@VM,1) THEN
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = RDSNos
|
|
TypeOver<PFIELD$> = 2
|
|
TypeOver<PTYPE$> = 'K'
|
|
RDSKeys = Popup(@WINDOW,TypeOver,'WO_LOG_RTS')
|
|
END ELSE
|
|
RDSKeys = RDSNos
|
|
END
|
|
|
|
IF RDSKeys = '' THEN
|
|
ErrMsg('No RDS Numbers Selected or Work Order Not Yet Released to Production.')
|
|
END ELSE
|
|
CONVERT @VM TO @FM IN RDSKeys
|
|
Print_Cass_Labels(RDSKeys,MultiStepFlag) ;* Updated labels with Akrion Bar Codes
|
|
END
|
|
END CASE
|
|
|
|
END ELSE
|
|
Def = ""
|
|
Def<MTEXT$> = "Adjusting Step ":WOStep:" Scheduled Quantities..."
|
|
Def<MTYPE$> = "U"
|
|
MsgUp = Msg(@window, Def)
|
|
RDSNos = obj_WO_Step('AdjStepRDSQtys', WOStep:@RM:WOSteps)
|
|
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode) ;* Display error from the update
|
|
Msg(@WINDOW,MsgUp) ;* Take down the processing message
|
|
obj_AppWindow('LoadFormKeys',@WINDOW:@RM:WONo) ;* Reload the data in the form
|
|
RETURN
|
|
END
|
|
Msg(@WINDOW,MsgUp)
|
|
|
|
IF INDEX(RDSNos,@VM,1) THEN
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = RDSNos
|
|
TypeOver<PFIELD$> = 2
|
|
TypeOver<PTYPE$> = 'K'
|
|
RDSKeys = Popup(@WINDOW,TypeOver,'WO_LOG_RTS')
|
|
END ELSE
|
|
RDSKeys = RDSNos
|
|
END
|
|
|
|
IF RDSKeys = '' THEN
|
|
ErrMsg('No RDS Numbers Selected or Work Order Not Yet Released to Production.')
|
|
END ELSE
|
|
CONVERT @VM TO @FM IN RDSKeys
|
|
Print_Cass_Labels(RDSKeys,MultiStepFlag) ;* Updated labels with Akrion Bar Codes
|
|
END
|
|
END
|
|
|
|
END ELSE
|
|
ErrMsg('WARNING: WO number is missing.')
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SelectAll:
|
|
* * * * * * *
|
|
|
|
RDSListCtrl = @WINDOW:'.RDSNOS'
|
|
SelectedItems = Get_Property(RDSListCtrl, 'SELPOS')
|
|
|
|
RDSKeyList = Get_Property(RDSListCtrl, 'LIST')
|
|
RDSListCount = COUNT(RDSKeyList,@FM) + (RDSKeyList NE '')
|
|
|
|
FOR RDSListIndex = 1 TO RDSListCount
|
|
IF NOT(Inlist(SelectedItems<2>, RDSListIndex, @VM)) THEN
|
|
Set_Property(RDSListCtrl, 'SELPOS', '1':@FM:RDSListindex)
|
|
END
|
|
NEXT RDSListIndex
|
|
|
|
RETURN
|
|
|
|
|
|
*********
|
|
ClearAll:
|
|
*********
|
|
|
|
RDSListCtrl = @WINDOW:'.RDSNOS'
|
|
SelectedItems = Get_Property(RDSListCtrl, 'SELPOS')
|
|
|
|
RDSKeyList = Get_Property(RDSListCtrl, 'LIST')
|
|
RDSListCount = COUNT(RDSKeyList,@FM) + (RDSKeyList NE '')
|
|
|
|
FOR RDSListIndex = 1 TO RDSListCount
|
|
IF Inlist(SelectedItems<2>, RDSListIndex, @VM) THEN
|
|
Set_Property(RDSListCtrl, 'SELPOS', '1':@FM:RDSListindex)
|
|
END
|
|
NEXT RDSListIndex
|
|
|
|
RETURN
|
|
|
|
|
|
*********************
|
|
RefreshCassettesList:
|
|
*********************
|
|
|
|
OPEN 'DICT.RDS' TO DictVar THEN
|
|
RDSNos = ''
|
|
Flag = ''
|
|
SearchString = 'WO':@VM:WONo:@FM
|
|
Btree.Extract(SearchString, 'RDS', DictVar, RDSNos, '', Flag)
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
END ELSE
|
|
ErrMsg('Unable to open "DICT.RDS" for index lookup in COMM_DIALOG_PO_NO_CHANGE routine.')
|
|
RETURN
|
|
END
|
|
|
|
IF INDEX(RDSNos,@VM,1) THEN /* Sort only if two or more records are found */
|
|
RDSNos := @VM /* Need a trailer delimiter */
|
|
CONVERT @VM TO @RM IN RDSNos
|
|
CALL V119('S','','A','R',RDSNos,'') /* Sort the RDS numbers in ascending order */
|
|
CONVERT @RM TO @VM IN RDSNos
|
|
RDSNos[-1,1] = '' /* Strip previous added trailing delimiter */
|
|
END ELSE
|
|
NULL
|
|
END
|
|
|
|
OPEN 'RDS' TO RDS_Table ELSE
|
|
ErrMsg('Unable to open "RDS" for reads in COMM_DIALOG_PO_NO_CHANGE - Create Event')
|
|
RETURN
|
|
END
|
|
|
|
RDS_List = ''
|
|
RDSListCount = 0
|
|
kCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
|
|
|
|
FOR I = 1 TO kCnt
|
|
RDSNo = RDSNos<1,I>
|
|
READ RDS_Rec FROM RDS_Table,RDSNo THEN
|
|
PONo = RDS_Rec<RDS_PO$>
|
|
CassNo = RDS_Rec<RDS_CASS_NO$>
|
|
LotNo = RDS_Rec<RDS_LOT_NUM$>
|
|
|
|
OPEN 'DICT.WO_MAT' TO DictVar THEN
|
|
SearchString = 'WO_NO':@VM:WONo:@FM
|
|
WO_MAT_Keys = ''
|
|
Flag = ''
|
|
Btree.Extract(SearchString, 'WO_MAT', DictVar, WO_MAT_Keys, '', Flag)
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
END ELSE
|
|
ErrMsg('Unable to open "DICT.WO_MAT" for index lookup in COMM_DIALOG_PO_NO_CHANGE routine.')
|
|
RETURN
|
|
END
|
|
|
|
OPEN 'WO_MAT' TO WO_MAT_Table ELSE
|
|
ErrMsg('Unable to open "WO_MAT" for reads in COMM_DIALOG_PO_NO_CHANGE - Create Event')
|
|
RETURN
|
|
END
|
|
|
|
CassetteFound = 0
|
|
CassettesCount = COUNT(WO_MAT_Keys,@VM) + (WO_MAT_Keys NE '')
|
|
FOR CassettesLoopIndex = 1 TO CassettesCount
|
|
WO_MAT_Key = WO_MAT_Keys<1, CassettesLoopIndex>
|
|
WO_MAT_Key_Cass = FIELD(WO_MAT_Key,'*',2)
|
|
IF (WO_MAT_Key_Cass = CassNo) THEN
|
|
READ WO_MAT_Rec FROM WO_MAT_Table,WO_MAT_Key THEN
|
|
IF (WO_MAT_Rec<WO_MAT_SHIP_NO$> = '') THEN
|
|
RDSListCount = RDSListCount + 1
|
|
IF (WO_MAT_Rec<WO_MAT_HOT_LOT$> = 1) THEN
|
|
HotLot = 'Hot'
|
|
END ELSE
|
|
HotLot = ''
|
|
END
|
|
RDS_List<RDSListCount> = CassNo:@VM:RDSNo:@VM:LotNo:@VM:PONo:@VM:HotLot
|
|
END
|
|
END
|
|
CassetteFound = 1
|
|
END
|
|
UNTIL CassetteFound = 1
|
|
NEXT CassettesLoopIndex
|
|
END
|
|
NEXT I
|
|
|
|
Set_Property(@WINDOW:'.RDSNOS','LIST',RDS_List)
|
|
|
|
RETURN
|
|
|
|
|
|
******
|
|
Close:
|
|
******
|
|
End_Dialog(@WINDOW,'Exit')
|
|
RETURN
|
|
|
|
|
|
*****
|
|
Exit:
|
|
*****
|
|
End_Dialog(@WINDOW,'Exit')
|
|
RETURN
|
|
|
|
|
|
*******
|
|
Update:
|
|
*******
|
|
|
|
RDSListCtrl = @WINDOW:'.WO_NO'
|
|
WONo = Get_Property(RDSListCtrl, 'TEXT')
|
|
|
|
IF (WONo NE '') THEN
|
|
|
|
NewPONumberCtrl = @WINDOW:'.NEW_PO_NO'
|
|
NewPONumber = TRIM(Get_Property(NewPONumberCtrl, 'DEFPROP'))
|
|
|
|
RDSListCtrl = @WINDOW:'.RDSNOS'
|
|
SelectedItems = Get_Property(RDSListCtrl, 'SELPOS')
|
|
RDSKeyList = Get_Property(RDSListCtrl, 'LIST')
|
|
RDSListCount = COUNT(RDSKeyList,@FM) + (RDSKeyList NE '')
|
|
SelectedItemsCount = COUNT(SelectedItems<2>,@VM) + (SelectedItems<2> NE '')
|
|
|
|
IF (SelectedItemsCount > 0) THEN
|
|
|
|
Cassettes = ''
|
|
FOR RDSListIndex = 1 TO RDSListCount
|
|
IF (Inlist(SelectedItems<2>, RDSListIndex, @VM)) THEN
|
|
Cassettes := RDSKeyList<RDSListIndex, COL$CASSETTES>:@VM
|
|
END
|
|
NEXT RDSListIndex
|
|
Cassettes[-1,1] = ''
|
|
|
|
***********************************************
|
|
* Update the RDS table with the new PO number *
|
|
***********************************************
|
|
IF (NewPONumber NE '') THEN
|
|
OPEN 'RDS' TO RDSTable ELSE
|
|
ErrMsg("ERROR! OBJ_WO_LOG :ChangePONo : Unable to open the RDS Table!")
|
|
RETURN
|
|
END
|
|
|
|
RLIST('SELECT REACT_RUN WITH WO_NO = ':QUOTE(WONo):' ',TARGET_ACTIVELIST$,'','','')
|
|
Done = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
READ RDSRec FROM RDSTable,RDSNo THEN
|
|
PONo = RDSRec<RDS_PO$>
|
|
RONo = XLATE('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
|
LOCATE RONo IN Cassettes USING @VM SETTING Pos THEN
|
|
RDSRec<RDS_PO$> = NewPONumber
|
|
WRITE RDSRec ON RDSTable,RDSNo THEN
|
|
Null
|
|
END
|
|
obj_Tables('WriteRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
|
Result = 'PO Number Changed'
|
|
END
|
|
END
|
|
REPEAT
|
|
|
|
/* After making the update, refresh the LIST of cassettes */
|
|
GOSUB RefreshCassettesList
|
|
END
|
|
|
|
END ELSE
|
|
ErrMsg('INFO: A new PO number value is required.')
|
|
Set_Property(@WINDOW,'FOCUS',@WINDOW:'.NEW_PO_NO')
|
|
END
|
|
|
|
END ELSE
|
|
ErrMsg('WARNING: WO number is missing.')
|
|
END
|
|
|
|
RETURN
|
|
|