added intrusive maintenance flow logic

updated headers for nica order request

Added reactor type support to nica checklists. Refactored flow logic to just use NICA_CHECKLISTS table.

added feature flag support

gated Feature Flags menu item to supervisors

removed debug

added auto comment for intr maint flows on reactor log, intr maint flow id to react servs form, and cancel order on unsign reactor log

added exceptions for lamp and tc services, added control to edit flow id on react servs form, added auto-reactor log comment, added cancel order on unsign event

removed debug

modified NicaOrdersServices to use env variables for group resource name

added logic to filter out service flow ids for servics with is_intrusive set to false, modified security group for feature flag menu, added ability to clear intr main flow id to react serv form

removed unused equates
This commit is contained in:
Infineon\StieberD 2025-02-25 09:39:41 -07:00
parent 8f339106bd
commit 9d4ae3c5b3
38 changed files with 8351 additions and 13489 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
LSL2/STPROC/TEST_DANIEL3.txt
LSL2/STPROC/TEST_DANIEL*.txt
LSL2/STPROC/TEST_DAKOTA.txt

View File

@ -5,7 +5,7 @@
},
"body": {
"record1": {
"<1>": "declare subroutine forward_event, security_err_msg\r\ndeclare function company_comm, msg, security_check, post_event, rowexists\r\ndeclare function fieldcount, send_event, scroll_enable\r\n$insert logical\r\n$insert security_rights_equ\r\n\r\n\r\nNewRecord = false$\r\nif rowexists( 'REACT_SERVS', .serv_id->text ) then\r\n ReadOk = true$\r\nend else\r\n * user is trying to add new do they have write rights\r\n if security_check( 'React Servs', Write$ ) then\r\n ReadOk = true$ \r\n end else\r\n security_err_msg( 'React Servs', Write$ )\t \r\n\t ReadOk = false$\r\n\t .serv_id->text = ''\r\n\t Void = post_event( CtrlEntId, 'CLEAR', False$, True$ )\r\n end\r\n NewRecord = true$\r\nend\r\nif ReadOk then\r\n if get_property( @window, '@NoRead' ) then\r\n Void = set_property( @window, '@NoRead', 0 )\r\n end else\r\n * no qbf active do the read\r\n * if it is active the read already took place\r\n forward_event()\r\n end\r\n ServId = .serv_id->text\r\n ProtectVar = 'ENTRY_ID/ENTRY_DATE/SERV_CAT_DESC'\r\n swap '/' with @rm:@window:'.' in ProtectVar\r\n ProtectVar = @window:'.':ProtectVar\r\n Void = set_property( ProtectVar, 'ENABLED', 0 )\r\n if rowexists( 'REACT_SERVS', ServId ) else\r\n .entry_id->text = oconv( @user4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )\r\n .entry_date->text = oconv( date(), 'D2/' ) \r\n .graphite_or_tube->value = ''\r\n end \r\n if NewRecord else\r\n\t if security_check( 'React Servs', Edit$ ) else\r\n\t * protect all fields\r\n\t AllControls = utility( 'OBJECTLIST', @window, '' )\r\n\t Acnt = fieldcount( AllControls, @fm ) \r\n\t for i = 1 to Acnt \r\n\t ThisControl = AllControls<i>\r\n\t if ThisControl[-6,6] = '_LABEL' or index( ThisControl, 'MENU', 1 ) or index( ThisControl, 'TEXT', 1 ) else\r\n\t void = set_property( ThisControl, 'ENABLED', 0 )\r\n\t end \r\n\t next i \r\n Void = scroll_enable()\t \t \t \r\n\t end\r\n end\r\nend\r\nRETURN 0\r\n"
"<1>": "declare subroutine forward_event, security_err_msg, Set_Property\r\ndeclare function company_comm, msg, security_check, post_event, rowexists\r\ndeclare function fieldcount, send_event, scroll_enable\r\n$insert logical\r\n$insert security_rights_equ\r\n\r\n\r\nNewRecord = false$\r\nif rowexists( 'REACT_SERVS', .serv_id->text ) then\r\n ReadOk = true$\r\nend else\r\n * user is trying to add new do they have write rights\r\n if security_check( 'React Servs', Write$ ) then\r\n ReadOk = true$ \r\n end else\r\n security_err_msg( 'React Servs', Write$ )\t \r\n\t ReadOk = false$\r\n\t .serv_id->text = ''\r\n\t Void = post_event( CtrlEntId, 'CLEAR', False$, True$ )\r\n end\r\n NewRecord = true$\r\nend\r\nif ReadOk then\r\n if get_property( @window, '@NoRead' ) then\r\n Void = set_property( @window, '@NoRead', 0 )\r\n end else\r\n * no qbf active do the read\r\n * if it is active the read already took place\r\n forward_event()\r\n end\r\n ServId = .serv_id->text\r\n ProtectVar = 'ENTRY_ID/ENTRY_DATE/SERV_CAT_DESC'\r\n swap '/' with @rm:@window:'.' in ProtectVar\r\n ProtectVar = @window:'.':ProtectVar\r\n Void = set_property( ProtectVar, 'ENABLED', 0 )\r\n if rowexists( 'REACT_SERVS', ServId ) else\r\n .entry_id->text = oconv( @user4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )\r\n .entry_date->text = oconv( date(), 'D2/' ) \r\n .graphite_or_tube->value = ''\r\n end \r\n if NewRecord else\r\n\t if security_check( 'React Servs', Edit$ ) else\r\n\t * protect all fields\r\n\t AllControls = utility( 'OBJECTLIST', @window, '' )\r\n\t Acnt = fieldcount( AllControls, @fm ) \r\n\t for i = 1 to Acnt \r\n\t ThisControl = AllControls<i>\r\n\t if ThisControl[-6,6] = '_LABEL' or index( ThisControl, 'MENU', 1 ) or index( ThisControl, 'TEXT', 1 ) else\r\n\t void = set_property( ThisControl, 'ENABLED', 0 )\r\n\t end \r\n\t next i \r\n Void = scroll_enable()\t \t \t \r\n\t end\r\n End\r\n \r\n ChkVal = Get_Property(@WINDOW:'.CHB_IS_INTRUSIVE', 'CHECK')\r\n If ChkVal EQ '' then ChkVal = False$\r\n Set_Property(@WINDOW:'.CBO_INTR_MAINT_FLOW', 'ENABLED', ChkVal) \r\nend\r\nRETURN 0\r\n"
}
}
}

View File

@ -0,0 +1,389 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "1010",
"<2>": "1",
"<3>": ""
},
"record2": {
"<1>": {
"<1,1>": "NDW_FEATURE_FLAGS",
"<1,2>": "",
"<1,3>": "WINDOW",
"<1,4>": "",
"<1,5>": "0",
"<1,6>": "0",
"<1,7>": "-990",
"<1,8>": "-595",
"<1,9>": "Feature Flags",
"<1,10>": {
"<1,10,1>": "0x84CF0000",
"<1,10,2>": "0x100"
},
"<1,11>": {
"<1,11,1>": "0x8000",
"<1,11,2>": "0x80000000"
},
"<1,12>": "",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": ""
},
"<1,14>": "",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": {
"<1,18,1>": {
"<1,18,1,1>": "X",
"<1,18,1,2>": "EXECUTE",
"<1,18,1,3>": "@WINDOW_EVENTS",
"<1,18,1,4>": {
"<1,18,1,4,1>": "@SELF",
"<1,18,1,4,2>": "@EVENT",
"<1,18,1,4,3>": "@PARAM1",
"<1,18,1,4,4>": "@PARAM2",
"<1,18,1,4,5>": "@PARAM3",
"<1,18,1,4,6>": "@PARAM4",
"<1,18,1,4,7>": "@PARAM5",
"<1,18,1,4,8>": "@PARAM6"
},
"<1,18,1,5>": "",
"<1,18,1,6>": "",
"<1,18,1,7>": "",
"<1,18,1,8>": "",
"<1,18,1,9>": "",
"<1,18,1,10>": "",
"<1,18,1,11>": "",
"<1,18,1,12>": "",
"<1,18,1,13>": "",
"<1,18,1,14>": "",
"<1,18,1,15>": "COMMEVT",
"<1,18,1,16>": "0"
}
},
"<1,19>": "CREATE",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": {
"<1,24,1>": "",
"<1,24,2>": "0",
"<1,24,3>": "0",
"<1,24,4>": "0",
"<1,24,5>": "",
"<1,24,6>": "0",
"<1,24,7>": "",
"<1,24,8>": "",
"<1,24,9>": "",
"<1,24,10>": "0",
"<1,24,11>": "0",
"<1,24,12>": "0",
"<1,24,13>": "0",
"<1,24,14>": "0",
"<1,24,15>": "0",
"<1,24,16>": "0",
"<1,24,17>": "0"
},
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*INFINEON",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
"<1,37,1>": "0X10001",
"<1,37,2>": "0X10001"
},
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": "",
"<1,56>": "",
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": {
"<1,62,1>": "0",
"<1,62,2>": "",
"<1,62,3>": "",
"<1,62,4>": "0",
"<1,62,5>": "0",
"<1,62,6>": "0",
"<1,62,7>": "",
"<1,62,8>": "0.50",
"<1,62,9>": "5.00",
"<1,62,10>": "0.00"
},
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "LSL2*STPROC**NDW_FEATURE_FLAGS_EVENTS",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "0",
"<1,107>": "",
"<1,108>": ""
}
},
"record3": {
"<1>": {
"<1,1>": "OLE_EDT_FEATURE_FLAGS",
"<1,2>": "",
"<1,3>": "OLECONTROL.SRP.EditTable.1",
"<1,4>": "NDW_FEATURE_FLAGS",
"<1,5>": "12",
"<1,6>": "12",
"<1,7>": "-14",
"<1,8>": "-11",
"<1,9>": "SRP.EditTable.1",
"<1,10>": {
"<1,10,1>": "0x56000000",
"<1,10,2>": "0x0"
},
"<1,11>": {
"<1,11,1>": "0xC004",
"<1,11,2>": "0x80000000"
},
"<1,12>": "1",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": ""
},
"<1,14>": "0",
"<1,15>": {
"<1,15,1>": {
"<1,15,1,1>": "Segoe UI",
"<1,15,1,2>": "-12",
"<1,15,1,3>": "400",
"<1,15,1,4>": "0",
"<1,15,1,5>": "0",
"<1,15,1,6>": "0",
"<1,15,1,7>": "0",
"<1,15,1,8>": "34",
"<1,15,1,9>": "0",
"<1,15,1,10>": "3",
"<1,15,1,11>": "2",
"<1,15,1,12>": "1"
}
},
"<1,16>": "",
"<1,17>": "",
"<1,18>": {
"<1,18,1>": {
"<1,18,1,1>": "X",
"<1,18,1,2>": "EXECUTE",
"<1,18,1,3>": "@WINDOW_EVENTS",
"<1,18,1,4>": {
"<1,18,1,4,1>": "@SELF",
"<1,18,1,4,2>": "@EVENT",
"<1,18,1,4,3>": "@PARAM1",
"<1,18,1,4,4>": "@PARAM2",
"<1,18,1,4,5>": "@PARAM3",
"<1,18,1,4,6>": "@PARAM4",
"<1,18,1,4,7>": "@PARAM5",
"<1,18,1,4,8>": "@PARAM6"
},
"<1,18,1,5>": "",
"<1,18,1,6>": "",
"<1,18,1,7>": "",
"<1,18,1,8>": "",
"<1,18,1,9>": "",
"<1,18,1,10>": "",
"<1,18,1,11>": "",
"<1,18,1,12>": "",
"<1,18,1,13>": "",
"<1,18,1,14>": "",
"<1,18,1,15>": "COMMEVT",
"<1,18,1,16>": "0"
}
},
"<1,19>": "OLE",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": "",
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "0000000000000000",
"<1,37>": "",
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": {
"<1,55,1>": "OLE.AllowXPTheme",
"<1,55,2>": "OLE.ComboDropDown",
"<1,55,3>": "OLE.DblClickToEdit",
"<1,55,4>": "OLE.EditContextMenu",
"<1,55,5>": "OLE.EditText",
"<1,55,6>": "OLE.Focus",
"<1,55,7>": "OLE.HeaderRowCount",
"<1,55,8>": "OLE.Modified",
"<1,55,9>": "OLE.PassEnterKey",
"<1,55,10>": "OLE.ScrollBarsVisible",
"<1,55,11>": "OLE.SingleEscape",
"<1,55,12>": "OLE.TextRenderStyle"
},
"<1,56>": {
"<1,56,1>": "0",
"<1,56,2>": "0",
"<1,56,3>": "1",
"<1,56,4>": "1",
"<1,56,5>": "",
"<1,56,6>": "0",
"<1,56,7>": "1",
"<1,56,8>": "0",
"<1,56,9>": "0",
"<1,56,10>": "Auto|Auto",
"<1,56,11>": "0",
"<1,56,12>": "EditField|Ellipses"
},
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": "",
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "",
"<1,107>": "",
"<1,108>": ""
}
},
"record4": {
"<1>": ""
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,103 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "-1",
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "Segoe UI",
"<6,1,2>": "-12",
"<6,1,3>": "400",
"<6,1,4>": "0",
"<6,1,5>": "0",
"<6,1,6>": "0",
"<6,1,7>": "1",
"<6,1,8>": "0",
"<6,1,9>": "0",
"<6,1,10>": "0",
"<6,1,11>": "0",
"<6,1,12>": "0"
}
},
"<7>": "FEATURE_FLAGS",
"<8>": "",
"<9>": {
"<9,1>": {
"<9,1,1>": "3",
"<9,1,2>": "15",
"<9,1,3>": "L",
"<9,1,4>": "L",
"<9,1,5>": "<<default>>",
"<9,1,6>": "Modify User"
},
"<9,2>": {
"<9,2,1>": "4",
"<9,2,2>": "10",
"<9,2,3>": "L",
"<9,2,4>": "L",
"<9,2,5>": "DT2/^H",
"<9,2,6>": "Modify Datetime"
},
"<9,3>": {
"<9,3,1>": "5",
"<9,3,2>": "10",
"<9,3,3>": "C",
"<9,3,4>": "L",
"<9,3,5>": "BOn,Off",
"<9,3,6>": "Feature Flag"
},
"<9,4>": {
"<9,4,1>": "6",
"<9,4,2>": "50",
"<9,4,3>": "L",
"<9,4,4>": "L",
"<9,4,5>": "<<default>>",
"<9,4,6>": "Modify Comment"
}
},
"<10>": "R",
"<11>": "0",
"<12>": "Feature History",
"<13>": "",
"<14>": "E",
"<15>": "1",
"<16>": "1",
"<17>": "1",
"<18>": "1",
"<19>": "1",
"<20>": "1",
"<21>": "1",
"<22>": "0",
"<23>": "0",
"<24>": "0",
"<25>": "0",
"<26>": "",
"<27>": "",
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "0",
"<32>": "0",
"<33>": "0",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

View File

