Added error checking to scan_services to check for null wo_mat records
This commit is contained in:
@ -1142,50 +1142,60 @@ Service ProcessScanData(ScanID, ScanJSON)
|
|||||||
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
||||||
WoMatKey = WO:'*':CassNo
|
WoMatKey = WO:'*':CassNo
|
||||||
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||||
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
|
if Error_Services('NoError') then
|
||||||
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
|
If WoMatRec NE '' then
|
||||||
LastCassInWoTestWaferReqMsg = ''
|
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
|
||||||
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
|
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
|
||||||
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
LastCassInWoTestWaferReqMsg = ''
|
||||||
|
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
|
||||||
If LastCassInWo then
|
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
||||||
NextEventScheduled = False$
|
|
||||||
NextEventHasSamePsn = True$
|
|
||||||
NextEventIsBlock = False$
|
|
||||||
|
|
||||||
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
|
|
||||||
If Error_Services('NoError') then
|
|
||||||
NextEventScheduled = True$
|
|
||||||
|
|
||||||
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
|
If LastCassInWo then
|
||||||
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
|
NextEventScheduled = False$
|
||||||
end
|
NextEventHasSamePsn = True$
|
||||||
|
NextEventIsBlock = False$
|
||||||
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
|
|
||||||
LastCassInWoTestWaferAckReq = True$
|
|
||||||
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
|
|
||||||
TestWaferRanSinceLoad = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> or TestWaferLotIsValid EQ True$
|
|
||||||
|
|
||||||
If TestWaferLotIsValid NE True$ and TestWaferRanSinceLoad NE True$ then
|
|
||||||
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
|
|
||||||
|
|
||||||
If TestWaferRanSinceLoad NE True$ then
|
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
|
||||||
LastCassInWoTestWaferReqMsg = ''
|
If Error_Services('NoError') then
|
||||||
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
|
NextEventScheduled = True$
|
||||||
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
|
|
||||||
end else If NextEventHasSamePsn EQ False$ then
|
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
|
||||||
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
|
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
|
||||||
|
end
|
||||||
|
|
||||||
|
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
|
||||||
|
LastCassInWoTestWaferAckReq = True$
|
||||||
|
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
|
||||||
|
TestWaferRanSinceLoad = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> or TestWaferLotIsValid EQ True$
|
||||||
|
|
||||||
|
If TestWaferLotIsValid NE True$ and TestWaferRanSinceLoad NE True$ then
|
||||||
|
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
|
||||||
|
|
||||||
|
If TestWaferRanSinceLoad NE True$ then
|
||||||
|
LastCassInWoTestWaferReqMsg = ''
|
||||||
|
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
|
||||||
|
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
|
||||||
|
end else If NextEventHasSamePsn EQ False$ then
|
||||||
|
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
|
||||||
|
end
|
||||||
|
|
||||||
|
Scan_Services('AddNotAcceptableReason', LastCassInWoTestWaferReqMsg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Scan_Services('AddNotAcceptableReason', LastCassInWoTestWaferReqMsg)
|
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
|
||||||
|
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
|
|
||||||
|
|
||||||
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
|
|
||||||
end
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'WO_MAT record was null.'
|
||||||
|
Error_Services('Add', ErrorMessage)
|
||||||
end
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Failure to read cassette record. ' : Error_Services('GetMessage')
|
||||||
|
Error_Services('Add', ErrorMessage)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1487,6 +1497,7 @@ Service AcceptScan(ScanID, ScanJSON)
|
|||||||
// Check if cassette field is populated. If so, then check the cassette's current status to
|
// Check if cassette field is populated. If so, then check the cassette's current status to
|
||||||
// determine what the next action will be (i.e. Pre-Epi+Load, Unload, etc.)
|
// determine what the next action will be (i.e. Pre-Epi+Load, Unload, etc.)
|
||||||
CassetteID = CassetteIDs<0, 1>
|
CassetteID = CassetteIDs<0, 1>
|
||||||
|
*if CassetteId EQ 1005860 then debug
|
||||||
TestWaferLots = ScansRow<SCANS.TW_LOT_ID$>
|
TestWaferLots = ScansRow<SCANS.TW_LOT_ID$>
|
||||||
Begin Case
|
Begin Case
|
||||||
Case CassetteID NE ''
|
Case CassetteID NE ''
|
||||||
@ -1534,6 +1545,7 @@ Service AcceptScan(ScanID, ScanJSON)
|
|||||||
Continue = False$
|
Continue = False$
|
||||||
end
|
end
|
||||||
If Continue then
|
If Continue then
|
||||||
|
*if RDSNo EQ 1006721 then debug
|
||||||
PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1)
|
PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1)
|
||||||
If PreStageSigned EQ True$ then
|
If PreStageSigned EQ True$ then
|
||||||
LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1)
|
LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1)
|
||||||
@ -2402,3 +2414,4 @@ ClearCursors:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user