added logic to RDS_ACTIONS to restore load signatures if erased unexpectedly

refactored solution to leverage the LOT and LOT_EVENT tables

minor fix
This commit is contained in:
Infineon\StieberD
2024-11-05 13:35:42 -07:00
parent b84cfb970f
commit 24a246a99b
7 changed files with 287 additions and 40 deletions

View File

@ -58,12 +58,13 @@ $Insert QA_MET_EQUATES
$Insert PRS_STAGE_EQUATES
$Insert WO_MAT_EQUATES
$Insert WO_MAT_QA_EQUATES
$Insert LOT_EVENT_EQUATES
Equ COMMA$ to ','
Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services, SRP_Math
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services, obj_WO_Mat
Declare function Rds_Services
Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services
Declare function Rds_Services, SRP_DateTime, SRP_Math, obj_WO_Mat, Lot_Services, SRP_Array
Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services
Declare subroutine Work_Order_Services, Material_Services, Set_FSError
@ -86,8 +87,6 @@ Headers = 'Logging DTM' : @FM : 'Results'
ColumnWidths = 20 : @FM : 100
objLog2 = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
If KeyID then GoSub Initialize_System_Variables
Begin Case
@ -691,6 +690,46 @@ WRITE_RECORD_PRE:
PostDTM = IConv(OConv({POST_EPI_SIG_DATE}, 'D'):' ':OConv({POST_EPI_SIG_TIME}, 'MT'), 'DT')
FQADTM = IConv(OConv({SUP_VER_SIG_DATE}, 'D'):' ':OConv({SUP_VER_SIG_TIME}, 'MT'), 'DT')
If NewLoadSig EQ '' then
// Audit the LOT_EVENT table for missing LOAD event (i.e., signature)
If RowExists('LOT', RDSNo) then
LotEvents = Lot_Services('GetLotEventsInSequence', RDSNo)
If LotEvents NE '' then
LotEventsRev = SRP_Array('Reverse', LotEvents, @FM)
LotEventsTypesRev = Xlate('LOT_EVENT', LotEventsRev, LOT_EVENT_LOT_EVENT_TYPE$, 'X')
If LotEventsTypesRev NE '' then
Done = False$
For each LotEventType in LotEventsTypesRev using @FM setting EventPos
Begin Case
Case LotEventType EQ 'LOAD'
Done = True$
If NewLoadSig EQ '' then
// Load signature is missing from RDS record
NewLoadSig = Xlate('LOT_EVENT', LotEventsRev<EventPos>, LOT_EVENT_EVENT_OPERATOR_ID$, 'X')
NewLoadSigDtm = Xlate('LOT_EVENT', LotEventsRev<EventPos>, LOT_EVENT_EVENT_DATETIME$, 'X')
NewLoadDate = SRP_DateTime("Date", NewLoadSigDtm)
NewLoadTime = SRP_DateTime("Time", NewLoadSigDtm)
Record<RDS_OPERATOR_IN$> = NewLoadSig
Record<RDS_DATE_IN$> = NewLoadDate
Record<RDS_TIME_IN$> = NewLoadTime
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = @User4
LogData<3> = RDSKeyID
LogData<4> = 'Detected missing LOAD signature from RDS record. Restored signature from LOT_EVENT table.'
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
end
Case LotEventType EQ 'UNSIGN_LOAD'
Done = True$
// No need to check for missing load signature
End Case
Until Done
Next LotEventType
end
end
end
end
Begin Case
Case LoadDTM NE '' and UnloadDTM EQ '' and UnloadEx1DTM EQ ''
// Cassette still running...
@ -1005,4 +1044,3 @@ Restore_System_Variables:
return