@ -630,7 +630,6 @@ TechSign:
Action = Get_Property(@Window:'.TECH_SIGN', 'TEXT')
If Action EQ 'Sign' then
TechSig = Get_Property(@WINDOW:'.TECH_SIG','DEFPROP')
IF TechSig NE '' THEN
@ -678,7 +677,17 @@ TechSign:
Valid = Dialog_Box('QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
If Valid then
Def = ""
Def<MCAPTION$> = "Signing Reactor Log..."
Def<MCOL$> = -2
Def<MROW$> = -2
Def<MTYPE$> = "U"
MsgUp = Msg(@window, Def)
SuccessfulSign = Reactor_Log_Services('SignReactorLog', ReactorLogNo, @USER4)
Msg(@window, MsgUp) ;* take down the message
If Not(SuccessfulSign) then
Error_Services('DisplayError')
ActiveRlNicaOrderIds = Nica_Orders_Services('GetActiveOrders', 'REACTOR_LOG', ReactorLogNo)
@ -722,7 +731,18 @@ TechSign:
RLKey = Get_Property(@Window:'.REACTOR_LOG_NO', 'TEXT')
If RLKey NE '' then
Set_Property(@Window, 'SAVEWARN', False$)
Def = ""
Def<MCAPTION$> = "Unsigning Reactor Log..."
Def<MCOL$> = -2
Def<MROW$> = -2
Def<MTYPE$> = "U"
MsgUp = Msg(@window, Def)
Reactor_Log_Services('ClearSignature', RLKey)
Msg(@window, MsgUp) ;* take down the message
If Error_Services('NoError') then
Post_Event(@Window, 'READ')
end else

View File

@ -9,13 +9,11 @@ COMPILE FUNCTION Comm_React_Servs(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event
DECLARE SUBROUTINE ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow,
DECLARE SUBROUTINE obj_Notes, Security_Err_Msg, End_Window, Forward_Event, Start_Window, Create_Note
DECLARE SUBROUTINE React_Servs_Services
DECLARE SUBROUTINE React_Servs_Services, React_Servs_Events
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Utility, Center_Window, Popup, Collect.Ixvals
DECLARE FUNCTION Send_Message, Msg, Security_Check, RowExists, NextKey, End_Window, React_Servs_Services
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT LSL_USERS_EQU
@ -44,40 +42,11 @@ BEGIN CASE
CASE Event[1,3] = 'QBF' ; GOSUB Refresh
END CASE
CASE EntID = @WINDOW:'.LU_SYSTEM' AND Event = 'CLICK' ; GOSUB LUSystem
CASE EntID = @WINDOW:'.LU_REACT_ITEM' AND Event = 'CLICK' ; GOSUB LUReactItem
CASE EntID = @WINDOW:'.LU_ITEM_TYPE' AND Event = 'CLICK' ; GOSUB LUReactItemType
/*
CASE EntID = @WINDOW:'.SIGN_INSP' AND Event = 'CLICK' ; GOSUB SignInsp
CASE EntID = @WINDOW:'.SIGN_SCAN' AND Event = 'CLICK' ; GOSUB SignScan
CASE EntID = @WINDOW:'.SPEC_BRIGHTLIGHT' AND Event = 'CLICK' ; GOSUB Refresh
CASE EntID = @WINDOW:'.SPEC_MICROSCOPE' AND Event = 'CLICK' ; GOSUB Refresh
CASE EntID = @WINDOW:'.REFRESH_SPEC' AND Event = 'CLICK' ; GOSUB RefreshSpec
CASE EntID = @WINDOW:'.CI_TAB' AND Event = 'CLICK' ; GOSUB Page
CASE FIELD(EntID,'.',2) = 'ROTR_ACTION' AND Event = 'CLICK' ; GOSUB Refresh
CASE EntID = @WINDOW:'.CLEAN_RESULTS'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB CleanPC
CASE Event = 'DBLCLK' ; GOSUB CleanDC
END CASE
CASE EntID = @WINDOW:'.INSP_RESULTS'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB InspPC
CASE Event = 'DBLCLK' ; GOSUB InspDC
END CASE
CASE EntID = @WINDOW:'.SCAN_RESULTS'
BEGIN CASE
CASE Event = 'POSCHANGED' ; GOSUB ScanPC
CASE Event = 'DBLCLK' ; GOSUB ScanDC
END CASE
CASE EntID = @WINDOW:'.SEND_SPC' AND Event = 'CLICK' ; GOSUB SendSPC
*/
CASE EntID = @WINDOW:'.CHB_IS_INTRUSIVE' AND Event = 'CLICK' ; GOSUB EnableFlowCode
CASE EntID = @WINDOW:'.LU_SYSTEM' AND Event = 'CLICK' ; GOSUB LUSystem
CASE EntID = @WINDOW:'.LU_REACT_ITEM' AND Event = 'CLICK' ; GOSUB LUReactItem
CASE EntID = @WINDOW:'.LU_ITEM_TYPE' AND Event = 'CLICK' ; GOSUB LUReactItemType
CASE 1
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
@ -92,357 +61,176 @@ END
RETURN Result
* * * * * * *
Create:
* * * * * * *
IF NOT(Security_Check('React Servs',Read$)) THEN
Security_Err_Msg('React Servs',Read$)
void = End_Window( @WINDOW, '' )
RETURN
END
IF NOT(Security_Check('React Servs',Edit$)) THEN
Security_Err_Msg('React Servs',Edit$)
END
ReactMetrics = React_Servs_Services('GetReactMetrics')
Set_Property(@Window:'.ASSOC_METRICS', 'LIST', ReactMetrics)
obj_Appwindow('Create',@WINDOW)
GOSUB Refresh
* * * * * * *
IF NOT(Security_Check('React Servs',Read$)) THEN
Security_Err_Msg('React Servs',Read$)
void = End_Window( @WINDOW, '' )
RETURN
END
IF NOT(Security_Check('React Servs',Edit$)) THEN
Security_Err_Msg('React Servs',Edit$)
END
ReactMetrics = React_Servs_Services('GetReactMetrics')
Set_Property(@Window:'.ASSOC_METRICS', 'LIST', ReactMetrics)
obj_Appwindow('Create',@WINDOW)
GOSUB Refresh
RETURN
* * * * * * *
Clear:
* * * * * * *
Send_Event(@WINDOW,'PAGE',1)
IF Get_Property(@WINDOW,'@READONLY') THEN
obj_AppWindow('ReadOnly',@RM:1) ;* Reenables data bound controls
Set_Property(@WINDOW,'@READONLY',0) ;* Clear flag on window
END
Send_Event(@WINDOW,'PAGE',1)
IF Get_Property(@WINDOW,'@READONLY') THEN
obj_AppWindow('ReadOnly',@RM:1) ;* Reenables data bound controls
Set_Property(@WINDOW,'@READONLY',0) ;* Clear flag on window
END
* GOSUB EnableFlowCode
* React_Servs_Events(@Window, 'READ')
* * * * * * *
Refresh:
* * * * * * *
/*
* * * * * Samples * * * * * *
ACStatus = Get_Property(@WINDOW:'.AC_STATUS','TEXT')
IF ACStatus NE '' THEN
IF ACStatus[1,1] = 'C' THEN
Set_Property(@WINDOW:'.AC_STATUS','BACKCOLOR',RED$)
* QBF buttons
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
END ELSE
Set_Property(@WINDOW:'.AC_STATUS','BACKCOLOR',GREEN$)
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
END
END
Captive = Get_Property(@WINDOW:'.CAPTIVE','CHECK')
Consignment = Get_Property(@WINDOW:'.CONSIGNMENT','CHECK')
BEGIN CASE
CASE Captive
Set_Property(@WINDOW:'.ORD_TYPE','BACKCOLOR',LTBLUE$)
CASE Consignment
Set_Property(@WINDOW:'.ORD_TYPE','BACKCOLOR',YELLOW$)
CASE 1
Set_Property(@WINDOW:'.ORD_TYPE','BACKCOLOR',GREEN$)
END CASE
Ctrls = @WINDOW:'.CHANGE_VISION_ORD_NO':@RM ; Props = 'ENABLED':@RM
Ctrls := @WINDOW:'.CUST_BUTTON':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.CONTACT_BUTTON':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.CREATE_WO_BUTTON':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.VIEW_AC':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.NEW_ITEM_BUTTON':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.SHIP_TO_EDIT':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.BILL_TO_EDIT':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.LU_CUST_NO':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.LU_COMP_CONTACT':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.LU_AC' ; Props := 'ENABLED'
IF Get_Property(@WINDOW,'@READONLY') THEN
Vals = STR('0':@RM,11) ;* ReadOnly mode - kill the buttons
END ELSE
Vals = STR('1':@RM,11) ;* Normal mode - enable the buttons
END
Vals[-1,1] = ''
Set_Property(Ctrls,Props,Vals) ;* Kill the function buttons when in view only mode
*/
* * * * * End of Samples * * * * * *
* QBF buttons
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
END ELSE
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
END
Set_Property(Ctrls,Props,Vals)
* Turn edit table symbolic column backgrounds to green
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
ETCtrls = ETSymbolics<1>
ETCols = ETSymbolics<2>
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
ETCtrl = ETCtrls<1,I>
ETList = Get_Property(ETCtrl,'LIST')
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
IF ETList<Line,1> NE '' THEN
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
NEXT N
END
Set_Property(Ctrls,Props,Vals)
* Turn edit table symbolic column backgrounds to green
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
ETCtrls = ETSymbolics<1>
ETCols = ETSymbolics<2>
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
ETCtrl = ETCtrls<1,I>
ETList = Get_Property(ETCtrl,'LIST')
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
IF ETList<Line,1> NE '' THEN
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
NEXT N
END
NEXT I
NEXT I
NEXT I
GOSUB EnableFlowCode
* React_Servs_Events(@Window, 'READ')
RETURN
* * * * * * *
Page:
* * * * * * *
obj_Appwindow('Page')
obj_Appwindow('Page')
RETURN
* * * * * * *
LUSystem:
* * * * * * *
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ReturnCtrl = ''
END
Set_Status(0)
ReactSystem = Popup(@WINDOW,'','REACT_SYSTEM')
IF ReactSystem = '' THEN RETURN
obj_Appwindow('LUValReturn',ReactSystem:@RM:ReturnCtrl)
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ReturnCtrl = ''
END
Set_Status(0)
ReactSystem = Popup(@WINDOW,'','REACT_SYSTEM')
IF ReactSystem = '' THEN RETURN
obj_Appwindow('LUValReturn',ReactSystem:@RM:ReturnCtrl)
RETURN
* * * * * * *
LUREactItem:
* * * * * * *
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ReturnCtrl = ''
END
Set_Status(0)
ReactItem = Popup(@WINDOW,'','REACT_ITEMS')
IF ReactItem = '' THEN RETURN
obj_Appwindow('LUValReturn',ReactItem:@RM:ReturnCtrl)
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ReturnCtrl = ''
END
Set_Status(0)
ReactItem = Popup(@WINDOW,'','REACT_ITEMS')
IF ReactItem = '' THEN RETURN
obj_Appwindow('LUValReturn',ReactItem:@RM:ReturnCtrl)
RETURN
* * * * * * *
LUReactItemType:
* * * * * * *
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ErrorMsg = 'ReturnCtrl not specified'
RETURN
END
RetVal = Popup(@WINDOW,'','REACT_ITEM_TYPE')
IF RetVal = '' THEN RETURN
obj_Appwindow('LUValReturn',RetVal:@RM:ReturnCtrl)
ReturnCtrl = Parm1
IF ReturnCtrl NE '' THEN
ReturnCtrl = @WINDOW:'.':ReturnCtrl
END ELSE
ErrorMsg = 'ReturnCtrl not specified'
RETURN
END
RetVal = Popup(@WINDOW,'','REACT_ITEM_TYPE')
IF RetVal = '' THEN RETURN
obj_Appwindow('LUValReturn',RetVal:@RM:ReturnCtrl)
RETURN
* * * * * * *
Read:
* * * * * * *
/*
NewRecord = false$
if rowexists( 'REACT_SERVS', .serv_id->text ) then
ReadOk = true$
end else
* user is trying to add new do they have write rights
if security_check( 'React Servs', Write$ ) then
ReadOk = true$
end else
security_err_msg( 'React Servs', Write$ )
ReadOk = false$
.serv_id->text = ''
Void = post_event( CtrlEntId, 'CLEAR', False$, True$ )
end
NewRecord = true$
end
if ReadOk then
if get_property( @window, '@NoRead' ) then
Void = set_property( @window, '@NoRead', 0 )
end else
* no qbf active do the read
* if it is active the read already took place
forward_event()
end
ServId = .serv_id->text
ProtectVar = 'ENTRY_ID/ENTRY_DATE/SERV_CAT_DESC'
swap '/' with @rm:@window:'.' in ProtectVar
ProtectVar = @window:'.':ProtectVar
Void = set_property( ProtectVar, 'ENABLED', 0 )
if rowexists( 'REACT_SERVS', ServId ) else
.entry_id->text = oconv( @user4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )
.entry_date->text = oconv( date(), 'D2/' )
.graphite_or_tube->value = ''
end
if NewRecord else
if security_check( 'React Servs', Edit$ ) else
* protect all fields
AllControls = utility( 'OBJECTLIST', @window, '' )
Acnt = fieldcount( AllControls, @fm )
for i = 1 to Acnt
ThisControl = AllControls<i>
if ThisControl[-6,6] = '_LABEL' or index( ThisControl, 'MENU', 1 ) or index( ThisControl, 'TEXT', 1 ) else
void = set_property( ThisControl, 'ENABLED', 0 )
end
next i
Void = scroll_enable()
end
end
end
*/
/*
NewRecord = false$
if rowexists( 'REACT_SERV_CAT', .cat_id->text ) then
ReadOk = true$
end else
* user is trying to add new do they have write rights
if security_check( 'React Serv Cat', Write$ ) then
ReadOk = true$
end else
security_err_msg( 'React Serv Cat', Write$ )
ReadOk = false$
.cat_id->text = ''
Void = post_event( CtrlEntId, 'CLEAR', False$, True$ )
end
NewRecord = true$
end
if ReadOk then
if get_property( @window, '@NoRead' ) then
Void = set_property( @window, '@NoRead', 0 )
end else
* no qbf active do the read
* if it is active the read already took place
forward_event()
end
CatId = .cat_id->text
ProtectVar = 'ENTRY_ID/ENTRY_DATE'
swap '/' with @rm:@window:'.' in ProtectVar
ProtectVar = @window:'.':ProtectVar
Void = set_property( ProtectVar, 'ENABLED', 0 )
if rowexists( 'REACT_SERV_CAT', CatId ) else
.entry_id->text = oconv( @user4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )
.entry_date->text = oconv( date(), 'D2/' )
end
if NewRecord else
if security_check( 'React Serv Cat', Edit$ ) else
* protect all fields
AllControls = utility( 'OBJECTLIST', @window, '' )
Acnt = fieldcount( AllControls, @fm )
for i = 1 to Acnt
ThisControl = AllControls<i>
if ThisControl[-6,6] = '_LABEL' or index( ThisControl, 'MENU', 1 ) or index( ThisControl, 'TEXT', 1 ) else
void = set_property( ThisControl, 'ENABLED', 0 )
end
next i
Void = scroll_enable()
end
end
end
RETURN 0
*/
/*
OrderNo = Get_Property(@WINDOW:'.ORD_NO','TEXT')
IF RowExists('ORDER',OrderNo) THEN
IF NOT(Security_Check('Order',EDIT$)) THEN
obj_AppWindow('ReadOnly',@WINDOW) ;* disable all database controls
Set_Property(@WINDOW,'@READONLY',1)
END
END ELSE
IF NOT(Security_Check('Order',WRITE$)) THEN
Send_Event(@WINDOW,'CLEAR')
Security_Err_Msg('Order',WRITE$)
RETURN
END
END
*/
GOSUB Refresh
GOSUB Refresh
RETURN
@ -450,195 +238,41 @@ RETURN
Write:
* * * * * * *
/*
OrderNo = Get_Property(@WINDOW:'.ORD_NO','TEXT')
Message = ''
IF RowExists('ORDER',OrderNo) THEN
IF Get_Property(@WINDOW,'SAVEWARN') THEN
Message = 'Order No. ':OrderNo:' has been changed.'
END
END ELSE
Message = 'New Order ':QUOTE(OrderNo):' entered into system.'
END
IF Message NE '' THEN
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X')
SentFrom = @USER4
Subject = 'New/Update Order':OrderNo
AttachWindow = 'ORDER2'
AttachKey = OrderNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
*obj_Notes('Create',Parms) ;* Per Request from Customer Service
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
END
*/
Result = 1
Result = 1
RETURN
* * * * * * *
Delete:
* * * * * * *
IF Security_Check('React Servs',Delete$ ) THEN
Result = 1 ;* Proceed with delete
END ELSE
Security_Err_Msg('React Servs',Delete$)
Result = 0 ;* Stop event chain (and delete)
END
IF Security_Check('React Servs',Delete$ ) THEN
Result = 1 ;* Proceed with delete
END ELSE
Security_Err_Msg('React Servs',Delete$)
Result = 0 ;* Stop event chain (and delete)
END
RETURN
* * * * * * *
Close:
* * * * * * *
obj_Notes('Inbox',@USER4) ;* Checks for any new messages
obj_Appwindow('CardReturn',@WINDOW)
RETURN
* * * * * * *
ItemDC:
* * * * * * *
/*
OrderNo = Get_Property(@WINDOW,'ID')
CtrlEntID = @WINDOW:'.ORDER_DET'
CurrPos = Get_Property(CtrlEntID,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
IF CurrCol = COL$ITEM_NO THEN
ItemNo = Get_Property(CtrlEntID,'CELLPOS',COL$ITEM_NO:@FM:CurrRow)
IF OrderNo NE '' AND ItemNo NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
DetWindow = 'ORDER_DET'
DetKeys = OrderNo:'*':ItemNo
DefaultRec = ''
RetKey = OrderNo
RetPage = 1
RetCtrl = CtrlEntID
RetPos = CurrPos
oAParms = DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewDetail',oAParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
END
END ;* End of ItemNo column
IF CurrCol = COL$QUOTE_NO THEN
QuoteNo = Get_Property(CtrlEntID,'CELLPOS',COL$QUOTE_NO:@FM:CurrRow)
IF OrderNo NE '' AND QuoteNo NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
DetWindow = 'QUOTE2'
DetKeys = QuoteNo
DefaultRec = ''
RetKey = OrderNo
RetPage = 1
RetCtrl = CtrlEntID
RetPos = CurrPos
oAParms = DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewDetail',oAParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
END
END ;* End of QuoteNo column
IF CurrCol = COL$WO_NO THEN
WONo = Get_Property(CtrlEntID,'CELLPOS',COL$WO_NO:@FM:CurrRow)
IF OrderNo NE '' AND WONo NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
DetWindow = 'WO_LOG2'
DetKeys = WONo
DefaultRec = ''
RetKey = OrderNo
RetPage = 1
RetCtrl = CtrlEntID
RetPos = CurrPos
oAParms = DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewDetail',oAParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
END
END ;* End of WO column
IF CurrCol = COL$EPI_PN THEN
EpiPN = Get_Property(CtrlEntID,'CELLPOS',COL$EPI_PN:@FM:CurrRow)
IF OrderNo NE '' AND EpiPN NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
DetWindow = 'EPI_PART'
DetKeys = EpiPN
DefaultRec = ''
RetKey = OrderNo
RetPage = 1
RetCtrl = CtrlEntID
RetPos = CurrPos
oAParms = DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewDetail',oAParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
END
END ;* End of Epi Part Number column
*/
obj_Notes('Inbox',@USER4) ;* Checks for any new messages
obj_Appwindow('CardReturn',@WINDOW)
RETURN
EnableFlowCode:
ChkVal = Get_Property(@WINDOW:'.CHB_IS_INTRUSIVE', 'CHECK')
If ChkVal EQ '' then ChkVal = False$
Set_Property(@WINDOW:'.CBO_INTR_MAINT_FLOW', 'ENABLED', ChkVal)
return

View File

@ -25,6 +25,7 @@ $INSERT RLIST_EQUATES
$INSERT CLEAN_INSP_EQUATES
$INSERT TOOL_PARMS_EQUATES
$INSERT SERVICES_EQUATES
$INSERT FEATURE_FLAGS_EQUATES
EQU COL$QA_MET_PHASE_MIN TO 17
@ -45,7 +46,7 @@ Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert,
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array
Declare function Development_Services
Declare function Development_Services, Datetime
GoToService
@ -632,6 +633,59 @@ Service DeployRoutine(StoredProcNames)
end service
Service GetFeatureFlagArray()
FeatureFlagArray = ''
Open 'FEATURE_FLAGS' to hTable then
Select hTable
RowIndex = 0
EOF = False$
Loop
ReadNext KeyId else EOF = True$
Until EOF
RowIndex += 1
Read Rec from hTable, KeyId then
FeatureFlagArray<RowIndex, 1> = KeyId
FeatureFlagArray<RowIndex, 2> = Rec<FEATURE_FLAGS.FEATURE_DESCRIPTION$>
FeatureFlagArray<RowIndex, 3> = Rec<FEATURE_FLAGS.ENABLED$>
end
Repeat
end
Response = FeatureFlagArray
end service
Service ChangeFeatureState(FeatureId, ModifyState, ModifyUser, ModifyComment)
ErrorMsg = ''
If RowExists('FEATURE_FLAGS', FeatureId) then
If ( (ModifyState NE '') and (ModifyUser NE '') ) then
FeatureRec = Database_Services('ReadDataRow', 'FEATURE_FLAGS', FeatureId)
If Error_Services('NoError') then
FeatureRec<FEATURE_FLAGS.ENABLED$> = ModifyState
FeatureRec<FEATURE_FLAGS.MODIFY_USER$, -1> = ModifyUser
FeatureRec<FEATURE_FLAGS.MODIFY_DTM$, -1> = Datetime()
FeatureRec<FEATURE_FLAGS.MODIFY_STATE$, -1> = ModifyState
FeatureRec<FEATURE_FLAGS.MODIFY_COMMENT$, -1> = ModifyComment
Database_Services('WriteDataRow', 'FEATURE_FLAGS', FeatureId, FeatureRec, True$, False$, False$)
end
end else
ErrorMsg = 'Error in ':Service:' service. Null ModifyState or ModifyUser passed in.'
end
end else
ErrorMsg = 'Error in ':Service:' service. FEATURE_FLAGS "':FeatureId:'" does not exist!'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
Response = False$
end else
Response = True$
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -642,4 +696,3 @@ ClearCursors:
Next counter
return

View File

@ -45,6 +45,7 @@ Common /EnvironmentServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, U
Declare function Environment_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services
Declare function Active_Directory_Services, SRP_Send_Mail, RTI_GetNetworkUserName, Utility
Declare subroutine Environment_Services, Memory_Services, SRP_List, SRP_FastArray, Database_Services, GetTempPath
Declare function GetEnvironmentVariable
GoToService else
Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
@ -537,6 +538,21 @@ Service GetIfxEmailServer()
end service
Service GetEnvironmentVariable(VariableName)
If VariableName NE '' then
VarLength = GetEnvironmentVariable(VariableName, "", 0) + 1
VarValue = space(VarLength+1)
VarLength = GetEnvironmentVariable(VariableName, VarValue, VarLength)
VarValue = VarValue[1, VarLength]
Response = VarValue
end else
Error_Services('Add', 'Error in service ':Service:'. Null VariableName passed in')
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,172 @@
Compile function NDW_FEATURE_FLAGS_EVENTS(CtrlEntId, Event, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
/***********************************************************************************************************************
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_Feature_Flag_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)
03/07/2025 djs Created initial commuter module.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
#window NDW_FEATURE_FLAG_EVENTS
$Insert EVENT_SETUP
$Insert LOGICAL
$Insert APP_INSERTS
$Insert REACTOR_LOG_EQUATES
$Insert POPUP_EQUATES
Equ NUM_COLS$ To 4
Equ COL.FEATURE_FLAG_ID$ To 1
Equ COL.FEATURE_DESCRIPTION$ To 2
Equ COL.ENABLED$ To 3
Equ COL.BTN_VIEW_HISTORY$ To 4
Declare subroutine Post_Event, Database_Services, PlaceDialog, Development_Services, ErrMsg, Popup
Declare function Datetime, SRP_String, Database_Services, Development_Services
// 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 else
// Event not implemented
end
Return EventFlow or 1
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Event Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Event WINDOW.CREATE(CreateParam)
GoSub SetupOLEControls
PlaceDialog(-2, -2)
end event
Event OLE_EDT_FEATURE_FLAGS.OnCheckChanged(Cell, OldCheckVal, NewCheckVal)
Response = Dialog_Box('NDW_ADD_COMMENT', @Window, True$)
OkClicked = Response<1>
Comment = Response<2>
Row = Field(Cell, ';', 2)
If OkClicked and Comment NE '' then
// Record new enabled state and record the user, datetime, and comment
FeatureRow = ''
FeatureId = Get_Property(CtrlEntId, 'OLE.CellText[':1:';':Row:']')
Development_Services('ChangeFeatureState', FeatureId, NewCheckVal, @User4, Comment)
If Error_Services('HasError') then
Error_Services('DisplayError')
Set_Property(CtrlEntID, "OLE.CellCheck[3; ":Row:"]", OldCheckVal)
end
end else
Set_Property(CtrlEntID, "OLE.CellCheck[3; ":Row:"]", OldCheckVal)
end
end event
Event OLE_EDT_FEATURE_FLAGS.OnButtonClick(Cell, Point, Button, Shift, Ctrl)
// Record new enabled state and record the user, datetime, and comment
FeatureRow = ''
Row = Field(Cell, ';', 2)
FeatureId = Get_Property(CtrlEntId, 'OLE.CellText[':1:';':Row:']')
If RowExists('FEATURE_FLAGS', FeatureId) then
FeatureRec = Database_Services('ReadDataRow', 'FEATURE_FLAGS', FeatureId)
If Error_Services('NoError') then
PopupRec = ""
PopupRec<PDISPLAY$> = FeatureId
Popup(@Window, PopupRec, 'FEATURE_FLAGS_HISTORY')
end else
Error_Services('DisplayError')
end
end else
ErrMsg('Feature record not found!')
end
end event
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SetupOLEControls:
FeatureFlagArray = Development_Services('GetFeatureFlagArray')
NumRows = DCount(FeatureFlagArray, @FM)
OLECtrl = @Window:'.OLE_EDT_FEATURE_FLAGS'
Set_Property(OLECtrl, 'OLE.Redraw', False$)
Set_Property(OLECtrl, "OLE.Dimension", NUM_COLS$:@FM:NumRows)
TitleList = 'Feature ID':@VM:'Feature Description':@VM:'Feature Enabled':@VM:'Feature History'
Set_Property(OLECtrl, 'OLE.TitleList', TitleList)
DataColumn = 200
Set_Property(OLECtrl, "OLE.DataColumn[1]", DataColumn)
DataColumn<4> = True$ ; // Autosize Description column
Set_Property(OLECtrl, "OLE.DataColumn[2]", DataColumn)
DataColumn<1> = 120
DataColumn<4> = False$
Set_Property(OLECtrl, "OLE.DataColumn[3]", DataColumn)
DataColumn<1> = 100
Set_Property(OLECtrl, "OLE.DataColumn[4]", DataColumn)
Set_Property(OLECtrl, "OLE.CellProtection[1; All]", 'RO')
Set_Property(OLECtrl, "OLE.CellProtection[2; All]", 'RO')
Set_Property(OLECtrl, "OLE.HeaderColumn[1]", 40:@FM:False$)
Set_Property(OLECtrl, "OLE.CellMultilined[All; All]", True$)
Set_Property(OLECtrl, "OLE.AllowDeletions", False$)
Set_Property(OLECtrl, "OLE.CellType[3; All]", "Check Box":@FM:False$:@FM:False$:@FM:False$)
TypeArray = "Push Button"
Set_Property(OLECtrl, "OLE.CellType[4; All]", TypeArray)
Set_Property(OLECtrl, "OLE.CellAlignment[3; All]", 'C':@FM:'C':@FM:'L')
Set_Property(OLECtrl, "OLE.CellAlignment[4; All]", 'C':@FM:'C':@FM:'C')
Set_Property(OLECtrl, "OLE.List", FeatureFlagArray)
Set_Property(OLECtrl, "OLE.CellText[4; All]", 'View History')
Set_Property(OLECtrl, 'OLE.Border', 'XP Flat')
Set_Property(OLECtrl, 'OLE.Font', 'Segoe UI' : @SVM : '15')
Set_Property(OLECtrl, 'OLE.Redraw', True$)
Qualify = ''
Qualify<1> = 1
Qualify<4> = 0
Send_Message(OLECtrl, 'QUALIFY_EVENT', 'OLE.OnCheckChanged', Qualify)
Send_Message(OLECtrl, 'QUALIFY_EVENT', 'OLE.OnButtonClick', Qualify)
return

View File

@ -301,6 +301,10 @@ Event WINDOW.CREATE(CreateParam)
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")
@ -845,7 +849,3 @@ FixFont:
return

View File

@ -0,0 +1,233 @@
Function Nica_Orders_Checklists_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
/***********************************************************************************************************************
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 : Nica_Orders_Checklists_Flows_Actions
Description : Handles calculated columns and MFS calls for the current table.
Notes : This function uses @ID, @RECORD, and @DICT to make sure {ColumnName} references work correctly.
If called from outside of a calculated column these will need to be set and restored.
Parameters :
Action [in] -- Name of the action to be taken
CalcColName [in] -- Name of the calculated column that needs to be processed. Normally this should only be
populated when the CalcField action is being used.
FSList [in] -- The list of MFSs and the BFS name for the current file or volume. This is an @SVM
delimited array, with the current MFS name as the first value in the array, and the BFS
name as the last value. Normally set by a calling MFS.
Handle [in] -- The file handle of the file or media map being accessed. Note, this does contain the
entire handle structure that the Basic+ Open statement would provide. Normally set by a
calling MFS.
Name [in] -- The name (key) of the record or file being accessed. Normally set by a calling MFS.
FMC [in] -- Various functions. Normally set by a calling MFS.
Record [in] -- The entire record (for record-oriented functions) or a newly-created handle (for
"get handle" functions). Normally set by a calling MFS.
Status [in/out] -- Indicator of the success or failure of an action. Normally set by the calling MFS but
for some actions can be set by the action handler to indicate failure.
OrigRecord [in] -- Original content of the record being processed by the current action. This is
automatically being assigned by the WRITE_RECORD and DELETE_RECORD actions within
BASE_MFS.
Param1-10 [in/out] -- Additional request parameter holders
ActionFlow [out] -- Used to control the action chain (see the ACTION_SETUP insert for more information.)
Can also be used to return a special value, such as the results of the CalcField
method.
History : (Date, Initials, Notes)
02/14/19 djs Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert APP_INSERTS
$Insert FILE.SYSTEM.EQUATES
$Insert ACTION_SETUP
$Insert NICA_ORDERS_EQUATES
$Insert NICA_ORDERS_CHECKLISTS_EQUATES
Equ Comma$ to ','
Declare function Error_Services, Database_Services, Logging_Services, Environment_Services, Nica_Orders_Services
Declare function SRP_Array
Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Reactor_Log_Services, Rds_Services
Declare subroutine Nica_Orders_Services
If KeyID then GoSub Initialize_System_Variables
Begin Case
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
Case Otherwise$ ; Status = 'Invalid Action'
End Case
If KeyID then GoSub Restore_System_Variables
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
Return ActionFlow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Calculated Columns
//
// The typical structure of a calculated column will look like this:
//
// Declare function Database_Services
//
// @ANS = Database_Services('CalculateColumn')
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CalculateColumn:
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
ActionFlow = ''
return
// ----- MFS calls -----------------------------------------------------------------------------------------------------
READ_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READ_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
READONLY_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READONLY_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
WRITE_RECORD_PRE:
return
WRITE_RECORD:
// Build new ordered list of NICA_ORDERS_CHECKLISTS IDs to store in the corresponding NICA_ORDERS record.
// This is sort of like a custom relational index.
NicaOrdersId = Field(Name, '*', 1)
NicaChecklistId = Field(Name, '*', 2)
If NicaChecklistId NE '' then
If NicaOrdersId NE '' then
NicaOrdersRec = Database_Services('ReadDataRow', 'NICA_ORDERS', NicaOrdersId)
If Error_Services('NoError') then
NicaOrdersChecklistIds = NicaOrdersRec<NICA_ORDERS.ORDER_CHECKLIST_IDS$>
Locate Name in NicaOrdersChecklistIds using @VM setting vPos else
Priorities = Xlate('NICA_ORDERS_CHECKLISTS', NicaOrdersChecklistIds, 'PRIORITY', 'X')
ChecklistArray = NicaOrdersChecklistIds:@FM:Priorities
ChecklistArray<1, -1> = Name
ChecklistArray<2, -1> = Xlate('NICA_CHECKLISTS', NicaChecklistId, 'PRIORITY', 'X')
ChecklistArray = SRP_Array('SortRows', ChecklistArray, 'AR2', 'ARRAY', @FM, @VM)
NicaOrdersRec<NICA_ORDERS.ORDER_CHECKLIST_IDS$> = ChecklistArray<1>
Database_Services('WriteDataRow', 'NICA_ORDERS', NicaOrdersId, NicaOrdersRec, True$, False$, True$)
end
end
end
end
return
DELETE_RECORD_PRE:
return
DELETE_RECORD:
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return
Initialize_System_Variables:
// Save these for restoration later
SaveDict = @DICT
SaveID = @ID
SaveRecord = @RECORD
OrigFileError = @FILE.ERROR
// Now make sure @DICT, ID, and @RECORD are populated
CurrentDictName = ''
If @DICT then
DictHandle = @DICT<1, 2>
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
end
end
If CurrentDictName NE DictName then
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
end
@ID = KeyID
If Record else
// Record might not have been passed in. Read the record from the database table just to make sure.
@FILE.ERROR = ''
Open TableName to hTable then
FullFSList = hTable[1, 'F' : @VM]
BFS = FullFSList[-1, 'B' : @SVM]
LastHandle = hTable[-1, 'B' : \0D\]
FileHandle = \0D\ : LastHandle[1, @VM]
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
end
end
@RECORD = Record
return
Restore_System_Variables:
Transfer SaveDict to @DICT
Transfer SaveID to @ID
Transfer SaveRecord to @RECORD
@FILE.ERROR = OrigFileError
return

View File

@ -27,11 +27,13 @@ $Insert SERVICE_SETUP
$Insert REACTOR_EQUATES
$Insert REACTOR_LOG_EQUATES
$Insert NICA_ORDERS_EQUATES
$Insert NICA_ORDERS_CHECKLISTS_EQUATES
$Insert RLIST_EQUATES
Declare function Environment_Services, Database_Services, Error_Services, Logging_Services, Nica_Orders_Services
Declare function Httpclient_Services, SRP_JSON, Reactor_Services, Reactor_Log_Services
Declare function Httpclient_Services, SRP_JSON, Reactor_Services, Reactor_Log_Services, SRP_Array
Declare subroutine Error_Services, Btree.Extract, Database_Services, Logging_Services, Nica_Orders_Services, Delay
Declare subroutine Httpclient_Services, SRP_JSON, Mona_Services, Service_Services
Declare subroutine Httpclient_Services, SRP_JSON, Mona_Services, Service_Services, Extract_SI_Keys
Machine = Environment_Services('GetServer')
LogDate = Oconv(Date(), 'D4/')
@ -49,6 +51,7 @@ Options BOOLEAN = True$, False$
Options ENTITY_TYPES = 'REACTOR','REACTOR_LOG'
Options ORDER_TYPES = 'INTRUSIVE_MAINT','CHANGEOVER','INITIATE_IDLE','IDLE','ASM_HTR_TUBE_CHANGE','ASM_HTR_ANNUAL_PM','ASM_HTR_SEMIANNUAL_PM','ASM_HTR_FIVE_AND_TEN_YEAR_PM','IQS_HGCV_ALARM'
Options ORDER_STATUSES = 'new','creating','not-started','in-progress','cancelled','done'
Options REACTOR_TYPES = 'ASM','ASM+','HTR','EPP'
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SERVICES
@ -101,7 +104,7 @@ End Service
Service GetOrderUpdates()
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, ServiceKeyID then
ActiveOrderIds = Nica_Orders_Services('GetActiveOrders')
@ -117,7 +120,6 @@ end service
Service UpdateNicaFlags()
rv = ''
ErrCode = ''
ReactNos = Reactor_Services('GetReactorNumbers')
Open 'REACTOR' to hReactor then
@ -125,6 +127,7 @@ Service UpdateNicaFlags()
For each ReactNo in ReactNos using @FM
ProveInActive = Reactor_Services('GetProveInActive', ReactNo)
HgCVChecklistActive = (Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'IQS_HGCV_ALARM') NE '')
IntrMaintChecklistActive = (Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'INTRUSIVE_MAINT') NE '')
Open 'REACTOR' to hReactor then
ReadV CacheProveInActive from hReactor, ReactNo, REACTOR_PROVE_IN_ACTIVE$ then
If CacheProveInActive NE ProveInActive then
@ -142,6 +145,14 @@ Service UpdateNicaFlags()
end
end
end
ReadV CacheIntrMaintChecklistActive from hReactor, ReactNo, REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$ then
If CacheIntrMaintChecklistActive NE IntrMaintChecklistActive then
Lock hReactor, ReactNo then
WriteV IntrMaintChecklistActive on hReactor, ReactNo, REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$ else Null
Unlock hReactor, ReactNo else Null
end
end
end
end
CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', ReactNo, 'REACT_MODE_KEY_IDS', 'X')
CurrModeKey = CurrModeKey[-1, 'B':@VM]
@ -171,7 +182,7 @@ Service GetActiveOrders(EntityType=ENTITY_TYPES, EntityId, OrderTypes=ORDER_TYPE
end service
Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES)
Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES, OrderFlows)
ErrorMsg = ''
EntityTypes = 'REACTOR,REACTOR_LOG'
@ -209,7 +220,7 @@ Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES)
CurrActiveOrders = Nica_Orders_Services('GetActiveOrders', EntityType, EntityID, OrderType)
OrderTypeAlreadyActive = (CurrActiveOrders NE '')
If OrderTypeAlreadyActive EQ False$ then
If ( (OrderTypeAlreadyActive EQ False$) or (OrderType EQ 'INTRUSIVE_MAINT') ) then
Begin Case
Case EntityType EQ 'REACTOR'
@ -219,84 +230,159 @@ Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES)
ReactNo = Xlate(EntityType, EntityID, REACTOR_LOG_REACTOR$, 'X')
End Case
// Call the API
NicaURL = Environment_Services("GetProveInApiUrl"):'/checklists?'
NicaURL := 'checklistType=':OrderType
NicaURL := '&reactorNumber=':ReactNo
Retries = 3
BackoffSeconds = 1
IsSuccessful = False$
OrderId = ''
Loop
while (IsSuccessful EQ False$ and Retries GT 0)
WaitSeconds = (3 - retries) * BackoffSeconds
Delay(WaitSeconds)
Retries = Retries - 1
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'POST', NicaURL, 'Accept':@VM:'*/*', '', '', '', False$, False$, '', IgnoreCertErrors)
If HttpResponseJson NE '' then
ObjResponseJson = ''
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
OrderId = SRP_JSON(ObjResponseJson, 'GetValue', 'id')
If OrderId NE '' then
Convert @Lower.Case to @Upper.Case in OrderId
NicaOrderRec = ''
NicaOrderRec<NICA_ORDERS.ORDER_TYPE$> = OrderType
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
NicaOrderRec<NICA_ORDERS.ENTITY_TYPE$> = EntityType
NicaOrderRec<NICA_ORDERS.ENTITY_ID$> = EntityID
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
If NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> EQ False$ then
NicaOrderRec<NICA_ORDERS.PROGRESS_PERCENTAGE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'progressPercentage')
end else
NicaOrderRec<NICA_ORDERS.PROGRESS_PERCENTAGE$> = 100
end
LogNicaOrderRec = NicaOrderRec
Swap @FM with ',' in LogNicaOrderRec
LogData = ''
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
LogData<2> = Machine
LogData<3> = 'Nica order record to write: ':LogNicaOrderRec
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
If Error_Services('NoError') then
If ( (OrderType _EQC 'INITIATE_IDLE') and (EntityType _EQC 'REACTOR') ) then
Open 'REACTOR' to hReactor then
WriteV True$ to hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
end
end
// Build request
Body = ''
NewSortedChecklistIds = ''
If OrderType NE 'INTRUSIVE_MAINT' then
// Original API endpoint just uses query params, no body.
NicaURL = Environment_Services("GetProveInApiUrl"):'/checklists?'
NicaURL := 'checklistType=':OrderType
NicaURL := '&reactorNumber=':ReactNo
end else
// New API endpoint uses JSON body instead of query params.
NicaURL = Environment_Services("GetProveInApiUrl"):'/order'
If OrderFlows NE '' then
ReactorType = Xlate('REACTOR', ReactNo, REACTOR_REACT_TYPE$, 'X')
NewChecklistIds = Nica_Orders_Services('GetFlowChecklistIds', OrderFlows, OrderType, ReactorType)
// Get incomplete checklists and add them to the new order
If CurrActiveOrders NE '' then
IncompleteChecklistIds = ''
Open 'DICT.NICA_ORDERS_CHECKLISTS' to hDict then
For each ActiveNicaOrdersId in CurrActiveOrders using @VM
IncompleteOrderChecklistIds = ''
Flag = ''
Query = 'NICA_ORDERS_ID':@VM:ActiveNicaOrdersId:@FM
Query := 'IS_COMPLETE':@VM:False$:@FM
Btree.Extract(Query, 'NICA_ORDERS_CHECKLISTS', hDict, IncompleteOrderChecklistIds, 'E', Flag)
If Flag EQ 0 then
IncompleteOrderChecklistIdsRot = SRP_Array('Rotate', IncompleteOrderChecklistIds, @VM, '*')
PrevChecklistIds = IncompleteOrderChecklistIdsRot<0, 2>
Swap '*' with @VM in PrevChecklistIds
IncompleteChecklistIds<0, -1> = PrevChecklistIds
end
If ErrorMsg EQ '' then
IsSuccessful = True$
Response = OrderId
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Null OrderId returned from MesaProveInAPI.'
Next ActiveNicaOrdersId
end
NewChecklistIds<0, -1> = IncompleteChecklistIds
end
NewChecklistIds = SRP_Array('Clean', NewChecklistIds, 'TrimAndMakeUnique', @VM)
NewChecklistPriorities = Xlate('NICA_CHECKLISTS', NewChecklistIds, 'PRIORITY', 'X')
ChecklistArray = NewChecklistIds:@FM:NewChecklistPriorities
ChecklistArray = SRP_Array('SortRows', ChecklistArray, 'AR2', 'ARRAY', @FM, @VM)
NewSortedChecklistIds = ChecklistArray<1>
JsonRequest = ''
objJson = ''
If SRP_JSON(objJson, 'New', 'Object') then
SRP_JSON(objJson, 'SetValue', 'orderType', OrderType)
SRP_JSON(objJson, 'SetValue', 'reactorNumber', ReactNo)
NewChecklistInstIds = Xlate('NICA_CHECKLISTS', NewSortedChecklistIds, 'NICA_BASE_INSTRUCTION_ID', 'X')
SRP_JSON(objJson, 'SetValueArray', 'baseInstructionIds', NewChecklistInstIds, @VM)
Body = SRP_JSON(objJson, 'Stringify', 'Styled')
Convert @FM to '' in Body
SRP_JSON(objJson, 'Release')
end else
ErrorMsg = 'Error in ':Service:' service. Error parsing JSON response from MesaProveInAPI.'
ErrorMsg = 'Error in ':Service:' service. Failed to initialize JSON object for request body.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null JSON response returned from MesaProveInAPI.'
ErrorMsg = 'Error in ':Service:' service. Null Orderflows variable passed in.'
end
SRP_JSON(ObjResponseJson, 'Release')
Repeat
If Environment_Services('IsProd') then
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
end else
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
end
// Send the request
IsSuccessful = False$
If ErrorMsg EQ '' then
Retries = 3
BackoffSeconds = 1
OrderId = ''
Loop
while (IsSuccessful EQ False$ and Retries GT 0)
WaitSeconds = (3 - retries) * BackoffSeconds
Delay(WaitSeconds)
Retries = Retries - 1
If Body NE '' then
Headers = 'Content-Type':@VM:'application/json':@FM:'Accept':@VM:'*/*'
end else
Headers = 'Accept':@VM:'*/*'
end
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'POST', NicaURL, Headers, Body, '', '', False$, False$, '', IgnoreCertErrors)
If HttpResponseJson NE '' then
ObjResponseJson = ''
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
OrderId = SRP_JSON(ObjResponseJson, 'GetValue', 'id')
If OrderId NE '' then
Convert @Lower.Case to @Upper.Case in OrderId
NicaOrderRec = ''
NicaOrderRec<NICA_ORDERS.ORDER_TYPE$> = OrderType
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
NicaOrderRec<NICA_ORDERS.ENTITY_TYPE$> = EntityType
NicaOrderRec<NICA_ORDERS.ENTITY_ID$> = EntityID
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
If NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> EQ False$ then
NicaOrderRec<NICA_ORDERS.PROGRESS_PERCENTAGE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'progressPercentage')
end else
NicaOrderRec<NICA_ORDERS.PROGRESS_PERCENTAGE$> = 100
end
LogNicaOrderRec = NicaOrderRec
Swap @FM with ',' in LogNicaOrderRec
LogData = ''
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM
LogData<2> = Machine
LogData<3> = 'Nica order record to write: ':LogNicaOrderRec
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
If Error_Services('NoError') then
If ( (OrderType _EQC 'INITIATE_IDLE') and (EntityType _EQC 'REACTOR') ) then
Open 'REACTOR' to hReactor then
WriteV True$ to hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
end
end
end
If OrderType _EQC 'INTRUSIVE_MAINT' then
// Create NICA_ORDERS_CHECKLISTS child records for each checklist
If NewSortedChecklistIds NE '' then
For each ChecklistId in NewSortedChecklistIds using @VM
Key = OrderId:'*':ChecklistId
NicaOrdersChecklistsRec = ''
NicaOrdersChecklistsRec<NICA_ORDERS_CHECKLISTS.IS_COMPLETE$> = False$
Database_Services('WriteDataRow', 'NICA_ORDERS_CHECKLISTS', Key, NicaOrdersChecklistsRec, True$, False$, True$)
If Error_Services('HasError') then ErrorMsg = Error_Services('GetMessage')
Until (ErrorMsg NE '')
Next ChecklistId
end else
ErrorMsg = 'Error in ':Service:' service. failed to create NICA_ORDERS_CHECKLIST records due to empty checklist array.'
end
end
If ErrorMsg EQ '' then
For each OrderId in CurrActiveOrders using @VM
Nica_Orders_Services('CancelOrder', Orderid)
Next OrderId
IsSuccessful = True$
Response = OrderId
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Null OrderId returned from MesaProveInAPI.'
end
SRP_JSON(ObjResponseJson, 'Release')
end else
ErrorMsg = 'Error in ':Service:' service. Error parsing JSON response from MesaProveInAPI.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null JSON response returned from MesaProveInAPI.'
end
Repeat
end
// Send MonA status
MonaResource = Environment_Services('GetEnvironmentVariable', 'MonaNicaIntegrationServiceGroup')
StatusName = 'CreateNicaOrder'
If IsSuccessful then
LogData = ''
@ -308,7 +394,7 @@ Service CreateNewOrder(EntityType=ENTITY_TYPES, EntityID, OrderType=ORDER_TYPES)
end else
ErrorMsg = 'Error encountered when attempting to create Nica in order for reactor ':ReactNo:' of type ':OrderType
Mona_Services('SendBufferedStatus', MonAResource, StatusName, 'Critical')
end
end
end else
ErrorMsg = 'Error encountered when attempting to create Nica order for entity ':EntityType:' ' :EntityID:' of type ':OrderType:'. Active order already exists.'
end
@ -438,11 +524,7 @@ Service CancelOrder(OrderId)
SRP_JSON(ObjResponseJson, 'Release')
Repeat
If Environment_Services('IsProd') then
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
end else
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
end
MonaResource = Environment_Services('GetEnvironmentVariable', 'MonaNicaIntegrationServiceGroup')
StatusName = 'CancelNicaOrder'
If ( (IsSuccessful EQ True$) and (Response NE 'error') and (ErrorMsg EQ '') ) then
LogData = ''
@ -556,11 +638,8 @@ Service GetOrderStatusUpdate(OrderId)
Loop
while (IsSuccessful EQ False$ and Retries GT 0)
WaitSeconds = (3 - Retries) * BackoffSeconds
Delay(WaitSeconds)
Retries = Retries - 1
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'GET', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '', IgnoreCertErrors)
If HttpResponseJson NE '' then
@ -576,15 +655,64 @@ Service GetOrderStatusUpdate(OrderId)
end
Database_Services('WriteDataRow', 'NICA_ORDERS', OrderId, NicaOrderRec, True$, False$, False$)
If Error_Services('NoError') then
OrderType = NicaOrderRec<NICA_ORDERS.ORDER_TYPE$>
If (OrderType _EQC 'INTRUSIVE_MAINT') then
// Update NICA_ORDERS_CHECKLISTS records (documents)
Open 'NICA_ORDERS_CHECKLISTS' to hNicaOrdersChecklists then
// Parse documents array for their isComplete flag
ObjDocumentArray = SRP_JSON(ObjResponseJson, 'get', 'progresses')
If ObjDocumentArray NE 0 then
NumDocs = SRP_JSON(objDocumentArray, 'GetCount')
For DocIndex = 1 to NumDocs
DocumentId = SRP_JSON(ObjDocumentArray, 'GetValue', '[':DocIndex:'].baseInstructionId', '')
If DocumentId NE '' then
State = SRP_JSON(ObjDocumentArray, 'GetValue', '[':DocIndex:'].state', False$)
IsComplete = (State _EQC 'done')
ChecklistId = ''
Extract_SI_Keys('NICA_CHECKLISTS', 'NICA_BASE_INSTRUCTION_ID', DocumentId, ChecklistId)
ErrorCode = ''
If Not(Get_Status(ErrorCode)) then
If ChecklistId NE '' then
NicaOrdersChecklistsKey = OrderId:'*':ChecklistId
HaveOrderChecklistLock = Database_Services('GetKeyIDLock', 'NICA_ORDERS_CHECKLISTS', NicaOrdersChecklistsKey)
If HaveOrderChecklistLock then
NicaOrdersChecklistsRec = Database_Services('ReadDataRow', 'NICA_ORDERS_CHECKLISTS', NicaOrdersChecklistsKey)
If Error_Services('NoError') then
NicaOrdersChecklistsRec<NICA_ORDERS_CHECKLISTS.IS_COMPLETE$> = IsComplete
NicaOrdersChecklistsRec<NICA_ORDERS_CHECKLISTS.STATE$> = State
Database_Services('WriteDataRow', 'NICA_ORDERS_CHECKLISTS', NicaOrdersChecklistsKey, NicaOrdersChecklistsRec, True$, False$, False$)
If Error_Services('HasError') then
Database_Services('ReleaseKeyIDLock', 'NICA_ORDERS_CHECKLISTS', NicaOrdersChecklistsKey)
end
end
end
end else
ErrorMsg = 'Error in ':Service:' service. No NICA_CHECKLISTS record found for documentId ':DocumentId:'.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error calling Extract_SI_Keys on NICA_CHECKLISTS table. Error code: ':ErrorCode:'.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null documentId return from Json response.'
end
Next DocIndex
SRP_JSON(ObjDocumentArray, 'Release')
end else
ErrorMsg = 'Error in ':Service:' service. Error retrieving documents array from Json response.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening NICA_ORDERS_CHECKLISTS table.'
end
end
If IsComplete EQ True$ then
OrderType = NicaOrderRec<NICA_ORDERS.ORDER_TYPE$>
If ( (OrderType _EQC 'IDLE') and (EntityType _EQC 'REACTOR') ) then
Open 'REACTOR' to hReactor then
WriteV False$ on hReactor, ReactNo, REACTOR_IDLE_STARTUP_REQUIRED$ else
ErrorMsg = 'Error in ':Service:' service. Error setting IDLE_STARTUP_REQUIRED flag in REACTOR record.'
end
end
end
end
If ErrorMsg EQ '' then Response = True$
end else
Response = False$
@ -594,16 +722,11 @@ Service GetOrderStatusUpdate(OrderId)
ErrorMsg = Error_Services('GetMessage')
end
end
SRP_JSON(ObjResponseJson, 'Release')
end
SRP_JSON(ObjResponseJson, 'Release')
Repeat
If Environment_Services('IsProd') then
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_MESAPROVEINAPI'
end else
MonAResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_MESAPROVEINAPI_DEV'
end
MonaResource = Environment_Services('GetEnvironmentVariable', 'MonaNicaIntegrationServiceGroup')
StatusName = 'GetNicaOrderUpdate'
If IsSuccessful and Response NE 'error' then
LogData = ''
@ -641,8 +764,50 @@ Service GetOrderStatusUpdate(OrderId)
end service
Service GetFlowChecklistIds(NicaOrderFlowIds, NicaOrderFlowType=ORDER_TYPES, ReactorTypes=REACTOR_TYPES)
ErrorMsg = ''
FlowChecklistIds = ''
If ( (NicaOrderFlowIds NE '') and (NicaOrderFlowType NE '') and (ReactorTypes NE '') ) then
Query = 'SELECT NICA_CHECKLISTS '
For each NicaOrderFlowId in NicaOrderFlowIds using @VM setting vPos
If vPos GT 1 then Query := 'OR '
Query := 'WITH NICA_ORDER_FLOW_IDS EQ ':Quote(NicaOrderFlowId):' '
Next NicaOrderFlowId
Query := 'AND WITH NICA_ORDER_FLOW_TYPE EQ ':Quote(NicaOrderFlowType):' '
For each ReactorType in ReactorTypes using @VM setting vPos
If vPos EQ 1 then
Query := 'AND '
end else
Query := 'OR '
end
Query := 'WITH REACTOR_TYPES EQ ':Quote(ReactorType):' '
Next ReactorType
Query := 'BY PRIORITY'
RList(Query, TARGET_ACTIVELIST$, '', '', '')
ErrCode = ''
If Not(Get_Status(ErrCode)) then
EOF = False$
Loop
Readnext KeyId else EOF = True$
Until EOF
FlowChecklistIds<0, -1> = KeyId
Repeat
end else
ErrorMsg = 'Error in ':Service:' service. Error calling RList. Error code: ':ErrCode:'.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null NicaOrderFlowIds, NicaOrderFlowType, or ReactorTypes Passed in.'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end else
Response = FlowChecklistIds
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -32,6 +32,7 @@ $Insert REACT_ITEM_EQUATES
$Insert RDS_EQUATES
$Insert REACT_SERVS_EQUATES
$Insert REACTOR_EQUATES
$Insert FEATURE_FLAGS_EQUATES
Declare function Database_Services, Reactor_Log_Services, Obj_React_Item, Set_Status, Errmsg, Error_Services, Utility
Declare function obj_Calendar, NextKey, SRP_JSON, Datetime, Reactor_Services, React_Servs_Services, Logging_Services
@ -86,8 +87,6 @@ Service SignReactorLog(ReactorLogID, UserID)
ErrCode = ''
ErrorMsg = ''
If RowExists('REACTOR_LOG', ReactorLogID) then
// Update any NICA checklist order statuses
Nica_Orders_Services('GetOrderUpdates')
If Error_Services('NoError') then
If RowExists('LSL_USERS', UserID) then
ReactorLogRec = Database_Services('ReadDataRow', 'REACTOR_LOG', ReactorLogID)
@ -199,96 +198,110 @@ Service SignReactorLog(ReactorLogID, UserID)
If ErrorMsg EQ '' then
// Check reactor prevent maintenance records
CurServices = ReactorLogRec<REACTOR_LOG_REACT_SERV_ID$>
Loop
TestChar = CurServices[-1,1]
Until TestChar NE @VM or CurServices = ''
CurServices[-1,1] = ''
Repeat
CCnt = COUNT(CurServices,@VM) + (CurServices NE '')
For N = 1 to CCnt
CurService = CurServices<1,N>
Open 'REACTOR_PM' to ReactorPMTable then
Open 'DICT.REACTOR_PM' to DictReactorPMTable then
SearchStr = 'REACT_SERV_ID':@VM:CurService:@FM
SearchStr := 'REACTOR':@VM:ReactorNo:@FM
SearchStr := 'COMPLETE_DATE':@VM:'':@FM
Btree.Extract(SearchStr, 'REACTOR_PM', DictReactorPMTable, OpenPMKeys, '', Flag)
If Flag EQ 0 then
EndDate = Date()
* Add Maintenance metric reset
AssocMetrics = ''
AssocMetrics = React_Servs_Services('GetAssociatedMetrics', CurService)
If AssocMetrics NE '' then
MetricCount = Dcount(AssocMetrics, @VM)
For MetricIndex = 1 to MetricCount
ThisMetric = AssocMetrics<1,MetricIndex>
Reactor_Services('ResetWfrMetric', ReactorNo, ThisMetric)
Next MetricIndex
End
If OpenPMKeys NE '' then
* If more than one, which should not happen then close all
KCnt = COUNT( OpenPMKeys, @VM ) + (OpenPMKeys NE '')
PMResched = False$
For I = 1 to KCnt
ThisOpenPMKey = OpenPMKeys<1,I>
otlParms = 'REACTOR_PM':@RM
otlParms := ThisOpenPMKey:@RM
otlParms := REACTOR_PM_COMPLETE_DATE$:@VM:REACTOR_PM_COMP_RL_NO$:@RM
otlParms := EndDate:@VM:ReactorLogID:@RM
If ThisOpenPMKey NE '' then
obj_Post_Log('Create',otlParms) ;* Closes previous PM record
If Not(Get_Status(ErrCode)) then
* Schedule next PM
PMDays = XLATE( 'REACT_SERVS', CurService, REACT_SERVS_PM_DAYS$, 'X' )
IF PMDays NE '' THEN
If PMResched EQ False$ then
PMNo = NextKey('REACTOR_PM')
If Error_Services('NoError') then
NewPMRec = ''
NewPMRec<REACTOR_PM_ENTRY_ID$> = UserID
NewPMRec<REACTOR_PM_ENTRY_DATE$> = Date()
NewPMRec<REACTOR_PM_REACTOR$> = ReactorNo
NewPMRec<REACTOR_PM_PREV_PM_COMP_DT$> = EndDate
NewPMRec<REACTOR_PM_DUE_DT$> = EndDate + PMDays
NewPMRec<REACTOR_PM_REACT_SERV_ID$> = CurService
NewPMRec<REACTOR_PM_ENTRY_RL_NO$> = ReactorLogID
Database_Services('WriteDataRow', 'REACTOR_PM', PMNo, NewPMRec)
If Error_Services('NoError') then
PMResched = True$
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Error calling NextKey("REACTOR_PM").'
end
end
end
end else
ErrorMsg = 'Error in ':Service:' service. Error calling obj_Post_Log("Create"). Error code: ':ErrCode
end
end
Next I
end
end else
ErrorMsg = 'Error in ':Service:' serivce. Error calling Btree.Extract. Error code: ':Flag
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening DICT.REACTOR_PM table.'
CCnt = COUNT(CurServices,@VM) + (CurServices NE '')
IntrMaintFeatureFlag = Xlate('FEATURE_FLAGS', 'NICA_INTRUSIVE_MAINTENANCE', FEATURE_FLAGS.ENABLED$, 'X')
If ( (IntrMaintFeatureFlag EQ True$) and (CCnt GT 0) ) then
IntrMaintFlowCodes = React_Servs_Services('GetIntrMaintFlowIds', CurServices)
If IntrMaintFlowCodes NE '' then
// Create INTRUSIVE_MAINT NICA order
Nica_Orders_Services('CreateNewOrder', 'REACTOR', ReactorNo, 'INTRUSIVE_MAINT', IntrMaintFlowCodes)
If Error_Services('NoError') then
LogFlows = IntrMaintFlowCodes
Convert @VM to ', ' in LogFlows
Reactor_Log_Services('AddComment', ReactorNo, 'Intrusive Maintenance initiated for flow(s) ':LogFlows:'.', UserID)
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening REACTOR_PM table.'
end
Next N
end
If ErrorMsg EQ '' then
For ReactServsIndex = 1 to CCnt
CurService = CurServices<1,ReactServsIndex>
Open 'REACTOR_PM' to ReactorPMTable then
Open 'DICT.REACTOR_PM' to DictReactorPMTable then
SearchStr = 'REACT_SERV_ID':@VM:CurService:@FM
SearchStr := 'REACTOR':@VM:ReactorNo:@FM
SearchStr := 'COMPLETE_DATE':@VM:'':@FM
Btree.Extract(SearchStr, 'REACTOR_PM', DictReactorPMTable, OpenPMKeys, '', Flag)
If Flag EQ 0 then
EndDate = Date()
* Add Maintenance metric reset
AssocMetrics = ''
AssocMetrics = React_Servs_Services('GetAssociatedMetrics', CurService)
If AssocMetrics NE '' then
MetricCount = Dcount(AssocMetrics, @VM)
For MetricIndex = 1 to MetricCount
ThisMetric = AssocMetrics<1,MetricIndex>
Reactor_Services('ResetWfrMetric', ReactorNo, ThisMetric)
Next MetricIndex
End
If OpenPMKeys NE '' then
* If more than one, which should not happen then close all
KCnt = COUNT( OpenPMKeys, @VM ) + (OpenPMKeys NE '')
PMResched = False$
For I = 1 to KCnt
ThisOpenPMKey = OpenPMKeys<1,I>
otlParms = 'REACTOR_PM':@RM
otlParms := ThisOpenPMKey:@RM
otlParms := REACTOR_PM_COMPLETE_DATE$:@VM:REACTOR_PM_COMP_RL_NO$:@RM
otlParms := EndDate:@VM:ReactorLogID:@RM
If ThisOpenPMKey NE '' then
obj_Post_Log('Create',otlParms) ;* Closes previous PM record
If Not(Get_Status(ErrCode)) then
* Schedule next PM
PMDays = XLATE( 'REACT_SERVS', CurService, REACT_SERVS_PM_DAYS$, 'X' )
IF PMDays NE '' THEN
If PMResched EQ False$ then
PMNo = NextKey('REACTOR_PM')
If Error_Services('NoError') then
NewPMRec = ''
NewPMRec<REACTOR_PM_ENTRY_ID$> = UserID
NewPMRec<REACTOR_PM_ENTRY_DATE$> = Date()
NewPMRec<REACTOR_PM_REACTOR$> = ReactorNo
NewPMRec<REACTOR_PM_PREV_PM_COMP_DT$> = EndDate
NewPMRec<REACTOR_PM_DUE_DT$> = EndDate + PMDays
NewPMRec<REACTOR_PM_REACT_SERV_ID$> = CurService
NewPMRec<REACTOR_PM_ENTRY_RL_NO$> = ReactorLogID
Database_Services('WriteDataRow', 'REACTOR_PM', PMNo, NewPMRec)
If Error_Services('NoError') then
PMResched = True$
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Error calling NextKey("REACTOR_PM").'
end
end
end
end else
ErrorMsg = 'Error in ':Service:' service. Error calling obj_Post_Log("Create"). Error code: ':ErrCode
end
end
Next I
end
end else
ErrorMsg = 'Error in ':Service:' serivce. Error calling Btree.Extract. Error code: ':Flag
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening DICT.REACTOR_PM table.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening REACTOR_PM table.'
end
Next ReactServsIndex
end else
ErrorMsg = 'Error in ':Service:' service. Error creating INTRUSIVE_MAINT NICA order.'
end
end
end
end
@ -319,6 +332,8 @@ Service SignReactorLog(ReactorLogID, UserID)
end
If ErrorMsg EQ '' then
// Pull in a fresh copy of the record in case comments were added above
ReactorLogRec = Database_Services('ReadDataRow', 'REACTOR_LOG', ReactorLogID)
// Set signature, end date, and end time
ReactorLogRec<REACTOR_LOG_TECH_SIG$> = UserID
ReactorLogRec<REACTOR_LOG_END_DATE$> = Date()
@ -349,6 +364,17 @@ Service ClearSignature(RLKey)
RLRec<REACTOR_LOG_LO_NA$> = ''
RLRec<REACTOR_LOG_REACT_WFR_CNT_START$> = ''
Database_Services('WriteDataRow', 'REACTOR_LOG', RLKey, RLRec, True$, False$, False$)
If Error_Services('NoError') then
// Cancel active Intrusive Maintenance NICA orders in the event the maintenance user set an
// invalid service id or a difference service was required.
ReactorNo = RLRec<REACTOR_LOG_REACTOR$>
CurrActiveOrders = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactorNo, 'INTRUSIVE_MAINT')
If CurrActiveOrders NE '' then
For each ActiveIntrMaintOrderId in CurrActiveOrders using @VM
Nica_Orders_Services('CancelOrder', ActiveIntrMaintOrderId)
Next ActiveIntrMaintOrderId
end
end
end
end

