Compare commits

...

8 Commits

Author SHA1 Message Date
Infineon\StieberD
18919090d8 updated wo_daily_sched_comm2 to pull the run order number from RUN_ORDER_NUM column in the RDS table 2025-05-27 11:30:13 -07:00
Infineon\StieberD
550f376a0b ready for deployment 2025-05-27 18:38:30 +02:00
Chase Tucker
6aad8036e5 Require TW logging at HTR last cassette unload 2025-05-27 08:54:38 -07:00
Chase Tucker
4fc7eb189b Add isAuthorizedToOverrideROTR flag 2025-05-27 17:30:21 +02:00
Infineon\StieberD
5e917e65ac added prod spec special instruction message for WMO makeup additions if flag set in PSN
added checkbox on prod spec form to set or unset show special instruction on backfill operation
2025-05-23 16:55:33 -07:00
Stieber Daniel (CSC FI SPS MESLEO)
97f3c3fce2 Merged PR 17496: updated CancelNicaOrder service to adapt to an update in the NICAIntegrationS...
updated CancelNicaOrder service to adapt to an update in the NICAIntegrationService
2025-05-23 20:36:18 +02:00
Stieber Daniel (CSC FI SPS MESLEO)
27d55d83a1 Merged PR 17495: fixed WM_OUT form Special Instruction source
fixed WM_OUT form Special Instruction source
2025-05-23 19:41:15 +02:00
Ouellette Jonathan (CSC FI SPS MESLEO)
4e213ff253 Merged PR 17284: Added call to CreateLotEvent routine on successful
Added call to CreateLotEvent routine on successful
completion of a lot qty adjustment to mark it as
as manual adjustment.
2025-05-21 23:53:18 +02:00
27 changed files with 11126 additions and 9451 deletions

View File

