fixed a locking bug preventing work order quantities from updating when cassette quantities are modified

This commit is contained in:
Infineon\StieberD 2024-12-12 17:59:52 -07:00 committed by Stieber Daniel (CSC FI SPS MESLEO)
parent 7f309c87d4
commit bad03f6abe
4 changed files with 18 additions and 30 deletions

View File

@ -1527,42 +1527,34 @@ ChangeCassQty:
WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X') 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<WO_MAT_RDS_NO$,1> FirstRDS = WOMatRec<WO_MAT_RDS_NO$,1>
If FirstRDS NE '' then If FirstRDS NE '' then
// There will only be an RDS if the cassette has been released already, otherwise this will fail. // There will only be an RDS if the cassette has been released already, otherwise this will fail.
obj_RDS('SetSchedWfrQty',FirstRDS:@RM:NewCassQty) obj_RDS('SetSchedWfrQty',FirstRDS:@RM:NewCassQty)
IF Get_Status(errCode) THEN IF Get_Status(errCode) THEN RETURN
obj_Tables('UnlockRec',otParms) ;* Unlock WO Record end
RETURN
END
end
CurrWfrCnt = WOMatRec<WO_MAT_WAFER_QTY$> CurrWfrCnt = WOMatRec<WO_MAT_WAFER_QTY$>
PrevWfrCnt = obj_WO_Mat('SetWfrQty',WONo:'*':CassNo:@RM:NewCassQty) PrevWfrCnt = obj_WO_Mat('SetWfrQty',WONo:'*':CassNo:@RM:NewCassQty)
IF Get_Status(errCode) THEN IF Get_Status(errCode) THEN
obj_RDS('SetSchedWfrQty',FirstRDS:@RM:CurrWfrCnt) ;* Reset RDS Sched Qty to original obj_RDS('SetSchedWfrQty',FirstRDS:@RM:CurrWfrCnt) ;* Reset RDS Sched Qty to original
obj_Tables('UnlockRec',otParms) ;* Unlock WO Record
RETURN RETURN
END END
WOQtyDelta = PrevWfrCnt - NewCassQty WOQtyDelta = PrevWfrCnt - NewCassQty
IF WOQtyDelta NE 0 THEN 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<WO_LOG_WO_QTY$> = WOLogRec<WO_LOG_WO_QTY$> + WOQtyDelta WOLogRec<WO_LOG_WO_QTY$> = WOLogRec<WO_LOG_WO_QTY$> + WOQtyDelta
Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, True$, False$, False$)
END END
otParms = FieldStore(otParms,@RM,4,1,WOLogRec)
obj_Tables('WriteRec',otParms)
RETURN RETURN
@ -2049,10 +2041,6 @@ RemoveCassettes:
AllRDSNos = XLATE('WO_MAT',AllCassIDs,WO_MAT_RDS_NO$,'X') 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) WORec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
If Error_Services('NoError') then If Error_Services('NoError') then
@ -2088,10 +2076,6 @@ RemoveCassettes:
Logging_Services('AppendLog', objLog, LogData, @RM, @FM) Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
end end
! Deprecated code 01/04/2022 - DJS
* WTParms = FieldStore(WTParms,@RM,4,1,WORec)
* obj_Tables('WriteRec',WTParms)
RETURN RETURN

View File

@ -934,7 +934,7 @@ Service UpdateReleasedQty(WONo)
UnRelQty = WOQty - RelQty UnRelQty = WOQty - RelQty
end end
WORec<WO_LOG_UNREL_QTY_STATIC$> = UnRelQty WORec<WO_LOG_UNREL_QTY_STATIC$> = UnRelQty
Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec) Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$)
end end
end service end service
@ -946,7 +946,7 @@ Service UpdateReceivedQty(WONo)
If Error_Services('NoError') then If Error_Services('NoError') then
RXQty = obj_WO_Log('RxQty', WONo:@RM:WORec) RXQty = obj_WO_Log('RxQty', WONo:@RM:WORec)
WORec<WO_LOG_RX_QTY_STATIC$> = RXQty WORec<WO_LOG_RX_QTY_STATIC$> = RXQty
Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec) Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$)
end end
end service end service

View File

@ -205,9 +205,11 @@ return
WRITE_RECORD_PRE: WRITE_RECORD_PRE:
OrigQty = OrigRecord<WO_LOG_QTY$> OrigQty = OrigRecord<WO_LOG_QTY$>
NewQty = Record<WO_LOG_QTY$> NewQty = Record<WO_LOG_QTY$>
If OrigQty NE NewQty then OrigCassList = OrigRecord<WO_LOG_WO_MAT_KEY$>
NewCassList = Record<WO_LOG_WO_MAT_KEY$>
If ( (OrigQty NE NewQty) or (OrigCassList NE NewCassList) ) then
// Update released, unreleased, and received quantities // Update released, unreleased, and received quantities
RelQty = obj_WO_Log('RelQty', Name:@RM:Record) RelQty = obj_WO_Log('RelQty', Name:@RM:Record)
Record<WO_LOG_REL_QTY_STATIC$> = RelQty Record<WO_LOG_REL_QTY_STATIC$> = RelQty

View File

@ -641,6 +641,7 @@ WRITE_RECORD:
OrigSlotMovedTo = OrigRecord<WO_MAT_SLOT_MOVED_TO$> OrigSlotMovedTo = OrigRecord<WO_MAT_SLOT_MOVED_TO$>
OrigSlotRepWaferID = OrigRecord<WO_MAT_SLOT_REP_WAFER_ID$> OrigSlotRepWaferID = OrigRecord<WO_MAT_SLOT_REP_WAFER_ID$>
OrigSAPBatchNo = OrigRecord<WO_MAT_SAP_BATCH_NO$> OrigSAPBatchNo = OrigRecord<WO_MAT_SAP_BATCH_NO$>
OrigQty = OrigRecord<WO_MAT_WAFER_QTY$>
NewSlotNos = Record<WO_MAT_SLOT_NO$> NewSlotNos = Record<WO_MAT_SLOT_NO$>
NewSlotNCRs = Record<WO_MAT_SLOT_NCR$> NewSlotNCRs = Record<WO_MAT_SLOT_NCR$>
@ -667,6 +668,7 @@ WRITE_RECORD:
NewSlotMovedTo = Record<WO_MAT_SLOT_MOVED_TO$> NewSlotMovedTo = Record<WO_MAT_SLOT_MOVED_TO$>
NewSlotRepWaferID = Record<WO_MAT_SLOT_REP_WAFER_ID$> NewSlotRepWaferID = Record<WO_MAT_SLOT_REP_WAFER_ID$>
NewSAPBatchNo = Record<WO_MAT_SAP_BATCH_NO$> NewSAPBatchNo = Record<WO_MAT_SAP_BATCH_NO$>
NewQty = Record<WO_MAT_WAFER_QTY$>
** NCR log for troubleshooting **************************** ** NCR log for troubleshooting ****************************
LogData = '' 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. // This should catch cases where the entire cassette is "peeled off", NCR'ed, or used for destructive testing.
Schedule_Services('MarkCassProcessed', WONo, CassNo, Datetime()) Schedule_Services('MarkCassProcessed', WONo, CassNo, Datetime())
end end
return return
DELETE_RECORD_PRE: DELETE_RECORD_PRE: