Function NDW_Makeup_Wafers_Events(CtrlEntId, Event, @PARAMS) /*********************************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from Infineon. Name : NDW_Makeup_Wafers_Events Description : This function acts as a commuter module for all events related to this window. Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the application-specific promoted event handler. This makes it possible to add QuickEvents that need to execute Basic+ logic without having use the Form Designer to make the association, although this is limited to the events which are currently promoted. If the form needs to call the commuter module directly then the QuickEvent parameters should be formatted like this: '@SELF','@EVENT',['@PARAM1','@PARAMx'] Parameters : CtrlEntId [in] -- The fully qualified name of the control calling the promoted event Event [in] -- The event being executed. See the Notes section regarding "PRE" events Param1-15 [in] -- Additional event parameter holders EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in EVENT_SETUP insert History : (Date, Initials, Notes) 04/13/18 dmb Created initial commuter module. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler #Window NDW_MAKEUP_WAFERS $insert APP_INSERTS $insert EVENT_SETUP $insert WO_MAT_EQUATES $insert MSG_EQUATES Declare subroutine SRP_EditTable_Manager, SRP_Show_Window, SRP_Stopwatch Declare function SRP_EditTable_Manager, Database_Services, Material_Services SubclassInfo = Form_Services('FindSubclassControl') Subclass = SubclassInfo<1> // Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler. If Event EQ 'OLE' then Transfer Event to OIEvent Transfer Param1 to Event Transfer Param2 to Param1 Transfer Param3 to Param2 * Transfer Param4 to Param3 * Transfer Param5 to Param4 * Transfer Param6 to Param5 * Transfer Param7 to Param6 * Transfer Param8 to Param7 end GoToEvent Event for CtrlEntID Return EventFlow else EVENT_CONTINUE$ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Events //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Event WINDOW.CREATE(CreateParam) ThisWOMatKey = CreateParam ThisWorkOrderNo = ThisWOMatKey[1, '*'] ThisCassetteNo = ThisWOMatKey[Col2() + 1, '*'] ReactorType = Xlate('WO_LOG', ThisWorkOrderNo, 'REACT_TYPE', 'X') IsEpiPro = (ReactorType EQ 'EPP') Set_Property(@Window, '@EPIPRO', IsEpiPro) MsgDef = '' MsgDef = 'Scanning available makeup boxes.' :@SVM: 'Please wait...' MsgDef = 'U' MsgDef = 'C' MsgDef = '-2' MsgDef = '-2' MsgUp = Msg(@Window, MsgDef) MakeupWafers = Material_Services('GetAvailableMakeupWafers', ThisWorkOrderNo, False$) // Remove cassette being backfilled from available list MakeupWafersClean = '' NumMUCass = DCount(MakeupWafers, @VM) If NumMUCass GT 0 then For CassIndex = 1 to NumMUCass Row = MakeupWafers<0, CassIndex> MuWoMatKey = Row<0, 0, 1> : '*' : Row<0, 0, 2> If (MuWoMatKey NE ThisWOMatKey) then MakeupWafersClean<0, -1> = Row Next CassIndex end MakeupWafers = MakeupWafersClean Msg(@Window, MsgUp) GoSub Setup_OLE_Controls SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize) end event Event WINDOW.READ() SRP_EditTable_Manager('Read', @Window : '.OLE_EDT_PROCEDURES', Record) end event Event WINDOW.CLOSE(CancelFlag) end event Event WINDOW.CLEAR(bSaveKey, bSuppressWarning, bMaintainFocus, CtrlIDFocus) SRP_EditTable_Manager('Clear') end event Event PUB_OK.CLICK() SelPos = Get_Property(@Window : '.OLE_RPT_SIGNED_WAFERS', 'OLE.SelPos') RowData = Get_Property(@Window : '.OLE_RPT_SIGNED_WAFERS', 'OLE.RowData[' : SelPos : ']') If RowData EQ '' then // User is asking to convert the current cassette to a makeup box. Result = True$ end else // User has selected the makeup cassette to use for backfilling. EpiPro = Get_Property(@Window, '@EPIPRO') If EpiPro then Result = RowData<1> : '*1*' : RowData<2> end else Result = RowData<1> : '*' : RowData<2> end end End_Dialog(@Window, Result) end event Event PUB_CANCEL.CLICK() End_Dialog(@Window, '') end event Event OLE_EDT_PROCEDURES.LostFocus() SRP_EditTable_Manager('LostFocus', CtrlEntId) end event Event OLE_SUBCLASS.OnComboClick(CtrlId, Sel, Value) Send_Event(CtrlId, 'LOSTFOCUS') end event //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Setup_OLE_Controls: Qualify = '' Qualify<1> = 1 Qualify<4> = 0 RptSignedCtrl = @Window : '.OLE_RPT_SIGNED_WAFERS' PicSignedCtrl = @Window : '.OLE_PIC_AVAILABLE_DIVIDER' RptUnsignedCtrl = @Window : '.OLE_RPT_UNSIGNED_WAFERS' PicUnsignedCtrl = @Window : '.OLE_PIC_UNAVAILABLE_DIVIDER' RptNoBatchCtrl = @Window : '.OLE_RPT_NO_BATCH_WAFERS' PicNoBatchCtrl = @Window : '.OLE_PIC_NO_BATCH_DIVIDER' ColumnList = '' ColumnList<1> = 'WO No' : @VM : 'TEXT' : @VM : 100 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Center' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<2> = 'Cass No' : @VM : 'TEXT' : @VM : 100 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Center' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<3> = 'SAP Batch No' : @VM : 'TEXT' : @VM : 150 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Center' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<4> = 'MU Ps No' : @VM : 'TEXT' : @VM : 100 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Center' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<5> = 'Cust Part No' : @VM : 'TEXT' : @VM : 200 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Left' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<6> = 'Curr Wfr Qty' : @VM : 'TEXT' : @VM : 100 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Right' : @VM : @VM : @VM : @VM : 'Segoe UI,9' ColumnList<7> = 'RDS No' : @VM : 'TEXT' : @VM : 100 : @VM : @VM : @VM : @VM : @VM : @VM : @VM : 'Right' : @VM : @VM : @VM : @VM : 'Segoe UI,9' Set_Property(RptSignedCtrl, 'OLE.ColumnList', ColumnList) Set_Property(RptUnsignedCtrl, 'OLE.ColumnList', ColumnList) Set_Property(RptNoBatchCtrl, 'OLE.ColumnList', ColumnList) SignedWafers = '' UnsignedWafers = '' NoBatchWafers = '' If MakeupWafers NE '' then SignedWafers = MakeupWafers<1> Convert @VM to @FM in SignedWafers Convert @SVM to @VM in SignedWafers UnsignedWafers = MakeupWafers<2> Convert @VM to @FM in UnsignedWafers Convert @SVM to @VM in UnsignedWafers NoBatchWafers = MakeupWafers<3> Convert @VM to @FM in NoBatchWafers Convert @SVM to @VM in NoBatchWafers end // Get the design time form size. This will be adjusted based on various conditions. FormSize = Get_Property(@Window, 'SIZE') SignedRptCtrlSize = Get_Property(RptSignedCtrl, 'SIZE') PicSignedCtrlSize = Get_Property(PicSignedCtrl, 'SIZE') RptUnsignedCtrlSize = Get_Property(RptUnsignedCtrl, 'SIZE') PicUnsignedCtrlSize = Get_Property(PicUnsignedCtrl, 'SIZE') RptNoBatchCtrlSize = Get_Property(RptNoBatchCtrl, 'SIZE') PicNoBatchCtrlSize = Get_Property(PicNoBatchCtrl, 'SIZE') NumSignedWafers = DCount(SignedWafers, @FM) NumUnsignedWafers = DCount(UnsignedWafers, @FM) NumNoBatchWafers = DCount(NoBatchWafers, @FM) If NumSignedWafers EQ 0 then // If there are no signed wafers are available, display the prompt that asks the user to convert to a makeup box. Set_Property(PicSignedCtrl , 'VISIBLE', False$) Set_Property(RptSignedCtrl, 'VISIBLE', False$) Set_Property(@Window : '.OLE_PIC_NO_WAFERS', 'VISIBLE', True$) If NumUnsignedWafers GT 0 then // Increase the height of the form to display the unsigned wafers ReportTable control. Move the controls // down to display below the makeup box message. FormSize<4> = FormSize<4> + 72 RptUnsignedCtrlSize<2> = RptUnsignedCtrlSize<2> + 146 PicUnsignedCtrlSize<2> = PicUnsignedCtrlSize<2> + 146 Set_Property(RptUnsignedCtrl, 'SIZE', RptUnsignedCtrlSize) Set_Property(PicUnsignedCtrl, 'SIZE', PicUnsignedCtrlSize) end If NumNoBatchWafers GT 0 then // Increase the height of the form to display the no batch wafers ReportTable control. Move the controls // down to display below the makeup box message. FormSize<4> = FormSize<4> + 72 RptNoBatchCtrlSize<2> = RptNoBatchCtrlSize<2> + 146 PicNoBatchCtrlSize<2> = PicNoBatchCtrlSize<2> + 146 Set_Property(RptNoBatchCtrl, 'SIZE', RptNoBatchCtrlSize) Set_Property(PicNoBatchCtrl, 'SIZE', PicNoBatchCtrlSize) end end else Set_Property(RptSignedCtrl, 'OLE.List', SignedWafers) If NumSignedWafers GT 1 then SignedRptCtrlSize<4> = SignedRptCtrlSize<4> + (20 * (NumSignedWafers - 1)) Set_Property(RptSignedCtrl, 'SIZE', SignedRptCtrlSize) end end // Adjust unsigned wafers ReportTable If NumUnsignedWafers EQ 0 then Set_Property(PicUnsignedCtrl, 'VISIBLE', False$) Set_Property(RptUnsignedCtrl, 'VISIBLE', False$) If (NumSignedWafers GT 0) then FormSize<4> = FormSize<4> - 74 end end else Set_Property(RptUnsignedCtrl, 'OLE.List', UnsignedWafers) If NumUnsignedWafers GT 1 then // Add more height to display extra rows. RptUnsignedCtrlSize<4> = RptUnsignedCtrlSize<4> + (20 * (NumUnsignedWafers - 1)) end If NumSignedWafers EQ 0 then // There are no signed wafers. Move the unsigned wafers ReportTable up. RptUnsignedCtrlSize<2> = RptUnsignedCtrlSize<2> - 74 PicUnsignedCtrlSize<2> = PicUnsignedCtrlSize<2> - 74 end else If NumSignedWafers GT 1 then // Signed wafers has been made taller. Move the unsigned wafers ReportTable down further. RptUnsignedCtrlSize<2> = RptUnsignedCtrlSize<2> + (20 * (NumSignedWafers - 1)) PicUnsignedCtrlSize<2> = PicUnsignedCtrlSize<2> + (20 * (NumSignedWafers - 1)) end end Set_Property(RptUnsignedCtrl, 'SIZE', RptUnsignedCtrlSize) Set_Property(PicUnsignedCtrl, 'SIZE', PicUnsignedCtrlSize) end // Adjust no batch ReportTable If NumNoBatchWafers EQ 0 then Set_Property(PicNoBatchCtrl, 'VISIBLE', False$) Set_Property(RptNoBatchCtrl, 'VISIBLE', False$) FormSize<4> = FormSize<4> - 74 end else Set_Property(RptNoBatchCtrl, 'OLE.List', NoBatchWafers) If NumNoBatchWafers GT 1 then // Add more height to display extra rows. RptNoBatchCtrlSize<4> = RptNoBatchCtrlSize<4> + (20 * (NumNoBatchWafers - 1)) end If NumSignedWafers EQ 0 then // There are no signed wafers. Move the no batch ReportTable up. RptNoBatchCtrlSize<2> = RptNoBatchCtrlSize<2> - 74 PicNoBatchCtrlSize<2> = PicNoBatchCtrlSize<2> - 74 end else If NumSignedWafers GT 1 then // Signed wafers has been made taller. Move the no batch ReportTable down further. RptNoBatchCtrlSize<2> = RptNoBatchCtrlSize<2> + (20 * (NumSignedWafers - 1)) PicNoBatchCtrlSize<2> = PicNoBatchCtrlSize<2> + (20 * (NumSignedWafers - 1)) end end If NumUnsignedWafers EQ 0 then // There are no unsigned wafers. Move the no batch ReportTable up. RptNoBatchCtrlSize<2> = RptNoBatchCtrlSize<2> - 74 PicNoBatchCtrlSize<2> = PicNoBatchCtrlSize<2> - 74 end else If NumUnsignedWafers GT 1 then // Unsigned wafers has been made taller. Move the no batch ReportTable down further. RptNoBatchCtrlSize<2> = RptNoBatchCtrlSize<2> + (20 * (NumUnsignedWafers - 1)) PicNoBatchCtrlSize<2> = PicNoBatchCtrlSize<2> + (20 * (NumUnsignedWafers - 1)) end end Set_Property(RptNoBatchCtrl, 'SIZE', RptNoBatchCtrlSize) Set_Property(PicNoBatchCtrl, 'SIZE', PicNoBatchCtrlSize) end AdditionalRowsAdj = 0 If NumSignedWafers GT 1 then AdditionalRowsAdj += (NumSignedWafers - 1) * 20 If NumUnsignedWafers GT 1 then AdditionalRowsAdj += (NumUnsignedWafers - 1) * 20 If NumNoBatchWafers GT 1 then AdditionalRowsAdj += (NumNoBatchWafers - 1) * 20 FormSize<4> = FormSize<4> + AdditionalRowsAdj Set_Property(RptSignedCtrl, 'OLE.List', SignedWafers) Set_Property(RptUnsignedCtrl, 'OLE.List', UnsignedWafers) Set_Property(RptNoBatchCtrl, 'OLE.List', NoBatchWafers) Ctrl = @Window : '.OLE_PIC_NO_WAFERS' SAPBatchNo = Xlate('WO_MAT', ThisWOMatKey, 'SAP_BATCH_NO', 'X') IsEpiPro = Get_Property(@Window, '@EPIPRO') If IsEpiPro then WMOKey = Xlate('WO_MAT', ThisWOMatKey, 'WMO_KEY', 'X') MakeupBox = Xlate('WM_OUT', WMOKey, 'MAKEUP_BOX', 'X') end else MakeupBox = Xlate('WO_MAT', ThisWOMatKey, 'MAKEUP_BOX', 'X') end Caption = 'There are no makeup wafers available for this cassette.' If MakeupBox then Set_Property(@Window:'.PUB_OK', 'ENABLED', False$) end else Caption := @TM : 'Click OK to convert this to a makeup box.' end Set_Property(Ctrl, 'OLE.Caption', Caption) return