Migrate BaggerIdentification project.

This commit is contained in:
Infineon\Mitchem 2024-09-12 12:15:48 -07:00 committed by Mitchem Dakota (IT FI MES External)
parent dc8665d553
commit d7215cfa9a
5 changed files with 303 additions and 93 deletions

View File

@ -12119,7 +12119,8 @@
"<66,23,5>": "RDS", "<66,23,5>": "RDS",
"<66,23,6>": "RDS", "<66,23,6>": "RDS",
"<66,23,7>": "RDS", "<66,23,7>": "RDS",
"<66,23,8>": "RDS" "<66,23,8>": "RDS",
"<66,23,9>": "RDS"
}, },
"<66,24>": { "<66,24>": {
"<66,24,1>": "INV_DTM", "<66,24,1>": "INV_DTM",
@ -12129,7 +12130,8 @@
"<66,24,5>": "INV_USER", "<66,24,5>": "INV_USER",
"<66,24,6>": "INV_DELTA", "<66,24,6>": "INV_DELTA",
"<66,24,7>": "INV_TAG", "<66,24,7>": "INV_TAG",
"<66,24,8>": "INV_SCAN_ENTRY" "<66,24,8>": "INV_SCAN_ENTRY",
"<66,24,9>": "INV_TOOL_ID"
}, },
"<66,25>": "", "<66,25>": "",
"<66,26>": "", "<66,26>": "",
@ -12142,7 +12144,8 @@
"<66,28,5>": "<<Default>>", "<66,28,5>": "<<Default>>",
"<66,28,6>": "<<Default>>", "<66,28,6>": "<<Default>>",
"<66,28,7>": "<<Default>>", "<66,28,7>": "<<Default>>",
"<66,28,8>": "<<Default>>" "<66,28,8>": "<<Default>>",
"<66,28,9>": "<<Default>>"
}, },
"<66,29>": { "<66,29>": {
"<66,29,1>": "DT2/^S", "<66,29,1>": "DT2/^S",
@ -12152,7 +12155,8 @@
"<66,29,5>": "<<Default>>", "<66,29,5>": "<<Default>>",
"<66,29,6>": "<<Default>>", "<66,29,6>": "<<Default>>",
"<66,29,7>": "<<Default>>", "<66,29,7>": "<<Default>>",
"<66,29,8>": "<<Default>>" "<66,29,8>": "<<Default>>",
"<66,29,9>": "<<Default>>"
}, },
"<66,30>": { "<66,30>": {
"<66,30,1>": "<<Default>>", "<66,30,1>": "<<Default>>",
@ -12162,7 +12166,8 @@
"<66,30,5>": "<<None>>", "<66,30,5>": "<<None>>",
"<66,30,6>": "<<None>>", "<66,30,6>": "<<None>>",
"<66,30,7>": "<<None>>", "<66,30,7>": "<<None>>",
"<66,30,8>": "<<None>>" "<66,30,8>": "<<None>>",
"<66,30,9>": "<<None>>"
}, },
"<66,31>": { "<66,31>": {
"<66,31,1>": "0", "<66,31,1>": "0",
@ -12172,7 +12177,8 @@
"<66,31,5>": "0", "<66,31,5>": "0",
"<66,31,6>": "0", "<66,31,6>": "0",
"<66,31,7>": "0", "<66,31,7>": "0",
"<66,31,8>": "0" "<66,31,8>": "0",
"<66,31,9>": "0"
}, },
"<66,32>": "", "<66,32>": "",
"<66,33>": "", "<66,33>": "",
@ -12186,7 +12192,8 @@
"<66,35,1,5>": "", "<66,35,1,5>": "",
"<66,35,1,6>": "", "<66,35,1,6>": "",
"<66,35,1,7>": "", "<66,35,1,7>": "",
"<66,35,1,8>": "" "<66,35,1,8>": "",
"<66,35,1,9>": ""
}, },
"<66,35,2>": { "<66,35,2>": {
"<66,35,2,1>": "", "<66,35,2,1>": "",
@ -12196,7 +12203,8 @@
"<66,35,2,5>": "", "<66,35,2,5>": "",
"<66,35,2,6>": "", "<66,35,2,6>": "",
"<66,35,2,7>": "", "<66,35,2,7>": "",
"<66,35,2,8>": "" "<66,35,2,8>": "",
"<66,35,2,9>": ""
}, },
"<66,35,3>": { "<66,35,3>": {
"<66,35,3,1>": "", "<66,35,3,1>": "",
@ -12206,7 +12214,8 @@
"<66,35,3,5>": "", "<66,35,3,5>": "",
"<66,35,3,6>": "", "<66,35,3,6>": "",
"<66,35,3,7>": "", "<66,35,3,7>": "",
"<66,35,3,8>": "" "<66,35,3,8>": "",
"<66,35,3,9>": ""
}, },
"<66,35,4>": { "<66,35,4>": {
"<66,35,4,1>": "", "<66,35,4,1>": "",
@ -12216,7 +12225,8 @@
"<66,35,4,5>": "", "<66,35,4,5>": "",
"<66,35,4,6>": "", "<66,35,4,6>": "",
"<66,35,4,7>": "", "<66,35,4,7>": "",
"<66,35,4,8>": "" "<66,35,4,8>": "",
"<66,35,4,9>": ""
}, },
"<66,35,5>": { "<66,35,5>": {
"<66,35,5,1>": "", "<66,35,5,1>": "",
@ -12226,7 +12236,8 @@
"<66,35,5,5>": "", "<66,35,5,5>": "",
"<66,35,5,6>": "", "<66,35,5,6>": "",
"<66,35,5,7>": "", "<66,35,5,7>": "",
"<66,35,5,8>": "" "<66,35,5,8>": "",
"<66,35,5,9>": ""
}, },
"<66,35,6>": { "<66,35,6>": {
"<66,35,6,1>": "", "<66,35,6,1>": "",
@ -12236,7 +12247,8 @@
"<66,35,6,5>": "", "<66,35,6,5>": "",
"<66,35,6,6>": "", "<66,35,6,6>": "",
"<66,35,6,7>": "", "<66,35,6,7>": "",
"<66,35,6,8>": "" "<66,35,6,8>": "",
"<66,35,6,9>": ""
}, },
"<66,35,7>": { "<66,35,7>": {
"<66,35,7,1>": "", "<66,35,7,1>": "",
@ -12246,7 +12258,8 @@
"<66,35,7,5>": "", "<66,35,7,5>": "",
"<66,35,7,6>": "", "<66,35,7,6>": "",
"<66,35,7,7>": "", "<66,35,7,7>": "",
"<66,35,7,8>": "" "<66,35,7,8>": "",
"<66,35,7,9>": ""
}, },
"<66,35,8>": { "<66,35,8>": {
"<66,35,8,1>": "", "<66,35,8,1>": "",
@ -12256,7 +12269,8 @@
"<66,35,8,5>": "", "<66,35,8,5>": "",
"<66,35,8,6>": "", "<66,35,8,6>": "",
"<66,35,8,7>": "", "<66,35,8,7>": "",
"<66,35,8,8>": "" "<66,35,8,8>": "",
"<66,35,8,9>": ""
}, },
"<66,35,9>": { "<66,35,9>": {
"<66,35,9,1>": "", "<66,35,9,1>": "",
@ -12266,7 +12280,8 @@
"<66,35,9,5>": "", "<66,35,9,5>": "",
"<66,35,9,6>": "", "<66,35,9,6>": "",
"<66,35,9,7>": "", "<66,35,9,7>": "",
"<66,35,9,8>": "" "<66,35,9,8>": "",
"<66,35,9,9>": ""
}, },
"<66,35,10>": { "<66,35,10>": {
"<66,35,10,1>": "", "<66,35,10,1>": "",
@ -12276,7 +12291,8 @@
"<66,35,10,5>": "", "<66,35,10,5>": "",
"<66,35,10,6>": "", "<66,35,10,6>": "",
"<66,35,10,7>": "", "<66,35,10,7>": "",
"<66,35,10,8>": "" "<66,35,10,8>": "",
"<66,35,10,9>": ""
}, },
"<66,35,11>": { "<66,35,11>": {
"<66,35,11,1>": "", "<66,35,11,1>": "",
@ -12286,7 +12302,8 @@
"<66,35,11,5>": "", "<66,35,11,5>": "",
"<66,35,11,6>": "", "<66,35,11,6>": "",
"<66,35,11,7>": "", "<66,35,11,7>": "",
"<66,35,11,8>": "" "<66,35,11,8>": "",
"<66,35,11,9>": ""
} }
}, },
"<66,36>": "", "<66,36>": "",
@ -12300,9 +12317,10 @@
"<66,39,5>": "80", "<66,39,5>": "80",
"<66,39,6>": "80", "<66,39,6>": "80",
"<66,39,7>": "160", "<66,39,7>": "160",
"<66,39,8>": "80" "<66,39,8>": "80",
"<66,39,9>": "80"
}, },
"<66,40>": "8", "<66,40>": "9",
"<66,41>": { "<66,41>": {
"<66,41,1>": "0", "<66,41,1>": "0",
"<66,41,2>": "0", "<66,41,2>": "0",
@ -12320,14 +12338,15 @@
"<66,41,14>": "1" "<66,41,14>": "1"
}, },
"<66,42>": { "<66,42>": {
"<66,42,1>": "16400", "<66,42,1>": "2147500048",
"<66,42,2>": "16384", "<66,42,2>": "16384",
"<66,42,3>": "16384", "<66,42,3>": "16384",
"<66,42,4>": "16384", "<66,42,4>": "16384",
"<66,42,5>": "16384", "<66,42,5>": "16384",
"<66,42,6>": "16416", "<66,42,6>": "16416",
"<66,42,7>": "16384", "<66,42,7>": "16384",
"<66,42,8>": "16384" "<66,42,8>": "2147500032",
"<66,42,9>": "2147500034"
}, },
"<66,43>": { "<66,43>": {
"<66,43,1>": "101", "<66,43,1>": "101",
@ -12337,7 +12356,8 @@
"<66,43,5>": "65", "<66,43,5>": "65",
"<66,43,6>": "35", "<66,43,6>": "35",
"<66,43,7>": "160", "<66,43,7>": "160",
"<66,43,8>": "80" "<66,43,8>": "80",
"<66,43,9>": "80"
}, },
"<66,44>": { "<66,44>": {
"<66,44,1>": "TimeStamp", "<66,44,1>": "TimeStamp",
@ -12347,7 +12367,8 @@
"<66,44,5>": "User", "<66,44,5>": "User",
"<66,44,6>": "Hours", "<66,44,6>": "Hours",
"<66,44,7>": "Tag", "<66,44,7>": "Tag",
"<66,44,8>": "Scanner Used" "<66,44,8>": "Scanner Used",
"<66,44,9>": "INV Tool ID"
}, },
"<66,45>": "", "<66,45>": "",
"<66,46>": "", "<66,46>": "",
@ -12359,10 +12380,50 @@
"<66,52>": "", "<66,52>": "",
"<66,53>": "", "<66,53>": "",
"<66,54>": "", "<66,54>": "",
"<66,55>": "", "<66,55>": {
"<66,56>": "", "<66,55,1>": "",
"<66,57>": "", "<66,55,2>": "",
"<66,58>": "", "<66,55,3>": "",
"<66,55,4>": "",
"<66,55,5>": "",
"<66,55,6>": "",
"<66,55,7>": "",
"<66,55,8>": "",
"<66,55,9>": ""
},
"<66,56>": {
"<66,56,1>": "",
"<66,56,2>": "",
"<66,56,3>": "",
"<66,56,4>": "",
"<66,56,5>": "",
"<66,56,6>": "",
"<66,56,7>": "",
"<66,56,8>": "",
"<66,56,9>": ""
},
"<66,57>": {
"<66,57,1>": "",
"<66,57,2>": "",
"<66,57,3>": "",
"<66,57,4>": "",
"<66,57,5>": "",
"<66,57,6>": "",
"<66,57,7>": "",
"<66,57,8>": "",
"<66,57,9>": ""
},
"<66,58>": {
"<66,58,1>": "",
"<66,58,2>": "",
"<66,58,3>": "",
"<66,58,4>": "",
"<66,58,5>": "",
"<66,58,6>": "",
"<66,58,7>": "",
"<66,58,8>": "",
"<66,58,9>": ""
},
"<66,59>": "", "<66,59>": "",
"<66,60>": { "<66,60>": {
"<66,60,1>": "18", "<66,60,1>": "18",
@ -12372,7 +12433,8 @@
"<66,60,5>": "18", "<66,60,5>": "18",
"<66,60,6>": "18", "<66,60,6>": "18",
"<66,60,7>": "18", "<66,60,7>": "18",
"<66,60,8>": "18" "<66,60,8>": "18",
"<66,60,9>": "18"
}, },
"<66,61>": "", "<66,61>": "",
"<66,62>": "0", "<66,62>": "0",
@ -12407,11 +12469,119 @@
"<66,91>": "", "<66,91>": "",
"<66,92>": "", "<66,92>": "",
"<66,93>": "", "<66,93>": "",
"<66,94>": "", "<66,94>": {
"<66,95>": "", "<66,94,1>": "",
"<66,96>": "", "<66,94,2>": "",
"<66,97>": "", "<66,94,3>": "",
"<66,98>": "", "<66,94,4>": "",
"<66,94,5>": "",
"<66,94,6>": "",
"<66,94,7>": "",
"<66,94,8>": "",
"<66,94,9>": ""
},
"<66,95>": {
"<66,95,1>": "",
"<66,95,2>": "",
"<66,95,3>": "",
"<66,95,4>": "",
"<66,95,5>": "",
"<66,95,6>": "",
"<66,95,7>": "",
"<66,95,8>": "",
"<66,95,9>": ""
},
"<66,96>": {
"<66,96,1>": {
"<66,96,1,1>": "",
"<66,96,1,2>": ""
},
"<66,96,2>": "",
"<66,96,3>": "",
"<66,96,4>": "",
"<66,96,5>": "",
"<66,96,6>": "",
"<66,96,7>": "",
"<66,96,8>": "",
"<66,96,9>": {
"<66,96,9,1>": "",
"<66,96,9,2>": ""
}
},
"<66,97>": {
"<66,97,1>": {
"<66,97,1,1>": "Tahoma",
"<66,97,1,2>": "-11",
"<66,97,1,3>": "400",
"<66,97,1,4>": "0",
"<66,97,1,5>": "0",
"<66,97,1,6>": "0",
"<66,97,1,7>": "0",
"<66,97,1,8>": "34",
"<66,97,1,9>": "0",
"<66,97,1,10>": "3",
"<66,97,1,11>": "2",
"<66,97,1,12>": "1"
},
"<66,97,2>": "",
"<66,97,3>": "",
"<66,97,4>": "",
"<66,97,5>": "",
"<66,97,6>": "",
"<66,97,7>": "",
"<66,97,8>": "",
"<66,97,9>": {
"<66,97,9,1>": "Tahoma",
"<66,97,9,2>": "-11",
"<66,97,9,3>": "400",
"<66,97,9,4>": "0",
"<66,97,9,5>": "0",
"<66,97,9,6>": "0",
"<66,97,9,7>": "0",
"<66,97,9,8>": "34",
"<66,97,9,9>": "0",
"<66,97,9,10>": "3",
"<66,97,9,11>": "2",
"<66,97,9,12>": "1"
}
},
"<66,98>": {
"<66,98,1>": {
"<66,98,1,1>": "Tahoma",
"<66,98,1,2>": "-11",
"<66,98,1,3>": "400",
"<66,98,1,4>": "0",
"<66,98,1,5>": "0",
"<66,98,1,6>": "0",
"<66,98,1,7>": "0",
"<66,98,1,8>": "34",
"<66,98,1,9>": "0",
"<66,98,1,10>": "3",
"<66,98,1,11>": "2",
"<66,98,1,12>": "1"
},
"<66,98,2>": "",
"<66,98,3>": "",
"<66,98,4>": "",
"<66,98,5>": "",
"<66,98,6>": "",
"<66,98,7>": "",
"<66,98,8>": "",
"<66,98,9>": {
"<66,98,9,1>": "Tahoma",
"<66,98,9,2>": "-11",
"<66,98,9,3>": "400",
"<66,98,9,4>": "0",
"<66,98,9,5>": "0",
"<66,98,9,6>": "0",
"<66,98,9,7>": "0",
"<66,98,9,8>": "34",
"<66,98,9,9>": "0",
"<66,98,9,10>": "3",
"<66,98,9,11>": "2",
"<66,98,9,12>": "1"
}
},
"<66,99>": { "<66,99>": {
"<66,99,1>": { "<66,99,1>": {
"<66,99,1,1>": "-2", "<66,99,1,1>": "-2",
@ -12609,7 +12779,10 @@
"<66,99,27,7>": "0" "<66,99,27,7>": "0"
} }
}, },
"<66,100>": "", "<66,100>": {
"<66,100,1>": "",
"<66,100,2>": ""
},
"<66,101>": "", "<66,101>": "",
"<66,102>": "", "<66,102>": "",
"<66,103>": "", "<66,103>": "",
@ -22140,10 +22313,10 @@
"<2>": { "<2>": {
"<2,1>": { "<2,1>": {
"<2,1,1>": { "<2,1,1>": {
"<2,1,1,1>": "UNLOAD/LOAD_EXTRA.SIGNATURE_INFO", "<2,1,1,1>": "SEND_MESSAGE.MESSAGE_W/ATTACHMENT",
"<2,1,1,2>": "PRINT.FACTORY_LABELS", "<2,1,1,2>": "PRINT.CUSTOMER_RDS",
"<2,1,1,3>": "PRINT.CUSTOMER_RDS", "<2,1,1,3>": "PRINT.FACTORY_LABELS",
"<2,1,1,4>": "SEND_MESSAGE.MESSAGE_W/ATTACHMENT" "<2,1,1,4>": "UNLOAD/LOAD_EXTRA.SIGNATURE_INFO"
} }
}, },
"<2,2>": { "<2,2>": {

View File

@ -62,7 +62,7 @@ Declare function Logging_Services, Environment_Services, Datetime, obj_WO_Ste
Declare function SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, obj_Shipment, SRP_Date Declare function SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, obj_Shipment, SRP_Date
Declare subroutine Material_Services, Memory_Services, Database_Services, SRP_Array, Btree.Extract, Logging_Services Declare subroutine Material_Services, Memory_Services, Database_Services, SRP_Array, Btree.Extract, Logging_Services
Declare subroutine SRP_Stopwatch, Set_Status, RList, Work_Order_Services, SQL_Services, obj_WO_Mat, obj_Notes Declare subroutine SRP_Stopwatch, Set_Status, RList, Work_Order_Services, SQL_Services, obj_WO_Mat, obj_Notes
Declare subroutine SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, Hold_Services Declare subroutine SRP_Rotate_Array, SRP_DateTime, obj_WO_Log
UseMakeupWafersTable = Database_Services('ReadDataRow', 'APP_INFO', 'USE_MAKEUP_WAFERS_TABLE') UseMakeupWafersTable = Database_Services('ReadDataRow', 'APP_INFO', 'USE_MAKEUP_WAFERS_TABLE')
If UseMakeupWafersTable EQ '' then UseMakeupWafersTable = False$ If UseMakeupWafersTable EQ '' then UseMakeupWafersTable = False$
@ -149,22 +149,33 @@ Service GetLotHistory(IDType=IDType, LotID, StartDate, EndDate)
Case IndexC(ThisComment, 'Material Placed on Hold', 1) Case IndexC(ThisComment, 'Material Placed on Hold', 1)
CommentArray<I,3> = 'HOLD_ON' CommentArray<I,3> = 'HOLD_ON'
Case IndexC(ThisComment, 'Packaging completed for', 1)
CommentArray<I,3> = 'PACK'
End Case End Case
Next I Next I
// WO_MAT Actions // WO_MAT Actions
INVDTMs = WOMatRow<WO_MAT_INV_DTM$> INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
INVUsers = WOMatRow<WO_MAT_INV_USER$> INVUsers = WOMatRow<WO_MAT_INV_USER$>
INVActions = WOMatRow<WO_MAT_INV_ACTION$> INVActions = WOMatRow<WO_MAT_INV_ACTION$>
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
ActionArray = SRP_Rotate_Array(ActionList) ActionArray = SRP_Rotate_Array(ActionList)
// Remove Hold Inventory actions from array because they are populated from RDS commments. // Remove Hold Inventory actions from array because they are populated from RDS commments.
HoldOffCount = Count(INVActions, 'HOLD_OFF')
HoldOnCount = Count(INVActions, 'HOLD_ON')
PackCount = Count(INVActions, 'PACK')
Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0) ActionArray = Delete(ActionArray, POS, 0, 0)
end end
Locate 'HOLD_ON' in InvActions Using @VM Setting POS then Locate 'HOLD_ON' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0) ActionArray = Delete(ActionArray, POS, 0, 0)
end end
For K = 1 to PackCount
Locate 'PACK' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0)
end
Next K
end else end else
// RDS is default IDType // RDS is default IDType
@ -189,22 +200,35 @@ Service GetLotHistory(IDType=IDType, LotID, StartDate, EndDate)
Case IndexC(ThisComment, 'Material Placed on Hold', 1) Case IndexC(ThisComment, 'Material Placed on Hold', 1)
CommentArray<I,3> = 'HOLD_ON' CommentArray<I,3> = 'HOLD_ON'
Case IndexC(ThisComment, 'Packaging completed for', 1)
CommentArray<I,3> = 'PACK'
End Case End Case
Next I Next I
// WO_MAT Actions // WO_MAT Actions
INVDTMs = WOMatRow<WO_MAT_INV_DTM$> INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
INVUsers = WOMatRow<WO_MAT_INV_USER$> INVUsers = WOMatRow<WO_MAT_INV_USER$>
INVActions = WOMatRow<WO_MAT_INV_ACTION$> INVActions = WOMatRow<WO_MAT_INV_ACTION$>
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
ActionArray = SRP_Rotate_Array(ActionList) ActionArray = SRP_Rotate_Array(ActionList)
HoldOffCount = Count(INVActions, 'HOLD_OFF')
HoldOnCount = Count(INVActions, 'HOLD_ON')
PackCount = Count(INVActions, 'PACK')
// Remove Hold Inventory actions from array because they are populated from RDS commments. // Remove Hold Inventory actions from array because they are populated from RDS commments.
Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0) ActionArray = Delete(ActionArray, POS, 0, 0)
end end
Locate 'HOLD_ON' in InvActions Using @VM Setting POS then Locate 'HOLD_ON' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0) ActionArray = Delete(ActionArray, POS, 0, 0)
end end
For K = 1 to PackCount
Locate 'PACK' in InvActions Using @VM Setting POS then
ActionArray = Delete(ActionArray, POS, 0, 0)
end
Next K
end end
// Add Comments if present // Add Comments if present
If CommentArray NE '' then If CommentArray NE '' then
@ -286,8 +310,7 @@ Service ProcessAutoHold()
HoldList<-1> = ReactType:TAB$:HoldEntityID HoldList<-1> = ReactType:TAB$:HoldEntityID
OnHold = Xlate(HoldEntity, HoldEntityID, 'HOLD', 'X') OnHold = Xlate(HoldEntity, HoldEntityID, 'HOLD', 'X')
If OnHold NE True$ then If OnHold NE True$ then
//obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM') obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM')
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, '', 'H', '', 'SYSTEM')
end end
LogData = '' LogData = ''