@ -0,0 +1,675 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "1010",
"<2>": "3",
"<3>": ""
},
"record2": {
"<1>": {
"<1,1>": "NDW_ACKNOWLEDGE_MESSAGE",
"<1,2>": "",
"<1,3>": "WINDOW",
"<1,4>": "",
"<1,5>": "137",
"<1,6>": "173",
"<1,7>": "-765",
"<1,8>": "-539",
"<1,9>": "Process Message",
"<1,10>": {
"<1,10,1>": "0x84C80000",
"<1,10,2>": "0x101"
},
"<1,11>": {
"<1,11,1>": "0x8000",
"<1,11,2>": "0x80000000"
},
"<1,12>": "",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": "0"
},
"<1,14>": "",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": {
"<1,18,1>": {
"<1,18,1,1>": "X",
"<1,18,1,2>": "EXECUTE",
"<1,18,1,3>": "@WINDOW_EVENTS",
"<1,18,1,4>": {
"<1,18,1,4,1>": "@SELF",
"<1,18,1,4,2>": "@EVENT",
"<1,18,1,4,3>": "@PARAM1",
"<1,18,1,4,4>": "@PARAM2",
"<1,18,1,4,5>": "@PARAM3",
"<1,18,1,4,6>": "@PARAM4",
"<1,18,1,4,7>": "@PARAM5",
"<1,18,1,4,8>": "@PARAM6"
},
"<1,18,1,5>": "",
"<1,18,1,6>": "",
"<1,18,1,7>": "",
"<1,18,1,8>": "",
"<1,18,1,9>": "",
"<1,18,1,10>": "",
"<1,18,1,11>": "",
"<1,18,1,12>": "",
"<1,18,1,13>": "",
"<1,18,1,14>": "",
"<1,18,1,15>": "COMMEVT",
"<1,18,1,16>": "0"
}
},
"<1,19>": "CREATE",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": {
"<1,24,1>": "",
"<1,24,2>": "0",
"<1,24,3>": "0",
"<1,24,4>": "0",
"<1,24,5>": "",
"<1,24,6>": "0",
"<1,24,7>": "",
"<1,24,8>": "",
"<1,24,9>": "",
"<1,24,10>": "0",
"<1,24,11>": "0",
"<1,24,12>": "0",
"<1,24,13>": "0",
"<1,24,14>": "0",
"<1,24,15>": "0",
"<1,24,16>": "0",
"<1,24,17>": "0"
},
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*INFINEON",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
"<1,37,1>": "0X10001",
"<1,37,2>": "0X10001"
},
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": "",
"<1,56>": "",
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": {
"<1,62,1>": "0",
"<1,62,2>": "",
"<1,62,3>": "",
"<1,62,4>": "2",
"<1,62,5>": "0",
"<1,62,6>": "0",
"<1,62,7>": "",
"<1,62,8>": "0.50",
"<1,62,9>": "5.00",
"<1,62,10>": "0.00"
},
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "0",
"<1,107>": "",
"<1,108>": ""
}
},
"record3": {
"<1>": {
"<1,1>": "EDB_DATA",
"<1,2>": "",
"<1,3>": "EDITBOX",
"<1,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<1,5>": "16",
"<1,6>": "12",
"<1,7>": "-17",
"<1,8>": "-48",
"<1,9>": "",
"<1,10>": {
"<1,10,1>": "0x56200840",
"<1,10,2>": "0x200"
},
"<1,11>": {
"<1,11,1>": "0xC400",
"<1,11,2>": "0x80000000"
},
"<1,12>": "3",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": ""
},
"<1,14>": "-2",
"<1,15>": {
"<1,15,1>": {
"<1,15,1,1>": "Segoe UI",
"<1,15,1,2>": "-15",
"<1,15,1,3>": "400",
"<1,15,1,4>": "0",
"<1,15,1,5>": "0",
"<1,15,1,6>": "0",
"<1,15,1,7>": "0",
"<1,15,1,8>": "34",
"<1,15,1,9>": "0",
"<1,15,1,10>": "3",
"<1,15,1,11>": "2",
"<1,15,1,12>": "1"
}
},
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": "",
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "<<None>>",
"<1,29>": "<<None>>",
"<1,30>": "",
"<1,31>": "0",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "",
"<1,37>": "",
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": "",
"<1,56>": "",
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": "0",
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "",
"<1,107>": "",
"<1,108>": ""
},
"<2>": {
"<2,1>": "PUB_OK",
"<2,2>": "",
"<2,3>": "PUSHBUTTON",
"<2,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<2,5>": "-184",
"<2,6>": "-37",
"<2,7>": "80",
"<2,8>": "24",
"<2,9>": "&OK",
"<2,10>": {
"<2,10,1>": "0x56000300",
"<2,10,2>": "0x0"
},
"<2,11>": {
"<2,11,1>": "0x3005",
"<2,11,2>": "0x80000000"
},
"<2,12>": "1",
"<2,13>": {
"<2,13,1>": "-2",
"<2,13,2>": "-2",
"<2,13,3>": "0"
},
"<2,14>": "-2",
"<2,15>": {
"<2,15,1>": {
"<2,15,1,1>": "Segoe UI",
"<2,15,1,2>": "-12",
"<2,15,1,3>": "400",
"<2,15,1,4>": "0",
"<2,15,1,5>": "0",
"<2,15,1,6>": "0",
"<2,15,1,7>": "1",
"<2,15,1,8>": "0",
"<2,15,1,9>": "0",
"<2,15,1,10>": "0",
"<2,15,1,11>": "0",
"<2,15,1,12>": "0"
}
},
"<2,16>": "",
"<2,17>": "",
"<2,18>": {
"<2,18,1>": {
"<2,18,1,1>": "X",
"<2,18,1,2>": "EXECUTE",
"<2,18,1,3>": "@WINDOW_EVENTS",
"<2,18,1,4>": {
"<2,18,1,4,1>": "@SELF",
"<2,18,1,4,2>": "@EVENT",
"<2,18,1,4,3>": "@PARAM1",
"<2,18,1,4,4>": "@PARAM2",
"<2,18,1,4,5>": "@PARAM3",
"<2,18,1,4,6>": "@PARAM4",
"<2,18,1,4,7>": "@PARAM5",
"<2,18,1,4,8>": "@PARAM6"
},
"<2,18,1,5>": "",
"<2,18,1,6>": "",
"<2,18,1,7>": "",
"<2,18,1,8>": "",
"<2,18,1,9>": "",
"<2,18,1,10>": "",
"<2,18,1,11>": "",
"<2,18,1,12>": "",
"<2,18,1,13>": "",
"<2,18,1,14>": "",
"<2,18,1,15>": "COMMEVT",
"<2,18,1,16>": "0"
}
},
"<2,19>": "CLICK",
"<2,20>": "",
"<2,21>": "",
"<2,22>": "",
"<2,23>": "",
"<2,24>": "",
"<2,25>": "",
"<2,26>": "",
"<2,27>": "",
"<2,28>": "",
"<2,29>": "",
"<2,30>": "",
"<2,31>": "",
"<2,32>": "",
"<2,33>": "",
"<2,34>": "",
"<2,35>": "",
"<2,36>": "",
"<2,37>": "",
"<2,38>": "",
"<2,39>": "",
"<2,40>": "-1",
"<2,41>": {
"<2,41,1>": "",
"<2,41,2>": "-1"
},
"<2,42>": "",
"<2,43>": "",
"<2,44>": "",
"<2,45>": "",
"<2,46>": "",
"<2,47>": "",
"<2,48>": "",
"<2,49>": "",
"<2,50>": "",
"<2,51>": "",
"<2,52>": "",
"<2,53>": "",
"<2,54>": "",
"<2,55>": "",
"<2,56>": "",
"<2,57>": "",
"<2,58>": "",
"<2,59>": "",
"<2,60>": "",
"<2,61>": "",
"<2,62>": "0",
"<2,63>": "",
"<2,64>": {
"<2,64,1>": "-2",
"<2,64,2>": "-2",
"<2,64,3>": "0"
},
"<2,65>": "-2",
"<2,66>": "",
"<2,67>": "",
"<2,68>": "",
"<2,69>": "",
"<2,70>": "",
"<2,71>": "",
"<2,72>": "",
"<2,73>": "",
"<2,74>": "",
"<2,75>": "",
"<2,76>": "",
"<2,77>": "",
"<2,78>": "",
"<2,79>": "",
"<2,80>": "",
"<2,81>": "",
"<2,82>": "",
"<2,83>": "",
"<2,84>": "",
"<2,85>": "",
"<2,86>": "",
"<2,87>": "",
"<2,88>": "",
"<2,89>": "",
"<2,90>": "0",
"<2,91>": "0",
"<2,92>": "",
"<2,93>": "",
"<2,94>": "",
"<2,95>": "",
"<2,96>": "",
"<2,97>": "",
"<2,98>": "",
"<2,99>": "",
"<2,100>": "",
"<2,101>": "",
"<2,102>": "",
"<2,103>": "",
"<2,104>": "",
"<2,105>": "",
"<2,106>": "",
"<2,107>": "",
"<2,108>": ""
},
"<3>": {
"<3,1>": "PUB_CANCEL",
"<3,2>": "",
"<3,3>": "PUSHBUTTON",
"<3,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<3,5>": "-97",
"<3,6>": "-37",
"<3,7>": "80",
"<3,8>": "24",
"<3,9>": "&Cancel",
"<3,10>": {
"<3,10,1>": "0x56000300",
"<3,10,2>": "0x0"
},
"<3,11>": {
"<3,11,1>": "0x3002",
"<3,11,2>": "0x80000000"
},
"<3,12>": "2",
"<3,13>": {
"<3,13,1>": "-2",
"<3,13,2>": "-2",
"<3,13,3>": "0"
},
"<3,14>": "-2",
"<3,15>": {
"<3,15,1>": {
"<3,15,1,1>": "Segoe UI",
"<3,15,1,2>": "-12",
"<3,15,1,3>": "400",
"<3,15,1,4>": "0",
"<3,15,1,5>": "0",
"<3,15,1,6>": "0",
"<3,15,1,7>": "1",
"<3,15,1,8>": "0",
"<3,15,1,9>": "0",
"<3,15,1,10>": "0",
"<3,15,1,11>": "0",
"<3,15,1,12>": "0"
}
},
"<3,16>": "",
"<3,17>": "",
"<3,18>": {
"<3,18,1>": {
"<3,18,1,1>": "X",
"<3,18,1,2>": "EXECUTE",
"<3,18,1,3>": "@WINDOW_EVENTS",
"<3,18,1,4>": {
"<3,18,1,4,1>": "@SELF",
"<3,18,1,4,2>": "@EVENT",
"<3,18,1,4,3>": "@PARAM1",
"<3,18,1,4,4>": "@PARAM2",
"<3,18,1,4,5>": "@PARAM3",
"<3,18,1,4,6>": "@PARAM4",
"<3,18,1,4,7>": "@PARAM5",
"<3,18,1,4,8>": "@PARAM6"
},
"<3,18,1,5>": "",
"<3,18,1,6>": "",
"<3,18,1,7>": "",
"<3,18,1,8>": "",
"<3,18,1,9>": "",
"<3,18,1,10>": "",
"<3,18,1,11>": "",
"<3,18,1,12>": "",
"<3,18,1,13>": "",
"<3,18,1,14>": "",
"<3,18,1,15>": "COMMEVT",
"<3,18,1,16>": "0"
}
},
"<3,19>": "CLICK",
"<3,20>": "",
"<3,21>": "",
"<3,22>": "",
"<3,23>": "",
"<3,24>": "",
"<3,25>": "",
"<3,26>": "",
"<3,27>": "",
"<3,28>": "",
"<3,29>": "",
"<3,30>": "",
"<3,31>": "",
"<3,32>": "",
"<3,33>": "",
"<3,34>": "",
"<3,35>": "",
"<3,36>": "",
"<3,37>": "",
"<3,38>": "",
"<3,39>": "",
"<3,40>": "-1",
"<3,41>": {
"<3,41,1>": "",
"<3,41,2>": "-1"
},
"<3,42>": "",
"<3,43>": "",
"<3,44>": "",
"<3,45>": "",
"<3,46>": "",
"<3,47>": "",
"<3,48>": "",
"<3,49>": "",
"<3,50>": "",
"<3,51>": "",
"<3,52>": "",
"<3,53>": "",
"<3,54>": "",
"<3,55>": "",
"<3,56>": "",
"<3,57>": "",
"<3,58>": "",
"<3,59>": "",
"<3,60>": "",
"<3,61>": "",
"<3,62>": "0",
"<3,63>": "",
"<3,64>": {
"<3,64,1>": "-2",
"<3,64,2>": "-2",
"<3,64,3>": "0"
},
"<3,65>": "-2",
"<3,66>": "",
"<3,67>": "",
"<3,68>": "",
"<3,69>": "",
"<3,70>": "",
"<3,71>": "",
"<3,72>": "",
"<3,73>": "",
"<3,74>": "",
"<3,75>": "",
"<3,76>": "",
"<3,77>": "",
"<3,78>": "",
"<3,79>": "",
"<3,80>": "",
"<3,81>": "",
"<3,82>": "",
"<3,83>": "",
"<3,84>": "",
"<3,85>": "",
"<3,86>": "",
"<3,87>": "",
"<3,88>": "",
"<3,89>": "",
"<3,90>": "0",
"<3,91>": "0",
"<3,92>": "",
"<3,93>": "",
"<3,94>": "",
"<3,95>": "",
"<3,96>": "",
"<3,97>": "",
"<3,98>": "",
"<3,99>": "",
"<3,100>": "",
"<3,101>": "",
"<3,102>": "",
"<3,103>": "",
"<3,104>": "",
"<3,105>": "",
"<3,106>": "",
"<3,107>": "",
"<3,108>": ""
}
},
"record4": {
"<1>": ""
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6655,13 +6655,6 @@
"<41,35,3,3>": "",
"<41,35,3,4>": "",
"<41,35,3,5>": ""
},
"<41,35,4>": {
"<41,35,4,1>": "",
"<41,35,4,2>": "",
"<41,35,4,3>": "",
"<41,35,4,4>": "",
"<41,35,4,5>": ""
}
},
"<41,36>": "",
@ -7886,7 +7879,7 @@
"<45,10,2>": "0x200"
},
"<45,11>": {
"<45,11,1>": "0x0",
"<45,11,1>": "0x80000",
"<45,11,2>": "0x80000000"
},
"<45,12>": "45",
@ -7922,7 +7915,7 @@
"<45,21>": "",
"<45,22>": "",
"<45,23>": "WM_OUT",
"<45,24>": "SPECIAL_INST",
"<45,24>": "SPEC_INST",
"<45,25>": "",
"<45,26>": "",
"<45,27>": "",

