Opqo provides functionality for printing inventory barcode labels to network-connected Zebra printers, via Maximo.  Printers and labels can be configured in Maximo, and these will be available for use within Opqo.


There are 2 methods for configuring available printers and labels:

  1. Specifying the configuration in Automation Scripts that Opqo installs.
  2. Installing the optional Sharptree Maximo Zebra Printing Extension, and using the Labels and Printers applications this adds.  This extension also adds buttons to the Inventory and Receiving applications for printing labels directly from within Maximo.



Specifying the Printers and Labels via the Opqo Automation Scripts


Opqo installs two Automation Scripts for configuration of printers and labels:


  1. STAUTOSCRIPT.ZEBRALABEL.PRINTERCFG
  2. STAUTOSCRIPT.ZEBRALABEL.LABELCFG


Each of these automation scripts defines a variable containing the configuration.  The following sections contain the configuration details; the details are also available in the comment header in the scripts.



Printers


Printers are defined as an array of values assigned to the printers variable in the STAUTOSCRIPT.ZEBRALABEL.PRINTERCFG automation script.

Each object in the array of printers contains the following attributes:

Attribute
Description
printerThe unique identifier for the printer.
descriptionA description of the printer, displayed to the user.
addressThe network host name or IP address of the printer.
portThe port that the printer is listening on, a value between 0-65535, defaults to 9100, which is the Zebra default port.
mediaThe media identifier, typically in HxW (2x1, 4x6 etc) format although non-standard identifiers may be used. 
defaultBoolean value that indicates that the printer is the default for the storeroom location. 
orgidThe Maximo Organization identifier for the storeroom location. 
siteidThe Maximo Site identifier for the storeroom location.
locationThe name of the storeroom location where the printer is located.


Key points to note:


  • The orgid, siteid and location identify the storeroom location that the printer resides in.
  • This storeroom location is used to filter the printers that are available to those that match the record being printed.
  • The media field is used to identify the labels that can be printed on the printer, by finding labels with the same media value.


An example configuration containing a single printer is as follows:

var printers = [
  {
    "printer": "EXAMPLEPRINTER",
    "description": "Example Printer",
    "address": "central-printer.acme.com",
    "port": 9100,
    "media": "4x2",
    "default": true,
    "orgid": "EAGLENA",
    "siteid": "BEDFORD",
    "location": "CENTRAL"
  }
];



Labels


Labels are defined as an array of values assigned to the labels variable in the STAUTOSCRIPT.ZEBRALABEL.LABELCFG automation script.


Each object in the array of labels contains the following attributes:

AttributeDescription
labelThe unique identifier for the label.
descriptionA description of the label, displayed to the user.
mediaThe media identifier, typically in HxW (2x1, 4x6 etc) format although non-standard identifiers may be used.
usewithThe Maximo object that the label can be used with. INVBALANCES, INVENTORY and MATRECTRANS are supported.
zplThe ZPL definition for the label. The ZPL can contain Maximo bind variables (:ATTRIBUTE), such as :ITEMNUM that will be replaced with the value from the provided record.
defaultBoolean value that indicates that the label is the default for the usewith and media combination.


Key points to note:


  • The media field is used to identify the printers that can be used to print the label, by finding printers with the same media value.


An example configuration containing a single label is as follows:


var labels = [
  {
    "label": "EXAMPLELABEL",
    "description": "Example Label",
    "media": "4x2",
    "usewith": "INVBALANCES",
    "zpl": "^XA^FX Description of the item^CFA,30^FO50,50^FD:ITEM.DESCRIPTION^FS^FO50,120^GB700,3,3^FS^FX Section with bar code.^BY5,2,150^FO100,170^BC^FD:ITEMNUM^FS^XZ",
    "default": true
  }
];


Note that JSON does not allow line-breaks so the ZPL must be provided on a single line without line-breaks.


For clarity the ZPL from the example above is provided formatted below. Note the use of :ITEM.DESCRIPTION and :ITEMNUM Maximo bind variables that are replaced with the current Maximo record's values.


^XA

^FX Description of the item
^CFA,30
^FO50,50^FD:ITEM.DESCRIPTION^FS
^FO50,120^GB700,3,3^FS

^FX Section with bar code.
^BY5,2,150
^FO100,170^BC^FD:ITMENUM^FS

^XZ


A full reference for the ZPL commands can be found here: https://www.zebra.com/content/dam/zebra/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf 


Labelary provides an excellent tool for creating and editing ZPL labels here: http://labelary.com/viewer.html



Installing the Sharptree Maximo Zebra Printing Extension


Details for installing the Sharptree Maximo Zebra Printing extension are available here: 

https://github.com/sharptree/zebra-label




If you have questions please do not hesitate to contact us or create a support ticket for more assistance.