Modified WM_IN ZPL label generation to include a 2D datamatrix
barcode. Implemented 2D barcode verification in PTI and FQA Label Check Operations. Bug fixes Changed WMI 2D barcode to have 8 fields to keep code base simpler minor changes to error message verbiage Refactored code to use post log. Refactored code to not use multiple returns. Modfield input form fields to force upper case only. changed LSL password verification to be case insensitive to avoid barcode scanning issues when caps lock is on temporary change to allow 1D WMI scans at PTI while we exhaust current supply
This commit is contained in:
committed by
Stieber Daniel (CSC FI SPS MESLEO)
parent
2f6b376ece
commit
b2c9e500f8
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -572,7 +572,7 @@
|
||||
"<3,8>": "28",
|
||||
"<3,9>": "",
|
||||
"<3,10>": {
|
||||
"<3,10,1>": "0x5E000080",
|
||||
"<3,10,1>": "0x5E000088",
|
||||
"<3,10,2>": "0x200"
|
||||
},
|
||||
"<3,11>": {
|
||||
@ -739,7 +739,7 @@
|
||||
"<4,8>": "28",
|
||||
"<4,9>": "",
|
||||
"<4,10>": {
|
||||
"<4,10,1>": "0x5E000080",
|
||||
"<4,10,1>": "0x5E000088",
|
||||
"<4,10,2>": "0x200"
|
||||
},
|
||||
"<4,11>": {
|
||||
|
@ -9,7 +9,7 @@
|
||||
"<2>": "-2",
|
||||
"<3>": "-1",
|
||||
"<4>": "-1",
|
||||
"<5>": "16777215",
|
||||
"<5>": "-2",
|
||||
"<6>": {
|
||||
"<6,1>": {
|
||||
"<6,1,1>": "Tahoma",
|
||||
@ -76,11 +76,21 @@
|
||||
"<28>": "",
|
||||
"<29>": "0",
|
||||
"<30>": "0",
|
||||
"<31>": "0",
|
||||
"<31>": "1",
|
||||
"<32>": "0",
|
||||
"<33>": "0",
|
||||
"<34>": "16777215",
|
||||
"<35>": "16777215"
|
||||
"<34>": "-2",
|
||||
"<35>": "-2",
|
||||
"<36>": "",
|
||||
"<37>": "",
|
||||
"<38>": "",
|
||||
"<39>": "",
|
||||
"<40>": "-2",
|
||||
"<41>": "1000",
|
||||
"<42>": "",
|
||||
"<43>": "",
|
||||
"<44>": "",
|
||||
"<45>": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
"<2>": "-2",
|
||||
"<3>": "-1",
|
||||
"<4>": "-1",
|
||||
"<5>": "16777215",
|
||||
"<5>": "-2",
|
||||
"<6>": {
|
||||
"<6,1>": {
|
||||
"<6,1,1>": "Tahoma",
|
||||
@ -84,11 +84,21 @@
|
||||
"<28>": "",
|
||||
"<29>": "0",
|
||||
"<30>": "0",
|
||||
"<31>": "0",
|
||||
"<31>": "1",
|
||||
"<32>": "0",
|
||||
"<33>": "0",
|
||||
"<34>": "16777215",
|
||||
"<35>": "16777215"
|
||||
"<34>": "-2",
|
||||
"<35>": "-2",
|
||||
"<36>": "",
|
||||
"<37>": "",
|
||||
"<38>": "",
|
||||
"<39>": "",
|
||||
"<40>": "-2",
|
||||
"<41>": "1000",
|
||||
"<42>": "",
|
||||
"<43>": "",
|
||||
"<44>": "",
|
||||
"<45>": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
"<2>": "-2",
|
||||
"<3>": "-1",
|
||||
"<4>": "-1",
|
||||
"<5>": "16777215",
|
||||
"<5>": "-2",
|
||||
"<6>": {
|
||||
"<6,1>": {
|
||||
"<6,1,1>": "MS Sans Serif",
|
||||
@ -93,8 +93,21 @@
|
||||
"<28>": "",
|
||||
"<29>": "0",
|
||||
"<30>": "0",
|
||||
"<31>": "0",
|
||||
"<32>": "0"
|
||||
"<31>": "1",
|
||||
"<32>": "0",
|
||||
"<33>": "0",
|
||||
"<34>": "-2",
|
||||
"<35>": "-2",
|
||||
"<36>": "",
|
||||
"<37>": "",
|
||||
"<38>": "",
|
||||
"<39>": "",
|
||||
"<40>": "-2",
|
||||
"<41>": "1000",
|
||||
"<42>": "",
|
||||
"<43>": "",
|
||||
"<44>": "",
|
||||
"<45>": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -62,11 +62,8 @@ Options SCAN_TYPES_PTO = 'LABEL1', 'LABEL2'
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service ProcessFQAScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
|
||||
ErrorMsg = ''
|
||||
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 = ''
|
||||
@ -91,25 +88,31 @@ Service ProcessFQAScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Para
|
||||
ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot)
|
||||
If ValidLot NE True$ then
|
||||
// Add error to error stack
|
||||
ErrorMessage = 'Invalid Supplier Lot: ':ScanData
|
||||
Error_Services('Add', ErrorMessage)
|
||||
ErrorMsg = 'Invalid Supplier Lot: ':ScanData
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = ScanSubLot
|
||||
end
|
||||
If ErrorMsg EQ '' then Response = ScanSubLot
|
||||
|
||||
Case ScanType EQ 'CASSETTE1'
|
||||
|
||||
// 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.
|
||||
// Strip '1T', 'I', and 'O' prefixes.
|
||||
If ScanData[1, 2] EQ '1T' then
|
||||
ScanData[1, 2] = ''
|
||||
end else If ScanData[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then
|
||||
ScanData[1,1] = ''
|
||||
DelimCount = DCount(ScanData, '|')
|
||||
Begin Case
|
||||
Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') )
|
||||
ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.'
|
||||
Case (DelimCount NE 8)
|
||||
ErrorMsg = 'Invalid Lot Label Scan.'
|
||||
Case Otherwise$
|
||||
CassetteID = Field(ScanData, '|', 3)
|
||||
SeqNo = Field(ScanData, '|', 8)
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
If CassetteID[1, 2] EQ '1T' then
|
||||
CassetteID[1, 2] = ''
|
||||
end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then
|
||||
CassetteID[1,1] = ''
|
||||
end
|
||||
CassetteID = ScanData
|
||||
|
||||
If INDEX(CassetteID,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
@ -119,20 +122,14 @@ Service ProcessFQAScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Para
|
||||
WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X')
|
||||
end
|
||||
|
||||
ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now.
|
||||
ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType )
|
||||
|
||||
If RDSType EQ 'EPP' then
|
||||
LotDesc = 'EPP Lot '
|
||||
end else
|
||||
LotDesc = 'RDS Number '
|
||||
end
|
||||
|
||||
If ValidCassetteID EQ True$ then
|
||||
If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan
|
||||
Error_Services('Add', LotDesc:'Mismatch: ':CassetteID: ' does not match ': Param1)
|
||||
ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Param1
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
// Check if FQA is signed
|
||||
FQASigned = ''
|
||||
WorkOrdNo = Field(WOMatKey, '*', 1)
|
||||
@ -148,31 +145,78 @@ Service ProcessFQAScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Para
|
||||
|
||||
FQASigned = Signature_Services('CheckSignature', WOMatKey, QAStage)
|
||||
|
||||
IF NOT(FQASigned) THEN
|
||||
Error_Services('Add', 'FQA not signed for ':LotDesc:CassetteID: '!')
|
||||
END
|
||||
|
||||
end else
|
||||
Error_Services('Add', 'Invalid ':LotDesc:CassetteID)
|
||||
If NOT(FQASigned) then ErrorMsg = 'FQA not signed for ':CassetteID:'!'
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = CassetteID
|
||||
end else
|
||||
ErrorMsg = 'Invalid Lot ID ':CassetteID
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
Response = ''
|
||||
Response<1> = CassetteID
|
||||
Response<2> = SeqNo
|
||||
end
|
||||
end
|
||||
|
||||
Case ScanType EQ 'CASSETTE2'
|
||||
Response = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1', Param1)
|
||||
Response = ScanData
|
||||
// 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.
|
||||
// Strip '1T', 'I', and 'O' prefixes.
|
||||
|
||||
ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now.
|
||||
Cassette1ID = Param1
|
||||
Seq1No = Param2
|
||||
DelimCount = DCount(ScanData, '|')
|
||||
Begin Case
|
||||
Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') )
|
||||
ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.'
|
||||
Case (DelimCount NE 8)
|
||||
ErrorMsg = 'Invalid Lot Label Scan.'
|
||||
Case Otherwise$
|
||||
CassetteID = Field(ScanData, '|', 3)
|
||||
Seq2No = Field(ScanData, '|', 8)
|
||||
End Case
|
||||
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.')
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
If CassetteID[1, 2] EQ '1T' then
|
||||
CassetteID[1, 2] = ''
|
||||
end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then
|
||||
CassetteID[1,1] = ''
|
||||
end
|
||||
|
||||
If INDEX(CassetteID,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
end else
|
||||
RDSType = 'SIC'
|
||||
end
|
||||
|
||||
ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType )
|
||||
If ValidCassetteID EQ True$ then
|
||||
If Cassette1ID NE '' AND (CassetteID NE Cassette1ID) then ;*Cassette2 Scan
|
||||
ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Cassette1ID
|
||||
end
|
||||
If Seq1No EQ Seq2No then
|
||||
ErrorMsg = 'FQA Label verification failed due':CRLF$:'to operator double-scanning barcode.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Invalid RDS Number: ':CassetteID
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then Response = CassetteID
|
||||
end
|
||||
|
||||
End Case
|
||||
end else
|
||||
ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.'
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// ProcessPTIScanData
|
||||
//
|
||||
@ -183,11 +227,8 @@ end service
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service ProcessPTIScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
|
||||
ErrorMsg = ''
|
||||
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 = ''
|
||||
@ -198,39 +239,48 @@ Service ProcessPTIScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Para
|
||||
Begin Case
|
||||
|
||||
Case ScanType EQ 'SUPPLIER'
|
||||
|
||||
ValidLot = False$
|
||||
If ScanData[1, 2] EQ '2T' OR ScanData[1,2] EQ '1T' then ScanData[1, 2] = ''
|
||||
ScanSubLot = ScanData
|
||||
|
||||
CassetteID = Param1
|
||||
If INDEX(CassetteID,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
end else
|
||||
RDSType = 'SIC'
|
||||
end
|
||||
|
||||
ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot)
|
||||
If ValidLot NE True$ then
|
||||
// Add error to error stack
|
||||
ErrorMessage = 'Invalid Supplier Lot: ':ScanData
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = ScanSubLot
|
||||
end
|
||||
If ValidLot NE True$ then ErrorMsg = 'Invalid Supplier Lot: ':ScanData
|
||||
If ErrorMsg EQ '' then Response = ScanSubLot
|
||||
|
||||
Case ScanType EQ 'CASSETTE1'
|
||||
|
||||
debug
|
||||
// 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.
|
||||
// Strip '1T', 'I', and 'O' prefixes.
|
||||
If ScanData[1, 2] EQ '1T' then
|
||||
ScanData[1, 2] = ''
|
||||
end else If ScanData[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then
|
||||
ScanData[1,1] = ''
|
||||
end
|
||||
ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now.
|
||||
DelimCount = DCount(ScanData, '|')
|
||||
Begin Case
|
||||
Case (ScanData[1, 1] EQ 'I')
|
||||
! Temporary exception while we exhaust current WMI inventory on KIT racks that
|
||||
! do not have a 2D barcode.
|
||||
CassetteID = ScanData
|
||||
SeqNo = 'SEQ1'
|
||||
Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') )
|
||||
ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.'
|
||||
Case (DelimCount NE 8)
|
||||
ErrorMsg = 'Invalid Lot Label Scan.'
|
||||
Case Otherwise$
|
||||
CassetteID = Field(ScanData, '|', 3)
|
||||
SeqNo = Field(ScanData, '|', 8)
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
If CassetteID[1, 2] EQ '1T' then
|
||||
CassetteID[1, 2] = ''
|
||||
end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then
|
||||
CassetteID[1,1] = ''
|
||||
end
|
||||
|
||||
If INDEX(CassetteID,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
@ -238,37 +288,87 @@ Service ProcessPTIScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Para
|
||||
RDSType = 'SIC'
|
||||
end
|
||||
|
||||
ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now.
|
||||
ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType)
|
||||
If ValidCassetteID EQ True$ then
|
||||
If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan
|
||||
Error_Services('Add', 'RDS Mismatch: ':CassetteID: ' does not match ': Param1)
|
||||
If Param1 NE '' AND (ScanData NE Param1) then ;*Cassette2 Scan
|
||||
ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Param1
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'Invalid RDS Number: ':CassetteID)
|
||||
ErrorMsg = 'Invalid Cassette Number: ':CassetteID
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = CassetteID
|
||||
If ErrorMsg EQ '' then
|
||||
Response = ''
|
||||
Response<1> = CassetteID
|
||||
Response<2> = SeqNo
|
||||
end
|
||||
end
|
||||
|
||||
Case ScanType EQ 'CASSETTE2'
|
||||
Response = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1', Param1)
|
||||
Response = ScanData
|
||||
// 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.
|
||||
// Strip '1T', 'I', and 'O' prefixes.
|
||||
|
||||
ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now.
|
||||
Cassette1ID = Param1
|
||||
Seq1No = Param2
|
||||
|
||||
DelimCount = DCount(ScanData, '|')
|
||||
Begin Case
|
||||
Case (ScanData[1, 1] EQ 'I')
|
||||
! Temporary exception while we exhaust current WMI inventory on KIT racks that
|
||||
! do not have a 2D barcode.
|
||||
CassetteID = ScanData
|
||||
Seq2No = 'SEQ2'
|
||||
Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') )
|
||||
ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.'
|
||||
Case (DelimCount NE 8)
|
||||
ErrorMsg = 'Invalid Lot Label Scan.'
|
||||
Case Otherwise$
|
||||
CassetteID = Field(ScanData, '|', 3)
|
||||
Seq2No = Field(ScanData, '|', 8)
|
||||
End Case
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
If CassetteID[1, 2] EQ '1T' then
|
||||
CassetteID[1, 2] = ''
|
||||
end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then
|
||||
CassetteID[1,1] = ''
|
||||
end
|
||||
|
||||
If INDEX(CassetteID,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
end else
|
||||
RDSType = 'SIC'
|
||||
end
|
||||
|
||||
ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType)
|
||||
If ValidCassetteID EQ True$ then
|
||||
If Cassette1ID NE '' AND (CassetteID NE Cassette1ID) then ;*Cassette2 Scan
|
||||
ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Cassette1ID
|
||||
end
|
||||
If Seq1No EQ Seq2No then
|
||||
ErrorMsg = 'PTI Label verification failed due':CRLF$:'to operator double-scanning barcode.'
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Invalid Cassette Number: ':CassetteID
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then Response = CassetteID
|
||||
end
|
||||
|
||||
End Case
|
||||
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.')
|
||||
ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.'
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
|
||||
|
||||
end service
|
||||
|
||||
//to do before release of ProcessPTOScanData
|
||||
//1. prerequisite - waiting on newly printed (on/after 10/18/21) labels to make their way through warehouse, though not critical
|
||||
//2. showstopper - need barcode scanners to be able to scan 2D barcodes - currently only 1 such scanner (purchased for shipping but not deployed, given to Cheryl)
|
||||
//3. fix prod print routine to use SRP GetPrinter methods similar to what the Test_Print_SAP_Cass_Ship_Label does
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// ProcessPTOScanData
|
||||
//
|
||||
@ -282,11 +382,10 @@ end service
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
|
||||
ErrorMsg = ''
|
||||
Location = 'PTO Mat'
|
||||
If (ScanData NE '') then
|
||||
|
||||
If Error_Services('NoError') then
|
||||
|
||||
ColumnIndex = ''
|
||||
ColumnValue = ''
|
||||
Cassette1 = ''
|
||||
@ -295,7 +394,7 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
Begin Case
|
||||
|
||||
Case ScanType EQ 'LABEL1'
|
||||
//determine whether regular NEPP or EPP label scan
|
||||
// Determine whether regular NEPP or EPP label scan
|
||||
// NEPP should be data matrix scan and have 7 parts, RDS_No is the 3rd
|
||||
// EPP is 1D scan and will have the WMO number (e.g. 170369*1*48)
|
||||
// This should be a multi-part 2D datamatrix scan, so there should be a long string separated by pipe symbols.
|
||||
@ -303,18 +402,16 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
// and b) is currently is the proper state to do PTO transaction.
|
||||
// Strip any standardized prefixes (e.g. '1T', '2T', etc.) as necessary
|
||||
|
||||
// data from Label1 should have 8 parts (no matter type - Si or EPP), we're looking for the 3rd
|
||||
// Data from Label1 should have 8 parts (no matter type - Si or EPP), we're looking for the 3rd
|
||||
cnt = DCount(ScanData, '|')
|
||||
if cnt NE 8 then
|
||||
Cassette1 = 0
|
||||
Error_Services('Add', 'Invalid Lot Label Scan.')
|
||||
return
|
||||
ErrorMsg = 'Invalid Lot Label Scan.'
|
||||
end else
|
||||
//RDS should be 3rd position
|
||||
Cassette1 = Field(ScanData, '|', 3)
|
||||
end
|
||||
|
||||
//strip the prefix encoding
|
||||
If ErrorMsg EQ '' then
|
||||
// Strip the prefix encoding
|
||||
If Cassette1[1, 2] EQ '1T' OR Cassette1[1, 2] EQ '2T' then
|
||||
Cassette1[1, 2] = ''
|
||||
end else If Cassette1[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then
|
||||
@ -352,18 +449,16 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
If Rds_Services('IsPackaged', Cassette1, RDSType) EQ True$ then
|
||||
ValidCassette1 = True$
|
||||
end else
|
||||
Error_Services('Add', RDSType: ' RDS ':testCass1: ' has not completed packaging.')
|
||||
return
|
||||
ErrorMsg = RDSType: ' RDS ':testCass1: ' has not completed packaging.'
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', RDSType: ' RDS ':testCass1: ' is currently on hold.')
|
||||
return
|
||||
ErrorMsg = RDSType: ' RDS ':testCass1: ' is currently on hold.'
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', RDSType: ' RDS ' : testCass1 : ' is an invalid RDS number.')
|
||||
return
|
||||
ErrorMsg = RDSType: ' RDS ' : testCass1 : ' is an invalid RDS number.'
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
LastPTO = obj_WO_Mat('OutofPTO',WOMatKey)
|
||||
StepNo = 1
|
||||
IF LastPTO THEN
|
||||
@ -374,27 +469,26 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
OK = Msg(@WINDOW, '','YESNO','',MsgHead:@FM:MsgText)
|
||||
|
||||
IF NOT(OK) THEN
|
||||
Error_Services('Add', 'Scan Cancelled')
|
||||
RETURN
|
||||
ErrorMsg = 'Scan Cancelled'
|
||||
END else
|
||||
Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType)
|
||||
end
|
||||
end else
|
||||
Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType)
|
||||
END
|
||||
end
|
||||
|
||||
If ErrorMsg EQ '' then
|
||||
If ValidCassette1 EQ True$ then
|
||||
If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan
|
||||
Error_Services('Add', 'RDS Mismatch: ':Cassette1: ' does not match ': Param1)
|
||||
return
|
||||
ErrorMsg = 'RDS Mismatch: ':Cassette1: ' does not match ': Param1
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'Invalid RDS Number: ':Cassette1)
|
||||
return
|
||||
ErrorMsg = 'Invalid RDS Number: ':Cassette1
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = Cassette1
|
||||
If ErrorMsg EQ '' then Response = Cassette1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Case ScanType EQ 'LABEL2'
|
||||
@ -403,14 +497,15 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
// Tower is customer and RDS should be 2nd position
|
||||
Cassette2 = Field(ScanData, ';', 2)
|
||||
end else if cnt EQ 10 then
|
||||
//all other customers and RDS should be 3rd position
|
||||
// All other customers and RDS should be 3rd position
|
||||
Cassette2 = Field(ScanData, ';', 3)
|
||||
end else
|
||||
Error_Services('Add', 'Invalid Shipping Label Scan.')
|
||||
return
|
||||
ErrorMsg = 'Invalid Shipping Label Scan.'
|
||||
end
|
||||
|
||||
//strip the prefix encoding
|
||||
If ErrorMsg EQ '' then
|
||||
|
||||
// Strip the prefix encoding
|
||||
If Cassette2[1, 2] EQ '1T' OR Cassette2[1, 2] EQ '2T' then
|
||||
Cassette2[1, 2] = ''
|
||||
end else If Cassette2[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then
|
||||
@ -427,29 +522,25 @@ Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2)
|
||||
: 'RDS Label #2: ':testCass2:CRLF$
|
||||
|
||||
ScanMismatch = True$
|
||||
gosub ToggleLotHold
|
||||
Error_Services('Add', ErrorMsg)
|
||||
return
|
||||
GoSub ToggleLotHold
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
Response = Cassette2
|
||||
If ErrorMsg EQ '' then Response = Cassette2
|
||||
end
|
||||
|
||||
End Case
|
||||
|
||||
end
|
||||
end else
|
||||
Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.')
|
||||
ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.'
|
||||
end
|
||||
|
||||
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service SaveRecord(CassetteID, Warehouse, Location, OperatorID)
|
||||
|
||||
* Write success record in Material Log
|
||||
|
||||
// Write success record in Material Log
|
||||
RDSKey = CassetteID
|
||||
WMOKey = CassetteID
|
||||
Convert '.' to '*' in WMOKey
|
||||
@ -504,40 +595,33 @@ Service SaveRecord(CassetteID, Warehouse, Location, OperatorID)
|
||||
errCode = ''
|
||||
obj_WO_Mat_Log('Create',WOMLParms)
|
||||
|
||||
* aiParms = 'WO_MAT':@RM:WONo:@RM:CassNo:@RM:WhCd:'*':LocCd:@RM:Action:@RM:InvDTM:@RM:UserID:@RM:Tag:@RM:ToolID
|
||||
* obj_WO_Mat('AddInvTrans', aiParms)
|
||||
|
||||
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
swap @SVM with CRLF$ in errCode
|
||||
ErrorMsg = 'Errors calling obj_WO_Mat_Log("Create"). Error code: ':errCode:', Len(errCode)=':Len(errCode):'. FI has been notified.'
|
||||
If Get_Status(errCode) then
|
||||
Swap @SVM with CRLF$ in errCode
|
||||
ErrorMsg = 'Errors calling obj_WO_Mat_Log("Create"). Error code: ':errCode
|
||||
Error_Services('Add', ErrorMsg)
|
||||
if LEN(errCode) > 5 then
|
||||
Gosub SendErrorNotification
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
SendErrorNotification:
|
||||
|
||||
Recipients = XLATE('NOTIFICATION','FI_SUPPORT',NOTIFICATION_USER_ID$,'X')
|
||||
Recipients = ''
|
||||
SentFrom = 'MATERIAL_MOVEMENT_SERVICES'
|
||||
Subject = 'ERROR CALLING OBJ_WO_MAT '
|
||||
Message = 'Error occured while attempting to write WO_MAT_LOG at ':Location:' Scan':CRLF$:ErrorMsg
|
||||
AttachKey = WoMatKey
|
||||
AttachWindow = ''
|
||||
SendToGroup = ''
|
||||
SendToGroup = 'FI_SUPPORT'
|
||||
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create',Parms)
|
||||
|
||||
return
|
||||
|
||||
|
||||
ToggleLotHold:
|
||||
|
||||
If ScanMismatch EQ True$ then
|
||||
@ -578,22 +662,26 @@ ToggleLotHold:
|
||||
// To do: Throw Error
|
||||
End Case
|
||||
Convert '*' to '.' in Cassette1
|
||||
|
||||
HoldEntityID = Cassette1
|
||||
|
||||
// Manually add work order material log entry
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
NumTimestamps = Dcount(WOMatRec<WO_MAT_INV_WH$>, @VM)
|
||||
NewEntryPos = NumTimestamps + 1
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_WH$, NewEntryPos, 0, WhCd)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_LOCATION$, NewEntryPos, 0, LocCd)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_ACTION$, NewEntryPos, 0, Action)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_DTM$, NewEntryPos, 0, LogDTM)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_USER$, NewEntryPos, 0, UserID)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TAG$, NewEntryPos, 0, Tags)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TOOL_ID$, NewEntryPos, 0, ToolID)
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
||||
WOMLParms = LogFile:@RM
|
||||
WOMLParms := LogDTM:@RM
|
||||
WOMLParms := Action:@RM
|
||||
WOMLParms := WhCd:@RM
|
||||
WOMLParms := LocCd:@RM
|
||||
WOMLParms := WONo:@RM
|
||||
WOMLParms := CassNo:@RM
|
||||
WOMLParms := UserID:@RM
|
||||
WOMLParms := Tags:@RM
|
||||
WOMLParms := ToolID
|
||||
Set_Status(0)
|
||||
errCode = ''
|
||||
obj_WO_Mat_Log('Create',WOMLParms)
|
||||
If Get_Status(errCode) then
|
||||
Swap @SVM with CRLF$ in errCode
|
||||
ErrorMsg = 'Error calling obj_WO_Mat_Log("Create"). Error code: ':errCode
|
||||
Gosub SendErrorNotification
|
||||
end
|
||||
|
||||
// Place first cassette on hold
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
@ -637,24 +725,26 @@ ToggleLotHold:
|
||||
ToolID = ''
|
||||
HoldEntityID = Cassette2
|
||||
|
||||
// Manually add work order material log entry
|
||||
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
NumTimestamps = Dcount(WOMatRec<WO_MAT_INV_WH$>, @VM)
|
||||
NewEntryPos = NumTimestamps + 1
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_WH$, NewEntryPos, 0, WhCd)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_LOCATION$, NewEntryPos, 0, LocCd)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_ACTION$, NewEntryPos, 0, Action)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_DTM$, NewEntryPos, 0, LogDTM)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_USER$, NewEntryPos, 0, UserID)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TAG$, NewEntryPos, 0, Tags)
|
||||
WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TOOL_ID$, NewEntryPos, 0, ToolID)
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
||||
|
||||
//pause before putting second cassette on hold
|
||||
WOMLParms = LogFile:@RM
|
||||
WOMLParms := LogDTM:@RM
|
||||
WOMLParms := Action:@RM
|
||||
WOMLParms := WhCd:@RM
|
||||
WOMLParms := LocCd:@RM
|
||||
WOMLParms := WONo:@RM
|
||||
WOMLParms := CassNo:@RM
|
||||
WOMLParms := UserID:@RM
|
||||
WOMLParms := Tags:@RM
|
||||
WOMLParms := ToolID
|
||||
Set_Status(0)
|
||||
errCode = ''
|
||||
obj_WO_Mat_Log('Create',WOMLParms)
|
||||
If Get_Status(errCode) then
|
||||
Swap @SVM with CRLF$ in errCode
|
||||
ErrorMsg = 'Error calling obj_WO_Mat_Log("Create"). Error code: ':errCode
|
||||
Gosub SendErrorNotification
|
||||
end
|
||||
|
||||
// Place second cassette on hold
|
||||
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
CtrlEntID = False$ ;* Control checked/unchecked
|
||||
OriginFlag = 'PTO' ;* Flag to indicate a hold initiated from the packaging form
|
||||
@ -662,7 +752,8 @@ ToggleLotHold:
|
||||
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||
end
|
||||
|
||||
gosub SendPTOMismatchNotification
|
||||
GoSub SendPTOMismatchNotification
|
||||
|
||||
errCode = ''
|
||||
IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.')
|
||||
Error_Services('Add', 'Cassette scans did not match! Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.')
|
||||
@ -671,6 +762,7 @@ ToggleLotHold:
|
||||
|
||||
return
|
||||
|
||||
|
||||
SendPTOMismatchNotification:
|
||||
|
||||
// Send scan mismatch notification
|
||||
|
@ -48,8 +48,6 @@ Declare subroutine Obj_Wo_Mat_Log, Errmsg, Utility, SRP_Show_Window, Material_Mo
|
||||
Declare function Get_Property, Send_Message, SendMessage, Material_Movement_Services, Error_Services,
|
||||
Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Message_Box
|
||||
|
||||
*Subclass = @Window : '.OLE_SUBCLASS'
|
||||
|
||||
// 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
|
||||
@ -69,7 +67,6 @@ end
|
||||
|
||||
Return EventFlow or 1
|
||||
|
||||
*global
|
||||
ScanField = ''
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -78,27 +75,18 @@ ScanField = ''
|
||||
|
||||
Event WINDOW.CREATE(CreateParam)
|
||||
|
||||
* CurrVer = Xlate('APP_INFO', 'LSL2_VERSION', '', 'X')
|
||||
* UserVer = Xlate('LSL_USERS', @User4, 'LSL2_VERSION', 'X')
|
||||
* If UserVer NE CurrVer then
|
||||
* // Error message and close form
|
||||
* ErrMsg = 'OpenInsight Version Error':@FM:'You are running an outdated version of OpenInsight and cannot release material until you restart your session.'
|
||||
* Msg(@Window, '', 'OK', '', ErrMsg)
|
||||
* Post_Event(@Window, 'CLOSE')
|
||||
* end else
|
||||
GoSub SetupOLEControls
|
||||
GoSub ResetForm
|
||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
||||
MsgStruct = ''
|
||||
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
|
||||
* end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl)
|
||||
*get count of unprocessed records
|
||||
|
||||
*get count of unprocessed records
|
||||
allCompleted = True$
|
||||
resp = ''
|
||||
Data = Get_Property(EditTable$, "OLE.ARRAY")
|
||||
@ -120,10 +108,12 @@ Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl)
|
||||
GoSub ResetForm
|
||||
end
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event OLE_BTN_SAVE.OnClick(Point, Button, Shift, Ctrl)
|
||||
|
||||
*check for unfinished scan
|
||||
F1 = Get_Property(Cassette1$, 'TEXT')
|
||||
F2 = Get_Property(Cassette2$, 'TEXT')
|
||||
@ -137,17 +127,22 @@ Event OLE_BTN_SAVE.OnClick(Point, Button, Shift, Ctrl)
|
||||
Location = 'PTI'
|
||||
Gosub SaveRecords
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
|
||||
ScanField = 'Cassette1'
|
||||
If Flag EQ 1 then
|
||||
ScanData = Get_Property(CtrlEntID, 'TEXT')
|
||||
If ScanData NE '' then
|
||||
ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE1')
|
||||
If Error_Services('NoError') then
|
||||
Set_Property(CtrlEntID, 'TEXT', ScanData)
|
||||
RDSNo = ScanData<1>
|
||||
SeqNo = ScanData<2>
|
||||
Set_Property(Cassette1$, '@SEQNO', SeqNo)
|
||||
Set_Property(CtrlEntID, 'TEXT', RDSNo)
|
||||
Set_Property(Cassette2$, 'ENABLED', True$)
|
||||
Set_Property(Cassette2$, 'FOCUS', True$)
|
||||
Set_Property(CtrlEntID, 'ENABLED', False$)
|
||||
@ -159,23 +154,25 @@ Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
|
||||
ScanField = 'Cassette2'
|
||||
If Flag EQ 1 then
|
||||
ScanData = Get_Property(CtrlEntID, 'TEXT')
|
||||
Cass1 = Get_Property(Cassette1$, 'TEXT')
|
||||
Seq1No = Get_Property(Cassette1$, '@SEQNO')
|
||||
retVal = Set_Property(@window, '@IsEpp', False$)
|
||||
If ScanData[1,1] = 'O' OR ScanData[1,3] = '1TO' then
|
||||
If Index(ScanData, '.', 1) then
|
||||
retVal = Set_Property(@window, '@IsEpp', True$)
|
||||
end
|
||||
If ScanData NE '' then
|
||||
ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE2', Cass1)
|
||||
ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE2', Cass1, Seq1No)
|
||||
If Error_Services('NoError') then
|
||||
* IF EPP, prepopulate lot and just validate
|
||||
|
||||
If Get_Property(@window, '@IsEpp') EQ True$ then
|
||||
Set_Property(CtrlEntID, 'TEXT', ScanData)
|
||||
Set_Property(Supplier$, 'TEXT', 'EpiPRO')
|
||||
@ -198,10 +195,12 @@ Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_SUPPLIER_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
|
||||
ScanField = 'Lot'
|
||||
If Flag EQ 1 then
|
||||
Cassette1 = Get_Property(Cassette1$, 'TEXT')
|
||||
@ -219,6 +218,7 @@ Event EDL_SUPPLIER_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
|
||||
@ -227,6 +227,7 @@ end event
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
SaveRecords:
|
||||
|
||||
*iterate thround all records in the grid, saving them and updating the status and location
|
||||
Data = Get_Property(EditTable$, "OLE.ARRAY")
|
||||
cnt = count(Data<1>, @VM) + (Data<1># '')
|
||||
@ -274,6 +275,7 @@ return
|
||||
|
||||
|
||||
ValidateGrid:
|
||||
|
||||
F1 = Get_Property(Cassette1$, 'TEXT')
|
||||
F2 = Get_Property(Cassette2$, 'TEXT')
|
||||
F3 = Get_Property(Supplier$, 'TEXT')
|
||||
@ -285,11 +287,6 @@ ValidateGrid:
|
||||
result = 1
|
||||
end
|
||||
end
|
||||
* if ScanField = 'Lot' then ; * do not look for duplicates
|
||||
* result = 0
|
||||
* end else
|
||||
* result = InList(Data, ScanData, @VM) OR InList(Data, ScanData, @FM)
|
||||
* end
|
||||
|
||||
If INDEX(F1,'.',2) then
|
||||
RDSType = 'EPP'
|
||||
@ -346,12 +343,14 @@ return
|
||||
|
||||
|
||||
DisableFormControls:
|
||||
|
||||
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'TEXT', '')
|
||||
Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'TEXT', '')
|
||||
Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'TEXT', '')
|
||||
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'ENABLED', False$)
|
||||
Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'ENABLED', False$)
|
||||
Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'ENABLED', False$)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@ -396,6 +395,8 @@ SetupOLEControls:
|
||||
SelStyleArray = 'Black' : @VM : OI_HOT_BLUE$ : ' L=70' : @FM : 'Black' : @VM : OI_HOT_BLUE$
|
||||
Set_Property(EditTable$, 'OLE.SelectionStyle', SelStyleArray) ; // Automatically highlight the current row with one color and highlight the current row with another color.
|
||||
|
||||
Set_Property(@Window:'.OLE_BTN_CLEAR', 'OLE.Style', 'STD')
|
||||
|
||||
return
|
||||
|
||||
|
||||
@ -414,5 +415,7 @@ ResetForm:
|
||||
cnt = count(Data<1>, @VM) + (Data<1># '')
|
||||
Set_Property(@Window:'.OLE_BTN_SAVE', 'ENABLED', cnt GE 1)
|
||||
Set_Property(EditTable$, 'OLE.CellColors[ALL;All]', 'Auto':@FM:'Auto')
|
||||
Set_Property(Cassette1$, '@SEQNO', '')
|
||||
|
||||
return
|
||||
|
||||
|
@ -48,8 +48,6 @@ Declare subroutine Obj_Wo_Mat_Log, Errmsg, Utility, SRP_Show_Window, Material_Mo
|
||||
Declare function Get_Property, Send_Message, SendMessage, Material_Movement_Services, Error_Services,
|
||||
Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Message_Box
|
||||
|
||||
*Subclass = @Window : '.OLE_SUBCLASS'
|
||||
|
||||
// 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
|
||||
@ -69,7 +67,6 @@ end
|
||||
|
||||
Return EventFlow or 1
|
||||
|
||||
*global
|
||||
ScanField = ''
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -151,7 +148,10 @@ Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
If ScanData NE '' then
|
||||
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1')
|
||||
If Error_Services('NoError') then
|
||||
Set_Property(CtrlEntID, 'TEXT', ScanData)
|
||||
RDSNo = ScanData<1>
|
||||
SeqNo = ScanData<2>
|
||||
Set_Property(Cassette1$, '@SEQNO', SeqNo)
|
||||
Set_Property(CtrlEntID, 'TEXT', RDSNo)
|
||||
Set_Property(Cassette2$, 'ENABLED', True$)
|
||||
Set_Property(Cassette2$, 'FOCUS', True$)
|
||||
Set_Property(CtrlEntID, 'ENABLED', False$)
|
||||
@ -174,8 +174,9 @@ Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
If Flag EQ 1 then
|
||||
ScanData = Get_Property(CtrlEntID, 'TEXT')
|
||||
Cass1 = Get_Property(Cassette1$, 'TEXT')
|
||||
Seq1No = Get_Property(Cassette1$, '@SEQNO')
|
||||
If ScanData NE '' then
|
||||
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1)
|
||||
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1, Seq1No)
|
||||
If Error_Services('NoError') then
|
||||
Set_Property(CtrlEntID, 'TEXT', ScanData)
|
||||
Gosub ValidateGrid
|
||||
@ -379,6 +380,9 @@ SetupOLEControls:
|
||||
SelStyleArray = 'Black' : @VM : OI_HOT_BLUE$ : ' L=70' : @FM : 'Black' : @VM : OI_HOT_BLUE$
|
||||
Set_Property(EditTable$, 'OLE.SelectionStyle', SelStyleArray) ; // Automatically highlight the current row with one color and highlight the current row with another color.
|
||||
|
||||
Set_Property(@Window:'.OLE_BTN_CLEAR', 'OLE.Style', 'STD')
|
||||
Set_Property(@Window:'.OLE_BTN_SAVE', 'OLE.Style', 'STD')
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
@ -15,6 +15,7 @@ $INSERT EPI_PART_EQUATES
|
||||
$INSERT COMPANY_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
$INSERT PRS_STAGE_EQUATES
|
||||
$INSERT UNIT_EQUATES
|
||||
|
||||
DECLARE FUNCTION FIELDCOUNT, MSG, Key_Sort, Get_Printer, SRP_Math, Set_Printer, Utility, obj_Install, Printer_Select, obj_Vendor_Code, Direct_Print, Environment_Services
|
||||
DECLARE SUBROUTINE Extract_Si_Keys, Update_Index, ErrMsg
|
||||
@ -48,6 +49,8 @@ EQU PS$RECIPE TO 3
|
||||
EQU PS$FREQ TO 4
|
||||
EQU PS$PATTERN TO 11
|
||||
|
||||
Main:
|
||||
|
||||
IF NOT(ASSIGNED(RdsIds)) THEN RdsIds = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
|
||||
IF NOT(ASSIGNED(MultiStep)) THEN MultiStep = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
|
||||
|
||||
@ -77,7 +80,7 @@ If PrintPath NE '' then
|
||||
stat = Direct_Print('START', PrintPath<1>, '', '')
|
||||
end
|
||||
|
||||
IF stat < 0 THEN GOTO OIPrint_Error
|
||||
IF stat GE 0 THEN
|
||||
|
||||
EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch
|
||||
|
||||
@ -158,9 +161,17 @@ If PrintPath NE '' then
|
||||
CustNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_NO$,'X')
|
||||
Void = UTILITY( 'CURSOR', 'A' )
|
||||
END
|
||||
end
|
||||
|
||||
GoSub EndPrint
|
||||
|
||||
end
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
* * * * * *
|
||||
OIPrint_Error:
|
||||
EndPrint:
|
||||
* * * * * *
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
@ -168,9 +179,9 @@ If PrintPath NE '' then
|
||||
end else
|
||||
stat = Direct_Print('STOP')
|
||||
end
|
||||
end
|
||||
|
||||
RETURN
|
||||
return
|
||||
|
||||
|
||||
* * * * * * * * * * * * Local Subroutines * * * * * * * * * * * *
|
||||
|
||||
@ -246,9 +257,7 @@ PrintCleanRoomLabels:
|
||||
PSNIds = XLATE( 'RDS', RdsIds, rds_prod_spec_id$, 'X' )
|
||||
SpecType = OCONV( XLATE( 'RDS', RdsIds, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' )
|
||||
SubPartNum = XLATE( 'RDS', RdsIds, 'SUB_PART_NUM', 'X' )
|
||||
|
||||
RecipeInfo = XLATE( 'RECIPE', RecipeIDS, 'RECIPE_NAME_NO', 'X' )
|
||||
|
||||
ThickVar = XLATE( 'PROD_SPEC', PSNIds, 'THICK_MEASURE_L1', 'X' )
|
||||
ResVar = XLATE( 'PROD_SPEC', PSNIds, 'RES_MEASURE_L1', 'X' )
|
||||
ConVar = XLATE( 'PROD_SPEC', PSNIds, 'CON_MEASURE_L1', 'X' )
|
||||
@ -618,16 +627,16 @@ PrintCleanRoomLabels:
|
||||
END
|
||||
|
||||
swap '~' with fmt( ' ', 'L#2' ) in PrintThickPrintVar
|
||||
swap 'æm' with 'um' in PrintThickTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintThickTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets
|
||||
swap 'Â' with 'A' in PrintThickTargets
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintThickTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets
|
||||
swap UNIT_A$ with 'A' in PrintThickTargets
|
||||
|
||||
swap '~' with fmt( ' ', 'L#2' ) in PrintResPrintVar
|
||||
swap 'æm' with 'um' in PrintResTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintResTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintResTargets
|
||||
swap 'Â' with 'A' in PrintResTargets
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintResTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets
|
||||
swap UNIT_A$ with 'A' in PrintResTargets
|
||||
|
||||
//only print cheat sheet label on cassette #1
|
||||
IF CassNo EQ 1 then
|
||||
@ -644,6 +653,7 @@ RETURN
|
||||
* * * * * * *
|
||||
PrintLabel:
|
||||
* * * * * * *
|
||||
|
||||
* Standard RDS Label print method
|
||||
IF PrintSpecType EQ 'Production' THEN PrintSpecType = 'Prod'
|
||||
IF PrintSpecType EQ 'Pre-Production' THEN PrintSpecType = 'Pre'
|
||||
@ -659,7 +669,7 @@ PrintLabel:
|
||||
PrintQARecipe = FIELD(PrintRecipe, @VM, 1)
|
||||
PrintCompany = PrintCompany[1,32]
|
||||
|
||||
//looping instead of using ^PQ2 since I have to set sequential key in 2D barcode
|
||||
// Looping instead of using ^PQ2 since I have to set sequential key in 2D barcode
|
||||
|
||||
Str = ''
|
||||
For cnt = 1 to 2
|
||||
@ -668,7 +678,7 @@ For cnt = 1 to 2
|
||||
Str := '^PR1' ;* Print speed 2 inches per second
|
||||
Str := '^LL406' ;* Label length @203 dpi
|
||||
Str := '^PW900'
|
||||
Str := '^MD0' ;* Media darkness
|
||||
Str := '^MD5' ;* Media darkness
|
||||
Str := '^MMT' ;* Media mode t=tear off mode
|
||||
*Str := '^PQ2' ;* Print 2 labels for each pass through here
|
||||
|
||||
@ -783,7 +793,6 @@ PrintWOLabel:
|
||||
|
||||
END ELSE
|
||||
Str:= '^FO70,30^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$
|
||||
|
||||
END
|
||||
|
||||
CustName = XLATE( 'COMPANY', CustNo, 'ABBREV_OR_CO_NAME', 'X' )
|
||||
@ -801,6 +810,7 @@ PrintWOLabel:
|
||||
end else
|
||||
stat = Direct_Print('PRINT', Str)
|
||||
end
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
@ -14,10 +14,11 @@ $INSERT ORDER_EQU
|
||||
$INSERT ORDER_DET_EQU
|
||||
$INSERT WM_IN_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
$insert UNIT_EQUATES
|
||||
|
||||
DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount, Popup
|
||||
DECLARE FUNCTION MemberOF, Direct_Print, Environment_Services
|
||||
DECLARE SUBROUTINE Btree.Extract, ErrMsg
|
||||
DECLARE SUBROUTINE Btree.Extract, ErrMsg, SRP_Set_Clipboard
|
||||
|
||||
* 5/18/2006 - Cloned from Print_Cass_Labels
|
||||
|
||||
@ -35,6 +36,8 @@ EQU PS$RECIPE TO 3
|
||||
EQU PS$FREQ TO 4
|
||||
EQU PS$PATTERN TO 11
|
||||
|
||||
Main:
|
||||
|
||||
IF NOT(ASSIGNED(WONo)) THEN RETURN
|
||||
IF WONo = '' THEN RETURN
|
||||
|
||||
@ -61,7 +64,7 @@ end else
|
||||
stat = Direct_Print('START', PrintPath<1>, '', '')
|
||||
end
|
||||
|
||||
IF stat < 0 THEN GOTO OIPrint_Error
|
||||
IF stat GE 0 THEN
|
||||
|
||||
CLOrientation = '' ;* used for printing on cleanroom labels
|
||||
|
||||
@ -77,6 +80,7 @@ IF WMInKeys = '' THEN RETURN
|
||||
TypeOver = ''
|
||||
TypeOver<PDISPLAY$> = WMInKeys
|
||||
TypeOver<PTITLE$> = 'WM_IN - Inbound Cassettes'
|
||||
TypeOver<PSHOWGAUGE$> = True$
|
||||
|
||||
WMInKeys = Popup(@WINDOW,TypeOver,'PRINT_WMI_LABELS')
|
||||
CONVERT '.' TO '*' IN WMInKeys
|
||||
@ -126,42 +130,30 @@ IF Captive THEN
|
||||
NEXT I
|
||||
END
|
||||
|
||||
|
||||
EpiPartNo = WORec<WO_LOG_EPI_PART_NO$>
|
||||
CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X')
|
||||
|
||||
ShipBagReq = CustEpiPartRec<CUST_EPI_PART_SHIP_BAG_REQ$>
|
||||
|
||||
PreSurfscan = PSRec<PROD_SPEC_PRE_SURFSCAN$>
|
||||
FirstSurfscan = PSRec<PROD_SPEC_FIRST_SURFSCAN$>
|
||||
PostCleanSurfScan = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN$>
|
||||
|
||||
SubPreClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_PRE_CLEAN', 'X' )
|
||||
SubPostClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_POST_CLEAN', 'X' )
|
||||
|
||||
PreCleanTool = SubPreClean ;* Temporary for 2x4 -> 4x4 conversion
|
||||
PostCleanTool = SubPostClean
|
||||
|
||||
PreAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'PRE_AKRION_RECIPE', 'X' )
|
||||
PostAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'POST_AKRION_RECIPE', 'X' )
|
||||
|
||||
RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' )
|
||||
RecipeName = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NAME_L1', 'X' )
|
||||
|
||||
SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' )
|
||||
SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SUB_OXIDE_STRIP', 'X' ), 'B' )
|
||||
ThickTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'THICK_TARGET_ALL', 'X' ), 'MD3' )
|
||||
ResTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'RES_TARGET_ALL', 'X' ), 'MD3' )
|
||||
|
||||
ThickUnit = XLATE( 'PROD_SPEC', PSNo, 'THICK_UNITS_ALL', 'X' )
|
||||
ResUnit = XLATE( 'PROD_SPEC', PSNo , 'RES_UNITS_ALL', 'X' )
|
||||
|
||||
Dopant = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' )
|
||||
RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO', 'X' )
|
||||
RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' )
|
||||
|
||||
CleaningReqs = ''
|
||||
|
||||
ThickCnt = FIELDCOUNT( ThickTarget<1>, @VM )
|
||||
PrintThickTargets = ''
|
||||
FOR J = 1 TO ThickCnt
|
||||
@ -192,16 +184,15 @@ END
|
||||
|
||||
PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec )
|
||||
|
||||
swap 'æm' with 'um' in PrintThickTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintThickTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets
|
||||
swap '' with 'A' in PrintThickTargets
|
||||
|
||||
swap 'æm' with 'um' in PrintResTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintResTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintResTargets
|
||||
swap '' with 'A' in PrintResTargets
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintThickTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets
|
||||
swap UNIT_A$ with 'A' in PrintThickTargets
|
||||
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintResTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets
|
||||
swap UNIT_A$ with 'A' in PrintResTargets
|
||||
|
||||
WMIBoxCnt = COUNT( WMInKeys, @VM ) + (WMInKeys NE '')
|
||||
|
||||
@ -209,7 +200,6 @@ GOSUB PrintCleanRoomLabels
|
||||
|
||||
GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14
|
||||
|
||||
|
||||
* Check to see if they get the monitor wafers based on the PSN
|
||||
|
||||
MonitorWafer = CustEpiPartRec<CUST_EPI_PART_MONITOR_WAFER_LABEL$>
|
||||
@ -218,10 +208,8 @@ IF MonitorWafer THEN
|
||||
GOSUB PrintMonitorLabels
|
||||
END
|
||||
|
||||
|
||||
* Check to see if they get a surfscan label
|
||||
|
||||
|
||||
IF (CustNo = '6874') OR (CustNo = '6593') ELSE
|
||||
IF ( PreSurfscan ) or ( FirstSurfscan ) or ( PostCleanSurfscan ) THEN
|
||||
*GOSUB PrintSurfscanLabels
|
||||
@ -229,9 +217,18 @@ IF (CustNo = '6874') OR (CustNo = '6593') ELSE
|
||||
END
|
||||
Void = UTILITY( 'CURSOR', 'A' )
|
||||
|
||||
end
|
||||
|
||||
GoSub EndPrint
|
||||
|
||||
Return
|
||||
|
||||
|
||||
* * * * * * * * * * * * L o c a l S u b r o u t i n e s * * * * * * * * * * * *
|
||||
|
||||
|
||||
* * * * * *
|
||||
OIPrint_Error:
|
||||
EndPrint:
|
||||
* * * * * *
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
@ -240,20 +237,16 @@ end else
|
||||
stat = Direct_Print('STOP')
|
||||
end
|
||||
|
||||
RETURN
|
||||
return
|
||||
|
||||
|
||||
* * * * * * * * * * * *` L o c a l S u b r o u t i n e s * * * * * * * * * * * *
|
||||
|
||||
* * * * * * *
|
||||
PrintCleanRoomLabels:
|
||||
* * * * * * *
|
||||
|
||||
|
||||
FOR I = 1 TO WMIBoxCnt
|
||||
|
||||
WMInKey = WMInKeys<1,I>
|
||||
|
||||
PrintWMInKey = WMInKey
|
||||
CONVERT '*' TO '.' IN PrintWMInKey
|
||||
|
||||
@ -267,6 +260,7 @@ FOR I = 1 TO WMIBoxCnt
|
||||
CustPartNo = WOMatRec<WO_MAT_CUST_PART_NO$>
|
||||
SubPartNo = WOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
OrderItem = WOMatRec<WO_MAT_ORDER_ITEM$>
|
||||
Vendor = WOMatRec<WO_MAT_SUB_VEND_CD$>
|
||||
|
||||
OrderDetKey = WORec<WO_LOG_ORDER_NO$>:'*':OrderItem
|
||||
|
||||
@ -298,15 +292,16 @@ RETURN
|
||||
PrintLabel:
|
||||
* * * * * * *
|
||||
|
||||
Str = ''
|
||||
For cnt = 1 to 2
|
||||
|
||||
Str = '^XA'
|
||||
Str := '^XA'
|
||||
Str := '^LH0,0'
|
||||
Str := '^PR2' ;* Print speed 2 inches per second
|
||||
Str := '^LL406' ;* Label length @203 dpi
|
||||
Str := '^PW900'
|
||||
Str := '^MD15' ;* Media darkness
|
||||
Str := '^MD8' ;* Media darkness
|
||||
Str := '^MMT' ;* Media mode t=tear off mode
|
||||
Str := '^PQ2' ;* Print 2 labels for each pass through here
|
||||
|
||||
Str := '^FO15,15^GB795,398,3,B^FS' ;* Border
|
||||
|
||||
@ -405,6 +400,7 @@ NEXT M
|
||||
****** Separator bar
|
||||
Str := '^FO15,373^GB795,1^FS'
|
||||
|
||||
|
||||
****** Fourteenth Line
|
||||
Str := '^FO30,385^AC,18^FDProd Spec No:^FS':CRLF$
|
||||
Str := '^FO190,385^A0,25^FD':PSNo:'^FS':CRLF$
|
||||
@ -418,8 +414,14 @@ end
|
||||
Str := '^FO275,385^AC,18^FDSpec Type:^FS':CRLF$
|
||||
Str := '^FO400,385^A0,25^FD':SpecType:'^FS':CRLF$
|
||||
|
||||
****** Data Matrix barcode
|
||||
Str := '^FO720,280^CI28':CRLF$
|
||||
Str := '^BXN,2,200^FDP':PartNo:'|S':SubPartNo:'|1T':PrintWMInKey:'|2T':LotNo:'|':PSNo:'|Q':WfrQty:'|1V':Vendor:'|SEQ':Cnt:'^FS':CRLF$
|
||||
|
||||
Str:= '^XZ'
|
||||
|
||||
Next
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
stat = Set_Printer('TEXT',Str)
|
||||
end else
|
||||
@ -901,8 +903,6 @@ end
|
||||
|
||||
RETURN
|
||||
|
||||
***************************************************
|
||||
|
||||
|
||||
* * * * * * *
|
||||
PrintWOLabels:
|
||||
@ -951,7 +951,7 @@ PrintMonitorLabels:
|
||||
* * * * * * *
|
||||
|
||||
FOR I = 1 TO WMIBoxCnt
|
||||
|
||||
RDSIds = ''
|
||||
Str = '^XA^CFD'
|
||||
Str := '^LH0,0'
|
||||
Str := '^PR2' ;* Print speed 2 inches per second
|
||||
@ -993,7 +993,6 @@ FOR I = 1 TO WMIBoxCnt
|
||||
Str:= '^MD15' ;* Media darkness
|
||||
Str:= '^MMT' ;* Media mode t=tear off mode
|
||||
Str:= '^FO30,30^A060,40^FDSurfscan Required^FS'
|
||||
*Str:= '^FO550,30^A060,40^FDRDS#':RDSIds<I>:'^FS'
|
||||
IF PreSurfscan THEN
|
||||
Str:= '^FO30,130^A060,40^FDPre Epi:^FS'
|
||||
Str:= '^FO250,130^A060,40^FDDefects________^FS'
|
||||
@ -1017,13 +1016,7 @@ FOR I = 1 TO WMIBoxCnt
|
||||
stat = Direct_Print('PRINT', Str)
|
||||
end
|
||||
|
||||
|
||||
NEXT I
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -28,6 +28,7 @@ $INSERT WM_OUT_EQUATES
|
||||
$INSERT EPI_PART_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
$INSERT PRS_STAGE_EQUATES
|
||||
$insert UNIT_EQUATES
|
||||
|
||||
DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount, Popup
|
||||
DECLARE FUNCTION MemberOf, Direct_Print, Environment_Services
|
||||
@ -41,6 +42,8 @@ EQU PI$WIDTH TO 5
|
||||
EQU PI$HEIGHT TO 6
|
||||
EQU PI$SIZE TO 7
|
||||
|
||||
Main:
|
||||
|
||||
IF NOT(ASSIGNED(WONo)) THEN RETURN
|
||||
IF WONo = '' THEN RETURN
|
||||
|
||||
@ -67,16 +70,15 @@ end else
|
||||
stat = Direct_Print('START', PrintPath<1>, '', '')
|
||||
end
|
||||
|
||||
IF stat < 0 THEN GOTO OIPrint_Error
|
||||
IF stat GE 0 THEN
|
||||
|
||||
CLOrientation = '' ;* used for printing on cleanroom labels
|
||||
|
||||
|
||||
WMOutKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_OUT_KEYS$,'X')
|
||||
|
||||
TypeOver = ''
|
||||
TypeOver<PDISPLAY$> = WMOutKeys
|
||||
TypeOver<PTITLE$> = 'WM_OUT - Outbound Cassettes'
|
||||
TypeOver<PSHOWGAUGE$> = True$
|
||||
|
||||
WMoutKeys = Popup(@WINDOW,TypeOver,'PRINT_WM_LABELS')
|
||||
CONVERT '.' TO '*' IN WMOutKeys
|
||||
@ -200,15 +202,15 @@ END
|
||||
|
||||
PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec )
|
||||
|
||||
swap 'æm' with 'um' in PrintThickTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintThickTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets
|
||||
swap '' with 'A' in PrintThickTargets
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintThickTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets
|
||||
swap UNIT_A$ with 'A' in PrintThickTargets
|
||||
|
||||
swap 'æm' with 'um' in PrintResTargets
|
||||
swap 'ê-cm' with 'ohm.cm' in PrintResTargets
|
||||
swap 'ê/Ü' with 'ohm/sq' in PrintResTargets
|
||||
swap '' with 'A' in PrintResTargets
|
||||
swap UNIT_MICROMETER$ with 'um' in PrintResTargets
|
||||
swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets
|
||||
swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets
|
||||
swap UNIT_A$ with 'A' in PrintResTargets
|
||||
|
||||
WMOBoxCnt = COUNT( WMOutKeys, @VM ) + (WMOutKeys NE '')
|
||||
|
||||
@ -217,8 +219,15 @@ GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14
|
||||
|
||||
Void = UTILITY( 'CURSOR', 'A' )
|
||||
|
||||
end
|
||||
|
||||
GoSub EndPrint
|
||||
|
||||
return
|
||||
|
||||
|
||||
* * * * * *
|
||||
OIPrint_Error:
|
||||
EndPrint:
|
||||
* * * * * *
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
@ -469,3 +478,4 @@ end else
|
||||
end
|
||||
|
||||
RETURN
|
||||
|
||||
|
@ -62,7 +62,8 @@ Service AuthenticateLSLCredentials(LSLUsername, LSLPassword)
|
||||
|
||||
Response = False$
|
||||
If ( (LSLUsername NE '') and (LSLPassword NE '') ) then
|
||||
Convert @Lower_Case to @Upper.Case in LSLUsername
|
||||
Convert @Lower_Case to @Upper_Case in LSLUsername
|
||||
Convert @Lower_Case to @Upper_Case in LSLPassword
|
||||
If RowExists('LSL_USERS', LSLUsername) then
|
||||
Password = Xlate('LSL_USERS', LSLUsername, 'PASSWORD', 'X')
|
||||
If LSLPassword EQ Password then
|
||||
@ -313,67 +314,3 @@ Service GetLSLUser(Username)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// VerifyUserSessions
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service VerifyUserSessions()
|
||||
|
||||
// Use MESSENGER as the recipient. It will process callback procedures.
|
||||
Messaging_Services('SendMessage', 'GetLoggedInUsers', 'Request', 'MESSENGER', 'All', '', 'Procedure', 'Security_Services,UserSessionsListener,@MESSAGE,@ARGUMENTS')
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service UserSessionsListener()
|
||||
|
||||
// Process message
|
||||
// If user is running an old version of LSL, then send them a popup asking them to restart their session.
|
||||
Transfer Param2 to SessionInfo
|
||||
Station = SessionInfo<1, 2>
|
||||
OIUserName = SessionInfo<2, 2>
|
||||
SSOUserName = SessionInfo<3, 2>
|
||||
ProcessID = SessionInfo<4, 2>
|
||||
LSL2Version = SessionInfo<5, 2>
|
||||
OCXVersion = SessionInfo<6, 2>
|
||||
|
||||
CurrLSL2Version = Database_Services('ReadDataRow', 'APP_INFO', 'LSL2_VERSION')
|
||||
If ((LSL2Version NE '') and (LSL2Version NE CurrLSL2Version)) then
|
||||
// Send a message to the user
|
||||
Message = 'You are running an outdated version of LSL. Restart your application ASAP to pickup the latest code.'
|
||||
Messaging_Services('SendMessage', 'SetPopupMessage', 'Request', '', Station, Message)
|
||||
* If OIUserName EQ 'DANIEL_ST' then
|
||||
* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', Station, 'SECURITY_SERVICES,REQUIREREAUTHENTICATION', '', '', '')
|
||||
* end
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service RequireReauthentication()
|
||||
|
||||
Authenticated = False$
|
||||
|
||||
If MemberOf(@USER4, 'OI_ADMIN') then
|
||||
ParentForm = 'NDW_MAIN'
|
||||
end else
|
||||
ParentForm = 'LSL_MAIN2'
|
||||
end
|
||||
Loop
|
||||
|
||||
Response = Dialog_Box('NDW_VERIFY_USER', ParentForm, @USER4)
|
||||
Authenticated = Response<1>
|
||||
If Not(Authenticated) then
|
||||
ErrorMessage = 'You must reauthenticate to continue running your old version of OpenInsight.'
|
||||
rv = Msg('', '', 'OK', '', 'Authentication Required':@FM:ErrorMessage)
|
||||
end
|
||||
Until Authenticated
|
||||
Repeat
|
||||
|
||||
end service
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -796,6 +796,7 @@ Service PrintLabels(WONo)
|
||||
TypeOver<PDISPLAY$> = RDSNos
|
||||
TypeOver<PFIELD$> = 2
|
||||
TypeOver<PTYPE$> = 'K'
|
||||
TypeOver<PSHOWGAUGE$> = True$
|
||||
|
||||
RDSKeys = Popup(@WINDOW,TypeOver,'WO_LOG_RTS')
|
||||
|
||||
@ -1565,5 +1566,3 @@ ClearCursors:
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
13
LSL2/STPROCINS/UNIT_EQUATES.txt
Normal file
13
LSL2/STPROCINS/UNIT_EQUATES.txt
Normal file
@ -0,0 +1,13 @@
|
||||
compile insert UNIT_EQUATES
|
||||
/*----------------------------------------
|
||||
Author : DJM
|
||||
Written : 11/6/2025
|
||||
Description : Insert for unit-hex conversion.
|
||||
----------------------------------------*/
|
||||
|
||||
Equ UNIT_MICROMETER$ To \E66D\
|
||||
Equ UNIT_OHM_CM$ To \EA2D636D\
|
||||
Equ UNIT_OHM_PER_SQ$ To \EA2FDC\
|
||||
Equ UNIT_A$ To ''
|
||||
|
||||
|
Reference in New Issue
Block a user