Fixed scheduler bug causing cassettes to be marked as complete if they have not been received yet. Updated WIP commuter module to handle old react item wafer size format.

This commit is contained in:
Infineon\StieberD
2025-10-02 14:02:16 -07:00
parent acd7949e85
commit a2f61d11c9
5 changed files with 181 additions and 111 deletions

View File

@ -269,45 +269,45 @@ return
WRITE_RECORD_PRE:
WOMatKeyID = Name
CriticalFields = WO_MAT_RDS_NO$:@VM:WO_MAT_LOT_NO$:@VM:WO_MAT_WAFER_QTY$:@VM:WO_MAT_CUST_PART_NO$:@VM
CriticalFields := WO_MAT_SUB_PART_NO$:@VM:WO_MAT_INV_ACTION$:@VM:WO_MAT_SLOT_NO$:@VM:WO_MAT_RX_DTM$:@VM
CriticalFields := WO_MAT_RX_BY$:@VM:WO_MAT_REL_DTM$:@VM:WO_MAT_REL_BY$:@VM:WO_MAT_SUB_VEND_CD$:@VM
CriticalFields := WO_MAT_CASS_SHIP_QTY$:@VM:WO_MAT_SHIP_SHORT$:@VM:WO_MAT_MU_WAFER_FLAG$
For each CriticalField in CriticalFields using @VM setting vPos
If ( (OrigRecord<CriticalField> NE '') and (Record<CriticalField> EQ '') ) then
WOMatFieldNos = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_PART$, 'X')
WOMatFieldNames = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_DISPLAY$, 'X')
Locate CriticalField in WOMatFieldNos using @VM setting FieldNo then
CriticalFieldName = WOMatFieldNames<0, FieldNo>
end else
CriticalFieldName = 'Error determining field name'
end
Recipients = ''
SentFrom = 'SYSTEM'
Subject = 'WO_MAT_ACTIONS - Critical Field Erased'
Message = OConv(Datetime(), 'DT2/^H')
Message<2> = 'Computer: ':@Station
Message<3> = 'User: ':@User4
Message<4> = 'WO_MAT key: ':Name
NoteMessage = 'Readonly field ':CriticalField:' (':CriticalFieldName:') erased. Value erased ':Quote(OrigRecord<CriticalField>)
Message<5> = NoteMessage
Message<6> = 'Call Stack:':CRLF$:RetStack()
Swap @FM with \0D0A\ in Message
Swap @VM with ',' in Message
AttachWindow = 'WO_MAT'
AttachKey = Name
SendToGroup = 'OI_SYSADMIN'
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
end
Void = Record<WO_MAT_VOID$>
If (Void NE True$) then
CriticalFields = WO_MAT_RDS_NO$:@VM:WO_MAT_LOT_NO$:@VM:WO_MAT_WAFER_QTY$:@VM:WO_MAT_CUST_PART_NO$:@VM
CriticalFields := WO_MAT_SUB_PART_NO$:@VM:WO_MAT_INV_ACTION$:@VM:WO_MAT_SLOT_NO$:@VM:WO_MAT_RX_DTM$:@VM
CriticalFields := WO_MAT_RX_BY$:@VM:WO_MAT_REL_DTM$:@VM:WO_MAT_REL_BY$:@VM:WO_MAT_SUB_VEND_CD$:@VM
CriticalFields := WO_MAT_CASS_SHIP_QTY$:@VM:WO_MAT_SHIP_SHORT$:@VM:WO_MAT_MU_WAFER_FLAG$
For each CriticalField in CriticalFields using @VM setting vPos
If ( (OrigRecord<CriticalField> NE '') and (Record<CriticalField> EQ '') ) then
WOMatFieldNos = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_PART$, 'X')
WOMatFieldNames = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_DISPLAY$, 'X')
Locate CriticalField in WOMatFieldNos using @VM setting FieldNo then
CriticalFieldName = WOMatFieldNames<0, FieldNo>
end else
CriticalFieldName = 'Error determining field name'
end
Recipients = ''
SentFrom = 'SYSTEM'
Subject = 'WO_MAT_ACTIONS - Critical Field Erased'
Message = OConv(Datetime(), 'DT2/^H')
Message<2> = 'Computer: ':@Station
Message<3> = 'User: ':@User4
Message<4> = 'WO_MAT key: ':Name
NoteMessage = 'Readonly field ':CriticalField:' (':CriticalFieldName:') erased. Value erased ':Quote(OrigRecord<CriticalField>)
Message<5> = NoteMessage
Message<6> = 'Call Stack:':CRLF$:RetStack()
Swap @FM with \0D0A\ in Message
Swap @VM with ',' in Message
AttachWindow = 'WO_MAT'
AttachKey = Name
SendToGroup = 'OI_SYSADMIN'
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
end
Next CriticalField
SaveRecord = Record
Next CriticalField
end
WaferQty = Record<WO_MAT_WAFER_QTY$>
If ( (WaferQty LT 0) or (WaferQty GT 25) ) then
@ -878,7 +878,7 @@ WRITE_RECORD:
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKeyID)
If CurrWaferCount EQ 0 then
// This should catch cases where the entire cassette is "peeled off", NCR'ed, or used for destructive testing.
Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'MarkCassProcessed':SD$:WONo:SD$:CassNo:SD$:Datetime())
Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'UpdateCassProcStatus':SD$:WONo:SD$:CassNo:SD$:Datetime())
end
return