FS 354795 DER-354306-2 EPOD Label Printing

From Calidus HUB





Aptean Logo.png







OBS Logistics Ltd

EPOD Label Printing


CALIDUS ePOD

2nd January 2019 - 0.2
Reference: FS 354795 DER-354306-2












































Functional Overview

Client Requirement

The customer has the following requirements:

  • Each collection must have the option to collect a Charity Gift Aid declaration.
  • Each collected item must be uniquely labelled, showing the charity for which the item is being collected, the donor name and a barcode of the unique item ID.
  • Each label must be produced directly produced by the CALIDUS ePOD mobile device application as each item is collected.


Solution Overview

The process as designed is as follows:

Collection jobs are created, either by a connected transport management system (for example, C-TMS) or directly in the C-ePOD Admin console. These can be with items to be collected or without items, just volume for planning.

So, from C-TMS:

  • Order lines of DU types and quantity e.g "BAG" qty 2.
  • Order items, one per qty of DU made up of OMS Ref and a unique counter e.g 123456001.

In C-ePOD:

  • Loose Products of Product (usually the DU type) and quantity e.g "BAG" quantity 2.
  • Container, one per the number of DUs collected, made up of the Job Code and a unique counter e.g 123456001

Once the admin user have created these jobs and assigned them to loads with vehicles and/or users, they will be avilable for the Mobile Device users to complete.

The driver will log on to the mobile device application as they do now.

As the site is set up for printing, the mobile device application will display the Printer Selection process after log-on:

  • The application prompts for a printer, showing all Bluetooth printers paired with the device, and an option to choose "No Printer".
  • The driver will then selects one of the printers.

Once selected, the application will display the load and job list.


The driver has an option to select printer from the hamburger menu here, which re-starts the Printer Selection process above - this is provided in case the driver needs to swap the printer for another one after log on.


The driver will select a job and start it. The driver will indicate when they have arrived at the job.

For pre-advised containers:

  • The driver can long-press on a container and use the Print Label option to print a label.

For ad hoc containers:

  • The driver clicks the New Item button which shows a pop-up:
    • The driver selects the DU from a drop-down list provided by the application.
    • The driver selects the job destination, if there are multiple destinations from this address.
    • If the application is generating container IDs, and the site printing flag is set to Multiple, the driver can also select the number of containers to create, and the number of labels to print i.e. create 4 "BAG" items for destination "BHF Liverpool 1".
  • If the application is configured for printing, a printer has been selected, and the job group of the container's job has a label format, the label (or labels) will be printed then.
  • A confirmation dialogue will be displayed, allowing the driver to:
    • Confirm that all the labels have been printed.
    • Reprint the label (or labels).
    • Change the printer (through the Printer Selection process above)
  • The driver can reprint any single label by long-pressing on the container on the list and select Print Label from the pop-up options.

The driver will get the signature and the T&Cs will gather either:

  • the donor's existing Gift Aid Number for that charity or
  • the Gift Aid Declaration.

When the driver completes the job, the application will update all of this information in the C-ePOD server. Any ad hoc containers that were collected will be created in C-ePOD.

The C-ePOD system will update any external system (for example, C-TMS) with the completed jobs.


Scope

The customer has selected the Brother RJ-4030 mobile printer for the labels.

This device has since been received and OBSL have tested this with the following results:

  • Once paired with the device, the printer is available to the test application.
  • The printer can be connected through secure Bluetooth with no additional modifications.
  • The printer prints the GFG ZPLII format label identically to the Zebra QL410+ printer.

Note Note: The Zebra QL410+ printer prints the same label through the same Bluetooth mechanism, with identical results.

Note Note: This specification details some changes for future growth of this printing mechanism, for receipt or product labels. However, this development will only deal with Container-label formats.


Note Note: The following progress has been made on this change, during evaluation:

  • On-device code prototyped:
    • Merge and format labels (replaceTags.js) and a test harness for this code (test.html).
    • Generate container ID format (utilising the above prototype).
    • Print labels via Bluetooth printers in ZPLII format (calidusprintingsdk module).
    • GFG label format already created (in the test harness for replaceTags).

This code is available in the network folder for this change.

