First final commit
This commit is contained in:
parent
f143b3e60c
commit
e4cca79a08
@ -145,3 +145,4 @@ CreateHALItem:
|
||||
end
|
||||
|
||||
return
|
||||
|
||||
|
@ -29,7 +29,6 @@ Return Response or ""
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Service PrintLabel(ZPLString, PrinterId)
|
||||
debug
|
||||
SuccessfulPrint = False$
|
||||
ErrorMessage = ''
|
||||
If PrinterId EQ '' then
|
||||
@ -174,3 +173,4 @@ end service
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' L
|
||||
Headers = 'Logging DTM' : @FM : 'Lot Id' : @FM : 'Event Type' : @FM : 'Operator' : @FM : 'Begin Wafer Qty' : @FM : 'End Wafer Qty' : @FM : 'Bonus Wafer Qty' : @FM : 'Reduce Wafer Qty' : @FM : 'Message'
|
||||
objLotEventLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
||||
|
||||
Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE'
|
||||
Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE', 'CLOSE'
|
||||
Options LOT_TYPES = 'TW', 'RDS', 'WM_OUT', 'WM_IN'
|
||||
|
||||
GoToService
|
||||
@ -47,7 +47,6 @@ Service GenerateNewLotId(LotType)
|
||||
GeneratedLotID = ''
|
||||
Begin Case
|
||||
Case LotType EQ 'TW'
|
||||
|
||||
Loop
|
||||
Until ValidLotNum EQ True$
|
||||
LotPrefix = 'TW'
|
||||
@ -80,8 +79,6 @@ end service
|
||||
|
||||
|
||||
Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID, LotId)
|
||||
; //649491 , 03M6241, 814474, SP
|
||||
debug
|
||||
CreatedLotNumber = ''
|
||||
ErrorMessage = ''
|
||||
Begin Case
|
||||
@ -138,11 +135,10 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo
|
||||
//Get Curr Operation(Should be first one in sequence)
|
||||
ThisLotCurrOpId = Lot_Services('GetLotCurrOperationId', CreatedLotNumber)
|
||||
If ThisLotCurrOpId NE '' then
|
||||
Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move Lot in.', '', 0, 0, ThisLotCurrOpId, Username)
|
||||
//Lot_Services('MoveInLot', NewLotId, Username)
|
||||
Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move Lot in.', '', 0, 0, ThisLotCurrOpId, Username)
|
||||
if Error_Services('NoError') then
|
||||
//Set lot to open
|
||||
Lot_Services('OpenLot', CreatedLotNumber)
|
||||
Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'OPEN', 'Setting lot to open.', '', 0, 0, '', Username)
|
||||
if Error_Services('NoError') then
|
||||
If PrinterID NE 'WEB' then
|
||||
//If PrinterID is set to WEB this means the request comes from OI_Wizard and the client is going to handle printing.
|
||||
@ -166,12 +162,19 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo
|
||||
ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage')
|
||||
end
|
||||
end else
|
||||
//Close LOT record as there was an error
|
||||
Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM')
|
||||
ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage')
|
||||
end
|
||||
end else
|
||||
//Close LOT record as there was an error
|
||||
Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM')
|
||||
ErrorMessage = 'Error in Create New Test Wafer Lot Process, error getting current operation for lot: ' : NewLotId
|
||||
end
|
||||
end else
|
||||
//Close LOT record as there was an error
|
||||
//Database_Services('DeleteDataRow', 'LOT', NewLotId, True$, False$)
|
||||
Lot_Services('CreateLotEvent', NewLotId, 'TW', Datetime(), 'CLOSE', 'Error occured while created lot. Automatically setting to close', '', 0, 0, '', 'SYSTEM')
|
||||
ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage')
|
||||
end
|
||||
end
|
||||
@ -208,13 +211,13 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo
|
||||
LogData<4> = 'Successfully created lot id ' : CreatedLotNumber : ' of product type ' : ProdName '.'
|
||||
Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$)
|
||||
end else
|
||||
Error_Services('Add', ErrorMessage)
|
||||
LogData = ''
|
||||
LogData<1> = LoggingDTM
|
||||
LogData<2> = ProdName
|
||||
LogData<3> = Username
|
||||
LogData<4> = ErrorMessage
|
||||
Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$)
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end
|
||||
Response = CreatedLotNumber
|
||||
|
||||
@ -565,7 +568,6 @@ Service IsLotMovedIn(LotId)
|
||||
end service
|
||||
|
||||
Service MoveInLot(LotID, Operator)
|
||||
debug
|
||||
ErrorMessage = ''
|
||||
ThisLotCurrOperationID = ''
|
||||
If LotId NE '' then
|
||||
@ -584,7 +586,6 @@ Service MoveInLot(LotID, Operator)
|
||||
If Error_Services('NoError') then
|
||||
LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X')
|
||||
CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X')
|
||||
//Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_IN', '', '', 0, 0, CurrOperation, Operator)
|
||||
If Error_Services('HasError') then
|
||||
ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage')
|
||||
end
|
||||
@ -632,7 +633,6 @@ Service MoveOutLot(LotID, Operator)
|
||||
If Error_Services('NoError') then
|
||||
LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X')
|
||||
CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X')
|
||||
//Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_OUT', '', '', ReduceQty, BonusQty, CurrOperation, Operator)
|
||||
If Error_Services('HasError') then
|
||||
ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage')
|
||||
end
|
||||
@ -745,7 +745,15 @@ Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_
|
||||
Case EventType EQ 'LOCATION'
|
||||
//Do nothing for now.
|
||||
Case EventType EQ 'CLOSE'
|
||||
//Do nothing for now.
|
||||
Lot_Services('CloseLot', LotId)
|
||||
If Error_Services('HasError') then
|
||||
ErrorMessage = 'Error in Create Lot Event routine, ' : Error_Services('GetMessage')
|
||||
end
|
||||
Case EventType EQ 'OPEN'
|
||||
Lot_Services('OpenLot', LotId)
|
||||
If Error_Services('HasError') then
|
||||
ErrorMessage = 'Error in Create Lot Event routine, ' : Error_Services('GetMessage')
|
||||
end
|
||||
Case Otherwise$
|
||||
ErrorMessage = 'Error in Create Lot Event routine, event type of ' : EventType : ' passed to routine is not valid for a lot of type TW.'
|
||||
End Case
|
||||
|
@ -168,7 +168,6 @@ Event PUB_CLEAR.CLICK()
|
||||
end event
|
||||
|
||||
Event PUB_SUBMIT.CLICK()
|
||||
debug
|
||||
NotReadyReason = ''
|
||||
//Gather all field information
|
||||
ReasonForTest = Get_Property(@Window : '.CMB_TEST_TYPE', 'TEXT')
|
||||
|
@ -104,4 +104,11 @@ GetLot:
|
||||
end
|
||||
return
|
||||
|
||||
ResetForm:
|
||||
Set_Property(@Window : '.EDL_CURR_OPERATION', 'TEXT', '')
|
||||
Set_Property(@Window : '.EDL_CURR_WAFER_QTY', 'TEXT', '')
|
||||
Set_Property(@Window : '.EDT_LOT_OPERATIONS', 'ARRAY', '')
|
||||
Set_Property(@Window : '.EDT_LOT_EVENTS', 'ARRAY', '')
|
||||
return
|
||||
|
||||
|
||||
|
@ -526,7 +526,7 @@ Service ProcessScanData(ScanID, ScanJSON)
|
||||
TWLotQuantity = Field(ScanData, '|', 3)
|
||||
ThisScanTWLots = ScansRow<SCANS.TW_LOT_ID$>
|
||||
Locate TWLot in ThisScanTWLots using @VM setting twPOS then
|
||||
ScansRow<SCANS.TW_LOT_QTY$> = TWLotQuantity
|
||||
ScansRow<SCANS.TW_LOT_QTY$, twPos> = TWLotQuantity
|
||||
end
|
||||
Case ScanData[1, 17] EQ 'TESTRUNTYPEUPDATE'
|
||||
TestRunTypeId = Field(ScanData, '|', 2)
|
||||
@ -618,9 +618,37 @@ Service ProcessScanData(ScanID, ScanJSON)
|
||||
// working with an RDS and not a WM_IN or WM_OUT cassette ID. They are not used during the
|
||||
// "RDS" process.
|
||||
|
||||
If (CassetteIDs NE '') then
|
||||
If (CassetteIDs NE '') then
|
||||
TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$>
|
||||
Abort = False$
|
||||
If TestWaferLotData NE '' then
|
||||
ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
|
||||
If ThisTestRunType NE '' then
|
||||
for each TWLot in TestWaferLotData using @VM setting twPOS
|
||||
If ScansRow<SCANS.TW_LOT_QTY$, twPOS> NE '' OR ScansRow<SCANS.TW_LOT_QTY$, twPOS> GT 0 then
|
||||
TWLotCurrOperation = Lot_Services('GetLotCurrOperationName', TWLot)
|
||||
If TWLotCurrOperation NE 'TW_CREATE' AND TWLotCurrOperation NE 'TW_CLOSE' then
|
||||
TWLotCurrOpen = Database_Services('ReadDataColumn', 'LOT', TWLot, LOT_OPEN$, True$, 0, False$)
|
||||
If Not(TWLotCurrOpen) then
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.')
|
||||
end
|
||||
end else
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is currently at ':TWLotCurrOperation:' and cannot be used at this time.')
|
||||
end
|
||||
end else
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' must have a quantity associated with it.')
|
||||
end
|
||||
Until Abort
|
||||
Next TWLot
|
||||
end
|
||||
end else
|
||||
Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.')
|
||||
end
|
||||
// Ensure only one cassette is scanned
|
||||
If (NumCass EQ 1) then
|
||||
If (NumCass EQ 1) AND Not(Abort) then
|
||||
CassetteID = CassetteIDs<0, NumCass>
|
||||
// Ensure we are working with an RDS and not a WM_OUT/WM_IN cassette
|
||||
If (Count(CassetteID, '.') EQ 0) then
|
||||
@ -1041,20 +1069,38 @@ Service ProcessScanData(ScanID, ScanJSON)
|
||||
end
|
||||
end else
|
||||
If ScansRow<SCANS.TW_LOT_ID$> NE '' then
|
||||
//Test Wafer Lot Loading
|
||||
TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$>
|
||||
Abort = False$
|
||||
for each TWLot in TestWaferLotData using @VM setting twPOS
|
||||
If ScansRow<SCANS.TW_LOT_QTY$, twPOS> EQ '' OR ScansRow<SCANS.TW_LOT_QTY$, twPOS> LE 0 then
|
||||
Scan_Services('AddNotAcceptableReason', 'Each test wafer lot logged must have a quantity associated with it.')
|
||||
end else
|
||||
ThisUser = ScansRow<SCANS.EMPLOYEE_ID$>
|
||||
If Not(RowExists('LSL_USERS', ThisUser)) then
|
||||
Scan_Services('AddNotAcceptableReason', 'A User ID Scan is required to log test wafer usage.')
|
||||
end
|
||||
end
|
||||
Until False$
|
||||
Next TWLot
|
||||
ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
|
||||
ThisUser = ScansRow<SCANS.EMPLOYEE_ID$>
|
||||
If ThisTestRunType NE '' then
|
||||
If RowExists('LSL_USERS', ThisUser) then
|
||||
TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$>
|
||||
Abort = False$
|
||||
for each TWLot in TestWaferLotData using @VM setting twPOS
|
||||
If ScansRow<SCANS.TW_LOT_QTY$, twPOS> NE '' OR ScansRow<SCANS.TW_LOT_QTY$, twPOS> GT 0 then
|
||||
TWLotCurrOperation = Lot_Services('GetLotCurrOperationName', TWLot)
|
||||
If TWLotCurrOperation NE 'TW_CREATE' AND TWLotCurrOperation NE 'TW_CLOSE' then
|
||||
TWLotCurrOpen = Database_Services('ReadDataColumn', 'LOT', TWLot, LOT_OPEN$, True$, 0, False$)
|
||||
If Not(TWLotCurrOpen) then
|
||||
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.')
|
||||
end
|
||||
end else
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is currently at ':TWLotCurrOperation:' and cannot be used at this time.')
|
||||
end
|
||||
end else
|
||||
Abort = True$
|
||||
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' must have a quantity associated with it.')
|
||||
end
|
||||
Until Abort
|
||||
Next TWLot
|
||||
end else
|
||||
Scan_Services('AddNotAcceptableReason', 'A User ID Scan is required to log test wafer usage.')
|
||||
end
|
||||
end else
|
||||
Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.')
|
||||
end
|
||||
end else
|
||||
Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.')
|
||||
end
|
||||
@ -1295,16 +1341,48 @@ Service AcceptScan(ScanID, ScanJSON)
|
||||
// Check if both the PRE and LOAD stages are ready to sign
|
||||
PreStageSigned = False$
|
||||
LoadStageSigned = False$
|
||||
PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1)
|
||||
If PreStageSigned EQ True$ then
|
||||
LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1)
|
||||
//Log test wafer usage here
|
||||
If TestWaferLots NE '' then
|
||||
Continue = False$
|
||||
ToolID = ScansRow<SCANS.TOOL_ID$>
|
||||
Reactor = ToolID[-1, 'BR']
|
||||
Username = ScansRow<SCANS.EMPLOYEE_ID$>
|
||||
TestWaferLotQtys = ScansRow<SCANS.TW_LOT_QTY$>
|
||||
PSNo = Database_Services('ReadDataColumn', 'RDS', RDSNo, RDS_PROD_SPEC_ID$, True$, 0, False$)
|
||||
NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'R', Reactor, PSNo, RDSNo,Username , TestWaferLots, TestWaferLotQtys)
|
||||
If Error_Services('NoError') then
|
||||
Continue = True$
|
||||
end else
|
||||
ErrorMessage = Error_Services('GetMessage')
|
||||
Error_Services('Set', ErrorMessage)
|
||||
Continue = False$
|
||||
end
|
||||
If Continue then
|
||||
PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1)
|
||||
If PreStageSigned EQ True$ then
|
||||
LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1)
|
||||
end
|
||||
If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then
|
||||
Result = '(':CassetteID:') Load stage signed.'
|
||||
end
|
||||
LogData<6> = Action
|
||||
LogData<7> = Result
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||
end
|
||||
|
||||
end else
|
||||
PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1)
|
||||
If PreStageSigned EQ True$ then
|
||||
LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1)
|
||||
end
|
||||
If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then
|
||||
Result = '(':CassetteID:') Load stage signed.'
|
||||
end
|
||||
LogData<6> = Action
|
||||
LogData<7> = Result
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||
end
|
||||
If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then
|
||||
Result = '(':CassetteID:') Load stage signed.'
|
||||
end
|
||||
LogData<6> = Action
|
||||
LogData<7> = Result
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||
|
||||
Case CurrStage _EQC 'LOAD'
|
||||
Action = 'LOAD'
|
||||
// Check if LOAD stage is ready to sign
|
||||
@ -1333,13 +1411,12 @@ Service AcceptScan(ScanID, ScanJSON)
|
||||
Error_Services('Set', '(':CassetteID:') The ':CurrStage:' is not currently supported by the barcode application.')
|
||||
End Case
|
||||
Case CassetteID EQ '' AND TestWaferLots NE ''
|
||||
debug
|
||||
//Tool scan with ONLY test wafers being logged.
|
||||
ToolID = ScansRow<SCANS.TOOL_ID$>
|
||||
Reactor = ToolID[-1, 'BR']
|
||||
Username = ScansRow<SCANS.EMPLOYEE_ID$>
|
||||
TestWaferLotQtys = ScansRow<SCANS.TW_LOT_QTY$>
|
||||
NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'REACTOR', Reactor, '', '',Username , TestWaferLots, TestWaferLotQtys)
|
||||
NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'R', Reactor, '', '',Username , TestWaferLots, TestWaferLotQtys)
|
||||
If Error_Services('HasError') then
|
||||
ErrorMessage = Error_Services('GetMessage')
|
||||
Error_Services('Set', ErrorMessage)
|
||||
|
Loading…
x
Reference in New Issue
Block a user