GTIN 14 Carton Labels in Accellos using Interleave 2 of 5 barcode
GTIN BASICS
The GTIN Carton Label is a unique label built on the pack size + UPC + a modulo 10 check digit.
Accellos use the prodmstr table to keep track of the different case pack sizes in the fields size1-size5
With this knowledge we build the UPC as such
if the item is picked in size 1 the GTIN 14 carton label is thus 1+UPC + ckdigit
if the item is picked in size 2 the GTIN 14 carton label is thus 2+UPC + ckdigit
MODULO 10 CALCULATIONS
The check digit is calculated by the following algerithm
if the UPD = 123456789012 and pack size2 is utilized for shipping
we end up with 2123456789012
we take the even number place holders N2 N4 N6 N8 N10 N12 and add them together
so 1 + 3 + 5 + 7 + 9 + 1 = 27
We take the odd numbered place holder N1 N3 N5 N7 N9 N11 and add them together and multiply by 3
so 2 + 4 + 6 +8 +0+2 = 22
Multiple the the Odd times 3 = 66
add the Odd + Even together = 88
using the modulo operator % we end up with 88%10 = returning a 2
NOTE: if the value returns 10 we need to return 0
so we return 2123456789012 as the Carton GTIN -14 requirement
ACCELLOS SQL TRIGGER
All these calculations are done in a function in the SQL database called dbo.scc14 which I created with the parameters UPC VARCHAR(20) , Pack _size INT , Clientname VARCHAR (20)
I have not had success calling this outside of an SQL Trigger so in the Insert Trigger I created in TOTEDETL I have setup that if the ClientCust = MSY / WAL% MSY/LOW% then update the substitute field with the GTIN 14 Number in the table for each record.
FARO QUICK COMPLETE ISSUE PRINTING LABELS
What happens is Faro Quick Complete is so fast it doesn't allow the SQL Trigger to fire prior to submitting the label to XML3 For Printing. So XML3 prints a blank bar code. The only solution is not to add the label to the cust_ctyp field in pickhead and after Faro Quick Complete finishes processing is to use the hand held and print N of M labels after the fact. But you must add the Label to the PACK SLIP edit field Cust_Ctype in the Edit screen on General 4 Tab.
XML3 LABEL FILE
Interleave 2 of 5 Generation
Now in the XML3 Label program I determined the following when using the label 2OF5 INTERLEAVE BARCODE the following
if you send it and odd number of characters it only adds a check digit to the barcode. If you send it an even number of characters it prepends it with a 0 and adds a check digit to the barcode.
So in order to make the bar code print properly we using our example 2123456789012 we would only send the data up to our check digit 212345678901 and Accellos recalulates our check digit. My function basically states left(totedetl.substitute,13) and send it to the Interleave 2 of 5 Bar Code function.
I then print the value from totedetl.substitute for a human Readable version on the label.
And two example bar codes to look at in XML3 is WALMSY and LOWMSY for supporting code.
I had to add the bars across the top and acrosss the bottom of the UPC Manually.
and the results are seen in the image below.