Modified current Calibration_Services 'SendReminders' service to not include out of service calibrations. Deleted deprecated obj_calib_list module.
This commit is contained in:
@ -211,7 +211,7 @@ Service SendReminders()
|
|||||||
CalDueRecipients = Xlate('NOTIFICATION', 'CALIB_DUE_NOTIFY', NOTIFICATION_USER_ID$, 'X')
|
CalDueRecipients = Xlate('NOTIFICATION', 'CALIB_DUE_NOTIFY', NOTIFICATION_USER_ID$, 'X')
|
||||||
|
|
||||||
CheckDt = OConv(Date() + 15, 'D4/')
|
CheckDt = OConv(Date() + 15, 'D4/')
|
||||||
SelectSent = 'SELECT CALIB_LIST WITH NEXT_CAL_DT < ':QUOTE(CheckDt):' BY NEXT_CAL_DT'
|
SelectSent = 'SELECT CALIB_LIST WITH NEXT_CAL_DT < ':QUOTE(CheckDt):' AND WITH EQ_LOC NE "Out of Service" BY NEXT_CAL_DT'
|
||||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||||
|
|
||||||
NoteText = ''
|
NoteText = ''
|
||||||
|
@ -1,587 +0,0 @@
|
|||||||
Function NDW_Main_Events_Dev(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
|
|
||||||
|
|
||||||
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 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
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
GoSub Setup_OLE_Controls
|
|
||||||
|
|
||||||
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<ArgCnt>
|
|
||||||
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( 'ADCSVR', @window, '', '', '' )
|
|
||||||
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
|
|
||||||
|
|
||||||
Start_Window('NDW_MESSAGING_PROCESSOR', @Window)
|
|
||||||
|
|
||||||
@USER4 = @USERNAME
|
|
||||||
|
|
||||||
AccessLevel = Dialog_Box('LOGON', @Window)
|
|
||||||
If (AccessLevel EQ -1) OR (AccessLevel EQ '') then
|
|
||||||
Set_Property(@Window, '@CLOSE', 1)
|
|
||||||
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,'EMAIL_PDF_QUEUE') 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
|
|
||||||
|
|
||||||
GraphicPath = obj_Install('Get_Prop','ColorBMP')
|
|
||||||
|
|
||||||
IF GraphicPath NE '' THEN
|
|
||||||
Set_Property(@WINDOW:'.BITMAP_2','BITMAP',GraphicPath)
|
|
||||||
Get_BMP_Info(GraphicPath,BmSize,BmWidth,BmHeight)
|
|
||||||
|
|
||||||
BMAspectRatio = BmWidth/BmHeight
|
|
||||||
|
|
||||||
MainSize = Get_Property(@WINDOW,'SIZE')
|
|
||||||
|
|
||||||
WinWidth = MainSize<WIDTH$>
|
|
||||||
WinHeight = MainSize<HEIGHT$>
|
|
||||||
|
|
||||||
IF BmHeight > INT(WinHeight * .666) THEN
|
|
||||||
Set_Property(@WINDOW:'.BITMAP_2','IMAGECLIP',0) ;* Allow Resize of bitmap
|
|
||||||
BmDispHeight = INT(WinHeight * .666)
|
|
||||||
BmDispWidth = INT(BmDispHeight*(BmWidth/BmHeight))
|
|
||||||
END ELSE
|
|
||||||
Set_Property(@WINDOW:'.BITMAP_2','IMAGECLIP',0) ;* Allow Resize of bitmap
|
|
||||||
BmDispHeight = INT(WinHeight * .20)
|
|
||||||
BmDispWidth = INT(BmDispHeight * BMAspectRatio)
|
|
||||||
END
|
|
||||||
|
|
||||||
Xorg = INT((WinWidth - BmDispWidth) / 2 )
|
|
||||||
Yorg = INT((WinHeight - BmDispHeight) / 3)
|
|
||||||
|
|
||||||
Set_Property(@WINDOW:'.BITMAP_2','SIZE',Xorg:@FM:Yorg:@FM:BmDispWidth:@FM:BmDispHeight)
|
|
||||||
Set_Property(@WINDOW:'.BITMAP_2','VISIBLE',1)
|
|
||||||
END
|
|
||||||
|
|
||||||
Company = obj_Install('Get_Prop','CompTitle')
|
|
||||||
WinTitle = Get_Property(@WINDOW,'TEXT')
|
|
||||||
Machine = ''
|
|
||||||
If (Server EQ 'MESST6501') or (Server EQ 'MESST6502') or (Server EQ 'MESTST1006')then
|
|
||||||
Machine = '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')
|
|
||||||
Set_Property(@WINDOW,'TEXT',Company:' ':WinTitle: ' - ':Machine: ' - v':LSL2Version:' - ocx.v':OCXVersion)
|
|
||||||
|
|
||||||
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:'.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')
|
|
||||||
|
|
||||||
IF NotesSent NE '' OR NewMessages > 0 THEN
|
|
||||||
Void = Start_Window( 'NOTE_PTRS', @WINDOW, '*CENTER', '', '' )
|
|
||||||
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.SYSTEM_CONFIG':@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') 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.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')) then
|
|
||||||
Set_Property(@Window : '.MENU.ADMIN.TOOLS_EVAC', 'VISIBLE', 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
If @User4 NE 'DAN_CR' then
|
|
||||||
Set_Property(@Window : '.MENU.MATERIAL.PTO_MATERIAL_SCAN', 'VISIBLE', 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
CalDueRecipients = XLATE('NOTIFICATION','CALIB_DUE_NOTIFY',NOTIFICATION_USER_ID$,'X')
|
|
||||||
|
|
||||||
LOCATE @USER4 IN CalDueRecipients USING @VM SETTING POS THEN
|
|
||||||
obj_Calib_List('SendReminders') ;* New system added 3/18/2010 JCH
|
|
||||||
END
|
|
||||||
|
|
||||||
stat = Set_Property(@WINDOW,'TIMER',1200000:@FM:0) ;* Start the Keep Alive Timer event and run every 20 Minutes * * * * * * * * * * * *
|
|
||||||
stat = Set_Property(@WINDOW,'STATUSLINE',@WINDOW:'.STATUS_LINE') ;* Setup status line
|
|
||||||
|
|
||||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$)
|
|
||||||
Eventflow = 0
|
|
||||||
end else
|
|
||||||
End_Window(@Window)
|
|
||||||
end
|
|
||||||
|
|
||||||
end event
|
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.READ()
|
|
||||||
|
|
||||||
end event
|
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.CLOSE(CancelFlag)
|
|
||||||
|
|
||||||
Void = Set_Property(@WINDOW,'TIMER','')
|
|
||||||
UNLOCK All
|
|
||||||
|
|
||||||
end event
|
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.CLEAR(bSaveKey, bSuppressWarning, bMaintainFocus, CtrlIDFocus)
|
|
||||||
|
|
||||||
end event
|
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.TIMER()
|
|
||||||
|
|
||||||
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 = @USERNAME:@FM:CurrDTM
|
|
||||||
WRITE ListRec ON ListsFile,ListKey ELSE NULL
|
|
||||||
END
|
|
||||||
|
|
||||||
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 OLE_LAUNCHER.OnLaunchAttempt(Params)
|
|
||||||
|
|
||||||
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)
|
|
||||||
* Send_Message(@Window : '.OLE_DIRECT_CONNECT', 'OLE.Broadcast', 'Booyaa!')
|
|
||||||
|
|
||||||
end event
|
|
||||||
|
|
||||||
|
|
||||||
Event MENU.REACT_STAT.MENU()
|
|
||||||
|
|
||||||
Start_Window('REACT_STATUS_EVEN',@WINDOW,'')
|
|
||||||
Start_Window('REACT_STATUS_ODD',@WINDOW,'')
|
|
||||||
Start_Window('NDW_TOOL_STATUS_GAN',@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<MCOL$> = -2
|
|
||||||
MsgInfo<MROW$> = -2
|
|
||||||
MsgInfo<MTEXT$> = 'You must be a Supervisor or Technician in order to change reactor modes...'
|
|
||||||
MsgInfo<MICON$> = '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.
|
|
||||||
* Valid = Dialog_Box('QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4 : @VM : XLATE('LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X'))
|
|
||||||
MsgOverride = ''
|
|
||||||
MsgOverride<MDEFBTN$> = 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<Mode$>
|
|
||||||
If ReactModeDesc _NEC 'Shutdown' then
|
|
||||||
ReactUtilID = ReactModeRow<ReactUtilID$>
|
|
||||||
ReactLogID = ReactModeRow<ReactorLogID$>
|
|
||||||
If ReactUtilID NE '' then
|
|
||||||
ReactUtilRow = Database_Services('ReadDataRow', 'REACT_UTIL', ReactUtilID)
|
|
||||||
ReactUtilRow<REACT_UTIL_END_DATE$> = CurrDate
|
|
||||||
ReactUtilRow<REACT_UTIL_END_TIME$> = CurrTime
|
|
||||||
ReactUtilRow<REACT_UTIL_MODE_FINISH_USER$> = @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<REACT_UTIL_REACTOR$> = ReactorNo
|
|
||||||
NewReactUtilRow<REACT_UTIL_NOTES$> = EvacNotes
|
|
||||||
NewReactUtilRow<REACT_UTIL_MODE$> = 'S'
|
|
||||||
NewReactUtilRow<REACT_UTIL_START_DATE$> = CurrDate
|
|
||||||
NewReactUtilRow<REACT_UTIL_START_TIME$> = CurrTime
|
|
||||||
NewReactUtilRow<REACT_UTIL_MODE_START_USER$> = @USER4
|
|
||||||
WorkOrderNo = ReactUtilRow<REACT_UTIL_WO$>
|
|
||||||
NewReactUtilRow<REACT_UTIL_WO$> = WorkOrderNo
|
|
||||||
NewReactUtilRow<REACT_UTIL_CUST_NO$> = Xlate('WO_LOG', WorkOrderNo, WO_LOG_CUST_NO$, 'X')
|
|
||||||
NewReactUtilRow<REACT_UTIL_REACTOR_LOG_ID$> = ''
|
|
||||||
Database_Services('WriteDataRow', 'REACT_UTIL', KeyToUse, NewReactUtilRow, True$, '', True$)
|
|
||||||
Database_Services('ReleaseKeyIDLock', 'REACT_UTIL', KeyToUse)
|
|
||||||
Next_Key('REACT_UTIL', HReactUtil, 'UPDATE', KeyToUse)
|
|
||||||
|
|
||||||
NewReactModeRow = ''
|
|
||||||
NewReactModeRow<Mode$> = EvacMode
|
|
||||||
NewReactModeRow<Username$> = UserName
|
|
||||||
NewReactModeRow<Date$> = Oconv(CurrDate, 'D4/')
|
|
||||||
NewReactModeRow<Time$> = Oconv(CurrTime, 'MTH')
|
|
||||||
NewReactModeRow<ReactUtilID$> = KeyToUse
|
|
||||||
NewReactModeRow<ReactorLogID$> = ''
|
|
||||||
NewReactModeRow<Note$> = EvacNotes
|
|
||||||
|
|
||||||
CurrDTM = NewReactModeRow<Date$> : ' ' : NewReactModeRow<Time$>
|
|
||||||
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<Date$> : ' ' : NewReactModeRow<Time$>
|
|
||||||
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<Note$>
|
|
||||||
crParms := @RM : NewReactModeRow<ReactUtilID$>
|
|
||||||
crParms := @RM : NewReactModeRow<ReactorLogID$>
|
|
||||||
obj_React_Mode('Close', crParms)
|
|
||||||
end
|
|
||||||
// Create new active mode record
|
|
||||||
crParms = ReactorNo
|
|
||||||
crParms := @RM : CurrDTM
|
|
||||||
crParms := @RM : @USER4
|
|
||||||
crParms := @RM : NewReactModeRow<Mode$>
|
|
||||||
crParms := @RM : NewReactModeRow<Note$>
|
|
||||||
crParms := @RM : NewReactModeRow<ReactUtilID$>
|
|
||||||
crParms := @RM : NewReactModeRow<ReactorLogID$>
|
|
||||||
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<TOOL_CURR_MODE_KEY$>
|
|
||||||
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<TOOL_CURR_MODE_KEY$>
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Internal GoSubs
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
Setup_OLE_Controls:
|
|
||||||
|
|
||||||
Qualify = ''
|
|
||||||
Qualify<1> = 1
|
|
||||||
Qualify<4> = 0
|
|
||||||
|
|
||||||
Ctrl = @Window : '.OLE_LAUNCHER'
|
|
||||||
Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnLaunchAttempt', Qualify)
|
|
||||||
|
|
||||||
return
|
|
@ -1,160 +0,0 @@
|
|||||||
COMPILE FUNCTION obj_Calib_List(Method,Parms)
|
|
||||||
/*
|
|
||||||
Methods for Calib_List table
|
|
||||||
|
|
||||||
3/18/2010 JCH - Initial Coding
|
|
||||||
|
|
||||||
Properties:
|
|
||||||
|
|
||||||
Methods:
|
|
||||||
|
|
||||||
SendReminders ;* Send Notes reminding of calibrations coming due
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box, Popup
|
|
||||||
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, obj_Notes
|
|
||||||
|
|
||||||
$INSERT MSG_EQUATES
|
|
||||||
$INSERT CALIB_LIST_EQUATES
|
|
||||||
$INSERT RLIST_EQUATES
|
|
||||||
$INSERT NOTIFICATION_EQU
|
|
||||||
|
|
||||||
EQU PDISPLAY$ TO 8 ;* From Popup_Equates
|
|
||||||
|
|
||||||
EQU CRLF$ TO \0D0A\
|
|
||||||
|
|
||||||
ErrTitle = 'Error in Stored Procedure "obj_Calib_List"'
|
|
||||||
ErrorMsg = ''
|
|
||||||
|
|
||||||
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
|
|
||||||
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
|
|
||||||
|
|
||||||
IF ErrorMsg NE '' THEN
|
|
||||||
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
||||||
RETURN ''
|
|
||||||
END
|
|
||||||
|
|
||||||
Result = ''
|
|
||||||
|
|
||||||
BEGIN CASE
|
|
||||||
CASE Method = 'SendReminders' ; GOSUB SendReminders
|
|
||||||
|
|
||||||
CASE 1
|
|
||||||
|
|
||||||
END CASE
|
|
||||||
|
|
||||||
IF ErrorMsg NE '' THEN
|
|
||||||
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
||||||
RETURN ''
|
|
||||||
END
|
|
||||||
|
|
||||||
RETURN Result
|
|
||||||
|
|
||||||
|
|
||||||
* * * * * * *
|
|
||||||
SendReminders:
|
|
||||||
* * * * * * *
|
|
||||||
|
|
||||||
OPEN 'CALIB_LIST' TO FileIn ELSE
|
|
||||||
ErrorMsg = 'Unable to open "CALIB_LIST" table. (':Method:')'
|
|
||||||
RETURN
|
|
||||||
END
|
|
||||||
|
|
||||||
CheckDt = OCONV(Date()+15,'D4/')
|
|
||||||
SelectSent = 'SELECT CALIB_LIST WITH NEXT_CAL_DT < ':QUOTE(CheckDt):' AND WITH EQ_LOC NE "Out of Service" BY NEXT_CAL_DT'
|
|
||||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
|
||||||
|
|
||||||
NoteText = ''
|
|
||||||
Depts = ''
|
|
||||||
|
|
||||||
Done = 0
|
|
||||||
LOOP
|
|
||||||
READNEXT CLNo ELSE Done = 1
|
|
||||||
UNTIL Done
|
|
||||||
READ CLRec FROM FileIn,CLNo THEN
|
|
||||||
|
|
||||||
NextCalDt = OCONV(XLATE('CALIB_LIST',CLNo,'NEXT_CAL_DT','X'),'D4/')
|
|
||||||
|
|
||||||
IF NextCalDt NE '' THEN
|
|
||||||
|
|
||||||
CLType = CLRec<CALIB_LIST_CL_TYPE$>
|
|
||||||
Dept = CLRec<CALIB_LIST_DEPT$>
|
|
||||||
IF Dept = '' THEN Dept = 'MET'
|
|
||||||
|
|
||||||
IF CLType = 'E' THEN
|
|
||||||
Desc = CLRec<CALIB_LIST_EQ_DESC$>
|
|
||||||
SN = CLRec<CALIB_LIST_EQ_SN$>
|
|
||||||
Loc = CLRec<CALIB_LIST_EQ_LOC$
|
|
||||||
NewLine = Desc:' (S/N: ':SN:') located in the ':Loc:' is due for calibration on ':NextCalDt:CRLF$
|
|
||||||
END
|
|
||||||
IF CLType = 'S' THEN
|
|
||||||
Desc = CLRec<CALIB_LIST_STD_DESC$>
|
|
||||||
SN = CLRec<CALIB_LIST_STD_SN$>
|
|
||||||
Loc = CLRec<CALIB_LIST_STD_LOC$>
|
|
||||||
NewLine = 'The NIST Standard ':Desc:' (S/N: ':SN:') located in the ':Loc:' is due for calibration on ':NextCalDt:CRLF$
|
|
||||||
END
|
|
||||||
|
|
||||||
LOCATE Dept IN Depts USING @FM SETTING Pos ELSE
|
|
||||||
Depts = INSERT(Depts,Pos,0,0,Dept)
|
|
||||||
END
|
|
||||||
NoteText<Pos> = NoteText<Pos>:NewLine
|
|
||||||
|
|
||||||
END ;* End of check for NextCalDt
|
|
||||||
END ;* End of CLRec read
|
|
||||||
REPEAT
|
|
||||||
|
|
||||||
DeptUsers = ''
|
|
||||||
DeptDescs =''
|
|
||||||
|
|
||||||
PopupLiteral = XLATE('SYSREPOSPOPUPS',@APPID<1>:'**DEPT',PDISPLAY$,'X')
|
|
||||||
|
|
||||||
CONVERT @VM:@SVM TO @FM:@VM IN PopupLiteral
|
|
||||||
|
|
||||||
LiteralCnt = COUNT(PopupLiteral,@FM) + (PopupLiteral NE '')
|
|
||||||
|
|
||||||
FOR I = 1 TO LiteralCnt
|
|
||||||
Dept = PopupLiteral<I,1>
|
|
||||||
DeptDesc = PopupLiteral<I,2>
|
|
||||||
UserNames = PopupLiteral<I,3>
|
|
||||||
LOCATE Dept IN Depts USING @FM SETTING Pos THEN
|
|
||||||
CONVERT ' ' TO '' IN UserNames
|
|
||||||
CONVERT ',' TO @VM IN UserNames
|
|
||||||
DeptUsers<Pos> = UserNames
|
|
||||||
DeptDescs<Pos> = DeptDesc
|
|
||||||
END
|
|
||||||
NEXT I
|
|
||||||
|
|
||||||
NoteSubject = "Equipment Calibration Reminder"
|
|
||||||
|
|
||||||
DeptCnt = COUNT(Depts,@FM) + (Depts NE '')
|
|
||||||
|
|
||||||
FOR I = 1 TO DeptCnt
|
|
||||||
|
|
||||||
IF NoteText<I> NE '' THEN
|
|
||||||
*NoteText<I> = 'Testing during development of new functionality - disregard':CRLF$:NoteText<I>
|
|
||||||
|
|
||||||
Recipients = DeptUsers<I>
|
|
||||||
|
|
||||||
LOCATE @USER4 IN Recipients SETTING Dummy THEN
|
|
||||||
Recipient = @USER4
|
|
||||||
|
|
||||||
SentFrom = 'System'
|
|
||||||
Subject = DeptDescs<I>:" Department - Equipment Calibration Reminder"
|
|
||||||
Message = NoteText<I>
|
|
||||||
AttachWindow = 'MASTER_CALIB_LIST'
|
|
||||||
AttachKeys = ''
|
|
||||||
SendToGroup = ''
|
|
||||||
|
|
||||||
Obj_Notes('Create',Recipient:@RM:'System':@RM:NoteSubject:@RM:NoteText<I>:@RM:'MASTER_CALIB_LIST')
|
|
||||||
|
|
||||||
END
|
|
||||||
|
|
||||||
END
|
|
||||||
|
|
||||||
NEXT I
|
|
||||||
|
|
||||||
RETURN
|
|
||||||
|
|
Reference in New Issue
Block a user