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:
Infineon\StieberD
2025-09-30 13:45:55 -07:00
parent a2f61d11c9
commit beaac0d38a
17 changed files with 1272 additions and 778 deletions

View File

@ -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