View File

@ -52,6 +52,7 @@ $Insert WO_LOG_EQUATES
$Insert REACTOR_DAILY_UPTIME_EQUATES
$Insert REACT_LL_EQUATES
$Insert IQS_VIOL_DATA_EQUATES
$Insert FEATURE_FLAGS_EQUATES
Equ WOCust$ to 2
@ -1884,8 +1885,8 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
ErrorMsg = ''
IF ForceModeChange NE True$ then ForceModeChange = False$
If ( (UserID NE '') and (ReactNo NE '') and (Mode NE '') and (ModeSubCat NE '')) then
CurTime = time()
CurDate = date()
CurTime = Time()
CurDate = Date()
NGPrevModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', ReactNo, REACTOR_CHILD_KEY_IDS_REACT_MODE_KEY_IDS$, 'X')<1, 1>
PrevModeRec = Reactor_Services('GetReactCurrModeRec', ReactNo)
SelectedModeRec = Database_Services('ReadDataRow', 'REACTOR_MODES', Mode)
@ -1913,18 +1914,18 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
CommentException = True$
End Case
if ((ModeText NE '') and (Len(ModeText) GE 4)) OR CommentException then
If ((ModeText NE '') and (Len(ModeText) GE 4)) OR CommentException then
NewModeCategory = SelectedModeRec<REACTOR_MODES_MODE_CATEGORY$>
OldRlRecordKey = PrevModeRec<REACT_MODE_NG_START_RL_ID$>
if Reactor_Log_Services('IsMaint', OldRlRecordKey) AND ForceModeChange EQ False$ then
if (NOT(Reactor_Log_Services('IsSigned', OldRlRecordKey))) then
If Reactor_Log_Services('IsMaint', OldRlRecordKey) AND ForceModeChange EQ False$ then
If (NOT(Reactor_Log_Services('IsSigned', OldRlRecordKey))) then
ErrorMsg = 'The current mode cannot be changed until the technician has signed off on the Reactor Log.'
end
end
ModeSubCatID = ''
LOCATE ModeSubCat in SelectedModeRec<REACTOR_MODES_SERVICE_CATEGORIES$> using @VM setting SvcPos then
Locate ModeSubCat in SelectedModeRec<REACTOR_MODES_SERVICE_CATEGORIES$> using @VM setting SvcPos then
NewModeSvcList = SelectedModeRec<REACTOR_MODES_SERVICE_CATEGORY_ID$>
ModeSubCatID = NewModeSvcList<1,SvcPos>
end else
@ -1957,7 +1958,7 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
If ErrorMsg EQ '' and IdleStartupRequired and Mode[1, 2] EQ 'UP' then
ProveInTypes = Reactor_Services('GetActiveProveInTypes', ReactNo)
IdleStartupActive = False$
for each ProveInType in ProveInTypes using @VM setting Idx
For each ProveInType in ProveInTypes using @VM setting Idx
If ProveInType EQ 'IDLE' then
IdleStartupActive = True$
end
@ -1978,6 +1979,17 @@ Service CreateReactModeChange(UserID, ReactNo, Mode, ModeSubCat, ModeText, Force
end
end
If ErrorMsg EQ '' then
IntrMaintFeatureFlag = Xlate('FEATURE_FLAGS', 'NICA_INTRUSIVE_MAINTENANCE', FEATURE_FLAGS.ENABLED$, 'X')
If IntrMaintFeatureFlag EQ True$ then
ActiveIntrusiveMaintChecklists = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'INTRUSIVE_MAINT')
IntrusiveMaintChecklistActive = (ActiveIntrusiveMaintChecklists NE '')
If ( IntrusiveMaintChecklistActive and (SelE10State _EQC 'Productive') ) then
ErrorMsg = "An Intrusive Maintenance Checklist is active for this reactor and must be completed or overridden in order to change to a productive state."
end
end
end
If ErrorMsg EQ '' then
If Len(Mode) GT 10 and Mode[1, 10] EQ 'CHANGEOVER' then
Nica_Orders_Services('CreateNewOrder', 'REACTOR', ReactNo, 'CHANGEOVER')
@ -3707,5 +3719,3 @@ ClearCursors:
return