View File

@ -217,6 +217,8 @@ Event EDL_PASSWORD_SCAN.LOSTFOCUS(Flag, FocusID)
ScanData = Get_Property(CtrlEntID, 'TEXT') ScanData = Get_Property(CtrlEntID, 'TEXT')
If ScanData NE '' then If ScanData NE '' then
Username = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT') Username = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT')
PolyText = Get_Property(@Window:'.EDL_POLY_SCAN', 'TEXT')
BaggerID = PolyText[5,1]
ScanData = Packaging_Services('ProcessScanData', ScanData, 'PASSWORD', Username) ScanData = Packaging_Services('ProcessScanData', ScanData, 'PASSWORD', Username)
If Error_Services('NoError') then If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData) Set_Property(CtrlEntID, 'TEXT', ScanData)
@ -225,7 +227,7 @@ Event EDL_PASSWORD_SCAN.LOSTFOCUS(Flag, FocusID)
//replace period with asterisk for GaN cassettes //replace period with asterisk for GaN cassettes
Convert '.' to '*' in CassetteID Convert '.' to '*' in CassetteID
OperatorID = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT') OperatorID = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT')
Packaging_Services('CompletePackaging', CassetteID, OperatorID) Packaging_Services('CompletePackaging', CassetteID, OperatorID, BaggerID)
If Error_Services('NoError') then If Error_Services('NoError') then
SuccessMessage = 'Bagging process complete!' SuccessMessage = 'Bagging process complete!'
MsgStruct = "" MsgStruct = ""