Note Note: A further prototype of assisted label creation is also available in this folder (editDiv.html). This prototype demonstrates a graphical method of inserting, editing and deleting fields from a label format in an editable text box. Although this is not covered as part of this specification, it is highly recommended that this is included in the development. This prototype extensively utilizes jQuery and the Chosen plug-in, which are included in the JQuery sub-folder.


Set-up

Pre-requisites

N/A.


Menu Structure

N/A.


Data

In order to implement the changes for testing, the following data must be configured:

A Container label format should be created, matching the following:

  • Name - "GFG Item Label"
  • Format:
^XA^LT0^LH32,96^MNN^FWN^PW812^LL1199
^FO16,0^A0,100,100^FD[PDASITE.EPL_DESCRIPTION]
^FS^FO85,100^BY3,3.0,25^BCN,250,N,N,N,N^FD[PDACONTAINER.EPL_CONTAINER_ID]
^FS^FO16,400^A0,60,60^FD[PDAJOB.EPL_OWNER_NAME]
^FS^FO16,470^A0,50,40^FD[PDAJOB.EPL_ALT_ADDRESS_1]
^FS^FO16,540^A0,50,40^FD[PDAJOB.EPL_CUSTOMER_NAME]
^FS^PQ1,0,1,Y
^XZ


New fields will be configured on EPOD_SITE, so that the user can configure that the site is using label printing and generating container IDs:

  • EPL_PRINTING_IND - set to 1 (enabled).
  • EPL_CONTAINER_GENERATION - set to "[PDAJOB.EPL_JOB_CODE][PDACONTAINER.EPL_SEQUENCE(3)]"


A new field will be configured on EPOD_JOB_GROUP, so that the user can configure the use of labels for that job group:

  • EPL_CONTAINER_LABEL_ID - this should be set to the ID of the label created above.


List Items for new list labelType:

    • Value "C", description "Container".
    • Value "P", description "Product".
    • Value "R", description "Receipt".


Note Note: If assisted editing of label formats is to be completed, further new lists and list items must be added as follows:

List Items for new list labelFieldSelect_Load:

  • Value "[PDALOAD.EPL_LOAD_ID]", description "Load Number".
  • Value "[PDALOAD.EPL_ROUTE_CODE]", description "Route Code".

List Items for new list labelFieldSelect_Job:

  • Value "[PDAJOB.EPL_JOB_CODE]" description "Job Code".
  • Value "[PDAJOB.EPL_CUST_REF]" description "Cust Ref".
  • Value "[PDAJOB.EPL_SO_NUMBER]", description "SO Number".
  • Value "[PDAJOB.EPL_EXT_REF]", description "External Ref".
  • Value "[PDAJOB.EPL_LOAD_ID]", description "Load Number (Job)".
  • Value "[PDAJOB.EPL_JOB_TYPE]", description "Job Type".

List Items for new list labelFieldSelect_Addresses:

  • Value "[PDAJOB.EPL_NAME]", description "Customer Name".
  • Value "[PDAJOB.EPL_ADDRESS_LINE_1]", description "Address 1".
  • Value "[PDAJOB.EPL_ADDRESS_LINE_2]", description "Address 2".
  • Value "[PDAJOB.EPL_ADDRESS_LINE_3]", description "Address 3".
  • Value "[PDAJOB.EPL_ADDRESS_LINE_4]", description "Address 4".
  • Value "[PDAJOB.EPL_ADDRESS_LINE_5]", description "Address 5".
  • Value "[PDAJOB.EPL_POSTCODE]", description "Post Code".
  • Value "[PDAJOB.EPL_TELEPHONE]", description "Telephone".
  • Value "[PDAJOB.EPL_ALT_ADDRESS_LINE_1]", description "Address 1 (Alt)".
  • Value "[PDAJOB.EPL_ALT_ADDRESS_LINE_2]", description "Address 2 (Alt)".
  • Value "[PDAJOB.EPL_ALT_ADDRESS_LINE_3]", description "Address 3 (Alt)".
  • Value "[PDAJOB.EPL_ALT_ADDRESS_LINE_4]", description "Address 4 (Alt)".
  • Value "[PDAJOB.EPL_ALT_ADDRESS_LINE_5]", description "Address 5 (Alt)".
  • Value "[PDAJOB.EPL_ALT_POSTCODE]", description "Post Code (Alt)".