View File

@ -288,78 +288,109 @@ Event APPLY.CLICK()
end else
Error_Services('DisplayError')
ActiveProveIn = Reactor_Services('GetProveInActive', ReactNo)
ActiveHgCVChecklists = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'IQS_HGCV_ALARM')
HgCVChecklistActive = (ActiveHgCVChecklists NE '')
ReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactNo)
If Error_Services('NoError') then
ActiveProveInOrder = ReactorRec<REACTOR_PROVE_IN_ACTIVE$>
ActiveHgCVOrder = ReactorRec<REACTOR_HGCV_CHECKLIST_ACTIVE$>
ActiveIntrMaintOrder = ReactorRec<REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$>
Begin Case
Case ActiveProveIn
Begin Case
OverrideGroups = 'LEAD':@VM:'SUPERVISOR'
UserMsg = "Reactor prove in must be processed in NICA. Override required from a lead or supervisor to bypass NICA."
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
Override = UserVerification<1>
If Override EQ True$ then
ProveInOrderIds = Reactor_Services('GetActiveProveInOrderIds', ReactNo)
If (DCount(ProveInOrderIds, @VM) GT 1) then
ProveInTypes = Xlate('NICA_ORDERS', ProveInOrderIds, 'ORDER_TYPE', 'X')
OverrideData = Dialog_Box('PROVE_IN_OVERRIDE', @Window, ReactNo)
ProveInTypesToCancel = OverrideData<1, 1>
ResponseComment = ''
For each ProveInType in ProveInTypes using @VM setting Idx
Locate ProveInType in ProveInTypesToCancel using @VM setting Unused then
ProveInOrderId = ProveInOrderIds<0, Idx>
Nica_Orders_Services('CancelOrder', ProveInOrderId)
If ResponseComment NE '' then ResponseComment := ', '
ResponseComment := ProveInType
end
Next ProveInType
ResponseComment := ': '
ResponseComment := OverrideData<2, 1>
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'REACTOR_PROVE_IN')
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then End_Dialog(@Window, NewMode)
end else
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
If Assigned(ResponseComment) and Len(ResponseComment) GT 4 then
Nica_Orders_Services('CancelOrder', ProveInOrderIds<0, 1>)
Case ActiveProveInOrder
OverrideGroups = 'LEAD':@VM:'SUPERVISOR'
UserMsg = "Reactor prove in must be processed in NICA. Override required from a lead or supervisor to bypass NICA."
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
Override = UserVerification<1>
If Override EQ True$ then
ProveInOrderIds = Reactor_Services('GetActiveProveInOrderIds', ReactNo)
If (DCount(ProveInOrderIds, @VM) GT 1) then
ProveInTypes = Xlate('NICA_ORDERS', ProveInOrderIds, 'ORDER_TYPE', 'X')
OverrideData = Dialog_Box('PROVE_IN_OVERRIDE', @Window, ReactNo)
ProveInTypesToCancel = OverrideData<1, 1>
ResponseComment = ''
For each ProveInType in ProveInTypes using @VM setting Idx
Locate ProveInType in ProveInTypesToCancel using @VM setting Unused then
ProveInOrderId = ProveInOrderIds<0, Idx>
Nica_Orders_Services('CancelOrder', ProveInOrderId)
If ResponseComment NE '' then ResponseComment := ', '
ResponseComment := ProveInType
end
Next ProveInType
ResponseComment := ': '
ResponseComment := OverrideData<2, 1>
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'REACTOR_PROVE_IN')
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then End_Dialog(@Window, NewMode)
If Error_Services('NoError') then End_Dialog(@Window, NewMode)
end else
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
If Assigned(ResponseComment) and Len(ResponseComment) GT 4 then
Nica_Orders_Services('CancelOrder', ProveInOrderIds<0, 1>)
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'REACTOR_PROVE_IN')
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then End_Dialog(@Window, NewMode)
end else
Message_Box(@Window, 'You must enter a comment greater than 4 letters!', 'Error', MSG_ICON_EXCLAM$)
end
end
end
Case ActiveHgCVOrder
OverrideGroups = 'LEAD':@VM:'SUPERVISOR'
UserMsg = "HgCV OCAP Checklist must be completed in NICA. Override required from a lead or supervisor to bypass NICA."
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
Override = UserVerification<1>
If Override then
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
If Assigned(ResponseComment) and Len(ResponseComment) GT 4 then
ActiveHgCVOrders = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'IQS_HGCV_ALARM')
For each ActiveHgCVOrderId in ActiveHgCVOrders using @VM
Nica_Orders_Services('CancelOrder', ActiveHgCVOrderId)
Next ActiveHgCVOrderId
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'HGCV_OCAP_CHECKLIST')
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then
End_Dialog(@Window, NewMode)
end
end else
Message_Box(@Window, 'You must enter a comment greater than 4 letters!', 'Error', MSG_ICON_EXCLAM$)
end
end
end
Case HgCVChecklistActive
Case ActiveIntrMaintOrder
OverrideGroups = 'LEAD':@VM:'SUPERVISOR'
UserMsg = "HgCV OCAP Checklist must be completed in NICA. Override required from a lead or supervisor to bypass NICA."
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
Override = UserVerification<1>
If Override then
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
If Assigned(ResponseComment) and Len(ResponseComment) GT 4 then
OverrideGroups = 'LEAD':@VM:'SUPERVISOR'
UserMsg = "Intrusive Maintenance Checklist must be completed in NICA. Override required from a lead or supervisor to bypass NICA."
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
Override = UserVerification<1>
If Override then
For each ActiveHgCVOrderId in ActiveHgCVChecklists using @VM
Nica_Orders_Services('CancelOrder', ActiveHgCVOrderId)
Next ActiveHgCVChecklistId
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
If Assigned(ResponseComment) and Len(ResponseComment) GT 4 then
ActiveIntrMaintOrders = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactNo, 'INTRUSIVE_MAINT')
For each ActiveIntrMaintOrderId in ActiveIntrMaintOrders using @VM
Nica_Orders_Services('CancelOrder', ActiveIntrMaintOrderId)
Next ActiveIntrMaintOrderId
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'INTR_MAINT_CHECKLIST')
Override_Log_Services('Create', 'REACTOR', ReactNo, UserVerification<2>, ResponseComment, 'HGCV_OCAP_CHECKLIST')
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then
End_Dialog(@Window, NewMode)
Reactor_Services('CreateReactModeChange', @User4, ReactNo, NewMode, NewReactModeSvc, NewNoteText)
If Error_Services('NoError') then
End_Dialog(@Window, NewMode)
end
end else
Message_Box(@Window, 'You must enter a comment greater than 4 letters!', 'Error', MSG_ICON_EXCLAM$)
end
end else
Message_Box(@Window, 'You must enter a comment greater than 4 letters!', 'Error', MSG_ICON_EXCLAM$)
end
end
End Case
End Case
end else
Error_Services('DisplayError')
end
end
end
@ -520,8 +551,3 @@ HideDropDownComments:
return

