fixed material track report, Mona_Services HTTP call, and COC file generation
This commit is contained in:
parent
7762b129af
commit
a8a9e91d04
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record",
|
"type": "record",
|
||||||
"approw-key": "ENGINE_HEALTH_THRESHOLD_MINUTES"
|
"approw-key": "ENGINE_HEALTH_THRESHOLD_MINUTES"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "15"
|
"<1>": "60"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,75 +25,71 @@
|
|||||||
"<1,16>": "TENCOR1",
|
"<1,16>": "TENCOR1",
|
||||||
"<1,17>": "TENCOR2",
|
"<1,17>": "TENCOR2",
|
||||||
"<1,18>": "TENCOR3",
|
"<1,18>": "TENCOR3",
|
||||||
"<1,19>": "ASET",
|
"<1,19>": "BIORAD2",
|
||||||
"<1,20>": "BIORAD2",
|
"<1,20>": "BIORAD3",
|
||||||
"<1,21>": "BIORAD3",
|
"<1,21>": "BIORAD4",
|
||||||
"<1,22>": "BIORAD4",
|
"<1,22>": "BIORAD5",
|
||||||
"<1,23>": "BIORAD5",
|
"<1,23>": "CDE4",
|
||||||
"<1,24>": "CDE2",
|
"<1,24>": "CDE5",
|
||||||
"<1,25>": "CDE3",
|
"<1,25>": "CDE6",
|
||||||
"<1,26>": "CDE4",
|
"<1,26>": "HGCV1",
|
||||||
"<1,27>": "CDE5",
|
"<1,27>": "HGCV2",
|
||||||
"<1,28>": "CDE6",
|
"<1,28>": "HGCV3",
|
||||||
"<1,29>": "FLEXUS",
|
"<1,29>": "SPV",
|
||||||
"<1,30>": "HGCV1",
|
"<1,30>": "SRP",
|
||||||
"<1,31>": "HGCV2",
|
"<1,31>": "BELLJAR",
|
||||||
"<1,32>": "HGCV3",
|
"<1,32>": "6INLESS",
|
||||||
"<1,33>": "SPV",
|
"<1,33>": "6INLESS2",
|
||||||
"<1,34>": "SRP",
|
"<1,34>": "6MACTRONIX #1",
|
||||||
"<1,35>": "BELLJAR",
|
"<1,35>": "6MACTRONIX #2",
|
||||||
"<1,36>": "6INLESS",
|
"<1,36>": "6MACTRONIX #3",
|
||||||
"<1,37>": "6INLESS2",
|
"<1,37>": "6MACTRONIX #4",
|
||||||
"<1,38>": "6MACTRONIX #1",
|
"<1,38>": "8INLESS",
|
||||||
"<1,39>": "6MACTRONIX #2",
|
"<1,39>": "8INLESS2",
|
||||||
"<1,40>": "6MACTRONIX #3",
|
"<1,40>": "BAGGER1",
|
||||||
"<1,41>": "6MACTRONIX #4",
|
"<1,41>": "BAGGER2",
|
||||||
"<1,42>": "8INLESS",
|
"<1,42>": "BAGGER3",
|
||||||
"<1,43>": "8INLESS2",
|
"<1,43>": "BAGGER4",
|
||||||
"<1,44>": "BAGGER1",
|
"<1,44>": "6INFF01",
|
||||||
"<1,45>": "BAGGER2",
|
"<1,45>": "6INFF02",
|
||||||
"<1,46>": "BAGGER3",
|
"<1,46>": "6INFF03",
|
||||||
"<1,47>": "BAGGER4",
|
"<1,47>": "6INFF04",
|
||||||
"<1,48>": "6INFF01",
|
"<1,48>": "6INFF05",
|
||||||
"<1,49>": "6INFF02",
|
"<1,49>": "6INFF06",
|
||||||
"<1,50>": "6INFF03",
|
"<1,50>": "6INFF07",
|
||||||
"<1,51>": "6INFF04",
|
"<1,51>": "6INFF08",
|
||||||
"<1,52>": "6INFF05",
|
"<1,52>": "6INFF09",
|
||||||
"<1,53>": "6INFF06",
|
"<1,53>": "6INFF10",
|
||||||
"<1,54>": "6INFF07",
|
"<1,54>": "8INNF01",
|
||||||
"<1,55>": "6INFF08",
|
"<1,55>": "8INNF02",
|
||||||
"<1,56>": "6INFF09",
|
"<1,56>": "8INNF03",
|
||||||
"<1,57>": "6INFF10",
|
"<1,57>": "8INNF04",
|
||||||
"<1,58>": "8INNF01",
|
"<1,58>": "8INNF05",
|
||||||
"<1,59>": "8INNF02",
|
"<1,59>": "8INFF01",
|
||||||
"<1,60>": "8INNF03",
|
"<1,60>": "8INFF02",
|
||||||
"<1,61>": "8INNF04",
|
"<1,61>": "8INFF03",
|
||||||
"<1,62>": "8INNF05",
|
"<1,62>": "8INFF04",
|
||||||
"<1,63>": "8INFF01",
|
"<1,63>": "MACTRONIX #1",
|
||||||
"<1,64>": "8INFF02",
|
"<1,64>": "MACTRONIX #2 ",
|
||||||
"<1,65>": "8INFF03",
|
"<1,65>": "MACTRONIX #3",
|
||||||
"<1,66>": "8INFF04",
|
"<1,66>": "MACTRONIX #4",
|
||||||
"<1,67>": "MACTRONIX #1",
|
"<1,67>": "MACTRONIX #5",
|
||||||
"<1,68>": "MACTRONIX #2 ",
|
"<1,68>": "MACTRONIX #6",
|
||||||
"<1,69>": "MACTRONIX #3",
|
"<1,69>": "MACTRONIX #7",
|
||||||
"<1,70>": "MACTRONIX #4",
|
"<1,70>": "TALL_PITCH1",
|
||||||
"<1,71>": "MACTRONIX #5",
|
"<1,71>": "TALL_PITCH2",
|
||||||
"<1,72>": "MACTRONIX #6",
|
"<1,72>": "TALL_PITCH3",
|
||||||
"<1,73>": "MACTRONIX #7",
|
"<1,73>": "TALL_PITCH4",
|
||||||
"<1,74>": "TALL_PITCH1",
|
"<1,74>": "WC6INCH1",
|
||||||
"<1,75>": "TALL_PITCH2",
|
"<1,75>": "WC6INCH2",
|
||||||
"<1,76>": "TALL_PITCH3",
|
"<1,76>": "WC6INCH3",
|
||||||
"<1,77>": "TALL_PITCH4",
|
"<1,77>": "WC6INCH4",
|
||||||
"<1,78>": "WC6INCH1",
|
"<1,78>": "WC8INCH1",
|
||||||
"<1,79>": "WC6INCH2",
|
"<1,79>": "WC8INCH2",
|
||||||
"<1,80>": "WC6INCH3",
|
"<1,80>": "WC8INCH3",
|
||||||
"<1,81>": "WC6INCH4",
|
"<1,81>": "ELLP01",
|
||||||
"<1,82>": "WC8INCH1",
|
"<1,82>": "LEAKCHK01",
|
||||||
"<1,83>": "WC8INCH2",
|
"<1,83>": "LEAKCHK02"
|
||||||
"<1,84>": "WC8INCH3",
|
|
||||||
"<1,85>": "ELLP01",
|
|
||||||
"<1,86>": "LEAKCHK01",
|
|
||||||
"<1,87>": "LEAKCHK02"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,33 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "%2%",
|
"<1>": "%2%",
|
||||||
"<2>": "BO",
|
"<2>": "BO",
|
||||||
"<3>": "A",
|
"<3>": "A",
|
||||||
"<4>": "B",
|
"<4>": "B",
|
||||||
"<5>": "1",
|
"<5>": "1",
|
||||||
"<6>": "-2",
|
"<6>": "-2",
|
||||||
"<7>": "-2",
|
"<7>": "-2",
|
||||||
"<8>": "T",
|
"<8>": "T",
|
||||||
"<9>": "12632256",
|
"<9>": "12632256",
|
||||||
"<10>": "",
|
"<10>": "",
|
||||||
"<11>": "",
|
"<11>": "",
|
||||||
"<12>": "%1%",
|
"<12>": "%1%",
|
||||||
"<13>": "",
|
"<13>": "",
|
||||||
"<14>": "",
|
"<14>": "",
|
||||||
"<15>": "0",
|
"<15>": "0",
|
||||||
"<16>": "IQS",
|
"<16>": "IQS",
|
||||||
"<17>": "1",
|
"<17>": "1",
|
||||||
"<18>": "",
|
"<18>": "",
|
||||||
"<19>": "0",
|
"<19>": "0",
|
||||||
"<20>": "",
|
"<20>": "",
|
||||||
"<21>": "0",
|
"<21>": "0",
|
||||||
"<22>": "",
|
"<22>": "",
|
||||||
"<23>": ""
|
"<23>": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "Declare Subroutine Set_Property\r\nDeclare Function Get_Property\r\nThisRec = Get_Property(@Window,'ATRECORD')\r\nInitrnd Time()\r\nMyVar = Rnd(200)\r\nThisRec<28, -1> = MyVar\r\nSet_Property(@Window,'ATRECORD', ThisRec) \r\n\r\nreturn 1"
|
"<1>": "Declare Subroutine Set_Property\r\nDeclare Function Get_Property\r\nThisRec = Get_Property(@Window,'ATRECORD')\r\nInitrnd Time()\r\nMyVar = Rnd(200)\r\nThisRec<28, -1> = MyVar\r\nSet_Property(@Window,'ATRECORD', ThisRec) \r\n\r\nreturn 1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "DECLARE FUNCTION Comm_Reactor_Log\r\nRETURN Comm_Reactor_Log(CtrlEntId,'DELETE')"
|
"<1>": "DECLARE FUNCTION Comm_Reactor_Log\r\nRETURN Comm_Reactor_Log(CtrlEntId,'DELETE')"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "\r\nDeclare function DCount\r\nDeclare subroutine Set_Property\r\n\r\nRDSNo = Get_Property(CtrlEntID, 'TEXT')\r\n\r\nIf DCount(RDSNo, '|') EQ 8 then\r\n\tRDSNo = Field(RDSNo, '|', 3)\r\nend\r\nIf RDSNo[1, 2] EQ '1T' then RDSNo[1, 2] = ''\r\n\r\nSet_Property(CtrlEntID, 'TEXT', RDSNo)\r\n\r\nRETURN 1"
|
"<1>": "\r\nDeclare function DCount\r\nDeclare subroutine Set_Property\r\n\r\nRDSNo = Get_Property(CtrlEntID, 'TEXT')\r\n\r\nIf DCount(RDSNo, '|') EQ 8 then\r\n\tRDSNo = Field(RDSNo, '|', 3)\r\nend\r\nIf RDSNo[1, 2] EQ '1T' then RDSNo[1, 2] = ''\r\n\r\nSet_Property(CtrlEntID, 'TEXT', RDSNo)\r\n\r\nRETURN 1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "declare function get_property, rowexists, msg, dialog_box\r\n$insert msg_equates\r\n\r\nRLNo = .reactor_log_no->text\r\nif RLNo then\r\n if rowexists( 'REACTOR_LOG', RLNo ) then\r\n Qbf = get_property( @window, 'QBFLIST' )\r\n if Qbf then\r\n convert @fm to @vm in Qbf\r\n end else\r\n Qbf = ''\r\n end\r\n RetVal = dialog_box( 'NOTES_ATTACH', @window, 'REACTOR_LOG*':RLNo:'*':Qbf )\r\n end else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'You must save this Reactor Log record first...' \r\n MsgInfo<micon$> = 'H'\r\n Void = msg( '', MsgInfo )\r\n end\r\nend else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'You must have a Reactor Log record present...' \r\n MsgInfo<micon$> = 'H'\r\n Void = msg( '', MsgInfo )\r\nend\r\nRETURN 0"
|
"<1>": "declare function get_property, rowexists, msg, dialog_box\r\n$insert msg_equates\r\n\r\nRLNo = .reactor_log_no->text\r\nif RLNo then\r\n if rowexists( 'REACTOR_LOG', RLNo ) then\r\n Qbf = get_property( @window, 'QBFLIST' )\r\n if Qbf then\r\n convert @fm to @vm in Qbf\r\n end else\r\n Qbf = ''\r\n end\r\n RetVal = dialog_box( 'NOTES_ATTACH', @window, 'REACTOR_LOG*':RLNo:'*':Qbf )\r\n end else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'You must save this Reactor Log record first...' \r\n MsgInfo<micon$> = 'H'\r\n Void = msg( '', MsgInfo )\r\n end\r\nend else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'You must have a Reactor Log record present...' \r\n MsgInfo<micon$> = 'H'\r\n Void = msg( '', MsgInfo )\r\nend\r\nRETURN 0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "Declare subroutine WO_DAILY_SCHED_ALL_COMM\r\n\r\nIf Index(CtrlEntId, 'IQS', 1) GT 0 then \r\n\tWO_DAILY_SCHED_ALL_COMM('IQSViolButton', CtrlEntId) \r\nend else\r\n\tWO_DAILY_SCHED_ALL_COMM('ChecklistButton', CtrlEntId) \r\nend\r\n\r\nRETURN 0"
|
"<1>": "Declare subroutine WO_DAILY_SCHED_ALL_COMM\r\n\r\nIf Index(CtrlEntId, 'IQS', 1) GT 0 then \r\n\tWO_DAILY_SCHED_ALL_COMM('IQSViolButton', CtrlEntId) \r\nend else\r\n\tWO_DAILY_SCHED_ALL_COMM('ChecklistButton', CtrlEntId) \r\nend\r\n\r\nRETURN 0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "Declare subroutine WO_DAILY_SCHED_ALL_COMM\r\n\r\nIf Index(CtrlEntId, 'IQS', 1) GT 0 then \r\n\tWO_DAILY_SCHED_ALL_COMM('IQSViolButton', CtrlEntId) \r\nend else\r\n\tWO_DAILY_SCHED_ALL_COMM('ChecklistButton', CtrlEntId) \r\nend\r\n\r\nRETURN 0"
|
"<1>": "Declare subroutine WO_DAILY_SCHED_ALL_COMM\r\n\r\nIf Index(CtrlEntId, 'IQS', 1) GT 0 then \r\n\tWO_DAILY_SCHED_ALL_COMM('IQSViolButton', CtrlEntId) \r\nend else\r\n\tWO_DAILY_SCHED_ALL_COMM('ChecklistButton', CtrlEntId) \r\nend\r\n\r\nRETURN 0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "Declare Subroutine Send_Event, Set_Property\r\n\r\nListVals = Get_Property(@Window : '.ET_REACT_PROB_ID', 'DEFPROP')\r\nSet_Property(@Window : '.ET_REACT_PROB_ID', 'DEFPROP', ListVals)\r\n\r\nSend_Event(@Window : '.ET_REACT_PROB_ID', 'CALCULATE')\r\n\r\nreturn 1"
|
"<1>": "Declare Subroutine Send_Event, Set_Property\r\n\r\nListVals = Get_Property(@Window : '.ET_REACT_PROB_ID', 'DEFPROP')\r\nSet_Property(@Window : '.ET_REACT_PROB_ID', 'DEFPROP', ListVals)\r\n\r\nSend_Event(@Window : '.ET_REACT_PROB_ID', 'CALCULATE')\r\n\r\nreturn 1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "Declare Function Comm_Reactor_Log\r\n\r\nReturn Comm_Reactor_Log(CtrlEntID,'WRITE')"
|
"<1>": "Declare Function Comm_Reactor_Log\r\n\r\nReturn Comm_Reactor_Log(CtrlEntID,'WRITE')"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,145 +1,145 @@
|
|||||||
{
|
{
|
||||||
"header": {
|
"header": {
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"type": "record"
|
"type": "record"
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"record1": {
|
"record1": {
|
||||||
"<1>": "-1",
|
"<1>": "-1",
|
||||||
"<2>": "-1",
|
"<2>": "-1",
|
||||||
"<3>": "-1",
|
"<3>": "-1",
|
||||||
"<4>": "-1",
|
"<4>": "-1",
|
||||||
"<5>": "16777215",
|
"<5>": "16777215",
|
||||||
"<6>": {
|
"<6>": {
|
||||||
"<6,1>": {
|
"<6,1>": {
|
||||||
"<6,1,1>": "Tahoma",
|
"<6,1,1>": "Tahoma",
|
||||||
"<6,1,2>": "-11",
|
"<6,1,2>": "-11",
|
||||||
"<6,1,3>": "400",
|
"<6,1,3>": "400",
|
||||||
"<6,1,4>": "0",
|
"<6,1,4>": "0",
|
||||||
"<6,1,5>": "0",
|
"<6,1,5>": "0",
|
||||||
"<6,1,6>": "5",
|
"<6,1,6>": "5",
|
||||||
"<6,1,7>": "0",
|
"<6,1,7>": "0",
|
||||||
"<6,1,8>": "39",
|
"<6,1,8>": "39",
|
||||||
"<6,1,9>": "0",
|
"<6,1,9>": "0",
|
||||||
"<6,1,10>": "0",
|
"<6,1,10>": "0",
|
||||||
"<6,1,11>": "0",
|
"<6,1,11>": "0",
|
||||||
"<6,1,12>": "0",
|
"<6,1,12>": "0",
|
||||||
"<6,1,13>": "11",
|
"<6,1,13>": "11",
|
||||||
"<6,1,14>": "2",
|
"<6,1,14>": "2",
|
||||||
"<6,1,15>": "0",
|
"<6,1,15>": "0",
|
||||||
"<6,1,16>": "21"
|
"<6,1,16>": "21"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"<7>": "",
|
"<7>": "",
|
||||||
"<8>": "",
|
"<8>": "",
|
||||||
"<9>": {
|
"<9>": {
|
||||||
"<9,1>": {
|
"<9,1>": {
|
||||||
"<9,1,1>": "1",
|
"<9,1,1>": "1",
|
||||||
"<9,1,2>": "11",
|
"<9,1,2>": "11",
|
||||||
"<9,1,3>": "R",
|
"<9,1,3>": "R",
|
||||||
"<9,1,4>": "C",
|
"<9,1,4>": "C",
|
||||||
"<9,1,5>": "<<none>>",
|
"<9,1,5>": "<<none>>",
|
||||||
"<9,1,6>": "ID"
|
"<9,1,6>": "ID"
|
||||||
},
|
},
|
||||||
"<9,2>": {
|
"<9,2>": {
|
||||||
"<9,2,1>": "2",
|
"<9,2,1>": "2",
|
||||||
"<9,2,2>": "13",
|
"<9,2,2>": "13",
|
||||||
"<9,2,3>": "L",
|
"<9,2,3>": "L",
|
||||||
"<9,2,4>": "C",
|
"<9,2,4>": "C",
|
||||||
"<9,2,5>": "DT2/^H",
|
"<9,2,5>": "DT2/^H",
|
||||||
"<9,2,6>": "Run Time"
|
"<9,2,6>": "Run Time"
|
||||||
},
|
},
|
||||||
"<9,3>": {
|
"<9,3>": {
|
||||||
"<9,3,1>": "3",
|
"<9,3,1>": "3",
|
||||||
"<9,3,2>": "6",
|
"<9,3,2>": "6",
|
||||||
"<9,3,3>": "L",
|
"<9,3,3>": "L",
|
||||||
"<9,3,4>": "C",
|
"<9,3,4>": "C",
|
||||||
"<9,3,5>": "<<none>>",
|
"<9,3,5>": "<<none>>",
|
||||||
"<9,3,6>": "Test Run Type"
|
"<9,3,6>": "Test Run Type"
|
||||||
},
|
},
|
||||||
"<9,4>": {
|
"<9,4>": {
|
||||||
"<9,4,1>": "4",
|
"<9,4,1>": "4",
|
||||||
"<9,4,2>": "6",
|
"<9,4,2>": "6",
|
||||||
"<9,4,3>": "C",
|
"<9,4,3>": "C",
|
||||||
"<9,4,4>": "C",
|
"<9,4,4>": "C",
|
||||||
"<9,4,5>": "<<none>>",
|
"<9,4,5>": "<<none>>",
|
||||||
"<9,4,6>": "Equipment ID"
|
"<9,4,6>": "Equipment ID"
|
||||||
},
|
},
|
||||||
"<9,5>": {
|
"<9,5>": {
|
||||||
"<9,5,1>": "5",
|
"<9,5,1>": "5",
|
||||||
"<9,5,2>": "6",
|
"<9,5,2>": "6",
|
||||||
"<9,5,3>": "C",
|
"<9,5,3>": "C",
|
||||||
"<9,5,4>": "C",
|
"<9,5,4>": "C",
|
||||||
"<9,5,5>": "<<none>>",
|
"<9,5,5>": "<<none>>",
|
||||||
"<9,5,6>": "Equipment Type"
|
"<9,5,6>": "Equipment Type"
|
||||||
},
|
},
|
||||||
"<9,6>": {
|
"<9,6>": {
|
||||||
"<9,6,1>": "6",
|
"<9,6,1>": "6",
|
||||||
"<9,6,2>": "5",
|
"<9,6,2>": "5",
|
||||||
"<9,6,3>": "R",
|
"<9,6,3>": "R",
|
||||||
"<9,6,4>": "C",
|
"<9,6,4>": "C",
|
||||||
"<9,6,5>": "<<none>>",
|
"<9,6,5>": "<<none>>",
|
||||||
"<9,6,6>": "PSN"
|
"<9,6,6>": "PSN"
|
||||||
},
|
},
|
||||||
"<9,7>": {
|
"<9,7>": {
|
||||||
"<9,7,1>": "7",
|
"<9,7,1>": "7",
|
||||||
"<9,7,2>": "15",
|
"<9,7,2>": "15",
|
||||||
"<9,7,3>": "L",
|
"<9,7,3>": "L",
|
||||||
"<9,7,4>": "C",
|
"<9,7,4>": "C",
|
||||||
"<9,7,5>": "<<none>>",
|
"<9,7,5>": "<<none>>",
|
||||||
"<9,7,6>": "User"
|
"<9,7,6>": "User"
|
||||||
},
|
},
|
||||||
"<9,8>": {
|
"<9,8>": {
|
||||||
"<9,8,1>": "8",
|
"<9,8,1>": "8",
|
||||||
"<9,8,2>": "7",
|
"<9,8,2>": "7",
|
||||||
"<9,8,3>": "R",
|
"<9,8,3>": "R",
|
||||||
"<9,8,4>": "C",
|
"<9,8,4>": "C",
|
||||||
"<9,8,5>": "<<none>>",
|
"<9,8,5>": "<<none>>",
|
||||||
"<9,8,6>": "RDS"
|
"<9,8,6>": "RDS"
|
||||||
},
|
},
|
||||||
"<9,9>": {
|
"<9,9>": {
|
||||||
"<9,9,1>": "9",
|
"<9,9,1>": "9",
|
||||||
"<9,9,2>": "9",
|
"<9,9,2>": "9",
|
||||||
"<9,9,3>": "L",
|
"<9,9,3>": "L",
|
||||||
"<9,9,4>": "C",
|
"<9,9,4>": "C",
|
||||||
"<9,9,5>": "<<none>>",
|
"<9,9,5>": "<<none>>",
|
||||||
"<9,9,6>": "Test Wafer Type"
|
"<9,9,6>": "Test Wafer Type"
|
||||||
},
|
},
|
||||||
"<9,10>": {
|
"<9,10>": {
|
||||||
"<9,10,1>": "10",
|
"<9,10,1>": "10",
|
||||||
"<9,10,2>": "3",
|
"<9,10,2>": "3",
|
||||||
"<9,10,3>": "R",
|
"<9,10,3>": "R",
|
||||||
"<9,10,4>": "C",
|
"<9,10,4>": "C",
|
||||||
"<9,10,5>": "<<none>>",
|
"<9,10,5>": "<<none>>",
|
||||||
"<9,10,6>": "Wfr Qty"
|
"<9,10,6>": "Wfr Qty"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"<10>": "L",
|
"<10>": "L",
|
||||||
"<11>": "0",
|
"<11>": "0",
|
||||||
"<12>": "Test Wafer Report",
|
"<12>": "Test Wafer Report",
|
||||||
"<13>": "",
|
"<13>": "",
|
||||||
"<14>": "R",
|
"<14>": "R",
|
||||||
"<15>": "1",
|
"<15>": "1",
|
||||||
"<16>": "1",
|
"<16>": "1",
|
||||||
"<17>": "1",
|
"<17>": "1",
|
||||||
"<18>": "1",
|
"<18>": "1",
|
||||||
"<19>": "1",
|
"<19>": "1",
|
||||||
"<20>": "1",
|
"<20>": "1",
|
||||||
"<21>": "1",
|
"<21>": "1",
|
||||||
"<22>": "1",
|
"<22>": "1",
|
||||||
"<23>": "1",
|
"<23>": "1",
|
||||||
"<24>": "1",
|
"<24>": "1",
|
||||||
"<25>": "0",
|
"<25>": "0",
|
||||||
"<26>": "",
|
"<26>": "",
|
||||||
"<27>": "",
|
"<27>": "",
|
||||||
"<28>": "",
|
"<28>": "",
|
||||||
"<29>": "0",
|
"<29>": "0",
|
||||||
"<30>": "1",
|
"<30>": "1",
|
||||||
"<31>": "0",
|
"<31>": "0",
|
||||||
"<32>": "0",
|
"<32>": "0",
|
||||||
"<33>": "0",
|
"<33>": "0",
|
||||||
"<34>": "16777215",
|
"<34>": "16777215",
|
||||||
"<35>": "16777215"
|
"<35>": "16777215"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,57 +1,57 @@
|
|||||||
Function Admin_API(@API)
|
Function Admin_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Admin_API
|
Name : Admin_API
|
||||||
|
|
||||||
Description : API logic for the Admin resource.
|
Description : API logic for the Admin resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Admin[.ID.[<Property>]]
|
- APIPattern must follow this structure Admin[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Admin.POST
|
- Admin.POST
|
||||||
- Admin.ID.PUT
|
- Admin.ID.PUT
|
||||||
- Admin.ID.firstName.GET
|
- Admin.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
03/14/24 xxx Original programmer.
|
03/14/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,85 +1,85 @@
|
|||||||
Compile function Archive_Services(@Service, @Params)
|
Compile function Archive_Services(@Service, @Params)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
$insert LOGICAL
|
$insert LOGICAL
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
EQU COMMA$ To ','
|
EQU COMMA$ To ','
|
||||||
|
|
||||||
Declare subroutine Change_Log_Services, Logging_Services
|
Declare subroutine Change_Log_Services, Logging_Services
|
||||||
Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime
|
Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv'
|
||||||
Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date'
|
Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date'
|
||||||
objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Service ArchiveRecords()
|
Service ArchiveRecords()
|
||||||
Errors = ''
|
Errors = ''
|
||||||
StatusMessage = 'Starting Archive Script.'
|
StatusMessage = 'Starting Archive Script.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
|
|
||||||
//Archive Change Log Records
|
//Archive Change Log Records
|
||||||
GoSub ChangeLogArchive
|
GoSub ChangeLogArchive
|
||||||
|
|
||||||
//Finish
|
//Finish
|
||||||
Locate True$ in Errors using @FM setting ePos then
|
Locate True$ in Errors using @FM setting ePos then
|
||||||
StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.'
|
StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
end else
|
end else
|
||||||
StatusMessage = 'Archive script complete. No errors detected.'
|
StatusMessage = 'Archive script complete. No errors detected.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
Service DearchiveRecord(Table, ID)
|
Service DearchiveRecord(Table, ID)
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
ChangeLogArchive:
|
ChangeLogArchive:
|
||||||
StatusMessage = 'Starting Change_Log Archive Script.'
|
StatusMessage = 'Starting Change_Log Archive Script.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
ChangeLogArchiveDate = SRP_Datetime('AddYears', Datetime(), -1)
|
ChangeLogArchiveDate = SRP_Datetime('AddYears', Datetime(), -1)
|
||||||
Change_Log_Services('ArchiveChangeLogRecByDate', ChangeLogArchiveDate)
|
Change_Log_Services('ArchiveChangeLogRecByDate', ChangeLogArchiveDate)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
StatusMessage = 'Starting Change_Log Archive Script.'
|
StatusMessage = 'Starting Change_Log Archive Script.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
end else
|
end else
|
||||||
StatusMessage = 'Error in Change_Log Archive Script.'
|
StatusMessage = 'Error in Change_Log Archive Script.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = StatusMessage
|
LogData<2> = StatusMessage
|
||||||
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
|
||||||
Errors<-1> = True$
|
Errors<-1> = True$
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,152 +1,152 @@
|
|||||||
Function Authentication_API(@API)
|
Function Authentication_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Authentication_API
|
Name : Authentication_API
|
||||||
|
|
||||||
Description : API logic for the Authentication resource.
|
Description : API logic for the Authentication resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Authentication[.ID.[<Property>]]
|
- APIPattern must follow this structure Authentication[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Authentication.POST
|
- Authentication.POST
|
||||||
- Authentication.ID.PUT
|
- Authentication.ID.PUT
|
||||||
- Authentication.ID.firstName.GET
|
- Authentication.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 djs Original programmer.
|
07/17/24 djs Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
$insert LSL_USERS_EQUATES
|
$insert LSL_USERS_EQUATES
|
||||||
|
|
||||||
Equ USERNAME$ To 1
|
Equ USERNAME$ To 1
|
||||||
Equ GROUP$ To 2
|
Equ GROUP$ To 2
|
||||||
Equ PASSWORD$ To 3
|
Equ PASSWORD$ To 3
|
||||||
Equ CONTEXT$ To 4
|
Equ CONTEXT$ To 4
|
||||||
|
|
||||||
Declare function Database_Services, MemberOf
|
Declare function Database_Services, MemberOf
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API authentication.POST
|
API authentication.POST
|
||||||
|
|
||||||
Body = HTTP_Services('GetHTTPPostString')
|
Body = HTTP_Services('GetHTTPPostString')
|
||||||
If Body NE '' then
|
If Body NE '' then
|
||||||
// The POST string will have been encoded so use percent (URL) decoding
|
// The POST string will have been encoded so use percent (URL) decoding
|
||||||
AuthJson = HTTP_Services('DecodePercentString', Body)
|
AuthJson = HTTP_Services('DecodePercentString', Body)
|
||||||
hAuthJson = ''
|
hAuthJson = ''
|
||||||
ParseResponse = SRP_JSON(hAuthJson, 'PARSE', AuthJson)
|
ParseResponse = SRP_JSON(hAuthJson, 'PARSE', AuthJson)
|
||||||
If (ParseResponse EQ '') then
|
If (ParseResponse EQ '') then
|
||||||
Username = SRP_JSON(hAuthJson, 'GetValue', 'Username')
|
Username = SRP_JSON(hAuthJson, 'GetValue', 'Username')
|
||||||
Password = SRP_JSON(hAuthJson, 'GetValue', 'Password')
|
Password = SRP_JSON(hAuthJson, 'GetValue', 'Password')
|
||||||
Groups = ''
|
Groups = ''
|
||||||
hGroups = SRP_JSON(hAuthJson, 'get', 'Groups')
|
hGroups = SRP_JSON(hAuthJson, 'get', 'Groups')
|
||||||
If hGroups then
|
If hGroups then
|
||||||
ElementHandles = SRP_JSON(hGroups, 'GetElements', @VM)
|
ElementHandles = SRP_JSON(hGroups, 'GetElements', @VM)
|
||||||
If ElementHandles NE '' then
|
If ElementHandles NE '' then
|
||||||
For each ElementHandle in ElementHandles using @VM
|
For each ElementHandle in ElementHandles using @VM
|
||||||
Groups<0, -1> = SRP_JSON(ElementHandle, 'GetValue')
|
Groups<0, -1> = SRP_JSON(ElementHandle, 'GetValue')
|
||||||
SRP_JSON(ElementHandle, 'Release')
|
SRP_JSON(ElementHandle, 'Release')
|
||||||
Next ElementHandle
|
Next ElementHandle
|
||||||
end
|
end
|
||||||
SRP_JSON(hGroups, 'Release')
|
SRP_JSON(hGroups, 'Release')
|
||||||
end
|
end
|
||||||
SRP_JSON(hAuthJson, 'Release')
|
SRP_JSON(hAuthJson, 'Release')
|
||||||
// Validate Credentials
|
// Validate Credentials
|
||||||
UserRec = Database_Services('ReadDataRow', 'LSL_USERS', Username)
|
UserRec = Database_Services('ReadDataRow', 'LSL_USERS', Username)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Credentials = ''
|
Credentials = ''
|
||||||
Credentials<USERNAME$> = Username
|
Credentials<USERNAME$> = Username
|
||||||
Credentials<PASSWORD$> = UserRec<LSL_USERS_PASSWORD$>
|
Credentials<PASSWORD$> = UserRec<LSL_USERS_PASSWORD$>
|
||||||
Credentials<GROUP$> = UserRec<LSL_USERS_GROUPS$>
|
Credentials<GROUP$> = UserRec<LSL_USERS_GROUPS$>
|
||||||
|
|
||||||
Member = False$
|
Member = False$
|
||||||
Group = ''
|
Group = ''
|
||||||
If Groups NE '' then
|
If Groups NE '' then
|
||||||
For each Group in Groups using @VM
|
For each Group in Groups using @VM
|
||||||
Member = MemberOf(Credentials<USERNAME$>, Group)
|
Member = MemberOf(Credentials<USERNAME$>, Group)
|
||||||
Until Member EQ True$
|
Until Member EQ True$
|
||||||
Next Group
|
Next Group
|
||||||
end else
|
end else
|
||||||
Member = True$
|
Member = True$
|
||||||
end
|
end
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ True$)
|
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ True$)
|
||||||
// Return 200, authentication successful
|
// Return 200, authentication successful
|
||||||
StatusCode = 200
|
StatusCode = 200
|
||||||
Message = 'Authentication successful'
|
Message = 'Authentication successful'
|
||||||
HTTP_Services('SetResponseStatus', 200, Message)
|
HTTP_Services('SetResponseStatus', 200, Message)
|
||||||
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ False$)
|
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ False$)
|
||||||
// Return 401, not a member of required groups
|
// Return 401, not a member of required groups
|
||||||
NumGroups = DCount(Groups, @VM)
|
NumGroups = DCount(Groups, @VM)
|
||||||
If NumGroups GT 1 then
|
If NumGroups GT 1 then
|
||||||
Swap @VM with ' or ' in Groups
|
Swap @VM with ' or ' in Groups
|
||||||
Message = 'User is not a member of the ' : Groups : ' groups.'
|
Message = 'User is not a member of the ' : Groups : ' groups.'
|
||||||
end else
|
end else
|
||||||
Message = 'User is not a member of the ' : Group : ' group.'
|
Message = 'User is not a member of the ' : Group : ' group.'
|
||||||
end
|
end
|
||||||
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
|
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
|
||||||
|
|
||||||
Case Password NE Credentials<PASSWORD$>
|
Case Password NE Credentials<PASSWORD$>
|
||||||
// Return 401, unable to validate password
|
// Return 401, unable to validate password
|
||||||
Message = 'Unable to validate username. Please re-enter.'
|
Message = 'Unable to validate username. Please re-enter.'
|
||||||
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
|
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
|
||||||
Case Otherwise$
|
Case Otherwise$
|
||||||
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Unhandled case.')
|
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Unhandled case.')
|
||||||
End Case
|
End Case
|
||||||
end else
|
end else
|
||||||
// Error reading user record
|
// Error reading user record
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': ErrorMsg)
|
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': ErrorMsg)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Error parsing JSON.')
|
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Error parsing JSON.')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Empty request.')
|
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Empty request.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -1,415 +1,415 @@
|
|||||||
Compile function Automated_Workflow_Services(@Service, @Params)
|
Compile function Automated_Workflow_Services(@Service, @Params)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Initial Author: Jonathan Ouellette
|
Initial Author: Jonathan Ouellette
|
||||||
This service module has a catalogued list of functions to quickly and easily perform certain functions related to lot
|
This service module has a catalogued list of functions to quickly and easily perform certain functions related to lot
|
||||||
processing.
|
processing.
|
||||||
|
|
||||||
1. CreateAWO - Imitates the process of getting data from SAP and processing the WO start in OI.
|
1. CreateAWO - Imitates the process of getting data from SAP and processing the WO start in OI.
|
||||||
2. RouteWO - Imitates routing of a WO, AKA selecting a ProdVer and Assigning the WO to a reactor Type
|
2. RouteWO - Imitates routing of a WO, AKA selecting a ProdVer and Assigning the WO to a reactor Type
|
||||||
3. PrescribeWafers - Imitates creating the child lots for a WO, AKA creating WO_MAT records
|
3. PrescribeWafers - Imitates creating the child lots for a WO, AKA creating WO_MAT records
|
||||||
4. ReleaseCassettes - Assigns raw substrates to the WO_MAT records. RDS for non-epipro is created at this point.
|
4. ReleaseCassettes - Assigns raw substrates to the WO_MAT records. RDS for non-epipro is created at this point.
|
||||||
5. PerformPTI - Imitates Receiving operator moving the lot into the fab.
|
5. PerformPTI - Imitates Receiving operator moving the lot into the fab.
|
||||||
6. Perform1VER - Performs the 1VER operation for an RDS.
|
6. Perform1VER - Performs the 1VER operation for an RDS.
|
||||||
7. PerformLoad - Performs the load operation for an RDS.
|
7. PerformLoad - Performs the load operation for an RDS.
|
||||||
8. PerformUnload - Performs the unload operation for a non-epipro RDS.
|
8. PerformUnload - Performs the unload operation for a non-epipro RDS.
|
||||||
9. EnterRecipeParms - Used in conjunction with PerformLoad. Used to enter the parameters for the Reactor Recipe upon load
|
9. EnterRecipeParms - Used in conjunction with PerformLoad. Used to enter the parameters for the Reactor Recipe upon load
|
||||||
typically this is the first load of a Work Order.
|
typically this is the first load of a Work Order.
|
||||||
10. VerifyRecipeParms - Used in conjunction with PerformLoad. Used to verify the current recipe setpoints for an RDS load.
|
10. VerifyRecipeParms - Used in conjunction with PerformLoad. Used to verify the current recipe setpoints for an RDS load.
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
Declare function Gan_Services, Obj_Notes_Sent, msg, Check_Notes, Jonathan_Services, Database_Services, SRP_Datetime
|
Declare function Gan_Services, Obj_Notes_Sent, msg, Check_Notes, Jonathan_Services, Database_Services, SRP_Datetime
|
||||||
Declare function Lsl_Users_Services, SRP_Time, RList, Error_Services, Obj_Wo_Mat, Pm_Services, Date_Services, Test_Run_Services
|
Declare function Lsl_Users_Services, SRP_Time, RList, Error_Services, Obj_Wo_Mat, Pm_Services, Date_Services, Test_Run_Services
|
||||||
Declare function Reactor_Services, Reactor_Log_Services, obj_react_item, Utility, Environment_Services, obj_wo_log, Qa_Services
|
Declare function Reactor_Services, Reactor_Log_Services, obj_react_item, Utility, Environment_Services, obj_wo_log, Qa_Services
|
||||||
Declare subroutine Start_Window, RList, Set_Status, Database_Services, Obj_Sap, Sap_Services, Btree.Extract, Qa_Services
|
Declare subroutine Start_Window, RList, Set_Status, Database_Services, Obj_Sap, Sap_Services, Btree.Extract, Qa_Services
|
||||||
Declare subroutine Reactor_Services, Obj_Wo_Log, obj_wo_mat, Work_Order_Services, Material_Movement_Services, Automated_Workflow_Services
|
Declare subroutine Reactor_Services, Obj_Wo_Log, obj_wo_mat, Work_Order_Services, Material_Movement_Services, Automated_Workflow_Services
|
||||||
Declare subroutine Override_Services, Obj_Wo_Mat_Log, obj_post_log, Obj_Sap
|
Declare subroutine Override_Services, Obj_Wo_Mat_Log, obj_post_log, Obj_Sap
|
||||||
|
|
||||||
$insert LOGICAL
|
$insert LOGICAL
|
||||||
$insert NOTE_PTRS_EQU
|
$insert NOTE_PTRS_EQU
|
||||||
$insert MSG_EQUATES
|
$insert MSG_EQUATES
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert RLIST_EQUATES
|
$Insert RLIST_EQUATES
|
||||||
$Insert WO_LOG_EQUATES
|
$Insert WO_LOG_EQUATES
|
||||||
$Insert RDS_EQUATES
|
$Insert RDS_EQUATES
|
||||||
$Insert WO_STEP_EQUATES
|
$Insert WO_STEP_EQUATES
|
||||||
$Insert WO_MAT_QA_EQUATES
|
$Insert WO_MAT_QA_EQUATES
|
||||||
$Insert REACT_RUN_EQUATES
|
$Insert REACT_RUN_EQUATES
|
||||||
$Insert RDS_LAYER_EQUATES
|
$Insert RDS_LAYER_EQUATES
|
||||||
$Insert RDS_TEST_EQUATES
|
$Insert RDS_TEST_EQUATES
|
||||||
$Insert PM_EQUATES
|
$Insert PM_EQUATES
|
||||||
$Insert PM_SPEC_EQUATES
|
$Insert PM_SPEC_EQUATES
|
||||||
$Insert WO_MAT_EQUATES
|
$Insert WO_MAT_EQUATES
|
||||||
$Insert WM_OUT_EQUATES
|
$Insert WM_OUT_EQUATES
|
||||||
$Insert TEST_RUN_EQUATES
|
$Insert TEST_RUN_EQUATES
|
||||||
$Insert TEST_RUN_WAFER_EQUATES
|
$Insert TEST_RUN_WAFER_EQUATES
|
||||||
$Insert TEST_WAFER_PROD_EQUATES
|
$Insert TEST_WAFER_PROD_EQUATES
|
||||||
$Insert TEST_RUN_TYPE_EQUATES
|
$Insert TEST_RUN_TYPE_EQUATES
|
||||||
$Insert EPI_PART_EQUATES
|
$Insert EPI_PART_EQUATES
|
||||||
$Insert POPUP_EQUATES
|
$Insert POPUP_EQUATES
|
||||||
$Insert REACTOR_EQUATES
|
$Insert REACTOR_EQUATES
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Service CreatAWO()
|
Service CreatAWO()
|
||||||
|
|
||||||
//Step 1: Start a WO WOLogFileIn variable emulates what an SAP file would have
|
//Step 1: Start a WO WOLogFileIn variable emulates what an SAP file would have
|
||||||
/*
|
/*
|
||||||
ProdOrdNo = FileIn<1,1>
|
ProdOrdNo = FileIn<1,1>
|
||||||
CustPONo = FileIn<1,2>
|
CustPONo = FileIn<1,2>
|
||||||
PromiseShipDt = FileIn<1,3>
|
PromiseShipDt = FileIn<1,3>
|
||||||
EpiPartNo = FileIn<1,4>
|
EpiPartNo = FileIn<1,4>
|
||||||
SubPartNo = FileIn<1,5>
|
SubPartNo = FileIn<1,5>
|
||||||
SubRevNo = FileIn<1,6>
|
SubRevNo = FileIn<1,6>
|
||||||
WOQty = FileIn<1,7>
|
WOQty = FileIn<1,7>
|
||||||
VendCd = FileIn<1,8>
|
VendCd = FileIn<1,8>
|
||||||
*/
|
*/
|
||||||
WOLogFileIn = 'M124567.1':@VM:'NA':@VM:'02/29/2024':@VM:'400149S':@VM:'827906':@VM:'1.0':@VM:'150':@VM:'NA'
|
WOLogFileIn = 'M124567.1':@VM:'NA':@VM:'02/29/2024':@VM:'400149S':@VM:'827906':@VM:'1.0':@VM:'150':@VM:'NA'
|
||||||
RetVal = obj_WO_LOG('SAPCreate',WOLogFileIn)
|
RetVal = obj_WO_LOG('SAPCreate',WOLogFileIn)
|
||||||
Response = RetVal
|
Response = RetVal
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service RouteWO(WO_No)
|
Service RouteWO(WO_No)
|
||||||
//Step 2: Route a WO with a Product Version
|
//Step 2: Route a WO with a Product Version
|
||||||
|
|
||||||
WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WO_No)
|
WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WO_No)
|
||||||
EpiPartNo = WOLogRec<WO_LOG_EPI_PART_NO$>
|
EpiPartNo = WOLogRec<WO_LOG_EPI_PART_NO$>
|
||||||
If EpiPartNo NE '' then
|
If EpiPartNo NE '' then
|
||||||
AllProdVerNos = XLATE('EPI_PART',EpiPartNo,EPI_PART_PROD_VER_NO$,'X')
|
AllProdVerNos = XLATE('EPI_PART',EpiPartNo,EPI_PART_PROD_VER_NO$,'X')
|
||||||
TypeOver = ''
|
TypeOver = ''
|
||||||
TypeOver<PDISPLAY$> = AllProdVerNos
|
TypeOver<PDISPLAY$> = AllProdVerNos
|
||||||
TypeOver<PSELECT$> = 1
|
TypeOver<PSELECT$> = 1
|
||||||
TypeOver<PMODE$> = 'K'
|
TypeOver<PMODE$> = 'K'
|
||||||
SelectedProdVerNo = Popup(@WINDOW,TypeOver,'PROD_VER')
|
SelectedProdVerNo = Popup(@WINDOW,TypeOver,'PROD_VER')
|
||||||
If SelectedProdVerNo NE '' then
|
If SelectedProdVerNo NE '' then
|
||||||
obj_WO_Log('Route',WO_No:@RM:SelectedProdVerNo)
|
obj_WO_Log('Route',WO_No:@RM:SelectedProdVerNo)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service PrescribeWafers(WONo, AmountToRX)
|
Service PrescribeWafers(WONo, AmountToRX)
|
||||||
//Step 3: prescribe wafers. This is the same as assigning lot numbers to individual lots of raw material. AKA creating WO_MAT records
|
//Step 3: prescribe wafers. This is the same as assigning lot numbers to individual lots of raw material. AKA creating WO_MAT records
|
||||||
/*
|
/*
|
||||||
a. User clicks the PUB_RX button on the WO_LOG form.
|
a. User clicks the PUB_RX button on the WO_LOG form.
|
||||||
b. Opens WO Receipt form
|
b. Opens WO Receipt form
|
||||||
c. Users clicks on WO's Due in
|
c. Users clicks on WO's Due in
|
||||||
d. User selects or enters a WO.
|
d. User selects or enters a WO.
|
||||||
e. User clicks scan codes, opens
|
e. User clicks scan codes, opens
|
||||||
*/
|
*/
|
||||||
debug
|
debug
|
||||||
ProdVerNo = XLATE('WO_LOG', WONo, 'PROD_VER_NO', 'X')
|
ProdVerNo = XLATE('WO_LOG', WONo, 'PROD_VER_NO', 'X')
|
||||||
ReactType = XLATE('WO_LOG', WONo, 'REACT_TYPE', 'X')
|
ReactType = XLATE('WO_LOG', WONo, 'REACT_TYPE', 'X')
|
||||||
CassLotNo = '123456789'
|
CassLotNo = '123456789'
|
||||||
CustPartNo = XLATE('WO_LOG', WONo, 'CUST_PART_NO', 'X')
|
CustPartNo = XLATE('WO_LOG', WONo, 'CUST_PART_NO', 'X')
|
||||||
CassQty = 25
|
CassQty = 25
|
||||||
NumCassToRX = AmountToRX / 25
|
NumCassToRX = AmountToRX / 25
|
||||||
ExistingWOMatList = XLATE('WO_LOG', WONo, 'WO_MAT_KEY', 'X')
|
ExistingWOMatList = XLATE('WO_LOG', WONo, 'WO_MAT_KEY', 'X')
|
||||||
LastCassNo = 0
|
LastCassNo = 0
|
||||||
for each cass in ExistingWOMatList using @VM setting iPos
|
for each cass in ExistingWOMatList using @VM setting iPos
|
||||||
thisCassNo = FIELD(cass, '*', 2)
|
thisCassNo = FIELD(cass, '*', 2)
|
||||||
if thisCassNo GT LastCassNo then LastCassNo = thisCassNo
|
if thisCassNo GT LastCassNo then LastCassNo = thisCassNo
|
||||||
Next cass
|
Next cass
|
||||||
for i = 1 to NumCassToRX
|
for i = 1 to NumCassToRX
|
||||||
NextCassNo = LastCassNo + 1
|
NextCassNo = LastCassNo + 1
|
||||||
LastCassNo = nextCassNo
|
LastCassNo = nextCassNo
|
||||||
Parms = WONo:@RM
|
Parms = WONo:@RM
|
||||||
Parms := NextCassNo:@RM
|
Parms := NextCassNo:@RM
|
||||||
Parms := ProdVerNo:@RM
|
Parms := ProdVerNo:@RM
|
||||||
Parms := CassLotNo:@RM
|
Parms := CassLotNo:@RM
|
||||||
Parms := CassQty:@RM
|
Parms := CassQty:@RM
|
||||||
Parms := CustPartNo:@RM ;* This is the CUSTOMER part No
|
Parms := CustPartNo:@RM ;* This is the CUSTOMER part No
|
||||||
Parms := 1:@RM
|
Parms := 1:@RM
|
||||||
Parms := ReactType:@RM ;* 3 character Reactor Type Code
|
Parms := ReactType:@RM ;* 3 character Reactor Type Code
|
||||||
Parms := '':@RM
|
Parms := '':@RM
|
||||||
Parms := 'SR':@RM ;* Warehouse = 'SR' - Shipping/Receiving Area
|
Parms := 'SR':@RM ;* Warehouse = 'SR' - Shipping/Receiving Area
|
||||||
Parms := 'RB':@RM ;* Location = 'RB' - Receiving Bench
|
Parms := 'RB':@RM ;* Location = 'RB' - Receiving Bench
|
||||||
Parms := OCONV(SRP_Datetime('Now'), 'DT/4'):@RM
|
Parms := OCONV(SRP_Datetime('Now'), 'DT/4'):@RM
|
||||||
Parms := 'JONATHAN_O':@RM
|
Parms := 'JONATHAN_O':@RM
|
||||||
Parms := '':@RM
|
Parms := '':@RM
|
||||||
Parms := '':@RM
|
Parms := '':@RM
|
||||||
Parms := '':@RM ;* Added 8/18/2009 JCH
|
Parms := '':@RM ;* Added 8/18/2009 JCH
|
||||||
Parms := '':@RM ;* Added 12/16/2009 JCH
|
Parms := '':@RM ;* Added 12/16/2009 JCH
|
||||||
Parms := 25:@RM ;* Added 11/4/2009 JCH
|
Parms := 25:@RM ;* Added 11/4/2009 JCH
|
||||||
Parms := 0:@RM ;* Added 05/14/2010 JCH
|
Parms := 0:@RM ;* Added 05/14/2010 JCH
|
||||||
Parms := '':@RM ;* Added 07/14/2011 for SAP Project JCH
|
Parms := '':@RM ;* Added 07/14/2011 for SAP Project JCH
|
||||||
Parms := 25 ; // Added 02/01/2018 dmb
|
Parms := 25 ; // Added 02/01/2018 dmb
|
||||||
obj_WO_Mat('Create',Parms)
|
obj_WO_Mat('Create',Parms)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
|
WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
|
||||||
WOLogRec<WO_LOG_WO_MAT_KEY$, -1> = WONo : '*' : LastCassNo
|
WOLogRec<WO_LOG_WO_MAT_KEY$, -1> = WONo : '*' : LastCassNo
|
||||||
Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, 1, 0, 1)
|
Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, 1, 0, 1)
|
||||||
end
|
end
|
||||||
Next i
|
Next i
|
||||||
Work_Order_Services('UpdateReceivedQty', WONo)
|
Work_Order_Services('UpdateReceivedQty', WONo)
|
||||||
|
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service ReleaseCassettes(WONo)
|
Service ReleaseCassettes(WONo)
|
||||||
|
|
||||||
//Step 4: User clicks release cassettes(PUB_RELEASE) from WO_LOG form
|
//Step 4: User clicks release cassettes(PUB_RELEASE) from WO_LOG form
|
||||||
Work_Order_Services('ReleaseCassettes', WONo)
|
Work_Order_Services('ReleaseCassettes', WONo)
|
||||||
//Can get RDS number at this point
|
//Can get RDS number at this point
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service PerformPTI(CassID)
|
Service PerformPTI(CassID)
|
||||||
//Step 5: User performs a PTI scan to tag lot into the fab.
|
//Step 5: User performs a PTI scan to tag lot into the fab.
|
||||||
Warehouse = '1K'
|
Warehouse = '1K'
|
||||||
Location = 'PTI'
|
Location = 'PTI'
|
||||||
Material_Movement_Services('SaveRecord', CassID, Warehouse, Location, @USER4)
|
Material_Movement_Services('SaveRecord', CassID, Warehouse, Location, @USER4)
|
||||||
end service
|
end service
|
||||||
|
|
||||||
* Service BatchProcessLotList()
|
* Service BatchProcessLotList()
|
||||||
* RDSList = ''
|
* RDSList = ''
|
||||||
*
|
*
|
||||||
* RDSList<1> = 627134
|
* RDSList<1> = 627134
|
||||||
* RDSList<2> = 627135
|
* RDSList<2> = 627135
|
||||||
* RDSList<3> = 627136
|
* RDSList<3> = 627136
|
||||||
* RDSList<4> = 627132
|
* RDSList<4> = 627132
|
||||||
* RDSList<5> = 627133
|
* RDSList<5> = 627133
|
||||||
*
|
*
|
||||||
* for each rds in RDSList using @FM
|
* for each rds in RDSList using @FM
|
||||||
* //Automated_Workflow_Services('Perform1VER', rds, 63, 25)
|
* //Automated_Workflow_Services('Perform1VER', rds, 63, 25)
|
||||||
* Automated_Workflow_Services('PerformUnload', rds)
|
* Automated_Workflow_Services('PerformUnload', rds)
|
||||||
* Next rds
|
* Next rds
|
||||||
* end service
|
* end service
|
||||||
|
|
||||||
Service Perform1VER(CassID, ReactorID, WfrQty)
|
Service Perform1VER(CassID, ReactorID, WfrQty)
|
||||||
|
|
||||||
//Step 6
|
//Step 6
|
||||||
If RowExists('RDS', CassID) AND ReactorID NE '' then
|
If RowExists('RDS', CassID) AND ReactorID NE '' then
|
||||||
ReadyToSign = QA_Services('PreEpiSignatureReady', CassID, @User4, WfrQty, ReactorID)
|
ReadyToSign = QA_Services('PreEpiSignatureReady', CassID, @User4, WfrQty, ReactorID)
|
||||||
If (ReadyToSign EQ True$) then
|
If (ReadyToSign EQ True$) then
|
||||||
QA_Services('SignPreEpiStage', CassID, @USER4, WfrQty, ReactorID)
|
QA_Services('SignPreEpiStage', CassID, @USER4, WfrQty, ReactorID)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service PerformLoad(CassID, WfrInQty, LorRLL)
|
Service PerformLoad(CassID, WfrInQty, LorRLL)
|
||||||
|
|
||||||
//Step 7
|
//Step 7
|
||||||
If RowExists('RDS', CassID) then
|
If RowExists('RDS', CassID) then
|
||||||
ReadyToSign = Qa_Services('LoadSignatureReady', CassID, @User4, WfrInQty, LorRLL, 0)
|
ReadyToSign = Qa_Services('LoadSignatureReady', CassID, @User4, WfrInQty, LorRLL, 0)
|
||||||
If ReadyToSign then
|
If ReadyToSign then
|
||||||
Qa_Services('SignLoadStage', CassID, @User4, WfrInQty, LorRLL, 0)
|
Qa_Services('SignLoadStage', CassID, @User4, WfrInQty, LorRLL, 0)
|
||||||
end else
|
end else
|
||||||
ErrorReason = Error_Services('GetMessage')
|
ErrorReason = Error_Services('GetMessage')
|
||||||
Begin Case
|
Begin Case
|
||||||
Case ErrorReason EQ 'Process Error: Recipe parameters have not been entered.'
|
Case ErrorReason EQ 'Process Error: Recipe parameters have not been entered.'
|
||||||
//Get the expected parameters and enter them. This is in the RDS_Layer Record
|
//Get the expected parameters and enter them. This is in the RDS_Layer Record
|
||||||
//First lets get limits from the RDS Layer Record(s)
|
//First lets get limits from the RDS Layer Record(s)
|
||||||
RDSLayerKeys = XLATE('RDS', CassID, RDS_RDS_LAYER_KEYS$, 'X')
|
RDSLayerKeys = XLATE('RDS', CassID, RDS_RDS_LAYER_KEYS$, 'X')
|
||||||
for each RDSLayerKey in RDSLayerKeys using @VM setting rlPos
|
for each RDSLayerKey in RDSLayerKeys using @VM setting rlPos
|
||||||
Automated_Workflow_Services('EnterRecipeParams', RDSLayerKey)
|
Automated_Workflow_Services('EnterRecipeParams', RDSLayerKey)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Automated_Workflow_Services('PerformLoad', CassID, WfrInQty, LorRLL)
|
Automated_Workflow_Services('PerformLoad', CassID, WfrInQty, LorRLL)
|
||||||
end else
|
end else
|
||||||
//Die
|
//Die
|
||||||
Return
|
Return
|
||||||
end
|
end
|
||||||
Next RDSLayerKey
|
Next RDSLayerKey
|
||||||
Case ErrorReason EQ 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
Case ErrorReason EQ 'RDS layer parameters must be reviewed for accuracy and acknowledged before the load operation can be signed.'
|
||||||
Automated_Workflow_Services('VerifyRecipeParams', CassID)
|
Automated_Workflow_Services('VerifyRecipeParams', CassID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Automated_Workflow_Services('PerformLoad', CassID, WfrInQty, LorRLL)
|
Automated_Workflow_Services('PerformLoad', CassID, WfrInQty, LorRLL)
|
||||||
end else
|
end else
|
||||||
//Die
|
//Die
|
||||||
Return
|
Return
|
||||||
end
|
end
|
||||||
End Case
|
End Case
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service PerformUnload(RDSNo)
|
Service PerformUnload(RDSNo)
|
||||||
//Step 8
|
//Step 8
|
||||||
|
|
||||||
If RDSNo NE '' then
|
If RDSNo NE '' then
|
||||||
Reactor = XLATE('RDS', RDSNo, 'REACTOR', 'X')
|
Reactor = XLATE('RDS', RDSNo, 'REACTOR', 'X')
|
||||||
If Reactor NE '' then
|
If Reactor NE '' then
|
||||||
ReadyToSign = QA_Services('UnloadSignatureReady', RDSNo, @User4, Reactor)
|
ReadyToSign = QA_Services('UnloadSignatureReady', RDSNo, @User4, Reactor)
|
||||||
If Error_Services('HasError') then
|
If Error_Services('HasError') then
|
||||||
If ErrorMsg EQ 'Cassette runtime exceeds three days! An override by a LEAD or SUPERVISOR is required.' then
|
If ErrorMsg EQ 'Cassette runtime exceeds three days! An override by a LEAD or SUPERVISOR is required.' then
|
||||||
Override_Services('SetOverride', 'RDS', RDSNo, 'UNLOAD_DTM', @USER4)
|
Override_Services('SetOverride', 'RDS', RDSNo, 'UNLOAD_DTM', @USER4)
|
||||||
ReadyToSign = True$
|
ReadyToSign = True$
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
If ReadyToSign then
|
If ReadyToSign then
|
||||||
QA_Services('SignUnloadStage', RDSNo, @User4)
|
QA_Services('SignUnloadStage', RDSNo, @User4)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'No Reactor assigned to RDS!')
|
Error_Services('Add', 'No Reactor assigned to RDS!')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'No RDS No. Supplied!')
|
Error_Services('Add', 'No RDS No. Supplied!')
|
||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service PerformFQA(RDSNo)
|
Service PerformFQA(RDSNo)
|
||||||
|
|
||||||
ToolID = ''
|
ToolID = ''
|
||||||
WHCd = 'CR'
|
WHCd = 'CR'
|
||||||
LocCD = 'QA'
|
LocCD = 'QA'
|
||||||
Tag = ''
|
Tag = ''
|
||||||
SigDt = Date()
|
SigDt = Date()
|
||||||
SigTm = Time()
|
SigTm = Time()
|
||||||
WONo = XLATE('RDS', RDSNo, RDS_WO$, 'X')
|
WONo = XLATE('RDS', RDSNo, RDS_WO$, 'X')
|
||||||
CassNo = XLATE('RDS', RDSNo, RDS_CASS_NO$, 'X')
|
CassNo = XLATE('RDS', RDSNo, RDS_CASS_NO$, 'X')
|
||||||
|
|
||||||
Equ COL$LOG_FILE to 1
|
Equ COL$LOG_FILE to 1
|
||||||
Equ COL$LOG_DTM to 2
|
Equ COL$LOG_DTM to 2
|
||||||
Equ COL$ACTION to 3
|
Equ COL$ACTION to 3
|
||||||
Equ COL$WH_CD to 4
|
Equ COL$WH_CD to 4
|
||||||
Equ COL$LOC_CD to 5
|
Equ COL$LOC_CD to 5
|
||||||
Equ COL$WO_NOS to 6
|
Equ COL$WO_NOS to 6
|
||||||
Equ COL$CASS_NOS to 7
|
Equ COL$CASS_NOS to 7
|
||||||
Equ COL$USER_ID to 8
|
Equ COL$USER_ID to 8
|
||||||
Equ COL$TAGS to 9
|
Equ COL$TAGS to 9
|
||||||
Equ COL$TOOL_ID to 10
|
Equ COL$TOOL_ID to 10
|
||||||
EventParms = ''
|
EventParms = ''
|
||||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
||||||
EventParms<COL$ACTION> = 1:'QA'
|
EventParms<COL$ACTION> = 1:'QA'
|
||||||
EventParms<COL$WH_CD> = 'CR'
|
EventParms<COL$WH_CD> = 'CR'
|
||||||
EventParms<COL$LOC_CD> = 'QA'
|
EventParms<COL$LOC_CD> = 'QA'
|
||||||
EventParms<COL$WO_NOS> = WONo
|
EventParms<COL$WO_NOS> = WONo
|
||||||
EventParms<COL$CASS_NOS> = CassNo
|
EventParms<COL$CASS_NOS> = CassNo
|
||||||
EventParms<COL$USER_ID> = @USER4
|
EventParms<COL$USER_ID> = @USER4
|
||||||
EventParms<COL$TAGS> = ''
|
EventParms<COL$TAGS> = ''
|
||||||
EventParms<COL$TOOL_ID> = ''
|
EventParms<COL$TOOL_ID> = ''
|
||||||
|
|
||||||
CONVERT @FM TO @RM IN EventParms
|
CONVERT @FM TO @RM IN EventParms
|
||||||
|
|
||||||
obj_WO_Mat_Log('Create',EventParms) ;* * * * * INV EVENT LOG * * * * *
|
obj_WO_Mat_Log('Create',EventParms) ;* * * * * INV EVENT LOG * * * * *
|
||||||
Obj_Post_Log('POST')
|
Obj_Post_Log('POST')
|
||||||
|
|
||||||
Qa_Services('SignFQAStage', RDSNo, @USER4)
|
Qa_Services('SignFQAStage', RDSNo, @USER4)
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
Service EnterRecipeParams(RDSLayerKey)
|
Service EnterRecipeParams(RDSLayerKey)
|
||||||
|
|
||||||
RDSLayerRec = Database_Services('ReadDataRow', 'RDS_LAYER', RDSLayerKey)
|
RDSLayerRec = Database_Services('ReadDataRow', 'RDS_LAYER', RDSLayerKey)
|
||||||
If RDSLayerRec NE '' then
|
If RDSLayerRec NE '' then
|
||||||
If RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_EPI_TIME_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_EPI_TIME_MAX$> NE '' then
|
||||||
//Epi Deposit Time
|
//Epi Deposit Time
|
||||||
RDSLayerRec<RDS_LAYER_EPI_TIME$> = ((RDSLayerRec<RDS_LAYER_EPI_TIME_MAX$> - RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$>
|
RDSLayerRec<RDS_LAYER_EPI_TIME$> = ((RDSLayerRec<RDS_LAYER_EPI_TIME_MAX$> - RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_EPI_TIME_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_DILUENT_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DILUENT_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_DILUENT_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DILUENT_MAX$> NE '' then
|
||||||
//Diluent
|
//Diluent
|
||||||
RDSLayerRec<RDS_LAYER_DILUENT_ADJ_PARAM$> = ((RDSLayerRec<RDS_LAYER_DILUENT_MAX$> - RDSLayerRec<RDS_LAYER_DILUENT_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DILUENT_MIN$>
|
RDSLayerRec<RDS_LAYER_DILUENT_ADJ_PARAM$> = ((RDSLayerRec<RDS_LAYER_DILUENT_MAX$> - RDSLayerRec<RDS_LAYER_DILUENT_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DILUENT_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MAX$> NE '' then
|
||||||
//Dopant Flow
|
//Dopant Flow
|
||||||
RDSLayerRec<RDS_LAYER_DOPANT_FLOW$> = ((RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$>
|
RDSLayerRec<RDS_LAYER_DOPANT_FLOW$> = ((RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DOPANT_FLOW_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_HCL_FLOW_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_HCL_FLOW_MAX$> NE '' then
|
||||||
//HCL Flow
|
//HCL Flow
|
||||||
RDSLayerRec<RDS_LAYER_HCL_FLOW$> = ((RDSLayerRec<RDS_LAYER_HCL_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$>
|
RDSLayerRec<RDS_LAYER_HCL_FLOW$> = ((RDSLayerRec<RDS_LAYER_HCL_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_HCL_FLOW_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_BAKE_TIME_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_BAKE_TIME_MAX$> NE '' then
|
||||||
//Bake Time
|
//Bake Time
|
||||||
RDSLayerRec<RDS_LAYER_BAKE_TIME$> = ((RDSLayerRec<RDS_LAYER_BAKE_TIME_MAX$> - RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$>
|
RDSLayerRec<RDS_LAYER_BAKE_TIME$> = ((RDSLayerRec<RDS_LAYER_BAKE_TIME_MAX$> - RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_BAKE_TIME_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MAX$> NE '' then
|
||||||
//H2 Flow
|
//H2 Flow
|
||||||
RDSLayerRec<RDS_LAYER_EPI_H2_FLOW$> = ((RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$>
|
RDSLayerRec<RDS_LAYER_EPI_H2_FLOW$> = ((RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_EPI_H2_FLOW_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_TCS_FLOW_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_TCS_FLOW_MAX$> NE '' then
|
||||||
//TCS Flow
|
//TCS Flow
|
||||||
RDSLayerRec<RDS_LAYER_TCS_FLOW$> = ((RDSLayerRec<RDS_LAYER_TCS_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$>
|
RDSLayerRec<RDS_LAYER_TCS_FLOW$> = ((RDSLayerRec<RDS_LAYER_TCS_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_TCS_FLOW_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DCS_FLOW_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_DCS_FLOW_MAX$> NE '' then
|
||||||
//DCS Flow
|
//DCS Flow
|
||||||
RDSLayerRec<RDS_LAYER_DCS_FLOW$> = ((RDSLayerRec<RDS_LAYER_DCS_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$>
|
RDSLayerRec<RDS_LAYER_DCS_FLOW$> = ((RDSLayerRec<RDS_LAYER_DCS_FLOW_MAX$> - RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_DCS_FLOW_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_AUX1_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_AUX1_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_AUX1_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_AUX1_MAX$> NE '' then
|
||||||
//AUX 1
|
//AUX 1
|
||||||
RDSLayerRec<RDS_LAYER_AUX1$> = ((RDSLayerRec<RDS_LAYER_AUX1_MAX$> - RDSLayerRec<RDS_LAYER_AUX1_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_AUX1_MIN$>
|
RDSLayerRec<RDS_LAYER_AUX1$> = ((RDSLayerRec<RDS_LAYER_AUX1_MAX$> - RDSLayerRec<RDS_LAYER_AUX1_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_AUX1_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_AUX2_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_AUX2_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_AUX2_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_AUX2_MAX$> NE '' then
|
||||||
//AUX2
|
//AUX2
|
||||||
RDSLayerRec<RDS_LAYER_AUX2$> = ((RDSLayerRec<RDS_LAYER_AUX2_MAX$> - RDSLayerRec<RDS_LAYER_AUX2_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_AUX2_MIN$>
|
RDSLayerRec<RDS_LAYER_AUX2$> = ((RDSLayerRec<RDS_LAYER_AUX2_MAX$> - RDSLayerRec<RDS_LAYER_AUX2_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_AUX2_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_F_OFFSET_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_F_OFFSET_MAX$> NE '' then
|
||||||
//F_OFFSET
|
//F_OFFSET
|
||||||
RDSLayerRec<RDS_LAYER_F_OFFSET$> = ((RDSLayerRec<RDS_LAYER_F_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$>
|
RDSLayerRec<RDS_LAYER_F_OFFSET$> = ((RDSLayerRec<RDS_LAYER_F_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_F_OFFSET_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_S_OFFSET_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_S_OFFSET_MAX$> NE '' then
|
||||||
//S_OFFSET
|
//S_OFFSET
|
||||||
RDSLayerRec<RDS_LAYER_S_OFFSET$> = ((RDSLayerRec<RDS_LAYER_S_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$>
|
RDSLayerRec<RDS_LAYER_S_OFFSET$> = ((RDSLayerRec<RDS_LAYER_S_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_S_OFFSET_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_R_OFFSET_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_R_OFFSET_MAX$> NE '' then
|
||||||
//R OFFSET
|
//R OFFSET
|
||||||
RDSLayerRec<RDS_LAYER_R_OFFSET$> = ((RDSLayerRec<RDS_LAYER_R_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$>
|
RDSLayerRec<RDS_LAYER_R_OFFSET$> = ((RDSLayerRec<RDS_LAYER_R_OFFSET_MAX$> - RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_R_OFFSET_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_ETCH1_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH1_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_ETCH1_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH1_MAX$> NE '' then
|
||||||
//ETCH 1
|
//ETCH 1
|
||||||
RDSLayerRec<RDS_LAYER_ETCH1$> = ((RDSLayerRec<RDS_LAYER_ETCH1_MAX$> - RDSLayerRec<RDS_LAYER_ETCH1_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH1_MIN$>
|
RDSLayerRec<RDS_LAYER_ETCH1$> = ((RDSLayerRec<RDS_LAYER_ETCH1_MAX$> - RDSLayerRec<RDS_LAYER_ETCH1_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH1_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_ETCH2_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH2_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_ETCH2_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH2_MAX$> NE '' then
|
||||||
//ETCH 2
|
//ETCH 2
|
||||||
RDSLayerRec<RDS_LAYER_ETCH2$> = ((RDSLayerRec<RDS_LAYER_ETCH2_MAX$> - RDSLayerRec<RDS_LAYER_ETCH2_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH2_MIN$>
|
RDSLayerRec<RDS_LAYER_ETCH2$> = ((RDSLayerRec<RDS_LAYER_ETCH2_MAX$> - RDSLayerRec<RDS_LAYER_ETCH2_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH2_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_ETCH3_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH3_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_ETCH3_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_ETCH3_MAX$> NE '' then
|
||||||
//ETCH 3
|
//ETCH 3
|
||||||
RDSLayerRec<RDS_LAYER_ETCH3$> = ((RDSLayerRec<RDS_LAYER_ETCH3_MAX$> - RDSLayerRec<RDS_LAYER_ETCH3_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH3_MIN$>
|
RDSLayerRec<RDS_LAYER_ETCH3$> = ((RDSLayerRec<RDS_LAYER_ETCH3_MAX$> - RDSLayerRec<RDS_LAYER_ETCH3_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_ETCH3_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_UL_TEMP_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_UL_TEMP_MAX$> NE '' then
|
||||||
//UL_TEMP
|
//UL_TEMP
|
||||||
RDSLayerRec<RDS_LAYER_UL_TEMP$> = ((RDSLayerRec<RDS_LAYER_UL_TEMP_MAX$> - RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$>
|
RDSLayerRec<RDS_LAYER_UL_TEMP$> = ((RDSLayerRec<RDS_LAYER_UL_TEMP_MAX$> - RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_UL_TEMP_MIN$>
|
||||||
end
|
end
|
||||||
|
|
||||||
If RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_SUSC_ETCH_MAX$> NE '' then
|
If RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$> NE '' AND RDSLayerRec<RDS_LAYER_SUSC_ETCH_MAX$> NE '' then
|
||||||
//Susceptor Etch
|
//Susceptor Etch
|
||||||
RDSLayerRec<RDS_LAYER_SUSC_ETCH$> = ((RDSLayerRec<RDS_LAYER_SUSC_ETCH_MAX$> - RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$>
|
RDSLayerRec<RDS_LAYER_SUSC_ETCH$> = ((RDSLayerRec<RDS_LAYER_SUSC_ETCH_MAX$> - RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$>) / 2) + RDSLayerRec<RDS_LAYER_SUSC_ETCH_MIN$>
|
||||||
end
|
end
|
||||||
Database_Services('WriteDataRow', 'RDS_LAYER', RDSLayerKey, RDSLayerRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS_LAYER', RDSLayerKey, RDSLayerRec, True$, False$, True$)
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service VerifyRecipeParams(RDSNo)
|
Service VerifyRecipeParams(RDSNo)
|
||||||
//Used to verify exisiting recipe params. This is if they are already set.
|
//Used to verify exisiting recipe params. This is if they are already set.
|
||||||
IF RDSNo NE '' then
|
IF RDSNo NE '' then
|
||||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
RDSRec<RDS_RDS_LAYER_ACK$> = True$
|
RDSRec<RDS_RDS_LAYER_ACK$> = True$
|
||||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'RDS No was blank!!!')
|
Error_Services('Add', 'RDS No was blank!!!')
|
||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service SendCassComp(WoMatKey)
|
Service SendCassComp(WoMatKey)
|
||||||
Sap_Services('RetransmitCassComp', WoMatKey)
|
Sap_Services('RetransmitCassComp', WoMatKey)
|
||||||
obj_sap('SendOutbound')
|
obj_sap('SendOutbound')
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,139 +1,139 @@
|
|||||||
Function Changelog_API(@API)
|
Function Changelog_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Changelog_API
|
Name : Changelog_API
|
||||||
|
|
||||||
Description : API logic for the Changelog resource.
|
Description : API logic for the Changelog resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Changelog[.ID.[<Property>]]
|
- APIPattern must follow this structure Changelog[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Changelog.POST
|
- Changelog.POST
|
||||||
- Changelog.ID.PUT
|
- Changelog.ID.PUT
|
||||||
- Changelog.ID.firstName.GET
|
- Changelog.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/24/24 xxx Original programmer.
|
07/24/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
Declare function Datetime, SRP_Datetime, Change_Log_Services, Environment_Services, Logging_Services
|
Declare function Datetime, SRP_Datetime, Change_Log_Services, Environment_Services, Logging_Services
|
||||||
Declare subroutine Logging_Services
|
Declare subroutine Logging_Services
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
EQU Comma$ to ','
|
EQU Comma$ to ','
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\API\Admin\ChangeLog'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\API\Admin\ChangeLog'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ChangeLogArchiveService.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ChangeLogArchiveService.csv'
|
||||||
Headers = 'Logging DTM' : @FM : 'From IP Address' : @FM : 'Message'
|
Headers = 'Logging DTM' : @FM : 'From IP Address' : @FM : 'Message'
|
||||||
objLogChangeLogAPI = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
objLogChangeLogAPI = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
RequesterIPAddr = HTTP_Services('GetHTTPRemoteAddr')
|
RequesterIPAddr = HTTP_Services('GetHTTPRemoteAddr')
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API changelog.HEAD
|
API changelog.HEAD
|
||||||
API changelog.GET
|
API changelog.GET
|
||||||
StartDtm = Http_Services('GetQueryField', 'FromDatetime')
|
StartDtm = Http_Services('GetQueryField', 'FromDatetime')
|
||||||
ToDtm = Http_Services('GetQueryField', 'ToDatetime')
|
ToDtm = Http_Services('GetQueryField', 'ToDatetime')
|
||||||
|
|
||||||
StartDtm = IConv(StartDtm, 'DT')
|
StartDtm = IConv(StartDtm, 'DT')
|
||||||
ToDtm = IConv(ToDtm, 'DT')
|
ToDtm = IConv(ToDtm, 'DT')
|
||||||
|
|
||||||
If StartDtm EQ '' then
|
If StartDtm EQ '' then
|
||||||
StartDtm = SRP_Datetime('AddDays', Datetime(), -60)
|
StartDtm = SRP_Datetime('AddDays', Datetime(), -60)
|
||||||
end
|
end
|
||||||
If ToDtm EQ '' then
|
If ToDtm EQ '' then
|
||||||
ToDtm = Datetime()
|
ToDtm = Datetime()
|
||||||
end
|
end
|
||||||
|
|
||||||
EntityName = Http_Services('GetQueryField', 'EntityName')
|
EntityName = Http_Services('GetQueryField', 'EntityName')
|
||||||
UserId = Http_Services('GetQueryField', 'UserID')
|
UserId = Http_Services('GetQueryField', 'UserID')
|
||||||
|
|
||||||
ChangeLogIDs = Change_Log_Services('GetChangeLogRecIDs', EntityName, StartDtm, ToDtm, UserId)
|
ChangeLogIDs = Change_Log_Services('GetChangeLogRecIDs', EntityName, StartDtm, ToDtm, UserId)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
GoSub CreateHALCollection
|
GoSub CreateHALCollection
|
||||||
end else
|
end else
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = RequesterIPAddr
|
LogData<2> = RequesterIPAddr
|
||||||
LogData<3> = ErrorMsg
|
LogData<3> = ErrorMsg
|
||||||
Logging_Services('AppendLog', objLogChangeLogAPI, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogChangeLogAPI, LogData, @RM, @FM)
|
||||||
HTTP_Services('SetResponseStatus', 500, 'Error Getting change log records from change_log table.')
|
HTTP_Services('SetResponseStatus', 500, 'Error Getting change log records from change_log table.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
CreateHALCollection:
|
CreateHALCollection:
|
||||||
hJsonCollection = ''
|
hJsonCollection = ''
|
||||||
hChangeLogArray = ''
|
hChangeLogArray = ''
|
||||||
hChangeLogObj = ''
|
hChangeLogObj = ''
|
||||||
hChangeLog = ''
|
hChangeLog = ''
|
||||||
hChangeLogJson = ''
|
hChangeLogJson = ''
|
||||||
Abort = False$
|
Abort = False$
|
||||||
If SRP_JSON(hJSONCollection, 'New', 'Object') then
|
If SRP_JSON(hJSONCollection, 'New', 'Object') then
|
||||||
If SRP_JSON(hChangeLogArray, 'New', 'Array') then
|
If SRP_JSON(hChangeLogArray, 'New', 'Array') then
|
||||||
For each ChangeLogID in ChangeLogIDs using @VM setting fPos
|
For each ChangeLogID in ChangeLogIDs using @VM setting fPos
|
||||||
//rdsJSON = Rds_Services('ConvertRecordToJSON', rds, '' ,FullEndpointURL:'/':rds)
|
//rdsJSON = Rds_Services('ConvertRecordToJSON', rds, '' ,FullEndpointURL:'/':rds)
|
||||||
ChangeLogJson = Change_Log_Services('ConvertRecordToJSON', ChangeLogID)
|
ChangeLogJson = Change_Log_Services('ConvertRecordToJSON', ChangeLogID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
If (SRP_JSON(hChangeLog, 'Parse', ChangeLogJson) EQ '') then
|
If (SRP_JSON(hChangeLog, 'Parse', ChangeLogJson) EQ '') then
|
||||||
SRP_JSON(hChangeLogArray, 'Add', hChangeLog)
|
SRP_JSON(hChangeLogArray, 'Add', hChangeLog)
|
||||||
SRP_JSON(hChangeLog, 'Release')
|
SRP_JSON(hChangeLog, 'Release')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Abort = True$
|
Abort = True$
|
||||||
end
|
end
|
||||||
Until Abort
|
Until Abort
|
||||||
Next rds
|
Next rds
|
||||||
If Abort EQ False$ then
|
If Abort EQ False$ then
|
||||||
SRP_JSON(hJSONCollection, 'Set', 'ChangeLogRecords', hChangeLogArray)
|
SRP_JSON(hJSONCollection, 'Set', 'ChangeLogRecords', hChangeLogArray)
|
||||||
end
|
end
|
||||||
SRP_JSON(hChangeLogArray, 'Release')
|
SRP_JSON(hChangeLogArray, 'Release')
|
||||||
end
|
end
|
||||||
JSONCollection = SRP_JSON(hJSONCollection, 'Stringify', 'Styled')
|
JSONCollection = SRP_JSON(hJSONCollection, 'Stringify', 'Styled')
|
||||||
SRP_JSON(hJSONCollection, 'Release')
|
SRP_JSON(hJSONCollection, 'Release')
|
||||||
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
||||||
HTTP_Services('SetResponseBody', JSONCollection, False$, 'application/hal+json')
|
HTTP_Services('SetResponseBody', JSONCollection, False$, 'application/hal+json')
|
||||||
HTTP_Services('SetResponseStatus', 200)
|
HTTP_Services('SetResponseStatus', 200)
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -1,140 +1,140 @@
|
|||||||
Function Dakota_Test_Events(CtrlEntId, Event, @PARAMS)
|
Function Dakota_Test_Events(CtrlEntId, Event, @PARAMS)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : NDW_Main_Events
|
Name : NDW_Main_Events
|
||||||
|
|
||||||
Description : This function acts as a commuter module for all events related to this window.
|
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
|
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
|
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
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
||||||
limited to the events which are currently promoted.
|
limited to the events which are currently promoted.
|
||||||
|
|
||||||
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
||||||
formatted like this:
|
formatted like this:
|
||||||
|
|
||||||
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
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
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
||||||
Param1-15 [in] -- Additional event parameter holders
|
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
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
||||||
EVENT_SETUP insert
|
EVENT_SETUP insert
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
05/08/18 dmb Created initial commuter module.
|
05/08/18 dmb Created initial commuter module.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#Window DAKOTA_TEST
|
#Window DAKOTA_TEST
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert EVENT_SETUP
|
$insert EVENT_SETUP
|
||||||
|
|
||||||
|
|
||||||
SubclassInfo = Form_Services('FindSubclassControl')
|
SubclassInfo = Form_Services('FindSubclassControl')
|
||||||
Subclass = SubclassInfo<1>
|
Subclass = SubclassInfo<1>
|
||||||
|
|
||||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||||
If Event EQ 'OLE' then
|
If Event EQ 'OLE' then
|
||||||
Transfer Event to OIEvent
|
Transfer Event to OIEvent
|
||||||
Transfer Param1 to Event
|
Transfer Param1 to Event
|
||||||
Transfer Param2 to Param1
|
Transfer Param2 to Param1
|
||||||
Transfer Param3 to Param2
|
Transfer Param3 to Param2
|
||||||
Transfer Param4 to Param3
|
Transfer Param4 to Param3
|
||||||
Transfer Param5 to Param4
|
Transfer Param5 to Param4
|
||||||
Transfer Param6 to Param5
|
Transfer Param6 to Param5
|
||||||
Transfer Param7 to Param6
|
Transfer Param7 to Param6
|
||||||
Transfer Param8 to Param7
|
Transfer Param8 to Param7
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntID
|
GoToEvent Event for CtrlEntID
|
||||||
|
|
||||||
Return EventFlow else EVENT_CONTINUE$
|
Return EventFlow else EVENT_CONTINUE$
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Events
|
// Events
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
|
|
||||||
Gosub Setup_OLE_Controls
|
Gosub Setup_OLE_Controls
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Setup_OLE_Controls:
|
Setup_OLE_Controls:
|
||||||
|
|
||||||
Qualify = ''
|
Qualify = ''
|
||||||
Qualify<1> = 1
|
Qualify<1> = 1
|
||||||
Qualify<4> = 0
|
Qualify<4> = 0
|
||||||
|
|
||||||
FontArray = ''
|
FontArray = ''
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
FontArray<1, 1, 2> = 11
|
FontArray<1, 1, 2> = 11
|
||||||
Send_Message(@Window : '.OLE_WIP_STATUS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
Send_Message(@Window : '.OLE_WIP_STATUS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
||||||
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Font", FontArray)
|
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Font", FontArray)
|
||||||
ColorFill<1> = "White"
|
ColorFill<1> = "White"
|
||||||
ColorFill<2> = "White"
|
ColorFill<2> = "White"
|
||||||
ColorFill<3> = "White"
|
ColorFill<3> = "White"
|
||||||
ColorFill<5> = "White"
|
ColorFill<5> = "White"
|
||||||
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.ForeColor", ColorFill)
|
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.ForeColor", ColorFill)
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
Set_Property(@Window : '.OLE_WIP_STATUS', "OLE.Background", ColorFill)
|
Set_Property(@Window : '.OLE_WIP_STATUS', "OLE.Background", ColorFill)
|
||||||
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Caption", "WIP Status")
|
Set_Property(@Window:".OLE_WIP_STATUS", "OLE.Caption", "WIP Status")
|
||||||
|
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
Send_Message(@Window : '.OLE_RDS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
Send_Message(@Window : '.OLE_RDS', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
||||||
Set_Property(@Window:".OLE_RDS", "OLE.Font", FontArray)
|
Set_Property(@Window:".OLE_RDS", "OLE.Font", FontArray)
|
||||||
ColorFill<1> = "White"
|
ColorFill<1> = "White"
|
||||||
ColorFill<2> = "White"
|
ColorFill<2> = "White"
|
||||||
ColorFill<3> = "White"
|
ColorFill<3> = "White"
|
||||||
ColorFill<5> = "White"
|
ColorFill<5> = "White"
|
||||||
Set_Property(@Window:".OLE_RDS", "OLE.ForeColor", ColorFill)
|
Set_Property(@Window:".OLE_RDS", "OLE.ForeColor", ColorFill)
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
Set_Property(@Window : '.OLE_RDS', "OLE.Background", ColorFill)
|
Set_Property(@Window : '.OLE_RDS', "OLE.Background", ColorFill)
|
||||||
Set_Property(@Window:".OLE_RDS", "OLE.Caption", "RDS")
|
Set_Property(@Window:".OLE_RDS", "OLE.Caption", "RDS")
|
||||||
|
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
Send_Message(@Window : '.OLE_WM_OUT', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
Send_Message(@Window : '.OLE_WM_OUT', 'QUALIFY_EVENT', 'OLE.OnClick', Qualify)
|
||||||
Set_Property(@Window:".OLE_WM_OUT", "OLE.Font", FontArray)
|
Set_Property(@Window:".OLE_WM_OUT", "OLE.Font", FontArray)
|
||||||
ColorFill<1> = "White"
|
ColorFill<1> = "White"
|
||||||
ColorFill<2> = "White"
|
ColorFill<2> = "White"
|
||||||
ColorFill<3> = "White"
|
ColorFill<3> = "White"
|
||||||
ColorFill<5> = "White"
|
ColorFill<5> = "White"
|
||||||
Set_Property(@Window:".OLE_WM_OUT", "OLE.ForeColor", ColorFill)
|
Set_Property(@Window:".OLE_WM_OUT", "OLE.ForeColor", ColorFill)
|
||||||
ColorFill = ''
|
ColorFill = ''
|
||||||
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<1> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<2> = "Vertical(Gradient(RGB(10, 130, 118) L=40, RGB(10, 130, 118) L=40), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<3> = "Vertical(Gradient(RGB(10, 130, 118) L=20, RGB(10, 130, 118) L=20), Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
ColorFill<5> = "Vertical(Gradient(RGB(10, 130, 118), (10, 130, 118)),Border(RGB(10, 130, 118)),Rounded(1))"
|
||||||
Set_Property(@Window : '.OLE_WM_OUT', "OLE.Background", ColorFill)
|
Set_Property(@Window : '.OLE_WM_OUT', "OLE.Background", ColorFill)
|
||||||
Set_Property(@Window:".OLE_WM_OUT", "OLE.Caption", "WM Out")
|
Set_Property(@Window:".OLE_WM_OUT", "OLE.Caption", "WM Out")
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -258,6 +258,7 @@ RETURN
|
|||||||
TxShipments:
|
TxShipments:
|
||||||
* * * * * * *
|
* * * * * * *
|
||||||
|
|
||||||
|
|
||||||
CtrlEntID = @WINDOW:'.TX_SHIP'
|
CtrlEntID = @WINDOW:'.TX_SHIP'
|
||||||
|
|
||||||
ShipNos = Get_Property(@WINDOW:'.TX_SHIP','DEFPROP')<COL$SHIP_NO>
|
ShipNos = Get_Property(@WINDOW:'.TX_SHIP','DEFPROP')<COL$SHIP_NO>
|
||||||
|
@ -1,97 +1,97 @@
|
|||||||
Function Engineinfo_API(@API)
|
Function Engineinfo_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Engineinfo_API
|
Name : Engineinfo_API
|
||||||
|
|
||||||
Description : API logic for the Engineinfo resource.
|
Description : API logic for the Engineinfo resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Engineinfo[.ID.[<Property>]]
|
- APIPattern must follow this structure Engineinfo[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Engineinfo.POST
|
- Engineinfo.POST
|
||||||
- Engineinfo.ID.PUT
|
- Engineinfo.ID.PUT
|
||||||
- Engineinfo.ID.firstName.GET
|
- Engineinfo.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 xxx Original programmer.
|
07/17/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
$insert ENGINE_HEALTH_EQUATES
|
$insert ENGINE_HEALTH_EQUATES
|
||||||
|
|
||||||
Declare function System_Healthcheck_Services
|
Declare function System_Healthcheck_Services
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API remotehealthcheck.HEAD
|
API remotehealthcheck.HEAD
|
||||||
API remotehealthcheck.GET
|
API remotehealthcheck.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API engineinfo.HEAD
|
API engineinfo.HEAD
|
||||||
API engineinfo.GET
|
API engineinfo.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API engineinfo.ID.HEAD
|
API engineinfo.ID.HEAD
|
||||||
API engineinfo.ID.GET
|
API engineinfo.ID.GET
|
||||||
|
|
||||||
EngineID = EndpointSegment
|
EngineID = EndpointSegment
|
||||||
If RowExists('APP_INFO', EngineID) then
|
If RowExists('APP_INFO', EngineID) then
|
||||||
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
|
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
EngineJSON = System_Healthcheck_Services('ConvertEngineHealthInfoToJSON', EngineHealthInfo, FullEndpointURL)
|
EngineJSON = System_Healthcheck_Services('ConvertEngineHealthInfoToJSON', EngineHealthInfo, FullEndpointURL)
|
||||||
ResponseCode = 200
|
ResponseCode = 200
|
||||||
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
||||||
HTTP_Services('SetResponseBody', EngineJSON, False$, 'application/hal+json')
|
HTTP_Services('SetResponseBody', EngineJSON, False$, 'application/hal+json')
|
||||||
HTTP_Services('SetResponseStatus', ResponseCode)
|
HTTP_Services('SetResponseStatus', ResponseCode)
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 500, Error_Services('GetMessage'))
|
HTTP_Services('SetResponseStatus', 500, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 401, 'Invalid Engine ID.')
|
HTTP_Services('SetResponseStatus', 401, 'Invalid Engine ID.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -1,72 +1,72 @@
|
|||||||
Function Healthinfo_API(@API)
|
Function Healthinfo_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Healthinfo_API
|
Name : Healthinfo_API
|
||||||
|
|
||||||
Description : API logic for the Healthinfo resource.
|
Description : API logic for the Healthinfo resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Healthinfo[.ID.[<Property>]]
|
- APIPattern must follow this structure Healthinfo[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Healthinfo.POST
|
- Healthinfo.POST
|
||||||
- Healthinfo.ID.PUT
|
- Healthinfo.ID.PUT
|
||||||
- Healthinfo.ID.firstName.GET
|
- Healthinfo.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 xxx Original programmer.
|
07/17/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API remotehealthcheck.HEAD
|
API remotehealthcheck.HEAD
|
||||||
API remotehealthcheck.GET
|
API remotehealthcheck.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API healthinfo.HEAD
|
API healthinfo.HEAD
|
||||||
API healthinfo.GET
|
API healthinfo.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -39,6 +39,27 @@ Return Response or ""
|
|||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Service UpdateYesterdayAvail()
|
||||||
|
Today = 20702
|
||||||
|
DataArray = ''
|
||||||
|
//ASM Reactors
|
||||||
|
ASMRecordKey = 'ASM*': Today
|
||||||
|
ASMUptimeRec = Reactor_Services('GetReactorUptimeMetricsByTypeAndTimeSpan', Today, Today + 1, 'ASM')
|
||||||
|
Database_Services('WriteDataRow', 'REACTOR_DAILY_UPTIME', ASMRecordKey, ASMUptimeRec, True$, False$, True$)
|
||||||
|
//HTR Reactors
|
||||||
|
HTRRecordKey = 'HTR*': Today
|
||||||
|
HTRUptimeRec = Reactor_Services('GetReactorUptimeMetricsByTypeAndTimeSpan', Today, Today + 1, 'HTR')
|
||||||
|
Database_Services('WriteDataRow', 'REACTOR_DAILY_UPTIME', HTRRecordKey, HTRUptimeRec, True$, False$, True$)
|
||||||
|
//EPP Reactors
|
||||||
|
EPPRecordKey = 'EPP*': Today
|
||||||
|
EPPUptimeRec = Reactor_Services('GetReactorUptimeMetricsByTypeAndTimeSpan', Today, Today + 1, 'EPP')
|
||||||
|
Database_Services('WriteDataRow', 'REACTOR_DAILY_UPTIME', EPPRecordKey, EPPUptimeRec, True$, False$, True$)
|
||||||
|
//All Reactors
|
||||||
|
ALLRecordKey = 'ALL*': Today
|
||||||
|
ALLUptimeRec = Reactor_Services('GetReactorUptimeMetricsByTypeAndTimeSpan', Today, Today + 1, 'ALL')
|
||||||
|
Database_Services('WriteDataRow', 'REACTOR_DAILY_UPTIME', ALLRecordKey, ALLUptimeRec, True$, False$, True$)
|
||||||
|
end service
|
||||||
|
|
||||||
Service GetReactorNumbersByType()
|
Service GetReactorNumbersByType()
|
||||||
Debug
|
Debug
|
||||||
test = Reactor_Services('GetReactorNumbers', 'ASM')
|
test = Reactor_Services('GetReactorNumbers', 'ASM')
|
||||||
|
@ -1,167 +1,167 @@
|
|||||||
Function Lock_API(@API)
|
Function Lock_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Lock_API
|
Name : Lock_API
|
||||||
|
|
||||||
Description : API logic for the Lock resource.
|
Description : API logic for the Lock resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Lock[.ID.[<Property>]]
|
- APIPattern must follow this structure Lock[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Lock.POST
|
- Lock.POST
|
||||||
- Lock.ID.PUT
|
- Lock.ID.PUT
|
||||||
- Lock.ID.firstName.GET
|
- Lock.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
03/14/24 djm Original programmer.
|
03/14/24 djm Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
Declare function Database_Services, Oi_Wizard_Services, Memberof, Lock_Services
|
Declare function Database_Services, Oi_Wizard_Services, Memberof, Lock_Services
|
||||||
Declare subroutine Lock_Services
|
Declare subroutine Lock_Services
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API Lock.HEAD
|
API Lock.HEAD
|
||||||
|
|
||||||
|
|
||||||
// GET Method removed until RTI_LH_Info(CMD_LOCKS_INFO$, '') is fixed ////////////////////////////////
|
// GET Method removed until RTI_LH_Info(CMD_LOCKS_INFO$, '') is fixed ////////////////////////////////
|
||||||
|
|
||||||
* API Lock.GET
|
* API Lock.GET
|
||||||
*
|
*
|
||||||
* OIWizardID = ''
|
* OIWizardID = ''
|
||||||
* Cookies = HTTP_Services('GetHTTPCookie')
|
* Cookies = HTTP_Services('GetHTTPCookie')
|
||||||
* For each Cookie in Cookies using ';'
|
* For each Cookie in Cookies using ';'
|
||||||
* Key = Trim(Field(Cookie, '=', 1))
|
* Key = Trim(Field(Cookie, '=', 1))
|
||||||
* If Key EQ 'sessionID' then
|
* If Key EQ 'sessionID' then
|
||||||
* OIWizardID = Field(Cookie, '=', 2)
|
* OIWizardID = Field(Cookie, '=', 2)
|
||||||
* end
|
* end
|
||||||
* If Key EQ 'userID' then
|
* If Key EQ 'userID' then
|
||||||
* CurrUser = Field(Cookie, '=', 2)
|
* CurrUser = Field(Cookie, '=', 2)
|
||||||
* end
|
* end
|
||||||
* Next Cookie
|
* Next Cookie
|
||||||
*
|
*
|
||||||
* ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
* ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
||||||
*
|
*
|
||||||
* If ValidSession then
|
* If ValidSession then
|
||||||
*
|
*
|
||||||
* Allowed = Lock_Services("GetLockPermissions", CurrUser)
|
* Allowed = Lock_Services("GetLockPermissions", CurrUser)
|
||||||
*
|
*
|
||||||
* If Allowed NE FALSE$ then
|
* If Allowed NE FALSE$ then
|
||||||
*
|
*
|
||||||
* StatusCode = 200
|
* StatusCode = 200
|
||||||
* LockJSON = Lock_Services("GetAllowedLocks", CurrUser)
|
* LockJSON = Lock_Services("GetAllowedLocks", CurrUser)
|
||||||
*
|
*
|
||||||
* If Error_Services('NoError') then
|
* If Error_Services('NoError') then
|
||||||
* HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
* HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
||||||
* HTTP_Services('SetResponseBody', LockJSON, False$, 'application/hal+json')
|
* HTTP_Services('SetResponseBody', LockJSON, False$, 'application/hal+json')
|
||||||
* If Assigned(Message) then
|
* If Assigned(Message) then
|
||||||
* HTTP_Services('SetResponseStatus', StatusCode, Message)
|
* HTTP_Services('SetResponseStatus', StatusCode, Message)
|
||||||
* end else
|
* end else
|
||||||
* HTTP_Services('SetResponseStatus', StatusCode)
|
* HTTP_Services('SetResponseStatus', StatusCode)
|
||||||
* end
|
* end
|
||||||
* end else
|
* end else
|
||||||
* Message = Error_Services('GetMessage')
|
* Message = Error_Services('GetMessage')
|
||||||
* HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': Message)
|
* HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': Message)
|
||||||
* end
|
* end
|
||||||
* End Else
|
* End Else
|
||||||
* HTTP_Services('SetResponseStatus', 403, 'User is not permitted to access this resource.')
|
* HTTP_Services('SetResponseStatus', 403, 'User is not permitted to access this resource.')
|
||||||
* end
|
* end
|
||||||
* End else
|
* End else
|
||||||
* HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
* HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
||||||
* end
|
* end
|
||||||
*
|
*
|
||||||
* end api
|
* end api
|
||||||
|
|
||||||
|
|
||||||
API Lock.POST
|
API Lock.POST
|
||||||
|
|
||||||
OIWizardID = ''
|
OIWizardID = ''
|
||||||
Cookies = HTTP_Services('GetHTTPCookie')
|
Cookies = HTTP_Services('GetHTTPCookie')
|
||||||
For each Cookie in Cookies using ';'
|
For each Cookie in Cookies using ';'
|
||||||
Key = Trim(Field(Cookie, '=', 1))
|
Key = Trim(Field(Cookie, '=', 1))
|
||||||
If Key EQ 'sessionID' then
|
If Key EQ 'sessionID' then
|
||||||
OIWizardID = Field(Cookie, '=', 2)
|
OIWizardID = Field(Cookie, '=', 2)
|
||||||
end
|
end
|
||||||
If Key EQ 'userID' then
|
If Key EQ 'userID' then
|
||||||
CurrUser = Field(Cookie, '=', 2)
|
CurrUser = Field(Cookie, '=', 2)
|
||||||
end
|
end
|
||||||
Next Cookie
|
Next Cookie
|
||||||
|
|
||||||
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
||||||
|
|
||||||
If ValidSession then
|
If ValidSession then
|
||||||
Allowed = Lock_Services("GetLockPermissions", CurrUser)
|
Allowed = Lock_Services("GetLockPermissions", CurrUser)
|
||||||
|
|
||||||
If Allowed NE FALSE$ then
|
If Allowed NE FALSE$ then
|
||||||
StatusCode = ''
|
StatusCode = ''
|
||||||
Body = HTTP_Services('GetHTTPPostString', True$)
|
Body = HTTP_Services('GetHTTPPostString', True$)
|
||||||
// The POST string will have been encoded so use percent (URL) decoding.
|
// The POST string will have been encoded so use percent (URL) decoding.
|
||||||
DecodedJSON = HTTP_Services('DecodePercentString', Body)
|
DecodedJSON = HTTP_Services('DecodePercentString', Body)
|
||||||
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
|
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
|
||||||
Table = SRP_JSON(objBody, 'GetValue', 'table')
|
Table = SRP_JSON(objBody, 'GetValue', 'table')
|
||||||
Key = SRP_JSON(objBody, 'GetValue', 'key')
|
Key = SRP_JSON(objBody, 'GetValue', 'key')
|
||||||
SRP_JSON(objBody, 'Release')
|
SRP_JSON(objBody, 'Release')
|
||||||
end
|
end
|
||||||
|
|
||||||
If (Table NE '') AND (Key NE '') then
|
If (Table NE '') AND (Key NE '') then
|
||||||
Result = Lock_Services("AttemptUnlock",CurrUser, Table, Key)
|
Result = Lock_Services("AttemptUnlock",CurrUser, Table, Key)
|
||||||
If Result EQ TRUE$ then
|
If Result EQ TRUE$ then
|
||||||
HTTP_Services('SetResponseStatus', 200, 'Record successfully unlocked.')
|
HTTP_Services('SetResponseStatus', 200, 'Record successfully unlocked.')
|
||||||
Lock_Services("LogUnlockRequest", Table, Key, CurrUser, TRUE$)
|
Lock_Services("LogUnlockRequest", Table, Key, CurrUser, TRUE$)
|
||||||
end else
|
end else
|
||||||
ErrCode = Error_Services('GetMessage')
|
ErrCode = Error_Services('GetMessage')
|
||||||
HTTP_Services('SetResponseStatus', 500, ErrCode)
|
HTTP_Services('SetResponseStatus', 500, ErrCode)
|
||||||
Lock_Services("LogUnlockRequest", Table, Key, CurrUser, FALSE$)
|
Lock_Services("LogUnlockRequest", Table, Key, CurrUser, FALSE$)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 400, 'The table or key property is missing.')
|
HTTP_Services('SetResponseStatus', 400, 'The table or key property is missing.')
|
||||||
end
|
end
|
||||||
End Else
|
End Else
|
||||||
HTTP_Services('SetResponseStatus', 403, 'User is not permitted to access this resource.')
|
HTTP_Services('SetResponseStatus', 403, 'User is not permitted to access this resource.')
|
||||||
end
|
end
|
||||||
End else
|
End else
|
||||||
HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,372 +1,372 @@
|
|||||||
Compile function Lock_Services(@Service, @Params)
|
Compile function Lock_Services(@Service, @Params)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
Name : Lock_Services
|
Name : Lock_Services
|
||||||
|
|
||||||
Description : Handler program for all Lock services.
|
Description : Handler program for all Lock services.
|
||||||
|
|
||||||
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
||||||
assumptions built into way errors are managed which are important to understand in order to properly
|
assumptions built into way errors are managed which are important to understand in order to properly
|
||||||
work with Error Services:
|
work with Error Services:
|
||||||
|
|
||||||
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
||||||
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
||||||
this will appear backwards since the originating procedure always appears at the bottom of the
|
this will appear backwards since the originating procedure always appears at the bottom of the
|
||||||
list and the current routine appears at the top of the list. We are using this orientation because
|
list and the current routine appears at the top of the list. We are using this orientation because
|
||||||
it is common to refer to the process of calling other procedures as 'drilling down'.
|
it is common to refer to the process of calling other procedures as 'drilling down'.
|
||||||
|
|
||||||
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
||||||
multiple error conditions to be appended to an original error. In most cases this will happen when
|
multiple error conditions to be appended to an original error. In most cases this will happen when
|
||||||
a procedure at the bottom of the stack generates an error condition and then returns to its
|
a procedure at the bottom of the stack generates an error condition and then returns to its
|
||||||
calling procedure. This higher level procedure can optionally add more information relevant to
|
calling procedure. This higher level procedure can optionally add more information relevant to
|
||||||
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
||||||
originating procedure is waiting.
|
originating procedure is waiting.
|
||||||
|
|
||||||
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
||||||
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
||||||
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
||||||
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
||||||
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
||||||
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
||||||
philosophy then it should include a call into the 'Clear' service request at the top of the
|
philosophy then it should include a call into the 'Clear' service request at the top of the
|
||||||
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
||||||
|
|
||||||
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
||||||
error conditions that were set before.
|
error conditions that were set before.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
Service [in] -- Name of the service being requested
|
Service [in] -- Name of the service being requested
|
||||||
Param1-10 [in/out] -- Additional request parameter holders
|
Param1-10 [in/out] -- Additional request parameter holders
|
||||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||||
|
|
||||||
Metadata :
|
Metadata :
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
3/18/24 djm Original programmer.
|
3/18/24 djm Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
$insert LOGICAL
|
$insert LOGICAL
|
||||||
$Insert SERVICE_SETUP
|
$Insert SERVICE_SETUP
|
||||||
$Insert UNLOCK_REQUESTS_EQUATES
|
$Insert UNLOCK_REQUESTS_EQUATES
|
||||||
$Insert REACT_RUN_EQUATES
|
$Insert REACT_RUN_EQUATES
|
||||||
$Insert WO_MAT_EQUATES
|
$Insert WO_MAT_EQUATES
|
||||||
$Insert WM_OUT_EQUATES
|
$Insert WM_OUT_EQUATES
|
||||||
$Insert RDS_EQUATES
|
$Insert RDS_EQUATES
|
||||||
$Insert RDS_LAYER_EQUATES
|
$Insert RDS_LAYER_EQUATES
|
||||||
|
|
||||||
Declare function Database_Services, Oi_Wizard_Services, Memberof, Lock_Services, SRP_Json, List_Volume_Sub, Datetime
|
Declare function Database_Services, Oi_Wizard_Services, Memberof, Lock_Services, SRP_Json, List_Volume_Sub, Datetime
|
||||||
Declare subroutine SRP_Json, Database_Services
|
Declare subroutine SRP_Json, Database_Services
|
||||||
|
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// GetLockPermissions
|
// GetLockPermissions
|
||||||
//
|
//
|
||||||
// CurrUser - [Required]
|
// CurrUser - [Required]
|
||||||
//
|
//
|
||||||
// Returns LockPermissionLevel 0 - No lock access, 1 - Lock access to unprotected tables, or 2 - Lock access to all tables.
|
// Returns LockPermissionLevel 0 - No lock access, 1 - Lock access to unprotected tables, or 2 - Lock access to all tables.
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service GetLockPermissions(CurrUser)
|
Service GetLockPermissions(CurrUser)
|
||||||
|
|
||||||
LockPermissionLevel = 0
|
LockPermissionLevel = 0
|
||||||
OIAdmin = Memberof(CurrUser, 'OI_ADMIN')
|
OIAdmin = Memberof(CurrUser, 'OI_ADMIN')
|
||||||
SupervisorLead = MemberOf(CurrUser, 'LEAD') OR MemberOf(CurrUser, 'SUPERVISOR')
|
SupervisorLead = MemberOf(CurrUser, 'LEAD') OR MemberOf(CurrUser, 'SUPERVISOR')
|
||||||
If OIAdmin then
|
If OIAdmin then
|
||||||
LockPermissionLevel = 2
|
LockPermissionLevel = 2
|
||||||
end else
|
end else
|
||||||
If SupervisorLead then
|
If SupervisorLead then
|
||||||
LockPermissionLevel = 1
|
LockPermissionLevel = 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Response = LockPermissionLevel
|
Response = LockPermissionLevel
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// GetAllowedLocks
|
// GetAllowedLocks
|
||||||
//
|
//
|
||||||
// CurrUser - [Required]
|
// CurrUser - [Required]
|
||||||
//
|
//
|
||||||
// Returns an array of accessible locks based on user LockPermissionLevel
|
// Returns an array of accessible locks based on user LockPermissionLevel
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service GetAllowedLocks(CurrUser)
|
Service GetAllowedLocks(CurrUser)
|
||||||
|
|
||||||
LockPermissionLevel = Lock_Services('GetLockPermissions', CurrUser)
|
LockPermissionLevel = Lock_Services('GetLockPermissions', CurrUser)
|
||||||
LockJSON = ''
|
LockJSON = ''
|
||||||
|
|
||||||
If LockPermissionLevel NE 0 then
|
If LockPermissionLevel NE 0 then
|
||||||
|
|
||||||
LockList = Database_Services('GetUserLocks')
|
LockList = Database_Services('GetUserLocks')
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
If SRP_JSON(objJSON, 'New', 'Object') then
|
If SRP_JSON(objJSON, 'New', 'Object') then
|
||||||
If SRP_JSON(LockArray, 'New', 'Array') then
|
If SRP_JSON(LockArray, 'New', 'Array') then
|
||||||
For each Row in LockList using @FM setting fPos
|
For each Row in LockList using @FM setting fPos
|
||||||
If Row<0,3> = "Rev30536" then Row<0,3> = 'RDS*LSL2'
|
If Row<0,3> = "Rev30536" then Row<0,3> = 'RDS*LSL2'
|
||||||
If Field(Row<0,3>, "*", 2) EQ 'LSL2' OR LockPermissionLevel EQ 2 then
|
If Field(Row<0,3>, "*", 2) EQ 'LSL2' OR LockPermissionLevel EQ 2 then
|
||||||
If SRP_JSON(objRow, 'New', 'Object') then
|
If SRP_JSON(objRow, 'New', 'Object') then
|
||||||
SRP_JSON(objRow, 'SetValue', 'ComputerName', Row<0, 1>)
|
SRP_JSON(objRow, 'SetValue', 'ComputerName', Row<0, 1>)
|
||||||
SRP_JSON(objRow, 'SetValue', 'Volume', Row<0, 2>)
|
SRP_JSON(objRow, 'SetValue', 'Volume', Row<0, 2>)
|
||||||
If Field(Row<0,3>, "*", 2) EQ 'LSL2' then Row<0,3> = Field(Row<0,3>, "*", 1)
|
If Field(Row<0,3>, "*", 2) EQ 'LSL2' then Row<0,3> = Field(Row<0,3>, "*", 1)
|
||||||
SRP_JSON(objRow, 'SetValue', 'OSFile', Row<0, 3>)
|
SRP_JSON(objRow, 'SetValue', 'OSFile', Row<0, 3>)
|
||||||
SRP_JSON(objRow, 'SetValue', 'RecordKey', Row<0, 4>, "String")
|
SRP_JSON(objRow, 'SetValue', 'RecordKey', Row<0, 4>, "String")
|
||||||
SRP_JSON(objRow, 'SetValue', 'Exclusive', Row<0, 5>)
|
SRP_JSON(objRow, 'SetValue', 'Exclusive', Row<0, 5>)
|
||||||
SRP_JSON(objRow, 'SetValue', 'REVFile', Row<0, 6>)
|
SRP_JSON(objRow, 'SetValue', 'REVFile', Row<0, 6>)
|
||||||
SRP_JSON(LockArray, 'Add', objRow)
|
SRP_JSON(LockArray, 'Add', objRow)
|
||||||
SRP_JSON(objRow, 'Release')
|
SRP_JSON(objRow, 'Release')
|
||||||
end
|
end
|
||||||
End
|
End
|
||||||
Next Row
|
Next Row
|
||||||
SRP_JSON(objJSON, 'Set', 'Locks', LockArray)
|
SRP_JSON(objJSON, 'Set', 'Locks', LockArray)
|
||||||
SRP_JSON(LockArray, 'Release')
|
SRP_JSON(LockArray, 'Release')
|
||||||
end
|
end
|
||||||
LockJSON = SRP_JSON(objJSON, 'Stringify', 'Styled')
|
LockJSON = SRP_JSON(objJSON, 'Stringify', 'Styled')
|
||||||
SRP_JSON(objJSON, 'Release')
|
SRP_JSON(objJSON, 'Release')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
End
|
End
|
||||||
|
|
||||||
Response = LockJSON
|
Response = LockJSON
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// AttemptUnlock
|
// AttemptUnlock
|
||||||
//
|
//
|
||||||
// CurrUser - [Required]
|
// CurrUser - [Required]
|
||||||
// LotType - [Required]
|
// LotType - [Required]
|
||||||
// Key - [Required]
|
// Key - [Required]
|
||||||
//
|
//
|
||||||
// Returns either 1 for success, or error message
|
// Returns either 1 for success, or error message
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Service AttemptUnlock(CurrUser, LotType, Key)
|
Service AttemptUnlock(CurrUser, LotType, Key)
|
||||||
|
|
||||||
LockPermissionLevel = Lock_Services('GetLockPermissions', CurrUser)
|
LockPermissionLevel = Lock_Services('GetLockPermissions', CurrUser)
|
||||||
If LockPermissionLevel NE 0 then
|
If LockPermissionLevel NE 0 then
|
||||||
If LotType EQ 'RDS' or LotType EQ 'WM_OUT' then
|
If LotType EQ 'RDS' or LotType EQ 'WM_OUT' then
|
||||||
If Xlate(LotType, Key, '', 'X', '') NE '' then
|
If Xlate(LotType, Key, '', 'X', '') NE '' then
|
||||||
LockArray = Lock_Services('GetChildRecords', LotType, Key)
|
LockArray = Lock_Services('GetChildRecords', LotType, Key)
|
||||||
LockCount = DCount(LockArray<1>, @VM)
|
LockCount = DCount(LockArray<1>, @VM)
|
||||||
For I = 1 to LockCount
|
For I = 1 to LockCount
|
||||||
Table = LockArray<1,I>
|
Table = LockArray<1,I>
|
||||||
KeyID = LockArray<2,I>
|
KeyID = LockArray<2,I>
|
||||||
Resp = Database_Services('UnlockKeyID', Table, KeyID)
|
Resp = Database_Services('UnlockKeyID', Table, KeyID)
|
||||||
Next I
|
Next I
|
||||||
If Error_Services('NoError') Then
|
If Error_Services('NoError') Then
|
||||||
Response = TRUE$
|
Response = TRUE$
|
||||||
end else
|
end else
|
||||||
Response = FALSE$
|
Response = FALSE$
|
||||||
Error_Services('Add', 'Records failed to unlock.')
|
Error_Services('Add', 'Records failed to unlock.')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Response = FALSE$
|
Response = FALSE$
|
||||||
Error_Services('Add', 'This record does not exist.')
|
Error_Services('Add', 'This record does not exist.')
|
||||||
end
|
end
|
||||||
End Else
|
End Else
|
||||||
Response = FALSE$
|
Response = FALSE$
|
||||||
Error_Services('Add', 'LotType must be either RDS or WM_OUT.')
|
Error_Services('Add', 'LotType must be either RDS or WM_OUT.')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Response = FALSE$
|
Response = FALSE$
|
||||||
Error_Services('Add', 'User is not permitted to access this resource.')
|
Error_Services('Add', 'User is not permitted to access this resource.')
|
||||||
end
|
end
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// GetChildRecords
|
// GetChildRecords
|
||||||
//
|
//
|
||||||
// LotType - [Required]
|
// LotType - [Required]
|
||||||
// Key - [Required]
|
// Key - [Required]
|
||||||
//
|
//
|
||||||
// Returns an array of associated child records for unlocking
|
// Returns an array of associated child records for unlocking
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Service GetChildRecords(LotType, Key)
|
Service GetChildRecords(LotType, Key)
|
||||||
|
|
||||||
RecordArray = ''
|
RecordArray = ''
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case LotType EQ 'RDS'
|
Case LotType EQ 'RDS'
|
||||||
RDSRec = Xlate('RDS', Key, '', 'X', '')
|
RDSRec = Xlate('RDS', Key, '', 'X', '')
|
||||||
If RDSRec NE '' then
|
If RDSRec NE '' then
|
||||||
//Add RDS key
|
//Add RDS key
|
||||||
RecordArray<1> = LotType
|
RecordArray<1> = LotType
|
||||||
RecordArray<2> = Key
|
RecordArray<2> = Key
|
||||||
//Get REACT_RUN record
|
//Get REACT_RUN record
|
||||||
ReactRunRec = Xlate('REACT_RUN', Key, '', 'X', '')
|
ReactRunRec = Xlate('REACT_RUN', Key, '', 'X', '')
|
||||||
//Get and Add CLEAN_INSP keys
|
//Get and Add CLEAN_INSP keys
|
||||||
CINos = ReactRunRec<REACT_RUN_CI_NO$>
|
CINos = ReactRunRec<REACT_RUN_CI_NO$>
|
||||||
If CINos NE '' then
|
If CINos NE '' then
|
||||||
CICount = Dcount(CINos, @VM)
|
CICount = Dcount(CINos, @VM)
|
||||||
For I = 1 to CICount
|
For I = 1 to CICount
|
||||||
If CINos<I> NE '' then
|
If CINos<I> NE '' then
|
||||||
RecordArray<1,-1> = 'CLEAN_INSP'
|
RecordArray<1,-1> = 'CLEAN_INSP'
|
||||||
RecordArray<2,-1> = CINos<I>
|
RecordArray<2,-1> = CINos<I>
|
||||||
end
|
end
|
||||||
Next I
|
Next I
|
||||||
end
|
end
|
||||||
//Get and Add RDS_TEST keys
|
//Get and Add RDS_TEST keys
|
||||||
RDSLayerKeys = ReactRunRec<REACT_RUN_RDS_LAYER_KEYS$>
|
RDSLayerKeys = ReactRunRec<REACT_RUN_RDS_LAYER_KEYS$>
|
||||||
If RDSLayerKeys NE '' then
|
If RDSLayerKeys NE '' then
|
||||||
LayerKeyCount = DCount(RDSLayerKeys, @VM)
|
LayerKeyCount = DCount(RDSLayerKeys, @VM)
|
||||||
For K = 1 to LayerKeyCount
|
For K = 1 to LayerKeyCount
|
||||||
RDSTestKeys = Xlate('RDS_LAYER', RDSLayerKeys<K>, 'RDS_TEST_KEYS', 'X', '')
|
RDSTestKeys = Xlate('RDS_LAYER', RDSLayerKeys<K>, 'RDS_TEST_KEYS', 'X', '')
|
||||||
If RDSTestKeys NE '' then
|
If RDSTestKeys NE '' then
|
||||||
RDSTestCount = DCount(RDSTestKeys, @VM)
|
RDSTestCount = DCount(RDSTestKeys, @VM)
|
||||||
For L = 1 to RDSTestCount
|
For L = 1 to RDSTestCount
|
||||||
If RDSTestKeys<K,L> NE '' then
|
If RDSTestKeys<K,L> NE '' then
|
||||||
RecordArray<1,-1> = 'RDS_TEST'
|
RecordArray<1,-1> = 'RDS_TEST'
|
||||||
RecordArray<2,-1> = RDSTestKeys<K,L>
|
RecordArray<2,-1> = RDSTestKeys<K,L>
|
||||||
end
|
end
|
||||||
Next L
|
Next L
|
||||||
end
|
end
|
||||||
Next K
|
Next K
|
||||||
end
|
end
|
||||||
//Get WO_MAT key
|
//Get WO_MAT key
|
||||||
WONo = RDSRec<RDS_WO$>
|
WONo = RDSRec<RDS_WO$>
|
||||||
CassNo = RDSRec<RDS_CASS_NO$>
|
CassNo = RDSRec<RDS_CASS_NO$>
|
||||||
WOMatKey = WONo : '*' : CassNo
|
WOMatKey = WONo : '*' : CassNo
|
||||||
//Get and Add WO_MAT_QA
|
//Get and Add WO_MAT_QA
|
||||||
WOMatQA = Xlate('WO_MAT_QA', WOMatKey, '', 'X', '')
|
WOMatQA = Xlate('WO_MAT_QA', WOMatKey, '', 'X', '')
|
||||||
If WOMatQA NE '' then
|
If WOMatQA NE '' then
|
||||||
RecordArray<1,-1> = 'WO_MAT_QA'
|
RecordArray<1,-1> = 'WO_MAT_QA'
|
||||||
RecordArray<2,-1> = WOMatKey
|
RecordArray<2,-1> = WOMatKey
|
||||||
End
|
End
|
||||||
//Get and Add NCR keys
|
//Get and Add NCR keys
|
||||||
NCRKeys = Xlate('WO_MAT', WOMatKey, 'NCR_KEYS', 'X', '')
|
NCRKeys = Xlate('WO_MAT', WOMatKey, 'NCR_KEYS', 'X', '')
|
||||||
If NCRKeys NE '' then
|
If NCRKeys NE '' then
|
||||||
NCRCount = Dcount(NCRKeys, @VM)
|
NCRCount = Dcount(NCRKeys, @VM)
|
||||||
For J = 1 to NCRCount
|
For J = 1 to NCRCount
|
||||||
If NCRKeys<J> NE '' then
|
If NCRKeys<J> NE '' then
|
||||||
RecordArray<1,-1> = 'NCR'
|
RecordArray<1,-1> = 'NCR'
|
||||||
RecordArray<2,-1> = NCRKeys<J>
|
RecordArray<2,-1> = NCRKeys<J>
|
||||||
end
|
end
|
||||||
Next J
|
Next J
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'This RDS does not exist.')
|
Error_Services('Add', 'This RDS does not exist.')
|
||||||
Return
|
Return
|
||||||
end
|
end
|
||||||
|
|
||||||
Case LotType EQ 'WM_OUT'
|
Case LotType EQ 'WM_OUT'
|
||||||
WMOutRec = Xlate('WM_OUT', Key, '', 'X', '')
|
WMOutRec = Xlate('WM_OUT', Key, '', 'X', '')
|
||||||
If WMOutRec NE '' then
|
If WMOutRec NE '' then
|
||||||
//Add WM_OUT key
|
//Add WM_OUT key
|
||||||
RecordArray<1> = LotType
|
RecordArray<1> = LotType
|
||||||
RecordArray<2> = Key
|
RecordArray<2> = Key
|
||||||
//Get and Add CLEAN_INSP keys
|
//Get and Add CLEAN_INSP keys
|
||||||
CINos = WMOutRec<WM_OUT_CI_NO$>
|
CINos = WMOutRec<WM_OUT_CI_NO$>
|
||||||
If CINos NE '' then
|
If CINos NE '' then
|
||||||
CICount = Dcount(CINos, @VM)
|
CICount = Dcount(CINos, @VM)
|
||||||
For I = 1 to CICount
|
For I = 1 to CICount
|
||||||
If CINos<I> NE '' then
|
If CINos<I> NE '' then
|
||||||
RecordArray<1,-1> = 'CLEAN_INSP'
|
RecordArray<1,-1> = 'CLEAN_INSP'
|
||||||
RecordArray<2,-1> = CINos<I>
|
RecordArray<2,-1> = CINos<I>
|
||||||
end
|
end
|
||||||
Next I
|
Next I
|
||||||
end
|
end
|
||||||
//Get WO_MAT key
|
//Get WO_MAT key
|
||||||
WONo = FIELD(Key,'*',1)
|
WONo = FIELD(Key,'*',1)
|
||||||
CassNo = FIELD(Key,'*',3)
|
CassNo = FIELD(Key,'*',3)
|
||||||
WOMatKey = WONo : '*' : CassNo
|
WOMatKey = WONo : '*' : CassNo
|
||||||
//Get and Add WO_MAT_QA key
|
//Get and Add WO_MAT_QA key
|
||||||
WOMatQA = Xlate('WO_MAT_QA', WOMatKey, '', 'X', '')
|
WOMatQA = Xlate('WO_MAT_QA', WOMatKey, '', 'X', '')
|
||||||
If WOMatQA NE '' then
|
If WOMatQA NE '' then
|
||||||
RecordArray<1,-1> = 'WO_MAT_QA'
|
RecordArray<1,-1> = 'WO_MAT_QA'
|
||||||
RecordArray<2,-1> = WOMatKey
|
RecordArray<2,-1> = WOMatKey
|
||||||
End
|
End
|
||||||
//Get and Add NCR keys
|
//Get and Add NCR keys
|
||||||
NCRKeys = Xlate('WO_MAT', WOMatKey, 'NCR_KEYS', 'X', '')
|
NCRKeys = Xlate('WO_MAT', WOMatKey, 'NCR_KEYS', 'X', '')
|
||||||
If NCRKeys NE '' then
|
If NCRKeys NE '' then
|
||||||
NCRCount = Dcount(NCRKeys, @VM)
|
NCRCount = Dcount(NCRKeys, @VM)
|
||||||
For J = 1 to NCRCount
|
For J = 1 to NCRCount
|
||||||
If NCRKeys<J> NE '' then
|
If NCRKeys<J> NE '' then
|
||||||
RecordArray<1,-1> = 'NCR'
|
RecordArray<1,-1> = 'NCR'
|
||||||
RecordArray<2,-1> = NCRKeys<J>
|
RecordArray<2,-1> = NCRKeys<J>
|
||||||
end
|
end
|
||||||
Next J
|
Next J
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'This WM_OUT does not exist.')
|
Error_Services('Add', 'This WM_OUT does not exist.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Case OTHERWISE$
|
Case OTHERWISE$
|
||||||
Error_Services('Add', 'LotType must be either RDS or WM_OUT.')
|
Error_Services('Add', 'LotType must be either RDS or WM_OUT.')
|
||||||
return
|
return
|
||||||
|
|
||||||
End Case
|
End Case
|
||||||
|
|
||||||
If RecordArray NE '' then
|
If RecordArray NE '' then
|
||||||
Response = RecordArray
|
Response = RecordArray
|
||||||
end
|
end
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// GetUnprotectedTables
|
// GetUnprotectedTables
|
||||||
//
|
//
|
||||||
// Returns an array of unprotected tables
|
// Returns an array of unprotected tables
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service GetUnprotectedTables()
|
Service GetUnprotectedTables()
|
||||||
|
|
||||||
TableArray = List_Volume_Sub('LSL', '', 'TABLE_NAME', 'TABLE_NAME')
|
TableArray = List_Volume_Sub('LSL', '', 'TABLE_NAME', 'TABLE_NAME')
|
||||||
UnprotectedArray = ''
|
UnprotectedArray = ''
|
||||||
For Each Table in TableArray Using @FM
|
For Each Table in TableArray Using @FM
|
||||||
If Table[1,1] NE '!' AND Table[1,5] NE 'DICT.' then
|
If Table[1,1] NE '!' AND Table[1,5] NE 'DICT.' then
|
||||||
UnprotectedArray<-1> = Table
|
UnprotectedArray<-1> = Table
|
||||||
end
|
end
|
||||||
Next Table
|
Next Table
|
||||||
|
|
||||||
Response = UnprotectedArray
|
Response = UnprotectedArray
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
// LogUnlockRequest
|
// LogUnlockRequest
|
||||||
//
|
//
|
||||||
// CurrUser - [Required]
|
// CurrUser - [Required]
|
||||||
// TableName - [Required]
|
// TableName - [Required]
|
||||||
// RecordKey - [Required]
|
// RecordKey - [Required]
|
||||||
// Success - [Required]
|
// Success - [Required]
|
||||||
//
|
//
|
||||||
// Creates an UNLOCK_REQUESTS record to log unlock attempts.
|
// Creates an UNLOCK_REQUESTS record to log unlock attempts.
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service LogUnlockRequest(TableName, RecordKey, CurrUser, Success)
|
Service LogUnlockRequest(TableName, RecordKey, CurrUser, Success)
|
||||||
|
|
||||||
NewRequestRec = ''
|
NewRequestRec = ''
|
||||||
CurrDateTime = Datetime()
|
CurrDateTime = Datetime()
|
||||||
RecordID = CurrDateTime :'*': TableName
|
RecordID = CurrDateTime :'*': TableName
|
||||||
NewRequestRec<UNLOCK_REQUESTS_RECORD_KEY$> = RecordKey
|
NewRequestRec<UNLOCK_REQUESTS_RECORD_KEY$> = RecordKey
|
||||||
NewRequestRec<UNLOCK_REQUESTS_USER_NAME$> = CurrUser
|
NewRequestRec<UNLOCK_REQUESTS_USER_NAME$> = CurrUser
|
||||||
NewRequestRec<UNLOCK_REQUESTS_SUCCESS$> = Success
|
NewRequestRec<UNLOCK_REQUESTS_SUCCESS$> = Success
|
||||||
Database_Services('WriteDataRow', 'UNLOCK_REQUESTS', RecordID, NewRequestRec, 1, 0, 0)
|
Database_Services('WriteDataRow', 'UNLOCK_REQUESTS', RecordID, NewRequestRec, 1, 0, 0)
|
||||||
|
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,206 +1,206 @@
|
|||||||
Function MAKEUP_WAFERS_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
|
Function MAKEUP_WAFERS_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : Makeup_Wafers_Actions
|
Name : Makeup_Wafers_Actions
|
||||||
|
|
||||||
Description : Handles calculated columns and MFS calls for the current table.
|
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.
|
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.
|
If called from outside of a calculated column these will need to be set and restored.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
Action [in] -- Name of the action to be taken
|
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
|
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.
|
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
|
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
|
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.
|
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
|
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
|
entire handle structure that the Basic+ Open statement would provide. Normally set by a
|
||||||
calling MFS.
|
calling MFS.
|
||||||
Name [in] -- The name (key) of the record or file being accessed. 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.
|
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
|
Record [in] -- The entire record (for record-oriented functions) or a newly-created handle (for
|
||||||
"get handle" functions). Normally set by a calling MFS.
|
"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
|
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.
|
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
|
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
|
automatically being assigned by the WRITE_RECORD and DELETE_RECORD actions within
|
||||||
BASE_MFS.
|
BASE_MFS.
|
||||||
Param1-10 [in/out] -- Additional request parameter holders
|
Param1-10 [in/out] -- Additional request parameter holders
|
||||||
ActionFlow [out] -- Used to control the action chain (see the ACTION_SETUP insert for more information.)
|
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
|
Can also be used to return a special value, such as the results of the CalcField
|
||||||
method.
|
method.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/09/24 djs Original programmer.
|
07/09/24 djs Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert FILE.SYSTEM.EQUATES
|
$insert FILE.SYSTEM.EQUATES
|
||||||
$insert ACTION_SETUP
|
$insert ACTION_SETUP
|
||||||
$insert MAKEUP_WAFERS_EQUATES
|
$insert MAKEUP_WAFERS_EQUATES
|
||||||
|
|
||||||
Declare function SRP_Date
|
Declare function SRP_Date
|
||||||
|
|
||||||
If KeyID then GoSub Initialize_System_Variables
|
If KeyID then GoSub Initialize_System_Variables
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
|
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
|
||||||
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
|
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
|
||||||
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
|
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
|
||||||
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
|
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
|
||||||
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
|
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
|
||||||
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
|
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
|
||||||
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
|
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
|
||||||
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
|
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
|
||||||
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
|
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
|
||||||
Case Otherwise$ ; Status = 'Invalid Action'
|
Case Otherwise$ ; Status = 'Invalid Action'
|
||||||
|
|
||||||
End Case
|
End Case
|
||||||
|
|
||||||
If KeyID then GoSub Restore_System_Variables
|
If KeyID then GoSub Restore_System_Variables
|
||||||
|
|
||||||
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
|
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
|
||||||
|
|
||||||
Return ActionFlow
|
Return ActionFlow
|
||||||
|
|
||||||
|
|
||||||
// ----- Calculated Columns --------------------------------------------------------------------------------------------
|
// ----- Calculated Columns --------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// The typical structure of a calculated column will look like this:
|
// The typical structure of a calculated column will look like this:
|
||||||
//
|
//
|
||||||
// Declare function TableName_Actions
|
// Declare function TableName_Actions
|
||||||
//
|
//
|
||||||
// A = {COL1} ; * Reference as many data columns in this way to ensure the dictionary dependency is generated.
|
// A = {COL1} ; * Reference as many data columns in this way to ensure the dictionary dependency is generated.
|
||||||
//
|
//
|
||||||
// @ANS = TableName_Actions('CalcField', 'CalcColName')
|
// @ANS = TableName_Actions('CalcField', 'CalcColName')
|
||||||
//
|
//
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
CalculateColumn:
|
CalculateColumn:
|
||||||
|
|
||||||
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
|
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
|
||||||
ActionFlow = ''
|
ActionFlow = ''
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
Case CalcColName EQ 'EXAMPLE' ; GoSub EXAMPLE
|
Case CalcColName EQ 'EXAMPLE' ; GoSub EXAMPLE
|
||||||
End Case
|
End Case
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
EXAMPLE:
|
EXAMPLE:
|
||||||
|
|
||||||
ActionFlow = ''
|
ActionFlow = ''
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
// ----- MFS calls -----------------------------------------------------------------------------------------------------
|
// ----- MFS calls -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
READ_RECORD_PRE:
|
READ_RECORD_PRE:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
// ActionFlow = ACTION_STOP$
|
// ActionFlow = ACTION_STOP$
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
READ_RECORD:
|
READ_RECORD:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
return
|
return
|
||||||
|
|
||||||
READONLY_RECORD_PRE:
|
READONLY_RECORD_PRE:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
// ActionFlow = ACTION_STOP$
|
// ActionFlow = ACTION_STOP$
|
||||||
return
|
return
|
||||||
|
|
||||||
READONLY_RECORD:
|
READONLY_RECORD:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
return
|
return
|
||||||
|
|
||||||
WRITE_RECORD_PRE:
|
WRITE_RECORD_PRE:
|
||||||
|
|
||||||
SaveRecord<MAKEUP_WAFERS.EXPIRED$> = ( {UNLOAD_DTM} LT SRP_Date('AddYears', Date(), -3) )
|
SaveRecord<MAKEUP_WAFERS.EXPIRED$> = ( {UNLOAD_DTM} LT SRP_Date('AddYears', Date(), -3) )
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
WRITE_RECORD:
|
WRITE_RECORD:
|
||||||
return
|
return
|
||||||
|
|
||||||
DELETE_RECORD_PRE:
|
DELETE_RECORD_PRE:
|
||||||
return
|
return
|
||||||
|
|
||||||
DELETE_RECORD:
|
DELETE_RECORD:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
// ----- Internal Methods ----------------------------------------------------------------------------------------------
|
// ----- Internal Methods ----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Initialize_System_Variables:
|
Initialize_System_Variables:
|
||||||
// Save these for restoration later
|
// Save these for restoration later
|
||||||
SaveDict = @DICT
|
SaveDict = @DICT
|
||||||
SaveID = @ID
|
SaveID = @ID
|
||||||
SaveRecord = @RECORD
|
SaveRecord = @RECORD
|
||||||
OrigFileError = @FILE.ERROR
|
OrigFileError = @FILE.ERROR
|
||||||
|
|
||||||
// Now make sure @DICT, ID, and @RECORD are populated
|
// Now make sure @DICT, ID, and @RECORD are populated
|
||||||
CurrentDictName = ''
|
CurrentDictName = ''
|
||||||
If @DICT then
|
If @DICT then
|
||||||
DictHandle = @DICT<1, 2>
|
DictHandle = @DICT<1, 2>
|
||||||
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
|
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
|
||||||
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
|
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
If CurrentDictName NE DictName then
|
If CurrentDictName NE DictName then
|
||||||
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
|
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
|
||||||
end
|
end
|
||||||
|
|
||||||
@ID = KeyID
|
@ID = KeyID
|
||||||
If Record else
|
If Record else
|
||||||
// Record might not have been passed in. Read the record from the database table just to make sure.
|
// Record might not have been passed in. Read the record from the database table just to make sure.
|
||||||
@FILE.ERROR = ''
|
@FILE.ERROR = ''
|
||||||
Open TableName to hTable then
|
Open TableName to hTable then
|
||||||
FullFSList = hTable[1, 'F' : @VM]
|
FullFSList = hTable[1, 'F' : @VM]
|
||||||
BFS = FullFSList[-1, 'B' : @SVM]
|
BFS = FullFSList[-1, 'B' : @SVM]
|
||||||
LastHandle = hTable[-1, 'B' : \0D\]
|
LastHandle = hTable[-1, 'B' : \0D\]
|
||||||
FileHandle = \0D\ : LastHandle[1, @VM]
|
FileHandle = \0D\ : LastHandle[1, @VM]
|
||||||
|
|
||||||
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
|
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@RECORD = Record
|
@RECORD = Record
|
||||||
return
|
return
|
||||||
|
|
||||||
Restore_System_Variables:
|
Restore_System_Variables:
|
||||||
Transfer SaveDict to @DICT
|
Transfer SaveDict to @DICT
|
||||||
Transfer SaveID to @ID
|
Transfer SaveID to @ID
|
||||||
Transfer SaveRecord to @RECORD
|
Transfer SaveRecord to @RECORD
|
||||||
@FILE.ERROR = OrigFileError
|
@FILE.ERROR = OrigFileError
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,46 +1,46 @@
|
|||||||
Compile Function MITCHEM_TEST_Events(CtrlEntId, Event, @PARAMS)
|
Compile Function MITCHEM_TEST_Events(CtrlEntId, Event, @PARAMS)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
#window MITCHEM_TEST
|
#window MITCHEM_TEST
|
||||||
|
|
||||||
Declare function Get_Property, Reactor_Services, Database_Services
|
Declare function Get_Property, Reactor_Services, Database_Services
|
||||||
Declare subroutine Set_Property, RList, Msg , Reactor_Services, End_Window, Post_Event
|
Declare subroutine Set_Property, RList, Msg , Reactor_Services, End_Window, Post_Event
|
||||||
|
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert EVENT_SETUP
|
$Insert EVENT_SETUP
|
||||||
$Insert REACTOR_EQUATES
|
$Insert REACTOR_EQUATES
|
||||||
$insert logical
|
$insert logical
|
||||||
$Insert RLIST_EQUATES
|
$Insert RLIST_EQUATES
|
||||||
$Insert REACTOR_MODES_EQUATES
|
$Insert REACTOR_MODES_EQUATES
|
||||||
$Insert REACT_MODE_NG_EQUATES
|
$Insert REACT_MODE_NG_EQUATES
|
||||||
$Insert MSG_EQUATES
|
$Insert MSG_EQUATES
|
||||||
|
|
||||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||||
If Event EQ 'OLE' then
|
If Event EQ 'OLE' then
|
||||||
Transfer Event to OIEvent
|
Transfer Event to OIEvent
|
||||||
Transfer Param1 to Event
|
Transfer Param1 to Event
|
||||||
Transfer Param2 to Param1
|
Transfer Param2 to Param1
|
||||||
Transfer Param3 to Param2
|
Transfer Param3 to Param2
|
||||||
Transfer Param4 to Param3
|
Transfer Param4 to Param3
|
||||||
Transfer Param5 to Param4
|
Transfer Param5 to Param4
|
||||||
Transfer Param6 to Param5
|
Transfer Param6 to Param5
|
||||||
Transfer Param7 to Param6
|
Transfer Param7 to Param6
|
||||||
Transfer Param8 to Param7
|
Transfer Param8 to Param7
|
||||||
end
|
end
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntId else
|
GoToEvent Event for CtrlEntId else
|
||||||
// Event not implemented
|
// Event not implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
Return EventFlow or 1
|
Return EventFlow or 1
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
debug
|
debug
|
||||||
Set_Property(@Window, 'BACKCOLOR', -2)
|
Set_Property(@Window, 'BACKCOLOR', -2)
|
||||||
Color = Get_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR')
|
Color = Get_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR')
|
||||||
//Set_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR', -2)
|
//Set_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR', -2)
|
||||||
Color = Get_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR')
|
Color = Get_Property(@Window:'.EB_SPEC_SUBSTRATE', 'BACKCOLOR')
|
||||||
EventFlow = 1
|
EventFlow = 1
|
||||||
|
|
||||||
End Event
|
End Event
|
||||||
|
@ -1,138 +1,138 @@
|
|||||||
Function Monaengines_API(@API)
|
Function Monaengines_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Monaengines_API
|
Name : Monaengines_API
|
||||||
|
|
||||||
Description : API logic for the Monaengines resource.
|
Description : API logic for the Monaengines resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Monaengines[.ID.[<Property>]]
|
- APIPattern must follow this structure Monaengines[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Monaengines.POST
|
- Monaengines.POST
|
||||||
- Monaengines.ID.PUT
|
- Monaengines.ID.PUT
|
||||||
- Monaengines.ID.firstName.GET
|
- Monaengines.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 xxx Original programmer.
|
07/17/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
$insert ENGINE_HEALTH_EQUATES
|
$insert ENGINE_HEALTH_EQUATES
|
||||||
|
|
||||||
Equ Comma$ to ','
|
Equ Comma$ to ','
|
||||||
|
|
||||||
Declare function System_Healthcheck_Services, Environment_Services, Logging_Services
|
Declare function System_Healthcheck_Services, Environment_Services, Logging_Services
|
||||||
Declare subroutine Logging_Services
|
Declare subroutine Logging_Services
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Healthchecks\Engines\MonA'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Healthchecks\Engines\MonA'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Mona_Engine_Health_Check_Log.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Mona_Engine_Health_Check_Log.csv'
|
||||||
Headers = 'Logging DTM' : @FM : 'EngineID' : @FM : 'ResponseCode' : @FM : 'Message' : @FM : 'Requester'
|
Headers = 'Logging DTM' : @FM : 'EngineID' : @FM : 'ResponseCode' : @FM : 'Message' : @FM : 'Requester'
|
||||||
objLogMonaEngines = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
objLogMonaEngines = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API monaengines.HEAD
|
API monaengines.HEAD
|
||||||
API monaengines.GET
|
API monaengines.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API monaengines.ID.HEAD
|
API monaengines.ID.HEAD
|
||||||
API monaengines.ID.GET
|
API monaengines.ID.GET
|
||||||
|
|
||||||
//Returns status of a defined engine
|
//Returns status of a defined engine
|
||||||
EngineID = EndpointSegment
|
EngineID = EndpointSegment
|
||||||
If RowExists('APP_INFO', EngineID) then
|
If RowExists('APP_INFO', EngineID) then
|
||||||
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
|
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Healthy = EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$>
|
Healthy = EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$>
|
||||||
If Healthy then
|
If Healthy then
|
||||||
ResponseCode = 200
|
ResponseCode = 200
|
||||||
Message = 'Engine is healthy'
|
Message = 'Engine is healthy'
|
||||||
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = EngineID
|
LogData<2> = EngineID
|
||||||
LogData<3> = ResponseCode
|
LogData<3> = ResponseCode
|
||||||
LogData<4> = Message
|
LogData<4> = Message
|
||||||
LogData<5> = FullEndpointURL
|
LogData<5> = FullEndpointURL
|
||||||
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
||||||
end else
|
end else
|
||||||
ResponseCode = 418
|
ResponseCode = 418
|
||||||
Message = 'Engine is unhealthy.'
|
Message = 'Engine is unhealthy.'
|
||||||
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = EngineID
|
LogData<2> = EngineID
|
||||||
LogData<3> = ResponseCode
|
LogData<3> = ResponseCode
|
||||||
LogData<4> = Message
|
LogData<4> = Message
|
||||||
LogData<5> = FullEndpointURL
|
LogData<5> = FullEndpointURL
|
||||||
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ResponseCode = 500
|
ResponseCode = 500
|
||||||
Message = Error_Services('GetMessage')
|
Message = Error_Services('GetMessage')
|
||||||
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
HTTP_Services('SetResponseStatus', ResponseCode, Message)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = EngineID
|
LogData<2> = EngineID
|
||||||
LogData<3> = ResponseCode
|
LogData<3> = ResponseCode
|
||||||
LogData<4> = Message
|
LogData<4> = Message
|
||||||
LogData<5> = FullEndpointURL
|
LogData<5> = FullEndpointURL
|
||||||
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ResponseCode = 404
|
ResponseCode = 404
|
||||||
Message = 'Invalid Engine ID'
|
Message = 'Invalid Engine ID'
|
||||||
HTTP_Services('SetResponseStatus', ResponseCode, 'Invalid Engine ID.')
|
HTTP_Services('SetResponseStatus', ResponseCode, 'Invalid Engine ID.')
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = LoggingDTM
|
LogData<1> = LoggingDTM
|
||||||
LogData<2> = EngineID
|
LogData<2> = EngineID
|
||||||
LogData<3> = ResponseCode
|
LogData<3> = ResponseCode
|
||||||
LogData<4> = Message
|
LogData<4> = Message
|
||||||
LogData<5> = FullEndpointURL
|
LogData<5> = FullEndpointURL
|
||||||
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLogMonaEngines, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -1,64 +1,64 @@
|
|||||||
Function Mona_API(@API)
|
Function Mona_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Mona_API
|
Name : Mona_API
|
||||||
|
|
||||||
Description : API logic for the Mona resource.
|
Description : API logic for the Mona resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Mona[.ID.[<Property>]]
|
- APIPattern must follow this structure Mona[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Mona.POST
|
- Mona.POST
|
||||||
- Mona.ID.PUT
|
- Mona.ID.PUT
|
||||||
- Mona.ID.firstName.GET
|
- Mona.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 xxx Original programmer.
|
07/17/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API mona.HEAD
|
API mona.HEAD
|
||||||
API mona.GET
|
API mona.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -159,7 +159,8 @@ Service SendBufferedAverageMetric(MonaResource, MetricName, MetricValue)
|
|||||||
|
|
||||||
retries = retries - 1
|
retries = retries - 1
|
||||||
|
|
||||||
response = Httpclient_Services('SendHTTPRequest', 'POST', ApiUrl, 'Content-Type':@VM:'application/json':@FM:'Accept':@VM:'*/*', RequestBodyJson, '', '', False$, True$, '')
|
response = Httpclient_Services('SendHTTPRequest', 'POST', ApiUrl, 'Content-Type':@VM:'application/json':@FM:'Accept':@VM:'*/*', RequestBodyJson, '', '', False$, False$, '')
|
||||||
|
|
||||||
If response EQ '"Request queued for processing"' then
|
If response EQ '"Request queued for processing"' then
|
||||||
isSuccessful = True$
|
isSuccessful = True$
|
||||||
end
|
end
|
||||||
@ -167,5 +168,3 @@ Service SendBufferedAverageMetric(MonaResource, MetricName, MetricValue)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,187 +1,187 @@
|
|||||||
Compile function NDW_LOAD_UNLOAD_EXTRA_EVENTS(CtrlEntId, Event, @PARAMS)
|
Compile function NDW_LOAD_UNLOAD_EXTRA_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#window NDW_LOAD_UNLOAD_EXTRA
|
#window NDW_LOAD_UNLOAD_EXTRA
|
||||||
|
|
||||||
Declare subroutine End_Dialog, Post_Event, Database_Services, Error_Services, Msg
|
Declare subroutine End_Dialog, Post_Event, Database_Services, Error_Services, Msg
|
||||||
Declare subroutine Set_Property, Rds_Services
|
Declare subroutine Set_Property, Rds_Services
|
||||||
Declare function Database_Services, Error_Services
|
Declare function Database_Services, Error_Services
|
||||||
Declare function Get_Property
|
Declare function Get_Property
|
||||||
|
|
||||||
$Insert EVENT_SETUP
|
$Insert EVENT_SETUP
|
||||||
$Insert LOGICAL
|
$Insert LOGICAL
|
||||||
$Insert RDS_EQUATES
|
$Insert RDS_EQUATES
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntId else
|
GoToEvent Event for CtrlEntId else
|
||||||
// Event not implemented
|
// Event not implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
Return EventFlow or 1
|
Return EventFlow or 1
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// EVENT HANDLERS
|
// EVENT HANDLERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
RDSNo = CreateParam
|
RDSNo = CreateParam
|
||||||
If RowExists('RDS', RDSNo) then
|
If RowExists('RDS', RDSNo) then
|
||||||
Set_Property(@Window : '.EDL_RDS', 'TEXT', RDSNo)
|
Set_Property(@Window : '.EDL_RDS', 'TEXT', RDSNo)
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end else
|
end else
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
Post_Event(@Window, 'CLOSE')
|
Post_Event(@Window, 'CLOSE')
|
||||||
end
|
end
|
||||||
|
|
||||||
End Event
|
End Event
|
||||||
|
|
||||||
Event WINDOW.CLOSE(CancelFlag)
|
Event WINDOW.CLOSE(CancelFlag)
|
||||||
ResponseValue = Get_Property(@Window, '@responsevalue')
|
ResponseValue = Get_Property(@Window, '@responsevalue')
|
||||||
End_Dialog(@Window, ResponseValue)
|
End_Dialog(@Window, ResponseValue)
|
||||||
end event
|
end event
|
||||||
|
|
||||||
//Signature buttons
|
//Signature buttons
|
||||||
|
|
||||||
Event PUB_SIGN_UNLOAD_EX_1.CLICK()
|
Event PUB_SIGN_UNLOAD_EX_1.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('SignUnloadExtra1', RDSNo, @USER4)
|
Rds_Services('SignUnloadExtra1', RDSNo, @USER4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Unload Extra 1 Signed!')
|
Msg(@Window, 'Unload Extra 1 Signed!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_SIGN_LOAD_EX_1.CLICK()
|
Event PUB_SIGN_LOAD_EX_1.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('SignLoadExtra1', RDSNo, @USER4)
|
Rds_Services('SignLoadExtra1', RDSNo, @USER4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 1 Signed!')
|
Msg(@Window, 'Load Extra 1 Signed!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_SIGN_UNLOAD_EX_2.CLICK()
|
Event PUB_SIGN_UNLOAD_EX_2.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('SignUnloadExtra2', RDSNo, @USER4)
|
Rds_Services('SignUnloadExtra2', RDSNo, @USER4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Unload Extra 2 Signed!')
|
Msg(@Window, 'Unload Extra 2 Signed!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_SIGN_LOAD_EX_2.CLICK()
|
Event PUB_SIGN_LOAD_EX_2.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('SignLoadExtra2', RDSNo, @USER4)
|
Rds_Services('SignLoadExtra2', RDSNo, @USER4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 2 Signed!')
|
Msg(@Window, 'Load Extra 2 Signed!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
//Clear Signature Buttons
|
//Clear Signature Buttons
|
||||||
|
|
||||||
Event PUB_CLEAR_UNLOAD_EX_1.CLICK()
|
Event PUB_CLEAR_UNLOAD_EX_1.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('UnsignUnloadExtra1', RDSNo, @User4)
|
Rds_Services('UnsignUnloadExtra1', RDSNo, @User4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Unload Extra 1 unsigned!')
|
Msg(@Window, 'Unload Extra 1 unsigned!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_CLEAR_LOAD_EX_1.CLICK()
|
Event PUB_CLEAR_LOAD_EX_1.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('UnsignLoadExtra1', RDSNo, @User4)
|
Rds_Services('UnsignLoadExtra1', RDSNo, @User4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 1 unsigned!')
|
Msg(@Window, 'Load Extra 1 unsigned!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_CLEAR_UNLOAD_EX_2.CLICK()
|
Event PUB_CLEAR_UNLOAD_EX_2.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('UnsignUnloadExtra2', RDSNo, @User4)
|
Rds_Services('UnsignUnloadExtra2', RDSNo, @User4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Unload Extra 2 unsigned!')
|
Msg(@Window, 'Unload Extra 2 unsigned!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_CLEAR_LOAD_EX_2.CLICK()
|
Event PUB_CLEAR_LOAD_EX_2.CLICK()
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
Rds_Services('UnsignLoadExtra2', RDSNo, @User4)
|
Rds_Services('UnsignLoadExtra2', RDSNo, @User4)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Msg(@Window, 'Load Extra 2 unsigned!')
|
Msg(@Window, 'Load Extra 2 unsigned!')
|
||||||
end else
|
end else
|
||||||
Msg(@Window, Error_Services('GetMessage'))
|
Msg(@Window, Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
GoSub Refresh
|
GoSub Refresh
|
||||||
end event
|
end event
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// INTERNAL GO-SUBS
|
// INTERNAL GO-SUBS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
***************
|
***************
|
||||||
Refresh:
|
Refresh:
|
||||||
***************
|
***************
|
||||||
|
|
||||||
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||||
If RowExists('RDS', RDSNo) then
|
If RowExists('RDS', RDSNo) then
|
||||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||||
//Unload Extra 1
|
//Unload Extra 1
|
||||||
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
|
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
|
||||||
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
|
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
|
||||||
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
|
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
|
||||||
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
|
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
|
||||||
//Load Extra 1
|
//Load Extra 1
|
||||||
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
|
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
|
||||||
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
|
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
|
||||||
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
|
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
|
||||||
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
|
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
|
||||||
//Unload Extra 2
|
//Unload Extra 2
|
||||||
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
|
||||||
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
|
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
|
||||||
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
|
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
|
||||||
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
|
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
|
||||||
//Load Extra 2
|
//Load Extra 2
|
||||||
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
|
||||||
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
|
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
|
||||||
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
|
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
|
||||||
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
|
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
|
||||||
|
|
||||||
//Populate text fields
|
//Populate text fields
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
|
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
|
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
|
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
|
||||||
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
|
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
|
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
|
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
|
||||||
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
|
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
|
||||||
end else
|
end else
|
||||||
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
|
||||||
Post_Event(@Window, 'CLOSE')
|
Post_Event(@Window, 'CLOSE')
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,8 +148,9 @@ Event WINDOW.CREATE(CreateParam)
|
|||||||
|
|
||||||
If (AccessLevel EQ -1) OR (AccessLevel EQ '') then
|
If (AccessLevel EQ -1) OR (AccessLevel EQ '') then
|
||||||
Set_Property(@Window, '@CLOSE', 1)
|
Set_Property(@Window, '@CLOSE', 1)
|
||||||
|
Post_Event(@Window, 'CLOSE')
|
||||||
// This prevents OI from throwing an error message if the cancel button is pressed on the LOGON form.
|
// This prevents OI from throwing an error message if the cancel button is pressed on the LOGON form.
|
||||||
If (Server EQ 'MESST5201') or (Server EQ 'MESST5202') then Utility("DESTROY", "SYSTEM")
|
//If (Server EQ 'MESST5201') or (Server EQ 'MESST5202') then Utility("DESTROY", "SYSTEM")
|
||||||
end
|
end
|
||||||
|
|
||||||
If AccessLevel GE 0 then
|
If AccessLevel GE 0 then
|
||||||
|
@ -1,149 +1,149 @@
|
|||||||
Compile function NDW_MANUAL_WAFER_COUNT_EVENTS(CtrlEntId, Event, @PARAMS)
|
Compile function NDW_MANUAL_WAFER_COUNT_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : NDW_Manual_Wafer_Count_Events
|
Name : NDW_Manual_Wafer_Count_Events
|
||||||
|
|
||||||
Description : This function acts as a commuter module for all events related to this window.
|
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
|
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
|
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
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
||||||
limited to the events which are currently promoted.
|
limited to the events which are currently promoted.
|
||||||
|
|
||||||
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
||||||
formatted like this:
|
formatted like this:
|
||||||
|
|
||||||
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
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
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
||||||
Param1-15 [in] -- Additional event parameter holders
|
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
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
||||||
EVENT_SETUP insert
|
EVENT_SETUP insert
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
04/12/24 djs Created initial commuter module.
|
04/12/24 djs Created initial commuter module.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#window NDW_MANUAL_WAFER_COUNT
|
#window NDW_MANUAL_WAFER_COUNT
|
||||||
|
|
||||||
$Insert EVENT_SETUP
|
$Insert EVENT_SETUP
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert MSG_EQUATES
|
$Insert MSG_EQUATES
|
||||||
|
|
||||||
Equ MSG_WIDTH$ to 650
|
Equ MSG_WIDTH$ to 650
|
||||||
Equ Comma$ to ','
|
Equ Comma$ to ','
|
||||||
|
|
||||||
Declare function Environment_Services, Logging_Services, Datetime
|
Declare function Environment_Services, Logging_Services, Datetime
|
||||||
Declare subroutine Set_Property, Logging_Services
|
Declare subroutine Set_Property, Logging_Services
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WaferCounter'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WaferCounter'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Wafer Counter Verify Log.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Wafer Counter Verify Log.csv'
|
||||||
Headers = 'Logging DTM':@FM:'Logging Text'
|
Headers = 'Logging DTM':@FM:'Logging Text'
|
||||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
|
|
||||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||||
If Event EQ 'OLE' then
|
If Event EQ 'OLE' then
|
||||||
Transfer Event to OIEvent
|
Transfer Event to OIEvent
|
||||||
Transfer Param1 to Event
|
Transfer Param1 to Event
|
||||||
Transfer Param2 to Param1
|
Transfer Param2 to Param1
|
||||||
Transfer Param3 to Param2
|
Transfer Param3 to Param2
|
||||||
Transfer Param4 to Param3
|
Transfer Param4 to Param3
|
||||||
Transfer Param5 to Param4
|
Transfer Param5 to Param4
|
||||||
Transfer Param6 to Param5
|
Transfer Param6 to Param5
|
||||||
Transfer Param7 to Param6
|
Transfer Param7 to Param6
|
||||||
Transfer Param8 to Param7
|
Transfer Param8 to Param7
|
||||||
end
|
end
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntID
|
GoToEvent Event for CtrlEntID
|
||||||
|
|
||||||
Return EventFlow else EVENT_CONTINUE$
|
Return EventFlow else EVENT_CONTINUE$
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// EVENT HANDLERS
|
// EVENT HANDLERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
|
|
||||||
If CreateParam NE '' then
|
If CreateParam NE '' then
|
||||||
|
|
||||||
Set_Property(@Window, '@EXPECTED_QTY', CreateParam)
|
Set_Property(@Window, '@EXPECTED_QTY', CreateParam)
|
||||||
List = ''
|
List = ''
|
||||||
For SlotIndex = 0 to 25
|
For SlotIndex = 0 to 25
|
||||||
List<SlotIndex + 1> = SlotIndex
|
List<SlotIndex + 1> = SlotIndex
|
||||||
Next SlotIndex
|
Next SlotIndex
|
||||||
Set_Property(@Window:'.CBO_WAFER_COUNT', 'LIST', List)
|
Set_Property(@Window:'.CBO_WAFER_COUNT', 'LIST', List)
|
||||||
|
|
||||||
end else
|
end else
|
||||||
|
|
||||||
ErrorMsg = 'Wafer counter error. Null expected quantity passed in.'
|
ErrorMsg = 'Wafer counter error. Null expected quantity passed in.'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = @User4
|
LogData<2> = @User4
|
||||||
LogData<3> = ErrorMsg
|
LogData<3> = ErrorMsg
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
|
|
||||||
MsgStruct = ''
|
MsgStruct = ''
|
||||||
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
|
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
|
||||||
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMsg)
|
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMsg)
|
||||||
End_Dialog(@Window, '')
|
End_Dialog(@Window, '')
|
||||||
end
|
end
|
||||||
|
|
||||||
End Event
|
End Event
|
||||||
|
|
||||||
|
|
||||||
Event CBO_WAFER_COUNT.CHANGED(NewData)
|
Event CBO_WAFER_COUNT.CHANGED(NewData)
|
||||||
|
|
||||||
Set_Property(@Window:'.PUB_OK', 'ENABLED', (NewData NE '') )
|
Set_Property(@Window:'.PUB_OK', 'ENABLED', (NewData NE '') )
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event PUB_OK.CLICK()
|
Event PUB_OK.CLICK()
|
||||||
|
|
||||||
ExpectedQty = Get_Property(@Window, '@EXPECTED_QTY')
|
ExpectedQty = Get_Property(@Window, '@EXPECTED_QTY')
|
||||||
WaferCount = Get_Property(@Window:'.CBO_WAFER_COUNT', 'TEXT')
|
WaferCount = Get_Property(@Window:'.CBO_WAFER_COUNT', 'TEXT')
|
||||||
If ExpectedQty EQ WaferCount then
|
If ExpectedQty EQ WaferCount then
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = @User4
|
LogData<2> = @User4
|
||||||
LogData<3> = 'Expected quantity equals entered quantity. Proceeding...'
|
LogData<3> = 'Expected quantity equals entered quantity. Proceeding...'
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
|
|
||||||
End_Dialog(@Window, WaferCount)
|
End_Dialog(@Window, WaferCount)
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Wafer counter error. Expected quantity "':ExpectedQty:'" does not match entered quantity "':WaferCount:'".'
|
ErrorMsg = 'Wafer counter error. Expected quantity "':ExpectedQty:'" does not match entered quantity "':WaferCount:'".'
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = @User4
|
LogData<2> = @User4
|
||||||
LogData<3> = ErrorMsg
|
LogData<3> = ErrorMsg
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
MsgStruct = ''
|
MsgStruct = ''
|
||||||
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
|
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
|
||||||
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMsg)
|
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMsg)
|
||||||
end
|
end
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event PUB_CANCEL.CLICK()
|
Event PUB_CANCEL.CLICK()
|
||||||
|
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = @User4
|
LogData<2> = @User4
|
||||||
LogData<3> = 'Manual verification process canceled'
|
LogData<3> = 'Manual verification process canceled'
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
End_Dialog(@Window, '')
|
End_Dialog(@Window, '')
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,120 +1,120 @@
|
|||||||
Compile function NDW_PM_OVERRIDE_EVENTS(CtrlEntId, Event, @PARAMS)
|
Compile function NDW_PM_OVERRIDE_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : NDW_PM_Override_Events
|
Name : NDW_PM_Override_Events
|
||||||
|
|
||||||
Description : This function acts as a commuter module for all events related to this window.
|
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
|
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
|
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
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
||||||
limited to the events which are currently promoted.
|
limited to the events which are currently promoted.
|
||||||
|
|
||||||
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
||||||
formatted like this:
|
formatted like this:
|
||||||
|
|
||||||
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
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
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
||||||
Param1-15 [in] -- Additional event parameter holders
|
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
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
||||||
EVENT_SETUP insert
|
EVENT_SETUP insert
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
06/25/24 djs Created initial commuter module.
|
06/25/24 djs Created initial commuter module.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#window NDW_PM_OVERRIDE
|
#window NDW_PM_OVERRIDE
|
||||||
|
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert EVENT_SETUP
|
$Insert EVENT_SETUP
|
||||||
$Insert REACTOR_LOG_EQUATES
|
$Insert REACTOR_LOG_EQUATES
|
||||||
$insert MESSAGE_BOX_EQUATES
|
$insert MESSAGE_BOX_EQUATES
|
||||||
|
|
||||||
Declare subroutine Placedialog, Message_Box
|
Declare subroutine Placedialog, Message_Box
|
||||||
|
|
||||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||||
If Event EQ 'OLE' then
|
If Event EQ 'OLE' then
|
||||||
Transfer Event to OIEvent
|
Transfer Event to OIEvent
|
||||||
Transfer Param1 to Event
|
Transfer Param1 to Event
|
||||||
Transfer Param2 to Param1
|
Transfer Param2 to Param1
|
||||||
Transfer Param3 to Param2
|
Transfer Param3 to Param2
|
||||||
Transfer Param4 to Param3
|
Transfer Param4 to Param3
|
||||||
Transfer Param5 to Param4
|
Transfer Param5 to Param4
|
||||||
Transfer Param6 to Param5
|
Transfer Param6 to Param5
|
||||||
Transfer Param7 to Param6
|
Transfer Param7 to Param6
|
||||||
Transfer Param8 to Param7
|
Transfer Param8 to Param7
|
||||||
end
|
end
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntId else
|
GoToEvent Event for CtrlEntId else
|
||||||
// Event not implemented
|
// Event not implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
Return EventFlow or 1
|
Return EventFlow or 1
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// EVENT HANDLERS
|
// EVENT HANDLERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
|
|
||||||
RlNo = CreateParam
|
RlNo = CreateParam
|
||||||
PmOrderTypes = Xlate('REACTOR_LOG', RLNo, REACTOR_LOG_CHECKLIST_TYPE$, 'X')
|
PmOrderTypes = Xlate('REACTOR_LOG', RLNo, REACTOR_LOG_CHECKLIST_TYPE$, 'X')
|
||||||
for each PmOrderType in PmOrderTypes using @VM setting dummy
|
for each PmOrderType in PmOrderTypes using @VM setting dummy
|
||||||
Begin Case
|
Begin Case
|
||||||
Case PmOrderType _EQC 'ASM_HTR_TUBE_CHANGE'
|
Case PmOrderType _EQC 'ASM_HTR_TUBE_CHANGE'
|
||||||
Set_Property(@Window:'.CHB_ASM_HTR_TUBE_CHANGE', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_ASM_HTR_TUBE_CHANGE', 'ENABLED', True$)
|
||||||
Case PmOrderType _EQC 'SEMIANNUAL_PM'
|
Case PmOrderType _EQC 'SEMIANNUAL_PM'
|
||||||
Set_Property(@Window:'.CHB_SEMIANNUAL_PM', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_SEMIANNUAL_PM', 'ENABLED', True$)
|
||||||
Case PmOrderType _EQC 'ANNUAL_PM'
|
Case PmOrderType _EQC 'ANNUAL_PM'
|
||||||
Set_Property(@Window:'.CHB_ANNUAL_PM', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_ANNUAL_PM', 'ENABLED', True$)
|
||||||
Case Otherwise$
|
Case Otherwise$
|
||||||
Null
|
Null
|
||||||
End Case
|
End Case
|
||||||
Next PmOrderType
|
Next PmOrderType
|
||||||
|
|
||||||
Placedialog(-2, -2)
|
Placedialog(-2, -2)
|
||||||
|
|
||||||
End Event
|
End Event
|
||||||
|
|
||||||
|
|
||||||
Event PUB_SUBMIT.CLICK()
|
Event PUB_SUBMIT.CLICK()
|
||||||
|
|
||||||
OverrideData = ''
|
OverrideData = ''
|
||||||
SelectedTypes = ''
|
SelectedTypes = ''
|
||||||
If Get_Property(@Window:'.CHB_ASM_HTR_TUBE_CHANGE', 'CHECK') then SelectedTypes<0, -1> = "ASM_HTR_TUBE_CHANGE"
|
If Get_Property(@Window:'.CHB_ASM_HTR_TUBE_CHANGE', 'CHECK') then SelectedTypes<0, -1> = "ASM_HTR_TUBE_CHANGE"
|
||||||
If Get_Property(@Window:'.CHB_SEMIANNUAL_PM', 'CHECK') then SelectedTypes<0, -1> = 'SEMIANNUAL_PM'
|
If Get_Property(@Window:'.CHB_SEMIANNUAL_PM', 'CHECK') then SelectedTypes<0, -1> = 'SEMIANNUAL_PM'
|
||||||
If Get_Property(@Window:'.CHB_ANNUAL_PM', 'CHECK') then SelectedTypes<0, -1> = 'ANNUAL_PM'
|
If Get_Property(@Window:'.CHB_ANNUAL_PM', 'CHECK') then SelectedTypes<0, -1> = 'ANNUAL_PM'
|
||||||
|
|
||||||
If SelectedTypes EQ '' then
|
If SelectedTypes EQ '' then
|
||||||
Message_Box(@Window, "You must select at least one PM type!", "Error", MSG_ICON_EXCLAM$)
|
Message_Box(@Window, "You must select at least one PM type!", "Error", MSG_ICON_EXCLAM$)
|
||||||
return
|
return
|
||||||
end else
|
end else
|
||||||
OverrideData<1, 1> = SelectedTypes
|
OverrideData<1, 1> = SelectedTypes
|
||||||
end
|
end
|
||||||
|
|
||||||
OverrideData<2, 1> = Get_Property(@Window:'.EDB_COMMENT', 'TEXT')
|
OverrideData<2, 1> = Get_Property(@Window:'.EDB_COMMENT', 'TEXT')
|
||||||
|
|
||||||
If OverrideData<2, 1> EQ '' or Len(OverrideData<2, 1>) LT 4 then
|
If OverrideData<2, 1> EQ '' or Len(OverrideData<2, 1>) LT 4 then
|
||||||
Message_Box(@Window, "Your comment must be at least 4 characters!", "Error", MSG_ICON_EXCLAM$)
|
Message_Box(@Window, "Your comment must be at least 4 characters!", "Error", MSG_ICON_EXCLAM$)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
End_Dialog(@Window, OverrideData)
|
End_Dialog(@Window, OverrideData)
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event PUB_CANCEL.CLICK()
|
Event PUB_CANCEL.CLICK()
|
||||||
|
|
||||||
End_Dialog(@Window, '')
|
End_Dialog(@Window, '')
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,189 +1,189 @@
|
|||||||
Function NDW_Remove_Supplements_Events(CtrlEntId, Event, @PARAMS)
|
Function NDW_Remove_Supplements_Events(CtrlEntId, Event, @PARAMS)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : NDW_Remove_Supplements_Events
|
Name : NDW_Remove_Supplements_Events
|
||||||
|
|
||||||
Description : This function acts as a commuter module for all events related to this window.
|
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
|
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
|
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
|
execute Basic+ logic without having use the Form Designer to make the association, although this is
|
||||||
limited to the events which are currently promoted.
|
limited to the events which are currently promoted.
|
||||||
|
|
||||||
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
If the form needs to call the commuter module directly then the QuickEvent parameters should be
|
||||||
formatted like this:
|
formatted like this:
|
||||||
|
|
||||||
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
'@SELF','@EVENT',['@PARAM1','@PARAMx']
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
|
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
|
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
|
||||||
Param1-15 [in] -- Additional event parameter holders
|
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
|
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
|
||||||
EVENT_SETUP insert
|
EVENT_SETUP insert
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
05/24/18 djs Created initial commuter module.
|
05/24/18 djs Created initial commuter module.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#Window NDW_ADD_SUPPLEMENT
|
#Window NDW_ADD_SUPPLEMENT
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert EVENT_SETUP
|
$insert EVENT_SETUP
|
||||||
$insert MSG_EQUATES
|
$insert MSG_EQUATES
|
||||||
$Insert SUPPLEMENTS_EQUATES
|
$Insert SUPPLEMENTS_EQUATES
|
||||||
|
|
||||||
Declare subroutine SRP_Show_Window, Supplement_Services
|
Declare subroutine SRP_Show_Window, Supplement_Services
|
||||||
Declare function SRP_Array, Supplement_Services
|
Declare function SRP_Array, Supplement_Services
|
||||||
|
|
||||||
SubclassInfo = Form_Services('FindSubclassControl')
|
SubclassInfo = Form_Services('FindSubclassControl')
|
||||||
Subclass = SubclassInfo<1>
|
Subclass = SubclassInfo<1>
|
||||||
|
|
||||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||||
If Event EQ 'OLE' then
|
If Event EQ 'OLE' then
|
||||||
Transfer Event to OIEvent
|
Transfer Event to OIEvent
|
||||||
Transfer Param1 to Event
|
Transfer Param1 to Event
|
||||||
Transfer Param2 to Param1
|
Transfer Param2 to Param1
|
||||||
Transfer Param3 to Param2
|
Transfer Param3 to Param2
|
||||||
* Transfer Param4 to Param3
|
* Transfer Param4 to Param3
|
||||||
* Transfer Param5 to Param4
|
* Transfer Param5 to Param4
|
||||||
* Transfer Param6 to Param5
|
* Transfer Param6 to Param5
|
||||||
* Transfer Param7 to Param6
|
* Transfer Param7 to Param6
|
||||||
* Transfer Param8 to Param7
|
* Transfer Param8 to Param7
|
||||||
end
|
end
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntID
|
GoToEvent Event for CtrlEntID
|
||||||
|
|
||||||
Return EventFlow else EVENT_CONTINUE$
|
Return EventFlow else EVENT_CONTINUE$
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Events
|
// Events
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
|
|
||||||
Result = ''
|
Result = ''
|
||||||
SupplInst = ''
|
SupplInst = ''
|
||||||
GoSub Setup_OLE_Controls
|
GoSub Setup_OLE_Controls
|
||||||
If CreateParam NE '' then
|
If CreateParam NE '' then
|
||||||
Gosub PopulateStages
|
Gosub PopulateStages
|
||||||
Set_Property(@Window : '.CMB_STAGE', 'LIST', StageList)
|
Set_Property(@Window : '.CMB_STAGE', 'LIST', StageList)
|
||||||
Set_Property(@Window : '.CMB_STAGE', 'SELPOS', 1)
|
Set_Property(@Window : '.CMB_STAGE', 'SELPOS', 1)
|
||||||
Set_Property(@Window : '.PUB_OK', 'ENABLED', True$)
|
Set_Property(@Window : '.PUB_OK', 'ENABLED', True$)
|
||||||
end
|
end
|
||||||
|
|
||||||
Gosub CheckForSupplements
|
Gosub CheckForSupplements
|
||||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event WINDOW.CLOSE(CancelFlag)
|
Event WINDOW.CLOSE(CancelFlag)
|
||||||
|
|
||||||
Result = ''
|
Result = ''
|
||||||
Result<1> = False$
|
Result<1> = False$
|
||||||
End_Dialog(@Window, Result)
|
End_Dialog(@Window, Result)
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event CMB_STAGE.CHANGED(CreateParam)
|
Event CMB_STAGE.CHANGED(CreateParam)
|
||||||
|
|
||||||
Gosub CheckForSupplements
|
Gosub CheckForSupplements
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Event PUB_OK.CLICK()
|
Event PUB_OK.CLICK()
|
||||||
|
|
||||||
Removal = ''
|
Removal = ''
|
||||||
StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT')
|
StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT')
|
||||||
StageSel = Field(StageSel, '-', 2)
|
StageSel = Field(StageSel, '-', 2)
|
||||||
For Each RDSKey in @ReCur1 Using @VM
|
For Each RDSKey in @ReCur1 Using @VM
|
||||||
Removal = Supplement_Services('DeleteSupplementByLotStage', @USER4, 'RDS', RDSKey, StageSel)
|
Removal = Supplement_Services('DeleteSupplementByLotStage', @USER4, 'RDS', RDSKey, StageSel)
|
||||||
Next RDSKey
|
Next RDSKey
|
||||||
|
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
Result = True$
|
Result = True$
|
||||||
End else
|
End else
|
||||||
|
|
||||||
End
|
End
|
||||||
End_Dialog(@Window, Result)
|
End_Dialog(@Window, Result)
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
Event PUB_CANCEL.CLICK()
|
Event PUB_CANCEL.CLICK()
|
||||||
|
|
||||||
Result = ''
|
Result = ''
|
||||||
Result<1> = False$
|
Result<1> = False$
|
||||||
End_Dialog(@Window, Result)
|
End_Dialog(@Window, Result)
|
||||||
|
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Setup_OLE_Controls:
|
Setup_OLE_Controls:
|
||||||
|
|
||||||
Qualify = ''
|
Qualify = ''
|
||||||
Qualify<1> = 1
|
Qualify<1> = 1
|
||||||
Qualify<4> = 0
|
Qualify<4> = 0
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
PopulateStages:
|
PopulateStages:
|
||||||
|
|
||||||
DraftStageList = ''
|
DraftStageList = ''
|
||||||
PlainTextStages = ''
|
PlainTextStages = ''
|
||||||
RDSList = SRP_Array("Rotate", CreateParam)
|
RDSList = SRP_Array("Rotate", CreateParam)
|
||||||
@ReCur1 = RDSList<5>
|
@ReCur1 = RDSList<5>
|
||||||
|
|
||||||
For Each RDSKey in @ReCur1 Using @VM
|
For Each RDSKey in @ReCur1 Using @VM
|
||||||
RDSStageList = Supplement_Services('GetStagesForLot', 'RDS', RDSKey)
|
RDSStageList = Supplement_Services('GetStagesForLot', 'RDS', RDSKey)
|
||||||
RDSStageList2 = RDSStageList<2> :@FM: RDSStageList<1>
|
RDSStageList2 = RDSStageList<2> :@FM: RDSStageList<1>
|
||||||
RDSStageList3 = SRP_Array("Rotate", RDSStageList2)
|
RDSStageList3 = SRP_Array("Rotate", RDSStageList2)
|
||||||
DraftStageList := RDSStageList3 :@FM
|
DraftStageList := RDSStageList3 :@FM
|
||||||
Next RDSKey
|
Next RDSKey
|
||||||
Swap @VM with ' -' in DraftStageList
|
Swap @VM with ' -' in DraftStageList
|
||||||
StageList = SRP_Array('Clean', DraftStageList, "TrimAndMakeUnique", @FM)
|
StageList = SRP_Array('Clean', DraftStageList, "TrimAndMakeUnique", @FM)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CheckForSupplements:
|
CheckForSupplements:
|
||||||
|
|
||||||
SuppFound = ''
|
SuppFound = ''
|
||||||
StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT')
|
StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT')
|
||||||
Stage = Field(StageSel, '-', 2)
|
Stage = Field(StageSel, '-', 2)
|
||||||
For Each RDSKey in @ReCur1 Using @VM
|
For Each RDSKey in @ReCur1 Using @VM
|
||||||
SuppFound = Supplement_Services('GetSupplementsForLot', 'RDS', RDSKey, Stage)
|
SuppFound = Supplement_Services('GetSupplementsForLot', 'RDS', RDSKey, Stage)
|
||||||
Until SuppFound NE False$
|
Until SuppFound NE False$
|
||||||
Next RDSKey
|
Next RDSKey
|
||||||
If SuppFound NE False$ then
|
If SuppFound NE False$ then
|
||||||
SuppText = Xlate('SUPPLEMENTS', SuppFound, SUPPLEMENTS_SUPPL_TEXT$, 'X', '')
|
SuppText = Xlate('SUPPLEMENTS', SuppFound, SUPPLEMENTS_SUPPL_TEXT$, 'X', '')
|
||||||
If SuppText NE '' then
|
If SuppText NE '' then
|
||||||
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', SuppText)
|
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', SuppText)
|
||||||
Set_Property(@Window : '.PUB_OK', 'ENABLED', True$)
|
Set_Property(@Window : '.PUB_OK', 'ENABLED', True$)
|
||||||
end else
|
end else
|
||||||
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '')
|
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '')
|
||||||
Set_Property(@Window : '.PUB_OK', 'ENABLED', False$)
|
Set_Property(@Window : '.PUB_OK', 'ENABLED', False$)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '')
|
Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '')
|
||||||
Set_Property(@Window : '.PUB_OK', 'ENABLED', False$)
|
Set_Property(@Window : '.PUB_OK', 'ENABLED', False$)
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -429,21 +429,23 @@ SAPCreate:
|
|||||||
SendReason = 'Initial Tx (Auto)'
|
SendReason = 'Initial Tx (Auto)'
|
||||||
SendDtm = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
|
SendDtm = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
|
||||||
SendUser = @User4
|
SendUser = @User4
|
||||||
TaskID = RTI_Task_Submit('', 'PRINT_SHIPMENT_DEV', ShipNo, ShipRec, 1, True$)
|
* TaskID = RTI_Task_Submit('', 'PRINT_SHIPMENT_DEV', ShipNo, ShipRec, 1, True$)
|
||||||
|
|
||||||
Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' Called PRINT_SHIPMENT_DEV Task. TaskID : ' : TaskID, @RM, @FM, '')
|
Print_Shipment_Dev(ShipNo, ShipRec, True$, True$)
|
||||||
If TaskID NE 0 then
|
|
||||||
Done = False$
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' Called PRINT_SHIPMENT_DEV Task. TaskID : ' : TaskID, @RM, @FM, '')
|
||||||
TaskResponse = ''
|
* If TaskID NE 0 then
|
||||||
Loop
|
* Done = False$
|
||||||
Status = RTI_Task_Status(TaskID, TaskResponse)
|
* TaskResponse = ''
|
||||||
If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$
|
* Loop
|
||||||
Until Done
|
* Status = RTI_Task_Status(TaskID, TaskResponse)
|
||||||
Repeat
|
* If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$
|
||||||
end else
|
* Until Done
|
||||||
// Track if task id wasn't created at all.
|
* Repeat
|
||||||
end
|
* end else
|
||||||
Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' Finished PRINT_SHIPMENT_DEV Task. Status : ' : Status, @RM, @FM, '')
|
* // Track if task id wasn't created at all.
|
||||||
|
* end
|
||||||
|
* Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' Finished PRINT_SHIPMENT_DEV Task. Status : ' : Status, @RM, @FM, '')
|
||||||
StatusError = Get_Status(errCode)
|
StatusError = Get_Status(errCode)
|
||||||
Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' GetStatus PRINT_SHIPMENT_DEV Task. ErrCode : ' : ErrCode, @RM, @FM, '')
|
Logging_Services('AppendLog', objLog, LoggingDTM : @FM : WONo : @FM: ShipNo : @FM : ' GetStatus PRINT_SHIPMENT_DEV Task. ErrCode : ' : ErrCode, @RM, @FM, '')
|
||||||
If (Index(errCode, 'SHELLEXECUTE', 1)) NE 0 then StatusError = 0
|
If (Index(errCode, 'SHELLEXECUTE', 1)) NE 0 then StatusError = 0
|
||||||
|
@ -1,79 +1,79 @@
|
|||||||
Function Pm_API(@API)
|
Function Pm_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Pm_API
|
Name : Pm_API
|
||||||
|
|
||||||
Description : API logic for the Pm resource.
|
Description : API logic for the Pm resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Pm[.ID.[<Property>]]
|
- APIPattern must follow this structure Pm[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Pm.POST
|
- Pm.POST
|
||||||
- Pm.ID.PUT
|
- Pm.ID.PUT
|
||||||
- Pm.ID.firstName.GET
|
- Pm.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
06/05/24 xxx Original programmer.
|
06/05/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API pm.HEAD
|
API pm.HEAD
|
||||||
API pm.GET
|
API pm.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API pm.ID.HEAD
|
API pm.ID.HEAD
|
||||||
API pm.ID.GET
|
API pm.ID.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API pm.ID.POST
|
API pm.ID.POST
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -1,64 +1,64 @@
|
|||||||
Function Pm_spec_API(@API)
|
Function Pm_spec_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Pm_spec_API
|
Name : Pm_spec_API
|
||||||
|
|
||||||
Description : API logic for the Pm_spec resource.
|
Description : API logic for the Pm_spec resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Pm_spec[.ID.[<Property>]]
|
- APIPattern must follow this structure Pm_spec[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Pm_spec.POST
|
- Pm_spec.POST
|
||||||
- Pm_spec.ID.PUT
|
- Pm_spec.ID.PUT
|
||||||
- Pm_spec.ID.firstName.GET
|
- Pm_spec.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
06/05/24 xxx Original programmer.
|
06/05/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API pm_spec.HEAD
|
API pm_spec.HEAD
|
||||||
API pm_spec.GET
|
API pm_spec.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -1,154 +1,154 @@
|
|||||||
Compile function PM_Spec_Services(@Service, @Params)
|
Compile function PM_Spec_Services(@Service, @Params)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
Name : PM_Spec_Services
|
Name : PM_Spec_Services
|
||||||
|
|
||||||
Description : Handler program for all PM_SPEC services.
|
Description : Handler program for all PM_SPEC services.
|
||||||
|
|
||||||
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
||||||
assumptions built into way errors are managed which are important to understand in order to properly
|
assumptions built into way errors are managed which are important to understand in order to properly
|
||||||
work with Error Services:
|
work with Error Services:
|
||||||
|
|
||||||
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
||||||
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
||||||
this will appear backwards since the originating procedure always appears at the bottom of the
|
this will appear backwards since the originating procedure always appears at the bottom of the
|
||||||
list and the current routine appears at the top of the list. We are using this orientation because
|
list and the current routine appears at the top of the list. We are using this orientation because
|
||||||
it is common to refer to the process of calling other procedures as 'drilling down'.
|
it is common to refer to the process of calling other procedures as 'drilling down'.
|
||||||
|
|
||||||
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
||||||
multiple error conditions to be appended to an original error. In most cases this will happen when
|
multiple error conditions to be appended to an original error. In most cases this will happen when
|
||||||
a procedure at the bottom of the stack generates an error condition and then returns to its
|
a procedure at the bottom of the stack generates an error condition and then returns to its
|
||||||
calling procedure. This higher level procedure can optionally add more information relevant to
|
calling procedure. This higher level procedure can optionally add more information relevant to
|
||||||
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
||||||
originating procedure is waiting.
|
originating procedure is waiting.
|
||||||
|
|
||||||
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
||||||
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
||||||
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
||||||
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
||||||
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
||||||
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
||||||
philosophy then it should include a call into the 'Clear' service request at the top of the
|
philosophy then it should include a call into the 'Clear' service request at the top of the
|
||||||
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
||||||
|
|
||||||
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
||||||
error conditions that were set before.
|
error conditions that were set before.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
Service [in] -- Name of the service being requested
|
Service [in] -- Name of the service being requested
|
||||||
Param1-10 [in/out] -- Additional request parameter holders
|
Param1-10 [in/out] -- Additional request parameter holders
|
||||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||||
|
|
||||||
Metadata :
|
Metadata :
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
03/29/24 djs Original programmer.
|
03/29/24 djs Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert SERVICE_SETUP
|
$Insert SERVICE_SETUP
|
||||||
$Insert PM_EQUATES
|
$Insert PM_EQUATES
|
||||||
$Insert PM_SPEC_EQUATES
|
$Insert PM_SPEC_EQUATES
|
||||||
$Insert TOOL_EQUATES
|
$Insert TOOL_EQUATES
|
||||||
|
|
||||||
// Reduce Modes
|
// Reduce Modes
|
||||||
Equ NEW_EXIST$ To 0
|
Equ NEW_EXIST$ To 0
|
||||||
Equ NEXT_CUR$ To 1
|
Equ NEXT_CUR$ To 1
|
||||||
Equ ADD_EXIST$ To 2
|
Equ ADD_EXIST$ To 2
|
||||||
|
|
||||||
Declare subroutine Error_Services, Reduce, Push.Select, Pop.Select
|
Declare subroutine Error_Services, Reduce, Push.Select, Pop.Select
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Service Parameter Options
|
// Service Parameter Options
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
Options BOOLEAN = True$, False$
|
Options BOOLEAN = True$, False$
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Service UpdatePMCompDtm(PMSpecID)
|
Service UpdatePMCompDtm(PMSpecID)
|
||||||
|
|
||||||
F1 = ''
|
F1 = ''
|
||||||
F2 = ''
|
F2 = ''
|
||||||
F3 = ''
|
F3 = ''
|
||||||
F4 = ''
|
F4 = ''
|
||||||
Push.Select(F1, F2, F3, F4)
|
Push.Select(F1, F2, F3, F4)
|
||||||
ErrorMsg = ''
|
ErrorMsg = ''
|
||||||
If (PMSpecID NE '') then
|
If (PMSpecID NE '') then
|
||||||
If RowExists('PM_SPEC', PMSpecID) then
|
If RowExists('PM_SPEC', PMSpecID) then
|
||||||
TableName = "PM"
|
TableName = "PM"
|
||||||
Flag = ""
|
Flag = ""
|
||||||
Done = False$
|
Done = False$
|
||||||
CursorVar = ""
|
CursorVar = ""
|
||||||
GoSub ClearCursors
|
GoSub ClearCursors
|
||||||
SortList = "#COMP_DTM"
|
SortList = "#COMP_DTM"
|
||||||
ReduceScript = "WITH {PMS_ID} EQ ":PMSpecID
|
ReduceScript = "WITH {PMS_ID} EQ ":PMSpecID
|
||||||
Mode = NEXT_CUR$
|
Mode = NEXT_CUR$
|
||||||
Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag)
|
Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag)
|
||||||
If Flag then
|
If Flag then
|
||||||
Select TableName By SortList Using CursorVar then
|
Select TableName By SortList Using CursorVar then
|
||||||
Open TableName To FileVar then
|
Open TableName To FileVar then
|
||||||
Loop
|
Loop
|
||||||
ReadNext Key Using CursorVar By AT else Done = TRUE$
|
ReadNext Key Using CursorVar By AT else Done = TRUE$
|
||||||
Until Done
|
Until Done
|
||||||
Read Rec From FileVar, Key then
|
Read Rec From FileVar, Key then
|
||||||
NewStopDtm = Rec<PM_COMP_DTM$>
|
NewStopDtm = Rec<PM_COMP_DTM$>
|
||||||
Done = True$
|
Done = True$
|
||||||
Open 'PM_SPEC' to hPMSpec then
|
Open 'PM_SPEC' to hPMSpec then
|
||||||
WriteV NewStopDtm on hPMSpec, PMSpecID, PM_SPEC_LAST_PM_COMP_DTM$ else
|
WriteV NewStopDtm on hPMSpec, PMSpecID, PM_SPEC_LAST_PM_COMP_DTM$ else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error writing LAST_PM_COMP_DTM on PM_SPEC record ':PMSpecID:'.'
|
ErrorMsg = 'Error in ':Service:' service. Error writing LAST_PM_COMP_DTM on PM_SPEC record ':PMSpecID:'.'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error opening PM_SPEC table.'
|
ErrorMsg = 'Error in ':Service:' service. Error opening PM_SPEC table.'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error reading PM record ':Key:'.'
|
ErrorMsg = 'Error in ':Service:' service. Error reading PM record ':Key:'.'
|
||||||
end
|
end
|
||||||
Repeat
|
Repeat
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error opening PM table.'
|
ErrorMsg = 'Error in ':Service:' service. Error opening PM table.'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error calling Select on PM table.'
|
ErrorMsg = 'Error in ':Service:' service. Error calling Select on PM table.'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Error calling Reduce on PM table.'
|
ErrorMsg = 'Error in ':Service:' service. Error calling Reduce on PM table.'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. PM_SPEC record ':PMSpecID:' does not exist!'
|
ErrorMsg = 'Error in ':Service:' service. PM_SPEC record ':PMSpecID:' does not exist!'
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = 'Error in ':Service:' service. Null PMSpecID passed into service!'
|
ErrorMsg = 'Error in ':Service:' service. Null PMSpecID passed into service!'
|
||||||
end
|
end
|
||||||
|
|
||||||
Pop.Select(F1, F2, F3, F4)
|
Pop.Select(F1, F2, F3, F4)
|
||||||
If ErrorMsg NE '' then
|
If ErrorMsg NE '' then
|
||||||
Error_Services('Add', ErrorMsg)
|
Error_Services('Add', ErrorMsg)
|
||||||
Response = False$
|
Response = False$
|
||||||
end else
|
end else
|
||||||
Repsponse = True$
|
Repsponse = True$
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
ClearCursors:
|
ClearCursors:
|
||||||
|
|
||||||
For counter = 0 To 8
|
For counter = 0 To 8
|
||||||
ClearSelect counter
|
ClearSelect counter
|
||||||
Next counter
|
Next counter
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,90 +1,90 @@
|
|||||||
Compile function PROVE_IN_OVERRIDE_EVENTS(CtrlEntId, Event, @PARAMS)
|
Compile function PROVE_IN_OVERRIDE_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
#window PROVE_IN_OVERRIDE
|
#window PROVE_IN_OVERRIDE
|
||||||
|
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert REACTOR_EQUATES
|
$Insert REACTOR_EQUATES
|
||||||
$insert Message_Box_Equates
|
$insert Message_Box_Equates
|
||||||
|
|
||||||
Declare subroutine Placedialog, Message_Box
|
Declare subroutine Placedialog, Message_Box
|
||||||
|
|
||||||
GoToEvent Event for CtrlEntId else
|
GoToEvent Event for CtrlEntId else
|
||||||
// Event not implemented
|
// Event not implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
Return EventFlow or 1
|
Return EventFlow or 1
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// EVENT HANDLERS
|
// EVENT HANDLERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Event WINDOW.CREATE(CreateParam)
|
Event WINDOW.CREATE(CreateParam)
|
||||||
ReactNo = CreateParam
|
ReactNo = CreateParam
|
||||||
|
|
||||||
Placedialog(-2, -2)
|
Placedialog(-2, -2)
|
||||||
|
|
||||||
ProveInTypes = Xlate('REACTOR', ReactNo, REACTOR_PROVE_IN_TYPE$, 'X')
|
ProveInTypes = Xlate('REACTOR', ReactNo, REACTOR_PROVE_IN_TYPE$, 'X')
|
||||||
for each ProveInType in ProveInTypes using @VM setting dummy
|
for each ProveInType in ProveInTypes using @VM setting dummy
|
||||||
Begin Case
|
Begin Case
|
||||||
Case ProveInType _EQC 'changeover'
|
Case ProveInType _EQC 'changeover'
|
||||||
Set_Property(@Window:'.CHB_CHANGEOVER', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_CHANGEOVER', 'ENABLED', True$)
|
||||||
Case ProveInType _EQC 'initiate_idle'
|
Case ProveInType _EQC 'initiate_idle'
|
||||||
Set_Property(@Window:'.CHB_IDLE_SHUTDOWN', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_IDLE_SHUTDOWN', 'ENABLED', True$)
|
||||||
Case ProveInType _EQC 'idle'
|
Case ProveInType _EQC 'idle'
|
||||||
Set_Property(@Window:'.CHB_IDLE_STARTUP', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_IDLE_STARTUP', 'ENABLED', True$)
|
||||||
Case ProveInType _EQC 'intrusive_maint'
|
Case ProveInType _EQC 'intrusive_maint'
|
||||||
Set_Property(@Window:'.CHB_INTRUSIVE_MAINT', 'ENABLED', True$)
|
Set_Property(@Window:'.CHB_INTRUSIVE_MAINT', 'ENABLED', True$)
|
||||||
Case Otherwise$
|
Case Otherwise$
|
||||||
Null
|
Null
|
||||||
End Case
|
End Case
|
||||||
Next ProveInType
|
Next ProveInType
|
||||||
End Event
|
End Event
|
||||||
|
|
||||||
Event PUB_SUBMIT.CLICK()
|
Event PUB_SUBMIT.CLICK()
|
||||||
OverrideData = ''
|
OverrideData = ''
|
||||||
|
|
||||||
SelectedTypes = ''
|
SelectedTypes = ''
|
||||||
If Get_Property(@Window:'.CHB_CHANGEOVER', 'CHECK') then
|
If Get_Property(@Window:'.CHB_CHANGEOVER', 'CHECK') then
|
||||||
SelectedTypes = "CHANGEOVER"
|
SelectedTypes = "CHANGEOVER"
|
||||||
end
|
end
|
||||||
If Get_Property(@Window:'.CHB_IDLE_SHUTDOWN', 'CHECK') then
|
If Get_Property(@Window:'.CHB_IDLE_SHUTDOWN', 'CHECK') then
|
||||||
If SelectedTypes NE '' then
|
If SelectedTypes NE '' then
|
||||||
SelectedTypes := @VM
|
SelectedTypes := @VM
|
||||||
end
|
end
|
||||||
SelectedTypes := 'INITIATE_IDLE'
|
SelectedTypes := 'INITIATE_IDLE'
|
||||||
end
|
end
|
||||||
If Get_Property(@Window:'.CHB_IDLE_STARTUP', 'CHECK') then
|
If Get_Property(@Window:'.CHB_IDLE_STARTUP', 'CHECK') then
|
||||||
If SelectedTypes NE '' then
|
If SelectedTypes NE '' then
|
||||||
SelectedTypes := @VM
|
SelectedTypes := @VM
|
||||||
end
|
end
|
||||||
SelectedTypes := 'IDLE'
|
SelectedTypes := 'IDLE'
|
||||||
end
|
end
|
||||||
If Get_Property(@Window:'.CHB_INTRUSIVE_MAINT', 'CHECK') then
|
If Get_Property(@Window:'.CHB_INTRUSIVE_MAINT', 'CHECK') then
|
||||||
If SelectedTypes NE '' then
|
If SelectedTypes NE '' then
|
||||||
SelectedTypes := @VM
|
SelectedTypes := @VM
|
||||||
end
|
end
|
||||||
SelectedTypes := 'INTRUSIVE_MAINT'
|
SelectedTypes := 'INTRUSIVE_MAINT'
|
||||||
end
|
end
|
||||||
|
|
||||||
If SelectedTypes EQ '' then
|
If SelectedTypes EQ '' then
|
||||||
Message_Box(@Window, "You must select at least one prove in type!", "Error", MSG_ICON_EXCLAM$)
|
Message_Box(@Window, "You must select at least one prove in type!", "Error", MSG_ICON_EXCLAM$)
|
||||||
return
|
return
|
||||||
end else
|
end else
|
||||||
OverrideData<1, 1> = SelectedTypes
|
OverrideData<1, 1> = SelectedTypes
|
||||||
end
|
end
|
||||||
|
|
||||||
OverrideData<2, 1> = Get_Property(@Window:'.EDB_COMMENT', 'TEXT')
|
OverrideData<2, 1> = Get_Property(@Window:'.EDB_COMMENT', 'TEXT')
|
||||||
|
|
||||||
If OverrideData<2, 1> EQ '' or Len(OverrideData<2, 1>) LT 4 then
|
If OverrideData<2, 1> EQ '' or Len(OverrideData<2, 1>) LT 4 then
|
||||||
Message_Box(@Window, "Your comment must be at least 4 characters!", "Error", MSG_ICON_EXCLAM$)
|
Message_Box(@Window, "Your comment must be at least 4 characters!", "Error", MSG_ICON_EXCLAM$)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
End_Dialog(@Window, OverrideData)
|
End_Dialog(@Window, OverrideData)
|
||||||
end event
|
end event
|
||||||
|
|
||||||
Event PUB_CANCEL.CLICK()
|
Event PUB_CANCEL.CLICK()
|
||||||
End_Dialog(@Window, '')
|
End_Dialog(@Window, '')
|
||||||
end event
|
end event
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,106 +1,106 @@
|
|||||||
Function Reactorloadings_API(@API)
|
Function Reactorloadings_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Reactorloadings_API
|
Name : Reactorloadings_API
|
||||||
|
|
||||||
Description : API logic for the Reactorloadings resource.
|
Description : API logic for the Reactorloadings resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Reactorloadings[.ID.[<Property>]]
|
- APIPattern must follow this structure Reactorloadings[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Reactorloadings.POST
|
- Reactorloadings.POST
|
||||||
- Reactorloadings.ID.PUT
|
- Reactorloadings.ID.PUT
|
||||||
- Reactorloadings.ID.firstName.GET
|
- Reactorloadings.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
05/22/24 xxx Original programmer.
|
05/22/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
Declare function Oi_Wizard_Services, Memberof, Oi_Wizard_Services
|
Declare function Oi_Wizard_Services, Memberof, Oi_Wizard_Services
|
||||||
Declare subroutine Reactor_Services, Oi_Wizard_Services
|
Declare subroutine Reactor_Services, Oi_Wizard_Services
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API reactorloadings.POST
|
API reactorloadings.POST
|
||||||
OIWizardID = ''
|
OIWizardID = ''
|
||||||
CurrUser = ''
|
CurrUser = ''
|
||||||
Cookies = HTTP_Services('GetHTTPCookie')
|
Cookies = HTTP_Services('GetHTTPCookie')
|
||||||
For each Cookie in Cookies using ';'
|
For each Cookie in Cookies using ';'
|
||||||
Key = Trim(Field(Cookie, '=', 1))
|
Key = Trim(Field(Cookie, '=', 1))
|
||||||
If Key EQ 'sessionID' then
|
If Key EQ 'sessionID' then
|
||||||
OIWizardID = Field(Cookie, '=', 2)
|
OIWizardID = Field(Cookie, '=', 2)
|
||||||
end
|
end
|
||||||
Next Cookie
|
Next Cookie
|
||||||
|
|
||||||
If OIWizardID NE '' then
|
If OIWizardID NE '' then
|
||||||
// Call validate session to extend session expiry
|
// Call validate session to extend session expiry
|
||||||
OI_Wizard_Services('ValidateSession', OIWizardID)
|
OI_Wizard_Services('ValidateSession', OIWizardID)
|
||||||
CurrUser = Xlate('OI_WIZARD', OIWizardID, 'EMPLOYEE_ID', 'X')
|
CurrUser = Xlate('OI_WIZARD', OIWizardID, 'EMPLOYEE_ID', 'X')
|
||||||
end
|
end
|
||||||
|
|
||||||
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
||||||
|
|
||||||
If ValidSession then
|
If ValidSession then
|
||||||
If Memberof(CurrUser, 'OI_ADMIN') OR Memberof(CurrUser, 'LEAD') OR Memberof(CurrUser, 'SUPERVISOR') then
|
If Memberof(CurrUser, 'OI_ADMIN') OR Memberof(CurrUser, 'LEAD') OR Memberof(CurrUser, 'SUPERVISOR') then
|
||||||
Body = HTTP_Services('GetHTTPPostString', True$)
|
Body = HTTP_Services('GetHTTPPostString', True$)
|
||||||
// The POST string will have been encoded so use percent (URL) decoding.
|
// The POST string will have been encoded so use percent (URL) decoding.
|
||||||
DecodedJSON = HTTP_Services('DecodePercentString', Body)
|
DecodedJSON = HTTP_Services('DecodePercentString', Body)
|
||||||
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
|
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
|
||||||
rdsNo = SRP_JSON(objBody, 'GetValue', 'rdsNo')
|
rdsNo = SRP_JSON(objBody, 'GetValue', 'rdsNo')
|
||||||
reactorNo = SRP_JSON(objBody, 'GetValue', 'reactorNo')
|
reactorNo = SRP_JSON(objBody, 'GetValue', 'reactorNo')
|
||||||
SRP_JSON(objBody, 'Release')
|
SRP_JSON(objBody, 'Release')
|
||||||
end
|
end
|
||||||
|
|
||||||
Reactor_Services('RemoveRDSFromReactorLoad', rdsNo, reactorNo, CurrUser)
|
Reactor_Services('RemoveRDSFromReactorLoad', rdsNo, reactorNo, CurrUser)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
HTTP_Services('SetResponseStatus', 200, 'RDS Successfully removed.')
|
HTTP_Services('SetResponseStatus', 200, 'RDS Successfully removed.')
|
||||||
end else
|
end else
|
||||||
ErrCode = Error_Services('GetMessage')
|
ErrCode = Error_Services('GetMessage')
|
||||||
HTTP_Services('SetResponseStatus', 500, ErrCode)
|
HTTP_Services('SetResponseStatus', 500, ErrCode)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 503, 'User is not authorized!')
|
HTTP_Services('SetResponseStatus', 503, 'User is not authorized!')
|
||||||
end
|
end
|
||||||
End else
|
End else
|
||||||
HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
HTTP_Services('SetResponseStatus', 401, 'User must be signed in to access this resource.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -3287,7 +3287,7 @@ Service CreateReactorProveInOrder(ReactNo, ProveInType)
|
|||||||
|
|
||||||
Retries = Retries - 1
|
Retries = Retries - 1
|
||||||
|
|
||||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'POST', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', '', '', '')
|
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'POST', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '')
|
||||||
If HttpResponseJson NE '' then
|
If HttpResponseJson NE '' then
|
||||||
ObjResponseJson = ''
|
ObjResponseJson = ''
|
||||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||||
@ -3340,6 +3340,7 @@ Service CreateReactorProveInOrder(ReactNo, ProveInType)
|
|||||||
end service
|
end service
|
||||||
|
|
||||||
Service GetReactorProveInStatus(ReactNo)
|
Service GetReactorProveInStatus(ReactNo)
|
||||||
|
|
||||||
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Log'
|
||||||
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
ColumnWidths = 20 : @FM : 15 : @FM : 300
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ReactorProveIn'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ReactorProveIn'
|
||||||
@ -3386,7 +3387,7 @@ Service GetReactorProveInStatus(ReactNo)
|
|||||||
|
|
||||||
Retries = Retries - 1
|
Retries = Retries - 1
|
||||||
|
|
||||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'GET', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', '', '', '')
|
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'GET', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '')
|
||||||
If HttpResponseJson NE '' then
|
If HttpResponseJson NE '' then
|
||||||
ObjResponseJson = ''
|
ObjResponseJson = ''
|
||||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||||
@ -3488,7 +3489,7 @@ Service CancelReactorProveIn(ReactNo, OrderId)
|
|||||||
|
|
||||||
Retries = Retries - 1
|
Retries = Retries - 1
|
||||||
|
|
||||||
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'PUT', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', '', '', '')
|
HttpResponseJson = Httpclient_Services('SendHTTPRequest', 'PUT', ProveInUrl, 'Accept':@VM:'*/*', '', '', '', False$, False$, '')
|
||||||
If HttpResponseJson NE '' then
|
If HttpResponseJson NE '' then
|
||||||
ObjResponseJson = ''
|
ObjResponseJson = ''
|
||||||
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
|
||||||
|
@ -1,254 +1,254 @@
|
|||||||
Function REACT_ITEM_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
|
Function REACT_ITEM_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
|
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.
|
permission from Infineon.
|
||||||
|
|
||||||
Name : RDS_Actions
|
Name : RDS_Actions
|
||||||
|
|
||||||
Description : Handles calculated columns and MFS calls for the current table.
|
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.
|
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.
|
If called from outside of a calculated column these will need to be set and restored.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
Action [in] -- Name of the action to be taken
|
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
|
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.
|
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
|
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
|
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.
|
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
|
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
|
entire handle structure that the Basic+ Open statement would provide. Normally set by a
|
||||||
calling MFS.
|
calling MFS.
|
||||||
Name [in] -- The name (key) of the record or file being accessed. 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.
|
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
|
Record [in] -- The entire record (for record-oriented functions) or a newly-created handle (for
|
||||||
"get handle" functions). Normally set by a calling MFS.
|
"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
|
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.
|
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
|
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
|
automatically being assigned by the WRITE_RECORD and DELETE_RECORD actions within
|
||||||
BASE_MFS.
|
BASE_MFS.
|
||||||
Param1-10 [in/out] -- Additional request parameter holders
|
Param1-10 [in/out] -- Additional request parameter holders
|
||||||
ActionFlow [out] -- Used to control the action chain (see the ACTION_SETUP insert for more information.)
|
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
|
Can also be used to return a special value, such as the results of the CalcField
|
||||||
method.
|
method.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
04/10/18 dmb Original programmer.
|
04/10/18 dmb Original programmer.
|
||||||
10/04/18 djs Added a trigger within the WRITE_RECORD event, which fires when the reactor number has
|
10/04/18 djs Added a trigger within the WRITE_RECORD event, which fires when the reactor number has
|
||||||
changed. When this occurs the related RDS_LAYER records for this RDS record are populated
|
changed. When this occurs the related RDS_LAYER records for this RDS record are populated
|
||||||
with the most recent associated TOOL_PARMS record. (related by PSN and Reactor)
|
with the most recent associated TOOL_PARMS record. (related by PSN and Reactor)
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$Insert FILE.SYSTEM.EQUATES
|
$Insert FILE.SYSTEM.EQUATES
|
||||||
$Insert ACTION_SETUP
|
$Insert ACTION_SETUP
|
||||||
$Insert RDS_EQUATES
|
$Insert RDS_EQUATES
|
||||||
$Insert CLEAN_INSP_EQUATES
|
$Insert CLEAN_INSP_EQUATES
|
||||||
$Insert COMPANY_EQUATES
|
$Insert COMPANY_EQUATES
|
||||||
$Insert RDS_LAYER_EQUATES
|
$Insert RDS_LAYER_EQUATES
|
||||||
$Insert TOOL_PARMS_EQUATES
|
$Insert TOOL_PARMS_EQUATES
|
||||||
$Insert RLIST_EQUATES
|
$Insert RLIST_EQUATES
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
$Insert QA_MET_EQUATES
|
$Insert QA_MET_EQUATES
|
||||||
$Insert PRS_STAGE_EQUATES
|
$Insert PRS_STAGE_EQUATES
|
||||||
$Insert WO_MAT_EQUATES
|
$Insert WO_MAT_EQUATES
|
||||||
$Insert WO_MAT_QA_EQUATES
|
$Insert WO_MAT_QA_EQUATES
|
||||||
|
|
||||||
Equ COMMA$ to ','
|
Equ COMMA$ to ','
|
||||||
|
|
||||||
Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services, SRP_Math
|
Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services, SRP_Math
|
||||||
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services, obj_WO_Mat
|
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services, obj_WO_Mat
|
||||||
Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services_Dev
|
Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services_Dev
|
||||||
Declare subroutine Work_Order_Services, Material_Services, Set_FSError
|
Declare subroutine Work_Order_Services, Material_Services, Set_FSError
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If KeyID then GoSub Initialize_System_Variables
|
If KeyID then GoSub Initialize_System_Variables
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
|
||||||
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
|
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
|
||||||
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
|
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
|
||||||
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
|
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
|
||||||
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
|
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
|
||||||
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
|
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
|
||||||
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
|
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
|
||||||
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
|
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
|
||||||
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
|
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
|
||||||
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
|
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
|
||||||
Case Otherwise$ ; Status = 'Invalid Action'
|
Case Otherwise$ ; Status = 'Invalid Action'
|
||||||
|
|
||||||
End Case
|
End Case
|
||||||
|
|
||||||
If KeyID then GoSub Restore_System_Variables
|
If KeyID then GoSub Restore_System_Variables
|
||||||
|
|
||||||
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
|
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
|
||||||
|
|
||||||
Return ActionFlow
|
Return ActionFlow
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Calculated Columns
|
// Calculated Columns
|
||||||
//
|
//
|
||||||
// The typical structure of a calculated column will look like this:
|
// The typical structure of a calculated column will look like this:
|
||||||
//
|
//
|
||||||
// Declare function Database_Services
|
// Declare function Database_Services
|
||||||
//
|
//
|
||||||
// @ANS = Database_Services('CalculateColumn')
|
// @ANS = Database_Services('CalculateColumn')
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
CalculateColumn:
|
CalculateColumn:
|
||||||
|
|
||||||
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
|
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
|
||||||
ActionFlow = ''
|
ActionFlow = ''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----- MFS calls -----------------------------------------------------------------------------------------------------
|
// ----- MFS calls -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
READ_RECORD_PRE:
|
READ_RECORD_PRE:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
// ActionFlow = ACTION_STOP$
|
// ActionFlow = ACTION_STOP$
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
READ_RECORD:
|
READ_RECORD:
|
||||||
|
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
READONLY_RECORD_PRE:
|
READONLY_RECORD_PRE:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
// ActionFlow = ACTION_STOP$
|
// ActionFlow = ACTION_STOP$
|
||||||
return
|
return
|
||||||
|
|
||||||
READONLY_RECORD:
|
READONLY_RECORD:
|
||||||
// In order to stop a record from being read in this action these lines of code must be used:
|
// In order to stop a record from being read in this action these lines of code must be used:
|
||||||
//
|
//
|
||||||
// OrigFileError = 100 : @FM : KeyID
|
// OrigFileError = 100 : @FM : KeyID
|
||||||
// Status = 0
|
// Status = 0
|
||||||
// Record = ''
|
// Record = ''
|
||||||
return
|
return
|
||||||
|
|
||||||
WRITE_RECORD_PRE:
|
WRITE_RECORD_PRE:
|
||||||
|
|
||||||
ErrMsg = ''
|
ErrMsg = ''
|
||||||
|
|
||||||
//Req'd parameter checks
|
//Req'd parameter checks
|
||||||
ItemType = {RI_TYPE}
|
ItemType = {RI_TYPE}
|
||||||
|
|
||||||
If ItemType EQ '' then
|
If ItemType EQ '' then
|
||||||
ErrMsg := 'Item Type was not specified. '
|
ErrMsg := 'Item Type was not specified. '
|
||||||
end
|
end
|
||||||
|
|
||||||
If ErrMsg NE '' then
|
If ErrMsg NE '' then
|
||||||
Error_Services('Add', 'Error Saving Reactor Item: ' : ErrMsg)
|
Error_Services('Add', 'Error Saving Reactor Item: ' : ErrMsg)
|
||||||
OrigFileError = 104:': Error Saving Reactor Item: ' : ErrMsg
|
OrigFileError = 104:': Error Saving Reactor Item: ' : ErrMsg
|
||||||
Status = 0
|
Status = 0
|
||||||
Record = ''
|
Record = ''
|
||||||
ActionFlow = ACTION_STOP$
|
ActionFlow = ACTION_STOP$
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
WRITE_RECORD:
|
WRITE_RECORD:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
DELETE_RECORD_PRE:
|
DELETE_RECORD_PRE:
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
DELETE_RECORD:
|
DELETE_RECORD:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Internal GoSubs
|
// Internal GoSubs
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
ClearCursors:
|
ClearCursors:
|
||||||
For counter = 0 to 8
|
For counter = 0 to 8
|
||||||
ClearSelect counter
|
ClearSelect counter
|
||||||
Next counter
|
Next counter
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Initialize_System_Variables:
|
Initialize_System_Variables:
|
||||||
|
|
||||||
// Save these for restoration later
|
// Save these for restoration later
|
||||||
SaveDict = @DICT
|
SaveDict = @DICT
|
||||||
SaveID = @ID
|
SaveID = @ID
|
||||||
SaveRecord = @RECORD
|
SaveRecord = @RECORD
|
||||||
OrigFileError = @FILE.ERROR
|
OrigFileError = @FILE.ERROR
|
||||||
|
|
||||||
// Now make sure @DICT, ID, and @RECORD are populated
|
// Now make sure @DICT, ID, and @RECORD are populated
|
||||||
CurrentDictName = ''
|
CurrentDictName = ''
|
||||||
If @DICT then
|
If @DICT then
|
||||||
DictHandle = @DICT<1, 2>
|
DictHandle = @DICT<1, 2>
|
||||||
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
|
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
|
||||||
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
|
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
If CurrentDictName NE DictName then
|
If CurrentDictName NE DictName then
|
||||||
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
|
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
|
||||||
end
|
end
|
||||||
|
|
||||||
@ID = KeyID
|
@ID = KeyID
|
||||||
If Record else
|
If Record else
|
||||||
// Record might not have been passed in. Read the record from the database table just to make sure.
|
// Record might not have been passed in. Read the record from the database table just to make sure.
|
||||||
@FILE.ERROR = ''
|
@FILE.ERROR = ''
|
||||||
Open TableName to hTable then
|
Open TableName to hTable then
|
||||||
FullFSList = hTable[1, 'F' : @VM]
|
FullFSList = hTable[1, 'F' : @VM]
|
||||||
BFS = FullFSList[-1, 'B' : @SVM]
|
BFS = FullFSList[-1, 'B' : @SVM]
|
||||||
LastHandle = hTable[-1, 'B' : \0D\]
|
LastHandle = hTable[-1, 'B' : \0D\]
|
||||||
FileHandle = \0D\ : LastHandle[1, @VM]
|
FileHandle = \0D\ : LastHandle[1, @VM]
|
||||||
|
|
||||||
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
|
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@RECORD = Record
|
@RECORD = Record
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Restore_System_Variables:
|
Restore_System_Variables:
|
||||||
|
|
||||||
Transfer SaveDict to @DICT
|
Transfer SaveDict to @DICT
|
||||||
Transfer SaveID to @ID
|
Transfer SaveID to @ID
|
||||||
Transfer SaveRecord to @RECORD
|
Transfer SaveRecord to @RECORD
|
||||||
@FILE.ERROR = OrigFileError
|
@FILE.ERROR = OrigFileError
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,64 +1,64 @@
|
|||||||
Function Remotehealthcheck_API(@API)
|
Function Remotehealthcheck_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Remotehealthcheck_API
|
Name : Remotehealthcheck_API
|
||||||
|
|
||||||
Description : API logic for the Remotehealthcheck resource.
|
Description : API logic for the Remotehealthcheck resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Remotehealthcheck[.ID.[<Property>]]
|
- APIPattern must follow this structure Remotehealthcheck[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Remotehealthcheck.POST
|
- Remotehealthcheck.POST
|
||||||
- Remotehealthcheck.ID.PUT
|
- Remotehealthcheck.ID.PUT
|
||||||
- Remotehealthcheck.ID.firstName.GET
|
- Remotehealthcheck.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/17/24 xxx Original programmer.
|
07/17/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API remotehealthcheck.HEAD
|
API remotehealthcheck.HEAD
|
||||||
API remotehealthcheck.GET
|
API remotehealthcheck.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
@ -77,7 +77,6 @@ Return Response or ""
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Service CalculateMaterialTrackData(RptColumns, LocationFilter, NoMatFlag)
|
Service CalculateMaterialTrackData(RptColumns, LocationFilter, NoMatFlag)
|
||||||
|
|
||||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||||
Lock hSysLists, ServiceKeyID then
|
Lock hSysLists, ServiceKeyID then
|
||||||
|
|
||||||
@ -131,7 +130,7 @@ Service CalculateMaterialTrackData(RptColumns, LocationFilter, NoMatFlag)
|
|||||||
PrevReactNo = ''
|
PrevReactNo = ''
|
||||||
PrevWO = ''
|
PrevWO = ''
|
||||||
|
|
||||||
SelectSent = 'SELECT SCHED_DET_NG WITH STOP_DTM GE ':Today:' BY REACT_NO'
|
SelectSent = 'SELECT SCHED_DET_NG WITH STOP_DTM GE "':OCONV(Today, 'DT'):'" BY REACT_NO'
|
||||||
|
|
||||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||||
IF Get_Status(errCode) THEN
|
IF Get_Status(errCode) THEN
|
||||||
@ -432,7 +431,7 @@ DETAIL:
|
|||||||
WPDAdjusted = Epi_Part_Services('GetAdjustedWafersPerDayScheduler', EpiPartNo, S.React_Type)
|
WPDAdjusted = Epi_Part_Services('GetAdjustedWafersPerDayScheduler', EpiPartNo, S.React_Type)
|
||||||
If WPDAdjusted NE '' then
|
If WPDAdjusted NE '' then
|
||||||
CPDAdjusted = SRP_Math('CEILING', (WPDAdjusted/25) )
|
CPDAdjusted = SRP_Math('CEILING', (WPDAdjusted/25) )
|
||||||
CassInCR = DCount(KittCassList, ',') + DCount(PTICassList, ',') + DCount(LoadedCassList, ',')
|
CassInCR = DCount(KitCassList, ',') + DCount(PTICassList, ',') + DCount(LoadedCassList, ',')
|
||||||
CassNeeded = CassInCR - CPDAdjusted
|
CassNeeded = CassInCR - CPDAdjusted
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -149,7 +149,7 @@ Service GetMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag)
|
|||||||
PrevReactNo = ''
|
PrevReactNo = ''
|
||||||
PrevWO = ''
|
PrevWO = ''
|
||||||
|
|
||||||
SelectSent = 'SELECT SCHED_DET_NG WITH STOP_DTM GE ':Today:' BY REACT_NO'
|
SelectSent = 'SELECT SCHED_DET_NG WITH STOP_DTM GE "':OCONV(Today, 'DT'):'" BY REACT_NO'
|
||||||
|
|
||||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||||
IF Get_Status(errCode) THEN
|
IF Get_Status(errCode) THEN
|
||||||
@ -461,7 +461,7 @@ DETAIL:
|
|||||||
WPDAdjusted = Epi_Part_Services('GetAdjustedWafersPerDayScheduler', EpiPartNo, S.React_Type)
|
WPDAdjusted = Epi_Part_Services('GetAdjustedWafersPerDayScheduler', EpiPartNo, S.React_Type)
|
||||||
If WPDAdjusted NE '' then
|
If WPDAdjusted NE '' then
|
||||||
CPDAdjusted = SRP_Math('CEILING', (WPDAdjusted/25) )
|
CPDAdjusted = SRP_Math('CEILING', (WPDAdjusted/25) )
|
||||||
CassInCR = DCount(KittCassList, ',') + DCount(PTICassList, ',') + DCount(LoadedCassList, ',')
|
CassInCR = DCount(KitCassList, ',') + DCount(PTICassList, ',') + DCount(LoadedCassList, ',')
|
||||||
CassNeeded = CassInCR - CPDAdjusted
|
CassNeeded = CassInCR - CPDAdjusted
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -218,7 +218,7 @@ end service
|
|||||||
// Calculates and stores the current inbound pending count for SAP.
|
// Calculates and stores the current inbound pending count for SAP.
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service SetInboundPending()
|
Service SetInboundPending()
|
||||||
|
|
||||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||||
Lock hSysLists, ServiceKeyID then
|
Lock hSysLists, ServiceKeyID then
|
||||||
|
|
||||||
@ -387,7 +387,7 @@ end service
|
|||||||
// Gets the incoming SAP transactions and processes them.
|
// Gets the incoming SAP transactions and processes them.
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
Service GetInboundTransactions()
|
Service GetInboundTransactions()
|
||||||
|
|
||||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||||
Lock hSysLists, ServiceKeyID then
|
Lock hSysLists, ServiceKeyID then
|
||||||
SAPHoldStartDateTime = SAP_Services('GetSAPHoldStartDateTime')
|
SAPHoldStartDateTime = SAP_Services('GetSAPHoldStartDateTime')
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,23 +1,23 @@
|
|||||||
Compile subroutine ScrapeOEngineInit(void)
|
Compile subroutine ScrapeOEngineInit(void)
|
||||||
#pragma SRP_Precompiler
|
#pragma SRP_Precompiler
|
||||||
|
|
||||||
$Insert ENVIRON_CONSTANTS
|
$Insert ENVIRON_CONSTANTS
|
||||||
|
|
||||||
Declare subroutine Set_Env, GetEngineVersion
|
Declare subroutine Set_Env, GetEngineVersion
|
||||||
Declare function RTI_Xlate_Controller
|
Declare function RTI_Xlate_Controller
|
||||||
|
|
||||||
Version = ''
|
Version = ''
|
||||||
GetEngineVersion(Version)
|
GetEngineVersion(Version)
|
||||||
MajorVersion = Version[1, 'F.']
|
MajorVersion = Version[1, 'F.']
|
||||||
If MajorVersion GE 10 then
|
If MajorVersion GE 10 then
|
||||||
// Stopgap performance fix for OI 10.2.2 RC1. Revelation will re-enable caching by default in 10.2.2 RC2.
|
// Stopgap performance fix for OI 10.2.2 RC1. Revelation will re-enable caching by default in 10.2.2 RC2.
|
||||||
// Do not invoke this in OI 9 as the function does not exist!
|
// Do not invoke this in OI 9 as the function does not exist!
|
||||||
rv = RTI_Xlate_Controller('EnableCache')
|
rv = RTI_Xlate_Controller('EnableCache')
|
||||||
end
|
end
|
||||||
|
|
||||||
Set_Env(ENV_DEBUGGER_ENABLED$, 2, 1)
|
Set_Env(ENV_DEBUGGER_ENABLED$, 2, 1)
|
||||||
Set_Env(ENV_DEBUGGER_INTERCEPT_PROC$,'SCRAPE_ENGINE_DEBUGGER_INTERCEPT',1)
|
Set_Env(ENV_DEBUGGER_INTERCEPT_PROC$,'SCRAPE_ENGINE_DEBUGGER_INTERCEPT',1)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,48 +1,48 @@
|
|||||||
Subroutine Scrape_Engine_Debugger_Intercept(Void)
|
Subroutine Scrape_Engine_Debugger_Intercept(Void)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Scrape_Engine_Debugger_Intercept
|
Name : Scrape_Engine_Debugger_Intercept
|
||||||
|
|
||||||
Description : Handler program for the HTTP Debugger service module.
|
Description : Handler program for the HTTP Debugger service module.
|
||||||
|
|
||||||
Notes : Service handler for HTTP Requests that abort due to a Runtime Error and the Debugger Intercept
|
Notes : Service handler for HTTP Requests that abort due to a Runtime Error and the Debugger Intercept
|
||||||
has been enabled.
|
has been enabled.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
|
|
||||||
Metadata :
|
Metadata :
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
07/25/23 djs Original programmer.
|
07/25/23 djs Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert RTI_DEBUG_COMMON
|
$insert RTI_DEBUG_COMMON
|
||||||
|
|
||||||
Declare function Environment_Services, Logging_Services
|
Declare function Environment_Services, Logging_Services
|
||||||
Declare subroutine Logging_Services
|
Declare subroutine Logging_Services
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Scrape'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Scrape'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' OEngine Log.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' OEngine Log.csv'
|
||||||
Headers = 'Stored Proc Status' : @FM : 'Stored Proc Status Code' : @FM : 'Current Program' : @FM : 'Call Depth' : @FM : 'Line No' : @FM : 'Call Stack'
|
Headers = 'Stored Proc Status' : @FM : 'Stored Proc Status Code' : @FM : 'Current Program' : @FM : 'Call Depth' : @FM : 'Line No' : @FM : 'Call Stack'
|
||||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = SPStatus@
|
LogData<1> = SPStatus@
|
||||||
LogData<2> = SPStatCode@
|
LogData<2> = SPStatCode@
|
||||||
LogData<3> = Curr_Program@
|
LogData<3> = Curr_Program@
|
||||||
LogData<4> = CallDepth@
|
LogData<4> = CallDepth@
|
||||||
LogData<5> = LineNo@
|
LogData<5> = LineNo@
|
||||||
LogData<6> = CallStack@
|
LogData<6> = CallStack@
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, '', '', '')
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, '', '', '')
|
||||||
|
|
||||||
Return
|
Return
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,131 +1,131 @@
|
|||||||
Function Scrubber_pm_API(@API)
|
Function Scrubber_pm_API(@API)
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
|
|
||||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
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 SRP Computer Solutions, Inc.
|
permission from SRP Computer Solutions, Inc.
|
||||||
|
|
||||||
Name : Scrubber_pm_API
|
Name : Scrubber_pm_API
|
||||||
|
|
||||||
Description : API logic for the Scrubber_pm resource.
|
Description : API logic for the Scrubber_pm resource.
|
||||||
|
|
||||||
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
|
||||||
|
|
||||||
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
|
||||||
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
|
||||||
FullEndpointURL - The URL submitted by the client, including query params.
|
FullEndpointURL - The URL submitted by the client, including query params.
|
||||||
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
|
||||||
EndpointSegment - The URL endpoint segment.
|
EndpointSegment - The URL endpoint segment.
|
||||||
ParentURL - The URL path preceeding the current endpoint.
|
ParentURL - The URL path preceeding the current endpoint.
|
||||||
CurrentAPI - The name of this stored procedure.
|
CurrentAPI - The name of this stored procedure.
|
||||||
|
|
||||||
Parameters :
|
Parameters :
|
||||||
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
|
||||||
- APIPattern must follow this structure Scrubber_pm[.ID.[<Property>]]
|
- APIPattern must follow this structure Scrubber_pm[.ID.[<Property>]]
|
||||||
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
|
||||||
Examples:
|
Examples:
|
||||||
- Scrubber_pm.POST
|
- Scrubber_pm.POST
|
||||||
- Scrubber_pm.ID.PUT
|
- Scrubber_pm.ID.PUT
|
||||||
- Scrubber_pm.ID.firstName.GET
|
- Scrubber_pm.ID.firstName.GET
|
||||||
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
|
||||||
services do not rely upon anything being returned in the response. This is what the
|
services do not rely upon anything being returned in the response. This is what the
|
||||||
various services like SetResponseBody and SetResponseStatus services are for. A response
|
various services like SetResponseBody and SetResponseStatus services are for. A response
|
||||||
value is only helpful if the developers want to use it for debug purposes.
|
value is only helpful if the developers want to use it for debug purposes.
|
||||||
|
|
||||||
History : (Date, Initials, Notes)
|
History : (Date, Initials, Notes)
|
||||||
06/05/24 xxx Original programmer.
|
06/05/24 xxx Original programmer.
|
||||||
|
|
||||||
***********************************************************************************************************************/
|
***********************************************************************************************************************/
|
||||||
|
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
Declare Subroutine Pm_Services, Http_Services, Logging_Services
|
Declare Subroutine Pm_Services, Http_Services, Logging_Services
|
||||||
Declare function Error_Services, Logging_Services, Environment_Services, Datetime
|
Declare function Error_Services, Logging_Services, Environment_Services, Datetime
|
||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert API_SETUP
|
$insert API_SETUP
|
||||||
$insert HTTP_INSERTS
|
$insert HTTP_INSERTS
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Scrubbers\API'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Scrubbers\API'
|
||||||
LogDate = Oconv(Date(), 'D4/')
|
LogDate = Oconv(Date(), 'D4/')
|
||||||
LogTime = Oconv(Time(), 'MTS')
|
LogTime = Oconv(Time(), 'MTS')
|
||||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Tool Log.csv'
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Tool Log.csv'
|
||||||
Headers = 'Logging DTM' : @FM : 'ScrubberID' : @FM : 'Notes' : @FM : 'Message'
|
Headers = 'Logging DTM' : @FM : 'ScrubberID' : @FM : 'Notes' : @FM : 'Message'
|
||||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
||||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||||
|
|
||||||
GoToAPI else
|
GoToAPI else
|
||||||
// The specific resource endpoint doesn't have a API handler yet.
|
// The specific resource endpoint doesn't have a API handler yet.
|
||||||
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Return Response OR ''
|
Return Response OR ''
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Endpoint Handlers
|
// Endpoint Handlers
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
API scrubber_pm.POST
|
API scrubber_pm.POST
|
||||||
Body = HTTP_Services('GetHTTPPostString')
|
Body = HTTP_Services('GetHTTPPostString')
|
||||||
If Body NE '' then
|
If Body NE '' then
|
||||||
// The POST string will have been encoded so use percent (URL) decoding.
|
// The POST string will have been encoded so use percent (URL) decoding.
|
||||||
PMJson = HTTP_Services('DecodePercentString', Body)
|
PMJson = HTTP_Services('DecodePercentString', Body)
|
||||||
ParseResponse = SRP_JSON(objJson, 'PARSE', PMJson)
|
ParseResponse = SRP_JSON(objJson, 'PARSE', PMJson)
|
||||||
If (ParseResponse EQ '') then
|
If (ParseResponse EQ '') then
|
||||||
EquipmentID = SRP_JSON(objJson, 'GetValue', 'EquipmentId')
|
EquipmentID = SRP_JSON(objJson, 'GetValue', 'EquipmentId')
|
||||||
User = SRP_JSON(objJson, 'GetValue', 'User')
|
User = SRP_JSON(objJson, 'GetValue', 'User')
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 400, 'Unable to parse the JSON data from the request.')
|
HTTP_Services('SetResponseStatus', 400, 'Unable to parse the JSON data from the request.')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
HTTP_Services('SetResponseStatus', 400, 'JSON object is missing in the body of the request.')
|
HTTP_Services('SetResponseStatus', 400, 'JSON object is missing in the body of the request.')
|
||||||
end
|
end
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API scrubber_pm.HEAD
|
API scrubber_pm.HEAD
|
||||||
API scrubber_pm.GET
|
API scrubber_pm.GET
|
||||||
|
|
||||||
HTTP_Resource_Services('LoremIpsum')
|
HTTP_Resource_Services('LoremIpsum')
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
API scrubber_pm.ID.HEAD
|
API scrubber_pm.ID.HEAD
|
||||||
API scrubber_pm.ID.GET
|
API scrubber_pm.ID.GET
|
||||||
|
|
||||||
ScrubberID = EndpointSegment
|
ScrubberID = EndpointSegment
|
||||||
IF RowExists('TOOL', ScrubberID) then
|
IF RowExists('TOOL', ScrubberID) then
|
||||||
Pm_Services('CompleteScrubberPM', ScrubberID)
|
Pm_Services('CompleteScrubberPM', ScrubberID)
|
||||||
If Error_Services('HasError') then
|
If Error_Services('HasError') then
|
||||||
ErrMsg = Error_Services('GetMessage')
|
ErrMsg = Error_Services('GetMessage')
|
||||||
HTTP_Services('SetResponseStatus', 500, ErrMsg)
|
HTTP_Services('SetResponseStatus', 500, ErrMsg)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = ScrubberID
|
LogData<2> = ScrubberID
|
||||||
LogData<3> = 'Error'
|
LogData<3> = 'Error'
|
||||||
LogData<4> = ErrMsg
|
LogData<4> = ErrMsg
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
end else
|
end else
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = ScrubberID
|
LogData<2> = ScrubberID
|
||||||
LogData<3> = 'Success'
|
LogData<3> = 'Success'
|
||||||
LogData<4> = 'Scrubber PM Completion was successful'
|
LogData<4> = 'Scrubber PM Completion was successful'
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
ErrMsg = 'Scrubber does not exist!'
|
ErrMsg = 'Scrubber does not exist!'
|
||||||
HTTP_Services('SetResponseStatus', 500, ErrMsg)
|
HTTP_Services('SetResponseStatus', 500, ErrMsg)
|
||||||
LogData = ''
|
LogData = ''
|
||||||
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
LogData<1> = OConv(Datetime(), 'DT2/^H')
|
||||||
LogData<2> = ScrubberID
|
LogData<2> = ScrubberID
|
||||||
LogData<3> = 'Error'
|
LogData<3> = 'Error'
|
||||||
LogData<4> = ErrMsg
|
LogData<4> = ErrMsg
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
end
|
end
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,106 +1,106 @@
|
|||||||
Compile function System_Healthcheck_Services(@Service, @Params)
|
Compile function System_Healthcheck_Services(@Service, @Params)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
$insert LOGICAL
|
$insert LOGICAL
|
||||||
$Insert ENGINE_HEALTH_EQUATES
|
$Insert ENGINE_HEALTH_EQUATES
|
||||||
|
|
||||||
Declare Subroutine Error_Services, SRP_Json
|
Declare Subroutine Error_Services, SRP_Json
|
||||||
Declare function System_Healthcheck_Services, Error_Services, SRP_Datetime, SRP_Json
|
Declare function System_Healthcheck_Services, Error_Services, SRP_Datetime, SRP_Json
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
|
|
||||||
Return Response or ""
|
Return Response or ""
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// SERVICES
|
// SERVICES
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Service GetEngineLastRunDTM(EngineID)
|
Service GetEngineLastRunDTM(EngineID)
|
||||||
If EngineID NE '' then
|
If EngineID NE '' then
|
||||||
If RowExists('APP_INFO', EngineID) then
|
If RowExists('APP_INFO', EngineID) then
|
||||||
Open "APP_INFO" To AITable then
|
Open "APP_INFO" To AITable then
|
||||||
LastRunDTM = ''
|
LastRunDTM = ''
|
||||||
ReadV LastRunDTM From AITable, EngineID, 1 Then
|
ReadV LastRunDTM From AITable, EngineID, 1 Then
|
||||||
If LastRunDTM NE '' then
|
If LastRunDTM NE '' then
|
||||||
Response = LastRunDTM
|
Response = LastRunDTM
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Last Run Time not found')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Last Run Time not found')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Error reading specified engine record')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Error reading specified engine record')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Unable to open APP_INFO table')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: Unable to open APP_INFO table')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: No engine record found')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: No engine record found')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: No Engine ID entered')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineLastRunDTM: No Engine ID entered')
|
||||||
end
|
end
|
||||||
End Service
|
End Service
|
||||||
|
|
||||||
Service GetEngineHealthInfo(EngineID)
|
Service GetEngineHealthInfo(EngineID)
|
||||||
EngineHealthInfo = ''
|
EngineHealthInfo = ''
|
||||||
If EngineID NE '' then
|
If EngineID NE '' then
|
||||||
If RowExists('APP_INFO', EngineID) then
|
If RowExists('APP_INFO', EngineID) then
|
||||||
LastRunDTM = System_HealthCheck_Services('GetEngineLastRunDTM', EngineID)
|
LastRunDTM = System_HealthCheck_Services('GetEngineLastRunDTM', EngineID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
CurrDTM = SRP_Datetime('Now')
|
CurrDTM = SRP_Datetime('Now')
|
||||||
EngineHealthThreshold = XLATE('APP_INFO', 'ENGINE_HEALTH_THRESHOLD_MINUTES', 1, 'X')
|
EngineHealthThreshold = XLATE('APP_INFO', 'ENGINE_HEALTH_THRESHOLD_MINUTES', 1, 'X')
|
||||||
MinutesSinceLastRun = SRP_Datetime('MinuteSpan', LastRunDTM, CurrDTM)
|
MinutesSinceLastRun = SRP_Datetime('MinuteSpan', LastRunDTM, CurrDTM)
|
||||||
Healthy = MinutesSinceLastRun LT EngineHealthThreshold
|
Healthy = MinutesSinceLastRun LT EngineHealthThreshold
|
||||||
EngineHealthInfo<ENGINE_HEALTH_ENGINE_ID$> = EngineID
|
EngineHealthInfo<ENGINE_HEALTH_ENGINE_ID$> = EngineID
|
||||||
EngineHealthInfo<ENGINE_HEALTH_LAST_RUN_DTM$> = LastRunDTM
|
EngineHealthInfo<ENGINE_HEALTH_LAST_RUN_DTM$> = LastRunDTM
|
||||||
EngineHealthInfo<ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$> = MinutesSinceLastRun
|
EngineHealthInfo<ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$> = MinutesSinceLastRun
|
||||||
EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$> = Healthy
|
EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$> = Healthy
|
||||||
Response = EngineHealthInfo
|
Response = EngineHealthInfo
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', Error_Services('GetMessage'))
|
Error_Services('Add', Error_Services('GetMessage'))
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineHealth: No engine record found')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineHealth: No engine record found')
|
||||||
end
|
end
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineHealth: No Engine ID entered')
|
Error_Services('Add', 'Error in System_Healthcheck_Services -> GetEngineHealth: No Engine ID entered')
|
||||||
end
|
end
|
||||||
end service
|
end service
|
||||||
|
|
||||||
Service ConvertEngineHealthInfoToJSON(EngineHealthInfo, ItemURL)
|
Service ConvertEngineHealthInfoToJSON(EngineHealthInfo, ItemURL)
|
||||||
objJSON = ''
|
objJSON = ''
|
||||||
If SRP_JSON(objJSON, 'New', 'Object') then
|
If SRP_JSON(objJSON, 'New', 'Object') then
|
||||||
objEngine = ''
|
objEngine = ''
|
||||||
If SRP_JSON(objEngine, 'New', 'Object') then
|
If SRP_JSON(objEngine, 'New', 'Object') then
|
||||||
SRP_JSON(objEngine, 'SetValue', 'EngineID', EngineHealthInfo<ENGINE_HEALTH_ENGINE_ID$>)
|
SRP_JSON(objEngine, 'SetValue', 'EngineID', EngineHealthInfo<ENGINE_HEALTH_ENGINE_ID$>)
|
||||||
SRP_JSON(objEngine, 'SetValue', 'LastRunDTM', EngineHealthInfo<ENGINE_HEALTH_LAST_RUN_DTM$>)
|
SRP_JSON(objEngine, 'SetValue', 'LastRunDTM', EngineHealthInfo<ENGINE_HEALTH_LAST_RUN_DTM$>)
|
||||||
SRP_JSON(objEngine, 'SetValue', 'MinutesSinceLastRun', EngineHealthInfo<ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$>)
|
SRP_JSON(objEngine, 'SetValue', 'MinutesSinceLastRun', EngineHealthInfo<ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$>)
|
||||||
SRP_JSON(objEngine, 'SetValue', 'Healthy', EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$>)
|
SRP_JSON(objEngine, 'SetValue', 'Healthy', EngineHealthInfo<ENGINE_HEALTH_HEALTH_STATUS$>)
|
||||||
SRP_JSON(objJSON, 'Set', 'Engine', objEngine)
|
SRP_JSON(objJSON, 'Set', 'Engine', objEngine)
|
||||||
SRP_JSON(objEngine, 'Release')
|
SRP_JSON(objEngine, 'Release')
|
||||||
end
|
end
|
||||||
|
|
||||||
If itemURL NE '' then
|
If itemURL NE '' then
|
||||||
objLinks = ''
|
objLinks = ''
|
||||||
If SRP_JSON(objLinks, 'New', 'Object') then
|
If SRP_JSON(objLinks, 'New', 'Object') then
|
||||||
objLink = ''
|
objLink = ''
|
||||||
If SRP_JSON(objLink, 'New', 'Object') then
|
If SRP_JSON(objLink, 'New', 'Object') then
|
||||||
SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String')
|
SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String')
|
||||||
SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String')
|
SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String')
|
||||||
SRP_JSON(objLinks, 'Set', 'self', objLink)
|
SRP_JSON(objLinks, 'Set', 'self', objLink)
|
||||||
SRP_JSON(objLink, 'Release')
|
SRP_JSON(objLink, 'Release')
|
||||||
end
|
end
|
||||||
SRP_JSON(objJSON, 'Set', '_links', objLinks)
|
SRP_JSON(objJSON, 'Set', '_links', objLinks)
|
||||||
SRP_JSON(objLinks, 'Release')
|
SRP_JSON(objLinks, 'Release')
|
||||||
end
|
end
|
||||||
SRP_JSON(objJSON, 'SetValue', '_class', 'resource')
|
SRP_JSON(objJSON, 'SetValue', '_class', 'resource')
|
||||||
end
|
end
|
||||||
JSON = SRP_JSON(objJSON, 'Stringify', 'Styled')
|
JSON = SRP_JSON(objJSON, 'Stringify', 'Styled')
|
||||||
SRP_JSON(objJSON, 'Release')
|
SRP_JSON(objJSON, 'Release')
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error creating JSON Object')
|
Error_Services('Add', 'Error creating JSON Object')
|
||||||
end
|
end
|
||||||
Response = JSON
|
Response = JSON
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,13 +86,13 @@ Testing:
|
|||||||
* DebuggerOn = Get_Env(AttributeList)
|
* DebuggerOn = Get_Env(AttributeList)
|
||||||
* DebuggerOn = AttributeList
|
* DebuggerOn = AttributeList
|
||||||
|
|
||||||
TickCount = GetTickCount()
|
* TickCount = GetTickCount()
|
||||||
Response = 'Hello World2! Ticks: ':TickCount:' Debugger is off'
|
* Response = 'Hello World2! Ticks: ':TickCount:' Debugger is off'
|
||||||
OSWrite Response on 'D:\tmp\HelloWorld2.txt'
|
* OSWrite Response on 'D:\tmp\HelloWorld2.txt'
|
||||||
|
*
|
||||||
|
* Response = Param1
|
||||||
|
|
||||||
Response = Param1
|
return
|
||||||
|
|
||||||
return Response
|
|
||||||
|
|
||||||
* Testing:
|
* Testing:
|
||||||
*
|
*
|
||||||
|
@ -94,29 +94,32 @@ $Insert PS_EQUATES
|
|||||||
|
|
||||||
Main:
|
Main:
|
||||||
debug
|
debug
|
||||||
|
|
||||||
|
TaskID = RTI_Task_Submit('', 'TEST_DANIEL2', '', '', '')
|
||||||
|
|
||||||
* Slots = Xlate('WM_OUT', '173011*1*2', 'SLOT_WAFER_ID', 'X')
|
* Slots = Xlate('WM_OUT', '173011*1*2', 'SLOT_WAFER_ID', 'X')
|
||||||
* RDSNos = Xlate('WM_OUT', '173011*1*3', 'RDS', 'X')
|
* RDSNos = Xlate('WM_OUT', '173011*1*3', 'RDS', 'X')
|
||||||
|
|
||||||
WONo = 172637
|
* WONo = 172637
|
||||||
WOStep = 1
|
* WOStep = 1
|
||||||
CassNo = 30
|
* CassNo = 30
|
||||||
WMOKey = WONo:'*':WOStep:'*':CassNo
|
* WMOKey = WONo:'*':WOStep:'*':CassNo
|
||||||
WOMatKey = WONo:'*':CassNo
|
* WOMatKey = WONo:'*':CassNo
|
||||||
NCRNos = Xlate('WM_OUT', WMOKey, 'SLOT_NCR', 'X')
|
* NCRNos = Xlate('WM_OUT', WMOKey, 'SLOT_NCR', 'X')
|
||||||
NumScrapSlots = 0
|
* NumScrapSlots = 0
|
||||||
If NCRNos NE '' then
|
* If NCRNos NE '' then
|
||||||
For each NCRNo in NCRNos using @VM
|
* For each NCRNo in NCRNos using @VM
|
||||||
NumScrapSlots += (NCRNo NE '')
|
* NumScrapSlots += (NCRNo NE '')
|
||||||
Next NCRNo
|
* Next NCRNo
|
||||||
end
|
* end
|
||||||
|
*
|
||||||
SchedCassQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
* SchedCassQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
||||||
|
*
|
||||||
If NumScrapSlots GE SchedCassQty then
|
* If NumScrapSlots GE SchedCassQty then
|
||||||
FullBoxReject = True$
|
* FullBoxReject = True$
|
||||||
end else
|
* end else
|
||||||
FullBoxReject = False$
|
* FullBoxReject = False$
|
||||||
end
|
* end
|
||||||
|
|
||||||
* Version = ''
|
* Version = ''
|
||||||
* GetEngineVersion(Version)
|
* GetEngineVersion(Version)
|
||||||
@ -124,7 +127,7 @@ Main:
|
|||||||
* rv = RTI_Xlate_Controller('EnableCache')
|
* rv = RTI_Xlate_Controller('EnableCache')
|
||||||
* end
|
* end
|
||||||
|
|
||||||
return
|
return TaskID
|
||||||
|
|
||||||
* Path = Drive()
|
* Path = Drive()
|
||||||
* UNCPath = SRP_Path("PathToUnc", Path)
|
* UNCPath = SRP_Path("PathToUnc", Path)
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
Compile function Test_Wafer_Counter(@Test)
|
Compile function Test_Wafer_Counter(@Test)
|
||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
$Insert APP_INSERTS
|
$Insert APP_INSERTS
|
||||||
|
|
||||||
Declare function Wafer_Counter_Services, Error_Services
|
Declare function Wafer_Counter_Services, Error_Services
|
||||||
|
|
||||||
// TODO: Code to run before each test goes here
|
// TODO: Code to run before each test goes here
|
||||||
|
|
||||||
GotoTest
|
GotoTest
|
||||||
|
|
||||||
// TODO: Code to run after each test goes here
|
// TODO: Code to run after each test goes here
|
||||||
|
|
||||||
Return TestResult or 1
|
Return TestResult or 1
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// TESTS
|
// TESTS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Test Test1
|
Test Test1
|
||||||
|
|
||||||
FileData = 'T25':CRLF$:'P1FFFFFF'
|
FileData = 'T25':CRLF$:'P1FFFFFF'
|
||||||
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
||||||
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
||||||
Assert Value equals 1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1
|
Assert Value equals 1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1:@VM:1
|
||||||
|
|
||||||
End Test
|
End Test
|
||||||
|
|
||||||
Test Test2
|
Test Test2
|
||||||
|
|
||||||
FileData = 'T00':CRLF$:'P0000000'
|
FileData = 'T00':CRLF$:'P0000000'
|
||||||
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
||||||
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
||||||
Assert Value equals 0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0
|
Assert Value equals 0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0:@VM:0
|
||||||
|
|
||||||
End Test
|
End Test
|
||||||
|
|
||||||
Test Test3
|
Test Test3
|
||||||
|
|
||||||
FileData = 'T12':CRLF$:'P0AAAAAA'
|
FileData = 'T12':CRLF$:'P0AAAAAA'
|
||||||
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
||||||
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
||||||
Assert Value equals 0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0
|
Assert Value equals 0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0
|
||||||
|
|
||||||
end test
|
end test
|
||||||
|
|
||||||
Test Test4
|
Test Test4
|
||||||
|
|
||||||
FileData = 'T13':CRLF$:'P1555555'
|
FileData = 'T13':CRLF$:'P1555555'
|
||||||
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
Value = Wafer_Counter_Services('ConvertWaferData', FileData)
|
||||||
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
If Error_Services('HasError') then Value = Error_Services('GetMessage')
|
||||||
Assert Value equals 1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1
|
Assert Value equals 1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1:@VM:0:@VM:1
|
||||||
|
|
||||||
end test
|
end test
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
compile insert CHANGE_LOG_EQUATES
|
compile insert CHANGE_LOG_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 18/07/2024
|
Written : 18/07/2024
|
||||||
Description : Insert for Table CHANGE_LOG
|
Description : Insert for Table CHANGE_LOG
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
Equ CHANGE_LOG_CHANGE_ID$ To 0
|
Equ CHANGE_LOG_CHANGE_ID$ To 0
|
||||||
Equ CHANGE_LOG_CHANGE_DTM$ To 1
|
Equ CHANGE_LOG_CHANGE_DTM$ To 1
|
||||||
Equ CHANGE_LOG_APPLICATION$ To 2
|
Equ CHANGE_LOG_APPLICATION$ To 2
|
||||||
Equ CHANGE_LOG_ENTITY_TYPE$ To 3
|
Equ CHANGE_LOG_ENTITY_TYPE$ To 3
|
||||||
Equ CHANGE_LOG_ENTITY_CLASS$ To 4
|
Equ CHANGE_LOG_ENTITY_CLASS$ To 4
|
||||||
Equ CHANGE_LOG_ENTITY_NAME$ To 5
|
Equ CHANGE_LOG_ENTITY_NAME$ To 5
|
||||||
Equ CHANGE_LOG_UPDATED_BY$ To 6
|
Equ CHANGE_LOG_UPDATED_BY$ To 6
|
||||||
Equ CHANGE_LOG_ENVIRONMENT$ To 7
|
Equ CHANGE_LOG_ENVIRONMENT$ To 7
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
compile insert ENGINE_HEALTH_EQUATES
|
compile insert ENGINE_HEALTH_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 05/02/2010
|
Written : 05/02/2010
|
||||||
Description : Insert for Table EMAIL_BOX
|
Description : Insert for Table EMAIL_BOX
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
EQU ENGINE_HEALTH_ENGINE_ID$ to 1
|
EQU ENGINE_HEALTH_ENGINE_ID$ to 1
|
||||||
EQU ENGINE_HEALTH_LAST_RUN_DTM$ to 2
|
EQU ENGINE_HEALTH_LAST_RUN_DTM$ to 2
|
||||||
EQU ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$ to 3
|
EQU ENGINE_HEALTH_MINUTES_SINCE_LAST_RUN$ to 3
|
||||||
EQU ENGINE_HEALTH_HEALTH_STATUS$ to 4
|
EQU ENGINE_HEALTH_HEALTH_STATUS$ to 4
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ Declare function NDW_Messaging_Processor_Events, RetStack, SRP_Encode, SRP_De
|
|||||||
Declare subroutine Error_Services, Messaging_Services, Memory_Services, SRP_JSON, SRP_COM
|
Declare subroutine Error_Services, Messaging_Services, Memory_Services, SRP_JSON, SRP_COM
|
||||||
Declare subroutine NDW_Messaging_Processor_Events, SRP_Stopwatch, Send_Event, Send_Message, RTP27
|
Declare subroutine NDW_Messaging_Processor_Events, SRP_Stopwatch, Send_Event, Send_Message, RTP27
|
||||||
|
|
||||||
Equ Server.Name$ to 'MESTSA01EC'
|
Equ Server.Name$ to 'MESSA01EC'
|
||||||
Equ Server.Port$ to 25000
|
Equ Server.Port$ to 25000
|
||||||
Equ Server.KeepAlive$ to 60000
|
Equ Server.KeepAlive$ to 60000
|
||||||
Equ MessageProcessor$ to 'NDW_MESSAGING_PROCESSOR'
|
Equ MessageProcessor$ to 'NDW_MESSAGING_PROCESSOR'
|
||||||
|
@ -1,38 +1,38 @@
|
|||||||
compile insert REACTOR_DAILY_UPTIME_EQUATES
|
compile insert REACTOR_DAILY_UPTIME_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 21/08/2024
|
Written : 21/08/2024
|
||||||
Description : Insert for Table REACTOR_DAILY_UPTIME
|
Description : Insert for Table REACTOR_DAILY_UPTIME
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
Equ REACTOR_DAILY_UPTIME_DATE$ To 0
|
Equ REACTOR_DAILY_UPTIME_DATE$ To 0
|
||||||
Equ REACTOR_DAILY_UPTIME_REACT_TYPE$ To 0
|
Equ REACTOR_DAILY_UPTIME_REACT_TYPE$ To 0
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_PROD_PERCENTAGE$ To 1
|
Equ REACTOR_DAILY_UPTIME_TOTAL_PROD_PERCENTAGE$ To 1
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_PROD_MINUTES$ To 2
|
Equ REACTOR_DAILY_UPTIME_TOTAL_PROD_MINUTES$ To 2
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_ENG_PERCENTAGE$ To 3
|
Equ REACTOR_DAILY_UPTIME_TOTAL_ENG_PERCENTAGE$ To 3
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_ENG_MINUTES$ To 4
|
Equ REACTOR_DAILY_UPTIME_TOTAL_ENG_MINUTES$ To 4
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_UNSCHED_PERCENTAGE$ To 5
|
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_UNSCHED_PERCENTAGE$ To 5
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_UNSCHED_MINUTES$ To 6
|
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_UNSCHED_MINUTES$ To 6
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_SCHED_PERCENTAGE$ To 7
|
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_SCHED_PERCENTAGE$ To 7
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_SCHED_MINUTES$ To 8
|
Equ REACTOR_DAILY_UPTIME_TOTAL_DOWN_SCHED_MINUTES$ To 8
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTORS$ To 9
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTORS$ To 9
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_PROD_PERCENTAGE$ To 10
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_PROD_PERCENTAGE$ To 10
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_PROD_MINUTES$ To 11
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_PROD_MINUTES$ To 11
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_ENG_PERCENTAGE$ To 12
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_ENG_PERCENTAGE$ To 12
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_ENG_MINUTES$ To 13
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_ENG_MINUTES$ To 13
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_UNSCHED_PERCENTAGE$ To 14
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_UNSCHED_PERCENTAGE$ To 14
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_UNSCHED_MINUTES$ To 15
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_UNSCHED_MINUTES$ To 15
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_SCHED_PERCENTAGE$ To 16
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_SCHED_PERCENTAGE$ To 16
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_SCHED_MINUTES$ To 17
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_DOWN_SCHED_MINUTES$ To 17
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_IDLE_PERCENTAGE$ To 18
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_IDLE_PERCENTAGE$ To 18
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_IDLE_MINUTES$ To 19
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_IDLE_MINUTES$ To 19
|
||||||
Equ REACTOR_DAILY_UPTIME_EXCLUDED_REACTORS$ To 20
|
Equ REACTOR_DAILY_UPTIME_EXCLUDED_REACTORS$ To 20
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_UPTIME_PERCENTAGE$ To 21
|
Equ REACTOR_DAILY_UPTIME_TOTAL_UPTIME_PERCENTAGE$ To 21
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_IDLE_PERCENTAGE$ To 22
|
Equ REACTOR_DAILY_UPTIME_TOTAL_IDLE_PERCENTAGE$ To 22
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_IDLE_MINUTES$ To 23
|
Equ REACTOR_DAILY_UPTIME_TOTAL_IDLE_MINUTES$ To 23
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_UPTIME_MINUTES$ To 24
|
Equ REACTOR_DAILY_UPTIME_TOTAL_UPTIME_MINUTES$ To 24
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_AVAIL_MINUTES$ To 25
|
Equ REACTOR_DAILY_UPTIME_TOTAL_AVAIL_MINUTES$ To 25
|
||||||
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_SINGLE_LL$ To 26
|
Equ REACTOR_DAILY_UPTIME_INCL_REACTOR_SINGLE_LL$ To 26
|
||||||
Equ REACTOR_DAILY_UPTIME_TOTAL_SINGLE_LL$ To 27
|
Equ REACTOR_DAILY_UPTIME_TOTAL_SINGLE_LL$ To 27
|
||||||
|
|
||||||
|
@ -1,207 +1,207 @@
|
|||||||
compile insert SRP_EDITOR_TEMP_MSG_EQUATES_SYSPROG
|
compile insert SRP_EDITOR_TEMP_MSG_EQUATES_SYSPROG
|
||||||
|
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*
|
*
|
||||||
* Product : OpenInsight for Workgroups
|
* Product : OpenInsight for Workgroups
|
||||||
* Version : 3.5
|
* Version : 3.5
|
||||||
*
|
*
|
||||||
* History : (date, initials, notes)
|
* History : (date, initials, notes)
|
||||||
* 12/15/95 apk Original programmer.
|
* 12/15/95 apk Original programmer.
|
||||||
* 02/26/96 cp Changed OK return value to "" from 0 (backwards compat.)
|
* 02/26/96 cp Changed OK return value to "" from 0 (backwards compat.)
|
||||||
* 03/28/96 cp Added MHELP$, MREQRESP$, and MBEEP$ fields
|
* 03/28/96 cp Added MHELP$, MREQRESP$, and MBEEP$ fields
|
||||||
* Commented message structure and instructions
|
* Commented message structure and instructions
|
||||||
* 06/24/97 cp Added G (gauge) type, removed unused equates
|
* 06/24/97 cp Added G (gauge) type, removed unused equates
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
|
|
||||||
declare subroutine Msg ;* Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
|
declare subroutine Msg ;* Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
|
||||||
declare function Msg ;* Ans = Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
|
declare function Msg ;* Ans = Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
|
||||||
|
|
||||||
* message structure field definitions
|
* message structure field definitions
|
||||||
equ MTEXT$ to 1 ;* the text to display in the message, multiple lines delimited by @tm, cr/lf, or "|"
|
equ MTEXT$ to 1 ;* the text to display in the message, multiple lines delimited by @tm, cr/lf, or "|"
|
||||||
equ MTYPE$ to 2 ;* the message type, defaults to "BO" (see below)
|
equ MTYPE$ to 2 ;* the message type, defaults to "BO" (see below)
|
||||||
equ MMODAL$ to 3 ;* modality of message, defaults to "A" (see below)
|
equ MMODAL$ to 3 ;* modality of message, defaults to "A" (see below)
|
||||||
equ MICON$ to 4 ;* icon to display (see below)
|
equ MICON$ to 4 ;* icon to display (see below)
|
||||||
equ MDEFBTN$ to 5 ;* default button (1 for first, 2 for second, etc.)
|
equ MDEFBTN$ to 5 ;* default button (1 for first, 2 for second, etc.)
|
||||||
equ MCOL$ to 6 ;* message h-pos in pixels, or -2 (center screen, the default), -1 (center parent)
|
equ MCOL$ to 6 ;* message h-pos in pixels, or -2 (center screen, the default), -1 (center parent)
|
||||||
equ MROW$ to 7 ;* message v-pos in pixels
|
equ MROW$ to 7 ;* message v-pos in pixels
|
||||||
equ MJUST$ to 8 ;* justification: T (text, the default), L (left), R (right), C (center)
|
equ MJUST$ to 8 ;* justification: T (text, the default), L (left), R (right), C (center)
|
||||||
equ MBKCOLOR$ to 9 ;* background color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
|
equ MBKCOLOR$ to 9 ;* background color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
|
||||||
equ MFGCOLOR$ to 10 ;* foreground color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
|
equ MFGCOLOR$ to 10 ;* foreground color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
|
||||||
equ MTEXTWIDTH$ to 11 ;* the message width (or the response field width for response messages)
|
equ MTEXTWIDTH$ to 11 ;* the message width (or the response field width for response messages)
|
||||||
equ MCAPTION$ to 12 ;* the message title
|
equ MCAPTION$ to 12 ;* the message title
|
||||||
equ MVALID$ to 13 ;* for response messages, this is the validation pattern (ie. (MD0) for integer)
|
equ MVALID$ to 13 ;* for response messages, this is the validation pattern (ie. (MD0) for integer)
|
||||||
equ MDEFINPUT$ to 14 ;* for reponse messages, this is the default response
|
equ MDEFINPUT$ to 14 ;* for reponse messages, this is the default response
|
||||||
equ MMASKINPUT$ to 15 ;* boolean, true for password (masked) input, false (default) for readable input
|
equ MMASKINPUT$ to 15 ;* boolean, true for password (masked) input, false (default) for readable input
|
||||||
equ MBITMAP$ to 16 ;* name of a bitmap registered in repository (as it appears in the outliner)
|
equ MBITMAP$ to 16 ;* name of a bitmap registered in repository (as it appears in the outliner)
|
||||||
equ MCLIPBMP$ to 17 ;* boolean, true to clip bitmaps, false to resize (see IMAGECLIP property)
|
equ MCLIPBMP$ to 17 ;* boolean, true to clip bitmaps, false to resize (see IMAGECLIP property)
|
||||||
equ MFONT$ to 18 ;* font structure for the text of the message
|
equ MFONT$ to 18 ;* font structure for the text of the message
|
||||||
equ MLITERAL$ to 19 ;* boolean, defaults to false, true specifies that default value is a function (see below)
|
equ MLITERAL$ to 19 ;* boolean, defaults to false, true specifies that default value is a function (see below)
|
||||||
equ MHELP$ to 20 ;* help button, Type:@vm:Specifier:@vm:Text (see below), defaults to null (no help)
|
equ MHELP$ to 20 ;* help button, Type:@vm:Specifier:@vm:Text (see below), defaults to null (no help)
|
||||||
equ MREQRESP$ to 21 ;* boolean, for type "R" messages, false allows nulls (default) while true doesn't
|
equ MREQRESP$ to 21 ;* boolean, for type "R" messages, false allows nulls (default) while true doesn't
|
||||||
equ MBEEP$ to 22 ;* integer, specifies beep (see MessageBeep in the Windows API)
|
equ MBEEP$ to 22 ;* integer, specifies beep (see MessageBeep in the Windows API)
|
||||||
equ MEXTENT$ to 23 ;* integer, specifies extent of the gauge (number of items to process for type="G")
|
equ MEXTENT$ to 23 ;* integer, specifies extent of the gauge (number of items to process for type="G")
|
||||||
equ MNUMFIELDS$ to 23
|
equ MNUMFIELDS$ to 23
|
||||||
|
|
||||||
|
|
||||||
* MTYPE$ details:
|
* MTYPE$ details:
|
||||||
*
|
*
|
||||||
* there are six base types, B (buttons), R (response), U (up), and D (down),
|
* there are six base types, B (buttons), R (response), U (up), and D (down),
|
||||||
* T (timed), and G (gauge)
|
* T (timed), and G (gauge)
|
||||||
*
|
*
|
||||||
* the button type has several pre-defined button sets which are localized
|
* the button type has several pre-defined button sets which are localized
|
||||||
* using entries from the SYSTEM_RESOURCES record in the SYSENV table; for
|
* using entries from the SYSTEM_RESOURCES record in the SYSENV table; for
|
||||||
* non-standard labels, the buttons can be specified in a comma-delimited
|
* non-standard labels, the buttons can be specified in a comma-delimited
|
||||||
* list, like "B&One,&Two,&Three" (where the & specifies the accelerator)
|
* list, like "B&One,&Two,&Three" (where the & specifies the accelerator)
|
||||||
*
|
*
|
||||||
* B Type Description
|
* B Type Description
|
||||||
* ------ --------------------
|
* ------ --------------------
|
||||||
* BO OK
|
* BO OK
|
||||||
* BOC OK/Cancel
|
* BOC OK/Cancel
|
||||||
* BNY Yes/No
|
* BNY Yes/No
|
||||||
* BNYC Yes/No/Cancel
|
* BNYC Yes/No/Cancel
|
||||||
* BRC Retry/Cancel
|
* BRC Retry/Cancel
|
||||||
* BAR Abort/Retry
|
* BAR Abort/Retry
|
||||||
* BARI Abort/Retry/Ignore
|
* BARI Abort/Retry/Ignore
|
||||||
* B{list} User-defined buttons
|
* B{list} User-defined buttons
|
||||||
*
|
*
|
||||||
* the response type displays an edit field and OK and Cancel buttons;
|
* the response type displays an edit field and OK and Cancel buttons;
|
||||||
* the optional sub-types are C (upper-case only) and E (escape or
|
* the optional sub-types are C (upper-case only) and E (escape or
|
||||||
* cancel button returns escape character instead of default response);
|
* cancel button returns escape character instead of default response);
|
||||||
* for example, the following types are valid: "R", "RC", "RE", "RCE"
|
* for example, the following types are valid: "R", "RC", "RE", "RCE"
|
||||||
*
|
*
|
||||||
* for B and R types, the type can be preceded with an N to specify that
|
* for B and R types, the type can be preceded with an N to specify that
|
||||||
* the default value for the message is to be returned without the message
|
* the default value for the message is to be returned without the message
|
||||||
* being displayed; this is one way to change messages from interactive
|
* being displayed; this is one way to change messages from interactive
|
||||||
* to non-interactive for batch processes; for example, instead of "BARI",
|
* to non-interactive for batch processes; for example, instead of "BARI",
|
||||||
* pass "NBARI" (meaning don't display the abort/retry/ignore message)
|
* pass "NBARI" (meaning don't display the abort/retry/ignore message)
|
||||||
*
|
*
|
||||||
* to display a message while processing, use the "U" type:
|
* to display a message while processing, use the "U" type:
|
||||||
*
|
*
|
||||||
* Def = ""
|
* Def = ""
|
||||||
* Def<MTEXT$> = "Processing..."
|
* Def<MTEXT$> = "Processing..."
|
||||||
* Def<MTYPE$> = "U"
|
* Def<MTYPE$> = "U"
|
||||||
* MsgUp = Msg(@window, Def) ;* display the processing message
|
* MsgUp = Msg(@window, Def) ;* display the processing message
|
||||||
* ...
|
* ...
|
||||||
* Msg(@window, MsgUp) ;* take down the processing message
|
* Msg(@window, MsgUp) ;* take down the processing message
|
||||||
*
|
*
|
||||||
* to display a message for a specific length of time, use the "T" type:
|
* to display a message for a specific length of time, use the "T" type:
|
||||||
*
|
*
|
||||||
* Def = ""
|
* Def = ""
|
||||||
* Def<MTEXT$> = "Waiting..."
|
* Def<MTEXT$> = "Waiting..."
|
||||||
* Def<MTYPE$> = "T2" ;* 2-second message
|
* Def<MTYPE$> = "T2" ;* 2-second message
|
||||||
* Msg(@window, Def)
|
* Msg(@window, Def)
|
||||||
*
|
*
|
||||||
* the optional sub-type for T type is A (asynchronous), which displays
|
* the optional sub-type for T type is A (asynchronous), which displays
|
||||||
* the message and returns (allowing processing to continue) and takes
|
* the message and returns (allowing processing to continue) and takes
|
||||||
* the message down after the specified period of time; since this relies
|
* the message down after the specified period of time; since this relies
|
||||||
* on a timer event, your event code must either complete within the
|
* on a timer event, your event code must either complete within the
|
||||||
* specified period of time or you must regularly use Yield() to allow
|
* specified period of time or you must regularly use Yield() to allow
|
||||||
* the processing of posted events (like the timer):
|
* the processing of posted events (like the timer):
|
||||||
*
|
*
|
||||||
* Def = ""
|
* Def = ""
|
||||||
* Def<MTYPE$> = "TA5" ;* 5-second splash-screen
|
* Def<MTYPE$> = "TA5" ;* 5-second splash-screen
|
||||||
* Msg(@window, Def, "SPLASHSCREEN")
|
* Msg(@window, Def, "SPLASHSCREEN")
|
||||||
* loop
|
* loop
|
||||||
* Done = AppLogonProcessing()
|
* Done = AppLogonProcessing()
|
||||||
* Yield()
|
* Yield()
|
||||||
* until Done
|
* until Done
|
||||||
* repeat
|
* repeat
|
||||||
*
|
*
|
||||||
* to display a gauge (percent bar), use the "G" type; sub-types are C (show
|
* to display a gauge (percent bar), use the "G" type; sub-types are C (show
|
||||||
* cancel button) and Y (yield on each cycle):
|
* cancel button) and Y (yield on each cycle):
|
||||||
*
|
*
|
||||||
* Def = ""
|
* Def = ""
|
||||||
* Def<MCAPTION$> = "Processing Orders..."
|
* Def<MCAPTION$> = "Processing Orders..."
|
||||||
* Def<MTYPE$ > = "GC"
|
* Def<MTYPE$ > = "GC"
|
||||||
* Def<MEXTENT$ > = OrderCnt
|
* Def<MEXTENT$ > = OrderCnt
|
||||||
* MsgUp = Msg(@window, Def)
|
* MsgUp = Msg(@window, Def)
|
||||||
* for Order = 1 to OrderCnt
|
* for Order = 1 to OrderCnt
|
||||||
* gosub ProcessOrder
|
* gosub ProcessOrder
|
||||||
* * update the gauge and check if cancel was pressed
|
* * update the gauge and check if cancel was pressed
|
||||||
* while Msg(@window, MsgUp, Order, MSGINSTUPDATE$)
|
* while Msg(@window, MsgUp, Order, MSGINSTUPDATE$)
|
||||||
* next Order
|
* next Order
|
||||||
* Msg(@window, MsgUp) ;* take down the gauge
|
* Msg(@window, MsgUp) ;* take down the gauge
|
||||||
|
|
||||||
* MMODAL$ detail:
|
* MMODAL$ detail:
|
||||||
*
|
*
|
||||||
* Code Modality Description
|
* Code Modality Description
|
||||||
* ----------- ----------- -----------------------------
|
* ----------- ----------- -----------------------------
|
||||||
* W Window only the parent is disabled
|
* W Window only the parent is disabled
|
||||||
* A (default) Application all OI windows are disabled
|
* A (default) Application all OI windows are disabled
|
||||||
* S System all applications are disabled
|
* S System all applications are disabled
|
||||||
|
|
||||||
* MICON$ detail:
|
* MICON$ detail:
|
||||||
*
|
*
|
||||||
* Code Icon
|
* Code Icon
|
||||||
* ---- ---------------
|
* ---- ---------------
|
||||||
* null None
|
* null None
|
||||||
* * Asterisk (Info)
|
* * Asterisk (Info)
|
||||||
* ? Question
|
* ? Question
|
||||||
* ! Exclaim (Warning)
|
* ! Exclaim (Warning)
|
||||||
* H Halt (Stop sign)
|
* H Halt (Stop sign)
|
||||||
* B User-specified bitmap (specified in MBITMAP$ field)
|
* B User-specified bitmap (specified in MBITMAP$ field)
|
||||||
|
|
||||||
* MLITERAL$ details (applies only to response type messages):
|
* MLITERAL$ details (applies only to response type messages):
|
||||||
*
|
*
|
||||||
* if MLITERAL$ is true, the Msg() function assumes that the default value is
|
* if MLITERAL$ is true, the Msg() function assumes that the default value is
|
||||||
* the name of a function which returns the default value for the message;
|
* the name of a function which returns the default value for the message;
|
||||||
* for example, if you wrote a function called CURRENTUSER which returned
|
* for example, if you wrote a function called CURRENTUSER which returned
|
||||||
* the user name of the current user, you could specify CURRENTUSER as the
|
* the user name of the current user, you could specify CURRENTUSER as the
|
||||||
* default value (MDEFINPUT$) and set MLITERAL$ to true, so that the current
|
* default value (MDEFINPUT$) and set MLITERAL$ to true, so that the current
|
||||||
* user name would be the default value for the message; parameters are
|
* user name would be the default value for the message; parameters are
|
||||||
* passed to the specified function depending on the number of parameters
|
* passed to the specified function depending on the number of parameters
|
||||||
* that are supported by the function:
|
* that are supported by the function:
|
||||||
*
|
*
|
||||||
* # Params Values Passed
|
* # Params Values Passed
|
||||||
* --------- --------------
|
* --------- --------------
|
||||||
* 0 None
|
* 0 None
|
||||||
* 1 MsgKey
|
* 1 MsgKey
|
||||||
* 2 or more MsgKey, MsgDef
|
* 2 or more MsgKey, MsgDef
|
||||||
|
|
||||||
* MHELP$ details:
|
* MHELP$ details:
|
||||||
*
|
*
|
||||||
* Type Description Specifier
|
* Type Description Specifier
|
||||||
* ---- ------------- -----------------
|
* ---- ------------- -----------------
|
||||||
* Q QuickHelp (AppNote) Name of AppNote
|
* Q QuickHelp (AppNote) Name of AppNote
|
||||||
* M Message Name of Message
|
* M Message Name of Message
|
||||||
* H WinHelp HelpFile,HelpID
|
* H WinHelp HelpFile,HelpID
|
||||||
* S Stored Procedure ProcName[,Param1]
|
* S Stored Procedure ProcName[,Param1]
|
||||||
*
|
*
|
||||||
* Note: Specify the AppNote, Message, HelpFile, or ProcName as it appears
|
* Note: Specify the AppNote, Message, HelpFile, or ProcName as it appears
|
||||||
* in the repository outliner. For example, the OINSIGHT.HLP file is
|
* in the repository outliner. For example, the OINSIGHT.HLP file is
|
||||||
* registered as OINSIGHT, so specify the HelpFile as "OINSIGHT" (look
|
* registered as OINSIGHT, so specify the HelpFile as "OINSIGHT" (look
|
||||||
* in the outline under "General", "Windows Components", "Help Files")
|
* in the outline under "General", "Windows Components", "Help Files")
|
||||||
*
|
*
|
||||||
* Text defaults to "&Help" or a localized equivalent
|
* Text defaults to "&Help" or a localized equivalent
|
||||||
|
|
||||||
* Replaceable message parameters:
|
* Replaceable message parameters:
|
||||||
*
|
*
|
||||||
* Msg(@window, "Hello, %1%, how are you %2%?", "", "", @username: @fm: "today")
|
* Msg(@window, "Hello, %1%, how are you %2%?", "", "", @username: @fm: "today")
|
||||||
|
|
||||||
* Msg() function instruction values
|
* Msg() function instruction values
|
||||||
equ MSGINSTSTART$ to 1 ;* (default instruction)
|
equ MSGINSTSTART$ to 1 ;* (default instruction)
|
||||||
equ MSGINSTREAD$ to 2 ;* bErr = Msg("", MsgDef, MsgID, MSGINSTREAD$)
|
equ MSGINSTREAD$ to 2 ;* bErr = Msg("", MsgDef, MsgID, MSGINSTREAD$)
|
||||||
equ MSGINSTWRITE$ to 3 ;* bErr = Msg("", MsgDef, MsgID, MSGINSTWRITE$)
|
equ MSGINSTWRITE$ to 3 ;* bErr = Msg("", MsgDef, MsgID, MSGINSTWRITE$)
|
||||||
equ MSGINSTLOCK$ to 4 ;* bErr = Msg("", "", MsgID, MSGINSTLOCK$)
|
equ MSGINSTLOCK$ to 4 ;* bErr = Msg("", "", MsgID, MSGINSTLOCK$)
|
||||||
equ MSGINSTUNLOCK$ to 5 ;* bErr = Msg("", "", MsgID, MSGINSTUNLOCK$)
|
equ MSGINSTUNLOCK$ to 5 ;* bErr = Msg("", "", MsgID, MSGINSTUNLOCK$)
|
||||||
equ MSGINSTBUTTON$ to 6 ;* reserved
|
equ MSGINSTBUTTON$ to 6 ;* reserved
|
||||||
equ MSGINSTCREATE$ to 7 ;* reserved
|
equ MSGINSTCREATE$ to 7 ;* reserved
|
||||||
equ MSGINSTRESPCHG$ to 8 ;* reserved
|
equ MSGINSTRESPCHG$ to 8 ;* reserved
|
||||||
equ MSGINSTCLOSE$ to 9 ;* reserved
|
equ MSGINSTCLOSE$ to 9 ;* reserved
|
||||||
equ MSGINSTTIMER$ to 10 ;* reserved
|
equ MSGINSTTIMER$ to 10 ;* reserved
|
||||||
equ MSGINSTHELP$ to 11 ;* reserved
|
equ MSGINSTHELP$ to 11 ;* reserved
|
||||||
equ MSGINSTUPDATE$ to 12 ;* (see above)
|
equ MSGINSTUPDATE$ to 12 ;* (see above)
|
||||||
|
|
||||||
* Msg() function return values from MSGINSTSTART$
|
* Msg() function return values from MSGINSTSTART$
|
||||||
equ RET_OK$ to ""
|
equ RET_OK$ to ""
|
||||||
equ RET_CANCEL$ to \1B\ ;* escape character
|
equ RET_CANCEL$ to \1B\ ;* escape character
|
||||||
equ RET_YES$ to 1
|
equ RET_YES$ to 1
|
||||||
equ RET_NO$ to 0
|
equ RET_NO$ to 0
|
||||||
equ RET_ABORT$ to 1
|
equ RET_ABORT$ to 1
|
||||||
equ RET_RETRY$ to 2
|
equ RET_RETRY$ to 2
|
||||||
equ RET_IGNORE$ to 3
|
equ RET_IGNORE$ to 3
|
||||||
|
|
||||||
* misc strings
|
* misc strings
|
||||||
equ MSGTYPE$ to "MSG"
|
equ MSGTYPE$ to "MSG"
|
||||||
equ MSGCLASS$ to ""
|
equ MSGCLASS$ to ""
|
||||||
|
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
compile insert SUPPLEMENTS_EQUATES
|
compile insert SUPPLEMENTS_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 20/03/2024
|
Written : 20/03/2024
|
||||||
Description : Insert for Table SUPPLEMENTS
|
Description : Insert for Table SUPPLEMENTS
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
Equ SUPPLEMENTS_SUPPL_ID$ To 0
|
Equ SUPPLEMENTS_SUPPL_ID$ To 0
|
||||||
Equ SUPPLEMENTS_LOT_TYPE$ To 1
|
Equ SUPPLEMENTS_LOT_TYPE$ To 1
|
||||||
Equ SUPPLEMENTS_LOT_ID$ To 2
|
Equ SUPPLEMENTS_LOT_ID$ To 2
|
||||||
Equ SUPPLEMENTS_STAGE$ To 3
|
Equ SUPPLEMENTS_STAGE$ To 3
|
||||||
Equ SUPPLEMENTS_SUPPL_TEXT$ To 4
|
Equ SUPPLEMENTS_SUPPL_TEXT$ To 4
|
||||||
Equ SUPPLEMENTS_SUPPL_ACK$ To 5
|
Equ SUPPLEMENTS_SUPPL_ACK$ To 5
|
||||||
Equ SUPPLEMENTS_ACK_USER$ To 6
|
Equ SUPPLEMENTS_ACK_USER$ To 6
|
||||||
Equ SUPPLEMENTS_ACK_DTM$ To 7
|
Equ SUPPLEMENTS_ACK_DTM$ To 7
|
||||||
Equ SUPPLEMENTS_ENTRY_USER$ To 8
|
Equ SUPPLEMENTS_ENTRY_USER$ To 8
|
||||||
Equ SUPPLEMENTS_ENTRY_DATETIME$ To 9
|
Equ SUPPLEMENTS_ENTRY_DATETIME$ To 9
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
compile insert UNLOCK_REQUESTS_EQUATES
|
compile insert UNLOCK_REQUESTS_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 19/03/2024
|
Written : 19/03/2024
|
||||||
Description : Insert for Table UNLOCK_REQUESTS
|
Description : Insert for Table UNLOCK_REQUESTS
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
Equ UNLOCK_REQUESTS_REQUEST_DATETIME$ To 0
|
Equ UNLOCK_REQUESTS_REQUEST_DATETIME$ To 0
|
||||||
Equ UNLOCK_REQUESTS_TABLE_NAME$ To 0
|
Equ UNLOCK_REQUESTS_TABLE_NAME$ To 0
|
||||||
Equ UNLOCK_REQUESTS_RECORD_KEY$ To 1
|
Equ UNLOCK_REQUESTS_RECORD_KEY$ To 1
|
||||||
Equ UNLOCK_REQUESTS_USER_NAME$ To 2
|
Equ UNLOCK_REQUESTS_USER_NAME$ To 2
|
||||||
Equ UNLOCK_REQUESTS_SUCCESS$ To 3
|
Equ UNLOCK_REQUESTS_SUCCESS$ To 3
|
||||||
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
compile insert WAFER_COUNTER_EQUATES
|
compile insert WAFER_COUNTER_EQUATES
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Author : Table Create Insert Routine
|
Author : Table Create Insert Routine
|
||||||
Written : 22/03/2024
|
Written : 22/03/2024
|
||||||
Description : Insert for Table WAFER_COUNTER
|
Description : Insert for Table WAFER_COUNTER
|
||||||
----------------------------------------*/
|
----------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
Equ WAFER_COUNTER.SCAN_ID$ To 0
|
Equ WAFER_COUNTER.SCAN_ID$ To 0
|
||||||
Equ WAFER_COUNTER.LOT_ID$ To 1
|
Equ WAFER_COUNTER.LOT_ID$ To 1
|
||||||
Equ WAFER_COUNTER.SCAN_QTY$ To 2
|
Equ WAFER_COUNTER.SCAN_QTY$ To 2
|
||||||
Equ WAFER_COUNTER.SCAN_DTM$ To 3
|
Equ WAFER_COUNTER.SCAN_DTM$ To 3
|
||||||
Equ WAFER_COUNTER.SCAN_TOOL$ To 4
|
Equ WAFER_COUNTER.SCAN_TOOL$ To 4
|
||||||
Equ WAFER_COUNTER.SCAN_USER$ To 5
|
Equ WAFER_COUNTER.SCAN_USER$ To 5
|
||||||
Equ WAFER_COUNTER.SCAN_LOCATION$ To 6
|
Equ WAFER_COUNTER.SCAN_LOCATION$ To 6
|
||||||
Equ WAFER_COUNTER.SCAN_WAFER_MAP$ To 7
|
Equ WAFER_COUNTER.SCAN_WAFER_MAP$ To 7
|
||||||
|
|
||||||
|
@ -445,7 +445,7 @@ return
|
|||||||
|
|
||||||
|
|
||||||
Populate:
|
Populate:
|
||||||
|
|
||||||
Set_Property('SYSTEM', 'CURSOR', 'H')
|
Set_Property('SYSTEM', 'CURSOR', 'H')
|
||||||
Set_Property(@Window:".OLE_RPT_WORK", "OLE.EmptyTablePrompt", "Loading...")
|
Set_Property(@Window:".OLE_RPT_WORK", "OLE.EmptyTablePrompt", "Loading...")
|
||||||
Set_Property(@Window:'.OLE_RPT_WORK', 'OLE.List', "")
|
Set_Property(@Window:'.OLE_RPT_WORK', 'OLE.List', "")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user