List Items for new list labelFieldSelect_Container:

  • Value "[PDACONTAINER.EPL_CONTAINER_ID]", description "Container ID".
  • Value "[PDACONTAINER.EPL_DESCRIPTION_LONG]", description "Container Description (Long)".
  • Value "[PDACONTAINER.EPL_SEQUENCE]", description "Container Sequence".

List Items for new list labelFieldSelect_Product:

  • Value "[PDAPRODUCT.EPL_PRODUCT_CODE]", description "Product Code".
  • Value "[PDAPRODUCT.EPL_SEQUENCE]", description "Product Sequence".
  • Value "[PDAPRODUCT.EPL_DESCRIPTION]", description "Product Description".
  • Value "[PDAPRODUCT.EPL_DESCRIPTION_LONG]", description "Product Description (Long)".

List Items for new list labelFieldSelect_Device:

  • Value "[PDADEVICE.CURRENT_DATE_DDMMYYYY]", description "Current Date (DD/MM/YYYY)".
  • Value "[PDADEVICE.CURRENT_TIME_HHMM]", description "Current Time (HH:MM)".


Functional Description

Database/DAL

A new EPOD_LABEL_FORMAT table will be required with the following fields:

  • ELF_ID - data type int. This is a unique ID for that format, auto-generated
  • ELF_NAME - data type nvarchar(50). This is a name that is meaningful to the customer.
  • ELF_FORMAT - data type unlimited text field. This is the label format string.
  • ELF_TYPE - data type type nvarchar(1). This is the type of label.

The Data Access Layer (DAL) must export the table in XML structure, so that it can be passed to the device at log on stage.


A new field will be added to EPOD_JOB_GROUP, so that the user can configure the use of labels for that job group:

  • EPL_CONTAINER_LABEL_ID - datatype int. This is the Label Format for use for container labels.

The DAL will export the new field on EPOD_JOB_GROUP when sending them to the device at log on stage.


New fields will be added to EPOD_SITE, so that the user can configure that the site is using label printing and generating container IDs:

  • EPL_PRINTING_IND - data type int. This is an indicator as to whether the site is using label printing single labels from the device (1) or not (0).
  • EPL_CONTAINER_GENERATION - datatype nvarchar(50). This is a format by which to generate Container IDs.

The DAL will export the new fields on EPOD_SITE when sending it to the device at log on stage.


Admin

Label Format Maintenance

A new Label Format Maintenance Screen will be created, so that the users can maintain their own label formats.

The screen will allow the user to:

  • Find all label formats configured on the system, through searching by the name and type.
  • Select a format to edit.
  • Create a new format.

When the user selects to create a new format or edit an existing one, a pop-up screen will be shown, allowing the user to enter a name and the format string.

The following fields will be available to be edited on an existing format or created on a new format:

  • Label "Type". The pop-up help text is "The type of label, for example Container Label.". The field is populated from ELF_TYPE and is presented as a drop-down list with the following values defined as List Items in the database:
    • Value "C" labelled as "Container Label".
    • Value "P" labelled as "Product Label".
    • Value "R" labelled as "Receipt".
  • Label "Name" with pop-up help text "The name of the format, for customer use". This is presented as a text entry box and cannot be left blank.
  • Label "Format" with pop-up help text "The label format in printer language."

Note Note: At this time, only value "C" ("Container") will be created for the Type field - the other values are for future development.

Note Note: This screen simply allows formats to be entered in a plain text area field - the screen will provide no help or direction to the user regarding how labels should be formatted, or what can reasonably be entered. However, there is a prototype available that assists the users in inserting fields into a format. It is strongly recommended that this be included in the development.

More details on this assisted editing are available in the section below.


The pop-up screen will allow the user to save the label format (through a provided Save button) or discard the changes (through a provided Cancel button).

When saving a new format, the screen will automatically generate a unique ID for the format.


Site Maintenance

The site maintenance screen will be modified to add the new Printing indicator and Container ID generation format.