View File

@ -23,12 +23,45 @@ Compile function React_Servs_Services(@Service, @Params)
#pragma precomp SRP_PreCompiler
$Insert LOGICAL
$Insert SERVICE_SETUP
$Insert APP_INSERTS
$Insert RLIST_EQUATES
$Insert REACT_SERVS_EQUATES
Declare function Database_Services, Error_Services, SRP_JSON, React_Servs_Services
Declare subroutine SRP_JSON, Error_Services, React_Servs_Services
Equ NEW_EXIST$ To 0
Equ NEXT_CUR$ To 1
Equ ADD_EXIST$ to 2
Equ THERMOCOUPLE_FRONT$ To 237
Equ THERMOCOUPLE_SIDE$ To 238
Equ THERMOCOUPLE_REAR$ To 239
Equ LAMP_ZONE_1A$ to 10700
Equ LAMP_ZONE_1B$ to 10701
Equ LAMP_ZONE_1C$ to 10702
Equ LAMP_ZONE_2A$ to 10703
Equ LAMP_ZONE_2B$ to 10704
Equ LAMP_ZONE_3A$ to 10705
Equ LAMP_ZONE_3B$ to 10706
Equ LAMP_ZONE_3C$ to 10707
Equ LAMP_ZONE_3D$ to 10708
Equ LAMP_ZONE_4$ to 10709
Equ LAMP_ZONE_5$ to 10710
Equ LAMP_ZONE_8A$ to 10711
Equ LAMP_ZONE_8B$ to 10712
Equ LAMP_ZONE_9B$ to 10713
Equ LAMP_ZONE_6A$ to 10714
Equ LAMP_ZONE_7A$ to 10715
Equ LAMP_ZONE_10A$ to 10716
Equ LAMP_ZONE_10B$ to 10717
Equ LAMP_ZONE_9A$ to 10718
Equ LAMP_ZONE_6C$ to 10720
Equ LAMP_ZONE_6B$ to 10721
Equ LAMP_ZONE_7B$ to 10722
Equ LAMP_ZONE_11A$ to 10723
Equ LAMP_ZONE_11B$ to 10724
Equ LAMP_ZONE_12$ to 10725
Declare function Database_Services, Error_Services, SRP_JSON, React_Servs_Services, SrP_Array
Declare subroutine SRP_JSON, Error_Services, React_Servs_Services, Extract_Si_Keys
GoToService
@ -39,6 +72,67 @@ Return Response or ""
//-----------------------------------------------------------------------------
Service GetIntrMaintFlowIds(ReactServIds)
ErrorMsg = ''
IntrMaintFlowIds = ''
If ReactServIds NE '' then
ReactServIds = SRP_Array('Clean', ReactServIds, 'TrimAndMakeUnique', @VM)
Convert @VM to @FM in ReactServIds
If RowExists('REACT_SERVS', ReactServIds) then
IntrusiveReactServs = ''
Extract_Si_Keys('REACT_SERVS', 'IS_INTRUSIVE', True$, IntrusiveReactServs)
ErrCode = ''
If Not(Get_Status(ErrCode)) then
Convert @FM to @VM in ReactServIds
ReactServIds = SRP_Array('Join', IntrusiveReactServs, ReactServIds, 'AND', @VM)
If ReactServIds NE '' then
IntrMaintFlowIds = Xlate('REACT_SERVS', ReactServIds, REACT_SERVS_INTR_MAINT_FLOW_ID$, 'X')
NumTCSvcs = 0
NumLampSvcs = 0
For each ReactServId in ReactServIds using @VM
NumTCSvcs += ( (ReactServId EQ THERMOCOUPLE_FRONT$) or (ReactServId EQ THERMOCOUPLE_SIDE$) or (ReactServId EQ THERMOCOUPLE_REAR$) )
NumLampSvcs += (ReactServId EQ LAMP_ZONE_1A$) or (ReactServId EQ LAMP_ZONE_1B$) or (ReactServId EQ LAMP_ZONE_1C$) |
or (ReactServId EQ LAMP_ZONE_2A$) or (ReactServId EQ LAMP_ZONE_2B$) or (ReactServId EQ LAMP_ZONE_3A$) |
or (ReactServId EQ LAMP_ZONE_3B$) or (ReactServId EQ LAMP_ZONE_3C$) or (ReactServId EQ LAMP_ZONE_3D$) |
or (ReactServId EQ LAMP_ZONE_4$) or (ReactServId EQ LAMP_ZONE_5$) or (ReactServId EQ LAMP_ZONE_8A$) |
or (ReactServId EQ LAMP_ZONE_8B$) or (ReactServId EQ LAMP_ZONE_9B$) or (ReactServId EQ LAMP_ZONE_6A$) |
or (ReactServId EQ LAMP_ZONE_7A$) or (ReactServId EQ LAMP_ZONE_10A$) or (ReactServId EQ LAMP_ZONE_10B$) |
or (ReactServId EQ LAMP_ZONE_9A$) or (ReactServId EQ LAMP_ZONE_6C$) or (ReactServId EQ LAMP_ZONE_6B$) |
or (ReactServId EQ LAMP_ZONE_7B$) or (ReactServId EQ LAMP_ZONE_11A$) or (ReactServId EQ LAMP_ZONE_11B$) |
or (ReactServId EQ LAMP_ZONE_12$)
Until ( (NumTCSvcs GT 1) and (NumLampSvcs GT 1) )
Next ReactServId
If (NumLampSvcs GT 1) then
// If two or more lamps are replaced, use flow "C" instead
// of "I" per EpiMSA WI-0022-1 Rev C Intrusive Maintenance Checklist.xlsx
Swap 'I' with 'C' in IntrMaintFlowIds
end
If (NumTCSvcs GT 1) then
// If two or more thermocouples are replaced, use flow "C" instead
// of "C" per EpiMSA WI-0022-1 Rev C Intrusive Maintenance Checklist.xlsx
Swap 'E' with 'C' in IntrMaintFlowIds
end
end
end else
ErrorMsg = 'Error in service ':Service:'. Error calling Extract_Si_Keys on the IS_INTRUSIVE column within the REACT_SERVS table.'
end
end else
Convert @FM to ',' in ReactServIds
ErrorMsg = 'Error in service ':Service:'. One or more keys, ':ReactServIds:', do not exist in the REACT_SERVS table.'
end
end else
ErrorMsg = 'Error in service ':Service:'. Null ReactServIds passed in.'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end else
Response = SRP_Array('Clean', IntrMaintFlowIds, 'TrimAndMakeUnique', @VM)
end
end service
Service GetReactMetrics()
Response = ''