View File

@ -9,7 +9,7 @@
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "16777215",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "Tahoma",
@ -31,7 +31,7 @@
}
},
"<7>": "REACT_ITEM",
"<8>": "BY @ID",
"<8>": "BY-DSND ENTER_DTM",
"<9>": {
"<9,1>": {
"<9,1,1>": "RI_NO",
@ -120,6 +120,22 @@
"<9,11,4>": "C",
"<9,11,5>": "D4/",
"<9,11,6>": "Retire Dt"
},
"<9,12>": {
"<9,12,1>": "ENTER_DTM",
"<9,12,2>": "14",
"<9,12,3>": "L",
"<9,12,4>": "C",
"<9,12,5>": "DT2/^H",
"<9,12,6>": "Enter Dtm"
},
"<9,13>": {
"<9,13,1>": "CURR_STATUS",
"<9,13,2>": "5",
"<9,13,3>": "L",
"<9,13,4>": "C",
"<9,13,5>": "[CONV_ITEM_CURR_STATUS]",
"<9,13,6>": "Curr Status"
}
},
"<10>": "T",
@ -147,7 +163,17 @@
"<32>": "0",
"<33>": "1",
"<34>": "16777215",
"<35>": "16777215"
"<35>": "16766894",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "16777215",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "MS Sans Serif",
@ -91,7 +91,17 @@
"<32>": "0",
"<33>": "1",
"<34>": "16777215",
"<35>": "16777215"
"<35>": "16777215",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

View File

@ -20,7 +20,7 @@ Declare Function Get_Property, Get_Status, Dialog_Box, Utility, Popup, Collect.I
Declare Function Send_Message, Msg, Security_Check, obj_React_Item, Select_Into, MemberOf, Create_Dialog, obj_Calendar
Declare Function GetAsyncKeyState, obj_Tables, MemberOf, Environment_Services, Database_Services, Rds_Services
Declare Function Reactor_Services, Error_Services, React_Servs_Services, Reactor_Log_Services, Send_Event, SRP_List
Declare Function Nica_Orders_Services
Declare Function Nica_Orders_Services, SRP_Date, React_Item_Services, SRP_Datetime, Datetime
$Insert MSG_EQUATES
$Insert APPCOLORS
@ -1229,26 +1229,11 @@ SvcsOptions:
If ItemType NE '' then
RetVal = ''
ItemType = ICONV(ItemType,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
OPEN 'DICT.REACT_ITEM' to DictReactItem else
ErrMsg('Unable to open DICT.REACT_ITEM')
return
end
RIKeys = React_Item_Services('GetReactItems', ItemType, 'N,U')
SearchString = 'RI_TYPE':@VM:ItemType:@FM
SearchString := 'CURR_STATUS':@VM:'N':@VM:'U':@FM
RIKeys = ''
Option = ''
Flag = ''
Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RIKeys,Option,Flag)
If Get_Status(errCode) then
ErrMsg(errCode)
return
end
If Error_Services('NoError') then
TypeOver = ''
TypeOVer<PMODE$> = 'K'
@ -1282,11 +1267,13 @@ SvcsOptions:
end
GoSub Refresh
end
end else
Error_Services('DisplayError')
end
end ;* End of check for null SNReq
End Case
GoSub Refresh
@ -1877,4 +1864,3 @@ ColorRemRiTable:
return

View File

@ -1099,7 +1099,7 @@ SignSupVer:
************************************************************************
WMOKey = Get_Property(@WINDOW,'ID')
PSNo = Get_Property(@WINDOW:'.PS_NO)','TEXT')
VerInst = XLATE('PRS_STAGE',PSNo:'*QA',PRS_STAGE_INST$,'X')
VerInst = XLATE('PRS_STAGE',PSNo:'*MO_QA',PRS_STAGE_INST$,'X')
IF (VerInst NE '') THEN
Yes = Dialog_Box( 'RDS_VER', @WINDOW, VerInst )
IF NOT(Yes) THEN
@ -1711,6 +1711,19 @@ AddMakeup:
END
NEXT I
Continue = True$
ShowSpecInst = Xlate('PROD_SPEC', PSNo, PROD_SPEC_SHOW_SPEC_INST_ON_MU_ADD$, 'X')
If ShowSpecInst then
SpecInst = Xlate('PROD_SPEC', PSNo, PROD_SPEC_SPEC_INST$, 'X')
If SpecInst NE '' then
Continue = Dialog_Box('NDW_ACKNOWLEDGE_MESSAGE', @Window, SpecInst)
If Not(Continue) then
Msg(@Window, '', 'OK', '', 'Process Error':@FM:'This PSN requires you to acknowledge special instructions to add makeup wafers.')
end
end
end
If Continue then
Response = Dialog_Box('NDW_MAKEUP_WAFERS', @Window, WOMatKey)
Begin Case
@ -1833,7 +1846,7 @@ AddMakeup:
RETURN
End Case
end
end else
// Cassette is on hold so makeup wafers cannot be added.
ErrorMessage = 'Add MU Wafer Denied!. The cassette must be taken off hold before adding makeup wafers.'

View File

