Composite Code XML format for GS1 and Panacode barcodes

Composite Code XML format for GS1 and Panacode barcodes

PanatrackerGP has a unique and powerful feature that enables the reading and parsing of GS1 barcodes. This type of barcode can contain multiple pieces of data in a single barcode (e.g., item code, lot code, production date, etc.). With proper configuration, PanatrackerGP can parse these codes and capture the data with a single barcode scan.

Info
An overview of GS1 can be found here. Furthermore, this article goes into greater depth with the GS1-128 format and explains the critical concept of application identifiers. Contact Panatrack's Professional Services team to learn how to apply these concepts to your supply chain.

PanatrackerGP accomplishes this parsing through the use of the CompositeCodeXml setting. This setting captures the rules to parse and identify the GS1 application identifier components in a GS1 barcode. This feature is based upon the power of Regex expressions. Regex is a powerful, yet complicated language that enables the definition of patterns in data. A default CompositeCodeXml setting is already set in your PanatrackerGP system, but Panatrack's Professional Services team can work with you to tune this feature to your environment.

Below is the default setting that should address most needs for GS1 barcodes. 

  1. <CompositeCode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  2.     <CompositePatterns>
  3.         <Pattern PatternName="GS1" RecognitionPattern="^(01|02)\d{14}">
  4.         <Segment Regex="^(01|02)(?'item'\d{1,14})(\|)?" />
  5.         <Segment Regex="^11(?'proddate'\d{6})(\|)?" />
  6.         <Segment Regex="^17(?'expirationdate'\d{6})(\|)?" />
  7.         <Segment Regex="^15(?'bestbydate'\d{6})(\|)?" />
  8.         <Segment Regex="^10(?'lot'\w*)(\|)?" />
  9.         <Segment Regex="^240(?'LotAttribute1'\w{7})(?'LotAttribute2'\w*)(\|)?" />
  10.         <Segment Regex="^21(?'serial'\w{1,20})(\|)?" />
  11.         <Segment Regex="^3202(?'quantity'\d{6})(\|)?" Decimal="2" />
  12.         <Segment Regex="^3201(?'quantity'\d{6})(\|)?" Decimal="1" />
  13.         <Segment Regex="^3200(?'quantity'\d{6})(\|)?" Decimal="0" />
  14.         <Segment Regex="^(?:30|37)(?'altquantity'\d*)(\|)?" />
  15.         </Pattern>
  16.         <Pattern PatternName="GS1 with identifier" RecognitionPattern="^(?:]d2|]C1|]e0|]Q3)">
  17.         <Segment Regex="^(?'symbology'.{3})"/>
  18.         <Segment Regex="^(01|02)(?'item'\d{1,14})(\|)?" />
  19.         <Segment Regex="^11(?'proddate'\d{6})(\|)?" />
  20.         <Segment Regex="^17(?'expirationdate'\d{6})(\|)?" />
  21.         <Segment Regex="^15(?'bestbydate'\d{6})(\|)?" />
  22.         <Segment Regex="^10(?'lot'\w*)(\|)?" />
  23.         <Segment Regex="^240(?'LotAttribute1'\w{7})(?'LotAttribute2'\w*)(\|)?" />
  24.         <Segment Regex="^21(?'serial'\w{1,20})(\|)?" />
  25.         <Segment Regex="^3202(?'quantity'\d{6})(\|)?" Decimal="2" />
  26.         <Segment Regex="^3201(?'quantity'\d{6})(\|)?" Decimal="1" />
  27.         <Segment Regex="^3200(?'quantity'\d{6})(\|)?" Decimal="0" />
  28.         <Segment Regex="^(?:30|37)(?'altquantity'\d*)(\|)?" />
  29.         </Pattern>
  30.         <Pattern PatternName="Panacode Bulk" RecognitionPattern="^\[PB\]">
  31.         <Segment Regex=".*&lt;I&gt;(?'item'[\w\s\/\.-]*)" />
  32.         <Segment Regex=".*&lt;U&gt;(?'unitofmeasure'[\w\s\/\.-]*)" />
  33.         <Segment Regex=".*&lt;Q&gt;(?'quantity'[\w\s\/\.-]*)" />
  34.         </Pattern>
  35.         <Pattern PatternName="Panacode Lot" RecognitionPattern="^\[PL\]">
  36.         <Segment Regex=".*&lt;I&gt;(?'item'[\w\s\/\.-]*)" />
  37.         <Segment Regex=".*&lt;L&gt;(?'lot'[\w\s\/\.-]*)" />
  38.         <Segment Regex=".*&lt;U&gt;(?'unitofmeasure'[\w\s\/\.-]*)" />
  39.         <Segment Regex=".*&lt;Q&gt;(?'quantity'[\w\s\/\.-]*)" />
  40.         </Pattern>
  41.         <Pattern PatternName="Panacode Serial" RecognitionPattern="^\[PS\]">
  42.         <Segment Regex=".*&lt;I&gt;(?'item'[\w\s\/\.-]*)" />
  43.         <Segment Regex=".*&lt;S&gt;(?'serial'[\w\s\/\.-]*)" />
  44.         <Segment Regex=".*&lt;U&gt;(?'unitofmeasure'[\w\s\.-]*)" />
  45.         </Pattern>
  46.         <Pattern PatternName='Panacode Credentials' RecognitionPattern='^\[PC\]'>
  47.         <Segment Regex=".*&lt;U&gt;(?'user'[\w\s\/\.-]*)"/>
  48.         <Segment Regex=".*&lt;P&gt;(?'password'[\w\s\/\.-]*)"/>
  49.         </Pattern>
  50.     </CompositePatterns>
  51. </CompositeCode>

The above CompositeCodeXml is a way for PanatrackerGP to be field configured to handle multiple pieces of data in a single barcode, without requiring custom programming.

Notes
The XML is a little tricky to understand and configure, so we don't expect our end-users to try and digest the above. Contact our professional services team for help on this topic. We're here to help.

    • Related Articles

    • Learn how to add Barcodes to GP Report Writer

      As an industry leader in bar coding for Dynamics GP, we are asked daily regarding the ability to add bar-codes to reports like Purchase Orders, SOP Pick Lists, Packing Slips and more. While the PanatrackerGP application offers robust lookup and ...
    • I downloaded a free version of Code 3 of 9 and the scanner won't read it.

      Issue Free barcode fonts often lack the proper symbology encoding required for scanners to read them correctly. While they may appear visually similar to valid barcodes, they don't encode the data in the format scanners expect. Solution Use a ...
    • Log in to PanatrackerGP using a barcode

      PanatrackerGP can be configured to allow users to log in with a barcode scan. This requires modifications to the Composite Code XML settings in the Panatracker Portal as well as the generation of specific barcodes. Updating the Composite Code XML in ...
    • How to read a specific bar code that is surrounded by other nearby barcodes using Intermec Mobile Computers

      By default, the Intermec scanner reads a barcode as soon as it appears in the imager's field of view. This works well in most situations, but when multiple barcodes are closely positioned, the scanner may grab the wrong one. Enabling Center Decoding ...
    • Panatracker Transaction Status code values

      The following table lists the values of the TransactionStatus field in PanatrackerGP transaction tables. Status Code Status Name Description 0 InProgress Transaction data is being gathered 1 Queued Saved for send, but submittal web service not yet ...