View File

@ -1,33 +0,0 @@
Function Test_Crisp()
#pragma precomp SRP_PreCompiler
Declare function Memberof, Msg, Database_Services, Reactor_Services
DECLARE subroutine Write_Oi_To_Sql
Equ Tab$ to Char(9)
Equ Esc$ to \1B\
Equ CRLF$ to \0D0A\
r = 28
loaded = Reactor_services('GetReactorCurrLoad', r)
return loaded
*debug
KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'CRISP_TEST')
For each KeyID in KeyList using @FM setting fPos then
TableName = 'JCH_LOG'
If TableName NE '' and KeyID NE '' then
TransID = ''
TransID<1> = 'WRITE'
TransID<2> = 'LSL2'
TransID<3> = 'LSL'
TransID<4> = TableName
TransID<5> = KeyID
Write_OI_To_Sql(TransID)
end
//Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
Next KeyID

View File

@ -1,191 +0,0 @@
Function Test_Crisp2()
#pragma precomp SRP_PreCompiler
* Use to add shipment record numbers to WOMatKey based on WO or ship date + reactor type
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, Reactor_Services
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Sap_Services, obj_sap, Errlog, Set_FSError, Print_Cass_Labels
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV, SRP_Path
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format, Direct_Print
Declare Function DateTime, GaN_Services, SRP_Array, SRP_Clean_Array, Excel_Services, EpiPro_Services, Sap_Services, Signature_Services, Rti_Openid_Support
Declare Function Set_Printer, Printer_Select, Print_SAP_Cass_Ship_Label
Declare subroutine Data_Map_Test, Print_SAP_Cass_Ship_Label
Declare Function Get.RecCount
Declare Function DCount
Declare Function Database_Services
Declare Function Environment_Services, Select_Into
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
//$insert APP_INSERTS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert EPI_PART_EQUATES
$insert SCANS_EQUATES
$insert SERVICE_SETUP
equ crlf$ to \0D0A\
*debug
*open "REPLICATION_QUEUE_LSL2_RUN_STAGE_WFR" to REP_TABLE then
*open "REPLICATION_QUEUE_GLOBAL_PUBLIC" to REP_TABLE then
*open "REPLICATION_QUEUE_LSL2_WO_MAT" to REP_TABLE then
open "REPLICATION_QUEUE_LSL2_RDS" to REP_TABLE then
*open "REPLICATION_QUEUE_LSL2_REACT_RUN" to REP_TABLE then
*open "REPLICATION_QUEUE_LSL2_WO_WFR" to REP_TABLE then
end
select REP_TABLE
done = FALSE$
idList = ''
status=''
loop
readnext @ID Else Done = TRUE$
until done
read REC from REP_TABLE, @ID then
*if REC<5> EQ 'R69' then
*if REC<5> EQ '459904*JV_XRD*170095.19.10' then
if REC<5> EQ '518495' then
delete REP_TABLE, @ID
end
*end else
* idList =+ idList:@ID:','
* swap '.' with '*' in REC
* write REC on REP_TABLE, @ID else
* return 'Delete_error @':@ID
* status = Set_FSError()
* end
* end else
* *return 'Read Error @':@ID
* end
*end
end
repeat
end else
return 'Open_Error'
end
* return idList
*
* * open "SEC_GROUPS" to REP_TABLE then
* * select REP_TABLE
* * done = FALSE$
* * loop
* * readnext @ID Else Done = TRUE$
* * until done
* * read REC from REP_TABLE, @ID then
* * if REC<5> EQ '403583' then
* * delete REP_TABLE, @ID else
* * return 'Delete_error @':@ID
* * end
* * end
* * end else
* * return 'Read Error @':@ID
* * end
* * repeat
* * end else
* * return 'Open_Error'
* * end
*
* return
*
* //printing 4x4 label (WO_NO, CASS_NO, STAGE, RDS_NO)
* *Print_SAP_Cass_Ship_Label(168982,1,1,390211)
* *
* * //below is code snippet where BTREE extract not pulling up SAP_BATCH_NO on Ship Label Check form
* * Open 'DICT.WO_MAT' To DictWOMat Then
* * BatchID = 'M014188.1'
* * Search = 'SAP_BATCH_NO':@VM:BatchID:@FM
* * Flag = ''
* * ScanWOMatKey = ''
* *
* * Set_Status(0)
* * Btree.Extract(Search,'WO_MAT',DictWOMat,ScanWOMatKey,'',Flag)
* * If Get_Status(errCode) Then
* * ErrMsg(errCode)
* * End
* * return ScanWOMatKey
* * end
* *
* * return
*
*
* Open 'REPLICATION_QUEUE_LSL2_WO_MAT' To table THEN
*
* Select table
* Done = 0
* LOOP
* READNEXT @ID ELSE Done = 1
* UNTIL Done
* Read @RECORD From table, @ID THEN
* DELETE table, @ID
* end
* REPEAT
* end
*
* return
*
* vStmt = "SELECT RDS WITH SEQ >= '395284' AND WITH SEQ <= '396000' " : @fm
* vStmt := "LIST RDS"
*
* results = Select_into ( vStmt, "CSV" )
* filename = "d:\temp\test.csv"
* OsWrite results on filename
* *Call shellexecute(0,'Open':\\00\, filename:\00\,'','',1)
* return
*
*
* *debug
* tableName = 'WO_MAT'
* fileName = "d:\temp\":tableName:"_2keys.txt"
* Open tableName To tablevar THEN
* tablename = ''
* Select tablevar
* report = ''
* Done = 0
* LOOP
* READNEXT @ID ELSE Done = 1
* UNTIL Done
* *Read @RECORD From tablevar, @ID THEN
* report := @ID:crlf$
* *end
* REPEAT
* end
*
* OSWrite report To filename

View File

@ -1,86 +0,0 @@
Function Test_Crisp3()
#pragma precomp SRP_PreCompiler
* Use to add shipment record numbers to WOMatKey based on WO or ship date + reactor type
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, Reactor_Services
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Sap_Services, obj_sap, Errlog, Set_FSError, Print_Cass_Labels
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV, SRP_Path
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format, Direct_Print
Declare Function DateTime, GaN_Services, SRP_Array, SRP_Clean_Array, Excel_Services, EpiPro_Services, Sap_Services, Signature_Services, Rti_Openid_Support
Declare Function Set_Printer, Printer_Select, Replication_Services
Declare subroutine Data_Map_Test, Replication_Services
Declare Function Get.RecCount
Declare Function DCount
Declare Function Database_Services
Declare Function Environment_Services
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
//$insert APP_INSERTS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert EPI_PART_EQUATES
$insert SCANS_EQUATES
$insert SERVICE_SETUP
equ crlf$ to \0D0A\
report = ''
tableName = 'JCH_LOG'
tableVar = ''
fileName = 'd:\temp\':tableName:'.txt'
Open tableName To tablevar THEN
Select tablevar
Done = 0
LOOP
READNEXT @ID ELSE Done = 1
UNTIL Done
*if @ID < 80000 AND @ID > 73291 then
report := @ID:crlf$
*end
REPEAT
End
OSWrite report To filename
return

View File

@ -1,70 +0,0 @@
Function Test_Crisp4()
#pragma precomp SRP_PreCompiler
equ crlf$ to \0D0A\
$Insert LOGICAL
Declare function Replication_Services
Declare subroutine Database_Services
Open 'REPLICATION_QUEUE_LSL2_RDS' to TableHandle then
Select TableHandle
EOF = False$
Loop
ReadNext @ID else EOF = True$
Until EOF
If Not(Num(@ID)) and Not(Index(@ID, '%', 1)) then
Delete TableHandle, @ID then Null
end
Repeat
end
return
*
* Flag = ''
* RDSTestKeyIDs = ''
* RDSNo = ''
* hDictRDSTest = Database_Services('GetTableHandle', 'DICT.RDS_TEST')
* SearchString = 'RDS_NO' : @VM : RDSNo : @FM
* Btree.Extract(SearchString, 'RDS_TEST', hDictRDSTest, RDSTestKeyIDs, '', Flag)
* If Flag EQ 0 then
* If RDSTestKeyIDs NE '' then
* For Each RDSTestKeyID in RDSTestKeyIDs using @VM
* If Len(RDSTestKeyID) LT 7 then
* Database_Services('DeleteDataRow', 'RDS_TEST', RDSTestKeyID, True$)
* If Error_Services('NoError') then
* Results = RDSTestKeyID : ' deleted'
* end else
* Results = RDSTestKeyID : ' not deleted. Error : ' : Error_Services('GetMessage')
* end
* LogData<1> = LoggingDTM
* LogData<2> = Results
* Logging_Services('AppendLog', objLog2, LogData, @RM, @FM)
* end
* Next RDSTestKeyID
* end
* end
*
*
* return
*
* fileName = "d:\temp\Replication_keys.txt"
* open 'REPLICATION_QUEUE_LSL2_REACT_RUN' to REP_TABLE then
* select REP_TABLE
* done = 0
* report=''
*debug
* loop
* readnext @ID Else Done = 1
* until done
* read REC from REP_TABLE, @ID then
* report := REC<5>:crlf$
* end
* repeat
* end else
* return 'Open_Error'
* end
*
* OSWrite report To filename
*
* return

View File

@ -1,9 +0,0 @@
Function Test_Crisp5()
#pragma precomp SRP_PreCompiler
Debug
IF 1 EQ 1 then
a = 0
end
return

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,440 +0,0 @@
Function Test_Daniel3_DEV()
#pragma precomp SRP_PreCompiler
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, Reactor_Services
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg
Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format
Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit
Declare function RTI_Task_Status, Rds_Services
Declare subroutine SRP_Stopwatch, Btree.Extract
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert WO_WFR_EQUATES
$Insert DICT_EQUATES
$Insert RTI_DEBUG_COMMON
$Insert PRINTSETUP_EQUATES
// Reduce modes (for Select statement)
Equ NEW_EXIST$ To 0
Equ NEXT_CUR$ To 1
Equ ADD_EXIST$ To 2
EQU COL$QA_MET_PHASE_MIN TO 17
Equ Tab$ to \09\
Equ CRLF$ to \0D0A\
Equ LF$ to \0A\
Equ Comma$ to ','
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\SQL_Backlog'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Quarantine Log.csv'
Headers = 'Logging DTM' : @FM : 'Debug Info'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
Main:
LogData = LoggingDTM : @RM : SPStatus@ : @RM : SPStatCode@ : @RM : Curr_Program@ : @RM : CallDepth@ : @RM : LineNo@ : @RM : CallStack@
Swap @RM with @FM in LogData
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
return
TaskID = RTI_Task_Submit('', 'TEST_DANIEL', '', '', '', '')
If TaskID NE 0 then
Done = False$
TaskResponse = ''
Loop
Status = RTI_Task_Status(TaskID, TaskResponse)
If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$
Until Done
Repeat
end else
// Track if task id wasn't created at all.
end
StatusError = Get_Status(errCode)
If (Index(errCode, 'SHELLEXECUTE', 1)) NE 0 then StatusError = 0
return
* retval = Utility("PRINTSETUP")
IF NOT(ASSIGNED(PrinterID)) THEN PrinterID = ''
IF NOT(ASSIGNED(RetDefault)) THEN RetDefault = ''
Printers = ''
Default = ''
IF @User4 EQ 'DAN_CR' then debug
//PrintCount = PrintSetupNew(Printers,Default) ;* OI routine returns printer names, driver, port information
//end else
PrintCount = PrintSetup(PRN_GET$,'',Printers,Default) ;* OI routine returns printer names, driver, port information
//end
DefPrinter = Default[1,',']
DefPort = FIELD(Default,',',3)
DefLine = DefPrinter:' on ':DefPort
* If Default NE 'Microsoft XPS Document Writer,winspool,Ne00:' then
* Null
PrintSetup(PRN_SET$, 'Microsoft XPS Document Writer,winspool,Ne00:')
* end
return
// Import 6 inch Excel spreadsheet
RetainFilepath = 'D:\Apps\Temp\6in-IFEPI GaN Retain Inventory.xlsx'
* RetainFilepath = 'D:\Apps\Temp\8in-IFEpi GaN Retain Inventory.xlsx'
* RetainFilepath = 'D:\Apps\Temp\Sample.xlsx'
RetainExcelHandle = Excel_Services('OpenDocument', RetainFilepath)
RetainWorksheet = 'Sheet1'
NumExcelRows = Excel_Services('GetNumRows', RetainExcelHandle, RetainWorksheet)
Open 'DICT.REACT_RUN' to @DICT then
For ExcelRow = 2 to NumExcelRows
RunID = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'A', ExcelRow) )
Convert @Upper.Case to @Lower.Case in RunID
RDSNo = ''
Column = 'GAN_RUN_ID'
SearchString = Column:@VM:RunID:@FM
Btree.Extract(SearchString, 'REACT_RUN', @DICT, RDSNo)
If RDSNo NE '' then
ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo)
If Error_Services('NoError') then
RRRecipe = ReactRunRec<REACT_RUN_GAN_RECIPE$>
RRPart = Xlate('REACT_RUN', RDSNo, 'EPI_PART_NO', 'X')
RRScribes = Xlate('REACT_RUN', RDSNo, 'WFR_SCRIBES', 'X')
InWfrIDs = ReactRunRec<REACT_RUN_IN_WFR_ID$>
* Read the data from the Excel retain spreadsheet *
Recipe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'B', ExcelRow) )
Pocket = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'C', ExcelRow) )
If Pocket _NEC 'ref' then
Scribe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'D', ExcelRow) )
Grade = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'E', ExcelRow) )
Part = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'F', ExcelRow) )
WorkOrder = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'G', ExcelRow) )
RetainBox = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'H', ExcelRow) )
RetainSlot = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'I', ExcelRow) )
Operator = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'J', ExcelRow) )
RetainDTM = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'K', ExcelRow) )
CurrLoc = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'L', ExcelRow) )
Status = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'M', ExcelRow) )
Comment = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'N', ExcelRow) )
Begin Case
Case Operator _EQC 'AH'
RetainSig = 'ANTHONY_H'
Case Operator _EQC 'SB'
RetainSig = 'SYEDA_B'
Case Operator _EQC 'PM'
RetainSig = 'PEYTON_M'
Case Operator _EQC 'JL'
RetainSig = 'JAVIER_L'
Case Operator _EQC 'PS'
RetainSig = 'PRISCILA_S'
Case Operator _EQC 'NC'
RetainSig = 'NIKOLAS_C'
Case Operator _EQC 'HG'
RetainSig = 'HECTOR_G'
Case Operator _EQC 'ES'
RetainSig = 'ESTEBAN_S'
Case Operator _EQC 'AD'
RetainSig = 'ALIYAH_D'
Case Operator _EQC 'LB'
RetainSig = 'LACEY_B'
Case Operator _EQC 'IP'
RetainSig = 'IAN_P'
Case Operator _EQC 'RC'
RetainSig = 'RYAN_C'
Case Operator _EQC 'GR'
RetainSig = 'GEORGE_R'
Case Operator _EQC 'AH/JL'
RetainSig = 'ANTHONY_H'
Case Operator _EQC 'NC/JL'
RetainSig = 'NIKOLAS_C'
Case Operator _EQC 'SW'
RetainSig = 'STEVEN_W'
Case Otherwise$
RetainSig = ''
End Case
// Truncate DTM to just the date, then convert to internal format
RetainDate = RetainDTM[1, 'F ']
RetainDate = IConv(RetainDate, 'D')
* Clean the data *
// Format the Recipe
Convert @Lower.Case to @Upper.Case in Recipe
// Format the Pocket
If Pocket[1, 1] NE '0' then Pocket = '0':Pocket
// Format the Scribe
Convert @Lower.Case to @Upper.Case in Scribe
// Format the Grade
Begin Case
Case Grade _EQC 'aborted'
Grade = 'Aborted'
Case Grade _EQC 'CT'
Grade = 'CT'
Case ( (Grade _EQC 'Eng test') or (Grade _EQC 'Eng test') or (Grade _EQC 'Engtest') or (Grade _EQC 'Test') )
Grade = 'Eng Test'
Case Grade _EQC 'Eq Failure'
Grade = 'EQ Failure'
Case Grade _EQC 'Mechanical'
Grade = 'Mechanical'
Case Grade _EQC 'NA'
Grade = 'NA'
Case Grade _EQC 'retain'
Grade = 'Retain'
Case Grade _EQC 'scrap'
Grade = 'Scrap'
Case Grade _EQC 'Terminated'
Grade = 'Terminated'
Case Grade _EQC ''
Grade = ''
Case Otherwise$
Null
End Case
// Format the Part No
Convert @Lower.Case to @Upper.Case in Part
// Format the Current Location
Begin Case
Case CurrLoc _EQC 'Cleanroom'
CurrLoc = 'Cleanroom'
Case ( (CurrLoc _EQC 'Wafer Destroyed') or (CurrLoc _EQC 'Wafers Destroyed') or (CurrLoc _EQC 'Wasfer Destroyed') )
CurrLoc = 'Wafer Destroyed'
Case CurrLoc _EQC 'Warehouse'
CurrLoc = 'Warehouse'
End Case
* Write the data to the WO_WFR record *
WfrIndex = Pocket + 0 ; // Convert string to integer and trim 0 padding
RRScribe = RRScribes<0, WfrIndex>
WfrID = InWfrIDs<0, WfrIndex>
WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID)
If Error_Services('NoError') then
* WOWfrRec<WO_WFR_GRADE$> = Grade
* WOWfrRec<WO_WFR_GAN_RUN_ID$> = RunID
* WOWfrRec<WO_WFR_POCKET$> = Pocket
* WOWfrRec<WO_WFR_SCRIBE$> = Scribe
* WOWfrRec<WO_WFR_RETAIN_BOX$> = RetainBox
* WOWfrRec<WO_WFR_RETAIN_SLOT$> = RetainSlot
* WOWfrRec<WO_WFR_RETAIN_LOC$> = CurrLoc
* WOWfrRec<WO_WFR_RETAIN_COMMENT$> = Comment
* WOWfrRec<WO_WFR_RETAIN_STATUS$> = Status
* WOWfrRec<WO_WFR_RETAIN_SIG$> = RetainSig
WOWfrRec<WO_WFR_RETAIN_DT$> = RetainDate
Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$)
end
end
end
end
Next ExcelRow
end
Excel_Services('CloseDocument', RetainExcelHandle)
// Import 8 inch Excel spreadsheet
RetainFilepath = 'D:\Apps\Temp\8in-IFEpi GaN Retain Inventory.xlsx'
RetainExcelHandle = Excel_Services('OpenDocument', RetainFilepath)
RetainWorksheet = 'Sheet1'
NumExcelRows = Excel_Services('GetNumRows', RetainExcelHandle, RetainWorksheet)
Open 'DICT.REACT_RUN' to @DICT then
For ExcelRow = 2 to NumExcelRows
RunID = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'A', ExcelRow) )
Convert @Upper.Case to @Lower.Case in RunID
RDSNo = ''
Column = 'GAN_RUN_ID'
SearchString = Column:@VM:RunID:@FM
Btree.Extract(SearchString, 'REACT_RUN', @DICT, RDSNo)
If RDSNo NE '' then
ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo)
If Error_Services('NoError') then
RRRecipe = ReactRunRec<REACT_RUN_GAN_RECIPE$>
RRPart = Xlate('REACT_RUN', RDSNo, 'EPI_PART_NO', 'X')
RRScribes = Xlate('REACT_RUN', RDSNo, 'WFR_SCRIBES', 'X')
InWfrIDs = ReactRunRec<REACT_RUN_IN_WFR_ID$>
* Read the data from the Excel retain spreadsheet *
Recipe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'B', ExcelRow) )
Pocket = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'C', ExcelRow) )
If Pocket _NEC 'ref' then
Scribe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'D', ExcelRow) )
Grade = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'E', ExcelRow) )
Part = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'F', ExcelRow) )
WorkOrder = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'G', ExcelRow) )
RetainBox = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'H', ExcelRow) )
RetainSlot = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'I', ExcelRow) )
Operator = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'J', ExcelRow) )
RetainDate = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'K', ExcelRow) )
CurrLoc = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'L', ExcelRow) )
Status = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'M', ExcelRow) )
Comment = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'N', ExcelRow) )
Begin Case
Case Operator _EQC 'AH'
RetainSig = 'ANTHONY_H'
Case Operator _EQC 'SB'
RetainSig = 'SYEDA_B'
Case Operator _EQC 'PM'
RetainSig = 'PEYTON_M'
Case Operator _EQC 'JL'
RetainSig = 'JAVIER_L'
Case Operator _EQC 'PS'
RetainSig = 'PRISCILA_S'
Case Operator _EQC 'NC'
RetainSig = 'NIKOLAS_C'
Case Operator _EQC 'HG'
RetainSig = 'HECTOR_G'
Case Operator _EQC 'ES'
RetainSig = 'ESTEBAN_S'
Case Operator _EQC 'AD'
RetainSig = 'ALIYAH_D'
Case Operator _EQC 'LB'
RetainSig = 'LACEY_B'
Case Operator _EQC 'IP'
RetainSig = 'IAN_P'
Case Operator _EQC 'RC'
RetainSig = 'RYAN_C'
Case Operator _EQC 'GR'
RetainSig = 'GEORGE_R'
Case Operator _EQC 'AH/JL'
RetainSig = 'ANTHONY_H'
Case Operator _EQC 'NC/JL'
RetainSig = 'NIKOLAS_C'
Case Operator _EQC 'SW'
RetainSig = 'STEVEN_W'
Case Otherwise$
RetainSig = ''
End Case
// Truncate DTM to just the date, then convert to internal format
RetainDate = RetainDTM[1, 'F ']
RetainDate = IConv(RetainDate, 'D')
* Clean the data *
// Format the Recipe
Convert @Lower.Case to @Upper.Case in Recipe
// Format the Pocket
If Pocket[1, 1] NE '0' then Pocket = '0':Pocket
// Format the Scribe
Convert @Lower.Case to @Upper.Case in Scribe
// Format the Grade
Begin Case
Case Grade _EQC 'aborted'
Grade = 'Aborted'
Case Grade _EQC 'CT'
Grade = 'CT'
Case ( (Grade _EQC 'Eng test') or (Grade _EQC 'Eng test') or (Grade _EQC 'Engtest') or (Grade _EQC 'Test') )
Grade = 'Eng Test'
Case Grade _EQC 'Eq Failure'
Grade = 'EQ Failure'
Case Grade _EQC 'Mechanical'
Grade = 'Mechanical'
Case Grade _EQC 'NA'
Grade = 'NA'
Case Grade _EQC 'retain'
Grade = 'Retain'
Case Grade _EQC 'scrap'
Grade = 'Scrap'
Case Grade _EQC 'Terminated'
Grade = 'Terminated'
Case Grade _EQC ''
Grade = ''
Case Otherwise$
Null
End Case
// Format the Part No
Convert @Lower.Case to @Upper.Case in Part
// Format the Current Location
Begin Case
Case CurrLoc _EQC 'Cleanroom'
CurrLoc = 'Cleanroom'
Case ( (CurrLoc _EQC 'Wafer Destroyed') or (CurrLoc _EQC 'Wafers Destroyed') or (CurrLoc _EQC 'Wasfer Destroyed') )
CurrLoc = 'Wafer Destroyed'
Case CurrLoc _EQC 'Warehouse'
CurrLoc = 'Warehouse'
End Case
* Write the data to the WO_WFR record *
WfrIndex = Pocket + 0 ; // Convert string to integer and trim 0 padding
RRScribe = RRScribes<0, WfrIndex>
WfrID = InWfrIDs<0, WfrIndex>
WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID)
If Error_Services('NoError') then
* WOWfrRec<WO_WFR_GRADE$> = Grade
* WOWfrRec<WO_WFR_GAN_RUN_ID$> = RunID
* WOWfrRec<WO_WFR_POCKET$> = Pocket
* WOWfrRec<WO_WFR_SCRIBE$> = Scribe
* WOWfrRec<WO_WFR_RETAIN_BOX$> = RetainBox
* WOWfrRec<WO_WFR_RETAIN_SLOT$> = RetainSlot
* WOWfrRec<WO_WFR_RETAIN_LOC$> = CurrLoc
* WOWfrRec<WO_WFR_RETAIN_COMMENT$> = Comment
* WOWfrRec<WO_WFR_RETAIN_STATUS$> = Status
* WOWfrRec<WO_WFR_RETAIN_SIG$> = RetainSig
WOWfrRec<WO_WFR_RETAIN_DT$> = RetainDate
Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$)
end
end
end
end
Next ExcelRow
end
Excel_Services('CloseDocument', RetainExcelHandle)
return

