Added calls to verify indexes and update indexes right after receiving and releasing material. Refactored codebase to adjust work order quantities instead of recalculate quantities.
Removing reliance on transaction queue for receive and releaase Added unlock call in case write fails
This commit is contained in:
@ -23,7 +23,7 @@ Declare Function Database_Services, SRP_Array, Return_To_Fab_Services
|
||||
Declare Subroutine Set_Status, Msg, obj_Tables, Send_Dyn, obj_WO_Step, obj_RDS_Layer, obj_RDS_Test, Btree.Extract
|
||||
Declare Subroutine Extract_SI_Keys, obj_WM_Out, obj_WO_Mat, obj_Post_Log, obj_WO_Mat_Log, ErrMsg, obj_WO_Wfr
|
||||
Declare Subroutine Logging_Services, Material_Services, Database_Services, Update_Index, Work_Order_Services
|
||||
Declare Subroutine Service_Services, obj_Notes, Delay
|
||||
Declare Subroutine Service_Services, obj_Notes, Delay, WM_Out_Services
|
||||
|
||||
$Insert MSG_EQUATES
|
||||
$Insert APP_INSERTS
|
||||
@ -40,7 +40,7 @@ $Insert CLEAN_INSP_EQUATES
|
||||
$Insert WMO_WFRS_EQUATES
|
||||
$Insert REACT_RUN_EQUATES
|
||||
|
||||
EQU NUM_RETRIES$ TO 50
|
||||
EQU NUM_RETRIES$ TO 60
|
||||
|
||||
ErrTitle = 'Error in Stored Procedure "obj_WM_Out"'
|
||||
ErrorMsg = ''
|
||||
@ -115,13 +115,12 @@ Create:
|
||||
|
||||
WONo = Parms[1,@RM]
|
||||
WOStep = Parms[COL2()+1,@RM]
|
||||
NewCassNos = Parms[COL2()+1,@RM]
|
||||
NewCassNo = Parms[COL2()+1,@RM]
|
||||
CassLoadQty = Parms[COL2()+1,@RM]
|
||||
|
||||
|
||||
IF WONo = '' THEN ErrorMsg = 'Null Parameter "WONo" passed to routine. (':Method:')'
|
||||
IF WOStep = '' THEN ErrorMsg = 'Null Parameter "WOStep" passed to routine. (':Method:')'
|
||||
IF NewCassNos = '' THEN ErrorMsg = 'Null Parameter "NewCassNos" passed to routine. (':Method:')'
|
||||
IF NewCassNo = '' THEN ErrorMsg = 'Null Parameter "NewCassNo" passed to routine. (':Method:')'
|
||||
|
||||
IF ErrorMsg NE '' THEN RETURN
|
||||
|
||||
@ -161,11 +160,8 @@ Create:
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
|
||||
InboundWaferQty = 0
|
||||
FOR I = 1 TO COUNT(NewCassNos,@VM) + (NewCassNos NE '')
|
||||
NewCassNo = NewCassNos<1,I>
|
||||
CassWfrQty = XLATE('WO_MAT',WONo:'*':NewCassNo,WO_MAT_WAFER_QTY$,'X')
|
||||
InboundWaferQty += CassWfrQty
|
||||
NEXT I
|
||||
CassWfrQty = XLATE('WO_MAT',WONo:'*':NewCassNo,WO_MAT_WAFER_QTY$,'X')
|
||||
InboundWaferQty += CassWfrQty
|
||||
|
||||
WMOutKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_OUT_KEYS$,'X')
|
||||
|
||||
@ -214,7 +210,7 @@ Create:
|
||||
OutOnlyCassIDs = '' ;* List of Outbound only Cassette IDs added 8/12/1011 JCH
|
||||
|
||||
LOOP
|
||||
UNTIL InboundWaferQty = 0
|
||||
UNTIL InboundWaferQty EQ 0
|
||||
WMOutKey = WONo:'*':WOStep:'*':WMOCassNo
|
||||
WMOutRec = XLATE('WM_OUT',WMOutKey,'','X') ;* In case there is a partial box
|
||||
NewBoxFlag = ''
|
||||
@ -250,7 +246,7 @@ Create:
|
||||
NumAttempts = 0
|
||||
Loop
|
||||
NumAttempts += 1
|
||||
If NumAttempts GT 1 then Delay(NumAttempts)
|
||||
If NumAttempts GT 1 then Delay(1)
|
||||
Database_Services('WriteDataRow', 'WM_OUT', WMOutKey, WMOutRec, True$, False$, False$)
|
||||
If Error_Services('HasError') then
|
||||
// Log the error
|
||||
@ -272,6 +268,9 @@ Create:
|
||||
LogData<6> = WMOCassNo
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
Done = True$
|
||||
WM_Out_Services('VerifyWOLogWMOKeyIndex', WONo:'*':WOStep:'*':WMOCassNo)
|
||||
WM_Out_Services('VerifyWOMatWMOKeyIndex', WONo:'*':WOStep:'*':WMOCassNo)
|
||||
WM_Out_Services('VerifyWoStepWMOKeyIndex', WONo:'*':WOStep:'*':WMOCassNo)
|
||||
end
|
||||
Until ( (NumAttempts GT NUM_RETRIES$) or (Done EQ True$) )
|
||||
Repeat
|
||||
@ -1999,6 +1998,3 @@ ConvertCleanInsp:
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user