Function NDW_Main_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_Main_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) 05/08/18 dmb Created initial commuter module. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler #Window NDW_MAIN $insert APP_INSERTS $insert EVENT_SETUP $insert MSG_EQUATES $insert ENVIRON_CONSTANTS $insert NOTIFICATION_EQUATES $insert REACT_MODE_EQU $insert REACT_UTIL_EQU $insert TOOL_EQUATES $insert RLIST_EQUATES $insert WO_LOG_EQUATES $insert REACTOR_CHILD_KEY_IDS_EQUATES Equ WIDTH$ to 3 Equ HEIGHT$ to 4 Declare function GetCommandLine, MemberOf, obj_Install, obj_Notes_Sent, FindWindow, ShowWindow, Next_Key Declare function Environment_Services, Reactor_Services, Database_Services, obj_Tool, Messaging_Services, SRP_JSON Declare function Notes_Services, RTI_Xlate_Controller Declare subroutine Set_Env, obj_Appwindow, Get_BMP_Info, obj_Login, obj_Calib_List, End_Window, Start_Window, Next_Key Declare subroutine Database_Services, obj_React_Status, Obj_React_Mode, obj_Tool_Log, RList, Messaging_Services, RTP27 Declare subroutine Notes_Services, Obj_Note_Ptrs, Comm_Note_Ptrs, SRP_Run_Command, PlaceDialog, GetEngineVersion 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) Version = '' GetEngineVersion(Version) MajorVersion = Version[1, 'F.'] If MajorVersion GE 10 then // Stopgap performance fix for OI 10.2.2 RC1. Revelation will re-enable caching by default in 10.2.2 RC2. // Do not invoke this in OI 9 as the function does not exist! rv = RTI_Xlate_Controller('EnableCache') end Set_Property(@Window, '@INIT', True$) Server = Environment_Services('GetServer') Command = GetCommandLine() Command = Trim(Command) Convert ' ' to @FM in Command Convert @Lower_Case to @Upper_Case in Command NumArguments = DCount(Command, @FM) Done = False$ For ArgCnt = 1 to NumArguments Argument = Command If Argument[1, 3] EQ '/UN' then @USER4 = Argument[-1, 'B='] Done = True$ end Until Done Next ArgCnt IF @USER4 = 'INDEXER' THEN void = Start_Window( 'IDXSVR', '', '', '', '' ) Post_Event(@Window, 'CLOSE') RETURN 0 END IF @USER4 = 'VISION' THEN void = Start_Window( 'VISION_COMM', @WINDOW, '', '', '' ) RETURN 0 END IF @USER4 = 'ADCSVR' THEN void = Start_Window( 'SERVICE_MANAGER', '', '', '', '' ) Post_Event(@Window, 'CLOSE') RETURN 0 END IF @USER4 = 'SAP' THEN void = Start_Window( 'DIALOG_SAP_COMM', '', '', '', '') Post_Event(@Window, 'CLOSE') RETURN 0 END IF @USER4 = 'MESSENGER' THEN void = Start_Window('NDW_MESSAGE_LISTENER', '', '', '', '') Post_Event(@Window, 'CLOSE') RETURN 0 END // The messaging port the messaging processor uses isn't open for between the app servers and the DB servers. // Don't start the messaging processor on the app server to avoid boot up delays. If ( (Server NE 'MESSA005') and (Server NE 'MESSA012') ) then Start_Window('NDW_MESSAGING_PROCESSOR', @Window) AccessLevel = Dialog_Box('LOGON', @Window) If (AccessLevel EQ -1) OR (AccessLevel EQ '') then Set_Property(@Window, '@CLOSE', 1) Post_Event(@Window, 'CLOSE') // This prevents OI from throwing an error message if the cancel button is pressed on the LOGON form. //If (Server EQ 'MESST5201') or (Server EQ 'MESST5202') then Utility("DESTROY", "SYSTEM") end If AccessLevel GE 0 then IF MemberOf(@USER4, 'OI_ADMIN') OR @USER4 = 'MIS' THEN Set_Env(ENV_DEBUGGER_ENABLED$, 1, 1) Set_Env(ENV_DEBUGGER_INTERCEPT_PROC$,'',1) * This section added 9/17/2014 JCH for FTPQueueing for manual batch transmits OPEN 'FTP_QUEUE' TO FTPQueue THEN SELECT FTPQueue RecCnt = 0 Done = 0 LOOP READNEXT QueueKey ELSE Done = 1 UNTIL Done RecCnt += 1 REPEAT Set_Property(@Window : '.PUB_SHIP_DATA_QUEUE','DEFPROP',RecCnt:' in Ship Data Queue') Set_Property(@Window : '.PUB_SHIP_DATA_QUEUE','VISIBLE',1) END END ELSE Set_Env(ENV_DEBUGGER_ENABLED$, 2, 1) Set_Env(ENV_DEBUGGER_INTERCEPT_PROC$,'EPI_USER_DEBUG',1) Set_Property(@Window : '.PUB_SHIP_DATA_QUEUE','VISIBLE',0) END IF MemberOf(@USER4,'OI_ADMIN') THEN * This section added 7/31/2015 JCH for Shipment eMail Queueing for manual batch transmits OPEN 'SHIP_EMAIL_QUEUE' TO Ship_eMailQueue THEN SELECT Ship_eMailQueue RecCnt = 0 Done = 0 LOOP READNEXT QueueKey ELSE Done = 1 UNTIL Done RecCnt += 1 REPEAT Set_Property(@Window : '.PUB_SHIP_DOC_QUEUE','DEFPROP',RecCnt:' in Ship Doc Queue') Set_Property(@Window : '.PUB_SHIP_DOC_QUEUE','VISIBLE',1) END END Company = obj_Install('Get_Prop','CompTitle') WinTitle = Get_Property(@WINDOW,'TEXT') Machine = '' If (Server EQ 'MESST5201') or (Server EQ 'MESST5202') then Machine = 'Server - ' : Server end else Machine = 'Client' end WinTitle = Get_Property(@WINDOW,'TEXT') LSL2Version = Xlate('LSL_USERS', @User4, 'LSL2_VERSION', 'X') OCXVersion = Xlate('LSL_USERS', @User4, 'OCX_VERSION', 'X') OIVersion = Get_Property('SYSTEM', 'VERSION') OIVersion = OIVersion<2> Set_Property(@WINDOW,'TEXT',Company:' ':WinTitle: ' - ':Machine: ' - v':LSL2Version:' - OCX v':OCXVersion:' - OpenInsight v':OIVersion) rv = Set_Property(@WINDOW:'.CURRENT_USER', 'TEXT', 'User: ':oconv( @user4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )) rv = Set_Property(@WINDOW:'.OLE_PIC_CURRENT_USER','OLE.Caption','User: ':OCONV( @USER4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )) rv = Set_Property(@WINDOW:'.OLE_PIC_CURRENT_USER','OLE.CaptionColor', 'RGB(0,93,169)') rv = Set_Property(@WINDOW:'.GROUP_1', 'VISIBLE', 1) Recipients = XLATE('NOTIFICATION','CONFIG_LIMITED',NOTIFICATION_USER_ID$,'X') LOCATE @USER4 IN Recipients USING @VM SETTING Pos THEN obj_Login('LateShip') END NotesSent = obj_Notes_Sent('GetUserKeys',@USER4) NewMessages = XLATE('NOTE_PTRS',@USER4,'NEW_MESSAGES','X') ShowPTO = XLATE('APP_INFO', 'MATERIAL_SCAN_FORM_SHOW', 1, 'X') If ShowPTO NE '1' then Set_Property(@WINDOW:'.MENU.MATERIAL.MATERIAL_SCAN','VISIBLE',0) end IF MemberOf(@USER4, 'SPEC_CHANGE') OR MemberOf(@USER4, 'OI_ADMIN') THEN Set_Property(@WINDOW:'.MENU.ENGINEERING.TOOL_CLASS_-_RECIPES__PATTERNS','VISIBLE',1) END ELSE Set_Property(@WINDOW:'.MENU.ENGINEERING.TOOL_CLASS_-_RECIPES__PATTERNS','VISIBLE',0) END Ctrls = @WINDOW:'.MENU.ADMIN.FABTIME_SUPPORT':@RM ; Props = 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.MAINT.REACTOR_MAINTENANCE':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADM.TOOLS':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADM.RAS':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADM.DEVELOPER':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADMIN.DEV.ARCHIVE' ; Props := 'ENABLED' IF Memberof(@user4, 'OI_ADMIN') OR Memberof(@user4, 'BUSINESS_ADMINS') THEN Vals = 1 END ELSE Vals = 0 END Set_Property(Ctrls,Props,Vals) ; * Sets the enabled property ON/OFF for the record mark delimited variables Ctrls,Props, and Vals If MemberOf(@User4, 'OI_ADMIN') OR MemberOf(@User4, 'BUSINESS_ADMINS') then Set_Property(@Window : '.MENU.ADM.SYSTEM_CONFIG', 'ENABLED', 1) end else Set_Property(@Window : '.MENU.ADM.SYSTEM_CONFIG', 'ENABLED', 0) end Ctrls := @WINDOW:'.MENU.ADMIN.SAP_INTERFACE':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADM.WAREHOUSE':@RM ; Props := 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.ADMIN.SAP_INTERFACE.SAP_COMM_MONITOR':@RM ; Props := 'VISIBLE':@RM IF Memberof(@user4, 'OI_ADMIN') OR Memberof(@user4, 'OI_SUPERUSER') THEN Vals = 1 END ELSE Vals = 0 END Set_Property(Ctrls,Props,Vals) ; * Sets the enabled property ON/OFF for the record mark delimited variables Ctrls,Props, and Vals Ctrls = @WINDOW:'.MENU.ADM.THRUPUT_TARGETS':@RM ; Props = 'ENABLED':@RM Ctrls := @WINDOW:'.MENU.PROD.REACTOR_RUN' ; Props := 'ENABLED' IF Memberof(@user4,'CONFIG_LIMITED') THEN Vals = 1 END ELSE Vals = 0 END Set_Property(Ctrls,Props,Vals) ; * Sets the enabled property ON/OFF for the record mark delimited variables Ctrls,Props, and Vals If Not(MemberOf(@USER4, 'LEAD')) AND Not(MemberOf(@USER4, 'SUPERVISOR')) AND Not(MemberOf(@USER4, 'MAINTENANCE')) then Set_Property(@Window : '.MENU.ADMIN.MASS_TOOL_MODE_CHANGE', 'VISIBLE', 0) Set_Property(@Window : '.MENU.ADMIN.MASS_REACTOR_MODE_CHANGE', 'VISIBLE', 0) end UseFQAMatScan = Database_Services('ReadDataRow', 'APP_INFO', 'USE_FQA_MAT_SCAN') If UseFQAMatScan EQ 1 OR MemberOf(@User4, 'OI_TEST') then Set_Property(@Window:'.MENU.MATERIAL.FQA_MAT_SCAN', 'VISIBLE', 1) Set_Property(@Window:'.MENU.MATERIAL.FQA_LABEL_CHECK', 'VISIBLE', 0) end else Set_Property(@Window:'.MENU.MATERIAL.FQA_MAT_SCAN', 'VISIBLE', 0) Set_Property(@Window:'.MENU.MATERIAL.FQA_LABEL_CHECK', 'VISIBLE', 1) end If MemberOf(@User4, 'PRODUCTION_LEADERSHIP') or MemberOf(@User4, 'OI_ADMIN') then Set_Property(@Window:'.MENU.ADMIN.FEATURE_FLAGS', 'ENABLED', True$) end stat = Set_Property(@WINDOW,'TIMER',5000:@FM:1) ;* Start the Keep Alive Timer event and run every 20 Minutes * * * * * * * * * * * * Set_Property(@Window:".OLE_SNOOZE", "OLE.Icon", "BMPS\do-not-disturb-mode.png") Set_Property(@Window:".OLE_NOTES", "OLE.Font", @SVM:10) Set_Property(@Window:".OLE_SNOOZE", "OLE.Font", @SVM:10) Gosub SetSnoozeButtonState PlaceDialog(-2, -2) Set_Property(@Window, 'VISIBLE', 1) Eventflow = 0 end Else Set_Property(@Window, 'VISIBLE', 2) Post_Event(@Window, 'CLOSE') end end event Event WINDOW.CLOSE(CancelFlag) Void = Set_Property(@WINDOW,'TIMER','') UNLOCK All end event Event WINDOW.TIMER() OnInit = Get_Property(@Window, '@INIT') If OnInit Then Gosub Setup_OLE_Controls Size = Get_Property(@Window, 'SIZE') ScreenSize = Get_Property('SYSTEM', 'SIZE') TrackingSize = '' TrackingSize<1> = Size<3> TrackingSize<2> = Size<4> TrackingSize<3> = ScreenSize<1> TrackingSize<4> = ScreenSize<2> Set_Property(@Window, 'TRACKINGSIZE', TrackingSize) Set_Property(@Window, '@INIT', False$) Post_Event(@Window, 'OMNIEVENT') End Close = Get_Property(@Window, '@CLOSE') CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') OPEN 'SYSLISTS' TO ListsFile THEN Station = @STATION Station = Station[1,'_'] ListKey = Station:'*KEEP_ALIVE' ListRec = @USER4:@FM:CurrDTM WRITE ListRec ON ListsFile,ListKey ELSE NULL END Snoozed = Notes_Services('CheckForNotificationSnooze', @USER4) NotesSentKeys = Notes_Services('GetNewMessages', @User4); *Gets all new messages if NotesSentKeys then DisplayNotification = False$ for each NotesSent in NotesSentKeys using @VM NotesSentRec = Database_Services('ReadDataRow', 'NOTES_SENT', NotesSent) if Not(NotesSentRec<2>) then //Messaging_Services('SetPopupMessage', '','','You have new messages!') DisplayNotification = True$ NotesSentRec<2> = True$ Database_Services('WriteDataRow', 'NOTES_SENT', NotesSent, NotesSentRec) end Next NotesSent if DisplayNotification and Snoozed EQ FALSE$ then Messaging_Services('SetPopupMessage', '','',"You've got mail! =)") end Notes_Services('UpdateNotes', @User4) If Error_Services('HasError') then Error_Services('DisplayError') NewMessages = Notes_Services('GetUnreadMessageCount', @User4) ColorFill = '' if NewMessages then Set_Property(@Window:".OLE_NOTES", "OLE.Icon", "BMPS\envelope-regular.png") ColorFill<1> = "Vertical(Gradient(RGB(252,212,66), (252,212,66)),Border(RGB(252,212,66)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(252,212,66) L=70, RGB(252,212,66) L=70), Border(RGB(252,212,66)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(252,212,66) L=40, RGB(252,212,66) L=40), Border(RGB(252,212,66)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(252,212,66), (252,212,66)),Border(RGB(252,212,66)),Rounded(1))" end else Set_Property(@Window:".OLE_NOTES", "OLE.Icon", "BMPS\envelope-open-regular.png") ColorFill<1> = "Vertical(Gradient(RGB(155,186,67), (155,186,67)),Border(RGB(155,186,67)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(155,186,67) L=60, RGB(155,186,67) L=60), Border(RGB(155,186,67)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(155,186,67) L=40, RGB(155,186,67) L=40), Border(RGB(155,186,67)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(155,186,67), (155,186,67)),Border(RGB(155,186,67)),Rounded(1))" end Set_Property(@Window : '.OLE_NOTES', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_NOTES", "OLE.Caption", NewMessages) IF Get_Property('NOTE_PTRS', 'VISIBLE') then Post_Event('NOTE_PTRS', 'OMNIEVENT') end Gosub SetSnoozeButtonState Set_Property(@WINDOW:'.CURRENT_TIME','TEXT','Current Time: ':OCONV( TIME(), 'MTHS' )) Set_Property(@WINDOW:'.CURRENT_DATE','TEXT','Date: ':OCONV( DATE(), 'D2/' )) If Get_Property(@Window, '@CLOSE') then Send_Event(@Window, 'CLOSE') end end event Event PUB_SHIP_DATA_QUEUE.CLICK() Start_Window('DIALOG_FTP_QUEUE', @Window) end event Event PUB_SHIP_DOC_QUEUE.CLICK() Start_Window('DIALOG_EMAIL_SHIPMENT', @Window) end event Event MENU.REACT_STAT.MENU() Start_Window('REACT_STATUS_EVEN',@WINDOW,'') Start_Window('REACT_STATUS_ODD',@WINDOW,'') Start_Window('TOOL_STATUS',@WINDOW,'') end event Event MENU.WIN.PROD.RMC.MENU() IF MemberOf(@USER4, 'DATA_ENTRY') OR MemberOf(@USER4, 'SUPERVISOR') THEN Start_Window('REACT_MODE_CHG', @WINDOW, '*CENTER','','') END ELSE MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'You must be a Supervisor or Technician in order to change reactor modes...' MsgInfo = 'H' void = Msg('',MsgInfo) END end event Event MENU.ADMIN.SAP_INTERFACE.SAP_COMM_MONITOR.MENU() rv = Start_Window('DIALOG_SAP_COMM', '') end event Event MENU.ADMIN.TOOLS_EVAC.MENU() // Require the user to acknowledge using their application password. MsgOverride = '' MsgOverride = 2 ; // Default to Cancel button. Valid = Msg(@Window, MsgOverride, 'OK_CANCEL', '', 'Evac Procedures' : @FM : 'Please confirm that you wish to put all tools into Evac mode.') If Valid EQ '' then UserName = Oconv(@USER4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]') CurrDate = Date() CurrTime = Time() EvacMode = 'Facilities (UnSched)' EvacNotes = 'Fab Evac' NumberTools = 0 // Step 1 - Update the Reactor Tools. This logic is based on the script event handler in the REACT_MODE_CHG.APPLY // pushbutton control. ReactorNos = Reactor_Services('GetReactorNumbers') For Each ReactorNo in ReactorNos using @FM ReactModeRow = Database_Services('ReadDataRow', 'CONFIG', 'REACT_MODE' : ReactorNo) ReactModeDesc = ReactModeRow If ReactModeDesc _NEC 'Shutdown' then ReactUtilID = ReactModeRow ReactLogID = ReactModeRow If ReactUtilID NE '' then ReactUtilRow = Database_Services('ReadDataRow', 'REACT_UTIL', ReactUtilID) ReactUtilRow = CurrDate ReactUtilRow = CurrTime ReactUtilRow = @USER4 Database_Services('WriteDataRow', 'REACT_UTIL', ReactUtilID, ReactUtilRow, True$, '', True$) end else ReactUtilRow = '' end hReactUtil = Database_Services('GetTableHandle', 'REACT_UTIL') KeyToUse = Next_Key('REACT_UTIL', hReactUtil, 'NEXT', '') NewReactUtilRow = '' NewReactUtilRow = ReactorNo NewReactUtilRow = EvacNotes NewReactUtilRow = 'S' NewReactUtilRow = CurrDate NewReactUtilRow = CurrTime NewReactUtilRow = @USER4 WorkOrderNo = ReactUtilRow NewReactUtilRow = WorkOrderNo NewReactUtilRow = Xlate('WO_LOG', WorkOrderNo, WO_LOG_CUST_NO$, 'X') NewReactUtilRow = '' Database_Services('WriteDataRow', 'REACT_UTIL', KeyToUse, NewReactUtilRow, True$, '', True$) Database_Services('ReleaseKeyIDLock', 'REACT_UTIL', KeyToUse) Next_Key('REACT_UTIL', HReactUtil, 'UPDATE', KeyToUse) NewReactModeRow = '' NewReactModeRow = EvacMode NewReactModeRow = UserName NewReactModeRow = Oconv(CurrDate, 'D4/') NewReactModeRow = Oconv(CurrTime, 'MTH') NewReactModeRow = KeyToUse NewReactModeRow = '' NewReactModeRow = EvacNotes CurrDTM = NewReactModeRow : ' ' : NewReactModeRow PrevModeKey = Xlate('REACTOR_CHILD_KEY_IDS', ReactorNo, REACTOR_CHILD_KEY_IDS_REACT_MODE_KEY_IDS$, 'X')<1, 1> OpenDTM = Field(PrevModeKey, '*', 2) OpenDTM = Oconv(OpenDTM, 'DT4/^S') CurrMode = Oconv(Xlate('REACTOR', ReactorNo, 'CURR_MODE', 'X'), '[REACT_MODE_CONV]') ProdModes = 'Production':@VM ProdModes := 'Production (incr sampling)' Locate CurrMode in ProdModes Using @VM Setting vPos then Locate EvacMode in ProdModes Using @VM Setting vPos else OutOfProdDTM = NewReactModeRow : ' ' : NewReactModeRow obj_React_Status('SetOutOfProdDTM', ReactorNo : @RM : OutOfProdDTM) end ; // End of check on New Mode end ; // End of check on Current Mode Database_Services('WriteDataRow', 'CONFIG', 'REACT_MODE' : ReactorNo, NewReactModeRow, True$, '', True$) If Error_Services('NoError') then NumberTools += 1 If CurrMode NE '' then // Close the currently active mode crParms = ReactorNo crParms := @RM : OpenDTM crParms := @RM : CurrDTM crParms := @RM : @USER4 crParms := @RM : NewReactModeRow crParms := @RM : NewReactModeRow crParms := @RM : NewReactModeRow obj_React_Mode('Close', crParms) end // Create new active mode record crParms = ReactorNo crParms := @RM : CurrDTM crParms := @RM : @USER4 crParms := @RM : NewReactModeRow crParms := @RM : NewReactModeRow crParms := @RM : NewReactModeRow crParms := @RM : NewReactModeRow obj_React_Mode('Create', crParms) end end Next ReactorNo // Step 2 - Update the Silicon Tools. This logic is based on the TBClick gosub in the Comm_Dialog_Tool_Status // commuter module. This commuter module supports the TOOL_STATUS form. ToolIDs = obj_Tool('KeysByType') ; // All tool IDs sorted by TOOL_TYPE For Each ToolID in ToolIDs using @VM ToolRow = Database_Services('ReadDataRow', 'TOOL', ToolID) CurrModeKey = ToolRow CurrMode = Xlate('TOOL', ToolID, 'CURR_MODE', 'X')<1, 1> If CurrMode NE 'OUT' AND CurrMode NE 'FACILITIES (UnSched)' then If CurrMode EQ '' then obj_Tool_Log('InitialLog', ToolID) CurrMode = 'OUT' end NumberTools += 1 CurrModeDTM = Field(CurrModeKey, '*', 2) CurrModeDTM = Oconv(CurrModeDTM, 'DT4/^S') Parms = ToolID : @RM Parms := CurrModeDTM : @RM Parms := 'FACILITIES (UnSched)' : @RM Parms := EvacNotes obj_Tool_Log('SetMode', Parms) end Next ToolID // Step 3 - Update the GaN Tools. This logic is based on the ToolOptions gosub in the GaN_Tool_Status commuter // module. This commuter module supports the GAN_TOOL_STATUS form. SelectSent = 'SELECT TOOL WITH TOOL_PROC "G" AND WITH CLASS NE "G_REACT" BY TOOL_WH BY TOOL_TYPE' RList(SelectSent, TARGET_ACTIVELIST$, '', '', '') EOF = False$ Loop Readnext ToolID else EOF = True$ Until EOF ToolRow = Database_Services('ReadDataRow', 'TOOL', ToolID) CurrModeKey = ToolRow CurrMode = Xlate('TOOL', ToolID, 'CURR_MODE', 'X')<1, 1> If CurrMode NE 'OUT' AND CurrMode NE 'FACILITIES (UnSched)' then If CurrMode EQ '' then obj_Tool_Log('InitialLog', ToolID) CurrMode = 'OUT' end NumberTools += 1 CurrModeDTM = Field(CurrModeKey, '*', 2) CurrModeDTM = Oconv(CurrModeDTM, 'DT4/^S') Parms = ToolID : @RM Parms := CurrModeDTM : @RM Parms := 'FACILITIES (UnSched)' : @RM Parms := EvacNotes obj_Tool_Log('SetMode', Parms) end Repeat Msg(@Window, '', 'OK', '', 'Evac Procedures' : @FM : NumberTools : ' tools have been placed into Evac mode.') end end event Event MENU.ADMIN.DEVELOPER.SESSION_MANAGER.MENU() rv = Start_Window('NDW_SESSION_MANAGER', '') end event Event OLE_NOTES.OnClick(Point, Button, Shift, Ctrl) rv = Start_Window('NOTE_PTRS', '') end event Event OLE_SNOOZE.OnClick(Point, Button, Shift, Ctrl) Snoozed = Notes_Services('CheckForNotificationSnooze', @USER4) If Snoozed then Notes_Services('AllowNewMessageNotifications', @USER4) end else Notes_Services('SnoozeNewMessageNotifications', @USER4) end Gosub SetSnoozeButtonState end event Event OLE_WIP_STATUS.OnClick(Point, Button, Shift, Ctrl) Start_Window('REACT_STATUS_EVEN',@WINDOW,'') Start_Window('REACT_STATUS_ODD',@WINDOW,'') Start_Window('TOOL_STATUS',@WINDOW,'') end event Event OLE_RDS.OnClick(Point, Button, Shift, Ctrl) rv = Start_Window('RDS', '') end event Event OLE_WM_OUT.OnClick(Point, Button, Shift, Ctrl) rv = Start_Window('WM_OUT', '') end event Event OLE_WORK_ORDER.OnClick(Point, Button, Shift, Ctrl) rv = Start_Window('NDW_WO_LOG', '') end event Event OLE_LOG_TEST_RUN.OnClick(Point, Button, Shift, Ctrl) rv = Start_Window('NDW_TEST_RUN', '') end event Event MENU.MAINTENANCE.0311_OCAP_FORM.MENU() Command = 'start microsoft-edge:https://messa014.infineon.com:5022/' SRP_Run_Command(Command, '', '', '') end event Event MENU.PROD.NDW_RDS_QUERY.MENU() SelRDSKeys = Dialog_Box('NDW_RDS_QUERY', @Window) IF SelRDSKeys NE '' THEN Void = Start_Window( 'RDS', @window, SelRDSKeys:'*CENTER', '', '' ) END end event Event WINDOW.OMNIEVENT(Message, Param1, Param2, Param3, Param4) Gosub FixFont End event //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Setup_OLE_Controls: PlaceDialog(-2, -2) Qualify = '' Qualify<1> = 1 Qualify<4> = 0 Ctrl = @Window : '.OLE_LAUNCHER' Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnLaunchAttempt', Qualify) Send_Message(@Window : '.OLE_NOTES', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) FontArray = Get_Property(@Window:'.OLE_NOTES', 'OLE.Font') FontArray<1, 1, 2> = 14 Set_Property(@Window:".OLE_NOTES", "OLE.Font", FontArray) Send_Message(@Window : '.OLE_SNOOZE', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) FontArray<1, 1, 2> = 10 Set_Property(@Window:".OLE_SNOOZE", "OLE.Font", FontArray) ColorFill = '' FontArray<1, 1, 2> = 11 Send_Message(@Window : '.OLE_WIP_STATUS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Font", FontArray) ColorFill<1> = "White" ColorFill<2> = "White" ColorFill<3> = "White" ColorFill<5> = "White" Set_Property(@Window:".OLE_WIP_STATUS", "OLE.ForeColor", ColorFill) ColorFill = '' ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" Set_Property(@Window : '.OLE_WIP_STATUS', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Caption", "WIP Status") ColorFill = '' Send_Message(@Window : '.OLE_RDS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) Set_Property(@Window:".OLE_RDS", "OLE.Font", FontArray) ColorFill<1> = "White" ColorFill<2> = "White" ColorFill<3> = "White" ColorFill<5> = "White" Set_Property(@Window:".OLE_RDS", "OLE.ForeColor", ColorFill) ColorFill = '' ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" Set_Property(@Window : '.OLE_RDS', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_RDS", "OLE.Caption", "RDS") ColorFill = '' Send_Message(@Window : '.OLE_WM_OUT', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) Set_Property(@Window:".OLE_WM_OUT", "OLE.Font", FontArray) ColorFill<1> = "White" ColorFill<2> = "White" ColorFill<3> = "White" ColorFill<5> = "White" Set_Property(@Window:".OLE_WM_OUT", "OLE.ForeColor", ColorFill) ColorFill = '' ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" Set_Property(@Window : '.OLE_WM_OUT', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_WM_OUT", "OLE.Caption", "WM Out") ColorFill = '' Send_Message(@Window : '.OLE_WORK_ORDER', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) Set_Property(@Window:".OLE_WORK_ORDER", "OLE.Font", FontArray) ColorFill<1> = "White" ColorFill<2> = "White" ColorFill<3> = "White" ColorFill<5> = "White" Set_Property(@Window:".OLE_WORK_ORDER", "OLE.ForeColor", ColorFill) ColorFill = '' ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" Set_Property(@Window : '.OLE_WORK_ORDER', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_WORK_ORDER", "OLE.Caption", "Work Order") ColorFill = '' Send_Message(@Window : '.OLE_LOG_TEST_RUN', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify) Set_Property(@Window:".OLE_LOG_TEST_RUN", "OLE.Font", FontArray) ColorFill<1> = "White" ColorFill<2> = "White" ColorFill<3> = "White" ColorFill<5> = "White" Set_Property(@Window:".OLE_LOG_TEST_RUN", "OLE.ForeColor", ColorFill) ColorFill = '' ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))" Set_Property(@Window : '.OLE_LOG_TEST_RUN', "OLE.Background", ColorFill) Set_Property(@Window:".OLE_LOG_TEST_RUN", "OLE.Caption", "Log TW Usage") return SetSnoozeButtonState: Snoozed = Notes_Services('CheckForNotificationSnooze', @USER4) ColorFill = '' If Snoozed then ColorFill<1> = "Vertical(Gradient(RGB(108, 180, 173), (108, 180, 173)),Border(RGB(108, 180, 173)),Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(108, 180, 173) L=60, RGB(108, 180, 173) L=60), Border(RGB(108, 180, 173)),Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(108, 180, 173) L=40, RGB(108, 180, 173) L=40), Border(RGB(108, 180, 173)),Rounded(1))" ColorFill<5> = "Vertical(Gradient(RGB(108, 180, 173), (108, 180, 173)),Border(RGB(108, 180, 173)),Rounded(1))" Set_Property(@Window:".OLE_SNOOZE", "OLE.Caption", "Do Not Disturb On") end else ColorFill<1> = "Vertical(RGB(141,135,134), Border(RGB(141,135,134)), Rounded(1))" ColorFill<2> = "Vertical(Gradient(RGB(141,135,134) L=60,RGB(141,135,134) L=60, Border(RGB(141,135,134)) Rounded(1))" ColorFill<3> = "Vertical(Gradient(RGB(141,135,134) L=40,RGB(141,135,134) L=40, Border(RGB(141,135,134)) Rounded(1))" ColorFill<5> = "Vertical(RGB(141,135,134), Border(RGB(141,135,134)), Rounded(1))" Set_Property(@Window:".OLE_SNOOZE", "OLE.Caption", "Do Not Disturb Off") end Set_Property(@Window : '.OLE_SNOOZE', "OLE.Background", ColorFill) return FixFont: FontArray = Get_Property(@Window:'.OLE_NOTES', 'OLE.Font') FontArray<1, 1, 2> = 14 Set_Property(@Window:".OLE_NOTES", "OLE.Font", FontArray) FontArray<1, 1, 2> = 10 Set_Property(@Window:".OLE_SNOOZE", "OLE.Font", FontArray) FontArray<1, 1, 2> = 11 Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Font", FontArray) Set_Property(@Window:".OLE_RDS", "OLE.Font", FontArray) Set_Property(@Window:".OLE_WM_OUT", "OLE.Font", FontArray) Set_Property(@Window:".OLE_WORK_ORDER", "OLE.Font", FontArray) Set_Property(@Window:".OLE_LOG_TEST_RUN", "OLE.Font", FontArray) Set_Property(@Window:".OLE_PIC_CURRENT_USER", "OLE.Font", FontArray) return