Files
open-insight/LSL2/STPROC/NDW_ADJUST_LOT_QTY_EVENTS.txt
Ouellette Jonathan (CSC FI SPS MESLEO) a878c9bb2e Merged PR 19663: Modified the decrease lot qty functionality to reduce qty via test wafer usag...
Modified the decrease lot qty functionality to reduce qty via test wafer usage rather than directly reducing the qty.,
2025-06-27 21:39:06 +02:00

197 lines
7.3 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, Test_Run_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
PSNNo = Xlate('RDS', LotID, 'PROD_SPEC_ID', 'X')
Test_Run_Services('CreateTestRunRecord', 13, '', '', PSNNo, '', @User4, LotID, NewWfrQty, True$)
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
Set_Property(@Window : '.EDL_CURR_WFR_QTY', 'TEXT', '')
Set_Property(@Window : '.EDL_NEW_LOT_WFR_QTY', 'TEXT', '')
Set_Property(@Window : '.EDL_LOT_NO', 'TEXT', '')
Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', False$)
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