diff --git a/LSL2/OIWIN/NDW_VERIFY_BARCODE.json b/LSL2/OIWIN/NDW_VERIFY_BARCODE.json new file mode 100644 index 0000000..81b0b90 --- /dev/null +++ b/LSL2/OIWIN/NDW_VERIFY_BARCODE.json @@ -0,0 +1,2102 @@ +{ + "header": { + "version": 1, + "type": "record" + }, + "body": { + "record1": { + "<1>": "1010", + "<2>": "12", + "<3>": "" + }, + "record2": { + "<1>": { + "<1,1>": "NDW_VERIFY_BARCODE", + "<1,2>": "", + "<1,3>": "WINDOW", + "<1,4>": "", + "<1,5>": "262", + "<1,6>": "272", + "<1,7>": "-602", + "<1,8>": "-306", + "<1,9>": "Verify Lot Barcodes", + "<1,10>": { + "<1,10,1>": "0x84CE0000", + "<1,10,2>": "0x100" + }, + "<1,11>": { + "<1,11,1>": "0x8000", + "<1,11,2>": "0x80000000" + }, + "<1,12>": "", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, + "<1,14>": "", + "<1,15>": "", + "<1,16>": "", + "<1,17>": "", + "<1,18>": { + "<1,18,1>": { + "<1,18,1,1>": "R", + "<1,18,1,2>": "EXECUTE", + "<1,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<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>": "STPROC" + } + }, + "<1,19>": "CREATE", + "<1,20>": "", + "<1,21>": "", + "<1,22>": "", + "<1,23>": "", + "<1,24>": { + "<1,24,1>": "", + "<1,24,2>": "0", + "<1,24,3>": "0", + "<1,24,4>": "0", + "<1,24,5>": "", + "<1,24,6>": "0", + "<1,24,7>": "", + "<1,24,8>": "", + "<1,24,9>": "", + "<1,24,10>": "0", + "<1,24,11>": "0", + "<1,24,12>": "0", + "<1,24,13>": "0", + "<1,24,14>": "0", + "<1,24,15>": "0", + "<1,24,16>": "0", + "<1,24,17>": "0" + }, + "<1,25>": "", + "<1,26>": "", + "<1,27>": "", + "<1,28>": "", + "<1,29>": "", + "<1,30>": "", + "<1,31>": "", + "<1,32>": "", + "<1,33>": "", + "<1,34>": "LSL2*IMAGE*ICO*INFINEON", + "<1,35>": "", + "<1,36>": "", + "<1,37>": { + "<1,37,1>": "0X10001", + "<1,37,2>": "0X10001" + }, + "<1,38>": "", + "<1,39>": "", + "<1,40>": "", + "<1,41>": "", + "<1,42>": "", + "<1,43>": "", + "<1,44>": "", + "<1,45>": "", + "<1,46>": "", + "<1,47>": "", + "<1,48>": "", + "<1,49>": "", + "<1,50>": "", + "<1,51>": "", + "<1,52>": "", + "<1,53>": "", + "<1,54>": "", + "<1,55>": "", + "<1,56>": "", + "<1,57>": "", + "<1,58>": "", + "<1,59>": "", + "<1,60>": "", + "<1,61>": "", + "<1,62>": { + "<1,62,1>": "0", + "<1,62,2>": "", + "<1,62,3>": "", + "<1,62,4>": "0", + "<1,62,5>": "0", + "<1,62,6>": "0", + "<1,62,7>": "", + "<1,62,8>": "0.50", + "<1,62,9>": "5.00", + "<1,62,10>": "0.00" + }, + "<1,63>": "", + "<1,64>": "", + "<1,65>": "", + "<1,66>": "", + "<1,67>": "", + "<1,68>": "", + "<1,69>": "", + "<1,70>": "", + "<1,71>": "", + "<1,72>": "", + "<1,73>": "", + "<1,74>": "", + "<1,75>": "", + "<1,76>": "", + "<1,77>": "", + "<1,78>": "", + "<1,79>": "", + "<1,80>": "", + "<1,81>": "", + "<1,82>": "", + "<1,83>": "", + "<1,84>": "", + "<1,85>": "", + "<1,86>": "", + "<1,87>": "", + "<1,88>": "", + "<1,89>": "", + "<1,90>": "", + "<1,91>": "", + "<1,92>": "", + "<1,93>": "", + "<1,94>": "", + "<1,95>": "", + "<1,96>": "", + "<1,97>": "", + "<1,98>": "", + "<1,99>": "", + "<1,100>": "", + "<1,101>": "", + "<1,102>": "", + "<1,103>": "", + "<1,104>": "", + "<1,105>": "", + "<1,106>": "0", + "<1,107>": "", + "<1,108>": "" + } + }, + "record3": { + "<1>": { + "<1,1>": "PUB_CANCEL", + "<1,2>": "", + "<1,3>": "PUSHBUTTON", + "<1,4>": "NDW_VERIFY_BARCODE", + "<1,5>": "381", + "<1,6>": "240", + "<1,7>": "196", + "<1,8>": "48", + "<1,9>": "Cancel", + "<1,10>": { + "<1,10,1>": "0x56002300", + "<1,10,2>": "0x0" + }, + "<1,11>": { + "<1,11,1>": "0x0", + "<1,11,2>": "0x80000000" + }, + "<1,12>": "12", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "0" + }, + "<1,14>": "-2", + "<1,15>": { + "<1,15,1>": { + "<1,15,1,1>": "Segoe UI", + "<1,15,1,2>": "-28", + "<1,15,1,3>": "400", + "<1,15,1,4>": "0", + "<1,15,1,5>": "0", + "<1,15,1,6>": "0", + "<1,15,1,7>": "0", + "<1,15,1,8>": "34", + "<1,15,1,9>": "0", + "<1,15,1,10>": "3", + "<1,15,1,11>": "2", + "<1,15,1,12>": "1" + } + }, + "<1,16>": "", + "<1,17>": "", + "<1,18>": { + "<1,18,1>": { + "<1,18,1,1>": "X", + "<1,18,1,2>": "EXECUTE", + "<1,18,1,3>": "@WINDOW_EVENTS", + "<1,18,1,4>": { + "<1,18,1,4,1>": "@SELF", + "<1,18,1,4,2>": "@EVENT", + "<1,18,1,4,3>": "@PARAM1", + "<1,18,1,4,4>": "@PARAM2", + "<1,18,1,4,5>": "@PARAM3", + "<1,18,1,4,6>": "@PARAM4", + "<1,18,1,4,7>": "@PARAM5", + "<1,18,1,4,8>": "@PARAM6" + }, + "<1,18,1,5>": "", + "<1,18,1,6>": "", + "<1,18,1,7>": "", + "<1,18,1,8>": "", + "<1,18,1,9>": "", + "<1,18,1,10>": "", + "<1,18,1,11>": "", + "<1,18,1,12>": "", + "<1,18,1,13>": "", + "<1,18,1,14>": "", + "<1,18,1,15>": "COMMEVT", + "<1,18,1,16>": "0" + } + }, + "<1,19>": "CLICK", + "<1,20>": "", + "<1,21>": "", + "<1,22>": "", + "<1,23>": "", + "<1,24>": "", + "<1,25>": "", + "<1,26>": "", + "<1,27>": "", + "<1,28>": "", + "<1,29>": "", + "<1,30>": "", + "<1,31>": "", + "<1,32>": "", + "<1,33>": "", + "<1,34>": "", + "<1,35>": "", + "<1,36>": "", + "<1,37>": "", + "<1,38>": "", + "<1,39>": "", + "<1,40>": "-1", + "<1,41>": { + "<1,41,1>": "", + "<1,41,2>": "-1" + }, + "<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,64,1>": "-2", + "<1,64,2>": "-2", + "<1,64,3>": "0" + }, + "<1,65>": "-2", + "<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>": "0", + "<1,91>": "0", + "<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_ENG_OVERRIDE", + "<2,2>": "", + "<2,3>": "PUSHBUTTON", + "<2,4>": "NDW_VERIFY_BARCODE", + "<2,5>": "170", + "<2,6>": "240", + "<2,7>": "196", + "<2,8>": "48", + "<2,9>": "Eng Override", + "<2,10>": { + "<2,10,1>": "0x56002300", + "<2,10,2>": "0x0" + }, + "<2,11>": { + "<2,11,1>": "0x0", + "<2,11,2>": "0x80000000" + }, + "<2,12>": "11", + "<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>": "-28", + "<2,15,1,3>": "400", + "<2,15,1,4>": "0", + "<2,15,1,5>": "0", + "<2,15,1,6>": "0", + "<2,15,1,7>": "0", + "<2,15,1,8>": "34", + "<2,15,1,9>": "0", + "<2,15,1,10>": "3", + "<2,15,1,11>": "2", + "<2,15,1,12>": "1" + } + }, + "<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>": "TXT_CASS_SCAN_1", + "<3,2>": "", + "<3,3>": "STATIC", + "<3,4>": "NDW_VERIFY_BARCODE", + "<3,5>": "62", + "<3,6>": "101", + "<3,7>": "221", + "<3,8>": "50", + "<3,9>": "Lot Scan #1", + "<3,10>": { + "<3,10,1>": "0x56000800", + "<3,10,2>": "0x0" + }, + "<3,11>": { + "<3,11,1>": "0x4", + "<3,11,2>": "0x80000000" + }, + "<3,12>": "1", + "<3,13>": { + "<3,13,1>": "-1", + "<3,13,2>": "-1", + "<3,13,3>": "" + }, + "<3,14>": "0", + "<3,15>": { + "<3,15,1>": { + "<3,15,1,1>": "Segoe UI", + "<3,15,1,2>": "-37", + "<3,15,1,3>": "400", + "<3,15,1,4>": "0", + "<3,15,1,5>": "0", + "<3,15,1,6>": "0", + "<3,15,1,7>": "0", + "<3,15,1,8>": "34", + "<3,15,1,9>": "0", + "<3,15,1,10>": "3", + "<3,15,1,11>": "2", + "<3,15,1,12>": "1", + "<3,15,1,13>": "0", + "<3,15,1,14>": "0" + } + }, + "<3,16>": "", + "<3,17>": "", + "<3,18>": "", + "<3,19>": "", + "<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>": "", + "<3,41>": "", + "<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,63,1>": "", + "<3,63,2>": "", + "<3,63,3>": "", + "<3,63,4>": "", + "<3,63,5>": "", + "<3,63,6>": "", + "<3,63,7>": "", + "<3,63,8>": "" + }, + "<3,64>": { + "<3,64,1>": "", + "<3,64,2>": "", + "<3,64,3>": "" + }, + "<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>": "" + }, + "<4>": { + "<4,1>": "EDL_CASS_SCAN_1", + "<4,2>": "", + "<4,3>": "EDITFIELD", + "<4,4>": "NDW_VERIFY_BARCODE", + "<4,5>": "296", + "<4,6>": "100", + "<4,7>": "281", + "<4,8>": "51", + "<4,9>": "", + "<4,10>": { + "<4,10,1>": "0x5E000080", + "<4,10,2>": "0x200" + }, + "<4,11>": { + "<4,11,1>": "0x0", + "<4,11,2>": "0x80000000" + }, + "<4,12>": "2", + "<4,13>": { + "<4,13,1>": "-2", + "<4,13,2>": "-2", + "<4,13,3>": "" + }, + "<4,14>": "0", + "<4,15>": { + "<4,15,1>": { + "<4,15,1,1>": "Segoe UI", + "<4,15,1,2>": "-37", + "<4,15,1,3>": "400", + "<4,15,1,4>": "0", + "<4,15,1,5>": "0", + "<4,15,1,6>": "0", + "<4,15,1,7>": "0", + "<4,15,1,8>": "34", + "<4,15,1,9>": "0", + "<4,15,1,10>": "3", + "<4,15,1,11>": "2", + "<4,15,1,12>": "1", + "<4,15,1,13>": "0", + "<4,15,1,14>": "0" + } + }, + "<4,16>": "", + "<4,17>": "", + "<4,18>": { + "<4,18,1>": { + "<4,18,1,1>": "R", + "<4,18,1,2>": "EXECUTE", + "<4,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<4,18,1,4>": { + "<4,18,1,4,1>": "@SELF", + "<4,18,1,4,2>": "@EVENT", + "<4,18,1,4,3>": "@PARAM1", + "<4,18,1,4,4>": "@PARAM2", + "<4,18,1,4,5>": "@PARAM3", + "<4,18,1,4,6>": "@PARAM4", + "<4,18,1,4,7>": "@PARAM5", + "<4,18,1,4,8>": "@PARAM6" + }, + "<4,18,1,5>": "", + "<4,18,1,6>": "", + "<4,18,1,7>": "", + "<4,18,1,8>": "", + "<4,18,1,9>": "", + "<4,18,1,10>": "", + "<4,18,1,11>": "", + "<4,18,1,12>": "", + "<4,18,1,13>": "", + "<4,18,1,14>": "", + "<4,18,1,15>": "STPROC" + } + }, + "<4,19>": "LOSTFOCUS", + "<4,20>": "", + "<4,21>": "", + "<4,22>": "", + "<4,23>": "", + "<4,24>": "", + "<4,25>": "", + "<4,26>": "", + "<4,27>": "", + "<4,28>": "<>", + "<4,29>": "<>", + "<4,30>": "<>", + "<4,31>": "0", + "<4,32>": "", + "<4,33>": "", + "<4,34>": "", + "<4,35>": "", + "<4,36>": { + "<4,36,1>": "0", + "<4,36,2>": "0" + }, + "<4,37>": "", + "<4,38>": "", + "<4,39>": "", + "<4,40>": "", + "<4,41>": "", + "<4,42>": "", + "<4,43>": "", + "<4,44>": "", + "<4,45>": "", + "<4,46>": "", + "<4,47>": "", + "<4,48>": "", + "<4,49>": "", + "<4,50>": "", + "<4,51>": "", + "<4,52>": "", + "<4,53>": "", + "<4,54>": "", + "<4,55>": "", + "<4,56>": "", + "<4,57>": "", + "<4,58>": "", + "<4,59>": "", + "<4,60>": "", + "<4,61>": "", + "<4,62>": "0", + "<4,63>": "", + "<4,64>": "", + "<4,65>": "", + "<4,66>": "", + "<4,67>": "", + "<4,68>": "", + "<4,69>": "", + "<4,70>": "", + "<4,71>": "", + "<4,72>": "", + "<4,73>": "", + "<4,74>": "", + "<4,75>": "", + "<4,76>": "", + "<4,77>": "", + "<4,78>": "", + "<4,79>": "", + "<4,80>": "", + "<4,81>": "", + "<4,82>": "", + "<4,83>": "", + "<4,84>": "", + "<4,85>": "", + "<4,86>": "", + "<4,87>": "", + "<4,88>": "", + "<4,89>": "", + "<4,90>": "", + "<4,91>": "", + "<4,92>": "", + "<4,93>": "", + "<4,94>": "", + "<4,95>": "", + "<4,96>": "", + "<4,97>": "", + "<4,98>": "", + "<4,99>": "", + "<4,100>": "", + "<4,101>": "", + "<4,102>": "", + "<4,103>": "", + "<4,104>": "", + "<4,105>": "", + "<4,106>": "", + "<4,107>": "", + "<4,108>": "" + }, + "<5>": { + "<5,1>": "TXT_CASS_SCAN_2", + "<5,2>": "", + "<5,3>": "STATIC", + "<5,4>": "NDW_VERIFY_BARCODE", + "<5,5>": "50", + "<5,6>": "174", + "<5,7>": "234", + "<5,8>": "50", + "<5,9>": "Lot Scan #2", + "<5,10>": { + "<5,10,1>": "0x56000800", + "<5,10,2>": "0x0" + }, + "<5,11>": { + "<5,11,1>": "0x0", + "<5,11,2>": "0x80000000" + }, + "<5,12>": "3", + "<5,13>": { + "<5,13,1>": "-1", + "<5,13,2>": "-1", + "<5,13,3>": "" + }, + "<5,14>": "0", + "<5,15>": { + "<5,15,1>": { + "<5,15,1,1>": "Segoe UI", + "<5,15,1,2>": "-37", + "<5,15,1,3>": "400", + "<5,15,1,4>": "0", + "<5,15,1,5>": "0", + "<5,15,1,6>": "0", + "<5,15,1,7>": "0", + "<5,15,1,8>": "34", + "<5,15,1,9>": "0", + "<5,15,1,10>": "3", + "<5,15,1,11>": "2", + "<5,15,1,12>": "1", + "<5,15,1,13>": "0", + "<5,15,1,14>": "0" + } + }, + "<5,16>": "", + "<5,17>": "", + "<5,18>": "", + "<5,19>": "", + "<5,20>": "", + "<5,21>": "", + "<5,22>": "", + "<5,23>": "", + "<5,24>": "", + "<5,25>": "", + "<5,26>": "", + "<5,27>": "", + "<5,28>": "", + "<5,29>": "", + "<5,30>": "", + "<5,31>": "", + "<5,32>": "", + "<5,33>": "", + "<5,34>": "", + "<5,35>": "", + "<5,36>": "", + "<5,37>": "", + "<5,38>": "", + "<5,39>": "", + "<5,40>": "", + "<5,41>": "", + "<5,42>": "", + "<5,43>": "", + "<5,44>": "", + "<5,45>": "", + "<5,46>": "", + "<5,47>": "", + "<5,48>": "", + "<5,49>": "", + "<5,50>": "", + "<5,51>": "", + "<5,52>": "", + "<5,53>": "", + "<5,54>": "", + "<5,55>": "", + "<5,56>": "", + "<5,57>": "", + "<5,58>": "", + "<5,59>": "", + "<5,60>": "", + "<5,61>": "", + "<5,62>": "0", + "<5,63>": { + "<5,63,1>": "", + "<5,63,2>": "", + "<5,63,3>": "", + "<5,63,4>": "", + "<5,63,5>": "", + "<5,63,6>": "", + "<5,63,7>": "", + "<5,63,8>": "" + }, + "<5,64>": { + "<5,64,1>": "", + "<5,64,2>": "", + "<5,64,3>": "" + }, + "<5,65>": "-2", + "<5,66>": "", + "<5,67>": "", + "<5,68>": "", + "<5,69>": "", + "<5,70>": "", + "<5,71>": "", + "<5,72>": "", + "<5,73>": "", + "<5,74>": "", + "<5,75>": "", + "<5,76>": "", + "<5,77>": "", + "<5,78>": "", + "<5,79>": "", + "<5,80>": "", + "<5,81>": "", + "<5,82>": "", + "<5,83>": "", + "<5,84>": "", + "<5,85>": "", + "<5,86>": "", + "<5,87>": "", + "<5,88>": "", + "<5,89>": "", + "<5,90>": "0", + "<5,91>": "0", + "<5,92>": "", + "<5,93>": "", + "<5,94>": "", + "<5,95>": "", + "<5,96>": "", + "<5,97>": "", + "<5,98>": "", + "<5,99>": "", + "<5,100>": "", + "<5,101>": "", + "<5,102>": "", + "<5,103>": "", + "<5,104>": "", + "<5,105>": "", + "<5,106>": "", + "<5,107>": "", + "<5,108>": "" + }, + "<6>": { + "<6,1>": "EDL_CASS_SCAN_2", + "<6,2>": "", + "<6,3>": "EDITFIELD", + "<6,4>": "NDW_VERIFY_BARCODE", + "<6,5>": "296", + "<6,6>": "173", + "<6,7>": "281", + "<6,8>": "51", + "<6,9>": "", + "<6,10>": { + "<6,10,1>": "0x5E000080", + "<6,10,2>": "0x200" + }, + "<6,11>": { + "<6,11,1>": "0x0", + "<6,11,2>": "0x80000000" + }, + "<6,12>": "4", + "<6,13>": { + "<6,13,1>": "-2", + "<6,13,2>": "-2", + "<6,13,3>": "" + }, + "<6,14>": "0", + "<6,15>": { + "<6,15,1>": { + "<6,15,1,1>": "Segoe UI", + "<6,15,1,2>": "-37", + "<6,15,1,3>": "400", + "<6,15,1,4>": "0", + "<6,15,1,5>": "0", + "<6,15,1,6>": "0", + "<6,15,1,7>": "0", + "<6,15,1,8>": "34", + "<6,15,1,9>": "0", + "<6,15,1,10>": "3", + "<6,15,1,11>": "2", + "<6,15,1,12>": "1", + "<6,15,1,13>": "0", + "<6,15,1,14>": "0" + } + }, + "<6,16>": "", + "<6,17>": "", + "<6,18>": { + "<6,18,1>": { + "<6,18,1,1>": "R", + "<6,18,1,2>": "EXECUTE", + "<6,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<6,18,1,4>": { + "<6,18,1,4,1>": "@SELF", + "<6,18,1,4,2>": "@EVENT", + "<6,18,1,4,3>": "@PARAM1", + "<6,18,1,4,4>": "@PARAM2", + "<6,18,1,4,5>": "@PARAM3", + "<6,18,1,4,6>": "@PARAM4", + "<6,18,1,4,7>": "@PARAM5", + "<6,18,1,4,8>": "@PARAM6" + }, + "<6,18,1,5>": "", + "<6,18,1,6>": "", + "<6,18,1,7>": "", + "<6,18,1,8>": "", + "<6,18,1,9>": "", + "<6,18,1,10>": "", + "<6,18,1,11>": "", + "<6,18,1,12>": "", + "<6,18,1,13>": "", + "<6,18,1,14>": "", + "<6,18,1,15>": "STPROC" + } + }, + "<6,19>": "LOSTFOCUS", + "<6,20>": "", + "<6,21>": "", + "<6,22>": "", + "<6,23>": "", + "<6,24>": "", + "<6,25>": "", + "<6,26>": "", + "<6,27>": "", + "<6,28>": "<>", + "<6,29>": "<>", + "<6,30>": "<>", + "<6,31>": "0", + "<6,32>": "", + "<6,33>": "", + "<6,34>": "", + "<6,35>": "", + "<6,36>": { + "<6,36,1>": "0", + "<6,36,2>": "0" + }, + "<6,37>": "", + "<6,38>": "", + "<6,39>": "", + "<6,40>": "", + "<6,41>": "", + "<6,42>": "", + "<6,43>": "", + "<6,44>": "", + "<6,45>": "", + "<6,46>": "", + "<6,47>": "", + "<6,48>": "", + "<6,49>": "", + "<6,50>": "", + "<6,51>": "", + "<6,52>": "", + "<6,53>": "", + "<6,54>": "", + "<6,55>": "", + "<6,56>": "", + "<6,57>": "", + "<6,58>": "", + "<6,59>": "", + "<6,60>": "", + "<6,61>": "", + "<6,62>": "0", + "<6,63>": "", + "<6,64>": "", + "<6,65>": "", + "<6,66>": "", + "<6,67>": "", + "<6,68>": "", + "<6,69>": "", + "<6,70>": "", + "<6,71>": "", + "<6,72>": "", + "<6,73>": "", + "<6,74>": "", + "<6,75>": "", + "<6,76>": "", + "<6,77>": "", + "<6,78>": "", + "<6,79>": "", + "<6,80>": "", + "<6,81>": "", + "<6,82>": "", + "<6,83>": "", + "<6,84>": "", + "<6,85>": "", + "<6,86>": "", + "<6,87>": "", + "<6,88>": "", + "<6,89>": "", + "<6,90>": "", + "<6,91>": "", + "<6,92>": "", + "<6,93>": "", + "<6,94>": "", + "<6,95>": "", + "<6,96>": "", + "<6,97>": "", + "<6,98>": "", + "<6,99>": "", + "<6,100>": "", + "<6,101>": "", + "<6,102>": "", + "<6,103>": "", + "<6,104>": "", + "<6,105>": "", + "<6,106>": "", + "<6,107>": "", + "<6,108>": "" + }, + "<7>": { + "<7,1>": "OLE_SUBCLASS", + "<7,2>": "", + "<7,3>": "OLECONTROL.SRP.Subclass.1", + "<7,4>": "NDW_VERIFY_BARCODE", + "<7,5>": "17", + "<7,6>": "10", + "<7,7>": "116", + "<7,8>": "28", + "<7,9>": "SRP.Subclass.1", + "<7,10>": { + "<7,10,1>": "0x46000000", + "<7,10,2>": "0x0" + }, + "<7,11>": { + "<7,11,1>": "0x0", + "<7,11,2>": "0x80000000" + }, + "<7,12>": "5", + "<7,13>": { + "<7,13,1>": "-2", + "<7,13,2>": "-2", + "<7,13,3>": "" + }, + "<7,14>": "0", + "<7,15>": { + "<7,15,1>": { + "<7,15,1,1>": "Segoe UI", + "<7,15,1,2>": "-12", + "<7,15,1,3>": "400", + "<7,15,1,4>": "0", + "<7,15,1,5>": "0", + "<7,15,1,6>": "0", + "<7,15,1,7>": "0", + "<7,15,1,8>": "34", + "<7,15,1,9>": "0", + "<7,15,1,10>": "3", + "<7,15,1,11>": "2", + "<7,15,1,12>": "1", + "<7,15,1,13>": "0", + "<7,15,1,14>": "0" + } + }, + "<7,16>": "", + "<7,17>": "", + "<7,18>": "", + "<7,19>": "", + "<7,20>": "", + "<7,21>": "", + "<7,22>": "", + "<7,23>": "", + "<7,24>": "", + "<7,25>": "", + "<7,26>": "", + "<7,27>": "", + "<7,28>": "", + "<7,29>": "", + "<7,30>": "", + "<7,31>": "", + "<7,32>": "", + "<7,33>": "", + "<7,34>": "", + "<7,35>": "", + "<7,36>": "", + "<7,37>": "", + "<7,38>": "", + "<7,39>": "", + "<7,40>": "", + "<7,41>": "", + "<7,42>": "", + "<7,43>": "", + "<7,44>": "", + "<7,45>": "", + "<7,46>": "", + "<7,47>": "", + "<7,48>": "", + "<7,49>": "", + "<7,50>": "", + "<7,51>": "", + "<7,52>": "", + "<7,53>": "", + "<7,54>": "", + "<7,55>": "OLE.Border", + "<7,56>": "None", + "<7,57>": "", + "<7,58>": "", + "<7,59>": "", + "<7,60>": "", + "<7,61>": "", + "<7,62>": "", + "<7,63>": "", + "<7,64>": "", + "<7,65>": "", + "<7,66>": "", + "<7,67>": "", + "<7,68>": "", + "<7,69>": "", + "<7,70>": "", + "<7,71>": "", + "<7,72>": "", + "<7,73>": "", + "<7,74>": "", + "<7,75>": "", + "<7,76>": "", + "<7,77>": "", + "<7,78>": "", + "<7,79>": "", + "<7,80>": "", + "<7,81>": "", + "<7,82>": "", + "<7,83>": "", + "<7,84>": "", + "<7,85>": "", + "<7,86>": "", + "<7,87>": "", + "<7,88>": "", + "<7,89>": "", + "<7,90>": "", + "<7,91>": "", + "<7,92>": "", + "<7,93>": "", + "<7,94>": "", + "<7,95>": "", + "<7,96>": "", + "<7,97>": "", + "<7,98>": "", + "<7,99>": "", + "<7,100>": "", + "<7,101>": "", + "<7,102>": "", + "<7,103>": "", + "<7,104>": "", + "<7,105>": "", + "<7,106>": "", + "<7,107>": "", + "<7,108>": "" + }, + "<8>": { + "<8,1>": "OLE_POPUP", + "<8,2>": "", + "<8,3>": "OLECONTROL.SRP.Popup.1", + "<8,4>": "NDW_VERIFY_BARCODE", + "<8,5>": "137", + "<8,6>": "11", + "<8,7>": "116", + "<8,8>": "28", + "<8,9>": "SRP.Popup.1", + "<8,10>": { + "<8,10,1>": "0x46000000", + "<8,10,2>": "0x0" + }, + "<8,11>": { + "<8,11,1>": "0x0", + "<8,11,2>": "0x80000000" + }, + "<8,12>": "6", + "<8,13>": { + "<8,13,1>": "-2", + "<8,13,2>": "-2", + "<8,13,3>": "" + }, + "<8,14>": "0", + "<8,15>": { + "<8,15,1>": { + "<8,15,1,1>": "Segoe UI", + "<8,15,1,2>": "-12", + "<8,15,1,3>": "400", + "<8,15,1,4>": "0", + "<8,15,1,5>": "0", + "<8,15,1,6>": "0", + "<8,15,1,7>": "0", + "<8,15,1,8>": "34", + "<8,15,1,9>": "0", + "<8,15,1,10>": "3", + "<8,15,1,11>": "2", + "<8,15,1,12>": "1", + "<8,15,1,13>": "0", + "<8,15,1,14>": "0" + } + }, + "<8,16>": "", + "<8,17>": "", + "<8,18>": "", + "<8,19>": "", + "<8,20>": "", + "<8,21>": "", + "<8,22>": "", + "<8,23>": "", + "<8,24>": "", + "<8,25>": "", + "<8,26>": "", + "<8,27>": "", + "<8,28>": "", + "<8,29>": "", + "<8,30>": "", + "<8,31>": "", + "<8,32>": "", + "<8,33>": "", + "<8,34>": "", + "<8,35>": "", + "<8,36>": "", + "<8,37>": "", + "<8,38>": "", + "<8,39>": "", + "<8,40>": "", + "<8,41>": "", + "<8,42>": "", + "<8,43>": "", + "<8,44>": "", + "<8,45>": "", + "<8,46>": "", + "<8,47>": "", + "<8,48>": "", + "<8,49>": "", + "<8,50>": "", + "<8,51>": "", + "<8,52>": "", + "<8,53>": "", + "<8,54>": "", + "<8,55>": "OLE.Border", + "<8,56>": "None", + "<8,57>": "", + "<8,58>": "", + "<8,59>": "", + "<8,60>": "", + "<8,61>": "", + "<8,62>": "", + "<8,63>": "", + "<8,64>": "", + "<8,65>": "", + "<8,66>": "", + "<8,67>": "", + "<8,68>": "", + "<8,69>": "", + "<8,70>": "", + "<8,71>": "", + "<8,72>": "", + "<8,73>": "", + "<8,74>": "", + "<8,75>": "", + "<8,76>": "", + "<8,77>": "", + "<8,78>": "", + "<8,79>": "", + "<8,80>": "", + "<8,81>": "", + "<8,82>": "", + "<8,83>": "", + "<8,84>": "", + "<8,85>": "", + "<8,86>": "", + "<8,87>": "", + "<8,88>": "", + "<8,89>": "", + "<8,90>": "", + "<8,91>": "", + "<8,92>": "", + "<8,93>": "", + "<8,94>": "", + "<8,95>": "", + "<8,96>": "", + "<8,97>": "", + "<8,98>": "", + "<8,99>": "", + "<8,100>": "", + "<8,101>": "", + "<8,102>": "", + "<8,103>": "", + "<8,104>": "", + "<8,105>": "", + "<8,106>": "", + "<8,107>": "", + "<8,108>": "" + }, + "<9>": { + "<9,1>": "PUB_CLEAR_FORM", + "<9,2>": "", + "<9,3>": "PUSHBUTTON", + "<9,4>": "NDW_VERIFY_BARCODE", + "<9,5>": "248", + "<9,6>": "546", + "<9,7>": "1", + "<9,8>": "1", + "<9,9>": "Clear Form", + "<9,10>": { + "<9,10,1>": "0x56002300", + "<9,10,2>": "0x0" + }, + "<9,11>": { + "<9,11,1>": "0x0", + "<9,11,2>": "0x80000000" + }, + "<9,12>": "7", + "<9,13>": { + "<9,13,1>": "-2", + "<9,13,2>": "-2", + "<9,13,3>": "0" + }, + "<9,14>": "-2", + "<9,15>": { + "<9,15,1>": { + "<9,15,1,1>": "Segoe UI", + "<9,15,1,2>": "-37", + "<9,15,1,3>": "400", + "<9,15,1,4>": "0", + "<9,15,1,5>": "0", + "<9,15,1,6>": "0", + "<9,15,1,7>": "0", + "<9,15,1,8>": "34", + "<9,15,1,9>": "0", + "<9,15,1,10>": "3", + "<9,15,1,11>": "2", + "<9,15,1,12>": "1", + "<9,15,1,13>": "0", + "<9,15,1,14>": "0" + } + }, + "<9,16>": "", + "<9,17>": "", + "<9,18>": { + "<9,18,1>": { + "<9,18,1,1>": "R", + "<9,18,1,2>": "EXECUTE", + "<9,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<9,18,1,4>": { + "<9,18,1,4,1>": "@SELF", + "<9,18,1,4,2>": "@EVENT", + "<9,18,1,4,3>": "@PARAM1", + "<9,18,1,4,4>": "@PARAM2", + "<9,18,1,4,5>": "@PARAM3", + "<9,18,1,4,6>": "@PARAM4", + "<9,18,1,4,7>": "@PARAM5", + "<9,18,1,4,8>": "@PARAM6" + }, + "<9,18,1,5>": "", + "<9,18,1,6>": "", + "<9,18,1,7>": "", + "<9,18,1,8>": "", + "<9,18,1,9>": "", + "<9,18,1,10>": "", + "<9,18,1,11>": "", + "<9,18,1,12>": "", + "<9,18,1,13>": "", + "<9,18,1,14>": "", + "<9,18,1,15>": "STPROC" + } + }, + "<9,19>": "CLICK", + "<9,20>": "", + "<9,21>": "", + "<9,22>": "", + "<9,23>": "", + "<9,24>": "", + "<9,25>": "", + "<9,26>": "", + "<9,27>": "", + "<9,28>": "", + "<9,29>": "", + "<9,30>": "", + "<9,31>": "", + "<9,32>": "", + "<9,33>": "", + "<9,34>": "", + "<9,35>": "", + "<9,36>": "", + "<9,37>": "", + "<9,38>": "", + "<9,39>": "", + "<9,40>": "1", + "<9,41>": { + "<9,41,1>": "", + "<9,41,2>": "-1" + }, + "<9,42>": "", + "<9,43>": "", + "<9,44>": "", + "<9,45>": "", + "<9,46>": "", + "<9,47>": "", + "<9,48>": "", + "<9,49>": "", + "<9,50>": "", + "<9,51>": "", + "<9,52>": "", + "<9,53>": "", + "<9,54>": "", + "<9,55>": "", + "<9,56>": "", + "<9,57>": "", + "<9,58>": "", + "<9,59>": "", + "<9,60>": "", + "<9,61>": "", + "<9,62>": "0", + "<9,63>": "", + "<9,64>": { + "<9,64,1>": "-2", + "<9,64,2>": "-2", + "<9,64,3>": "0" + }, + "<9,65>": "-2", + "<9,66>": "", + "<9,67>": "", + "<9,68>": "", + "<9,69>": "", + "<9,70>": "", + "<9,71>": "", + "<9,72>": "", + "<9,73>": "", + "<9,74>": "", + "<9,75>": "", + "<9,76>": "", + "<9,77>": "", + "<9,78>": "", + "<9,79>": "", + "<9,80>": "", + "<9,81>": "", + "<9,82>": "", + "<9,83>": "", + "<9,84>": "", + "<9,85>": "", + "<9,86>": "", + "<9,87>": "", + "<9,88>": "", + "<9,89>": "", + "<9,90>": "0", + "<9,91>": "0", + "<9,92>": "", + "<9,93>": "", + "<9,94>": "", + "<9,95>": "", + "<9,96>": "", + "<9,97>": "", + "<9,98>": "", + "<9,99>": "", + "<9,100>": "", + "<9,101>": "", + "<9,102>": "", + "<9,103>": "", + "<9,104>": "", + "<9,105>": "", + "<9,106>": "", + "<9,107>": "", + "<9,108>": "" + }, + "<10>": { + "<10,1>": "EDL_SEQUENCE1", + "<10,2>": "", + "<10,3>": "EDITFIELD", + "<10,4>": "NDW_VERIFY_BARCODE", + "<10,5>": "338", + "<10,6>": "13", + "<10,7>": "133", + "<10,8>": "20", + "<10,9>": "", + "<10,10>": { + "<10,10,1>": "0x4E000080", + "<10,10,2>": "0x200" + }, + "<10,11>": { + "<10,11,1>": "0x0", + "<10,11,2>": "0x80000000" + }, + "<10,12>": "8", + "<10,13>": { + "<10,13,1>": "-2", + "<10,13,2>": "-2", + "<10,13,3>": "" + }, + "<10,14>": "0", + "<10,15>": { + "<10,15,1>": { + "<10,15,1,1>": "Segoe UI", + "<10,15,1,2>": "-37", + "<10,15,1,3>": "400", + "<10,15,1,4>": "0", + "<10,15,1,5>": "0", + "<10,15,1,6>": "0", + "<10,15,1,7>": "0", + "<10,15,1,8>": "34", + "<10,15,1,9>": "0", + "<10,15,1,10>": "3", + "<10,15,1,11>": "2", + "<10,15,1,12>": "1", + "<10,15,1,13>": "0", + "<10,15,1,14>": "0" + } + }, + "<10,16>": "", + "<10,17>": "", + "<10,18>": { + "<10,18,1>": { + "<10,18,1,1>": "R", + "<10,18,1,2>": "EXECUTE", + "<10,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<10,18,1,4>": { + "<10,18,1,4,1>": "@SELF", + "<10,18,1,4,2>": "@EVENT", + "<10,18,1,4,3>": "@PARAM1", + "<10,18,1,4,4>": "@PARAM2", + "<10,18,1,4,5>": "@PARAM3", + "<10,18,1,4,6>": "@PARAM4", + "<10,18,1,4,7>": "@PARAM5", + "<10,18,1,4,8>": "@PARAM6" + }, + "<10,18,1,5>": "", + "<10,18,1,6>": "", + "<10,18,1,7>": "", + "<10,18,1,8>": "", + "<10,18,1,9>": "", + "<10,18,1,10>": "", + "<10,18,1,11>": "", + "<10,18,1,12>": "", + "<10,18,1,13>": "", + "<10,18,1,14>": "", + "<10,18,1,15>": "STPROC" + } + }, + "<10,19>": "LOSTFOCUS", + "<10,20>": "", + "<10,21>": "", + "<10,22>": "", + "<10,23>": "", + "<10,24>": "", + "<10,25>": "", + "<10,26>": "", + "<10,27>": "", + "<10,28>": "<>", + "<10,29>": "<>", + "<10,30>": "<>", + "<10,31>": "0", + "<10,32>": "", + "<10,33>": "", + "<10,34>": "", + "<10,35>": "", + "<10,36>": { + "<10,36,1>": "0", + "<10,36,2>": "0" + }, + "<10,37>": "", + "<10,38>": "", + "<10,39>": "", + "<10,40>": "", + "<10,41>": "", + "<10,42>": "", + "<10,43>": "", + "<10,44>": "", + "<10,45>": "", + "<10,46>": "", + "<10,47>": "", + "<10,48>": "", + "<10,49>": "", + "<10,50>": "", + "<10,51>": "", + "<10,52>": "", + "<10,53>": "", + "<10,54>": "", + "<10,55>": "", + "<10,56>": "", + "<10,57>": "", + "<10,58>": "", + "<10,59>": "", + "<10,60>": "", + "<10,61>": "", + "<10,62>": "0", + "<10,63>": "", + "<10,64>": "", + "<10,65>": "", + "<10,66>": "", + "<10,67>": "", + "<10,68>": "", + "<10,69>": "", + "<10,70>": "", + "<10,71>": "", + "<10,72>": "", + "<10,73>": "", + "<10,74>": "", + "<10,75>": "", + "<10,76>": "", + "<10,77>": "", + "<10,78>": "", + "<10,79>": "", + "<10,80>": "", + "<10,81>": "", + "<10,82>": "", + "<10,83>": "", + "<10,84>": "", + "<10,85>": "", + "<10,86>": "", + "<10,87>": "", + "<10,88>": "", + "<10,89>": "", + "<10,90>": "", + "<10,91>": "", + "<10,92>": "", + "<10,93>": "", + "<10,94>": "", + "<10,95>": "", + "<10,96>": "", + "<10,97>": "", + "<10,98>": "", + "<10,99>": "", + "<10,100>": "", + "<10,101>": "", + "<10,102>": "", + "<10,103>": "", + "<10,104>": "", + "<10,105>": "", + "<10,106>": "", + "<10,107>": "", + "<10,108>": "" + }, + "<11>": { + "<11,1>": "TXT_LOT_ID", + "<11,2>": "", + "<11,3>": "STATIC", + "<11,4>": "NDW_VERIFY_BARCODE", + "<11,5>": "22", + "<11,6>": "26", + "<11,7>": "265", + "<11,8>": "45", + "<11,9>": "Expected Lot ID:", + "<11,10>": { + "<11,10,1>": "0x56000000", + "<11,10,2>": "0x0" + }, + "<11,11>": { + "<11,11,1>": "0x0", + "<11,11,2>": "0x80000000" + }, + "<11,12>": "9", + "<11,13>": { + "<11,13,1>": "-1", + "<11,13,2>": "-1", + "<11,13,3>": "" + }, + "<11,14>": "0", + "<11,15>": { + "<11,15,1>": { + "<11,15,1,1>": "Segoe UI", + "<11,15,1,2>": "-37", + "<11,15,1,3>": "400", + "<11,15,1,4>": "0", + "<11,15,1,5>": "0", + "<11,15,1,6>": "0", + "<11,15,1,7>": "0", + "<11,15,1,8>": "34", + "<11,15,1,9>": "0", + "<11,15,1,10>": "3", + "<11,15,1,11>": "2", + "<11,15,1,12>": "1", + "<11,15,1,13>": "0", + "<11,15,1,14>": "0" + } + }, + "<11,16>": "", + "<11,17>": "", + "<11,18>": "", + "<11,19>": "", + "<11,20>": "", + "<11,21>": "", + "<11,22>": "", + "<11,23>": "", + "<11,24>": "", + "<11,25>": "", + "<11,26>": "", + "<11,27>": "", + "<11,28>": "", + "<11,29>": "", + "<11,30>": "", + "<11,31>": "", + "<11,32>": "", + "<11,33>": "", + "<11,34>": "", + "<11,35>": "", + "<11,36>": "", + "<11,37>": "", + "<11,38>": "", + "<11,39>": "", + "<11,40>": "", + "<11,41>": "", + "<11,42>": "", + "<11,43>": "", + "<11,44>": "", + "<11,45>": "", + "<11,46>": "", + "<11,47>": "", + "<11,48>": "", + "<11,49>": "", + "<11,50>": "", + "<11,51>": "", + "<11,52>": "", + "<11,53>": "", + "<11,54>": "", + "<11,55>": "", + "<11,56>": "", + "<11,57>": "", + "<11,58>": "", + "<11,59>": "", + "<11,60>": "", + "<11,61>": "", + "<11,62>": "0", + "<11,63>": { + "<11,63,1>": "", + "<11,63,2>": "", + "<11,63,3>": "", + "<11,63,4>": "", + "<11,63,5>": "", + "<11,63,6>": "", + "<11,63,7>": "", + "<11,63,8>": "" + }, + "<11,64>": { + "<11,64,1>": "", + "<11,64,2>": "", + "<11,64,3>": "" + }, + "<11,65>": "-2", + "<11,66>": "", + "<11,67>": "", + "<11,68>": "", + "<11,69>": "", + "<11,70>": "", + "<11,71>": "", + "<11,72>": "", + "<11,73>": "", + "<11,74>": "", + "<11,75>": "", + "<11,76>": "", + "<11,77>": "", + "<11,78>": "", + "<11,79>": "", + "<11,80>": "", + "<11,81>": "", + "<11,82>": "", + "<11,83>": "", + "<11,84>": "", + "<11,85>": "", + "<11,86>": "", + "<11,87>": "", + "<11,88>": "", + "<11,89>": "", + "<11,90>": "0", + "<11,91>": "0", + "<11,92>": "", + "<11,93>": "", + "<11,94>": "", + "<11,95>": "", + "<11,96>": "", + "<11,97>": "", + "<11,98>": "", + "<11,99>": "", + "<11,100>": "", + "<11,101>": "", + "<11,102>": "", + "<11,103>": "", + "<11,104>": "", + "<11,105>": "", + "<11,106>": "", + "<11,107>": "", + "<11,108>": "" + }, + "<12>": { + "<12,1>": "EDL_LOT_ID", + "<12,2>": "", + "<12,3>": "EDITFIELD", + "<12,4>": "NDW_VERIFY_BARCODE", + "<12,5>": "296", + "<12,6>": "29", + "<12,7>": "281", + "<12,8>": "51", + "<12,9>": "", + "<12,10>": { + "<12,10,1>": "0x5E000080", + "<12,10,2>": "0x200" + }, + "<12,11>": { + "<12,11,1>": "0x0", + "<12,11,2>": "0x80000000" + }, + "<12,12>": "10", + "<12,13>": { + "<12,13,1>": "-2", + "<12,13,2>": "-2", + "<12,13,3>": "" + }, + "<12,14>": "0", + "<12,15>": { + "<12,15,1>": { + "<12,15,1,1>": "Segoe UI", + "<12,15,1,2>": "-37", + "<12,15,1,3>": "400", + "<12,15,1,4>": "0", + "<12,15,1,5>": "0", + "<12,15,1,6>": "0", + "<12,15,1,7>": "0", + "<12,15,1,8>": "34", + "<12,15,1,9>": "0", + "<12,15,1,10>": "3", + "<12,15,1,11>": "2", + "<12,15,1,12>": "1", + "<12,15,1,13>": "0", + "<12,15,1,14>": "0" + } + }, + "<12,16>": "", + "<12,17>": "", + "<12,18>": { + "<12,18,1>": { + "<12,18,1,1>": "R", + "<12,18,1,2>": "EXECUTE", + "<12,18,1,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT", + "<12,18,1,4>": { + "<12,18,1,4,1>": "@SELF", + "<12,18,1,4,2>": "@EVENT", + "<12,18,1,4,3>": "@PARAM1", + "<12,18,1,4,4>": "@PARAM2", + "<12,18,1,4,5>": "@PARAM3", + "<12,18,1,4,6>": "@PARAM4", + "<12,18,1,4,7>": "@PARAM5", + "<12,18,1,4,8>": "@PARAM6" + }, + "<12,18,1,5>": "", + "<12,18,1,6>": "", + "<12,18,1,7>": "", + "<12,18,1,8>": "", + "<12,18,1,9>": "", + "<12,18,1,10>": "", + "<12,18,1,11>": "", + "<12,18,1,12>": "", + "<12,18,1,13>": "", + "<12,18,1,14>": "", + "<12,18,1,15>": "STPROC" + } + }, + "<12,19>": "LOSTFOCUS", + "<12,20>": "", + "<12,21>": "", + "<12,22>": "", + "<12,23>": "", + "<12,24>": "", + "<12,25>": "", + "<12,26>": "", + "<12,27>": "", + "<12,28>": "<>", + "<12,29>": "<>", + "<12,30>": "<>", + "<12,31>": "0", + "<12,32>": "", + "<12,33>": "", + "<12,34>": "", + "<12,35>": "", + "<12,36>": { + "<12,36,1>": "0", + "<12,36,2>": "0" + }, + "<12,37>": "", + "<12,38>": "", + "<12,39>": "", + "<12,40>": "", + "<12,41>": "", + "<12,42>": "", + "<12,43>": "", + "<12,44>": "", + "<12,45>": "", + "<12,46>": "", + "<12,47>": "", + "<12,48>": "", + "<12,49>": "", + "<12,50>": "", + "<12,51>": "", + "<12,52>": "", + "<12,53>": "", + "<12,54>": "", + "<12,55>": "", + "<12,56>": "", + "<12,57>": "", + "<12,58>": "", + "<12,59>": "", + "<12,60>": "", + "<12,61>": "", + "<12,62>": "0", + "<12,63>": "", + "<12,64>": "", + "<12,65>": "", + "<12,66>": "", + "<12,67>": "", + "<12,68>": "", + "<12,69>": "", + "<12,70>": "", + "<12,71>": "", + "<12,72>": "", + "<12,73>": "", + "<12,74>": "", + "<12,75>": "", + "<12,76>": "", + "<12,77>": "", + "<12,78>": "", + "<12,79>": "", + "<12,80>": "", + "<12,81>": "", + "<12,82>": "", + "<12,83>": "", + "<12,84>": "", + "<12,85>": "", + "<12,86>": "", + "<12,87>": "", + "<12,88>": "", + "<12,89>": "", + "<12,90>": "", + "<12,91>": "", + "<12,92>": "", + "<12,93>": "", + "<12,94>": "", + "<12,95>": "", + "<12,96>": "", + "<12,97>": "", + "<12,98>": "", + "<12,99>": "", + "<12,100>": "", + "<12,101>": "", + "<12,102>": "", + "<12,103>": "", + "<12,104>": "", + "<12,105>": "", + "<12,106>": "", + "<12,107>": "", + "<12,108>": "" + } + }, + "record4": { + "<1>": "" + } + } +} \ No newline at end of file diff --git a/LSL2/STPROC/COMM_WM_IN.txt b/LSL2/STPROC/COMM_WM_IN.txt index 747a910..b7b6539 100644 --- a/LSL2/STPROC/COMM_WM_IN.txt +++ b/LSL2/STPROC/COMM_WM_IN.txt @@ -607,74 +607,77 @@ RejMat: ncrParms := '':@RM ;* Placeholder for RejWaferIDs ncrParms := SlotNCRs - Set_Status(0) - NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers - errCode = '' - IF Get_Status(errCode) THEN - ErrMsg(errCode) + BarcodeVerified = Dialog_Box('NDW_VERIFY_BARCODE', @Window, WMIKey, @User4) + If BarcodeVerified EQ TRUE$ then + Set_Status(0) + NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers + errCode = '' + IF Get_Status(errCode) THEN + ErrMsg(errCode) - END ELSE - RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') - - RejWfrIDs = '' - NewSlotIDs = '' - CurrSlotIDs = '' - RunLocs = '' - - FOR N = 1 TO COUNT(InSlotNos,@VM) + (InSlotNos NE '') - - * * * * Added 3/23/2016 JCH - wafer history * * * * - - RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N> - - RejWfrIDs<1,-1> = RejWfrID - CurrSlotIDs<1,-1> = RejWfrID ;*Inbound box WfrID = SlotID - - Parms = RejWfrID:@RM ;* WfrID - Parms := RejDTM:@RM ;* EventDtm - Parms := @USER4:@RM ;* EventBy - Parms := 'NCR':@RM ;* Event - Parms := '':@RM ;* NewSlotID - Parms := '':@RM ;* RunLoc - Parms := NCRNo:@RM ;* NCRNo - Parms := '':@RM ;* TWUse - Parms := RejWfrID:@RM ;* CurrSlotID Inbound box WfrID = SlotID - Parms := '':@RM ;* NewToolID - Parms := '':@RM ;* CurrToolID - Parms := '':@RM ;* NewInvLoc - Parms := '':@RM ;* CurrInvLoc - Parms := 'I' ;* WfrSide + END ELSE + RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') + + RejWfrIDs = '' + NewSlotIDs = '' + CurrSlotIDs = '' + RunLocs = '' + + FOR N = 1 TO COUNT(InSlotNos,@VM) + (InSlotNos NE '') + + * * * * Added 3/23/2016 JCH - wafer history * * * * + + RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N> + + RejWfrIDs<1,-1> = RejWfrID + CurrSlotIDs<1,-1> = RejWfrID ;*Inbound box WfrID = SlotID + + Parms = RejWfrID:@RM ;* WfrID + Parms := RejDTM:@RM ;* EventDtm + Parms := @USER4:@RM ;* EventBy + Parms := 'NCR':@RM ;* Event + Parms := '':@RM ;* NewSlotID + Parms := '':@RM ;* RunLoc + Parms := NCRNo:@RM ;* NCRNo + Parms := '':@RM ;* TWUse + Parms := RejWfrID:@RM ;* CurrSlotID Inbound box WfrID = SlotID + Parms := '':@RM ;* NewToolID + Parms := '':@RM ;* CurrToolID + Parms := '':@RM ;* NewInvLoc + Parms := '':@RM ;* CurrInvLoc + Parms := 'I' ;* WfrSide - obj_WO_Wfr('AddEvent',Parms) - - * * * * * - - LineNo = InSlotNos<1,N> - - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS_STATUS:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$POCKET:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$ZONE:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$CHAR:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT_NO','CELLPOS',NCRNo,COL$SLOT_NCR_NO:@FM:LineNo) - NEXT N - - END - - Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off + obj_WO_Wfr('AddEvent',Parms) + + * * * * * + + LineNo = InSlotNos<1,N> + + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$RDS_STATUS:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$POCKET:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$ZONE:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS','',COL$CHAR:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT_NO','CELLPOS',NCRNo,COL$SLOT_NCR_NO:@FM:LineNo) + NEXT N + + END + + Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off - Send_Event(@WINDOW,'WRITE') + Send_Event(@WINDOW,'WRITE') - DetWindow = 'NCR' - DetKeys = NCRNo - DefaultRec = '' - RetKey = WMIKey - RetWin = @WINDOW - RetPage = 1 - RetCtrl = @WINDOW:'.SLOT' - RetPos = 1:@FM:1 + DetWindow = 'NCR' + DetKeys = NCRNo + DefaultRec = '' + RetKey = WMIKey + RetWin = @WINDOW + RetPage = 1 + RetCtrl = @WINDOW:'.SLOT' + RetPos = 1:@FM:1 - obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos) + obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos) + End RETURN diff --git a/LSL2/STPROC/COMM_WM_OUT.txt b/LSL2/STPROC/COMM_WM_OUT.txt index cdf3047..73f207f 100644 --- a/LSL2/STPROC/COMM_WM_OUT.txt +++ b/LSL2/STPROC/COMM_WM_OUT.txt @@ -1369,84 +1369,87 @@ RejMat: ncrParms := MUCassIDs:@RM ncrParms := MUSlotNos - Set_Status(0) - NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers - - IF Get_Status(errCode) THEN - ErrMsg(errCode) + BarcodeVerified = Dialog_Box('NDW_VERIFY_BARCODE', @Window, WMOKey, @User4) + If BarcodeVerified EQ TRUE$ then + Set_Status(0) + NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers - END ELSE - RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') + IF Get_Status(errCode) THEN + ErrMsg(errCode) + + END ELSE + RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') + + RejWfrIDs = '' + CurrSlotIDs = '' + + FOR N = 1 TO COUNT(OutSlotNos,@VM) + (OutSlotNos NE '') + + * * * * Added 4/23/2016 JCH - wafer history * * * * + + CurrSlotID = WONo:'*':OutCassNos<1,N>:'*':OutSlotNos<1,N> + + CurrSlotIDs<1,-1> = CurrSlotID + + + IF MUWONos<1,N> = '' THEN + RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N> + END ELSE + RejWfrID = MUWONos<1,N>:'*':MUCassIDs<1,N>:'*':MUSlotNos<1,N> + END + + RejWfrIDs<1,-1> = RejWfrID + + Parms = RejWfrID:@RM ;* WfrID + Parms := RejDTM:@RM ;* EventDtm + Parms := @USER4:@RM ;* EventBy + Parms := 'NCR':@RM ;* Event + Parms := '':@RM ;* NewSlotID + Parms := '':@RM ;* RunLoc + Parms := NCRNo:@RM ;* NCRNo + Parms := '':@RM ;* TWUse + Parms := CurrSlotID:@RM ;* CurrSlotID + Parms := '':@RM ;* NewToolID + Parms := '':@RM ;* CurrToolID + Parms := '':@RM ;* NewInvLoc + Parms := '':@RM ;* CurrInvLoc + Parms := 'O' ;* Wfr Side + + obj_WO_Wfr('AddEvent',Parms) + + + LineNo = OutSlotNos<1,N> + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$RDS_NO:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$RDS_STATUS:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$POCKET:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$ZONE:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$IN_CASS:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$IN_SLOT:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS',NCRNo,COL$SLOT_NCR:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_WO_NO:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_WO_STEP:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_CASS_NO:@FM:LineNo) + Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_SLOT_NO:@FM:LineNo) + + NEXT N + + END - RejWfrIDs = '' - CurrSlotIDs = '' + Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off - FOR N = 1 TO COUNT(OutSlotNos,@VM) + (OutSlotNos NE '') - - * * * * Added 4/23/2016 JCH - wafer history * * * * - - CurrSlotID = WONo:'*':OutCassNos<1,N>:'*':OutSlotNos<1,N> - - CurrSlotIDs<1,-1> = CurrSlotID - - - IF MUWONos<1,N> = '' THEN - RejWfrID = WONo:'*':InCassNos<1,N>:'*':InSlotNos<1,N> - END ELSE - RejWfrID = MUWONos<1,N>:'*':MUCassIDs<1,N>:'*':MUSlotNos<1,N> - END - - RejWfrIDs<1,-1> = RejWfrID - - Parms = RejWfrID:@RM ;* WfrID - Parms := RejDTM:@RM ;* EventDtm - Parms := @USER4:@RM ;* EventBy - Parms := 'NCR':@RM ;* Event - Parms := '':@RM ;* NewSlotID - Parms := '':@RM ;* RunLoc - Parms := NCRNo:@RM ;* NCRNo - Parms := '':@RM ;* TWUse - Parms := CurrSlotID:@RM ;* CurrSlotID - Parms := '':@RM ;* NewToolID - Parms := '':@RM ;* CurrToolID - Parms := '':@RM ;* NewInvLoc - Parms := '':@RM ;* CurrInvLoc - Parms := 'O' ;* Wfr Side - - obj_WO_Wfr('AddEvent',Parms) - - - LineNo = OutSlotNos<1,N> - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$RDS_NO:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$RDS_STATUS:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$POCKET:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$ZONE:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$IN_CASS:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$IN_SLOT:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS',NCRNo,COL$SLOT_NCR:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_WO_NO:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_WO_STEP:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_CASS_NO:@FM:LineNo) - Set_Property(@WINDOW:'.SLOT','CELLPOS','',COL$MU_SLOT_NO:@FM:LineNo) - - NEXT N + Send_Event(@WINDOW,'WRITE') - END - - Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off - - Send_Event(@WINDOW,'WRITE') - - DetWindow = 'NCR' - DetKeys = NCRNo - DefaultRec = '' - RetKey = WMOKey - RetWin = @WINDOW - RetPage = 1 - RetCtrl = @WINDOW:'.SLOT' - RetPos = 1:@FM:1 - - obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos) + DetWindow = 'NCR' + DetKeys = NCRNo + DefaultRec = '' + RetKey = WMOKey + RetWin = @WINDOW + RetPage = 1 + RetCtrl = @WINDOW:'.SLOT' + RetPos = 1:@FM:1 + + obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos) + End end else // Cassette is on hold so material cannot be rejected. ErrorMessage = 'Create NCR denied!. The cassette must be taken off hold before rejecting material.' diff --git a/LSL2/STPROC/COMM_WO_MAT_WFR.txt b/LSL2/STPROC/COMM_WO_MAT_WFR.txt index 67740c3..606636f 100644 --- a/LSL2/STPROC/COMM_WO_MAT_WFR.txt +++ b/LSL2/STPROC/COMM_WO_MAT_WFR.txt @@ -483,75 +483,78 @@ RejMat: ncrParms := RejWaferIDs:@RM ;* Rejected Wafer ID's ncrParms := PrevNCRNos ;* Previous NCR No's - Set_Status(0) - - NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers - SAPBatchNo = Get_Property(@WINDOW:'.SAP_BATCH_NO','DEFPROP') - MUFlag = XLATE('WO_MAT', WOMatKey, 'MakeupBox', 'X') - - IF Get_Status(errCode) THEN - ErrMsg(errCode) - END ELSE - IF SAPBatchNo NE '' THEN - IF SAPBatchNo[-1,1] NE 'R' THEN - MUFlag = Xlate('NCR', NCRNo, 'MAKEUP_BOX', 'X') - MUFlag = OCONV(MUFlag ,'BYes,') - PartNoID = Xlate('NCR', NCRNo, 'WO_MAT_PART_NO', 'X') - RejCnt = Xlate('NCR', NCRNo, 'REJ_CNT', 'X') - Recipients = XLATE('NOTIFICATION', 'NCR_AFTER_GR', NOTIFICATION_USER_ID$, 'X') - SentFrom = @USER4 - Subject = 'SAP Post - GR Scrap Qty - NCR Reported' ;* Modified subject line - dkk 7/17/14 - Message = "NCR: ":NCRNo:CRLF$:"Batch_No: ":SAPBatchNo:CRLF$:"MU Box: ":MUFlag:CRLF$:"Epi PN: ":PartNoID:CRLF$:"Qty: ":RejCnt ;* Added Epi PN on the end - dkk 7/17/14 - AttachWindow = 'NCR' - AttachKey = NCRNo - SendToGroup = '' - Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup - obj_Notes('Create',Parms) + BarcodeVerified = Dialog_Box('NDW_VERIFY_BARCODE', @Window, RDSNo, @User4) + If BarcodeVerified EQ TRUE$ then + Set_Status(0) + + NCRNo = obj_NCR('Create',ncrParms) ;* Create new NCR for this wafer/group of wafers + SAPBatchNo = Get_Property(@WINDOW:'.SAP_BATCH_NO','DEFPROP') + MUFlag = XLATE('WO_MAT', WOMatKey, 'MakeupBox', 'X') + + IF Get_Status(errCode) THEN + ErrMsg(errCode) + END ELSE + IF SAPBatchNo NE '' THEN + IF SAPBatchNo[-1,1] NE 'R' THEN + MUFlag = Xlate('NCR', NCRNo, 'MAKEUP_BOX', 'X') + MUFlag = OCONV(MUFlag ,'BYes,') + PartNoID = Xlate('NCR', NCRNo, 'WO_MAT_PART_NO', 'X') + RejCnt = Xlate('NCR', NCRNo, 'REJ_CNT', 'X') + Recipients = XLATE('NOTIFICATION', 'NCR_AFTER_GR', NOTIFICATION_USER_ID$, 'X') + SentFrom = @USER4 + Subject = 'SAP Post - GR Scrap Qty - NCR Reported' ;* Modified subject line - dkk 7/17/14 + Message = "NCR: ":NCRNo:CRLF$:"Batch_No: ":SAPBatchNo:CRLF$:"MU Box: ":MUFlag:CRLF$:"Epi PN: ":PartNoID:CRLF$:"Qty: ":RejCnt ;* Added Epi PN on the end - dkk 7/17/14 + AttachWindow = 'NCR' + AttachKey = NCRNo + SendToGroup = '' + Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup + obj_Notes('Create',Parms) + END + END + + RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') + + RejWfrIDs = '' + CurrSlotIDs = '' + + sCnt = COUNT(SlotNos,@VM) + (SlotNos NE '') + FOR N = 1 TO sCnt + * * * * Added 3/23/2016 JCH - wafer history * * * * + + RejWfrID = RejWaferIDs<1,N> + CurrSlotID = WONo:'*':CassNo:'*':SlotNos<1,N> + + Convert '.' To '*' In RejWfrID + + RejWfrIDs<1,-1> = RejWfrID + CurrSlotIDs<1,-1> = CurrSlotID + + Parms = RejWfrID:@RM ;* WfrID + Parms := RejDTM:@RM ;* EventDtm + Parms := @USER4:@RM ;* EventBy + Parms := 'NCR':@RM ;* Event + Parms := '':@RM ;* NewSlotID + Parms := '':@RM ;* RunLoc + Parms := NCRNo:@RM ;* NCRNo + Parms := '':@RM ;* TWUse + Parms := CurrSlotID:@RM ;* CurrSlotID + Parms := '':@RM ;* NewToolID + Parms := '':@RM ;* CurrToolID + Parms := '':@RM ;* NewInvLoc + Parms := '':@RM ;* CurrInvLoc + Parms := 'O' ;* Wfr Side + + obj_WO_Wfr('AddEvent',Parms) + * * * * * * * * * + LineNo = SlotNos<1,N> + NEXT N END - END - RejDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') - - RejWfrIDs = '' - CurrSlotIDs = '' - - sCnt = COUNT(SlotNos,@VM) + (SlotNos NE '') - FOR N = 1 TO sCnt - * * * * Added 3/23/2016 JCH - wafer history * * * * - - RejWfrID = RejWaferIDs<1,N> - CurrSlotID = WONo:'*':CassNo:'*':SlotNos<1,N> - - Convert '.' To '*' In RejWfrID - - RejWfrIDs<1,-1> = RejWfrID - CurrSlotIDs<1,-1> = CurrSlotID - - Parms = RejWfrID:@RM ;* WfrID - Parms := RejDTM:@RM ;* EventDtm - Parms := @USER4:@RM ;* EventBy - Parms := 'NCR':@RM ;* Event - Parms := '':@RM ;* NewSlotID - Parms := '':@RM ;* RunLoc - Parms := NCRNo:@RM ;* NCRNo - Parms := '':@RM ;* TWUse - Parms := CurrSlotID:@RM ;* CurrSlotID - Parms := '':@RM ;* NewToolID - Parms := '':@RM ;* CurrToolID - Parms := '':@RM ;* NewInvLoc - Parms := '':@RM ;* CurrInvLoc - Parms := 'O' ;* Wfr Side - - obj_WO_Wfr('AddEvent',Parms) - * * * * * * * * * - LineNo = SlotNos<1,N> - NEXT N - END - - Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off - Set_Property(@WINDOW, 'SAVEWARN', False$) - rv = Dialog_Box('NCR', @WINDOW, NCRNo) - Send_Event(@WINDOW, 'READ') + Set_Property(@WINDOW:'.SLOT','SELPOS',SlotSelection) ;* Toggle WM_IN select off + Set_Property(@WINDOW, 'SAVEWARN', False$) + rv = Dialog_Box('NCR', @WINDOW, NCRNo) + Send_Event(@WINDOW, 'READ') + end end else // Cassette is on hold so material cannot be rejected. ErrorMessage = 'Create NCR denied!. The cassette must be taken off hold before rejecting material.' diff --git a/LSL2/STPROC/DISPLAY_CONTROL_MESSAGE.txt b/LSL2/STPROC/DISPLAY_CONTROL_MESSAGE.txt index 2407f97..e90804d 100644 --- a/LSL2/STPROC/DISPLAY_CONTROL_MESSAGE.txt +++ b/LSL2/STPROC/DISPLAY_CONTROL_MESSAGE.txt @@ -179,7 +179,7 @@ Display_Message: If LongLen EQ TitleLen then PixMult = 5.9 ; // Title is bold so it requires more pixels end else - PixMult = 5.2 ; // 5.1 wasn't quite enough for some lines + PixMult = 6 ; // 5.2 wasn't quite enough for some lines end ItemWidth = PixMult * LongLen @@ -240,7 +240,7 @@ Display_Message: If ComboVisible then Set_Property(Subclass, 'OLE.ComboDropDown[' : CtrlEntIdSub : ']', False$) end * ShowAtY = CtrlYpos + CtrlHeight - ShowAtY = CtrlYpos + 2 + ShowAtY = CtrlYpos + 2 // The SRP Popup display should be at least as wide as the control for visual purposes. Add an extra pixel of // width to account for the cell border. If CtrlWidth GT FullWidth then FullWidth = CtrlWidth @@ -356,3 +356,4 @@ Display_Message: Done = True$ return + diff --git a/LSL2/STPROC/NCR_SERVICES.txt b/LSL2/STPROC/NCR_SERVICES.txt index b0c212a..895cd3a 100644 --- a/LSL2/STPROC/NCR_SERVICES.txt +++ b/LSL2/STPROC/NCR_SERVICES.txt @@ -1,12 +1,58 @@ Compile function NCR_Services(@Service, @Params) #pragma precomp SRP_PreCompiler -$insert LOGICAL +/*********************************************************************************************************************** -Declare subroutine Set_Status, Logging_Services, Error_Services -Declare function Environment_Services, Logging_Services, SRP_Datetime, Utility + Name : NCR_Services -EQU CRLF$ TO \0D0A\ -EQU TAB$ TO CHAR(9) + Description : Handler program for all NCR services. + + 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 + work with Error Services: + + - 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 + 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 + 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 + 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 + 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 + originating procedure is waiting. + + - 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 + 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 + 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 + 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.) + + - Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any + error conditions that were set before. + + Parameters : + Service [in] -- Name of the service being requested + Param1-10 [in/out] -- Additional request parameter holders + Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure + + Metadata : + + History : (Date, Initials, Notes) + 08/29/24 djm Add ProcessScanData service and Service header. + +***********************************************************************************************************************/ +$insert APP_INSERTS +$Insert SERVICE_SETUP + +Declare subroutine Set_Status, Logging_Services, Error_Services, Obj_Notes, Set_Property, Obj_Wo_Mat, Hold_Services +Declare function Environment_Services, Logging_Services, SRP_Datetime, Utility, Scan_Services, Error_Services +Declare function Database_Services, Signature_Services, Epipro_Services, Rds_Services, Memberof, Datetime +Declare function Get_Property EQU COL$RDS_NO TO 1 EQU COL$REACTOR TO 2 @@ -16,180 +62,525 @@ GoToService Return Response or "" -//----------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Service Parameter Options +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Options SCAN_TYPES = 'CASSETTE_1', 'CASSETTE_2', 'WM_IN_1', 'WM_IN_2' + + +//---------------------------------------------------------------------------------------------------------------------- // SERVICES -//----------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------------------- -Service SendToSPC(NCRNo, RDSList, ReactorType, PSNo, DeptResp, LossCode, LossDesc, LossStage, LossBy, ACCode, ACDesc) - Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Level' : @FM : 'Log' - ColumnWidths = 20 : @FM : 12 : @FM : 7 : @FM : 500 - Machine = Environment_Services('GetServer') - LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\NCR' - makeDirSuccess = Utility("MAKEDIR", LogPath) - LogDate = Oconv(Date(), 'D4/') - LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '_NcrSendToSpc.csv' - objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) - - RdsNos = '' - RdsCount = 0 - ReactorList = '' - ReactorCount = 0 - RejCntList = '' - RejCntCount = 0 - - RDSCnt = DCOUNT(RDSList<1>,@VM) - If RDSCnt GT 0 then - FOR I = 1 TO RDSCnt - If RdsNos NE '' then - RdsNos := ', ' - end - RdsNos := RDSList - RdsCount += Num(RDSList) - If ReactorList NE '' then - ReactorList := ', ' - end - ReactorList := RDSList - ReactorCount += Num(RDSList) - If RejCntList NE '' then - RejCntList := ', ' - end - RejCntList := RDSList - RejCntCount += Num(RDSList) - Next I - end - - LogMessage = 'Attempting to send NCR data to SPC. Data: {' - LogMessage := 'NCR No: ' : NCRNo - LogMessage := ', RDS Nos: ' : RdsNos - LogMessage := ', Reactors: ' : ReactorList - LogMessage := ', Reject Counts: ' : RejCntList - LogMessage := ', Reactor Type: ' : ReactorType - LogMessage := ', PSN: ' : PSNo - LogMessage := ', Responsible Dept: ' : DeptResp - LogMessage := ', Loss Code: ' : LossCode - LogMessage := ', Loss Desc: ' : LossDesc - LogMessage := ', Loss Stage: ' : LossStage - LogMessage := ', Loss By: ' : LossBy - LogMessage := ', AC Code: ' : ACCode - LogMessage := ', AC Desc: ' : ACDesc - LogMessage := '}' - - LogDate = Oconv(Date(), 'D4/') - LogData = '' - LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM - LogData<2> = Machine - LogData<3> = 'INFO' - LogData<4> = LogMessage - Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) - - ArgsNotNull = NCRNo NE '' and RDSList NE '' and ReactorType NE '' and PSNo NE '' - ArgsNotNull = ArgsNotNull EQ True$ and DeptResp NE '' and LossCode NE '' - ArgsNotNull = ArgsNotNull EQ True$ and LossDesc NE '' and LossStage NE '' - ArgsNotNull = ArgsNotNull EQ True$ and LossBy NE '' and ACCode NE '' and ACDesc NE '' - - RdsListCountsAtLeastOne = RdsCount GE 1 and ReactorCount GE 1 and RejCntCount GE 1 - RdsListCountsEqual = RdsCount EQ ReactorCount and ReactorCount EQ RejCntCount - - If ArgsNotNull EQ True$ and RdsListCountsAtLeastOne NE False$ and RdsListCountsEqual NE False$ then - DataLines = '' - FOR I = 1 TO RDSCnt - - DataLine = QUOTE(NCRNo):TAB$ - DataLine := QUOTE(RDSList):TAB$ - - IF ReactorType = 'P' OR ReactorType = 'EPP' THEN - DataLine := QUOTE('EP':RDSList):TAB$ ;* EpiPRO reactors in SPC have "EP" on the front. - END ELSE - DataLine := QUOTE(RDSList):TAB$ - END - - DataLine := QUOTE(RDSList):TAB$ - DataLine := QUOTE(PSNo):TAB$ - DataLine := QUOTE(DeptResp):TAB$ - DataLine := QUOTE(LossCode):TAB$ - DataLine := QUOTE(LossDesc):TAB$ - DataLine := QUOTE(LossStage):TAB$ - DataLine := QUOTE(LossBy):TAB$ - DataLine := QUOTE(ACCode):TAB$ - DataLine := QUOTE(ACDesc):TAB$ - - DataLines := DataLine:CRLF$ - - NEXT I - - DateTime = SRP_Datetime("Now") - Year = SRP_Datetime("Year", DateTime) - Month = SRP_Datetime("Month", DateTime) - Day = SRP_Datetime("Day", DateTime) - - FileName = NCRNo : '_NCR_Data_' : Year : Month : Day : '.txt' - Path = Environment_Services('GetSPCDataPath') - - DOSFile = Path : '\' : FileName - - Set_Status(0) - - OSRead DOSRecord FROM DOSFile ELSE - ErrCode = Status() - IF ErrCode = 4 THEN - DOSRecord = '' ;* File doesn't exist - END ELSE - * ErrMsg('Unable to read DOS file "SPC_Data.TXT" for update. ':ErrCode:' Please try again.') ;* Remarked out per Chad Becker request - dkk 12/9/14 - RETURN - END - END - - DOSRecord := DataLines - - OSWrite DOSRecord ON DOSFile - - ErrCode = Status() - ErrorMessage = '' - Begin Case - Case ErrCode EQ 1 - ErrorMessage = 'Bad filename.' - Case ErrCode EQ 2 - ErrorMessage = 'Cannot write to file. Access denied.' - Case ErrCode EQ 3 - ErrorMessage = 'Disk or directory full.' - Case ErrCode EQ 4 - ErrorMessage = 'File does not exist.' - Case ErrCode EQ 5 - ErrorMessage = 'Unknown error.' - Case ErrCode EQ 6 - ErrorMessage = 'Attempt to write to a read-only file.' - End Case - - LogDate = Oconv(Date(), 'D4/') - LogData = '' - LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM - LogData<2> = Machine - If ErrorMessage NE '' then - ErrorMessage = 'Error in ' : Service : '. When attempting to write the NCR data to a file the following error occurred. ' : ErrorMessage - LogData<3> = 'ERROR' - LogData<4> = ErrorMessage - Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) - Error_Services('Add', ErrorMessage) - end else - LogData<3> = 'INFO' - LogData<4> = 'Sucessfully sent NCR ' : NCRNo : ' data to SPC in file ' : DOSFile : '.' - Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) - end - end else - ErrorMessage = 'Error in ' : Service : '. One or more arguments were null or malformed.' - LogDate = Oconv(Date(), 'D4/') - LogData = '' - LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM - LogData<2> = Machine - LogData<3> = 'ERROR' - LogData<4> = ErrorMessage - Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) - Error_Services('Add', ErrorMessage) - end +//---------------------------------------------------------------------------------------------------------------------- +// ProcessScanData +// +// ScanData - [Required] +// ScanType - [Required] +// FirstCassID - [Required] +// OperatorID - [Required] +// +// Returns the current stage of a lot. Replaces CURR_STAGE calculated column. +//---------------------------------------------------------------------------------------------------------------------- +Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, FirstCassID, OperatorID) + + If (ScanData NE '') then + // Code 3of9 encodes the asterisk and underscore characters. These need to be decoded. + ScanData = Scan_Services('DecodeScanData', ScanData) + + If Error_Services('NoError') then + + ColumnIndex = '' + ColumnValue = '' + // Identify the scan data based on the data identifier prefix (if any). Otherwise, assume this is a + // type of cassette ID (i.e., RDS or WMO). + Begin Case + + Case ScanType EQ 'WM_IN_1' + ValidCassID = False$ + cnt = Count(ScanData, '|') + if cnt NE 0 then + Error_Services('Add', 'Wrong label - Scan 2D Top Label') + return + end else + CassetteID = ScanData + Swap 'FDI' with '' in CassetteID + Swap '^FS' with '' in CassetteID + Convert '.' to '*' in CassetteID + WMIRow = Database_Services('ReadDataRow', 'WM_IN', CassetteID) + If Error_Services('NoError') then + ValidCassID = True$ + end + ScanData = CassetteID + If ScanData NE FirstCassID then + Error_Services('Add', 'Lot Label does not match the expected lot in OI. | Please correct this issue and then retry.') + end + end + + If ValidCassID EQ False$ then + Error_Services('Add', 'Unrecognized scan data: ':ScanData) + end + + Response = ScanData + + Case ScanType EQ 'WM_IN_2' + ValidCassID = False$ + ScanMismatch = False$ + cnt = Count(ScanData, '|') + if cnt NE 0 then + Error_Services('Add', 'Wrong label – Scan 2D Bottom Label') + return + end else + CassetteID = ScanData + Swap 'FDI' with '' in CassetteID + Swap '^FS' with '' in CassetteID + Convert '.' to '*' in CassetteID + WMIRow = Database_Services('ReadDataRow', 'WM_IN', CassetteID) + If Error_Services('NoError') then + ValidCassID = True$ + end + ScanData = CassetteID + If ScanData NE FirstCassID then + ScanMismatch = True$ + end + end + + If ScanMismatch EQ True$ then + ValidCassID = False$ + If (RowExists('WM_IN', FirstCassID) EQ True$) And (RowExists('WM_IN', CassetteID) EQ True$) then + // Place first cassette on hold + WONo = Field(FirstCassID, '*', 1, 1) + CassNo = Field(FirstCassID, '*', 3, 1) + HoldEntity = 'WM_IN' + HoldEntityID = FirstCassID + + WOMatKey = WONo:'*':CassNo + CtrlEntID = 'NCR_SERVICES' ;* Control checked/unchecked + OriginFlag = '' ;* Flag to indicate a hold initiated from the packagaing form + HoldData = '' + HoldData<1> = OperatorID + HoldData<2> = 'Lot placed on hold due to NCR Barcode verification mismatch.' + HoldData<3> = False$ + Hold_Services('OnHold', WOMatKey, HoldEntity, HoldEntityID, 'HOLD', HoldData, OperatorID) + + // Place Second cassette on hold + WONo = Field(CassetteID, '*', 1, 1) + CassNo = Field(CassetteID, '*', 3, 1) + HoldEntity = 'WM_IN' + HoldEntityID = CassetteID + + WOMatKey = WONo:'*':CassNo + CtrlEntID = 'NCR_SERVICES' ;* Control checked/unchecked + OriginFlag = '' ;* Flag to indicate a hold initiated from the packagaing form + HoldData = '' + HoldData<1> = OperatorID + HoldData<2> = 'Lot placed on hold due to NCR Barcode verification mismatch.' + HoldData<3> = False$ + Hold_Services('OnHold', WOMatKey, HoldEntity, HoldEntityID, 'HOLD', HoldData, OperatorID) + Message = 'NCR Label verification failed due to mismatched barcodes. Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.':CRLF$ | + : 'WM_IN Label #1: ':FirstCassID:CRLF$ | + : 'WM_IN Label #2: ':CassetteID:CRLF$ | + : 'Operator: ':OperatorID + Error_Services('Add', Message) + end else + Error_Services('Add', 'Unrecognized scan data: ':ScanData) + end + end + + If ValidCassID EQ False$ then + Error_Services('Add', 'Unrecognized scan data: ':ScanData) + end + + Response = ScanData + + Case ScanType EQ 'CASSETTE_1' + + // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a + // non-existent carrier will the scan data be considered invalid. + + cnt = DCount(ScanData, '|') + if cnt NE 8 then + CassetteID = 0 + Error_Services('Add', 'Wrong label - Scan 2D Top Label') + return + end else + // RDS should be 3rd position + CassetteID = Field(ScanData, '|', 3) + Seq1 = Field(ScanData, '|', 8) + end + + + // Strip '1T', 'I', and 'O' prefixes. + If CassetteID[1, 2] EQ '1T' then + CassetteID[1, 2] = '' + If ((CassetteID[1, 1] EQ 'O') or (CassetteID[1, 1] EQ 'I')) then CassetteID[1, 1] = '' + end + If ( (CassetteID[1, 1] EQ 'O') or (CassetteID[1, 1] EQ 'I') ) then CassetteID[1, 1] = '' + + ValidCassID = False$ ; // Assume Cassette ID is not valid for now. + RDSCass = Count(CassetteID, '.') EQ 0 AND Num(CassetteID) + GaNCass = Count(CassetteID, '.') EQ 1 AND not(RDSCass) + EPPCass = Count(CassetteID, '.') EQ 2 AND not(RDSCass) AND not(GaNCass) + + Begin Case + Case GaNCass + Convert '.' to '*' in CassetteID + WOMatRow = Database_Services('ReadDataRow', 'WO_MAT', CassetteID) + If Error_Services('NoError') then + ValidCassID = True$ + end + Case EPPCass + Convert '.' to '*' in CassetteID + WMOutRow = Database_Services('ReadDataRow', 'WM_OUT', CassetteID) + If Error_Services('NoError') then + ValidCassID = True$ + end + Case RDSCass + RDSRow = Database_Services('ReadDataRow', 'RDS', CassetteID) + If Error_Services('NoError') then + ValidCassID = True$ + end + End Case + + If ( (Seq1 EQ 'SEQ1') or (Seq1 EQ 'SEQ2') ) then + Set_Property(@Window, '@SEQ1', Seq1) + end else + Error_Services('Add', 'Error reading sequence information') + end + + If ValidCassID EQ False$ then + Error_Services('Add', 'Unrecognized scan data: ':ScanData) + end + + ScanData = CassetteID + If ScanData NE FirstCassID then + Error_Services('Add', 'Lot Label does not match the expected lot in OI. | Please correct this issue and then retry.') + end + + Response = ScanData + + Case ScanType EQ 'CASSETTE_2' + + // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a + // non-existent carrier will the scan data be considered invalid. + cnt = DCount(ScanData, '|') + if cnt NE 8 then + CassetteID = 0 + Error_Services('Add', 'Wrong label – Scan 2D Bottom Label') + return + end else + // RDS should be 3rd position + SecondCassID = Field(ScanData, '|', 3) + Seq2 = Field(ScanData, '|', 8) + end + + // Strip '1T', 'I', and 'O' prefixes. + If SecondCassID[1, 2] EQ '1T' then + SecondCassID[1, 2] = '' + If ( (SecondCassID[1, 1] EQ 'O') or (SecondCassID[1, 1] EQ 'I') ) then SecondCassID[1, 1] = '' + end + If ( (SecondCassID[1, 1] EQ 'O') or (SecondCassID[1, 1] EQ 'I') ) then SecondCassID[1, 1] = '' + + ValidCassID = False$ ; // Assume Cassette ID is not valid for now. + ScanMismatch = False$ + SeqMismatch = False$ + SeqError = False$ + Convert '*' to '.' in FirstCassID + + If Error_Services('NoError') then + ValidCassID = True$ + If (SecondCassID NE FirstCassID) then + ScanMismatch = True$ + end else + Seq1 = Get_Property(@Window, '@SEQ1') + Begin Case + Case ( (Seq2 NE 'SEQ1') and (Seq2 NE 'SEQ2') ) + SeqError = True$ + Case (Seq2 EQ Seq1) + SeqMismatch = True$ + End Case + end + end + + If ValidCassID EQ False$ then Error_Services('Add', 'Unrecognized scan data: ':ScanData) + + If (ScanMismatch EQ True$) AND (ValidCassID EQ True$) then + // Check if first cassette ID is a valid RDS or WM_OUT key + Convert '.' to '*' in FirstCassID + ValidCassID = False$ + Begin Case + Case ( RowExists('RDS', FirstCassID) EQ True$ ) + ValidCassID = True$ + WONo = Xlate('RDS', FirstCassID, 'WO', 'X') + CassNo = Xlate('RDS', FirstCassID, 'CASS_NO', 'X') + HoldEntity = 'RDS' + Case ( RowExists('WM_OUT', FirstCassID) EQ True$ ) + ValidCassID = True$ + WONo = Field(FirstCassID, '*', 1, 1) + CassNo = Field(FirstCassID, '*', 3, 1) + HoldEntity = 'WM_OUT' + Case ( RowExists('WM_IN', FirstCassID) EQ True$ ) + ValidCassID = True$ + WONo = Field(FirstCassID, '*', 1, 1) + CassNo = Field(FirstCassID, '*', 3, 1) + HoldEntity = 'WM_IN' + Case ( RowExists('WO_MAT', FirstCassID) EQ True$ ) + ValidCassID = True$ + WONo = Field(FirstCassID, '*', 1, 1) + CassNo = Field(FirstCassID, '*', 2, 1) + HoldEntity = 'WO_MAT' + Case Otherwise$ + Null + End Case + HoldEntityID = FirstCassID + // Place first cassette on hold + WOMatKey = WONo:'*':CassNo + CtrlEntID = 'NCR_SERVICES' ;* Control checked/unchecked + OriginFlag = '' ;* Flag to indicate a hold initiated from the packagaing form + HoldData = '' + HoldData<1> = OperatorID + HoldData<2> = 'Lot placed on hold due to NCR Barcode verification mismatch.' + HoldData<3> = False$ + Hold_Services('OnHold', WOMatKey, HoldEntity, HoldEntityID, 'HOLD', HoldData, OperatorID) + + // Check if second cassette ID is a valid RDS or WM_OUT key + Convert '.' to '*' in SecondCassID + ValidCassID = False$ + Begin Case + Case ( RowExists('RDS', SecondCassID) EQ True$ ) + ValidCassID = True$ + WONo = Xlate('RDS', SecondCassID, 'WO', 'X') + CassNo = Xlate('RDS', SecondCassID, 'CASS_NO', 'X') + HoldEntity = 'RDS' + ValidCassID = True$ + Case ( RowExists('WM_OUT', SecondCassID) EQ True$ ) + ValidCassID = True$ + WONo = Field(SecondCassID, '*', 1, 1) + CassNo = Field(SecondCassID, '*', 3, 1) + HoldEntity = 'WM_OUT' + Case ( RowExists('WM_IN', SecondCassID) EQ True$ ) + WONo = Field(SecondCassID, '*', 1, 1) + CassNo = Field(SecondCassID, '*', 3, 1) + HoldEntity = 'WM_IN' + ValidCassID = True$ + Case ( RowExists('WO_MAT', SecondCassID) EQ True$ ) + WONo = Field(SecondCassID, '*', 1, 1) + CassNo = Field(SecondCassID, '*', 2, 1) + HoldEntity = 'WO_MAT' + ValidCassID = True$ + Case Otherwise$ + Null + + End Case + If ValidCassID EQ True$ then + HoldEntityID = SecondCassID + WOMatKey = WONo:'*':CassNo + // Place second cassette on hold + CtrlEntID = 'NCR_SERVICES' ;* Control checked/unchecked + OriginFlag = '' ;* Flag to indicate a hold initiated from the packagaing form + HoldData = '' + HoldData<1> = OperatorID + HoldData<2> = 'Lot placed on hold due to NCR Barcode verification mismatch.' + HoldData<3> = False$ + Hold_Services('OnHold', WOMatKey, HoldEntity, HoldEntityID, 'HOLD', HoldData, OperatorID) + end + Message = 'NCR Label verification failed due to mismatched barcodes. Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.':CRLF$ | + : 'Cassette Label #1: ':FirstCassID:CRLF$ | + : 'Cassette Label #2: ':SecondCassID:CRLF$ | + : 'Operator: ':OperatorID + Error_Services('Add', Message) + end else if (SeqMismatch EQ True$) then + //do sequence mismatch stuff here + Message = 'NCR Label verification failed due to operator double-scanning barcode.':CRLF$ | + : 'Cassette: ':FirstCassID:CRLF$ | + : 'Operator: ':OperatorID + Error_Services('Add', Message) + end else if (SeqError EQ True$) then + Error_Services('Add', 'Error reading sequence information') + end + + ScanData = '' + ScanData = SecondCassID + Response = ScanData + + End Case + + end + end else + Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.') + end + end service - - +Service SendToSPC(NCRNo, RDSList, ReactorType, PSNo, DeptResp, LossCode, LossDesc, LossStage, LossBy, ACCode, ACDesc) + Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'Level' : @FM : 'Log' + ColumnWidths = 20 : @FM : 12 : @FM : 7 : @FM : 500 + Machine = Environment_Services('GetServer') + LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\NCR' + makeDirSuccess = Utility("MAKEDIR", LogPath) + LogDate = Oconv(Date(), 'D4/') + LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '_NcrSendToSpc.csv' + objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) + + RdsNos = '' + RdsCount = 0 + ReactorList = '' + ReactorCount = 0 + RejCntList = '' + RejCntCount = 0 + + RDSCnt = DCOUNT(RDSList<1>,@VM) + If RDSCnt GT 0 then + FOR I = 1 TO RDSCnt + If RdsNos NE '' then + RdsNos := ', ' + end + RdsNos := RDSList + RdsCount += Num(RDSList) + If ReactorList NE '' then + ReactorList := ', ' + end + ReactorList := RDSList + ReactorCount += Num(RDSList) + If RejCntList NE '' then + RejCntList := ', ' + end + RejCntList := RDSList + RejCntCount += Num(RDSList) + Next I + end + + LogMessage = 'Attempting to send NCR data to SPC. Data: {' + LogMessage := 'NCR No: ' : NCRNo + LogMessage := ', RDS Nos: ' : RdsNos + LogMessage := ', Reactors: ' : ReactorList + LogMessage := ', Reject Counts: ' : RejCntList + LogMessage := ', Reactor Type: ' : ReactorType + LogMessage := ', PSN: ' : PSNo + LogMessage := ', Responsible Dept: ' : DeptResp + LogMessage := ', Loss Code: ' : LossCode + LogMessage := ', Loss Desc: ' : LossDesc + LogMessage := ', Loss Stage: ' : LossStage + LogMessage := ', Loss By: ' : LossBy + LogMessage := ', AC Code: ' : ACCode + LogMessage := ', AC Desc: ' : ACDesc + LogMessage := '}' + + LogDate = Oconv(Date(), 'D4/') + LogData = '' + LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM + LogData<2> = Machine + LogData<3> = 'INFO' + LogData<4> = LogMessage + Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) + + ArgsNotNull = NCRNo NE '' and RDSList NE '' and ReactorType NE '' and PSNo NE '' + ArgsNotNull = ArgsNotNull EQ True$ and DeptResp NE '' and LossCode NE '' + ArgsNotNull = ArgsNotNull EQ True$ and LossDesc NE '' and LossStage NE '' + ArgsNotNull = ArgsNotNull EQ True$ and LossBy NE '' and ACCode NE '' and ACDesc NE '' + + RdsListCountsAtLeastOne = RdsCount GE 1 and ReactorCount GE 1 and RejCntCount GE 1 + RdsListCountsEqual = RdsCount EQ ReactorCount and ReactorCount EQ RejCntCount + + If ArgsNotNull EQ True$ and RdsListCountsAtLeastOne NE False$ and RdsListCountsEqual NE False$ then + DataLines = '' + + FOR I = 1 TO RDSCnt + + DataLine = QUOTE(NCRNo):TAB$ + DataLine := QUOTE(RDSList):TAB$ + + IF ReactorType = 'P' OR ReactorType = 'EPP' THEN + DataLine := QUOTE('EP':RDSList):TAB$ ;* EpiPRO reactors in SPC have "EP" on the front. + END ELSE + DataLine := QUOTE(RDSList):TAB$ + END + + DataLine := QUOTE(RDSList):TAB$ + DataLine := QUOTE(PSNo):TAB$ + DataLine := QUOTE(DeptResp):TAB$ + DataLine := QUOTE(LossCode):TAB$ + DataLine := QUOTE(LossDesc):TAB$ + DataLine := QUOTE(LossStage):TAB$ + DataLine := QUOTE(LossBy):TAB$ + DataLine := QUOTE(ACCode):TAB$ + DataLine := QUOTE(ACDesc):TAB$ + + DataLines := DataLine:CRLF$ + + NEXT I + + DateTime = SRP_Datetime("Now") + Year = SRP_Datetime("Year", DateTime) + Month = SRP_Datetime("Month", DateTime) + Day = SRP_Datetime("Day", DateTime) + + FileName = NCRNo : '_NCR_Data_' : Year : Month : Day : '.txt' + Path = Environment_Services('GetSPCDataPath') + + DOSFile = Path : '\' : FileName + + Set_Status(0) + + OSRead DOSRecord FROM DOSFile ELSE + ErrCode = Status() + IF ErrCode = 4 THEN + DOSRecord = '' ;* File doesn't exist + END ELSE + * ErrMsg('Unable to read DOS file "SPC_Data.TXT" for update. ':ErrCode:' Please try again.') ;* Remarked out per Chad Becker request - dkk 12/9/14 + RETURN + END + END + + DOSRecord := DataLines + + OSWrite DOSRecord ON DOSFile + + ErrCode = Status() + ErrorMessage = '' + Begin Case + Case ErrCode EQ 1 + ErrorMessage = 'Bad filename.' + Case ErrCode EQ 2 + ErrorMessage = 'Cannot write to file. Access denied.' + Case ErrCode EQ 3 + ErrorMessage = 'Disk or directory full.' + Case ErrCode EQ 4 + ErrorMessage = 'File does not exist.' + Case ErrCode EQ 5 + ErrorMessage = 'Unknown error.' + Case ErrCode EQ 6 + ErrorMessage = 'Attempt to write to a read-only file.' + End Case + + LogDate = Oconv(Date(), 'D4/') + LogData = '' + LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM + LogData<2> = Machine + If ErrorMessage NE '' then + ErrorMessage = 'Error in ' : Service : '. When attempting to write the NCR data to a file the following error occurred. ' : ErrorMessage + LogData<3> = 'ERROR' + LogData<4> = ErrorMessage + Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) + Error_Services('Add', ErrorMessage) + end else + LogData<3> = 'INFO' + LogData<4> = 'Sucessfully sent NCR ' : NCRNo : ' data to SPC in file ' : DOSFile : '.' + Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) + end + end else + ErrorMessage = 'Error in ' : Service : '. One or more arguments were null or malformed.' + LogDate = Oconv(Date(), 'D4/') + LogData = '' + LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS') ; // Logging DTM + LogData<2> = Machine + LogData<3> = 'ERROR' + LogData<4> = ErrorMessage + Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) + Error_Services('Add', ErrorMessage) + end + +end service diff --git a/LSL2/STPROC/NDW_VERIFY_BARCODE_EVENTS.txt b/LSL2/STPROC/NDW_VERIFY_BARCODE_EVENTS.txt new file mode 100644 index 0000000..5ba7bc4 --- /dev/null +++ b/LSL2/STPROC/NDW_VERIFY_BARCODE_EVENTS.txt @@ -0,0 +1,201 @@ +Compile function NDW_VERIFY_BARCODE_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_NDW_VERIFY_BARCODE_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) + 08/29/2024 djm Created initial commuter module. Adapted from NDW_PACKAGING_EVENTS. + +***********************************************************************************************************************/ +#pragma precomp SRP_PreCompiler +#window NDW_VERIFY_BARCODE + +$insert APP_INSERTS +$insert EVENT_SETUP +$insert MSG_EQUATES +$insert LSL_USERS_EQUATES +$insert MESSAGE_BOX_EQUATES +$insert SRP_POPUP_EQUATES +$INSERT LOGICAL + +Equ MSG_WIDTH$ to 600 + +Declare subroutine SRP_Show_Window, ErrMsg, PlaceDialog +Declare function Database_Services, Security_Services, MemberOf, Form_Services, Scan_Services +Declare function Message_Box, SRP_Get_Window_Rect, GetTickCount, Ncr_Services + +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 +end + +GoToEvent Event for CtrlEntId else + // Event not implemented +end + +Return EventFlow or 1 + +//----------------------------------------------------------------------------- +// EVENT HANDLERS +//----------------------------------------------------------------------------- + +Event WINDOW.CREATE(CreateParam) + + Gosub GetLotID + Set_Property(@Window:'.EDL_CASS_SCAN_1', 'ENABLED', True$) + Set_Property(@Window:'.EDL_CASS_SCAN_1', 'FOCUS', True$) + PlaceDialog(-2, -2) + +end event + + +Event EDL_CASS_SCAN_1.LOSTFOCUS(Flag, FocusID) + + If Flag EQ 1 then + ScanData = Get_Property(CtrlEntID, 'TEXT') + ExpectedLot = Get_Property(@Window:'.EDL_LOT_ID', 'TEXT') + OperatorID = @User4 + If ScanData NE '' then + + If Parent EQ 'WM_IN' then + ScanData = NCR_Services('ProcessScanData', ScanData, 'WM_IN_1', ExpectedLot, OperatorID) + end else + ScanData = NCR_Services('ProcessScanData', ScanData, 'CASSETTE_1', ExpectedLot, OperatorID) + End + If Error_Services('NoError') then + Set_Property(CtrlEntID, 'TEXT', ScanData) + Set_Property(@Window:'.EDL_CASS_SCAN_2', 'ENABLED', True$) + Set_Property(@Window:'.EDL_CASS_SCAN_2', 'FOCUS', True$) + Set_Property(CtrlEntID, 'ENABLED', False$) + end else + GoSub ClearForm + ErrorMessage = Error_Services('GetMessage') + MsgStruct = "" + MsgStruct = MSG_WIDTH$ + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + Set_Property(CtrlEntId, 'FOCUS', True$) + end + end + end + +end event + + +Event EDL_CASS_SCAN_2.LOSTFOCUS(Flag, FocusID) + + If Flag EQ 1 then + + ScanData = Get_Property(CtrlEntID, 'TEXT') + If ScanData NE '' then + FirstCassID = Get_Property(@Window:'.EDL_CASS_SCAN_1', 'TEXT') + OperatorID = @User4 + + If Parent EQ 'WM_IN' then + ScanData = NCR_Services('ProcessScanData', ScanData, 'WM_IN_2', FirstCassID, OperatorID) + end else + ScanData = NCR_Services('ProcessScanData', ScanData, 'CASSETTE_2', FirstCassID, OperatorID) + End + If Error_Services('NoError') then + Set_Property(CtrlEntID, 'TEXT', ScanData) + SuccessMessage = 'NCR verification complete!' + MsgStruct = "" + MsgStruct = MSG_WIDTH$ + Msg(@Window, MsgStruct, 'PROCESS_COMPLETE', '', SuccessMessage) + End_Dialog(@Window, True$) + end else + ErrorMessage = Error_Services('GetMessage') + If IndexC(ErrorMessage, 'Unrecognized scan data:', 1) or IndexC(ErrorMessage, 'Error reading sequence information', 1) then + Set_Property(@Window:'.EDL_CASS_SCAN_2', 'TEXT', '') + MsgStruct = "" + MsgStruct = MSG_WIDTH$ + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + Set_Property(CtrlEntId, 'FOCUS', True$) + end else + GoSub ClearForm + MsgStruct = "" + MsgStruct = MSG_WIDTH$ + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + If Count(ErrorMessage, 'NCR Label verification failed due to mismatched barcodes.') NE 0 then + End_Dialog(@Window, False$) + End else + Set_Property(@Window:'.EDL_CASS_SCAN_1', 'FOCUS', True$) + end + end + end + end + end + +end event + + +Event PUB_ENG_OVERRIDE.CLICK() + + VerifyParams = @USER4 : @FM : 'ENGINEERING':@VM:'ENG_TECH' : @FM : '' : @FM : 'Override required by a member of ENGINEERING or ENG_TECH groups' + Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, VerifyParams) + Valid = Response<1> + OverrideUser = Response<2> + + If Valid then + End_Dialog(@Window, True$) + end + +end event + + +Event PUB_CANCEL.CLICK() + + End_Dialog(@Window, False$) + +end event + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Internal GoSubs +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +ClearForm: + + Set_Property(@Window:'.EDL_CASS_SCAN_1' , 'TEXT' , '') + Set_Property(@Window:'.EDL_CASS_SCAN_2' , 'TEXT' , '') + Set_Property(@Window:'.EDL_CASS_SCAN_1' , 'ENABLED', 1) + Set_Property(@Window:'.EDL_CASS_SCAN_2' , 'ENABLED', -1) + Set_Property(@Window:'.EDL_LOT_ID' , 'ENABLED', -1) + +return + +GetLotID: + + LotID = Param1 + Set_Property(@Window:'.EDL_LOT_ID', 'TEXT', LotID) + +return + + diff --git a/LSL2/STPROC/NDW_VERIFY_USER_EVENTS.txt b/LSL2/STPROC/NDW_VERIFY_USER_EVENTS.txt index 15f27c2..fc69ee1 100644 --- a/LSL2/STPROC/NDW_VERIFY_USER_EVENTS.txt +++ b/LSL2/STPROC/NDW_VERIFY_USER_EVENTS.txt @@ -66,11 +66,11 @@ If Event EQ 'OLE' then 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 + 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 @@ -218,9 +218,9 @@ Event PUB_OK.CLICK() NumGroups = DCount(Groups, @VM) If NumGroups GT 1 then Swap @VM with ' or ' in Groups - Message = 'User is not a member of the ' : Groups : ' groups.' + Message = 'User is not a member of ':@TM:'the ' : Groups : ' groups.' end else - Message = 'User is not a member of the ' : Group : ' group.' + Message = 'User is not a member of ':@TM:'the ' : Group : ' group.' end Form_Services('DisplayControlMessage', Message, 'Incorrect Group', @Window : '.EDL_USERNAME', 'VALIDATION', 'RGB(229,20,0)')