The screen will have the printing indicator added to the PDA tab. This will be set from the field EPL_PRINTING_IND and labelled as "Printing" with pop-up help text "Whether printing is allowed from the mobile device.". This will be a check-box. If checked, this indicates that printing is enabled for the site (value 1).


The screen will have the container generation format added to the Admin tab. This will be set from the field EPL_CONTAINER_GENERATION and labelled as "Container Generation Template" with pop-up help text "This defines the template for generating container IDs.". This will be presented as a text box.

Note Note: This container generation format field simply allows formats to be entered in a plain text field - the screen will provide no help or direction to the user regarding how labels should be formatted, or what can reasonably be entered. However, there is a prototype available that assists the users in inserting fields into a format. It is strongly recommended that this be included in the development. In this case, the editable field should be an in-line element (such as a span), not a block element (such as a div), to restrict entry of line breaks. If this cannot be restricted in this way, then the process should either block entry of line breaks or filter them out when saving.

More details on this assisted editing are available in the section below.


Job Group Maintenance

The job group maintenance screen will be modified to add the following field:

  • EPL_CONTAINER_LABEL_ID - the Label Format for use for container labels. This will be labelled on the screen as "Container Label Format" with pop-up help text "Select the Container Label format for jobs in this group.". This will be presented as a drop-down list of all label formats of type "C" only. The drop down list will display the contents of ELF_NAME for selection, using the contents EPL_ID as the value.

This field will be added to the Details tab (the first tab).


Assisted Editing

The purpose of this part of the change is to provide the user with some assistance when editing a label format or container ID generation format.

The actual format of the labels (for example, ZPL, EPL, etc) cannot be aided in this form. However, the screen can aid in the section and inputting of fields and the parameters for those fields.


The design of this process is to use an editable HTML element to enter the format, rather than a text box or text area.

The form will provide a tool-bar with a drop-down list of fields (labelFieldSelect) that may be edited. This list will come from new Lists and List Items in the database:

  • labelFieldSelect_Load.
  • labelFieldSelect_Job.
  • labelFieldSelect_Addresses.
  • labelFieldSelect_Container.
  • labelFieldSelect_Product.
  • labelFieldSelect_Device.

The screen will load each list as options into a select field, each being sub-divided into option groups (optgroups).

Note Note: It is recommended that this select field uses the Chosen jQuery plug-in so that the user can search the fields.

The following buttons will be available on the screen:

  • Add Field - this will insert the selected field in the format at the cursor's position.
  • Save Changes and Exit - this will convert the format to plain text from the editable div and put this in the format plain text field.

The prototype shows the complete code required - the following is a summary of the processing, showing the javascript functions required to achieve the processing described:

  • When editing, the plain text format will be loaded into the editable div (function loadString).
  • The editable div will prevent shortcut keypresses, to suppress formatting.
  • When selecting a field and clicking the Add Field button, a new field will be added to the current cursor position in the editable div, as a non-editable span with a unique ID, an icon, a title and a click listener, for editing the field (functions addField, insertNodeOverSelection and isOrContainsNode).
  • When clicked, a field will load an edit pop-up with its details (function editField). This will also load fields for any parameters associated with that field (function fieldParams). Buttons for deleting the field, saving changes and exiting without saving will be added.
  • When parameters are edited and the user clicks the Save button, the field will be updated in the editable div (function updateField).
  • When the user clicks the Close button, the pop-up editing form will be closed (function closeEditField).
  • When the user clicks the Delete button, the field will be removed from the editable div (function deleteField).
  • When the user clicks the Save Changes and Exit button, this will convert the format to plain text from the editable div and put this in the format plain text field (function getResults)


Server

When the user logs on, a log on request is sent to the C-ePOD server, which responds with standing data details required to operate for that site. This log on response message will be modified to add a new section, containing the label formats configured for the system.

The process will retrieve the label format assigned to the job groups for that site. These will be included in a new section "EPOD_LABEL_FORMATS", at the end of the log-on response.

Each label format required will be included within a sub-tag "EPOD_LABEL_FORMAT" directly under the main "LOGON_RESPONSE/DATA" tag, which itself contains the new fields per record.

