open-insight/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt
Ouellette Jonathan (CSC FI SPS MESLEO) 4037b2fa45 Merged PR 15668: Refactored Lot Event
Refactored Lot Event methods.
1. Moved all lot event methods to a new LOT_EVENT_SERVICES service module.
2. Simplified CreateLotEvent routine
3. Updated all calling stored procedures.
2025-04-28 21:02:24 +02:00

115 lines
5.2 KiB
Plaintext

Compile function NDW_VIEW_LOT_EVENTS(CtrlEntId, Event, @PARAMS)
#pragma precomp SRP_PreCompiler
#window NDW_VIEW_LOT
Declare function Get_Property, Lot_Services, Database_Services, Lot_Event_Services
Declare subroutine Set_Property
$Insert APP_INSERTS
$Insert LOT_EQUATES
$Insert LOT_OPERATION_EQUATES
$Insert LOT_EVENT_EQUATES
GoToEvent Event for CtrlEntId else
// Event not implemented
end
Return EventFlow or 1
//-----------------------------------------------------------------------------
// EVENT HANDLERS
//-----------------------------------------------------------------------------
Event WINDOW.CREATE(CreateParam)
GoSub SetupFormControls
End Event
Event EDL_LOT_ID.LOSTFOCUS(Flag, FocusID)
GoSub GetLot
end event
Event PUB_SEARCH_LOT.CLICK()
GoSub GetLot
end event
//-----------------------------------------------------------------------------
// INTERNAL GO-SUBS
//-----------------------------------------------------------------------------
SetupFormControls:
EditLineFont = Get_Property(@Window : '.EDL_LOT_ID', 'FONT')
EditLineFont<1,1,2> = -20
EditLineFont<1,1,6> = 10
Set_Property(@Window : '.EDL_LOT_ID', 'FONT', EditLineFont)
Set_Property(@Window : '.LBL_LOT_ID', 'FONT', EditLineFont)
Set_Property(@Window : '.EDL_CURR_OPERATION', 'FONT', EditLineFont)
return
GetLot:
//Get Lot
LotIdText = Get_Property(@Window : '.EDL_LOT_ID', 'TEXT')
If LotIdText[1, 2] EQ '1T' then
LotIdText[1,2] = ''
end
Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', LotIdText)
If RowExists('LOT', LotIdText) then
ThisLotId = LotIdText
ThisLotRec = Database_Services('ReadDataRow', 'LOT', ThisLotId)
ThisLotCurrOperationID = Lot_Services('GetLotCurrOperationId', ThisLotId)
ThisLotCurrOperationName = Xlate('LOT_OPERATION', ThisLotCurrOperationId, LOT_OPERATION_OPERATION_ID$, 'X')
ThisLotCurrWaferQty = Database_Services('ReadDataColumn', 'LOT', ThisLotId, LOT_WAFER_QTY$, True$, 0, False$)
ThisLotMostRecentEventId = ThisLotRec<LOT_MOST_RECENT_LOT_EVENT_ID$>
ThisLotMostRecentEventDtm = XLATE('LOT_EVENT', ThisLotMostRecentEventId, LOT_EVENT_EVENT_DATETIME$, 'X')
//Lot Operation Status'
LotOperationsInSequence = Lot_Services('GetLotOperationSequence', ThisLotId)
LotOperationTableData = ''
For each LotOperation in LotOperationsInSequence using @FM setting dPos
LotOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', LotOperation)
LotOperationTableData<1, -1> = LotOperationRec<LOT_OPERATION_OPERATION_ID$>
LotOperationTableData<2, -1> = LotOperationRec<LOT_OPERATION_OPERATOR_IN_ID$>
LotOperationTableData<3, -1> = Oconv(LotOperationRec<LOT_OPERATION_DATETIME_IN$>, 'DT')
LotOperationTableData<4, -1> = LotOperationRec<LOT_OPERATION_WAFER_IN_QTY$>
LotOperationTableData<5, -1> = LotOperationRec<LOT_OPERATION_OPERATOR_OUT_ID$>
LotOperationTableData<6, -1> = Oconv(LotOperationRec<LOT_OPERATION_DATETIME_OUT$>, 'DT')
LotOperationTableData<7, -1> = LotOperationRec<LOT_OPERATION_WAFER_OUT_QTY$>
Next LotOperation
//Lot Event Status'
LotEventsInSequence = Lot_Event_Services('GetLotEventsInSequence', ThisLotId)
LotEventTableData = ''
For each LotEvent in LotEventsInSequence using @FM
LotEventRec = Database_Services('ReadDataRow', 'LOT_EVENT', LotEvent)
ThisEventSequence = LotEventRec<LOT_EVENT_SEQUENCE$>
LotEventTableData<1, ThisEventSequence> = OConv(LotEventRec<LOT_EVENT_EVENT_DATETIME$>, 'DT')
LotEventTableData<2, ThisEventSequence> = LotEventRec<LOT_EVENT_LOT_EVENT_TYPE$>
LotEventTableData<3, ThisEventSequence> = LotEventRec<LOT_EVENT_EVENT_OPERATOR_ID$>
ThisLotEventOperationName = Field(LotEventRec<LOT_EVENT_EVENT_OPERATION_ID$>, '*', 2)
LotEventTableData<4, ThisEventSequence> = ThisLotEventOperationName
LotEventTableData<5, ThisEventSequence> = LotEventRec<LOT_EVENT_EVENT_NOTE$>
Next LotEvent
//Fill form
Set_Property(@Window : '.EDL_CURR_OPERATION', 'TEXT', ThisLotCurrOperationName)
Set_Property(@Window : '.EDL_CURR_WAFER_QTY', 'TEXT', ThisLotCurrWaferQty)
Set_Property(@Window : '.EDT_LOT_OPERATIONS', 'ARRAY', LotOperationTableData)
Set_Property(@Window : '.EDT_LOT_EVENTS', 'ARRAY', LotEventTableData)
Set_Property(@Window : '.EDL_MOST_RECENT_EVENT_DTM', 'TEXT', OConv(ThisLotMostRecentEventDtm, 'DT'))
end else
//Error: Lot did not exist
end
return
ResetForm:
Set_Property(@Window : '.EDL_CURR_OPERATION', 'TEXT', '')
Set_Property(@Window : '.EDL_CURR_WAFER_QTY', 'TEXT', '')
Set_Property(@Window : '.EDL_MOST_RECENT_EVENT_DTM', 'TEXT', '')
Set_Property(@Window : '.EDT_LOT_OPERATIONS', 'ARRAY', '')
Set_Property(@Window : '.EDT_LOT_EVENTS', 'ARRAY', '')
return