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

454 lines
14 KiB
Plaintext

COMPILE FUNCTION WO_Mat_Reship(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
/*
Commuter module for the WO_MAT_RESHIP window. ** This uses the WO_LOG table! **
12/10/2014 John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE obj_Appwindow, ErrMsg, Send_Message, Set_Property, Obj_Wo_Mat, Msg, obj_Tables, RList, Print_SAP_Cass_Ship_Label, Print_Cass_Labels
Declare subroutine SRP_JSON, Form_Services
DECLARE FUNCTION Get_Property, obj_Tables, Send_Message, Memberof, Work_Order_Services, Error_Services, SRP_JSON
$insert LOGICAL
$INSERT APPCOLORS
$INSERT RTI_STYLE_EQUATES
$INSERT WO_MAT_EQUATES
$INSERT WO_LOG_EQUATES
$insert WO_STEP_EQUATES
$insert RDS_EQUATES
EQU CRLF$ TO \0D0A\
EQU TAB$ TO \09\
EQU TARGET_ACTIVELIST$ TO 5
EQU COL$CASS_NO TO 1
EQU COL$LOT_NO TO 2
EQU COL$QTY TO 3
EQU COL$EPI_PART_NO TO 4
EQU COL$CURR_STATUS TO 5
EQU COL$BATCH_NO TO 6
EQU COL$SAP_CASS_ID TO 7
EQU COL$SHIP_RDS_NO TO 8
EQU COL$RDS_CUST_NO TO 9
EQU COL$RDS_CUST_PN TO 10
ErrTitle = 'Error in PROD_VER Commuter PROD_VER'
ErrorMsg = ''
Result = ''
BEGIN CASE
CASE EntID = @WINDOW
BEGIN CASE
CASE Event = 'CLEAR' ; GOSUB Clear
CASE Event = 'CREATE' ; GOSUB Create
CASE Event = 'CLOSE' ; GOSUB Close
END CASE
CASE EntID = @WINDOW:'.CASS_NO'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB CassPC
CASE Event = 'DBLCLK' ; GOSUB CassDC
END CASE
Case EntID = @Window : '.WO' AND Event = 'LOSTFOCUS' ; GoSub WO.LOSTFOCUS
Case EntID = @Window : '.WO' AND Event = 'CHANGED' ; GoSub WO.CHANGED
CASE EntID = @WINDOW:'.POST_BUTTON' AND Event = 'CLICK' ; GOSUB PostChanges
CASE EntID = @WINDOW:'.PRINT_RDS_WMO_LABELS' AND Event = 'CLICK' ; GOSUB PrintRDSWMOLabels
CASE EntID = @WINDOW:'.PRINT_CASSETTE_LABELS' AND Event = 'CLICK' ; GOSUB PrintCassShipLabels
CASE EntID = @WINDOW:'.RESHIP_CUST_NO' AND Event = 'LOSTFOCUS' ; GoSub UpdateCustomerName
CASE 1
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
ErrMsg(ErrorMsg)
END CASE
IF ErrorMsg NE '' THEN
ErrMsg(ErrTitle:@SVM:ErrorMsg)
END
RETURN Result
* * * * * * *
Create:
* * * * * * *
obj_Appwindow('Create',@WINDOW)
If Memberof(@User4, 'CONFIG_LIMITED') then
Set_Property(@Window : '.POST_BUTTON', 'ENABLED', True$)
Set_Property(@Window : '.PRINT_RDS_WMO_LABELS', 'ENABLED', True$)
Set_Property(@Window : '.PRINT_CASSETTE_LABELS', 'ENABLED', True$)
end
GOSUB Refresh
RETURN
* * * * * * *
Clear:
* * * * * * *
Form_Services('CloseControlMessage', EntId)
RETURN
* * * * * * *
Refresh:
* * * * * * *
* Turn edit table symbolic column backgrounds to green
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
ETCtrls = ETSymbolics<1>
ETCols = ETSymbolics<2>
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
ETCtrl = ETCtrls<1,I>
ETList = Get_Property(ETCtrl,'LIST')
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
IF ETList<Line,1> NE '' THEN
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
NEXT N
END
NEXT Line
NEXT I
/* Reference code
StatusArray = Get_Property(@WINDOW:'.PROC_STEP_NO','ARRAY')<COL$PSN_STATUS>
LOOP
StatusVal = StatusArray[-1,1]
UNTIL StatusVal NE @VM OR StatusArray = ''
StatusArray[-1,1] = ''
REPEAT
StatCnt = COUNT(StatusArray,@VM) + (StatusArray NE '')
FOR I = 1 TO StatCnt
StatusVal = StatusArray<1,I>
IF StatusVal[1,1] = 'I' THEN
stat = Send_Message(@WINDOW:'.PROC_STEP_NO','COLOR_BY_POS',COL$PSN_STATUS,I,RED$)
END
IF StatusVal[1,1] = 'H' THEN
stat = Send_Message(@WINDOW:'.PROC_STEP_NO','COLOR_BY_POS',COL$PSN_STATUS,I,ORANGE$)
END
NEXT I
*/
RETURN
* * * * * * *
Close:
* * * * * * *
Form_Services('CloseControlMessage', EntId)
RETURN
WO.LOSTFOCUS:
Form_Services('CloseControlMessage', EntId)
FocusControl = Get_Property(@Window, 'FOCUS')
If FocusControl NE @Window : '.CLOSE' then
// Focus did not go to the Close button. Validate work order.
WONo = Get_Property(EntID, 'TEXT')
If WONo NE '' then
WorkOrder = Work_Order_Services('GetWorkOrder', WONo, False$)
If Error_Services('NoError') then
If SRP_JSON(objWorkOrder, 'PARSE', WorkOrder) EQ '' then
Closed = SRP_JSON(objWorkOrder, 'GETVALUE', 'Closed')
SRP_JSON(objWorkOrder, 'RELEASE')
If Closed _NEC 'Yes' then
Set_Property(EntID, 'FOCUS', True$)
Message = 'Work Order ' : WONo : ' is still open. Re-shipping is only allowed after a work order has been closed.'
Form_Services('DisplayControlMessage', Message, '', EntID, 'VALIDATION', 'RGB(229,20,0)')
end
end
end
end
end
return
WO.CHANGED:
Form_Services('CloseControlMessage', EntId)
return
UpdateCustomerName:
NewCustNo = Get_Property(@Window : '.RESHIP_CUST_NO', 'TEXT')
Name = Xlate('COMPANY', NewCustNo, 'CO_NAME', 'X')
Set_Property(@Window : '.RESHIP_CUST_NAME', 'TEXT', Name)
return
* * * * * * *
PostChanges:
* * * * * * *
Ctrls = @WINDOW:'.WO':@RM ; Props = 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_CUST_NO':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_CUST_PART_NO':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_REASON':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.CASS_NO':@RM ; Props := 'LIST':@RM
Ctrls := @WINDOW:'.RESHIP_CUST_EPI_PART_NO':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_CUST_PO':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_CUST_PSN':@RM ; Props := 'DEFPROP':@RM
Ctrls := @WINDOW:'.RESHIP_DATE' ; Props := 'DEFPROP'
Vals = Get_Property(Ctrls,Props)
WONo = Vals[1,@RM]
ReshipCustNo = Vals[COL2()+1,@RM]
ReshipCustPartNo = Vals[COL2()+1,@RM]
ReshipReason = Vals[COL2()+1,@RM]
SlotList = Vals[COL2()+1,@RM]
ReshipEpiPartNo = Vals[COL2()+1,@RM]
ReshipCustPO = Vals[COL2()+1,@RM]
ReshipCustPSN = Vals[COL2()+1,@RM]
ReshipDate = Vals[COL2()+1,@RM]
* Get list of selected line numbers *
SlotSelection = Get_Property(@Window: '.CASS_NO','SELPOS')
SelectedRows = SlotSelection<2>
CONVERT @VM TO @FM in SelectedRows
SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '')
IF SelCnt = 0 THEN
ErrorMsg = 'You must select at least one cassette row in order to Reship.'
FocusCtrl = @Window : '.CASS_NO'
END
FocusCtrl = ''
IF ReshipReason = '' THEN ErrorMsg = 'Reship Reason is a required field.' ; FocusCtrl = @Window : '.RESHIP_REASON'
IF ReshipDate = '' THEN ErrorMsg = 'Reship Date is a required field.' ; FocusCtrl = @Window : '.RESHIP_DATE'
IF ReshipCustPSN = '' THEN ErrorMsg = 'Reship Cust PSN is a required field.' ; FocusCtrl = @Window : '.RESHIP_CUST_PSN'
IF ReshipCustPO = '' THEN ErrorMsg = 'Reship Cust PO is a required field.' ; FocusCtrl = @Window : '.RESHIP_CUST_PO'
IF ReshipEpiPartNo = '' THEN ErrorMsg = 'Reship Epi Part No is a required field.' ; FocusCtrl = @Window : '.RESHIP_CUST_EPI_PART_NO'
IF ReshipCustPartNo = '' THEN ErrorMsg = 'Reship Cust Part No is a required field.' ; FocusCtrl = @Window : '.RESHIP_CUST_PART_NO'
IF ReshipCustNo = '' THEN ErrorMsg = 'Reship Cust No is a required field.' ; FocusCtrl = @Window : '.RESHIP_CUST_NO'
IF WONo = '' THEN ErrorMsg = 'WO_No is a required field.' ; FocusCtrl = @Window : '.WO'
WOMatKeys = ''
ReshipNo = ''
If ErrorMsg EQ '' then
GoSub AddReship
Msg(@Window, 'Finished with the re-ship process.')
end else
Set_Property(FocusCtrl, 'FOCUS', True$)
end
RETURN
PrintRDSWMOLabels:
WONo = Get_Property(@Window : '.WO', 'TEXT')
CassList = Get_Property(@Window : '.CASS_NO', 'LIST')
SlotSelection = Get_Property(@Window: '.CASS_NO','SELPOS')
SelectedRows = SlotSelection<2>
CONVERT @VM TO @FM in SelectedRows
SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '')
RDSNos = ''
FOR I = 1 TO SelCnt
RowNo = SelectedRows<I>
RDSNos := CassList<RowNo,COL$SHIP_RDS_NO> : @FM
Next I
RDSNos[-1, 1] = ''
WOSteps = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')
IF INDEX(WOSteps,@VM,1) THEN
MultiStepFlag = 1
END ELSE
MultiStepFlag = 0
END
Print_Cass_Labels(RDSNos,MultiStepFlag)
return
PrintCassShipLabels:
WONo = Get_Property(@Window : '.WO', 'TEXT')
CassList = Get_Property(@Window : '.CASS_NO', 'LIST')
SlotSelection = Get_Property(@Window: '.CASS_NO','SELPOS')
SelectedRows = SlotSelection<2>
CONVERT @VM TO @FM in SelectedRows
SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '')
WOSteps = ''
CassNos = ''
RDSNos = ''
WOStep = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')[-1,'B':@VM]
StepNo = WOStep[-1,'B*']
FOR I = 1 TO SelCnt
RowNo = SelectedRows<I>
WOSteps := StepNo : @VM
CassNos := CassList<RowNo,COL$CASS_NO> : @VM
RDSNos := CassList<RowNo,COL$SHIP_RDS_NO> : @VM
Next I
WOSteps[-1, 1] = ''
CassNos[-1, 1] = ''
RDSNos[-1, 1] = ''
Print_SAP_Cass_Ship_Label( WONo,WOSteps,CassNos,RDSNos )
return
* * * * * * *
CassPC:
* * * * * * *
DEBUG
RETURN
* * * * * * *
CassDC:
* * * * * * *
RETURN
AddReship:
********************
* Input Parameters *
********************
RONos = ''
FOR I = 1 TO SelCnt
RowNo = SelectedRows<I>
RONos := SlotList<RowNo,COL$CASS_NO> : @VM
Next I
RONos[-1, 1] = ''
WOMatKeys = ''
ReshipNo = ''
ReshipSAPDelNo = ''
NewPONo = ReshipCustPO
NewCustNo = ReshipCustNo
NewPSNNo = ReshipCustPSN
NewPartNo = ReshipCustPartNo
NewEpiPartNo = ReshipEpiPartNo
NewShipDate = ReshipDate
CONVERT ',' TO @VM IN RONos
**********************
* Fix WO_MAT Records *
**********************
OPEN 'WO_MAT' TO WOMatTable THEN
CassettesCount = COUNT(RONos,@VM) + (RONos NE '')
FOR CassettesLoopIndex = 1 TO CassettesCount
WOMatKey = WONo:'*':RONos<1,CassettesLoopIndex>
READ WOMatRec FROM WOMatTable,WOMatKey THEN
* Msg(WOMatKey : ' Replace ' : WOMatRec<WO_MAT_CUST_PART_NO$> : ' with ' : NewPartNo)
* WOMatRec<WO_MAT_CUST_PART_NO$> = NewPartNo /* Line #003 */
WOMatRec<WO_MAT_RESHIP_CUST_NO$> = NewCustNo /* Line #117 */
WOMatRec<WO_MAT_RESHIP_DT$> = ICONV(NewShipDate,'D4/') /* Line #115 */
WOMatRec<WO_MAT_RESHIP_CUST_EPI_PART_NO$> = NewEpiPartNo /* Line #119 */
WOMatRec<WO_MAT_RESHIP_CUST_PO$> = NewPONo /* Line #114 */
WOMatRec<WO_MAT_RESHIP_CUST_PART_NO$> = NewPartNo /* Line #118 */
Reason = WOMatRec<WO_MAT_RESHIP_REASON$>
Reason := ' ' : ReshipReason
Reason = Trim(Reason)
WOMatRec<WO_MAT_RESHIP_REASON$> = Reason /* Line #116 */
obj_Tables('WriteRec','WO_MAT':@RM:WOMatKey:@RM:@RM:WOMatRec)
END
NEXT CassettesLoopIndex
END
***********************
* Fix WO_STEP Records *
***********************
OPEN 'WO_STEP' TO WOStepTable THEN
* WOStepKey = WONo:'*1'
WOStepKey = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')[-1,'B':@VM]
READ WOStepRec FROM WOStepTable,WOStepKey THEN
* Msg(WOStepKey : ' Replace ' : WOStepRec<WO_STEP_PROD_SPEC_ID$> : ' with ' : NewPSNNo)
WOStepRec<WO_STEP_PROD_SPEC_ID$> = NewPSNNo /* Line #001 */
obj_Tables('WriteRec','WO_STEP':@RM:WOStepKey:@RM:@RM:WOStepRec)
END
END
*******************
* Fix RDS Records *
*******************
OPEN 'RDS' TO RDSTable THEN
Done = 0
RLIST('SELECT REACT_RUN WITH WO_NO = ':QUOTE(WONo):' ',TARGET_ACTIVELIST$,'','','')
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 RONos USING @VM SETTING Pos THEN
* Msg('WONo: ' : WONo : ' / RDSNo: ' : RDSNo : ' / RONo: ' : RONo : ' Replace ' : RDSRec<RDS_PROD_SPEC_ID$> : ' with ' : NewPSNNo)
RDSRec<RDS_PO$> = NewPONo /* Line #008 */
RDSRec<RDS_CUST_NO$> = NewCustNo /* Line #009 */
RDSRec<RDS_PROD_SPEC_ID$> = NewPSNNo /* Line #010 */
RDSRec<RDS_PART_NUM$> = NewPartNo /* Line #114 */
obj_Tables('WriteRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
END
END
REPEAT
END
**********************
* Fix WO_LOG Records *
**********************
* OPEN 'WO_LOG' TO WOLogTable THEN
* WOLogKey = WONo
* READ WOLogRec FROM WOLogTable,WOLogKey THEN
* Msg('WOLogKey: ':WOLogKey:' Replace ' : WOLogRec<WO_LOG_CUST_NO$> : ' with ' : NewCustNo)
* WOLogRec<WO_LOG_CUST_NO$> = NewCustNo /* Line #003 */
* WOLogRec<WO_LOG_COMMIT_DATE$> = ICONV(NewShipDate,'D4/') /* Line #014 */
* WOLogRec<WO_LOG_EPI_PART_NO$> = NewEpiPartNo /* Line #048 */
* WOLogRec<WO_LOG_CUST_PO_NO$> = NewPONo /* Line #051 */
* WOLogRec<WO_LOG_CUST_PART_NO$> = NewPartNo /* Line #054 */
* Notes = WOLogRec<WO_LOG_NOTES$>
* Notes := ' ' : ReshipReason
* Notes = Trim(Notes)
* WOLogRec<WO_LOG_NOTES$> = Notes /* Line #006 */
* obj_Tables('WriteRec','WO_LOG':@RM:WOLogKey:@RM:@RM:WOLogRec)
* END
* END
return