P03: GS1 – SSCC parser
This parser is used for executing the Warehouse Order lines with the contents of a Logistic Unit (LU).
It is especially useful during the receiving process when the information of the LU's content is pre-received in an Advance Ship Notice (ASN). This way you can create the LU's definitions with their SSCC codes and content information and advance. This would speed up the receiving process significantly, as the worker only needs to scan the barcode upon receipt and the program will automatically find and execute the appropriate order lines.
The LU recognition is performed using the GS1 SSCC code and the (00) identifier. Once triggered, the parser looks for an active LU with the same Serial Code as the scanned barcode. If there is such LU the parser tries to automatically execute the Warehouse Orders lines with the content of the scanned LU.
Specifics and optimizations during the line execution:
- If the lines' task type is Receive, then check if the LU is not yet received. This check prevents us from mistakenly scanning the same LU more than once during the receiving process.
- If there is a specified Location in all best matching lines and there is no warehouse policy that requires scanning it – then the line is executed automatically with the specified location.
- If not all LU contents have a matching line in the current Warehouse Order, then the system will stop the execution and will throw an error message and will stop the execution.
A detailed description of the parser’s action:
- If the barcode starts with “(00)“ OR it starts with “00 and the scanned barcode length is = 20 symbols”, then go to step 2. Else, go to step 10.
- Try to find a Logistic Unit (LU) with the same Serial Number as the scanned barcode. If a LU is found, then go to step 3. Else, throw „SSCC not found. Before scanning, first define the logistic unit.“ and stop.
- Get the Logistic Unit’s Contents. Go to step 4.
- Check if any of the Content has a LogisticUnitContent.LotNumber and LogisticUnitContent.Lot is empty, then check if there is a Lot in the database for which Product = LogisticUnitContent.Product and Number = LogisticUnitContent.LotNumber. If there is no such record, throw "No lot '{ LogisticUnitContent.LotNumber }' was found for product '{ LogisticUnitContent.Product}'." and stop. Else, go to step 5.
- Search for matching unexecuted Warehouse Order Lines that can be fulfilled with the LU contents information. Go to step 6.
- Check if there is a matching Warehouse Order line for all of the LU contents. If all Contents have a match, go to step 7. Else, throw "The lines of the order do not correspond to line {Content-a който няма match.LineNo} of the logistic unit." and stop.
- Check if the unexecuted Quantity of the matching Warehouse Order lines is enough to fulfill the LU contents. If it is enough, go to step 8. Else, throw "The quantity of the content is more than the remaining quantity of the lines." and stop.
- Automatically start the line execution of the best matching lines with the extracted LU contents. If all best-matching Warehouse Order Lines contain the same Location AND the applicable warehouse policy “RequireResourseScan != true”, then the line will be automatically executed with the specified location. Go to step 9.
- Refresh the lines menu.
- Move to the next active parser.