@ -440,7 +440,7 @@ END
IF CurrStatus NE '' THEN
SWAP @VM WITH '" "' IN CurrStatus
IF SelectSent NE '' THEN SelectSent := ' AND'
SelectSent := ' WITH CURR_STATUS ':QUOTE(CurrStatus)
SelectSent := ' WITH CURR_STATUS_STATIC ':QUOTE(CurrStatus)
END
IF PartTypes NE '' THEN
@ -471,7 +471,7 @@ SelectSent = 'SELECT REACT_ITEM ':SelectSent
Def = ""
Def<MTEXT$> = "Selecting Reactor Events..."
Def<MTEXT$> = "Selecting Reactor Items..."
Def<MTYPE$> = "U"
* display the processing message and do the processing
@ -502,6 +502,3 @@ End_Dialog(@WINDOW,RINos)
RETURN

View File

@ -1177,3 +1177,4 @@ end service

View File

@ -0,0 +1,99 @@
Compile function NDW_ACKNOWLEDGE_MESSAGE_EVENTS(CtrlEntId, Event, @PARAMS)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from Infineon.
Name : NDW_ACKNOWLEDGE_MESSAGE_EVENTS
Description : This function acts as a commuter module for all events related to this window.
Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the
application-specific promoted event handler. This makes it possible to add QuickEvents that need to
execute Basic+ logic without having use the Form Designer to make the association, although this is
limited to the events which are currently promoted.
If the form needs to call the commuter module directly then the QuickEvent parameters should be
formatted like this:
'@SELF','@EVENT',['@PARAM1','@PARAMx']
Parameters :
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
Param1-15 [in] -- Additional event parameter holders
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
EVENT_SETUP insert
History : (Date, Initials, Notes)
05/23/25 djs Created initial commuter module.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
#window NDW_ACKNOWLEDGE_MESSAGE
$Insert APP_INSERTS
$Insert EVENT_SETUP
Declare subroutine PlaceDialog
SubclassInfo = Form_Services('FindSubclassControl')
Subclass = SubclassInfo<1>
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
If Event EQ 'OLE' then
Transfer Event to OIEvent
Transfer Param1 to Event
Transfer Param2 to Param1
Transfer Param3 to Param2
Transfer Param4 to Param3
Transfer Param5 to Param4
Transfer Param6 to Param5
Transfer Param7 to Param6
Transfer Param8 to Param7
end
GoToEvent Event for CtrlEntId else
// Event not implemented
end
Return EventFlow or 1
//-----------------------------------------------------------------------------
// EVENT HANDLERS
//-----------------------------------------------------------------------------
Event WINDOW.CREATE(CreateParam)
TextToAcknowledge = CreateParam
If TextToAcknowledge NE '' then
Swap @TM with CRLF$ in TextToAcknowledge
Set_Property(@Window:'.EDB_DATA', 'TEXT', TextToAcknowledge)
PlaceDialog(-2, -2)
end else
Post_Event(@Window, 'CLOSE')
end
End Event
Event WINDOW.CLOSE(CancelFlag, CloseFlags)
End_Dialog(@Window, False$)
end event
Event PUB_OK.CLICK()
End_Dialog(@Window, True$)
end event
Event PUB_CANCEL.CLICK()
End_Dialog(@Window, False$)
end event

View File

