Overview

There is an issue with old ZPL label templates where a UPC containing an odd number of digits will not print the last digit. This is caused by the subset used within the ZPL code (subset C). We have updated the ZPL code to use subset B instead. Subset C groups the digits from the product code into groups of two, which provides a condensed barcode output. Subset B prints each digit separately, so the resulting barcode is longer.


For example, here is what a barcode looks like when using subset B:



Here is an example of subset C:



As you can see, the subset C is a shorter barcode, even though the UPC is the same. This is generally not an issue, however, subset C cannot process single digits, it MUST be in a pair. This causes a problem when trying to print a label for a product that has an odd numebr of digits (such as EAN 13). When printing a label for a product that has an odd number of characters, and using subset C, the barcode will ignore the last digit and the barcode will not scan properly. This only affects the ability for the scanner to read the barcode on the shelf tag, NOT the product itself.


To resolve this issue, we have updated our labels to use subset B instead of subset C. If a customer is using an older template, they might still be using subset C. If this is the case, all you need to do is update their label template to use subset B. To do so, follow these steps:


Procedure

  1. Go to the customer's BO and navigate to Admin--> Label Templates
  2. Select the 2.25 x 1.25 (ZPL) template
  3. In the ZPL code, check to make sure the following values are correct: (The items in bold are what need to match. If other values are different, you may not need to change those values. Start by changing only the values in bold first)

    Here is what the ORIGINAL ZPL code looked like (note the items in bold and underlined):
    <div style="font-size:0.5px; color:white; "><pre>
    ^XA^LT0
    ^FT120,26^A0N,20,20^FD @Model.Location.CompanyName^FS
    ^FT350,95,1^A0N,80,80^FD @Model.Data.Price.ToString("C")^FS
    ^FT20,155^A0N,20,20^FB380,2,-1,L,6^FD @Model.Data.Description^FS
    ^FT75,215^BY3,3,44^BCN,,N,N^FH\
    ^FD>; @Model.Data.PrimaryProductCode^FS
    ^FT50,270^A0N,25,25^FB380,2,-1,C,0^FD @Model.Data.PrimaryProductCode^FS
    ^FXc
    </pre>
    </div>
    @Model.Data.Description <br>
    @Model.Data.Price.ToString("C") <br>
    @Model.Data.PrimaryProductCode <br>
    <div style="font-size:0.5px; color:white; "><pre>^FS^XZ</pre></div>

    Here is what you need to change the ZPL code to (note the items in bold and underlined):
    <div style="font-size:0.5px; color:white; "><pre>
    ^XA^LT0
    ^FT120,26^A0N,20,20^FD @Model.Location.CompanyName^FS
    ^FT350,95,1^A0N,80,80^FD @Model.Data.Price.ToString("C")^FS
    ^FT20,155^A0N,20,20^FB380,2,-1,L,6^FD @Model.Data.Description^FS
    ^FT55,215^BY2,3,44^BCN,,N,N^FH\
    ^FD>:@Model.Data.PrimaryProductCode^FS
    ^FT50,270^A0N,25,25^FB380,2,-1,C,0^FD @Model.Data.PrimaryProductCode^FS
    ^FXc
    </pre>
    </div>
    @Model.Data.Description <br>
    @Model.Data.Price.ToString("C") <br>
    @Model.Data.PrimaryProductCode <br>
    <div style="font-size:0.5px; color:white; "><pre>^FS^XZ</pre></div>


  • Changing ^FT75 to ^FT55 moves the barcode towards the left edge of the label. This is necessary because the barcode using subset B will be longer than the one using subset C.
  • Changing ^BY3 to ^BY2 makes the verticle lines of the barcode thinner. This is necessary because the subset B barcode would be too long for the label if the lines were thicker.
  • Changing ^FD>; to ^FD>: changes the barcode output from subset C to subset B. NOTE: be sure to remove the space between the : and the @ symbol. The resulting line should be: ^FD>:@Model.Data.PrimaryProductCode^FS



References