View File

@ -1,227 +0,0 @@
Function Test_Daniel4()
#pragma precomp SRP_PreCompiler
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services,
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg
Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL, SQL_Services, Material_Services, Messaging_Services
Declare subroutine Reactor_Services, Reactor_Services_Dev, SRP_Stopwatch, Btree.Extract, Set_Env, Test_Daniel3
Declare subroutine obj_WO_Log, SAP_Services, Report_Services, Make.List
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format
Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit
Declare function RTI_Task_Status, Rds_Services, StartDotNet, Reactor_Services, SRP_Get_FileVersion, Epi_Part_Services
Declare function Schedule_Services, List_Users, rti_lh_info_DEBUG, RTI_Lock_Owner, Popup_Services
Declare function GetCurrentProcessID, Report_Services
$INSERT ENVIRON_CONSTANTS
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert WO_WFR_EQUATES
$Insert REVDOTNETEQUATES
$Insert REACTOR_EQUATES
$Insert RDS_TEST_EQUATES
$Insert RUN_STAGE_WFR_EQUATES
// Reduce modes (for Select statement)
Equ NEW_EXIST$ To 0
Equ NEXT_CUR$ To 1
Equ ADD_EXIST$ To 2
EQU COL$QA_MET_PHASE_MIN TO 17
Equ Tab$ to \09\
Equ CRLF$ to \0D0A\
Equ LF$ to \0A\
Equ Comma$ to ','
$INSERT PRINTSETUP_EQUATES
* Round:
*
* Ratio = '97'
* debug
* Ratio = OConv(IConv(Ratio, 'MD2L'), 'MD2L')
*
* return
* FiscalYr:
*
* CurrDate = Date()
* Query = 'SELECT FISCAL_QTR WITH FISCAL_YR EQ 2022 AND WITH START_DT LT ':CurrDate:' AND WITH END_DT GT ':CurrDate
* RList(Query, TARGET_ACTIVELIST$, '', '', '')
* If Not(Get_Status(ErrCode)) then
* ReadNext FiscalQtrKey then
* WorkingDays = Xlate('FISCAL_QTR', FiscalQtrKey, 'PLAN_WORKING_DAYS', 'X')
* Targets = Xlate('FISCAL_QTR', FiscalQtrKey, 'THRU_TARGET', 'X')
* Qtys = Xlate('FISCAL_QTR', FiscalQtrKey, 'THRU_QTY', 'X')
* Locate 'Yield_Outs' in Targets using @VM setting vPos then
* QtrTarget = Qtys<0, vPos>
* DailyTarget = QtrTarget / WorkingDays
* end
* end
* end
*
*
*
* return
* Projected:
*
* Open 'RDS' to hTable then
* Open 'DICT.RDS' to hDict then
* Date = Date()
* CurrTime = Time()
* SearchString = 'DATE_OUT':@VM:(Date - 1):@FM:'TIME_OUT':@VM:'>':CurrTime
* YesterdayRDSKeys = ''
* Option = ''
* Flag = ''
* Set_Status(0)
* Btree.Extract(SearchString, 'RDS', hDict, YesterdayRDSKeys, Option, Flag)
* IF Not(Get_Status(errCode)) then
* SearchString = 'DATE_OUT':@VM:Date
* TodayRDSKeys = ''
* Option = ''
* Flag = ''
* Set_Status(0)
* Btree.Extract(SearchString, 'RDS', hDict, TodayRDSKeys, Option, Flag)
* If Not(Get_Status(errCode)) then
* TotalRDSKeys = SRP_Array('Join', YesterdayRDSKeys, TodayRDSKeys, 'OR', @VM)
*
* debug
* TotalThickness24 = 0
* TotalReactorsOut24 = 0
* For each RDS in TotalRDSKeys using @VM
* Database_Services('ActivateRecord', 'RDS', RDS)
* TargetThick = OConv({THICK_TARGET_TOT}, 'MD3')
* ReactorsOut = {WAFERS_IN}
* TotalThickness24 += TargetThick * ReactorsOut
* Next RDS
* DayRatio = CurrTime / 86400
* ProjectedThick = TotalThickness24 / DayRatio
* ProjectedThick = ProjectedThick[1, 'F.']
* ProjectedYield
*
* end
* end
* end
* end
*
*
* return
Metrics:
*
* debug
* JSON = Report_Services("GetMetricsJSON", Date())
* OSWrite JSON on 'D:\FITemp\Metrics.json'
*
* return
StartDate = Date() - 9
EndDate = Date() - 1
For Date = StartDate to EndDate
Report_Services('UpdateDailyMetrics', Date)
Next Date
return
ReactMode:
debug
Tool = 'SP101'
Tool[4,1] = ' '
* CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', 48, 1, 'X')
return
ErrorTest:
Success = False$
If Success then
MsgStruct = ''
MsgStruct<MICON$> = '*' ; // Info icon
Msg(@Window, MsgStruct, 'OK', '', 'Success':@FM:'Report generated.')
end else
MsgStruct = ''
MsgStruct<MICON$> = 'H' ; // Error icon
Msg(@Window, MsgStruct, 'OK', '', 'Error':@FM:'Error generating report')
end
return
Process:
TableName = 'RDS_QUEUE'
CursorVar = ''
Flag = ''
SortList = '#RDS_NO'
ReduceScript = 'WITH {RDS_NO} FROM 440000 TO 459999'
Mode = 1 ; // Use next cursor available
EOF = False$
Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag)
If Flag then
Select TableName By SortList Using CursorVar then
Loop
Readnext KeyID using CursorVar by AT else EOF = True$
Until EOF
Material_Services('UpdateRDSStatus', KeyID)
If Error_Services('NoError') then
// Successfully updated the current status, so delete the request from the queue.
Database_Services('DeleteDataRow', 'RDS_QUEUE', KeyID, True$, True$)
end
Repeat
End else
status = Set_FSError()
end
end
return

View File

@ -1,102 +0,0 @@
Function Test_Daniel5()
#pragma precomp SRP_PreCompiler
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services,
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg
Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL, SQL_Services, Material_Services, Messaging_Services
Declare subroutine Reactor_Services, Reactor_Services_Dev, SRP_Stopwatch, Btree.Extract, Set_Env, Test_Daniel3
Declare subroutine obj_WO_Log, SAP_Services
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format
Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit
Declare function RTI_Task_Status, Rds_Services, StartDotNet, Reactor_Services, SRP_Get_FileVersion, Epi_Part_Services
Declare function Schedule_Services, List_Users, rti_lh_info_DEBUG, RTI_Lock_Owner, Popup_Services
Declare function GetCurrentProcessID
$INSERT ENVIRON_CONSTANTS
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert WO_WFR_EQUATES
$Insert REVDOTNETEQUATES
$Insert REACTOR_EQUATES
$Insert RDS_TEST_EQUATES
$Insert RUN_STAGE_WFR_EQUATES
// Reduce modes (for Select statement)
Equ NEW_EXIST$ To 0
Equ NEXT_CUR$ To 1
Equ ADD_EXIST$ To 2
EQU COL$QA_MET_PHASE_MIN TO 17
Equ Tab$ to \09\
Equ CRLF$ to \0D0A\
Equ LF$ to \0A\
Equ Comma$ to ','
$INSERT PRINTSETUP_EQUATES
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Test'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Test Log.csv'
Headers = 'Logging DTM' : @FM : 'Message'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime
Process:
LogData = ''
LogData<1, 1> = LoggingDTM
LogData<1, 2> = 'This is a test'
LogData<2, 1> = OConv(Datetime(), 'DT4/')
LogData<2, 2> = 'This is another test'
Logging_Services('AppendLog', objLog, LogData, @FM, @VM, '', 'tuckerc@infineon.com', 'Log reported')
return

View File

@ -1,104 +0,0 @@
Function Test_Daniel6()
#pragma precomp SRP_PreCompiler
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services,
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg
Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL, SQL_Services, Material_Services, Messaging_Services
Declare subroutine Reactor_Services, Reactor_Services_Dev, SRP_Stopwatch, Btree.Extract, Set_Env, Test_Daniel3
Declare subroutine obj_WO_Log, SAP_Services
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format
Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit
Declare function RTI_Task_Status, Rds_Services, StartDotNet, Reactor_Services, SRP_Get_FileVersion, Epi_Part_Services
Declare function Schedule_Services_Dev, List_Users, rti_lh_info_DEBUG, RTI_Lock_Owner, Popup_Services
Declare function GetCurrentProcessID
$INSERT ENVIRON_CONSTANTS
$INSERT POPUP_EQUATES
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT WM_IN_EQUATES
$Insert WM_OUT_EQUATES
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT ORDER_EQU
$INSERT RDS_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT NOTIFICATION_EQU
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT LOGICAL
$INSERT RTI_LH_INFO_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$Insert RLIST_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert SCHEDULE_EQU
$Insert SCHED_DET_EQUATES
$Insert SCHEDULER_EQUATES
$Insert NCR_EQUATES
$Insert REACT_RUN_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_LOG_EQUATES
$Insert PM_EQUATES
$Insert WO_WFR_EQUATES
$Insert REVDOTNETEQUATES
$Insert REACTOR_EQUATES
$Insert RDS_TEST_EQUATES
$Insert RUN_STAGE_WFR_EQUATES
// Reduce modes (for Select statement)
Equ NEW_EXIST$ To 0
Equ NEXT_CUR$ To 1
Equ ADD_EXIST$ To 2
EQU COL$QA_MET_PHASE_MIN TO 17
Equ Tab$ to \09\
Equ CRLF$ to \0D0A\
Equ LF$ to \0A\
Equ Comma$ to ','
$INSERT PRINTSETUP_EQUATES
Process:
TableName = 'RDS_QUEUE'
CursorVar = ''
Flag = ''
SortList = '#RDS_NO'
ReduceScript = 'WITH {RDS_NO} FROM 400000 TO 419999'
Mode = 1 ; // Use next cursor available
EOF = False$
Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag)
If Flag then
Select TableName By SortList Using CursorVar then
Loop
Readnext KeyID using CursorVar by AT else EOF = True$
Until EOF
Material_Services('UpdateRDSStatus', KeyID)
If Error_Services('NoError') then
// Successfully updated the current status, so delete the request from the queue.
Database_Services('DeleteDataRow', 'RDS_QUEUE', KeyID, True$, True$)
end
Repeat
End else
status = Set_FSError()
end
end
return

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -67,41 +67,31 @@ ChecklistButton:
Message = ''
ReactorNo = CurrParm[-1, 'B_']
Status_ProveIn = Reactor_Services('GetProveInActive', ReactorNo)
Status_0311 = XLATE('REACTOR', ReactorNo, REACTOR_0311_ACTIVE$, 'X')
If Status_0311 EQ '' then Status_0311 = False$
CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', ReactorNo, REACTOR_CHILD_KEY_IDS_REACT_MODE_KEY_IDS$, 'X')
CurrRLKey = Xlate('REACT_MODE_NG', CurrModeKey, REACT_MODE_NG_START_RL_ID$, 'X')
CurrRLKey = Xlate('REACT_MODE_NG', CurrModeKey, REACT_MODE_NG_START_RL_ID$, 'X')
ReactorNicaOrders = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactorNo)
ReactorPmOrderIds = Nica_Orders_Services('GetActiveOrders', 'REACTOR_LOG', CurrRlKey)
HgCVAlarmOrderIds = Nica_Orders_Services('GetActiveOrders', 'REACTOR', ReactorNo, 'IQS_HGCV_ALARM')
ChecklistInfo = 'The following checklist(s) are active: '
If Status_ProveIn then
// Add each active prove in order
ProveInOrderProgresses = Reactor_Services('GetActiveProveInProgresses', ReactorNo)
For each ProveInOrderProgress in ProveInOrderProgresses using @VM setting vPos
ChecklistInfo<-1> = ProveInOrderProgress
Next ProveInOrderProgress
end
If Status_0311 then ChecklistInfo<-1> = '0311 OCAP'
If ReactorPmOrderIds NE '' then
// Add each active reactor PM checklist order
For each ReactorPmOrderId in ReactorPmOrderIds using @VM setting vPos
ProgressPercentage = Xlate('NICA_ORDERS', ReactorPmOrderId, 'PROGRESS_PERCENTAGE', 'X')
ChecklistInfo<-1> = Xlate('NICA_ORDERS', ReactorPmOrderId, 'ORDER_TYPE', 'X') : '- ' : ProgressPercentage :'% Complete.'
Next RlPmType
end
If HgCVAlarmOrderIds NE '' then
For each HgCVAlarmOrderId in HgCVAlarmOrderIds using @VM
ProgressPercentage = Xlate('NICA_ORDERS', HgCVAlarmOrderId, 'PROGRESS_PERCENTAGE', 'X')
ChecklistInfo<-1> = Xlate('NICA_ORDERS', HgCVAlarmOrderId, 'ORDER_TYPE', 'X') : '- ' : ProgressPercentage :'% Complete.'
Next HgCVAlarmOrder
If ReactorNicaOrders NE '' then
For each NicaOrderId in ReactorNicaOrders using @VM
ProgressPercentage = Xlate('NICA_ORDERS', NicaOrderId, 'PROGRESS_PERCENTAGE', 'X')
ChecklistInfo<-1> = Xlate('NICA_ORDERS', NicaOrderId, 'ORDER_TYPE', 'X') : '- ' : ProgressPercentage :'% Complete.'
Next NicaOrderId
end
Swap @FM with CRLF$ in ChecklistInfo
@ -269,10 +259,10 @@ FORM_CREATE:
Set_Property(Window:'.OLE_PIC_':I, 'OLE.Image', '.\BMPS\Active_0311.png')
end
CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', I, 'REACT_MODE_KEY_IDS', 'X')
CurrModeKey = CurrModeKey[-1, 'B':@VM]
CurrRLKey = Xlate('REACT_MODE_NG', CurrModeKey, 'START_RL_ID', 'X')
Status_ReactorPM = Xlate('REACTOR_LOG', CurrRLKey, REACTOR_LOG_CHECKLIST_ACTIVE$, 'X')
CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', I, 'REACT_MODE_KEY_IDS', 'X')
CurrModeKey = CurrModeKey[-1, 'B':@VM]
CurrRLKey = Xlate('REACT_MODE_NG', CurrModeKey, 'START_RL_ID', 'X')
Status_ReactorPM = Xlate('REACTOR_LOG', CurrRLKey, REACTOR_LOG_CHECKLIST_ACTIVE$, 'X')
If Status_ReactorPM EQ '' then Status_ReactorPM = False$
@ -286,7 +276,12 @@ FORM_CREATE:
Set_Property(Window:'.OLE_PIC_':I, 'OLE.Image', '.\BMPS\ActiveProveIn.png')
end
OlePicVisible = ( Status_ProveIn or Status_0311 or Status_ReactorPM or Status_HgCV_Alarm)
Status_Intrusive_Maint = Xlate('REACTOR', I, REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$, 'X')
If Status_Intrusive_Maint EQ True$ then
Set_Property(Window:'.OLE_PIC_':I, 'OLE.Image', '.\BMPS\ActiveProveIn.png')
end
OlePicVisible = ( Status_ProveIn or Status_0311 or Status_ReactorPM or Status_HgCV_Alarm or Status_Intrusive_Maint)
Set_Property(Window:'.OLE_PIC_':I,'VISIBLE', OlePicVisible)
IQSPicControl = @Window : '.OLE_PIC_IQS_': i
@ -334,8 +329,3 @@ REACT_DETAIL:
return
*===============================================================================================*