The following is an example format, showing two label formats being sent to the device:

   <LOGON_RESPONSE ID="001">
       <RESULT>ACK</RESULT>
       <DATE_TIME>...</DATE_TIME>
       <UPDATE_REQUIRED>...</UPDATE_REQUIRED>
       <UPDATES>...</UPDATES>    
       
           <EPOD_SITES>...</EPOD_SITES>
           <EPOD_JOB_GROUPS>...</EPOD_JOB_GROUPS>
           <EPOD_VEHICLES>...</EPOD_VEHICLES>
           <EPOD_USERS>...</EPOD_USERS>
           <EPOD_REASON_CODES>...</EPOD_REASON_CODES>
           <EPOD_SERVICE_PRODUCT_MASTERS>...</EPOD_SERVICE_PRODUCT_MASTERS>
           <EPOD_SERVICE_ACTIVITY_MASTERS>...</EPOD_SERVICE_ACTIVITY_MASTERS>
           <EPOD_UDF_CONFIGS>...</EPOD_UDF_CONFIGS>
           <EPOD_EXPENSE_CATEGORIES>...</EPOD_EXPENSE_CATEGORIES>
           <EPOD_XF_CONFIGS>...</EPOD_XF_CONFIGS>
           <EPOD_LABEL_FORMATS>
               <EPOD_LABEL_FORMAT>
                   <ELF_ID>1</ELF_ID>
                   <ELF_NAME>Test Label</ELF_NAME>
                   <ELF_FORMAT>^XA^FO220,50^FD[PDASITE.EPL_NAME]^FS^XZ</ELF_FORMAT>
                   <ELF_TYPE>C</ELF_TYPE>
               </EPOD_LABEL_FORMAT>
               <EPOD_LABEL_FORMAT>
                   <ELF_ID>2</ELF_ID>
                   <ELF_NAME>Another Test Label</ELF_NAME>
                   <ELF_FORMAT>^XA^FO220,50^FD[PDASITE.EPL_NAME] 2^FS^XZ</ELF_FORMAT>
                   <ELF_TYPE>C</ELF_TYPE>
               </EPOD_LABEL_FORMAT>
           </EPOD_LABEL_FORMATS>
       
   </LOGON_RESPONSE>

Note Note: This message is shown in XML format for clarity, but is more commonly sent in JSON format.

Note Note: The changes to the site and job group data fields defined above will also be included in this message, in the appropriate sections of the message. This will be handled by the changes above and requires no further development here.


Mobile Device

A new EPOD_LABEL_FORMAT table will be required with the following fields:

  • ELF_ID - data type int. This is a unique ID for that format, auto-generated
  • ELF_NAME - data type nvarchar(50). This is a name that is meaningful to the customer.
  • ELF_FORMAT - data type unlimited text field. This is the label format string.
  • ELF_TYPE - data type type nvarchar(1). This is the type of label.

A PDA_LABEL_FORMAT DAL object will be required for this table, allowing all standard actions. This will be developed as a commonJS module.

The DAL object will also include a constructor to select a record based on the ID.

A "DeleteAllLabelFormats" common function will also be required.


A new field will be added to EPOD_JOB_GROUP, so that the user can configure the use of labels for that job group:

  • EPL_CONTAINER_LABEL_ID - datatype int. This is the Label Format for use for container labels.

The PDA_JOB_GROUP DAL object will be modified to add these fields to all common functions.


New fields will be added to EPOD_SITE, so that the user can configure that the site is using label printing or generating container IDs:

  • EPL_PRINTING_IND - data type int. This is an indicator as to whether the site is using label printing single labels from the device (1) or not (0).
  • EPL_CONTAINER_GENERATION - datatype nvarchar(50). This is a format by which to generate Container IDs.

The PDA_SITE DAL object will be modified to add these fields to all common functions.


The application will be modified to process these additional fields and table on the processing of the Login Response web service method (ProcessJSONLoginResponse).


The developers software environment will be updated to include the new printing module (calidusprintingsdk).


Common Printing Module

A new common Printing module will be created as a CommonJS module, to be included as required.

The process will have several functions:

  • Printer Selection - a UI method to allow the user to select a printer from those paired with the device.
  • Print Merge - a method to take a label format and a collection data object and merge the two to return a label to be printed.
  • Print - a method to take a prepared label and a printer name and print the label to the connected printer.
  • Print Confirmation - a UI method to allow the user to confirm the print worked, reprint the label or change the printer,


