Table of Contents

P02: GS1 - Single Product parser

This parser uses some of the most popular GS1 identifiers to recognize the product and the additional information that comes with it and is also encoded into the barcode.

A list of the identifiers that are recognized by this parser:

Identifier Description Length
(01) Global Trade Item Number (GTIN) 14
(02) Global Trade Item Number (GTIN) of contained trade items 14
(10) Lot number variable, up to 20
(17) Expiration date (YYMMDD) 6
(20) Product variant 2
(21) Serial number variable, up to 20
(37) Count of trade items variable, up to 8

Once triggered, the parser tries to break the GS1 barcode into separate parts to extract the information encoded in it. If there are no errors during this operation, it starts looking for an appropriate line that can be executed with the recognized information. When it finds the best matching line, it starts its execution. If the information is enough to fulfill the line, then the system will not ask the user for anything and will automatically execute the line. If there is missing information, then it will show the respective screens so the user can fill it in. If there is no matching line – it throws an error message and stops the execution.

Specifics and optimizations during the line execution:

  • If there is a specified Location in the line and there is no warehouse policy that requires scanning it – then the line is executed automatically with the specified location.
  • If the barcode contains a Lot information, the Lot is not yet created into the database and the matching line is with Receive or Component Receive task type - then the Lot is automatically created by the system. If there is an Expiry Date in the barcode, then this information is written into the new Lot definition as well.
  • If the barcode contains Serial Number information, the Serial Number is not yet created into the database and the matching line is with Receive or Component Receive task type - then the Serial Number is automatically created by the system.
  • If the barcode contains information about the Count of trade items, then the line is executed with the specified Quantity in it. As a Measurement Unit is considered the Default Measurement System of the Coding System that was used to recognize the product. If none, then the Default Measurement Unit of the Product is taken.

A detailed description of the parser’s action:

  1. If the barcode starts with “(“ OR it starts with “01 or 02 and the scanned barcode length is = 16 symbols”, then go to step 2. Else, go to step 10.
  2. Brake the barcode into segments. If the barcode starts with “(“ it is broken down directly, else it is parsed to a barcode with () segments. The recognized identifiers are specified in the table above, all other identifiers are ignored. Go to step 3.
  3. Make segment validations.
  • The barcode must contain one of the segments (01) or (02)
  • It must not contain both segments (01) and (02) at the same time.
  • If it contains segment (37) it must contain segment (02) as well If all validations are successful, go to step 4. Else, throw an error message and stop.
  1. Try to find a product with the same Part Number or additional Product Code as the scanned barcode. If the search is unsuccessful, then throw "Product not found.". Else go to step 5.
  2. Extract the data from the rest of the recognized identifiers – for Lot, Expiry Date, Serial Number…. Go to step 6.
  3. Validate the extracted data
  • If it contains a Lot segment. Check if there is a Lot with this Lot Number for the particular Product. If no Lot is found, but the line task type of the line is Receive or Component Receive, then the Lot will be created automatically during the line Execution. Else, throw "No lot was found for product" and stop.
  • If it contains a Variant segment. Check if there is a Variant with this Short Code for the particular Product. If no Variant is found, throw "No variant was found for product" and stop.
  • If it contains a Serial Number segment. Check if there is a Serial Number with this Code for the particular Product. If no Serial Number is found but the line task type of the line is Receive or Component Receive, then the Serial Number will be created automatically during the line Execution. Else, throw "No serial was found for product" and stop. If all validations are successful, go to step 7.
  1. Search for an unexecuted Warehouse Order Line that can be fulfilled with the extracted information. If there is a such line, go to step 8. Else, throw "No unexecuted line found that matches the scanned data." and stop.
  2. Automatically start the line execution of the best matching line with the data extracted from the barcode. If the Warehouse Order Line contains a Location AND the applicable warehouse policy “RequireResourseScan != true”, then the line will be automatically executed with the specified location. If the information is enough to fulfill the line, then the system will not ask the user for anything and will automatically execute the line. If there is missing information, e.g. for Quantity, then it will show the corresponding screens so that the user can fill it in. If the barcode contains segment (37) and not all quantity was exhausted by the first line, then start the execution of the next matching line. When finished, move to step 9.
  3. Return to the lines menu.
  4. Move to the next active parser.