open-insight/LSL2/STPROC/NDW_ADJUST_LOT_QTY_EVENTS.txt
Ouellette Jonathan (CSC FI SPS MESLEO) 4e213ff253 Merged PR 17284: Added call to CreateLotEvent routine on successful
Added call to CreateLotEvent routine on successful
completion of a lot qty adjustment to mark it as
as manual adjustment.
2025-05-21 23:53:18 +02:00

186 lines
6.8 KiB
Plaintext

Compile function NDW_ADJUST_LOT_QTY_EVENTS(CtrlEntId, Event, @PARAMS)
#pragma precomp SRP_PreCompiler
#window NDW_ADJUST_LOT_QTY
Declare function MemberOf, Database_Services, Error_Services, Datetime
Declare subroutine PlaceDialog, Database_Services, Lot_Services, Lot_Event_Services
$Insert App_Inserts
$Insert Lot_Equates
GoToEvent Event for CtrlEntId else
// Event not implemented
end
Return EventFlow or 1
//-----------------------------------------------------------------------------
// EVENT HANDLERS
//-----------------------------------------------------------------------------
Event WINDOW.CREATE(CreateParam)
PermissionAllowed = False$
Begin Case
Case MemberOf(@User4, 'ENGINEERING')
PermissionAllowed = True$
Case MemberOf(@User4, 'LEAD')
PermissionAllowed = True$
Case MemberOf(@User4, 'SUPERVISOR')
PermissionAllowed = True$
Case MemberOf(@User4, 'OI_ADMIN')
PermissionsAllowed = True$
Case Otherwise$
PermissionAllowed = False$
End Case
If PermissionAllowed then
PlaceDialog(-2, -2)
Set_Property(@Window, 'VISIBLE', 1)
LotNo = CreateParam
If LotNo NE '' then
GoSub GetLotCurrData
end else
Set_Property(@Window : '.PUB_SEARCH_LOT', 'VISIBLE', True$)
end
end else
msg(@Window, 'Only Lead, Supervisors, or engineering may adjust lot quantities')
Result = ''
Result<1> = False$
End_Dialog(@Window, Result)
end
End Event
Event Window.CLOSE(CancelFlag, CloseFlags)
Result = ''
Result<1> = False$
End_Dialog(@Window, Result)
end event
Event EDL_NEW_LOT_WFR_QTY.CHANGED(NewLotQty)
NewLotQty = Get_Property(@Window : '.EDL_NEW_LOT_WFR_QTY', 'TEXT')
If NewLotQty NE '' then
If Num(NewLotQty) then
If NewLotQty LE 25 AND NewLotQty GE 0 then
Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', True$)
end else
msg(@Window, 'New wafer quantity value must be a number between 0 and 25.')
Set_Property(@Window : '.EDL_NEW_LOT_WFR_QTY', 'TEXT', '')
end
end else
If NewLotQty NE '' then
msg(@Window, 'New wafer quantity value must be a number between 0 and 25.')
end
end
end
end event
Event EDL_LOT_NO.CHANGED(LotNo)
LotNo = Get_Property(@Window : '.EDL_LOT_NO', 'TEXT')
If LotNo[1, 4] EQ '1T' then
LotNo = LotNo[3, 999]
Set_Property(@Window : '.EDL_LOT_NO', 'TEXT', LotNo)
end
end event
Event EDL_LOT_NO.LOSTFOCUS(Flag, FocusID)
Set_Property(@Window : '.EDL_CURR_WFR_QTY', 'TEXT', '')
Set_Property(@Window : '.EDL_NEW_LOT_WFR_QTY', 'TEXT', '')
LotNo = Get_Property(@Window : '.EDL_LOT_NO', 'TEXT')
If LotNo[1, 4] EQ '1T' then
LotNo = LotNo[3, 999]
Set_Property(@Window : '.EDL_LOT_NO', 'TEXT', LotNo)
end
If RowExists('LOT', LotNo) then
GoSub GetLotCurrData
end
end event
Event PUB_SEARCH_LOT.CLICK()
LotNo = Get_Property(@Window : '.EDL_LOT_NO', 'TEXT')
If LotNo NE '' then
GoSub GetLotCurrData
end
end event
Event PUB_SUBMIT.CLICK()
LotId = Get_Property(@Window : '.EDL_LOT_NO', 'TEXT')
NewWfrQty = Get_Property(@Window : '.EDL_NEW_LOT_WFR_QTY', 'TEXT')
LotType = Database_Services('ReadDataColumn', 'LOT', LotId, LOT_TYPE$, True$, 0, False$)
CurrWfrQty = Database_Services('ReadDataColumn', 'LOT', LotId, LOT_WAFER_QTY$, True$, 0, False$)
AmountToDecrease = 0
AmountToIncrease = 0
If RowExists('LOT', LotId) then
If NewWfrQty NE '' then
if Num(NewWfrQty) then
If NewWfrQty NE CurrWfrQty then
MsgHead = 'Adjust lot wafer quantity'
MsgText = 'Are you sure you wish to adjust lot ' : LotId : ' wafer quantity from ' : CurrWfrQty : ' to ' : NewWfrQty : '?'
OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText)
If OK then
Begin Case
Case NewWfrQty LT CurrWfrQty
AmountToDecrease = CurrWfrQty - NewWfrQty
Lot_Services('ReduceLotWaferCount', LotId, AmountToDecrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty decrease performed.', '', @User4, '' , '')
end
Case NewWfrQty GT CurrWfrQty
AmountToIncrease = NewWfrQty - CurrWfrQty
Lot_Services('IncreaseLotWaferCount', LotId, AmountToIncrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty increase performed.', '', @User4, '' , '')
end
End Case
If Error_Services('NoError') then
msg(@Window, 'Wafer quantity adjusted successfully!')
Result = ''
Result<1> = True$
End_Dialog(@Window, Result)
end else
ErrorMessage = Error_Services('GetMessage')
msg(@Window, 'Error Adjusting wafer quantity, ' : ErrorMessage)
end
end
end
end else
msg(@Window, 'New wafer count must be a number between 0-25')
end
end else
msg(@Window, 'New wafer count cannot be blank and must be a number between 0-25')
end
end else
msg(@Window, 'Lot # ' : LotId : ' not found!')
end
end event
Event PUB_CANCEL.CLICK()
Result = ''
Result<1> = False$
End_Dialog(@Window, Result)
end event
GetLotCurrData:
If RowExists('LOT', LotNo) then
Set_Property(@Window : '.EDL_LOT_NO', 'TEXT', LotNo)
LotRec = Database_Services('ReadDataRow', 'LOT', LotNo, True$, 0, False$)
If LotRec NE '' then
LotCurrWfrQty = LotRec<LOT_WAFER_QTY$>
Set_Property(@Window : '.EDL_CURR_WFR_QTY', 'TEXT', LotCurrWfrQty)
end else
msg(@Window, 'Error reading lot number ' : LotNo : '!')
end
end else
msg(@Window, 'Lot number ' : LotNo : ' not found!')
end
return