The printer selection process will build an alert to prompt the user for the printer. The printer selection will be achieved through a picker (drop-down list) populated with the Bluetooth printers paired to this mobile device. The list of Bluetooth printers will be retrieved by using the GetAllPairedDevices from the calidusprintingsdk module. This will then be filtered only for printer devices (classed as "IMAGING" devices). The MAC address will be the key value, and the returned name as the description.

The alert will allow selection of no printer, and will allow the user to select OK to confirm the selection.

The process will store the selected printer and its MAC address in a globally-accessible variable.


The print merge process will take a label format and a collection data object and merge the two to return a label to be printed. This has been prototyped and is available to the developers.

This will be created as a CommonJS module with the following properties and methods:

  • Properties:
    • debug - a boolean to determine whether debug messages are written by the process.
  • Methods:
    • handleFormatting - an internal method to handle the formatting properties. This is a placeholder for future development.
    • handleDefaultFields - an internal method to handle formatting of specific fields.
    • replaceTags - the main method to create the text to be printed, replacing the embedded tags with the required data.

The operation of the object (once created) is to call replaceTags with the format and data object.

The format is a string. The data object is a JSON object with the following DAL objects embedded in it:

  • "PDASITE" : The PDASITE object.
  • "PDAJOB" : The PDAJOB object.
  • "PDACONTAINER" : The PDACONTAINER object.
  • "PDADEVICE" : The PDADEVICE object.

Each DAL bat PDASITE object will be obtained when creating or selecting the container, through reference from the container created. PDASITE is a globally accessible object already available.

PDADEVICE is an object containing device-specific data. This has already been created for UDF purposes, and should be available here with all properties and methods.

The method replaceTags will use a regular expression to extract all tags in the format with data from the data objects.

Field tags in the format file must follow format:

  • enclosed in curly brackets {} or square brackets [] or in <FIELD ID="" /> tags
  • must start with one of PDASITE, PDAJOB, PDALOAD, PDACONTAINER, PDAPRODUCT or PDADEVICE
  • then a . followed by a field name, alphanumeric and underscores only.
  • then a . optionally followed by a UDF field name, alphanumeric and underscores only (not fully implemented yet - do not use).
  • then optionally parameters in brackets, must be at least 1 characters.
  • then optionally formatting command, delimited with /F, then one of N (numeric) or C (currency) then a number of hashes or digits or letters (not to be implemented at this time)


The method handleFormatting will return the passed-in string.


The method handleDefaultFields will check the field being processed for parameters and process them accordingly. The following parameters will be passed to the function:

  • parameters - The parameters, as a string to be parsed.
  • fieldName - The name of the field being dealt with.
  • data - The actual data from the objects.

Note: Only certain fields use parameters, namely:

  • EPL_TELEPHONE - the 0-based index of which telephone number to use. If only one is found, this is always used.
  • EPL_JOB_TYPE - without parameters, this returns the literal value of the job type, With the parameters, this defines literal text to display. Use formatting (Col Text to Display|Del Text to Display|Service Text to Display)
  • EPL_AMENDED_FLAG - without parameters, this returns the literal value of the amended flag, With the parameters, this defines literal text to display. Use formatting (Test if Amended|Text if not amended)
  • EPL_SEQUENCE - without parameters, this returns the literal value of the field. The parameter specifies how many zeroes to pad with. If the length of the value already exceeds this padding, the value is returned.

Any field other than those named will return the data as passed in.

The object is used by instantiating it, then calling replaceTags with the format and data objects. The returned string will be the format with the data tags replaced.


Print Process

The print process will retrieve the required label format for the job group for the selected or created container, then format the string using the print object above and print the label.

The print itself will be handled by the calidusprintingsdk method UnSecureBluetoothPrint passing in the selected printer device's MAC address, and the text to be printed. This method will return a string that can be displayed or checked to show success or failure of the print.


Print Confirmation Process

The print confirmation process is essentially part of the print process.

