updated WO_MAT and WM_IN actions to mark cassettes as processed when cassettes have a quantity of zero

This commit is contained in:
Infineon\StieberD
2024-11-11 13:24:05 -07:00
parent 8282b5a7d4
commit 19fb71d733
13 changed files with 3414 additions and 3484 deletions

View File

@ -59,7 +59,7 @@ Equ Comma$ to ','
Declare function Database_Services, obj_NCR, obj_SAP, Environment_Services, Logging_Services, Datetime
Declare subroutine Error_Services, Database_Services, obj_NCR, obj_SAP, Material_Services, Work_Order_Services
Declare subroutine Logging_Services, obj_Notes
Declare subroutine Logging_Services, obj_Notes, Schedule_Services
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WM_IN'
LogDate = Oconv(Date(), 'D4/')
@ -160,48 +160,8 @@ WRITE_RECORD:
WONo = Field(Name, '*', 1)
CassNo = Field(Name, '*', 3)
ProcessedDTM = Datetime()
// Find the SCHED_DET_NG event record that contains the cassette number.
Query = 'SELECT SCHED_DET_NG WITH WO_NO EQ ':WONo:' AND WITH UNPROCESSED_CASS CONTAINING ':CassNo
GoSub ClearCursors
RList(Query, TARGET_ACTIVELIST$, '', '', '')
EOF = False$
Done = False$
Loop
Readnext SchedDetNGKey else EOF = True$
Until EOF = True$
SchedDetNGRec = Database_Services('ReadDataRow', 'SCHED_DET_NG', SchedDetNGKey)
ProcessedCassettes = SchedDetNGRec<SCHED_DET_NG.PROCESSED_CASS$>
ProcessedWfrQty = DCount(ProcessedCassettes, @VM) * 25
TotalWfrs = SchedDetNGRec<SCHED_DET_NG.EVENT_TOTAL_WFRS$>
CassRemWfrs = Xlate('WM_IN', Name, 'REM_WFRS', 'X')
ProcessedCassQty = 25 - CassRemWfrs
If (ProcessedWfrQty + ProcessedCassQty ) EQ TotalWfrs then
// Mark cassette complete.
UnprocessedCassettes = SchedDetNGRec<SCHED_DET_NG.UNPROCESSED_CASS$>
Locate CassNo in UnprocessedCassettes using @VM setting vPos then
UnprocessedCassettes = Delete(UnprocessedCassettes, 0, vPos, 0)
ProcessedCassettes = SchedDetNGRec<SCHED_DET_NG.PROCESSED_CASS$>
ProcessedCassettes<0, -1> = CassNo
SchedDetNGRec<SCHED_DET_NG.UNPROCESSED_CASS$> = UnprocessedCassettes
SchedDetNGRec<SCHED_DET_NG.PROCESSED_CASS$> = ProcessedCassettes
Database_Services('WriteDataRow', 'SCHED_DET_NG', SchedDetNGKey, SchedDetNGRec, True$, False$, True$)
Done = True$
end
// Mark previous cassette processed if it isn't already. This covers situations where users fail to
// sign the unload stage for a cassette.
PrevCassNo = CassNo - 1
Locate PrevCassNo in UnprocessedCassettes using @VM setting vPos then
UnprocessedCassettes = Delete(UnprocessedCassettes, 0, vPos, 0)
ProcessedCassettes = SchedDetNGRec<SCHED_DET_NG.PROCESSED_CASS$>
ProcessedCassettes<0, -1> = PrevCassNo
SchedDetNGRec<SCHED_DET_NG.UNPROCESSED_CASS$> = UnprocessedCassettes
SchedDetNGRec<SCHED_DET_NG.PROCESSED_CASS$> = ProcessedCassettes
Database_Services('WriteDataRow', 'SCHED_DET_NG', SchedDetNGKey, SchedDetNGRec, True$, False$, True$)
end
end
Until Done EQ True$
Repeat
// This service will determine if the cassette needs to be marked as complete.
Schedule_Services('MarkCassProcessed', WONo, CassNo, ProcessedDtm)
WfrCount = DCount(Record<WM_IN_SLOT_NO$>, @VM)
If WfrCount LT 25 then
@ -301,4 +261,3 @@ Restore_System_Variables:
@FILE.ERROR = OrigFileError
return