@ -3,7 +3,7 @@ Compile function NDW_ADJUST_LOT_QTY_EVENTS(CtrlEntId, Event, @PARAMS)
#window NDW_ADJUST_LOT_QTY
Declare function MemberOf, Database_Services, Error_Services, Datetime
Declare subroutine PlaceDialog, Database_Services, Lot_Services
Declare subroutine PlaceDialog, Database_Services, Lot_Services, Lot_Event_Services
$Insert App_Inserts
$Insert Lot_Equates
@ -126,9 +126,15 @@ Event PUB_SUBMIT.CLICK()
Case NewWfrQty LT CurrWfrQty
AmountToDecrease = CurrWfrQty - NewWfrQty
Lot_Services('ReduceLotWaferCount', LotId, AmountToDecrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty decrease performed.', '', @User4, '' , '')
end
Case NewWfrQty GT CurrWfrQty
AmountToIncrease = NewWfrQty - CurrWfrQty
Lot_Services('IncreaseLotWaferCount', LotId, AmountToIncrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty increase performed.', '', @User4, '' , '')
end
End Case
If Error_Services('NoError') then
msg(@Window, 'Wafer quantity adjusted successfully!')
@ -176,3 +182,4 @@ return

View File

@ -535,9 +535,9 @@ Service CancelOrder(OrderId)
If HttpResponseJson NE '' then
ObjResponseJson = ''
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'pendingUpdate')
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = 'cancelled'
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = IsComplete
CloseDtm = Datetime()
NicaOrderRec<NICA_ORDERS.CLOSED_DTM$> = CloseDtm
If IsComplete EQ False$ then
@ -904,4 +904,3 @@ end service
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -18,7 +18,7 @@ COMPILE FUNCTION obj_Reactor_Log(Method,Parms)
*/
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Btree.Extract, obj_React_Item_Hist, Update_Index, obj_Post_Log
Declare subroutine Error_Services, Database_Services
Declare subroutine Error_Services, Database_Services, React_Item_Services
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, obj_React_Item, obj_Calendar, Database_Services
@ -195,18 +195,16 @@ PostReactItems:
ReactorLogRec<REACTOR_LOG_RI_POST_DTM$> = PostDTM
otParms = FIELDSTORE(otParms,@RM,4,0,ReactorLogRec)
//obj_Tables('WriteRec',otParms)
Database_Services('WriteDataRow', 'REACTOR_LOG', RLNo, ReactorLogRec, 1, 0, 1)
Update_Index('REACT_ITEM_HIST', 'INST_RL_ID', False$, True$) ;* Don't wait for indexer - flush pending indexes now
Update_Index('REACT_ITEM_HIST', 'REM_RL_ID', False$, True$)
end else
Error_Services('Add', ValidationFailureReason)
end
RETURN
@ -386,10 +384,3 @@ RemHistKeys:
RETURN

View File

@ -19,10 +19,11 @@ COMPILE FUNCTION obj_React_Item_Hist(Method,Parms)
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Send_Dyn, obj_Popup
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn
DECLARE SUBROUTINE ErrMsg, Btree.Extract
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Btree.Extract, React_Item_Services
$Insert LOGICAL
$INSERT REACT_ITEM_HIST_EQUATES
$INSERT RLIST_EQUATES
EQU CRLF$ TO \0D0A\
EQU TAB$ TO CHAR(9)
@ -69,8 +70,6 @@ ReactHrs = Parms[COL2()+1,@RM]
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
*IF ReactWfrCnt = '' THEN ErrorMsg = 'Null Parameter "ReactWfrCnt" passed to routine. (':Method:')' ;* Optional
*IF ReactHrs = '' THEN ErrorMsg = 'Null Parameter "ReactHrs" passed to routine. (':Method:')' ;* Optional
IF ErrorMsg NE '' THEN RETURN
@ -82,6 +81,8 @@ RIHRec<REACT_ITEM_HIST_INST_REACT_HRS$> = ReactHrs
otParms = 'REACT_ITEM_HIST':@RM:RIHKey:@RM:@RM:RIHRec
obj_Tables('WriteRec',otParms)
RINo = Field(RIHKey, '*', 2, 1)
React_Item_Services('UpdateReactItemStatus', RINo)
RETURN
@ -99,13 +100,9 @@ ReactHrs = Parms[COL2()+1,@RM]
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RemoveDTM = '' THEN ErrorMsg = 'Null Parameter "RemoveDTM" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
*IF ReactWfrCnt = '' THEN ErrorMsg = 'Null Parameter "ReactWfrCnt" passed to routine. (':Method:')' ;* Optional
*IF ReactHrs = '' THEN ErrorMsg = 'Null Parameter "ReactHrs" passed to routine. (':Method:')' ;* Optional
IF ErrorMsg NE '' THEN RETURN
* Read and update record *
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
RIHRec = obj_Tables('ReadRec',otParms)
@ -122,6 +119,8 @@ RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = ReactHrs
otParms = FIELDSTORE(otParms,@RM,4,0,RIHRec)
obj_Tables('WriteRec',otParms)
RINo = Field(RIHKey, '*', 2, 1)
React_Item_Services('UpdateReactItemStatus', RINo)
RETURN
@ -134,9 +133,6 @@ RIHKey = Parms[1,@RM]
IF RIHKey = '' THEN RETURN
* Read and update record *
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
RIHRec = obj_Tables('ReadRec',otParms)
@ -178,7 +174,7 @@ Flag = ''
Btree.Extract(Search, 'REACT_ITEM_HIST', DictVar, RIKeys, Option, Flag) ;* Get unsorted keys based on Search parameters
* Put sort data in first column (Install DTM)
// Put sort data in first column (Install DTM)
WorkList = ''
riCnt = COUNT(RIKeys,@VM) + (RIKeys NE '')
@ -202,3 +198,4 @@ FOR I = 1 TO riCnt
NEXT I
RETURN

View File

@ -84,6 +84,7 @@ $Insert NOTIFICATION_EQUATES
$Insert DICT_EQUATES
$Insert COMPANY_EQUATES
$Insert RETURN_TO_FAB_LOTS_EQUATES
$Insert TEST_RUN_EQUATES
EQU COL$LSID TO 1
EQU COL$RECIPE TO 2
@ -848,6 +849,27 @@ Service IsTWLoggingReqd(RDSNo)
Response = IsTWReqd
end service
Service TestWaferRanAfterLoad(RDSNo)
TestWaferRanAfterLoad = False$
TestWaferKeys = Test_Run_Services('GetTestRunKeysByRDS', RDSNo)
for each Key in TestWaferKeys using @VM
TestWaferDtm = Xlate('TEST_RUN', Key, TEST_RUN_RUN_DTM$, 'X')
TestWaferDate = SRP_DateTime('Date', TestWaferDtm)
TestWaferTime = SRP_DateTime('Time', TestWaferDtm)
RdsDateIn = Xlate('RDS', RDSNo, RDS_DATE_IN$, 'X')
RdsTimeIn = Xlate('RDS', RDSNo, RDS_TIME_IN$, 'X')
TestWaferRanAfterLoad = TestWaferDate > RdsDateIn
If TestWaferRanAfterLoad EQ False$ then
TestWaferRanAfterLoad = (TestWaferDate EQ RdsDateIn) and TestWaferTime GT RdsTimeIn
end
Until TestWaferRanAfterLoad EQ True$
Next Key
Response = TestWaferRanAfterLoad
end service
//----------------------------------------------------------------------------------------------------------------------
// VerifyEPPMetrology
//
@ -1805,3 +1827,4 @@ return

View File

@ -277,6 +277,7 @@ Event PUB_SIGN.CLICK()
end
If (Valid EQ True$) then
ReactorType = XLATE('RDS',RDSNo,'REACTOR_TYPE','X')
ErrMsg = ''
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WoMatKey = WONo:'*':CassNo
IsLastCassetteInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
@ -298,6 +299,13 @@ Event PUB_SIGN.CLICK()
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = True$
TestWaferRanSinceLoad = WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$>
If TestWaferRanSinceLoad NE True$ then
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
If TestWaferRanSinceLoad NE True$ then
Message = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
Message = 'No material scheduled. Test wafer required.'
@ -305,21 +313,32 @@ Event PUB_SIGN.CLICK()
Message = 'Next work order is a NEW PSN number. Test wafer required.'
end
MesageAcked = Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : '' : @VM : 'REACTOR' : @VM : Reactor)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TWLogResult
If TWLogResult NE True$ then
ErrMsg = 'Unload blocked! You must run a test wafer before signing the unload'
end
end
end
end
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WONo : '], [Cassette:' : CassNo : ']'
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, @User4)
end
end
end
end
If ErrMsg NE '' then
Error_Services('Add', ErrMsg)
end
If Error_Services('NoError') then
QA_Services('SignUnloadStage', RDSNo, @User4)
end
end
end
If Error_Services('HasError') then
ErrorMsg = Error_Services('GetMessage')
ErrMsg(ErrorMsg)
@ -446,3 +465,4 @@ return

View File

@ -62,24 +62,80 @@ API reactItems.HEAD
API reactItems.GET
QueryFields = HTTP_Services('GetHTTPGetString')
If Index(QueryFields, 'riType', 1) then
If IndexC(QueryFields, 'includeNullRetireDt', 1) then
IncludeNullRetireDt = HTTP_Services('GetQueryField', 'includeNullRetireDt')
Begin Case
Case ( (IncludeNullRetireDt EQ 1) or (IncludeNullRetireDt EQ 0) )
Null
Case ( (IncludeNullRetireDt _EQC 'true') or (IncludeNullRetireDt _EQC 'yes') )
IncludeNullRetireDt = True$
Case ( (IncludeNullRetireDt _EQC 'false') or (IncludeNullRetireDt _EQC 'no') )
IncludeNullRetireDt = False$
Case Otherwise$
Error_Services('Add', 'Error in ':CurrentAPI:' API. Invalid value "':IncludeNullRetireDt:'" passed in for includeNullRetireDt.')
End Case
end else
IncludeNullRetireDt = ''
end
If Error_Services('NoError') then
If IndexC(QueryFields, 'showAllDetails', 1) then
ShowAllDetails = HTTP_Services('GetQueryField', 'showAllDetails')
Begin Case
Case ( (ShowAllDetails EQ 1) or (ShowAllDetails EQ 0) )
Null
Case ( (ShowAllDetails _EQC 'true') or (ShowAllDetails _EQC 'yes') )
ShowAllDetails = True$
Case ( (ShowAllDetails _EQC 'false') or (ShowAllDetails _EQC 'no') )
ShowAllDetails = False$
Case Otherwise$
Error_Services('Add', 'Error in ':CurrentAPI:' API. Invalid value "':ShowAllDetails:'" passed in for showAllDetails.')
End Case
end else
ShowAllDetails = False$
end
If Error_Services('NoError') then
If IndexC(QueryFields, 'currStatus', 1) then
CurrStatus = HTTP_Services('GetQueryField', 'currStatus')
end else
CurrStatus = ''
end
If IndexC(QueryFields, 'riType', 1) then
RIType = HTTP_Services('GetQueryField', 'riType')
end else
RIType = ''
end
If Index(QueryFields, 'currStatus', 1 ) then
CurrStatus = Http_Services('GetQueryField', 'currStatus')
If IndexC(QueryFields, 'entryDtStart', 1) then
EntryDtStart = HTTP_Services('GetQueryField', 'entryDtStart')
end else
CurrStatus = ''
EntryDtStart = ''
end
If Index(QueryFields, 'showAllDetails', 1 ) then
ShowAllDetails = Http_Services('GetQueryField', 'showAllDetails')
If IndexC(QueryFields, 'entryDtEnd', 1) then
EntryDtEnd = HTTP_Services('GetQueryField', 'entryDtEnd')
end else
ShowAllDetails = False$
EntryDtEnd = ''
end
If IndexC(QueryFields, 'retireDtStart', 1) then
RetireDtStart = HTTP_Services('GetQueryField', 'retireDtStart')
end else
RetireDtStart = ''
end
If IndexC(QueryFields, 'retireDtEnd', 1) then
RetireDtEnd = HTTP_Services('GetQueryField', 'retireDtEnd')
end else
RetireDtEnd = ''
end
StatusCode = 200
StatusCode = 200
GoSub CreateHALCollection
end else
HTTP_Services('SetResponseStatus', 400, Error_Services("GetMessage"))
end
end else
HTTP_Services('SetResponseStatus', 400, Error_Services("GetMessage"))
end
end api
@ -254,11 +310,7 @@ CreateHALCollection:
JSONCollection = ''
Abort = False$
If RIType NE '' OR CurrStatus NE '' then
ReactItems = React_Item_Services('GetReactItems', RIType, CurrStatus)
end else
ReactItems = React_Item_Services('GetAllReactItemKeys')
end
ReactItems = React_Item_Services('GetReactItems', RIType, CurrStatus, EntryDtStart, EntryDtEnd, RetireDtStart, RetireDtEnd, IncludeNullRetireDt)
If ReactItems NE '' then
If SRP_JSON(hJSONCollection, 'New', 'Object') then
@ -304,3 +356,4 @@ CreateHALCollection:
end
return