View File

@ -0,0 +1,17 @@
compile insert FEATURE_FLAGS_EQUATES
/*----------------------------------------
Author : Table Create Insert Routine
Written : 07/03/2025
Description : Insert for Table FEATURE_FLAGS
----------------------------------------*/
#ifndef __FEATURE_FLAGS_EQUATES__
#define __FEATURE_FLAGS_EQUATES__
equ FEATURE_FLAGS.FEATURE_DESCRIPTION$ to 1
equ FEATURE_FLAGS.ENABLED$ to 2
equ FEATURE_FLAGS.MODIFY_USER$ to 3
equ FEATURE_FLAGS.MODIFY_DTM$ to 4
equ FEATURE_FLAGS.MODIFY_STATE$ to 5
equ FEATURE_FLAGS.MODIFY_COMMENT$ to 6
#endif

View File

@ -0,0 +1,16 @@
compile insert NICA_CHECKLISTS_EQUATES
/*----------------------------------------
Author : Table Create Insert Routine
Written : 05/03/2025
Description : Insert for Table NICA_CHECKLISTS
----------------------------------------*/
#ifndef __NICA_CHECKLISTS_EQUATES__
#define __NICA_CHECKLISTS_EQUATES__
equ NICA_CHECKLISTS.PRIORITY$ to 1
equ NICA_CHECKLISTS.NICA_BASE_INSTRUCTION_ID$ to 2
equ NICA_CHECKLISTS.NICA_ORDER_FLOW_IDS$ to 3
equ NICA_CHECKLISTS.NICA_ORDER_FLOW_TYPE$ to 4
equ NICA_CHECKLISTS.REACTOR_TYPES$ to 5
#endif

View File

@ -0,0 +1,13 @@
compile insert NICA_ORDERS_CHECKLISTS_EQUATES
/*----------------------------------------
Author : Table Create Insert Routine
Written : 03/03/2025
Description : Insert for Table NICA_ORDERS_CHECKLISTS
----------------------------------------*/
#ifndef __NICA_ORDERS_CHECKLISTS_EQUATES__
#define __NICA_ORDERS_CHECKLISTS_EQUATES__
equ NICA_ORDERS_CHECKLISTS.IS_COMPLETE$ to 1
equ NICA_ORDERS_CHECKLISTS.STATE$ to 2
#endif

View File

@ -7,12 +7,14 @@ compile insert NICA_ORDERS_EQUATES
#ifndef __NICA_ORDERS_EQUATES__
#define __NICA_ORDERS_EQUATES__
equ NICA_ORDERS.ORDER_TYPE$ to 1
equ NICA_ORDERS.ORDER_STATUS$ to 2
equ NICA_ORDERS.ENTITY_TYPE$ to 3
equ NICA_ORDERS.ENTITY_ID$ to 4
equ NICA_ORDERS.IS_COMPLETE$ to 5
equ NICA_ORDERS.PROGRESS_PERCENTAGE$ to 6
equ NICA_ORDERS.ORDER_TYPE$ to 1
equ NICA_ORDERS.ORDER_STATUS$ to 2
equ NICA_ORDERS.ENTITY_TYPE$ to 3
equ NICA_ORDERS.ENTITY_ID$ to 4
equ NICA_ORDERS.IS_COMPLETE$ to 5
equ NICA_ORDERS.PROGRESS_PERCENTAGE$ to 6
equ NICA_ORDERS.ORDER_CHECKLIST_IDS$ to 7
#endif

View File

@ -6,77 +6,79 @@ compile insert REACTOR_EQUATES
----------------------------------------*/
Equ REACTOR_REACT_NO$ To 0
Equ REACTOR_REACT_TYPE$ To 1
Equ REACTOR_REDUCED_PRESS$ To 2
Equ REACTOR_MFC_LOC$ To 3
Equ REACTOR_MFC_SERIAL$ To 4
Equ REACTOR_GAS_SRC$ To 5
Equ REACTOR_REACT_ASSIGNMENT$ To 6
Equ REACTOR_TEMP_TYPE$ To 7
Equ REACTOR_MFC_LOC_PN$ To 8
Equ REACTOR_ESC_START_DTM$ To 9
Equ REACTOR_ACTIVE_ESCALATION$ To 10
Equ REACTOR_REACT_DESC$ To 11
Equ REACTOR_CURR_MODE_KEY$ To 12
Equ REACTOR_HEAVY_DOPE$ To 13
Equ REACTOR_ATV$ To 14
Equ REACTOR_INJECT_TYPE$ To 15
Equ REACTOR_SOS_SENSORS$ To 16
Equ REACTOR_SERIAL_NO$ To 17
Equ REACTOR_MFR_TYPE$ To 18
Equ REACTOR_ASM_MFR_YEAR$ To 19
Equ REACTOR_ARM_TYPE$ To 20
Equ REACTOR_PROCESSOR$ To 21
Equ REACTOR_CONFIG_NOTES$ To 22
Equ REACTOR_EXT_TYPE$ To 23
Equ REACTOR_HTHF$ To 24
Equ REACTOR_LAST_READ_HRS_DTM$ To 25
Equ REACTOR_LAST_READ_WFRS_DTM$ To 26
Equ REACTOR_TUBE_SIZE$ To 27
Equ REACTOR_WAFER_SIZE$ To 27
Equ REACTOR_SUSC_POCKET_QTY$ To 28
Equ REACTOR_SUSC_POCKET_SIZE$ To 29
Equ REACTOR_PICK_PLACE$ To 30
Equ REACTOR_VENDOR$ To 31
Equ REACTOR_LOCATIONX$ To 32
Equ REACTOR_TOOL_WHX$ To 33
Equ REACTOR_TOOL_LOCX$ To 34
Equ REACTOR_TOOL_ID$ To 35
Equ REACTOR_INJECT_SETTING$ To 36
Equ REACTOR_CURR_INST_GRAPHITE$ To 37
Equ REACTOR_CURR_INST_ITEMS$ To 37
Equ REACTOR_LL_DISABLED$ To 38
Equ REACTOR_ACTIVE_LL_DISABLED$ To 39
Equ REACTOR_SUSC_CONFIG_ID$ To 40
Equ REACTOR_SECOND_CHAMBER$ To 41
Equ REACTOR_X_PREV_RUNS$ To 42
Equ REACTOR_NCR_LIMIT$ To 43
Equ REACTOR_ZERO_NCR_MIN$ To 44
Equ REACTOR_UCL_LIMIT$ To 45
Equ REACTOR_ROTR_FAIL_LIMIT$ To 46
Equ REACTOR_ROTR_STATUS$ To 47
Equ REACTOR_ROTR_STATUS_REASON$ To 48
Equ REACTOR_ENABLE_ROTR$ To 49
Equ REACTOR_ROTR_STOP_RDS$ To 50
Equ REACTOR_ROTR_MAINT_RESET$ To 51
Equ REACTOR_SCHED_EVENTS$ To 52
Equ REACTOR_NOT_REPAIRABLE$ To 53
Equ REACTOR_0311_ACTIVE$ To 54
Equ REACTOR_ROTR_OVERRIDE_COUNT$ To 55
Equ REACTOR_PREVIOUS_ROTR_STATUS_REASON$ To 56
Equ REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$ To 57
Equ REACTOR_TUBE_BELL_JAR_THK$ To 58
Equ REACTOR_TUBE_BELL_JAR_WFR_CNT$ To 59
Equ REACTOR_SUSC_THK$ To 60
Equ REACTOR_SUSC_WFR_CNT$ To 61
Equ REACTOR_LOWER_QUARTZ_THK$ To 62
Equ REACTOR_LOWER_QUARTZ_WFR$ To 63
Equ REACTOR_ARMS_WFR_CNT$ To 64
Equ REACTOR_PROVE_IN_ACTIVE$ To 65
Equ REACTOR_PROVE_IN_TYPE$ To 66
Equ REACTOR_PROVE_IN_ORDER_ID$ To 67
Equ REACTOR_IDLE_STARTUP_REQUIRED$ To 68
Equ REACTOR_IQS_ALARM_DTM$ To 69
Equ REACTOR_IQS_ALARM_TEST$ To 70
Equ REACTOR_HGCV_CHECKLIST_ACTIVE$ To 71
Equ REACTOR_REACT_NO$ To 0
Equ REACTOR_REACT_TYPE$ To 1
Equ REACTOR_REDUCED_PRESS$ To 2
Equ REACTOR_MFC_LOC$ To 3
Equ REACTOR_MFC_SERIAL$ To 4
Equ REACTOR_GAS_SRC$ To 5
Equ REACTOR_REACT_ASSIGNMENT$ To 6
Equ REACTOR_TEMP_TYPE$ To 7
Equ REACTOR_MFC_LOC_PN$ To 8
Equ REACTOR_ESC_START_DTM$ To 9
Equ REACTOR_ACTIVE_ESCALATION$ To 10
Equ REACTOR_REACT_DESC$ To 11
Equ REACTOR_CURR_MODE_KEY$ To 12
Equ REACTOR_HEAVY_DOPE$ To 13
Equ REACTOR_ATV$ To 14
Equ REACTOR_INJECT_TYPE$ To 15
Equ REACTOR_SOS_SENSORS$ To 16
Equ REACTOR_SERIAL_NO$ To 17
Equ REACTOR_MFR_TYPE$ To 18
Equ REACTOR_ASM_MFR_YEAR$ To 19
Equ REACTOR_ARM_TYPE$ To 20
Equ REACTOR_PROCESSOR$ To 21
Equ REACTOR_CONFIG_NOTES$ To 22
Equ REACTOR_EXT_TYPE$ To 23
Equ REACTOR_HTHF$ To 24
Equ REACTOR_LAST_READ_HRS_DTM$ To 25
Equ REACTOR_LAST_READ_WFRS_DTM$ To 26
Equ REACTOR_TUBE_SIZE$ To 27
Equ REACTOR_WAFER_SIZE$ To 27
Equ REACTOR_SUSC_POCKET_QTY$ To 28
Equ REACTOR_SUSC_POCKET_SIZE$ To 29
Equ REACTOR_PICK_PLACE$ To 30
Equ REACTOR_VENDOR$ To 31
Equ REACTOR_LOCATIONX$ To 32
Equ REACTOR_TOOL_WHX$ To 33
Equ REACTOR_TOOL_LOCX$ To 34
Equ REACTOR_TOOL_ID$ To 35
Equ REACTOR_INJECT_SETTING$ To 36
Equ REACTOR_CURR_INST_GRAPHITE$ To 37
Equ REACTOR_CURR_INST_ITEMS$ To 37
Equ REACTOR_LL_DISABLED$ To 38
Equ REACTOR_ACTIVE_LL_DISABLED$ To 39
Equ REACTOR_SUSC_CONFIG_ID$ To 40
Equ REACTOR_SECOND_CHAMBER$ To 41
Equ REACTOR_X_PREV_RUNS$ To 42
Equ REACTOR_NCR_LIMIT$ To 43
Equ REACTOR_ZERO_NCR_MIN$ To 44
Equ REACTOR_UCL_LIMIT$ To 45
Equ REACTOR_ROTR_FAIL_LIMIT$ To 46
Equ REACTOR_ROTR_STATUS$ To 47
Equ REACTOR_ROTR_STATUS_REASON$ To 48
Equ REACTOR_ENABLE_ROTR$ To 49
Equ REACTOR_ROTR_STOP_RDS$ To 50
Equ REACTOR_ROTR_MAINT_RESET$ To 51
Equ REACTOR_SCHED_EVENTS$ To 52
Equ REACTOR_NOT_REPAIRABLE$ To 53
Equ REACTOR_0311_ACTIVE$ To 54
Equ REACTOR_ROTR_OVERRIDE_COUNT$ To 55
Equ REACTOR_PREVIOUS_ROTR_STATUS_REASON$ To 56
Equ REACTOR_PREVIOUS_ROTR_OVERRIDE_RDS$ To 57
Equ REACTOR_TUBE_BELL_JAR_THK$ To 58
Equ REACTOR_TUBE_BELL_JAR_WFR_CNT$ To 59
Equ REACTOR_SUSC_THK$ To 60
Equ REACTOR_SUSC_WFR_CNT$ To 61
Equ REACTOR_LOWER_QUARTZ_THK$ To 62
Equ REACTOR_LOWER_QUARTZ_WFR$ To 63
Equ REACTOR_ARMS_WFR_CNT$ To 64
Equ REACTOR_PROVE_IN_ACTIVE$ To 65
Equ REACTOR_PROVE_IN_TYPE$ To 66
Equ REACTOR_PROVE_IN_ORDER_ID$ To 67
Equ REACTOR_IDLE_STARTUP_REQUIRED$ To 68
Equ REACTOR_IQS_ALARM_DTM$ To 69
Equ REACTOR_IQS_ALARM_TEST$ To 70
Equ REACTOR_HGCV_CHECKLIST_ACTIVE$ To 71
Equ REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$ To 72

View File

@ -6,28 +6,28 @@ compile insert REACT_SERVS_EQUATES
----------------------------------------*/
Equ REACT_SERVS_SERV_ID$ To 0
Equ REACT_SERVS_DESCRIPTION$ To 1
Equ REACT_SERVS_ACTION$ To 2
Equ REACT_SERVS_ENTRY_ID$ To 3
Equ REACT_SERVS_ENTRY_DATE$ To 4
Equ REACT_SERVS_INJECTOR_CHANGE$ To 5
Equ REACT_SERVS_PM_DAYS$ To 7
Equ REACT_SERVS_REACT_SERV_CAT_ID$ To 8
Equ REACT_SERVS_GRAPHITE_OR_TUBE$ To 9
Equ REACT_SERVS_REACT_ITEM_DESC$ To 9
Equ REACT_SERVS_REACT_ITEM_TYPE$ To 9
Equ REACT_SERVS_STATUS$ To 10
Equ REACT_SERVS_INACTIVE_DATE$ To 11
Equ REACT_SERVS_TC_CHANGE_SERVICE$ To 12
Equ REACT_SERVS_REQ_ARM_WAND_DATA$ To 13
Equ REACT_SERVS_SVC_DESC$ To 14
Equ REACT_SERVS_REACT_ITEM$ To 15
Equ REACT_SERVS_REACT_GAS$ To 16
Equ REACT_SERVS_REACT_TYPE$ To 17
Equ REACT_SERVS_REACT_SYSTEM$ To 18
Equ REACT_SERVS_NOTE_REQ$ To 19
Equ REACT_SERVS_ASSOC_METRICS$ To 20
Equ REACT_SERVS_IS_INTRUSIVE$ To 21
Equ REACT_SERVS_SERV_ID$ To 0
Equ REACT_SERVS_DESCRIPTION$ To 1
Equ REACT_SERVS_ACTION$ To 2
Equ REACT_SERVS_ENTRY_ID$ To 3
Equ REACT_SERVS_ENTRY_DATE$ To 4
Equ REACT_SERVS_INJECTOR_CHANGE$ To 5
Equ REACT_SERVS_PM_DAYS$ To 7
Equ REACT_SERVS_REACT_SERV_CAT_ID$ To 8
Equ REACT_SERVS_GRAPHITE_OR_TUBE$ To 9
Equ REACT_SERVS_REACT_ITEM_DESC$ To 9
Equ REACT_SERVS_REACT_ITEM_TYPE$ To 9
Equ REACT_SERVS_STATUS$ To 10
Equ REACT_SERVS_INACTIVE_DATE$ To 11
Equ REACT_SERVS_TC_CHANGE_SERVICE$ To 12
Equ REACT_SERVS_REQ_ARM_WAND_DATA$ To 13
Equ REACT_SERVS_SVC_DESC$ To 14
Equ REACT_SERVS_REACT_ITEM$ To 15
Equ REACT_SERVS_REACT_GAS$ To 16
Equ REACT_SERVS_REACT_TYPE$ To 17
Equ REACT_SERVS_REACT_SYSTEM$ To 18
Equ REACT_SERVS_NOTE_REQ$ To 19
Equ REACT_SERVS_ASSOC_METRICS$ To 20
Equ REACT_SERVS_IS_INTRUSIVE$ To 21
Equ REACT_SERVS_INTR_MAINT_FLOW_ID$ To 22