View File

@ -36,7 +36,7 @@ $insert NOTIFICATION_EQU
Declare function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Memberof Declare function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Memberof
Declare function Get_Property, RDS_Services, EpiPro_Services, DateTime, Signature_Services Declare function Get_Property, RDS_Services, EpiPro_Services, DateTime, Signature_Services
Declare subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, Security_Services, obj_Notes Declare subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, Security_Services, obj_Notes
Declare subroutine obj_WO_Mat_Log, obj_WO_Mat, Set_Status, SAP_Services, Hold_Services Declare subroutine obj_WO_Mat_Log, obj_WO_Mat, Set_Status, SAP_Services, Rds_Services, Wm_Out_Services
//TODO - flag used during cutover, delete from APP_INFO and removed commented lines reference Use2DBarcode //TODO - flag used during cutover, delete from APP_INFO and removed commented lines reference Use2DBarcode
*Use2DBarcode = Database_Services('ReadDataRow', 'APP_INFO', 'USE_PACKAGING_2D') *Use2DBarcode = Database_Services('ReadDataRow', 'APP_INFO', 'USE_PACKAGING_2D')
@ -56,25 +56,28 @@ Options SCAN_TYPES = 'EMPLOYEE', 'CASSETTE_1', 'CASSETTE_2', 'POLY', 'TRI
// SERVICES // SERVICES
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
Service CompletePackaging(CassetteID, OperatorID) Service CompletePackaging(CassetteID, OperatorID, BaggerIdentifier)
* 1. Write success packaging record in Material Log * 1. Write success packaging record in Material Log
* 2. Write success PTO record in Material Log * 2. Write success PTO record in Material Log
* 3. Send SAP Cassette Complete transaction (up to now, this has been done at FQA) * 3. Send SAP Cassette Complete transaction (up to now, this has been done at FQA)
* 4. Create comment in CassetteID record
RDSKey = CassetteID RDSKey = CassetteID
WMOKey = CassetteID WMOKey = CassetteID
Convert '.' to '*' in WMOKey Convert '.' to '*' in WMOKey
CommentEntity = ''
Begin Case Begin Case
Case RowExists('RDS', RDSKey) EQ True$ Case RowExists('RDS', RDSKey) EQ True$
// RDS number // RDS number
WOMatKey = Xlate('RDS', RDSKey, 'WO', 'X') WOMatKey = Xlate('RDS', RDSKey, 'WO', 'X')
WOMatKey = WoMatKey:'*':Xlate('RDS', RDSKey, 'CASS_NO', 'X') WOMatKey = WoMatKey:'*':Xlate('RDS', RDSKey, 'CASS_NO', 'X')
CommentEntity = 'RDS'
Case RowExists('WM_OUT', WMOKey) EQ True$ Case RowExists('WM_OUT', WMOKey) EQ True$
// WM_OUT key // WM_OUT key
WOMatKey = Xlate('WM_OUT', WMOKey, 'WO_MAT_KEY', 'X') WOMatKey = Xlate('WM_OUT', WMOKey, 'WO_MAT_KEY', 'X')
CommentEntity = 'WM_OUT'
Case RowExists('WO_MAT', CassetteID) EQ True$ Case RowExists('WO_MAT', CassetteID) EQ True$
// WO_MAT key // WO_MAT key
@ -88,6 +91,15 @@ Service CompletePackaging(CassetteID, OperatorID)
If Error_Services('NoError') then If Error_Services('NoError') then
Begin Case
Case BaggerIdentifier EQ 'L'
BaggerIdentifier = 'LeftBagger'
Case BaggerIdentifier EQ 'R'
BaggerIdentifier = 'RightBagger'
Case Otherwise$
BaggerIdentifier = ''
End Case
WONo = Field(WOMatKey, '*', 1, 1) WONo = Field(WOMatKey, '*', 1, 1)
CassNo = Field(WOMatKey, '*', 2, 1) CassNo = Field(WOMatKey, '*', 2, 1)
@ -105,7 +117,7 @@ Service CompletePackaging(CassetteID, OperatorID)
LocCd = 'PACK' LocCd = 'PACK'
UserID = OperatorID UserID = OperatorID
Tag = 'Packaging complete' Tag = 'Packaging complete'
ToolID = '' ToolID = BaggerIdentifier
WOMLParms = LogFile:@RM WOMLParms = LogFile:@RM
WOMLParms := LogDTM:@RM WOMLParms := LogDTM:@RM
@ -136,6 +148,14 @@ Service CompletePackaging(CassetteID, OperatorID)
// Add CassComp transaction to SAP queue // Add CassComp transaction to SAP queue
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X') SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
If SAPBatchNo EQ '' then SAP_Services('AddCassCompTransaction', WOMatKey) If SAPBatchNo EQ '' then SAP_Services('AddCassCompTransaction', WOMatKey)
Begin Case
Case CommentEntity = 'RDS'
CommentText = 'Packaging completed for RDS ' :CassetteID: ' by user ' : OperatorID
Rds_Services('AddComment', CassetteID, CommentText, OperatorID)
Case CommentEntity = 'WM_OUT'
CommentText = 'Packaging completed for WM_OUT ' :CassetteID: ' by user ' : OperatorID
Wm_Out_Services('AddComment', CassetteID, CommentText, OperatorID)
End Case
end end
end end
@ -235,8 +255,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
CtrlEntID = False$ ;* Control checked/unchecked CtrlEntID = False$ ;* Control checked/unchecked
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
//obj_WO_Mat('ToggleHold', Parms) obj_WO_Mat('ToggleHold', Parms)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
// Write fail packaging record in material log for first cassette ID // Write fail packaging record in material log for first cassette ID
LogDate = OCONV( Date(), 'D2/' ) LogDate = OCONV( Date(), 'D2/' )
@ -296,7 +315,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.') IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.')
// Add error to error stack // Add error to error stack
ErrorMessage = 'Lots do not match - operation cannot continue. '| ErrorMessage = 'Lots do not match – operation cannot continue. '|
: 'Lot has been put on hold - place lot on hold shelf and notify Supervisor, Lead, or Engineering' : 'Lot has been put on hold - place lot on hold shelf and notify Supervisor, Lead, or Engineering'
Error_Services('Add', ErrorMessage) Error_Services('Add', ErrorMessage)
end end
@ -325,11 +344,11 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
end end
Case ScanType EQ 'POLY' Case ScanType EQ 'POLY'
If ScanData[1, 5] EQ '1POLY' AND LEN(ScanData) EQ 5 then If ScanData[1, 5] EQ '1POLY' AND LEN(ScanData) EQ 6 And (ScanData[6,1] EQ 'L' OR ScanData[6,1] EQ 'R') then
// Valid Poly scan - has to be exact match // Valid Poly scan - has to be exact match
Response = ScanData[2, 999] Response = ScanData[2, 999]
end else end else
Error_Services('Add', 'Location does not equal POLY - operation cannot continue.') Error_Services('Add', 'Location does not equal POLY – operation cannot continue.')
end end
Case ScanType EQ 'TRILAM' Case ScanType EQ 'TRILAM'
@ -337,7 +356,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
// Valid Trilam scan - has to be exact match // Valid Trilam scan - has to be exact match
Response = ScanData[2, 999] Response = ScanData[2, 999]
end else end else
Error_Services('Add', 'Location does not equal TRILAM - operation cannot continue.') Error_Services('Add', 'Location does not equal TRILAM – operation cannot continue.')
end end
Case ScanType EQ 'CASSETTE_1' Case ScanType EQ 'CASSETTE_1'
@ -388,7 +407,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
HoldStatus = Xlate('WO_MAT', CassetteID, 'HOLD', 'X') HoldStatus = Xlate('WO_MAT', CassetteID, 'HOLD', 'X')
FQAComp = Signature_Services('FinalSigComp', CassetteID) FQAComp = Signature_Services('FinalSigComp', CassetteID)
If (HoldStatus EQ True$) then If (HoldStatus EQ True$) then
ErrorMessage = 'Lot is currently on hold - operation cannot continue. ' | ErrorMessage = 'Lot is currently on hold – operation cannot continue. ' |
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.' : 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
Error_Services('Add', ErrorMessage) Error_Services('Add', ErrorMessage)
end else If FQAComp NE True$ then end else If FQAComp NE True$ then
@ -411,7 +430,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
FQAComp = Epipro_Services('GetFinalQAStatus', CassetteID) FQAComp = Epipro_Services('GetFinalQAStatus', CassetteID)
LblCheckComp = Signature_Services('CheckQALabelStatus', WOMatKey) LblCheckComp = Signature_Services('CheckQALabelStatus', WOMatKey)
If (HoldStatus EQ True$) then If (HoldStatus EQ True$) then
ErrorMessage = 'Lot is currently on hold - operation cannot continue. ' | ErrorMessage = 'Lot is currently on hold – operation cannot continue. ' |
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.' : 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
Error_Services('Add', ErrorMessage) Error_Services('Add', ErrorMessage)
end else If FQAComp NE True$ then end else If FQAComp NE True$ then
@ -435,7 +454,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
WONo = Field(WOMatKey, '*', 1) WONo = Field(WOMatKey, '*', 1)
CassNo = Field(WOMatKey, '*', 2) CassNo = Field(WOMatKey, '*', 2)
If (HoldStatus EQ True$) then If (HoldStatus EQ True$) then
ErrorMessage = 'Lot is currently on hold - operation cannot continue.' | ErrorMessage = 'Lot is currently on hold – operation cannot continue.' |
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.' : 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
Error_Services('Add', ErrorMessage) Error_Services('Add', ErrorMessage)
end else If FQAComp NE True$ then end else If FQAComp NE True$ then
@ -569,8 +588,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
CtrlEntID = False$ ;* Control checked/unchecked CtrlEntID = False$ ;* Control checked/unchecked
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
* obj_WO_Mat('ToggleHold', Parms) obj_WO_Mat('ToggleHold', Parms)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
// Check if second cassette ID is a valid RDS or WM_OUT key // Check if second cassette ID is a valid RDS or WM_OUT key
Convert '.' to '*' in SecondCassID Convert '.' to '*' in SecondCassID
@ -628,8 +646,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
CtrlEntID = False$ ;* Control checked/unchecked CtrlEntID = False$ ;* Control checked/unchecked
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
//obj_WO_Mat('ToggleHold', Parms) obj_WO_Mat('ToggleHold', Parms)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
end end
// Send scan mismatch notification // Send scan mismatch notification