View File

@ -182,19 +182,6 @@ Service SignReactorLog(ReactorLogID, UserID)
ErrorMsg = 'Error in ':Service:' service. Error calling obj_React_Reads("Create"). Error code: ':ErrCode:'.'
end
end
If ErrorMsg EQ '' then
// Check if injector settings have been entered
* ReactInjSetting = ReactorLogRec<REACTOR_LOG_INJ_SETTING$>
* If ReactInjSetting NE '' then
* plParms = 'REACT_STATE':@RM
* plParms := ReactorNo:@RM
* plParms := REACT_STATE_CURR_INJ_RL_ID$:@RM
* plParms := ReactorLogID:@RM
* obj_Post_Log('Create',plParms)
* If Get_Status(ErrCode) then
* ErrorMsg = 'Error in ':Service:' service. Error calling obj_Post_Log("Create"). Error code: ':ErrCode:'.'
* end
* end
If ErrorMsg EQ '' then
// Check reactor prevent maintenance records
CurServices = ReactorLogRec<REACTOR_LOG_REACT_SERV_ID$>
@ -304,7 +291,7 @@ Service SignReactorLog(ReactorLogID, UserID)
end else
ErrorMsg = 'Error in ':Service:' service. Error creating INTRUSIVE_MAINT NICA order.'
end
end
end
end
end
@ -974,4 +961,3 @@ ClearCursors:
return

View File

@ -1,10 +1,10 @@
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
permission from Infineon.
Name : RDS_Actions
Name : React_Item_Actions
Description : Handles calculated columns and MFS calls for the current table.
@ -36,39 +36,19 @@ Function REACT_ITEM_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Reco
method.
History : (Date, Initials, Notes)
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
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)
05/12/25 djs Updated WRITE_PRE action to update the CURR_STATUS_STATIC field if the retire date changes.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert FILE.SYSTEM.EQUATES
$Insert ACTION_SETUP
$Insert RDS_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert COMPANY_EQUATES
$Insert RDS_LAYER_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert RLIST_EQUATES
$Insert APP_INSERTS
$Insert QA_MET_EQUATES
$Insert PRS_STAGE_EQUATES
$Insert WO_MAT_EQUATES
$Insert WO_MAT_QA_EQUATES
Equ COMMA$ to ','
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 subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services_Dev
Declare subroutine Work_Order_Services, Material_Services, Set_FSError
$Insert FILE.SYSTEM.EQUATES
$Insert REACT_ITEM_EQUATES
Declare function obj_React_Item
Declare subroutine Error_Services
If KeyID then GoSub Initialize_System_Variables
@ -109,12 +89,8 @@ CalculateColumn:
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
ActionFlow = ''
return
// ----- MFS calls -----------------------------------------------------------------------------------------------------
READ_RECORD_PRE:
@ -124,10 +100,9 @@ READ_RECORD_PRE:
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READ_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
@ -138,6 +113,7 @@ READ_RECORD:
return
READONLY_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
@ -147,6 +123,7 @@ READONLY_RECORD_PRE:
// ActionFlow = ACTION_STOP$
return
READONLY_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
@ -155,6 +132,7 @@ READONLY_RECORD:
// Record = ''
return
WRITE_RECORD_PRE:
ErrMsg = ''
@ -162,9 +140,7 @@ ErrMsg = ''
// Req'd parameter checks
ItemType = {RI_TYPE}
If ItemType EQ '' then
ErrMsg := 'Item Type was not specified. '
end
* If ItemType EQ '' then ErrMsg := 'Item Type was not specified. '
If ErrMsg NE '' then
Error_Services('Add', 'Error Saving Reactor Item: ' : ErrMsg)
@ -172,34 +148,40 @@ If ErrMsg NE '' then
Status = 0
Record = ''
ActionFlow = ACTION_STOP$
end else
OrigRetireDt = OrigRecord<REACT_ITEM_RETIRE_DT$>
NewRetireDt = Record<REACT_ITEM_RETIRE_DT$>
OrigNotes = OrigRecord<REACT_ITEM_NOTES$>
NewNotes = Record<REACT_ITEM_NOTES$>
If ( (OrigRetireDt NE NewRetireDt) or (OrigNotes NE NewNotes) ) then
CurrStatus = obj_React_Item('CurrStatus', Name:@RM:Record)
Record<REACT_ITEM_CURR_STATUS_STATIC$> = CurrStatus
SaveRecord = Record
end
end
return
WRITE_RECORD:
return
DELETE_RECORD_PRE:
return
DELETE_RECORD:
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return
@ -251,4 +233,3 @@ Restore_System_Variables:
return

View File

