From bad03f6abe47f3ebd5d7cbcc0eafab88d854a35f Mon Sep 17 00:00:00 2001 From: "Infineon\\StieberD" Date: Thu, 12 Dec 2024 17:59:52 -0700 Subject: [PATCH] fixed a locking bug preventing work order quantities from updating when cassette quantities are modified --- LSL2/STPROC/OBJ_WO_LOG.txt | 32 ++++++++--------------------- LSL2/STPROC/WORK_ORDER_SERVICES.txt | 4 ++-- LSL2/STPROC/WO_LOG_ACTIONS.txt | 8 +++++--- LSL2/STPROC/WO_MAT_ACTIONS.txt | 4 +++- 4 files changed, 18 insertions(+), 30 deletions(-) diff --git a/LSL2/STPROC/OBJ_WO_LOG.txt b/LSL2/STPROC/OBJ_WO_LOG.txt index 422bbee..41b706e 100644 --- a/LSL2/STPROC/OBJ_WO_LOG.txt +++ b/LSL2/STPROC/OBJ_WO_LOG.txt @@ -1527,42 +1527,34 @@ ChangeCassQty: WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X') - otParms = 'WO_LOG':@RM:WONo - WOLogRec = obj_Tables('ReadRec',otParms) - - IF Get_Status(errCode) THEN RETURN - FirstRDS = WOMatRec If FirstRDS NE '' then // There will only be an RDS if the cassette has been released already, otherwise this will fail. obj_RDS('SetSchedWfrQty',FirstRDS:@RM:NewCassQty) - IF Get_Status(errCode) THEN - obj_Tables('UnlockRec',otParms) ;* Unlock WO Record - RETURN - END - end + IF Get_Status(errCode) THEN RETURN + end CurrWfrCnt = WOMatRec PrevWfrCnt = obj_WO_Mat('SetWfrQty',WONo:'*':CassNo:@RM:NewCassQty) IF Get_Status(errCode) THEN - obj_RDS('SetSchedWfrQty',FirstRDS:@RM:CurrWfrCnt) ;* Reset RDS Sched Qty to original - obj_Tables('UnlockRec',otParms) ;* Unlock WO Record - RETURN END WOQtyDelta = PrevWfrCnt - NewCassQty IF WOQtyDelta NE 0 THEN + WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WONo) + If Error_Services('HasError') then + Set_Status(Error_Services('GetMessage')) + return + end WOLogRec = WOLogRec + WOQtyDelta + Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, True$, False$, False$) END - otParms = FieldStore(otParms,@RM,4,1,WOLogRec) - obj_Tables('WriteRec',otParms) - RETURN @@ -2049,10 +2041,6 @@ RemoveCassettes: AllRDSNos = XLATE('WO_MAT',AllCassIDs,WO_MAT_RDS_NO$,'X') - ! Deprecated code 01/04/2022 - DJS - * WTParms = 'WO_LOG':@RM:WONo - * WORec = obj_Tables('ReadRec',WTParms) - WORec = Database_Services('ReadDataRow', 'WO_LOG', WONo) If Error_Services('NoError') then @@ -2088,10 +2076,6 @@ RemoveCassettes: Logging_Services('AppendLog', objLog, LogData, @RM, @FM) end - ! Deprecated code 01/04/2022 - DJS - * WTParms = FieldStore(WTParms,@RM,4,1,WORec) - * obj_Tables('WriteRec',WTParms) - RETURN diff --git a/LSL2/STPROC/WORK_ORDER_SERVICES.txt b/LSL2/STPROC/WORK_ORDER_SERVICES.txt index 8956860..648f514 100644 --- a/LSL2/STPROC/WORK_ORDER_SERVICES.txt +++ b/LSL2/STPROC/WORK_ORDER_SERVICES.txt @@ -934,7 +934,7 @@ Service UpdateReleasedQty(WONo) UnRelQty = WOQty - RelQty end WORec = UnRelQty - Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec) + Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$) end end service @@ -946,7 +946,7 @@ Service UpdateReceivedQty(WONo) If Error_Services('NoError') then RXQty = obj_WO_Log('RxQty', WONo:@RM:WORec) WORec = RXQty - Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec) + Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$) end end service diff --git a/LSL2/STPROC/WO_LOG_ACTIONS.txt b/LSL2/STPROC/WO_LOG_ACTIONS.txt index 3bc850c..fbaad3d 100644 --- a/LSL2/STPROC/WO_LOG_ACTIONS.txt +++ b/LSL2/STPROC/WO_LOG_ACTIONS.txt @@ -205,9 +205,11 @@ return WRITE_RECORD_PRE: - OrigQty = OrigRecord - NewQty = Record - If OrigQty NE NewQty then + OrigQty = OrigRecord + NewQty = Record + OrigCassList = OrigRecord + NewCassList = Record + If ( (OrigQty NE NewQty) or (OrigCassList NE NewCassList) ) then // Update released, unreleased, and received quantities RelQty = obj_WO_Log('RelQty', Name:@RM:Record) Record = RelQty diff --git a/LSL2/STPROC/WO_MAT_ACTIONS.txt b/LSL2/STPROC/WO_MAT_ACTIONS.txt index b27d88d..8ac890f 100644 --- a/LSL2/STPROC/WO_MAT_ACTIONS.txt +++ b/LSL2/STPROC/WO_MAT_ACTIONS.txt @@ -641,6 +641,7 @@ WRITE_RECORD: OrigSlotMovedTo = OrigRecord OrigSlotRepWaferID = OrigRecord OrigSAPBatchNo = OrigRecord + OrigQty = OrigRecord NewSlotNos = Record NewSlotNCRs = Record @@ -667,6 +668,7 @@ WRITE_RECORD: NewSlotMovedTo = Record NewSlotRepWaferID = Record NewSAPBatchNo = Record + NewQty = Record ** NCR log for troubleshooting **************************** LogData = '' @@ -830,7 +832,7 @@ WRITE_RECORD: // This should catch cases where the entire cassette is "peeled off", NCR'ed, or used for destructive testing. Schedule_Services('MarkCassProcessed', WONo, CassNo, Datetime()) end - + return DELETE_RECORD_PRE: