remind operator to run test wafer on last cassete in WO
This commit is contained in:
parent
a41136e30e
commit
f8c83dd7f4
@ -53,6 +53,7 @@ $insert CLEAN_INSP_EQUATES
|
|||||||
$insert REACT_STATE_EQUATES
|
$insert REACT_STATE_EQUATES
|
||||||
$insert REACT_RUN_EQUATES
|
$insert REACT_RUN_EQUATES
|
||||||
$insert REACT_ITEM_EQUATES
|
$insert REACT_ITEM_EQUATES
|
||||||
|
$Insert MESSAGE_BOX_EQUATES
|
||||||
|
|
||||||
Equ COL$LOG_FILE to 1
|
Equ COL$LOG_FILE to 1
|
||||||
Equ COL$LOG_DTM to 2
|
Equ COL$LOG_DTM to 2
|
||||||
@ -92,11 +93,11 @@ Equ ACTION$SPEC_SURFSCAN_RECIPE TO 8
|
|||||||
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
||||||
Declare subroutine Dialog_Box, Msg, MemberOf, obj_WO_Mat, Get_Property, obj_React_Status, Get_Status, Override_Services
|
Declare subroutine Dialog_Box, Msg, MemberOf, obj_WO_Mat, Get_Property, obj_React_Status, Get_Status, Override_Services
|
||||||
Declare subroutine record_lock, obj_React_Status, Post_Event, obj_React_State, obj_Post_Log, Qa_Services, Reactor_Services
|
Declare subroutine record_lock, obj_React_Status, Post_Event, obj_React_State, obj_Post_Log, Qa_Services, Reactor_Services
|
||||||
Declare Subroutine Rds_Services
|
Declare Subroutine Rds_Services, WO_MAT_Services, Message_Box, Reactor_Log_Services, Schedule_Services
|
||||||
|
|
||||||
Declare function dialog_box, msg, Get_Status, obj_WO_Mat, Get_Status, obj_Clean_Insp, obj_Reactor, Get_Property
|
Declare function dialog_box, msg, Get_Status, obj_WO_Mat, Get_Status, obj_Clean_Insp, obj_Reactor, Get_Property
|
||||||
Declare function QA_Services, Database_Services, Set_Property, Rds_Services, Qa_Services, Memberof, Reactor_Services
|
Declare function QA_Services, Database_Services, Set_Property, Rds_Services, Qa_Services, Memberof, Reactor_Services
|
||||||
Declare function Supplement_Services
|
Declare function Supplement_Services, WO_MAT_Services, Message_Box, Reactor_Log_Services, Schedule_Services
|
||||||
|
|
||||||
SubclassInfo = Form_Services('FindSubclassControl')
|
SubclassInfo = Form_Services('FindSubclassControl')
|
||||||
Subclass = SubclassInfo<1>
|
Subclass = SubclassInfo<1>
|
||||||
@ -275,6 +276,47 @@ Event PUB_SIGN.CLICK()
|
|||||||
Valid = True$
|
Valid = True$
|
||||||
end
|
end
|
||||||
If (Valid EQ True$) then
|
If (Valid EQ True$) then
|
||||||
|
ReactorType = XLATE('RDS',RDSNo,'REACTOR_TYPE','X')
|
||||||
|
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
|
||||||
|
WoMatKey = WONo:'*':CassNo
|
||||||
|
IsLastCassetteInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
If IsLastCassetteInWo then
|
||||||
|
NextEventScheduled = False$
|
||||||
|
NextEventHasSamePsn = True$
|
||||||
|
NextEventIsBlock = False$
|
||||||
|
|
||||||
|
NextScheduledEvent = Schedule_Services('GetNextEvent', Reactor)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
NextEventScheduled = True$
|
||||||
|
|
||||||
|
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', Reactor)
|
||||||
|
NextEventIsBlock = Schedule_Services('NextEventIsBlock', Reactor)
|
||||||
|
end
|
||||||
|
|
||||||
|
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
|
||||||
|
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||||
|
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = True$
|
||||||
|
|
||||||
|
Message = ''
|
||||||
|
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
|
||||||
|
Message = 'No material scheduled. Test wafer required.'
|
||||||
|
end else if NextEventHasSamePsn EQ False$ then
|
||||||
|
Message = 'Next work order is a NEW PSN number. Test wafer required.'
|
||||||
|
end
|
||||||
|
|
||||||
|
MesageAcked = Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
|
||||||
|
|
||||||
|
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||||
|
|
||||||
|
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WONo : '], [Cassette:' : CassNo : ']'
|
||||||
|
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, @User4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
QA_Services('SignUnloadStage', RDSNo, @User4)
|
QA_Services('SignUnloadStage', RDSNo, @User4)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -377,6 +419,14 @@ Event PUB_SIGN.CLICK()
|
|||||||
end
|
end
|
||||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
||||||
|
|
||||||
|
WoMatKey = WONo:'*':CassNo
|
||||||
|
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||||
|
|
||||||
|
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = False$
|
||||||
|
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = False$
|
||||||
|
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||||
|
|
||||||
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
||||||
end else
|
end else
|
||||||
Return 0
|
Return 0
|
||||||
@ -395,3 +445,4 @@ return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,10 +46,10 @@ Common /ScanServices/ NotAcceptableReasons@, Unused2@, Unused3@, Unused4@, Unuse
|
|||||||
Declare Function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Rds_Services, Datetime
|
Declare Function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Rds_Services, Datetime
|
||||||
Declare Function QA_Services, Error_Services, Security_Services, SRP_Array, obj_WO_Mat, Memberof, Override_Log_Services
|
Declare Function QA_Services, Error_Services, Security_Services, SRP_Array, obj_WO_Mat, Memberof, Override_Log_Services
|
||||||
Declare Function Keyboard_Sim_Services, Environment_Services, Logging_Services, Reactor_Services, Supplement_Services
|
Declare Function Keyboard_Sim_Services, Environment_Services, Logging_Services, Reactor_Services, Supplement_Services
|
||||||
Declare function Test_Run_Services, Lot_Services
|
Declare function Test_Run_Services, Lot_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services
|
||||||
Declare Subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, QA_Services, Error_Services
|
Declare Subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, QA_Services, Error_Services
|
||||||
Declare Subroutine obj_WO_Mat_Log, Tool_Parms_Services, RDS_Services, Logging_Services, Supplement_Services
|
Declare Subroutine obj_WO_Mat_Log, Tool_Parms_Services, RDS_Services, Logging_Services, Supplement_Services
|
||||||
Declare Subroutine Test_Run_Services
|
Declare Subroutine Test_Run_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services
|
||||||
|
|
||||||
Equ CRLF$ to \0D0A\
|
Equ CRLF$ to \0D0A\
|
||||||
|
|
||||||
@ -537,6 +537,23 @@ Service ProcessScanData(ScanID, ScanJSON)
|
|||||||
ScansRow<SCANS.TEST_RUN_TYPE_ID$> = TestRunTypeId
|
ScansRow<SCANS.TEST_RUN_TYPE_ID$> = TestRunTypeId
|
||||||
//ScansRow<SCANS.TEST_RUN_TYPE_NAME$> = TestRunTypeName
|
//ScansRow<SCANS.TEST_RUN_TYPE_NAME$> = TestRunTypeName
|
||||||
|
|
||||||
|
Case Len(ScanData) GE 22 and ScanData[1, 22] EQ 'LAST_CASSETTE_TEST_ACK'
|
||||||
|
RDSNo = {CASSETTE_IDS}
|
||||||
|
Reactor = {TOOL_ID}[2,999]
|
||||||
|
|
||||||
|
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
|
||||||
|
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
||||||
|
WoMatKey = WO:'*':CassNo
|
||||||
|
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||||
|
|
||||||
|
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
|
||||||
|
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||||
|
|
||||||
|
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WO : '], [Cassette:' : CassNo : ']'
|
||||||
|
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, {EMPLOYEE_ID})
|
||||||
|
|
||||||
|
Result = 'Test wafer requirement acknowledged'
|
||||||
Case ScanData EQ ''
|
Case ScanData EQ ''
|
||||||
// Most likely receiving RDS data, so nothing to do here.
|
// Most likely receiving RDS data, so nothing to do here.
|
||||||
Null
|
Null
|
||||||
@ -722,7 +739,7 @@ Service ProcessScanData(ScanID, ScanJSON)
|
|||||||
SupplUnloadInstAckReq = True$
|
SupplUnloadInstAckReq = True$
|
||||||
end else
|
end else
|
||||||
SupplUnloadInstAckReq = False$
|
SupplUnloadInstAckReq = False$
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
SupplUnloadInstAckReq = False$
|
SupplUnloadInstAckReq = False$
|
||||||
end
|
end
|
||||||
@ -1737,6 +1754,52 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
|
|||||||
end else
|
end else
|
||||||
SupplUnloadInstAckReq = False$
|
SupplUnloadInstAckReq = False$
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
|
||||||
|
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
|
||||||
|
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
|
||||||
|
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
|
||||||
|
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
||||||
|
WoMatKey = WO:'*':CassNo
|
||||||
|
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||||
|
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
|
||||||
|
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
|
||||||
|
LastCassInWoTestWaferReqMsg = ''
|
||||||
|
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
|
||||||
|
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
||||||
|
|
||||||
|
If LastCassInWo then
|
||||||
|
NextEventScheduled = False$
|
||||||
|
NextEventHasSamePsn = True$
|
||||||
|
NextEventIsBlock = False$
|
||||||
|
|
||||||
|
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
NextEventScheduled = True$
|
||||||
|
|
||||||
|
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
|
||||||
|
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
|
||||||
|
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = LastCassInWoTestWaferAcked
|
||||||
|
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
|
||||||
|
|
||||||
|
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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReq', LastCassInWoTestWaferAckReq, 'Boolean')
|
||||||
|
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAcked', LastCassInWoTestWaferAcked, 'Boolean')
|
||||||
|
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReqMsg', LastCassInWoTestWaferReqMsg, 'String')
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
SupplUnloadInstAckReq = False$
|
SupplUnloadInstAckReq = False$
|
||||||
end
|
end
|
||||||
|
@ -36,6 +36,7 @@ $insert RLIST_EQUATES
|
|||||||
$insert REACTOR_EQUATES
|
$insert REACTOR_EQUATES
|
||||||
$insert SCHED_DET_NG_EQUATES
|
$insert SCHED_DET_NG_EQUATES
|
||||||
$insert WO_LOG_EQUATES
|
$insert WO_LOG_EQUATES
|
||||||
|
$Insert WO_MAT_EQUATES
|
||||||
$insert WO_SCHEDULE_NG_EQUATES
|
$insert WO_SCHEDULE_NG_EQUATES
|
||||||
$insert COMPANY_EQUATES
|
$insert COMPANY_EQUATES
|
||||||
$insert PROD_VER_EQUATES
|
$insert PROD_VER_EQUATES
|
||||||
@ -44,6 +45,7 @@ $insert SCHEDULE_EVENT_SUMMMARY_EQUATES
|
|||||||
$insert EPI_PART_EQUATES
|
$insert EPI_PART_EQUATES
|
||||||
$insert PROD_SPEC_EQUATES
|
$insert PROD_SPEC_EQUATES
|
||||||
$insert SCHED_HIST_EQUATES
|
$insert SCHED_HIST_EQUATES
|
||||||
|
$Insert RDS_EQUATES
|
||||||
|
|
||||||
Equ new_exist$ To 0 ; * Reduce Mode 0
|
Equ new_exist$ To 0 ; * Reduce Mode 0
|
||||||
Equ next_cur$ To 1
|
Equ next_cur$ To 1
|
||||||
@ -814,6 +816,61 @@ Service GetCurrentEvent(ReactNo)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service CurrentEventIsBlock(ReactNo)
|
||||||
|
If ReactNo NE '' then
|
||||||
|
CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo)
|
||||||
|
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
CurrentSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', CurrentSchedDetKey)
|
||||||
|
|
||||||
|
CurrentEventIsABlock = CurrentSchedDetRecord<SCHED_DET_NG.BLOCK_OUT$>
|
||||||
|
If CurrentEventIsABlock EQ '' then
|
||||||
|
CurrentEventIsABlock = False$
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = CurrentEventIsABlock
|
||||||
|
end else
|
||||||
|
Error = Error_Services('GetMessage')
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. ':Error
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
end service
|
||||||
|
|
||||||
|
Service GetNextEvent(ReactNo)
|
||||||
|
SchedDetKey = ''
|
||||||
|
If ReactNo NE '' then
|
||||||
|
CurrDTM = Datetime()
|
||||||
|
Query = 'SELECT SCHED_DET_NG WITH REACT_NO EQ "':ReactNo:'" AND WITH EVENT_COMP NE 1 BY START_DTM'
|
||||||
|
Set_Status(0)
|
||||||
|
GoSub ClearCursors
|
||||||
|
Rlist(Query, TARGET_ACTIVELIST$, '', '', '')
|
||||||
|
errCode = ''
|
||||||
|
If Not(Get_Status(errCode)) then
|
||||||
|
EOF = False$
|
||||||
|
ReadNext SchedDetKey else EOF = True$
|
||||||
|
If EOF EQ True$ then
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. No incomplete events in schedule'
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end else
|
||||||
|
ReadNext SchedDetKey else EOF = True$
|
||||||
|
If EOF EQ True$ then
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. No incomplete events in schedule after current event'
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end else
|
||||||
|
Response = SchedDetKey
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. Error code ':errCode
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
GoSub ClearCursors
|
||||||
|
end
|
||||||
|
end service
|
||||||
|
|
||||||
Service GetEngagedEvent(ReactNo)
|
Service GetEngagedEvent(ReactNo)
|
||||||
|
|
||||||
@ -861,6 +918,75 @@ Service GetLastEngagedEvent(ReactNo)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service NextEventIsSamePsn(ReactNo)
|
||||||
|
Response = False$
|
||||||
|
If ReactNo NE '' then
|
||||||
|
CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo)
|
||||||
|
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
CurrentEventIsABlock = Schedule_Services('CurrentEventIsBlock', ReactNo)
|
||||||
|
If CurrentEventIsABlock EQ False$ then
|
||||||
|
CurrentSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', CurrentSchedDetKey)
|
||||||
|
|
||||||
|
CurrentEventWoNo = CurrentSchedDetRecord<SCHED_DET_NG.WO_NO$>
|
||||||
|
CurrentEventWoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', CurrentEventWoNo:'*1')
|
||||||
|
|
||||||
|
CurrentEventRdsNo = CurrentEventWoMatRecord<WO_MAT_RDS_NO$>
|
||||||
|
CurrentEventRdsRecord = Database_Services('ReadDataRow', 'RDS', CurrentEventRdsNo)
|
||||||
|
|
||||||
|
CurrentEventPsn = CurrentEventRdsRecord<RDS_PROD_SPEC_ID$>
|
||||||
|
|
||||||
|
NextSchedDetKey = Schedule_Services('GetNextEvent', ReactNo)
|
||||||
|
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
NextEventIsABlock = Schedule_Services('NextEventIsBlock', ReactNo)
|
||||||
|
If NextEventIsABlock EQ False$ then
|
||||||
|
NextSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', NextSchedDetKey)
|
||||||
|
|
||||||
|
NextEventWoNo = NextSchedDetRecord<SCHED_DET_NG.WO_NO$>
|
||||||
|
NextEventWoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', NextEventWoNo:'*1')
|
||||||
|
|
||||||
|
NextEventRdsNo = NextEventWoMatRecord<WO_MAT_RDS_NO$>
|
||||||
|
NextEventRdsRecord = Database_Services('ReadDataRow', 'RDS', NextEventRdsNo)
|
||||||
|
|
||||||
|
NextEventPsn = NextEventRdsRecord<RDS_PROD_SPEC_ID$>
|
||||||
|
|
||||||
|
PsnsMatch = CurrentEventPsn EQ NextEventPsn
|
||||||
|
|
||||||
|
Response = PsnsMatch
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
end service
|
||||||
|
|
||||||
|
Service NextEventIsBlock(ReactNo)
|
||||||
|
If ReactNo NE '' then
|
||||||
|
NextSchedDetKey = Schedule_Services('GetNextEvent', ReactNo)
|
||||||
|
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
NextSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', NextSchedDetKey)
|
||||||
|
|
||||||
|
NextEventIsABlock = NextSchedDetRecord<SCHED_DET_NG.BLOCK_OUT$>
|
||||||
|
If NextEventIsABlock EQ '' then
|
||||||
|
NextEventIsABlock = False$
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = NextEventIsABlock
|
||||||
|
end else
|
||||||
|
Error = Error_Services('GetMessage')
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. ':Error
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||||
|
Error_Services('Add', ErrorMsg)
|
||||||
|
end
|
||||||
|
end service
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// AdjustScheduleEvents
|
// AdjustScheduleEvents
|
||||||
@ -3434,3 +3560,4 @@ CreateScheduleChangeNotification:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
42
LSL2/STPROC/TEST_WO_MAT_SERVICES.txt
Normal file
42
LSL2/STPROC/TEST_WO_MAT_SERVICES.txt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
Compile function Test_WO_MAT_SERVICES(@Test)
|
||||||
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
|
$Insert LOGICAL
|
||||||
|
|
||||||
|
Declare function WO_MAT_Services, Error_Services
|
||||||
|
Declare subroutine WO_MAT_Services, Error_Services
|
||||||
|
|
||||||
|
GotoTest
|
||||||
|
|
||||||
|
Error_Services('Clear')
|
||||||
|
|
||||||
|
Return TestResult or 1
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// TESTS
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Test CassetteIsLastInWoWithEmptyWoMatKeyShouldThrowError
|
||||||
|
WO_MAT_Services('CassetteIsLastInWo', '')
|
||||||
|
|
||||||
|
ErrorWasThrown = Error_Services('HasError')
|
||||||
|
|
||||||
|
Assert ErrorWasThrown equals True$
|
||||||
|
End Test
|
||||||
|
|
||||||
|
Test CassetteIsLastInWoWithFirstCassetteShouldReturnFalse
|
||||||
|
IsLastCassette = WO_MAT_Services('CassetteIsLastInWo', '173137*1')
|
||||||
|
|
||||||
|
Assert Error_Services('NoError')
|
||||||
|
|
||||||
|
Assert IsLastCassette EQ False$
|
||||||
|
end test
|
||||||
|
|
||||||
|
Test CassetteIsLastInWoWithLastCassetteShouldReturnTrue
|
||||||
|
IsLastCassette = WO_MAT_Services('CassetteIsLastInWo', '173137*66')
|
||||||
|
|
||||||
|
Assert Error_Services('NoError')
|
||||||
|
|
||||||
|
Assert IsLastCassette EQ True$
|
||||||
|
end test
|
||||||
|
|
@ -7,6 +7,7 @@ Declare subroutine Error_Services, SRP_Json, SRP_Com, Wo_Mat_Services, Database_
|
|||||||
$insert LOGICAL
|
$insert LOGICAL
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$insert WO_MAT_EQUATES
|
$insert WO_MAT_EQUATES
|
||||||
|
$Insert WO_LOG_EQUATES
|
||||||
$Insert SERVICE_SETUP
|
$Insert SERVICE_SETUP
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_Mat\InvActionsSyncUp'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_Mat\InvActionsSyncUp'
|
||||||
@ -17,7 +18,9 @@ Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'Missing Signature' : @FM :
|
|||||||
objSyncLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
objSyncLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
|
|
||||||
GoToService
|
GoToService else
|
||||||
|
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
|
||||||
|
end
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
@ -373,6 +376,51 @@ Service SyncWOMatInvActionsAndSigProfile(WOMatKey)
|
|||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service CassetteIsLastInWo(WoMatKey)
|
||||||
|
IsLastInWo = False$
|
||||||
|
|
||||||
|
If Unassigned(WoMatKey) or WoMatKey EQ '' or RowExists('WO_MAT', WoMatKey) NE True$ then
|
||||||
|
Error_Services('Add', 'invalid WO_MAT key')
|
||||||
|
end
|
||||||
|
|
||||||
|
WO = Field(WoMatKey, '*', 1)
|
||||||
|
If WO EQ '' then
|
||||||
|
Error_Services('Add', 'WO# not found in WO_MAT record')
|
||||||
|
end
|
||||||
|
If Error_Services('NoError') and Num(WO) EQ False$ then
|
||||||
|
Error_Services('Add', 'WO# is not numeric')
|
||||||
|
end
|
||||||
|
|
||||||
|
CassNo = Field(WoMatKey, '*', 2)
|
||||||
|
If Error_Services('NoError') and CassNo EQ '' then
|
||||||
|
Error_Services('Add', 'Cassette# not found in WO_MAT record')
|
||||||
|
end
|
||||||
|
If Error_Services('NoError') and Num(CassNo) EQ False$ then
|
||||||
|
Error_Services('Add', 'Cassette# is not numeric')
|
||||||
|
end
|
||||||
|
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
WoMatKeys = Xlate('WO_LOG', WO, WO_LOG_WO_MAT_KEY$, 'X')
|
||||||
|
If Error_Services('NoError') and WoMatKeys NE '' then
|
||||||
|
TotalCassettes = DCount(WoMatKeys, @VM)
|
||||||
|
IsLastInWo = TotalCassettes EQ CassNo
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
If Error_Services('HasError') then
|
||||||
|
ErrMsg = Error_Services('GetMessage')
|
||||||
|
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDtm
|
||||||
|
LogData<2> = WOMatKey
|
||||||
|
LogData<3> = ''
|
||||||
|
LogData<4> = ''
|
||||||
|
LogData<5> = 'Error in ' : Service:': ' : ErrMsg
|
||||||
|
Logging_Services('AppendLog', objSyncLog, LogData, @RM, @FM)
|
||||||
|
|
||||||
|
Error_Services('Add', ErrMsg)
|
||||||
|
end
|
||||||
|
|
||||||
|
Response = IsLastInWo
|
||||||
|
end service
|
||||||
|
|
||||||
|
@ -152,4 +152,6 @@ Equ WO_MAT_CURR_STATUS_STATIC$ To 143
|
|||||||
Equ WO_MAT_FAILED_WAFERS$ To 144
|
Equ WO_MAT_FAILED_WAFERS$ To 144
|
||||||
Equ WO_MAT_LOCKED_BY$ To 145
|
Equ WO_MAT_LOCKED_BY$ To 145
|
||||||
Equ WO_MAT_CONVERTED_MATERIAL$ To 146
|
Equ WO_MAT_CONVERTED_MATERIAL$ To 146
|
||||||
|
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$ To 147
|
||||||
|
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user