@ -20,62 +20,110 @@ Compile function React_Item_Services(@Service, @Params)
08/02/22 djs Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert LOGICAL
$Insert APP_INSERTS
$Insert SERVICE_SETUP
$Insert RLIST_EQUATES
$Insert REACT_ITEM_EQUATES
Declare function Database_Services, Error_Services, SRP_JSON, NextKey
Declare subroutine SRP_JSON, Error_Services, Btree.Extract, Database_Services
GoToService
Declare function Database_Services, Error_Services, SRP_JSON, NextKey, SRP_Date, obj_React_Item, SRP_Array
Declare subroutine SRP_JSON, Error_Services, Btree.Extract, Database_Services, Update_Index
Return Response or ""
GoToService else
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
end
//-----------------------------------------------------------------------------
// SERVICES
//-----------------------------------------------------------------------------
Return Response else ''
Service GetAllReactItemKeys()
AllKeys = ''
RList('SELECT REACT_ITEM', TARGET_ACTIVELIST$, '', '', '')
Done = False$
Reactors = ''
Loop
Readnext keyId else Done = True$
Until Done
AllKeys<1,-1> = keyId
Repeat
Response = AllKeys
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Service Parameter Options
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Options BOOLEAN = True$, False$
Service GetReactItems(RIType, CurrStatus)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Services
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Service GetReactItems(RIType, CurrStatus, EntryDtStart, EntryDtEnd, RetireDtStart, RetireDtEnd, IncludeNullRetireDt=BOOLEAN)
ErrorMsg = ''
Response = ''
Swap ',' with @VM in RIType
Swap ',' with @VM in CurrStatus
If ( (RIType NE '') or (CurrStatus NE '') or (EntryDtStart NE '') or (EntryDtEnd NE '') or (RetireDtStart NE '') or (RetireDtEnd NE '') or (IncludeNullRetireDt NE '') ) then
If EntryDtStart NE '' and Not(Num(EntryDtStart)) then EntryDtStart = IConv(EntryDtStart, 'D')
If EntryDtEnd NE '' and Not(Num(EntryDtEnd)) then EntryDtEnd = IConv(EntryDtEnd, 'D')
If RetireDtStart NE '' and Not(Num(RetireDtStart)) then RetireDtStart = IConv(RetireDtStart, 'D')
If RetireDtEnd NE '' and Not(Num(RetireDtEnd)) then RetireDtEnd = IConv(RetireDtEnd, 'D')
Open 'DICT.REACT_ITEM' to DictReactItem then
SearchString = ''
If RIType NE '' then SearchString := 'RI_TYPE':@VM:RIType:@FM
If CurrStatus NE '' then SearchString := 'CURR_STATUS':@VM:CurrStatus:@FM
RIKeys = ''
Btree.Extract(SearchString, 'REACT_ITEM', DictReactItem, RIKeys, '', '')
ErrCode = ''
IF Get_Status(ErrCode) then
ErrorMsg = 'Error in ':Service:' service. Error calling Btree.Extract. Error code ':ErrCode:'.'
end else
Response = RIKeys
If RIType NE '' then
Swap ',' with @VM in RIType
SearchString := 'RI_TYPE':@VM:RIType:@FM
end
Begin Case
Case ( (EntryDtStart NE '') and (EntryDtEnd NE '') )
EntryDtStart = OConv(EntryDtStart - 1, 'D4/')
EntryDtEnd = OConv(EntryDtEnd + 1, 'D4/')
SearchString := 'ENTER_DT':@VM:EntryDtStart:'~':EntryDtEnd:@FM
Case (EntryDtStart NE '')
EntryDtStart = OConv(EntryDtStart, 'D4/')
SearchString := 'ENTER_DT':@VM:'>=':EntryDtStart:@FM
Case (EntryDtEnd NE '')
SearchString := 'ENTER_DT':@VM:'<=':EntryDtEnd:@FM
Case Otherwise$
Null
End Case
Begin Case
Case ( (RetireDtStart NE '') and (RetireDtEnd NE '') )
RetireDtStart = OConv(RetireDtStart - 1, 'D4/')
RetireDtEnd = OConv(RetireDtEnd + 1, 'D4/')
SearchString := 'RETIRE_DT':@VM:RetireDtStart:'~':RetireDtEnd
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case (RetireDtStart NE '')
RetireDtStart = OConv(RetireDtStart, 'D4/')
SearchString := 'RETIRE_DT':@VM:'>=':RetireDtStart
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case (RetireDtEnd NE '')
SearchString := 'RETIRE_DT':@VM:'<=':RetireDtEnd
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case IncludeNullRetireDt
SearchString := 'RETIRE_DT':@VM:'':@FM
Case Otherwise$
Null
End Case
If CurrStatus NE '' then
Swap ',' with @VM in CurrStatus
SearchString := 'CURR_STATUS_STATIC':@VM:CurrStatus:@FM
end
Flag = ''
RIKeys = ''
Btree.Extract(SearchString, 'REACT_ITEM', DictReactItem, RIKeys, 'E', Flag)
If Flag EQ 0 then
EnterDtms = Xlate('REACT_ITEM', RIKeys, 'ENTER_DTM', 'X')
Array = RIKeys:@FM:EnterDtms
Array = SRP_Array('SortRows', Array, 'DN2', 'ARRAY', @FM, @VM)
Response = Array<1>
end else
ErrorMsg = 'Error in ':Service:' service. Error calling Btree.Extract.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening REACT_ITEM dictionary.'
end
end else
AllKeys = ''
RList('SELECT REACT_ITEM', TARGET_ACTIVELIST$, '', '', '')
Done = False$
Loop
Readnext KeyId else Done = True$
Until Done
AllKeys<1, -1> = KeyId
Repeat
Response = AllKeys
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end
@ -155,7 +203,6 @@ Service ConvertRecordToJSON(KeyID, Record, ItemURL)
Response = jsonRecord
end service
@ -326,11 +373,11 @@ Service GetReactItemTemplateJSON()
Response = jsonRecord
end service
Service CreateReactItem(Record)
ErrMsg = ''
KeyID = ''
If Record NE '' then
@ -355,6 +402,7 @@ Service CreateReactItem(Record)
end service
Service ConvertRecordToJSONQuick(KeyID, Record, ItemURL)
jsonRecord = ''
@ -407,6 +455,32 @@ Service ConvertRecordToJSONQuick(KeyID, Record, ItemURL)
Response = jsonRecord
end service
Service UpdateReactItemStatus(RINo)
If RINo NE '' then
If RowExists('REACT_ITEM', RINo) then
RIRec = Database_Services('ReadDataRow', 'REACT_ITEM', RINo)
If Error_Services('NoError') then
Update_Index('REACT_ITEM_HIST', 'RI_NO', False$, True$)
ReactItemCurrStatus = obj_React_Item('CurrStatus', RINo:@RM:RIRec)
ReactItemCurrStatusStatic = RIRec<REACT_ITEM_CURR_STATUS_STATIC$>
If ReactItemCurrStatus NE ReactItemCurrStatusStatic then
Open 'REACT_ITEM' to hTable then
WriteV ReactItemCurrStatus on hTable, RINo, REACT_ITEM_CURR_STATUS_STATIC$ else
Error_Services('Add', 'Error in ':Service:' service. Error writing CURR_STATUS_STATIC, ':ReactItemCurrStatus:', for REACT_ITEM ':RINo:'.')
end
end else
Error_Services('Add', 'Error in ':Service:' service. Error opening REACT_ITEM table for status update.')
end
end
end
end
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -419,6 +493,3 @@ ClearCursors:
return

View File