When the print process returns from printing, the confirmation process will display an alert, showing the success or failure of the print (returned from the print process) and several options:

  • OK - the alert will close. This is the default option.
  • Reprint - the label will print to the currently-selected printer and restart this process.
  • Change Printer - this option will display the printer selection process. Once selected, the label will automatically print again, restarting this process.


Generate Container ID

A process will be created to generate container IDs if configured to do so.

If the site parameter EPL_CONTAINER_GENERATION contains a value, then container IDs will be generated.

In this case, the Ad Hoc Container Collection tab will not have a Scan button, but will instead have a New Item button.


When clicked, this will create a new container. The sequence will be set to the highest sequence of any container on any job being processed. The container ID will be generated by replacing data in the container ID format with the data from the data objects. If this container ID is not unique, a counting sequence will be added to the container ID.

It is expected that the format that will be used is as follows:

  • [PDAJOB.EPL_JOB_CODE][PDACONTAINER.EPL_SEQUENCE(3)]

For a job of job code 123456 and the fourth container added, the result will be "123456004".

Note Note: This function can use the common printing module print merge function to achieve this creation of the container ID, as the template format is the same as label print formats.

The process will return the new container ID and sequence.


Job List

The Job List menu will be modified to add an option Printer Selection. This option will only be added if the site requires printing (so, field PDA_SITE.EPL_PRINTING_IND is set to a non-zero value).

This menu option will call the common printing module's printer selection process.


Collection or Delivery of Containers

The change will modify the long press and click events of the container table in ad hoc container and pre-advised container scanning to add a Print Label option. This option will only be added if:

  • A valid printer has been selected.
  • The site is configured for printing i.e. EPL_PRINTING_IND is non-zero.

When selected, this option will print the label through the standard print label functionality as described above.


If the site parameter EPL_CONTAINER_GENERATION contains a value, then container IDs will be generated. In this case, the Ad Hoc Container Collection tab will not have a Scan button, but will instead have a New Item button.

When clicked, the process will display the standard dialogue for entering the DU type and destination, as now.

If the site is configured for generating container IDs i.e. EPL_CONTAINER_GENERATION contains a value, the dialogue will also allow the user to enter a quantity of items to be created. This will default to 1.

When confirmed, the process will generate a number of containers as identified.

For each container, the process will generate a container ID using the new process as described above. As each container is created they will be saved to the jobs.

Once all containers have been generated, if the site is enabled for printing i.e. EPL_PRINTING_IND is non-zero, then the process will generate all labels into one print string and print it in one print command.


Appendix B: Quote & Document References

Cost Details
Activity Estimate
No. of Days
No. of Days Rate per Day (£) Cost (£ Exc. VAT)
Requirements 0.00 0.00 0 £0.00
Change Request Evaluation 0.00 0.00 0 £0.00
Functional Specification 3.00 3.00 0 £0.00
Technical Specification 0.00 0.00 0 £0.00
Development 14.00 14.00 0 £0.00
Testing and Release 3.50 3.50 0 £0.00
Implementation 0.50 0.50 0 £0.00
Project Management 1.25 1.25 0 £0.00
 
TOTAL 22.25 22.25   £0.00
Estimate excludes training, release to live and go live support.

B.1 References

Ref NoDocument Title & IDVersionDate
1REQ 354306 CFC v2 Lite Requirements0.404/12/2018


B.2 Glossary

Term Definition
EPOD Electronic Proof of Delivery. The OBS EPOD system is CALIDUS ePOD.
CALIDUS eSERV The OBS mobile system to complete Service functionality in the field. This is part of the CALIDUS ePOD system.
PDA The mobile device on which the C-ePOD system will run in the field. This can be a Phone, EDA or industrial PDA, running Android.
DAL Data Access Layer. A mechanism for accessing data by the system that is removed from the application, allowing for simplified access and providing protection to the data, as only approved DAL methods can be used to modify it.
GPS Global Positioning System. A mechanism of retrieving accurate positioning information in the form of Latitude and Longitude (Lat-Long) co-ordinates from a device.
GPRS, 3G, HSDPA, Data Service All terms referring to mobile device network connectivity, and the speed at which the device connects to the internet.


B.3 Authorised By


Murray Middleton

OBS Project Manager
_____________________________