109 lines
4.3 KiB
Plaintext
109 lines
4.3 KiB
Plaintext
Compile function OPERATION_TW_CREATE(LotId, Action, Operator)
|
|
//Action: IN, OUT, PROCESS
|
|
Declare function Lot_Services, Error_Services, Datetime, Database_Services
|
|
Declare subroutine Database_Services, Lot_Services
|
|
|
|
#pragma precomp SRP_PreCompiler
|
|
$insert LOGICAL
|
|
$Insert APP_INSERTS
|
|
$Insert Lot_Operation_Equates
|
|
$Insert LOT_EQUATES
|
|
|
|
Success = False$
|
|
debug
|
|
If RowExists('LOT', LotId) then
|
|
If Operator NE '' and RowExists('LSL_USERS', Operator) then
|
|
Begin Case
|
|
Case Action = 'IN'
|
|
GoSub MoveIn
|
|
Case Action = 'OUT'
|
|
GoSub MoveOut
|
|
Case Action = 'PROCESS'
|
|
GoSub Process
|
|
Case Otherwise$
|
|
null
|
|
End Case
|
|
end else
|
|
Error_Services('Add', 'Operator ID was null')
|
|
end
|
|
end else
|
|
Error_Services('Add', 'Invalid lot passed to Operation routine.')
|
|
Success = False$
|
|
end
|
|
|
|
Return Success
|
|
|
|
|
|
MoveIn:
|
|
debug
|
|
//Get TW Create Operation ID
|
|
ThisOperationID = Lot_Services('GetLotCurrOperationId', LotId)
|
|
If Field(ThisOperationId, '*', 1) EQ 'TW_CREATE' then
|
|
ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisOperationID)
|
|
ThisLotCurrOperationRec<LOT_OPERATION_DATETIME_IN$> = Datetime()
|
|
ThisLotCurrOperationRec<LOT_OPERATION_WAFER_IN_QTY$> = Xlate('LOT', LotId, LOT_WAFER_QTY$, 'X')
|
|
ThisLotCurrOperationRec<LOT_OPERATION_OPERATOR_IN_ID$> = Operator
|
|
Database_Services('WriteDataRow', 'LOT_OPERATION', ThisLotCurrOperationID, ThisOperationID)
|
|
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)
|
|
end
|
|
end else
|
|
Error_Services('Add', 'Failed to move in lot. Lot is not currently at TW_CREATE. Detected Operation is ' : Field(ThisOperationId, '*', 1))
|
|
end
|
|
|
|
return
|
|
|
|
MoveOut:
|
|
ThisOperationID = Lot_Services('GetLotCurrOperationID', LotId)
|
|
If Field(ThisOperationId, '*', 1) EQ 'TW_CREATE' then
|
|
ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisLotCurrOperationID)
|
|
LotMovedIn = ThisLotCurrOperationRec<LOT_OPERATION_DATETIME_IN$>
|
|
If LotMovedIn then
|
|
ThisOperationSteps = ThisLotCurrOperationRec<LOT_OPERATION_STEPS$>
|
|
AllStepsCompleted = False$
|
|
for each OperationStepId in ThisOperationSteps using @VM
|
|
ThisStepComplete = Xlate('LOT_OPERATION_STEP', OperationStepId, LOT_OPERATION_STEP_STEP_COMPLETED$, 'X')
|
|
If ThisStepComplete then
|
|
AllStepsComplete = True$
|
|
end else
|
|
AllStepsComplete = False$
|
|
end
|
|
until AllStepsCompleted = False$
|
|
Next OperationStep
|
|
If AllStepsCompleted then
|
|
ThisLotCurrOperationRec<LOT_OPERATION_DATETIME_OUT$> = Datetime()
|
|
ThisLotCurrOperationRec<LOT_OPERATION_WAFER_OUT_QTY$> = Xlate('LOT', LotId, LOT_WAFER_QTY$, 'X')
|
|
ThisLotCurrOperationRec<LOT_OPERATION_OPERATOR_OUT_ID$> = Operator
|
|
Database_Services('WriteDataRow', 'LOT_OPERATION', ThisLotCurrOperationID, ThisLotCurrOperationRec)
|
|
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)
|
|
end
|
|
end else
|
|
Error_Services('Add', 'Failed to move out lot. Not all steps completed.')
|
|
end
|
|
end else
|
|
Error_Services('Add', 'Failed to move out lot. Lot was not moved in.')
|
|
end
|
|
end
|
|
return
|
|
|
|
Process:
|
|
//Get Current Step and proceed from that step onward
|
|
return
|
|
|
|
OpenLot:
|
|
|
|
return
|
|
|
|
PrintLabel:
|
|
|
|
return
|
|
|
|
|
|
|
|
|