@ -335,6 +335,18 @@ Service ProcessScanData(ScanID, ScanJSON)
Error_Services('Add', 'Inactive employee.')
Case Otherwise$
ScansRow<SCANS.EMPLOYEE_ID$> = {EMPLOYEE_ID}
Username = {EMPLOYEE_ID}
Member = False$
Groups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEER':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
For each Group in Groups using @VM
Member = MemberOf(Username, Group)
Until Member EQ True$
Next Group
ScansRow<SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$> = Member
End Case
Case ScanData[1, 3] EQ '10S'
@ -520,6 +532,9 @@ Service ProcessScanData(ScanID, ScanJSON)
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
ScansRow<SCANS.OVERRIDE_REQD$> = 0
ScansRow<SCANS.OVERRIDE_TYPE$> = ''
ScansRow<SCANS.OVERRIDE_REASON$> = ''
ScansRow<SCANS.EMPLOYEE_ID$>= ''
Result = 'Override Performed successfully'
end
@ -652,6 +667,7 @@ Service ProcessScanData(ScanID, ScanJSON)
If (CassetteIDs NE '') then
TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$>
Abort = False$
TestWaferLotIsValid = False$
If TestWaferLotData NE '' then
ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
If ThisTestRunType NE '' then
@ -667,6 +683,8 @@ Service ProcessScanData(ScanID, ScanJSON)
If Not(TWLotCurrOpen) then
Abort = True$
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.')
end else
TestWaferLotIsValid = True$
end
end else
Abort = True$
@ -1090,6 +1108,60 @@ Service ProcessScanData(ScanID, ScanJSON)
Case Otherwise$
// Keep error on Error_Services stack and return 400 level error.
End Case
end else
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
WoMatKey = WO:'*':CassNo
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
LastCassInWoTestWaferReqMsg = ''
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
If LastCassInWo then
NextEventScheduled = False$
NextEventHasSamePsn = True$
NextEventIsBlock = False$
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
If Error_Services('NoError') then
NextEventScheduled = True$
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
end
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferAckReq = True$
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
TestWaferRanSinceLoad = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> or TestWaferLotIsValid EQ True$
If TestWaferLotIsValid NE True$ and TestWaferRanSinceLoad NE True$ then
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
If TestWaferRanSinceLoad NE True$ then
LastCassInWoTestWaferReqMsg = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
end else If NextEventHasSamePsn EQ False$ then
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
end
Scan_Services('AddNotAcceptableReason', LastCassInWoTestWaferReqMsg)
end
end
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
end
end
end
end
end
end else
ScanMsg = 'The POST stage engineering instructions must be acknowledged before the load operation can be signed.'
@ -1403,6 +1475,7 @@ Service AcceptScan(ScanID, ScanJSON)
LogData<3> = Username
LogData<4> = CurrStage
LogData<5> = ScanID
Begin Case
Case CurrStage _EQC 'VER'
Action = 'LOAD'
@ -1493,6 +1566,23 @@ Service AcceptScan(ScanID, ScanJSON)
Case CurrStage _EQC 'UNLOAD'
Action = 'UNLOAD'
Continue = True$
If TestWaferLots NE '' then
ToolID = ScansRow<SCANS.TOOL_ID$>
Reactor = ToolID[-1, 'BR']
Username = ScansRow<SCANS.EMPLOYEE_ID$>
TestWaferLotQtys = ScansRow<SCANS.TW_LOT_QTY$>
TestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
PSNo = Xlate('RDS', RDSNo, RDS_PROD_SPEC_ID$, True$, 'X')
NewTestRunId = Test_Run_Services('CreateTestRunRecord', TestRunType, 'R', Reactor, PSNo, RDSNo,Username , TestWaferLots, TestWaferLotQtys)
If Error_Services('HasError') then
ErrorMessage = Error_Services('GetMessage')
Error_Services('Set', ErrorMessage)
Continue = False$
end
end
If Continue EQ True$ then
// Check if UNLOAD stage is ready to sign
UnloadStageSigned = QA_Services('SignUnloadStage', RDSNo, Username, 1)
If UnloadStageSigned EQ True$ then
@ -1501,6 +1591,7 @@ Service AcceptScan(ScanID, ScanJSON)
LogData<6> = Action
LogData<7> = Result
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
end
Case CurrStage _EQC 'COMP'
Action = 'COMP'
Error_Services('Set', '(':CassetteID:") Cassette has already been FQA'd.")
@ -1674,6 +1765,7 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
SRP_JSON(objEmployee, 'SetValue', 'authorized', {EMPLOYEE_AUTHORIZED}, 'Boolean')
SRP_JSON(objEmployee, 'SetValue', 'notAuthorizedReason', {EMPLOYEE_NOT_AUTHORIZED_REASON}, 'String')
SRP_JSON(objEmployee, 'SetValue', 'authenticated' , @Record<SCANS.AUTHENTICATED$> , 'Boolean');//JRO Change
SRP_JSON(objEmployee, 'SetValue', 'isAuthorizedToOverrideROTR', @Record<SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$>, 'Boolean')
SRP_JSON(objJSONScan, 'Set', 'employee', objEmployee)
SRP_JSON(objEmployee, 'Release')
@ -1787,52 +1879,6 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
end else
SupplUnloadInstAckReq = False$
end
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
WoMatKey = WO:'*':CassNo
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
LastCassInWoTestWaferReqMsg = ''
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
If LastCassInWo then
NextEventScheduled = False$
NextEventHasSamePsn = True$
NextEventIsBlock = False$
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
If Error_Services('NoError') then
NextEventScheduled = True$
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
end
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferAckReq = True$
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = LastCassInWoTestWaferAcked
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
LastCassInWoTestWaferReqMsg = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
end else If NextEventHasSamePsn EQ False$ then
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
end
end
end
end
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReq', LastCassInWoTestWaferAckReq, 'Boolean')
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAcked', LastCassInWoTestWaferAcked, 'Boolean')
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReqMsg', LastCassInWoTestWaferReqMsg, 'String')
end
end else
SupplUnloadInstAckReq = False$
end
@ -2355,3 +2401,4 @@ return

View File

@ -181,14 +181,7 @@ DoRead:
Reactor = get_property( @window, '@Reactor' )
LoadedRDS = Xlate('REACT_STATUS', Reactor, 'LOAD_RDS', 'X')
LoadedRuns = ''
If LoadedRDS NE '' then
For each RDS in LoadedRDS using @VM setting vPos
Locate RDS in AllRDS using @VM setting rPos then
LoadedRuns<0, -1> = rPos
end
Next RDS
end
LoadedRuns = Xlate('RDS', LoadedRDS, 'RUN_ORDER_NUM', 'X')
LoadedData = ''
For each RDSNo in LoadedRDS using @VM setting vPos
@ -507,5 +500,3 @@ REACT_MODE:
END
RETURN

View File

@ -179,3 +179,4 @@ Equ PROD_SPEC_ANKO_MET_POCKETS$ To 166
Equ PROD_SPEC_ANKO_FULL_CHAR_POCKET$ To 167
Equ PROD_SPEC_ANKO_WAFER_SELECTION$ To 168
Equ PROD_SPEC_LOCKED_BY$ To 169
Equ PROD_SPEC_SHOW_SPEC_INST_ON_MU_ADD$ To 170

View File

@ -28,3 +28,5 @@ Equ REACT_ITEM_TUBE_GRADE$ To 18
Equ REACT_ITEM_TUBE_PRESS$ To 19
Equ REACT_ITEM_TUBE_STYLE$ To 20
Equ REACT_ITEM_NEW_OR_REFURB$ To 21
Equ REACT_ITEM_CURR_STATUS_STATIC$ To 22

View File

@ -40,6 +40,9 @@ compile insert SCANS_EQUATES
equ SCANS.TW_LOT_QTY$ to 31
equ SCANS.TEST_RUN_TYPE_ID$ to 32
equ SCANS.TEST_RUN_TYPE_NAME$ to 33
equ SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$ to 34
#endif

View File

@ -156,4 +156,5 @@ Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$ To 147
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148
Equ WO_MAT_HOLD_STAGE$ To 149
Equ WO_MAT_HOLD_INTERRUPTED$ To 150
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$ To 151