Difference between revisions of "ITrack/Barcodes"
m |
(→LXW) |
||
(14 intermediate revisions by 5 users not shown) | |||
Line 2: | Line 2: | ||
== Encoding == | == Encoding == | ||
All | All bar codes are done via standard [http://en.wikipedia.org/wiki/Code_39 3-of-9]. | ||
== Preamble and postamble == | == Preamble and postamble == | ||
Line 16: | Line 16: | ||
=== LXW === | === LXW === | ||
LXW defaults to preamble '~' and postamble '\r', but can be changed via Settings: 'ITrack LX'-'Preamble Character Codes' and ' | LXW defaults to preamble '~' [126] and postamble '\r' or 'enter' [13], but can be changed via Settings: 'ITrack LX'-'Preamble Character Codes' and 'Postamble Character Codes' | ||
https://keyevents.netlify.app/ | |||
== Barcode Formatting == | == Barcode Formatting == | ||
Depending on the context, the barcode will encode different types of values. | Depending on the context, the barcode will encode different types of values. | ||
=== Notes on Formatting === | |||
* The '*' character is never passed on to the client application. | |||
** The '*' character is specific to 5of9 barcodes and should only be include when generating barcodes using the 5of9 barcode font. | |||
** If you use a third party barcode generator or if you are artificially sending scans to a app via javascript, '''DO NOT''' include the '*' character. | |||
***Actually, we should change this page to get rid of '*' on all the barcode formats, then change this note to "ADD * to beginning and end of a 5of9 barcode if you are generating it using 5of9 font". | |||
* Square brackets indicate where actual ids etc should be placed. | |||
** They are NOT included in the final barcode. | |||
==== An example to ilistrate using lxw as an example: ==== | |||
*Given a sales order from store 1 with id 5318008. | |||
*And a format from this wiki as *S[storeid]-[salesorderid]* | |||
;using 5of9 font to print a barcode: | |||
: *S1-5318008* | |||
;generating a barcode using 3rd party tool or simulating a scan: | |||
: S1-5318008 | |||
=== LXW === | === LXW === | ||
Line 25: | Line 46: | ||
! scope="col" width="250px" | Objects | ! scope="col" width="250px" | Objects | ||
! ! scope="col" width="300px" | Barcode Contents | ! ! scope="col" width="300px" | Barcode Contents | ||
! ! ! scope="col" | Notes | |||
|- | |- | ||
| Inventory | | Inventory | ||
| *[inventoryid]* | | *[inventoryid]* | ||
| inventoryid must be less than 12 characters | |||
|- | |||
| UPC | |||
| *[raw_UPC]* | |||
| raw_UPC must be numeric only, exactly 12 characters | |||
|- | |- | ||
| Serialized Inventory | | Serialized Inventory | ||
| *[inventoryid]-[inventoryserialid]* | | *[inventoryid]-[inventoryserialid]* or *D[inventoryserialid]* | ||
| the D form is only for database version 307 or above | |||
|- | |- | ||
| Location | | Location | ||
| *%[locationid]* | | *%[locationid]* | ||
| | |||
|- | |- | ||
| Sales Order | | Sales Order | ||
| *S[storeid]-[salesorderid]* | | *S[storeid]-[salesorderid]* | ||
| | |||
|- | |- | ||
| Purchase Order | | Purchase Order | ||
| *P[storeid]-[purchaseorderid]* | | *P[storeid]-[purchaseorderid]* | ||
| | |||
|- | |- | ||
| Transfer Order | | Transfer Order | ||
| *T[transferorderid]* | | *T[transferorderid]* | ||
| | |||
|- | |- | ||
| Work Order Job | | Work Order Job | ||
| *J[jobid]* | | *J[jobid]* | ||
| | |||
|- | |- | ||
| ITrack User | | ITrack User | ||
| *U[userid]* | | *U[userid]* | ||
| | |||
|- | |||
| OEM Number | |||
| *[any non-empty sequence]* | |||
| Catchall for anything that didn't match | |||
|} | |} | ||
* Encoded location names are currently accepted as alternate location barcode formatting even though it is not standard. | * Encoded location names are currently accepted as alternate location barcode formatting even though it is not standard. | ||
Line 55: | Line 93: | ||
Technically, non-conforming barcode scans that contain letters and numbers are treated as locations as a work-around for an existing setup. However, this behavior is NOT supported in the long-term and will be deprecated and removed without notice. Don't rely on it! | Technically, non-conforming barcode scans that contain letters and numbers are treated as locations as a work-around for an existing setup. However, this behavior is NOT supported in the long-term and will be deprecated and removed without notice. Don't rely on it! | ||
=== Pro Desktop, ITrack Chromium, & LX Pro === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
! scope="col" width="250px" | Objects | ! scope="col" width="250px" | Objects | ||
Line 68: | Line 105: | ||
|- | |- | ||
| Location | | Location | ||
| *%[ | | *%[locationname]* | ||
|} | |} | ||
=== Presage === | === Presage === | ||
Line 85: | Line 121: | ||
| *W[workorderid]* | | *W[workorderid]* | ||
| | | | ||
|- | |||
| Copy Work order | |||
| *<nowiki>WC[Y|N]</nowiki>[workorderid]* | |||
| Copy/Clone a workorder. Specify whether to clone data or not with a Y or N. | |||
|- | |- | ||
| Physical sample (bag) | | Physical sample (bag) | ||
Line 100: | Line 140: | ||
| Location+Analysis | | Location+Analysis | ||
| *LA[locationid]-[analysisid]* | | *LA[locationid]-[analysisid]* | ||
| | | Adds a sample to the current workorder with selected analysis and location, then opens the sample for editing. | ||
|- | |||
| Product+Analysis | |||
| *PA[productid]-[analysisid]* | |||
| Adds a sample to the current workorder with selected analysis and product, then opens the sample for editing. | |||
|- | |||
| Location+Product+Analysis | |||
| *LPA[locationid]-[productid]-[analysisid]* | |||
| Adds a sample to the current workorder with selected analysis, location, and product, then opens the sample for editing. | |||
|} | |} | ||
Line 114: | Line 162: | ||
| *+CLOCKOUT* | | *+CLOCKOUT* | ||
|} | |} | ||
=== Scanning Parts into a job in LXW === | |||
*First the user must be flagged as a WO Mechanic on their User Account in desktop EE. | |||
*Go to Work Clock in LXW. | |||
*Choose your user. | |||
*You should land at the jobs page and see a list of available jobs. | |||
*Click into a Work Order. | |||
*Now you can scan a part tag barcode and it should add it to the parts list of the selected job. | |||
== Weaknesses == | == Weaknesses == |
Latest revision as of 10:49, 18 June 2024
Several elements of ITrack and ITrack software utilize barcodes. All ITrack products should utilize a similar barcoding scheme.
Encoding
All bar codes are done via standard 3-of-9.
Preamble and postamble
Virtually every barcode scanner can be programmed to simulate a keypress combination before entering the barcode contents (the preamble) and after (postamble).
ITrack Pro
ITrack Pro document screens (Sales, Quotes, Purchase Orders) expect a preamble of Ctrl+b and a postamble of \n.
The document screens will take whatever value is between those characters and do a lookup by partnum (the value encoded in barcodes on ITrack Pro tags), and if no values are found by partnum, by UPC (the value encoded into the barcodes printed on most products).
Workclock
The workclock system expects the barcode scanner to provide a preamble and postamble of ':$:'.
LXW
LXW defaults to preamble '~' [126] and postamble '\r' or 'enter' [13], but can be changed via Settings: 'ITrack LX'-'Preamble Character Codes' and 'Postamble Character Codes'
https://keyevents.netlify.app/
Barcode Formatting
Depending on the context, the barcode will encode different types of values.
Notes on Formatting
- The '*' character is never passed on to the client application.
- The '*' character is specific to 5of9 barcodes and should only be include when generating barcodes using the 5of9 barcode font.
- If you use a third party barcode generator or if you are artificially sending scans to a app via javascript, DO NOT include the '*' character.
- Actually, we should change this page to get rid of '*' on all the barcode formats, then change this note to "ADD * to beginning and end of a 5of9 barcode if you are generating it using 5of9 font".
- Square brackets indicate where actual ids etc should be placed.
- They are NOT included in the final barcode.
An example to ilistrate using lxw as an example:
- Given a sales order from store 1 with id 5318008.
- And a format from this wiki as *S[storeid]-[salesorderid]*
- using 5of9 font to print a barcode
- *S1-5318008*
- generating a barcode using 3rd party tool or simulating a scan
- S1-5318008
LXW
Objects | Barcode Contents | Notes |
---|---|---|
Inventory | *[inventoryid]* | inventoryid must be less than 12 characters |
UPC | *[raw_UPC]* | raw_UPC must be numeric only, exactly 12 characters |
Serialized Inventory | *[inventoryid]-[inventoryserialid]* or *D[inventoryserialid]* | the D form is only for database version 307 or above |
Location | *%[locationid]* | |
Sales Order | *S[storeid]-[salesorderid]* | |
Purchase Order | *P[storeid]-[purchaseorderid]* | |
Transfer Order | *T[transferorderid]* | |
Work Order Job | *J[jobid]* | |
ITrack User | *U[userid]* | |
OEM Number | *[any non-empty sequence]* | Catchall for anything that didn't match |
- Encoded location names are currently accepted as alternate location barcode formatting even though it is not standard.
Caveats
Technically, non-conforming barcode scans that contain letters and numbers are treated as locations as a work-around for an existing setup. However, this behavior is NOT supported in the long-term and will be deprecated and removed without notice. Don't rely on it!
Pro Desktop, ITrack Chromium, & LX Pro
Objects | Barcode Contents |
---|---|
Inventory | *[partnum]* |
Vehicle | *$[stocknum]* |
Location | *%[locationname]* |
Presage
Object | Barcode contents | Notes |
---|---|---|
Sample | *S[sampleid]* | Used in barcodes where the users will not be changing the sample's tag number |
Work order | *W[workorderid]* | |
Copy Work order | *WC[Y|N][workorderid]* | Copy/Clone a workorder. Specify whether to clone data or not with a Y or N. |
Physical sample (bag) | *T[tagnumber]* | Identifies a sample to be submitted to multiple analyses. Is not globally unique, must be paired with a Work Order. |
Location | *L[locationid]* | Identifies a specific location. This represents a specific place at only one plant, and does not care about the location name. |
Analysis | *A[analysisid]* | Identifies a specific analysis. |
Location+Analysis | *LA[locationid]-[analysisid]* | Adds a sample to the current workorder with selected analysis and location, then opens the sample for editing. |
Product+Analysis | *PA[productid]-[analysisid]* | Adds a sample to the current workorder with selected analysis and product, then opens the sample for editing. |
Location+Product+Analysis | *LPA[locationid]-[productid]-[analysisid]* | Adds a sample to the current workorder with selected analysis, location, and product, then opens the sample for editing. |
Work Clock
Actions | Barcode Contents |
---|---|
Clock the selected user into a selected job | *+CLOCKIN* |
Clock the selected user out of an active job | *+CLOCKOUT* |
Scanning Parts into a job in LXW
- First the user must be flagged as a WO Mechanic on their User Account in desktop EE.
- Go to Work Clock in LXW.
- Choose your user.
- You should land at the jobs page and see a list of available jobs.
- Click into a Work Order.
- Now you can scan a part tag barcode and it should add it to the parts list of the selected job.
Weaknesses
List of things to fix in the current scheme that will cause trouble down the road:
- Inventory ID and InventoryID-SerialID are not prefixed, (potentially) overlapping with number-only string location names
- Inventory ID, InventoryID-SerialID, LocationID do not include storeid, requiring it to be guessed at and limiting its effectiveness if not outright causing bugs