View File

@ -100,10 +100,15 @@ End Service
// Adds an EPP_COMMENT_NOTE, EPP_COMMENT_USER, and EPP_COMMENT_DATE // Adds an EPP_COMMENT_NOTE, EPP_COMMENT_USER, and EPP_COMMENT_DATE
// to a WM_OUT record. // to a WM_OUT record.
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
Service AddComment(WMOutNo, Comment) Service AddComment(WMOutNo, Comment, UsernameOpt)
WMOutRow = Database_Services('ReadDataRow', 'WM_OUT', WMOutNo) WMOutRow = Database_Services('ReadDataRow', 'WM_OUT', WMOutNo)
UserName = @USER4 UserName = @USER4
If Assigned(UsernameOpt) then
If UsernameOpt NE '' then
Username = UsernameOpt
end
end
CommentTime = Datetime() CommentTime = Datetime()
OldDates = WMOutRow<WM_OUT_EPP_COMMENT_DATE$> OldDates = WMOutRow<WM_OUT_EPP_COMMENT_DATE$>
@ -277,23 +282,12 @@ Service GetWMOData(WorkOrderNo, Columns, ShowGasGauge, WMOOverrideList)
@RECORD = Database_Services('ReadDataRow', 'WM_OUT', @ID) @RECORD = Database_Services('ReadDataRow', 'WM_OUT', @ID)
If Error_Services('NoError') then If Error_Services('NoError') then
For each Column in Columns using @VM setting vPos For each Column in Columns using @VM setting vPos
Begin Case Val = Calculate(Column)
Case Column EQ 'HOLD' Conv = Xlate('DICT.WM_OUT', Column, DICT_CONV$, 'X')
HoldStatus = Calculate(Column) If Conv NE '' then
If HoldStatus EQ True$ then Val = OConv(Val, Conv)
HoldStatus = 'On Hold' end
end else WMOList<fPos, vPos> = Val
HoldStatus = 'Off Hold'
end
WMOList<fPos, vPos> = HoldStatus
Case Otherwise$
Val = Calculate(Column)
Conv = Xlate('DICT.WM_OUT', Column, DICT_CONV$, 'X')
If Conv NE '' then
Val = OConv(Val, Conv)
end
WMOList<fPos, vPos> = Val
End Case
Next Column Next Column
end else end else
Error_Services('Add', 'Error reading WM_OUT Record ' : @ID : ' in the ' : Service : ' service.') Error_Services('Add', 'Error reading WM_OUT Record ' : @ID : ' in the ' : Service : ' service.')
@ -355,3 +349,4 @@ Service GetWaferMap(WMOKey)
end service end service