Merged PR 11767: NCR hold removal prompt

This commit is contained in:
Mitchem Dakota (CSC FI SPS MESLEO External)
2025-02-27 20:50:52 +01:00
committed by Stieber Daniel (CSC FI SPS MESLEO)
parent 87d79edef8
commit 779ed0ba29
7 changed files with 3615 additions and 139 deletions

View File

@ -4,13 +4,14 @@ COMPILE FUNCTION Comm_WM_In(Instruction, Parm1,Parm2)
Commuter module for WM_In (Work Order Material - Inbound) window
05/22/2005 - John C. Henry, J.C. Henry & Co., Inc.
02/27/2025 - DJM - Added prompt to remove hold when creating NCR in 'RejMat'
*/
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, Sleepery
DECLARE SUBROUTINE EditCell, obj_NCR, obj_Notes, obj_WO_Mat, obj_WO_Wfr, WM_IN_Services, Hold_Services, Error_Services
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Error_Services
DECLARE FUNCTION Dialog_Box, obj_WO_Log, obj_NCR, MemberOf, WM_IN_Services, Hold_Services, Database_Services
DECLARE FUNCTION Dialog_Box, obj_WO_Log, obj_NCR, MemberOf, WM_IN_Services, Hold_Services, Database_Services, Datetime
$INSERT POPUP_EQUATES
@ -558,127 +559,162 @@ RejMat:
SelectedRows = SlotSelection<2>
CONVERT @VM TO @FM in SelectedRows
SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '')
IF SelCnt = 0 THEN RETURN
IF SelCnt = 0 THEN
ErrMsg('You must select at least one row in order to create an NCR.')
RETURN
END
WONo = Get_Property(@WINDOW:'.WO_NO','DEFPROP')
WOStep = Get_Property(@WINDOW:'.PROC_STEP_NO','DEFPROP')
InCassNo = Get_Property(@WINDOW:'.IN_CASS_NO','DEFPROP')
WMIKey = WONo:'*':WOStep:'*':InCassNo
WMIStatus = Xlate('WM_IN', WMIKey, 'CURR_STATUS', 'X')
OnHold = (WMIStatus EQ 'HOLD')
WOMatKey = Xlate('WM_IN', WMIKey, 'WO_MAT_KEY', 'X')
Result = ''
If OnHold EQ True$ then
Result = Dialog_Box('NDW_HOLD_REMOVAL_PROMPT',@WINDOW,'WM_IN':@VM:WMIKey:@VM:WOMatKey)
If Result NE True$ then
Return
end else
Send_Event(@Window, 'READ')
end
end
If (OnHold NE True$) OR (Result = True$) then
SAPBatchNo = Xlate('WO_MAT', WOMatKey, WO_MAT_SAP_BATCH_NO$, 'X')
OffHoldDTMs = Xlate('WO_MAT', WOMatKey, 'HOLD_STOP_DTM', 'X')
If OffHoldDTMs NE '' then
// Ensure at least a minute has elapsed since the cassette was last taken off hold.
LastDTM = OffHoldDTMs[-1, 'B':@VM]
TimeElapsed = Datetime() - LastDTM
// .000694 is the equivalent to 60 seconds in datetime format
If (TimeElapsed LT '.000694') AND (SAPBatchNo NE '') then
Def = ""
Def<MTEXT$> = "Please wait for SAP to process off hold transaction..."
Def<MTYPE$> = "U"
MsgUp = Msg(@window, Def) ;* display the processing message
WaitTime = '.000694' - TimeElapsed
WaitSeconds = WaitTime * 86400 ;* 86400 = 60 seconds * 60 minutes * 24 hours
WaitMilliSec = WaitSeconds * 1000
Sleepery(WaitMilliSec)
Msg(@window, MsgUp) ;* take down the processing message
end
end
InCassNos = ''
InSlotNos = ''
RDSNos = ''
PocketNos = ''
Zones = ''
OutSlotNos = ''
OutCassNos = ''
SlotNCRs = ''
InCassNos = ''
InSlotNos = ''
RDSNos = ''
PocketNos = ''
Zones = ''
OutSlotNos = ''
OutCassNos = ''
SlotNCRs = ''
FOR I = 1 TO SelCnt
RDSNo = WMInList<SelectedRows<I>,COL$RDS>
IF RDSNo NE '' THEN
ErrMsg('Slot ':SelectedRows<I>:' has already been loaded into the reactor.')
RETURN
END ELSE
InSlotNos<1,I> = WMInList<SelectedRows<I>,COL$SLOT>
InCassNos<1,I> = InCassNo
SlotNCRs<1,I> = WMInList<SelectedRows<I>,COL$SLOT_NCR_NO>
END
NEXT I
FOR I = 1 TO SelCnt
RDSNo = WMInList<SelectedRows<I>,COL$RDS>
IF RDSNo NE '' THEN
ErrMsg('Slot ':SelectedRows<I>:' has already been loaded into the reactor.')
RETURN
END ELSE
InSlotNos<1,I> = WMInList<SelectedRows<I>,COL$SLOT>
InCassNos<1,I> = InCassNo
SlotNCRs<1,I> = WMInList<SelectedRows<I>,COL$SLOT_NCR_NO>
END
NEXT I
IF InCassNos = '' THEN RETURN
IF InCassNos = '' THEN RETURN
ncrParms = WONo:@RM
ncrParms := WOStep:@RM
ncrParms := InCassNo:@RM ;* WO_MAT_CASS_NO ;* changed from null on WM_IN jch 12/1/11
ncrParms := '':@RM ;* Single RDS field
ncrParms := '':@RM ;* Reactor No
ncrParms := 'PRE':@RM
ncrParms := InCassNos:@RM
ncrParms := InSlotNos:@RM
ncrParms := PocketNos:@RM ;* Pocket Nos
ncrParms := Zones:@RM ;* Zones
ncrParms := OutCassNos:@RM ;* OutCassNos
ncrParms := OutSlotNos:@RM ;* OutSlotNos
ncrParms := RDSNos:@RM ;* RDSNos
ncrParms := '':@RM ;* Placeholder for RejWaferIDs
ncrParms := SlotNCRs
ncrParms = WONo:@RM
ncrParms := WOStep:@RM
ncrParms := InCassNo:@RM ;* WO_MAT_CASS_NO ;* changed from null on WM_IN jch 12/1/11
ncrParms := '':@RM ;* Single RDS field
ncrParms := '':@RM ;* Reactor No
ncrParms := 'PRE':@RM
ncrParms := InCassNos:@RM
ncrParms := InSlotNos:@RM
ncrParms := PocketNos:@RM ;* Pocket Nos
ncrParms := Zones:@RM ;* Zones
ncrParms := OutCassNos:@RM ;* OutCassNos
ncrParms := OutSlotNos:@RM ;* OutSlotNos
ncrParms := RDSNos:@RM ;* RDSNos
ncrParms := '':@RM ;* Placeholder for RejWaferIDs
ncrParms := SlotNCRs
BarcodeVerified = Dialog_Box('NDW_VERIFY_BARCODE', @Window, WMIKey, @User4)
If BarcodeVerified EQ TRUE$ then
Set_Status(0)
NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers
errCode = ''
IF Get_Status(errCode) THEN
ErrMsg(errCode)
BarcodeVerified = Dialog_Box('NDW_VERIFY_BARCODE', @Window, WMIKey, @User4)
If BarcodeVerified EQ TRUE$ then
Set_Status(0)
NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers
errCode = ''
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END ELSE
RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
RejWfrIDs = ''
NewSlotIDs = ''
CurrSlotIDs = ''
RunLocs = ''
FOR N = 1 TO COUNT(InSlotNos,@VM) + (InSlotNos NE '')
* * * * Added 3/23/2016 JCH - wafer history * * * *
END ELSE
RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N>
RejWfrIDs = ''
NewSlotIDs = ''
CurrSlotIDs = ''
RunLocs = ''
RejWfrIDs<1,-1> = RejWfrID
CurrSlotIDs<1,-1> = RejWfrID ;*Inbound box WfrID = SlotID
FOR N = 1 TO COUNT(InSlotNos,@VM) + (InSlotNos NE '')
Parms = RejWfrID:@RM ;* WfrID
Parms := RejDTM:@RM ;* EventDtm
Parms := @USER4:@RM ;* EventBy
Parms := 'NCR':@RM ;* Event
Parms := '':@RM ;* NewSlotID
Parms := '':@RM ;* RunLoc
Parms := NCRNo:@RM ;* NCRNo
Parms := '':@RM ;* TWUse
Parms := RejWfrID:@RM ;* CurrSlotID Inbound box WfrID = SlotID
Parms := '':@RM ;* NewToolID
Parms := '':@RM ;* CurrToolID
Parms := '':@RM ;* NewInvLoc
Parms := '':@RM ;* CurrInvLoc
Parms := 'I' ;* WfrSide
* * * * Added 3/23/2016 JCH - wafer history * * * *
RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N>
RejWfrIDs<1,-1> = RejWfrID
CurrSlotIDs<1,-1> = RejWfrID ;*Inbound box WfrID = SlotID
Parms = RejWfrID:@RM ;* WfrID
Parms := RejDTM:@RM ;* EventDtm
Parms := @USER4:@RM ;* EventBy
Parms := 'NCR':@RM ;* Event
Parms := '':@RM ;* NewSlotID
Parms := '':@RM ;* RunLoc
Parms := NCRNo:@RM ;* NCRNo
Parms := '':@RM ;* TWUse
Parms := RejWfrID:@RM ;* CurrSlotID Inbound box WfrID = SlotID
Parms := '':@RM ;* NewToolID
Parms := '':@RM ;* CurrToolID
Parms := '':@RM ;* NewInvLoc
Parms := '':@RM ;* CurrInvLoc
Parms := 'I' ;* WfrSide
obj_WO_Wfr('AddEvent',Parms)
* * * * *
obj_WO_Wfr('AddEvent',Parms)
LineNo = InSlotNos<1,N>
* * * * *
LineNo = InSlotNos<1,N>
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS_STATUS:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$POCKET:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$ZONE:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$CHAR:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS',NCRNo,COL$SLOT_NCR_NO:@FM:LineNo)
NEXT N
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS_STATUS:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$POCKET:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$ZONE:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$CHAR:@FM:LineNo)
Set_Property(@WINDOW:'.SLOT_NO','CELLPOS',NCRNo,COL$SLOT_NCR_NO:@FM:LineNo)
NEXT N
END
Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off
END
Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off
Send_Event(@WINDOW,'WRITE')
Send_Event(@WINDOW,'WRITE')
DetWindow = 'NCR'
DetKeys = NCRNo
DefaultRec = ''
RetKey = WMIKey
RetWin = @WINDOW
RetPage = 1
RetCtrl = @WINDOW:'.SLOT'
RetPos = 1:@FM:1
obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos)
End
DetWindow = 'NCR'
DetKeys = NCRNo
DefaultRec = ''
RetKey = WMIKey
RetWin = @WINDOW
RetPage = 1
RetCtrl = @WINDOW:'.SLOT'
RetPos = 1:@FM:1
obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos)
End
end
RETURN
@ -813,3 +849,4 @@ RETURN