FS 324096 Pall-Ex Interface: Difference between revisions

From Calidus HUB
(v0.2 - Completed details. Note that this is draft until it is confirmed how the data will be received from the TMSs)
(v1.1 - Removed reference to Barcode scanning)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div class="noprint">
<div class="noprint">
{{#vardefine:Client|PART}}
{{#vardefine:Client|PART}}
{{#vardefine:ClientName|The Client Name}}
{{#vardefine:ClientName|Partnerlink}}
{{#vardefine:System|''CALIDUS'' ePOD}}
{{#vardefine:System|''CALIDUS'' ePOD}}
{{#vardefine:Doc_Title|Pall-Ex Interface}}
{{#vardefine:Doc_Title|Pall-Ex Interface}}
{{#vardefine:Version|0.2}}
{{#vardefine:Version|1.1}}
{{#vardefine:Date|18th June 2013}}
{{#vardefine:Date|2nd September 2015}}
{{#vardefine:Reference|324096}}
{{#vardefine:Reference|324096}}
{{#vardefine:Year|2015}}
{{#vardefine:Year|2015}}
Line 41: Line 41:
The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.
The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.


<!-- {{#var:System}} will be modified to store alternative pallet barcode fields. This will be controlled by a flag against the job group.
-->


The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec).
The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). Additionally, this will generate the Pall-Ex pallet barcodes and store them into a field on the job.




Line 48: Line 50:


At least 2 messages will be sent to update the Pall-Ex TWINE system, by connecting through three methods of their existing webservice:
At least 2 messages will be sent to update the Pall-Ex TWINE system, by connecting through three methods of their existing webservice:
* AddEpodConsignment – One message sent per cancelled or completed consignment, to update the consignment as cancelled or completed delivery, with an appropriate reason code.  
* AddEpodConsignment – One message sent per cancelled consignment, to update the consignment as cancelled delivery, with an appropriate reason code.
* AddEpodPallet – One message sent per cancelled or completed pallet, to update the pallets and the consignment as cancelled or completed delivery, with an appropriate reason code.  
* AddMPodImage – to upload the signature image from the delivery to the consignment.
* AddMPodImage – to upload the signature image from the delivery to the consignment.
The process will check the responses of sending these messages to the webservice, and will store the results in the Audit tables within {{#var:System}}. Messages that process in error will be marked as such, so that they may be identified and reprocessed manually if required.
The process will check the responses of sending these messages to the webservice, and will store the results in the Audit tables within {{#var:System}}. Messages that process in error will be marked as such, so that they may be identified and reprocessed manually if required.


{{Warning}} As it has not been confirmed whether {{#var:System}} will be receiving pallet IDs in the format required to update the pallets individually, at this time the system will update Pall-Ex TWINE system at consignment level only. If this is required after sign-off of this specification, further development will be required.


The Mobile Device Application will be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. {{Note}} For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see [[FS 318572 PART Job Group Level Clausing]], referenced in [[#Appendix B: Quote & Document References|Appendix B]].


The Mobile Device Application will also be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. {{Note}} For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see [[FS 318572 PART Job Group Level Clausing]], referenced in [[#Appendix B: Quote & Document References|Appendix B]].
<!-- The Mobile Device Application will also be modified to allow scanning of the alternative barcode specified in the new job group configuration flag, and to display this alternative container ID in any screens that currently display the system Container ID (i.e. the Partnerlink Pallet ID). -->




Line 62: Line 65:
* Jobs will be sent to Partnerlink and through to {{#var:System}} using the existing JobShare interfaces.
* Jobs will be sent to Partnerlink and through to {{#var:System}} using the existing JobShare interfaces.
* Pallets for these Pallet Networks will be labelled with their own network's pallet labels, and not Partnerlink labels, like PalletForce. It is expected that pallets will be created by {{#var:System}} in the normal way, identifying the individual pallets by assigning each pallet a unique ID, counting from the 1 to the total number of pallets.
* Pallets for these Pallet Networks will be labelled with their own network's pallet labels, and not Partnerlink labels, like PalletForce. It is expected that pallets will be created by {{#var:System}} in the normal way, identifying the individual pallets by assigning each pallet a unique ID, counting from the 1 to the total number of pallets.
* The Consignment Barcode will be sent to {{#var:System}} from the host TMS - this will be used to generate the Pall-Ex pallet barcodes, and to update Pall-Ex' TWINE system on completion of the jobs.
* It has been confirmed that Pall-Ex pallet barcodes are generated by adding a 2-digit, zero-filled unbroken sequence to the Consignment Barcode, and the system will generate these barcodes based on this. If this is not correct, it is unlikely that the solution described within this document will be successful.
* The new partners will accept updates into their Transport systems from {{#var:System}} in the standard OBS format - the pallet network system will be updated separately. This will require a modification to identify consignments as being completed for Pall-Ex.
* The new partners will accept updates into their Transport systems from {{#var:System}} in the standard OBS format - the pallet network system will be updated separately. This will require a modification to identify consignments as being completed for Pall-Ex.
* The Consignment will already exist within the Pall-Ex TWINE system, ready for updating with POD information from {{#var:System}}.
* The Consignment will already exist within the Pall-Ex TWINE system, ready for updating with POD information from {{#var:System}}.
Line 111: Line 116:
!Epod Code !!Description !!Type !!Note
!Epod Code !!Description !!Type !!Note
|-
|-
|01 ||Pallet Delivered || ||Default for all jobs
|01 ||Pallet Delivered ||&nbsp; ||Default for all jobs
|-
|-
|02 ||Pallet Delivered Short ||CLA ||
|02 ||Pallet Delivered Short ||CLA ||&nbsp;
|-
|-
|03 ||Pallet Delivered Damaged ||CLA ||
|03 ||Pallet Delivered Damaged ||CLA ||&nbsp;
|-
|-
|04 ||Late Economy Delivery ||CLA ||Possibly not required
|04 ||Late Economy Delivery ||CLA ||Possibly not required
Line 123: Line 128:
|06 ||Late Timed Delivery ||CLA ||Possibly not required
|06 ||Late Timed Delivery ||CLA ||Possibly not required
|-
|-
|07 ||Refused - R.T.S - Damaged ||DET ||
|07 ||Refused - R.T.S - Damaged ||DET ||&nbsp;
|-
|-
|08 ||Refused - R.T.S - Not Required ||DET ||
|08 ||Refused - R.T.S - Not Required ||DET ||&nbsp;
|-
|-
|09 ||Other ||JOB/DET ||
|09 ||Other ||JOB/DET ||&nbsp;
|-
|-
|10 ||No Customer Delivery Paperwork ||CLA ||Possibly not required
|10 ||No Customer Delivery Paperwork ||CLA ||Possibly not required
|-
|-
|13 ||Not Booked In - Awaiting Instructions || ||Not required
|13 ||Not Booked In - Awaiting Instructions ||&nbsp; ||Not required
|-
|-
|14 ||Collection Return Received || ||Not required
|14 ||Collection Return Received ||&nbsp; ||Not required
|-
|-
|15 ||Company Stamped ||CLA ||Possibly not required
|15 ||Company Stamped ||CLA ||Possibly not required
Line 139: Line 144:
|16 ||Handball Delivered ||CLA ||Possibly not required
|16 ||Handball Delivered ||CLA ||Possibly not required
|-
|-
|17 ||In Progress || ||Not required
|17 ||In Progress ||&nbsp; ||Not required
|-
|-
|18 ||Arrived At Delivery point || ||Not required
|18 ||Arrived At Delivery point ||&nbsp; ||Not required
|-
|-
|19 ||Collection Attempted ||JOB ||Possibly not required
|19 ||Collection Attempted ||JOB ||Possibly not required
|}
|}


The interface of job data from the host TMS systems will be modified to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). This will also pass in the Consignment Barcode. For Pall-Ex jobs, this will be:
* PF Tracking Number - Consignment Barcode
* Tracking System - "PALLEX"




Line 151: Line 160:


= Functional Description  =
= Functional Description  =
 
== Database ==
== Admin ==
The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.
 
The ID drop-down list will be modified to allow the new values below when entering a new configuration:
* PALLEX
* FORTRACK
 
== Mobile Device Application ==
The Mobile Device Application will also be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. {{Note}} For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see [[FS 318572 PART Job Group Level Clausing]], referenced in [[#Appendix B: Quote & Document References|Appendix B]].
 
This will be completed by, wherever reason codes are selected for showing throughout the application, the same code changes applied in the above referenced specification are also applied there.
 
 
== Database ===
The database package used to retrieve the job transfer configurations must be modified.
The database package used to retrieve the job transfer configurations must be modified.


Line 209: Line 204:
     AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)>0
     AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)>0
     WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID
     WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID


<!-- A new flag will be added to the Job Group table EPOD_JOB_GROUP, to control which container ID will be used when scanning containers on the mobile device. This will be called "EPL_CONTAINER_SCANNED" and will be a text field, defaulting to the value "EPL_CONTAINER_ID". -->
== Admin ==
=== Export Configuration Screen ===
The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.
[[File:FS_324096_ExportConfig1.PNG|border|600px]]
<br />''Export Configuration Maintenance''<br />
The ID drop-down list will be modified to allow the new values below when entering a new configuration:
* PALLEX
* FORTRACK
<!-- === Job Group Maintenance Screen ===
A new flag will be added to the Job Group table EPOD_JOB_GROUP, to control which container ID will be used when scanning containers on the mobile device.
[[File:FS_3274096_JobGroup1.PNG|border|600px]]
<br />''Job Group Maintenance''<br />
This will be added to the PDA tab and called "Pallet Barcode". The field will be a drop-down list of values, as follows:
* "EPL_CONTAINER_ID" (the default value) - labelled as "Container ID"
* "EPL_CODE_1" - labelled as "Alternative ID 1"
* "EPL_CODE_2" - labelled as "Alternative ID 2"
* "EPL_CODE_3" - labelled as "Alternative ID 3"
{{Note}} The Partnerlink Import process for Pall-Ex jobs is currently the only process that will populate these fields, and it is expected that this will populate only the first field - the other values been added in case of any potential data contentions.
The tab contents will be organised to ensure that this field is in line with all others, and is efficiently organised.
=== Container/Products Screen ===
This screen will be modified to display the new External Container IDs.
[[File:FS_3274096_Container1.PNG|border|600px]]
<br />''Container/Product Maintenance''<br />
The table displaying containers will be modified to add the alternative IDs to the display, depending on the job group of the job being displayed. The container ID will always be displayed, and a column will be added to display the appropriate external ID field, depending on the new Job Group configuration flag EPL_CONTAINER_SCANNED having a value other than "EPL_CONTAINER_ID": If so, the field indicated in the flag will be displayed (for example, if the value is "EPL_CODE_2", the value of field EPL_CODE_2 will be displayed in this column). If the value of the flag is "EPL_CONTAINER_ID", this column will not be displayed.
[[File:FS_3274096_Container2.PNG|border]]
<br />''Container/Product Add/Edit pop-up screen''<br />
The Pop-up Container Entry/Amend screen will be modified to allow entry and amendment of the fields EPL_CODE_1, EPL_CODE_2 and EPL_CODE_3. These will be added under the existing Container ID.
-->
== Mobile Device Application ==
=== Reason Code Entry ===
The Mobile Device Application will also be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. {{Note}} For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see [[FS 318572 PART Job Group Level Clausing]], referenced in [[#Appendix B: Quote & Document References|Appendix B]].
This will be completed by, wherever reason codes are selected for showing throughout the application, the same code changes applied in the above referenced specification are also applied there.
<!-- === Database/DAL ===
The Job Group table will be modified to store the new flag EPL_CONTAINER_SCANNED. This will be populated on initial log on and, if not received, will default to the value "EPL_CONTAINER_ID". All functions that update or create the Job Group table will be modified to set this value.
The PDA_CONTAINER DAL object will be modified to return the displayable container ID, based on the configuration on the Job Group.
A new property (EPL_DISP_ID) and a new method (getDispID) will be added to the object, to allow the retrieval of the correct field. The new property will default to null.
The procedure will have a parameter of the field to be displayed. If the new object property EPL_DISP_ID is not null, the procedure will return the value in this property. If this property is null, the procedure will check the value of the field specified. If this is not null or a zero-length string, the procedure will return this value, otherwise it will return the value of the system container ID (EPL_CONTAINER_ID).
The PDA_CONTAINERS DAL object will be modified to search by the field configured against the job group. The existing find method will be modified to accept a parameter of the field being searched. The search will check against this value, or the value of EPL_CONTAINER_ID, and return the container if a match has been found.
=== Collection/Delivery ===
The process will change to search, scan and enter containers using the field identified in the new Job Group configuration flag EPL_CONTAINER_SCANNED.
The process will perform an initial validation check on whether the configured container display field exists in first container on the screen, to ensure that, if this is set to a value that doesn't exist within the mobile device application, it will default the value of EPL_CONTAINER_SCANNED to "EPL_CONTAINER_ID".
Whenever a container ID is displayed on the screen or an alert or message is displayed to the user, the screen currently displays the system container ID (currently the Partnerlink Pallet ID). The process will be modified to display the ID required by the configuration against the Job Group, in the new flag EPL_CONTAINER_SCANNED. This will be achieved by calling the new function created for this purpose (the new PDA_CONTAINER method getDispID, passing the value of the Job Group configuration flag EPL_CONTAINER_SCANNED).
Items affected are numerous in this screen, but consist of:
* The Container list
* The Products tab title
* All alerts and informational messages to the users, when scanning, entering or delivering containers.
{{Note}} The pop-up Info screen will not require modification, as the container and alternative values are already displayed here.
Whenever a container barcode is scanned or entered, the process will find the barcode scanned by the user in the containers list. The function to do this (the find method of the PDA_CONTAINERS object) will be amended as part of this specification to find the container, and the call to this function will be modified to pass in the value of the Job Group configuration flag EPL_CONTAINER_SCANNED.
{{Note}} This function is also called from actions resulting from pressing against the row on the containers list. This will be called, hard-coding the parameter of the find method to "EPL_CONTAINER_ID".
The call of the Signature Capture screen should be modified to pass in the Job Group as a new parameter, by reference, as will all other instances where this Signature Capture process is called.
=== Signature ===
The parameters to this screen should be modified to receive the job group from the calling screens. If nothing is received in this parameter, the screen should fetch the Job Group for the first (or only) job being signed for.
Whenever a container ID is displayed, the screen currently displays the system container ID (currently the Partnerlink Pallet ID). The process will be modified to display the ID required by the configuration against the Job Group, in the new flag EPL_CONTAINER_SCANNED. This will be achieved by calling the new function created for this purpose (the new PDA_CONTAINER method getDispID, passing the value of the Job Group configuration flag EPL_CONTAINER_SCANNED).
Items affected:
* The list of containers on the containers tab.
{{Note}} The pop-up Clause screen will not require modification, as the container and alternative values are already displayed here.
=== Cancellation ===
The parameters to this screen (and all functions that call this screen) should be modified to receive the job group from the calling screens. If nothing is received in this parameter, the screen should fetch the Job Group for the first (or only) job being actioned.
Whenever a container ID is displayed, the screen currently displays the system container ID (currently the Partnerlink Pallet ID). The process will be modified to display the ID required by the configuration against the Job Group, in the new flag EPL_CONTAINER_SCANNED. This will be achieved by calling the new function created for this purpose (the new PDA_CONTAINER method getDispID, passing the value of the Job Group configuration flag EPL_CONTAINER_SCANNED).
Items affected:
* The title at the top of the screen (e.g. "Cancel Container X")
* The action text at the top of the screen (e.g. "Are you sure you wish to cancel Container X for job Y?")
* Confirmation message (e.g. "Container X cancelled")
-->
== Auto-Import ==
== Auto-Import ==
The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote & Document References|Appendix B]]. The changes are as follows:
The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote & Document References|Appendix B]]. The changes are as follows:
Line 235: Line 342:


If the new field Tracking System is not passed, the system will operate as it does now (assuming PalletForce). If passed in, this will be used to set the Job Group against the incoming job.  
If the new field Tracking System is not passed, the system will operate as it does now (assuming PalletForce). If passed in, this will be used to set the Job Group against the incoming job.  
If the Tracking System has been set to "PALLEX"<!-- and the new Job Group configuration flag EPL_CONTAINER_SCANNED is configured to a value other than "EPL_CONTAINER_ID" -->, the procedure should generate the Pall-Ex pallet IDs at the same time as generating the Container IDs, by concatenating the Consignment Barcode (in PF Tracking Number) with a 2-digit counter, incremented per pallet to be created, zero-filled. This should be saved onto the container in the field EPL_CODE_1. <!-- indicated in the Job Group configuration flag. -->




Line 258: Line 367:
The resulting message should be in this format:
The resulting message should be in this format:


:addEpodConsignment
;addEpodConsignment
  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
     xmlns:tem="http://tempuri.org/">
     xmlns:tem="http://tempuri.org/">
Line 279: Line 388:




:addMPodImage
;addEpodPallet
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:tem="http://tempuri.org/">
  <soap:Header/>
  <soap:Body>
      <tem:addEpodPallet>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:PalletBarcode>?</tem:PalletBarcode>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
      </tem:addEpodPallet>
  </soap:Body>
</soap:Envelope>
 
 
;addMPodImage
  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
     xmlns:tem="http://tempuri.org/">
     xmlns:tem="http://tempuri.org/">
Line 296: Line 424:


This function will check the response and, if this is a failure, will mark the job as having failed export (exactly as it does in the existing SOAP code). The responses, if successful will follow the format of:
This function will check the response and, if this is a failure, will mark the job as having failed export (exactly as it does in the existing SOAP code). The responses, if successful will follow the format of:
    Tag "whatevermethodResponse" containing tag "whatevermethodResult", containing at least the text "Success", as below for example:
:Tag "whatevermethodResponse" containing tag "whatevermethodResult"
containing at least the text "Success", as below for example:


  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
Line 305: Line 434:
         <addEpodConsignmentResult>Success: Epods Added</addEpodConsignmentResult>
         <addEpodConsignmentResult>Success: Epods Added</addEpodConsignmentResult>
       </addEpodConsignmentResponse>
       </addEpodConsignmentResponse>
  </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
      <addEpodPalletResponse xmlns="http://tempuri.org/">
        <addEpodPallettResult>Success: Epods Added</addEpodPallettResult>
      </addEpodPalletResponse>
   </soap:Body>
   </soap:Body>
  </soap:Envelope>
  </soap:Envelope>
Line 328: Line 467:


=== New Pall-Ex Auto-Export Process ===
=== New Pall-Ex Auto-Export Process ===
{{Note}} It is assumed that this process will perform consignment-level debriefing only, not pallet-level debriefing, because:
<!-- {{Note}} It is assumed that this process will perform consignment-level debriefing only, not pallet-level debriefing, because:
* the pallet level webservice within TWINE may not be working as expected at this time
* the pallet level webservice within TWINE may not be working as expected at this time
* {{#var:System}} may not have the Pall-Ex pallet IDs or know the format
* {{#var:System}} may not have the Pall-Ex pallet IDs or know the format
* {{#var:System}} may not be sent the pallet information from Mandata.
* {{#var:System}} may not be sent the pallet information from Mandata.


 
-->
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GenerateJobExportContent and will be called EPOD_SYS_EXPORT.GeneratePallExContent.
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GenerateJobExportContent and will be called EPOD_SYS_EXPORT.GeneratePallExContent.


In a change from the function this is copied from, the job itself will be passed by reference to this function instead of the job ID and Site ID.
In a change from the function this is copied from, the job itself will be passed by reference to this function instead of the job ID and Site ID.


The process will then make two calls to the TWINE webservice, the root of which will be defined in the transfer configuration:
The process will then make several calls to the TWINE webservice, the root of which will be defined in the transfer configuration:
* AddEpodConsignment – One message sent per completed or cancelled consignment, to update the consignment. If cancelled, there will also be an appropriate reason code.  
* AddEpodConsignment – One message sent per cancelled consignment, to update the consignment with an appropriate reason code.  
* AddEpodPallet - One message sent per completed (cancelled or delivered) pallet, to update the pallet with the appropriate reason code.
* AddMPodImage – to upload the signature image from the delivery to the consignment. Only for successfully completed deliveries.
* AddMPodImage – to upload the signature image from the delivery to the consignment. Only for successfully completed deliveries.


Line 352: Line 492:
|Password ||Password provided by Pallex ||Required ||EPOD_XF_CONFIG.EPL_WEB_PASSWORD
|Password ||Password provided by Pallex ||Required ||EPOD_XF_CONFIG.EPL_WEB_PASSWORD
|-
|-
|Barcode ||The Consignment Barcode ||Nvarchar(18) ||EPOD_JOB.EPL_PF_TRACKING_NO. Note: Only one need be populated. It has not yet been confirmed which (this or ConsignmentID), but the assumption is this one.
|Barcode ||The Consignment Barcode ||Nvarchar(18) ||EPOD_JOB.EPL_PF_TRACKING_NO.
|-
|-
|ConsignmentID ||The Consignment ID ||Nvarchar(13) ||EPOD_JOB.EPL_PF_TRACKING_NO. Note: See above
|ConsignmentID ||The Consignment ID ||Nvarchar(13) ||Not required
|-
|-
|CURN ||Not in Use ||
|CURN ||Not in Use || &nbsp;
|-
|-
|podDateTime ||The time the signature was captured ||Any Valid Date Time format ||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME
|podDateTime ||The time the signature was captured ||Any Valid Date Time format ||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME
Line 366: Line 506:
|PodSignature ||A string representation of the Recipient signature ||Nvarchar(50) ||EPOD_JOB.EPL_CUST_SIGNATORY
|PodSignature ||A string representation of the Recipient signature ||Nvarchar(50) ||EPOD_JOB.EPL_CUST_SIGNATORY
|-
|-
|PODCode ||Predefined list ||Nvarchar(2) || See below.
|PODCode ||Predefined list ||Nvarchar(2) || EPOD_JOB.EPL_REASON_CODE
|}
|}
For PODCode, for normal successful deliveries (where there is no reason code set against them), this should be set to "01". In all other cases, the reason code against the job should be used here (EPOD_JOB.EPL_REASON_CODE).


The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:
The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:
Line 383: Line 521:
         <tem:PODCode>?</tem:PODCode>
         <tem:PODCode>?</tem:PODCode>
       </tem:addEpodConsignment>
       </tem:addEpodConsignment>
For the AddEpodPallet message, this should be placed in within an AddEpodPallet tag with the following tags:
{| border="1"
|- bgcolor="silver"
!Parameter !!Description !!Details !! Notes
|-
|username ||Username provided by Pallex ||Required ||EPOD_XF_CONFIG.EPL_WEB_USER
|-
|password ||Password provided by Pallex ||Required ||EPOD_XF_CONFIG.EPL_WEB_PASSWORD
|-
|palletbarcode ||The Pallet Barcode ||Nvarchar(18) ||<!-- The field from EPOD_CONTAINER referenced by the new Job Group configuration flag EPL_CONTAINER_SCANNED, assumed to be -->EPOD_CONTAINER.EPL_CODE_1.
|-
|podsignature ||A string representation of the Recipient signature ||Nvarchar(50) ||EPOD_JOB.EPL_CUST_SIGNATORY
|-
|podcode ||Predefined list ||Nvarchar(2) || EPOD_CONTAINER.EPL_REASON_CODE if populated, else "01"
|-
|poddatetime ||Date and time of delivery ||XML Date Time format ||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME, formatted as an XML DateTime
|-
|poddesc ||Any additional notes ||Nvarchar(250) ||EPOD_CONTAINER.EPL_CUST_COMMENTS
|-
|manualmpodscan ||Please set to True for any electronic solution. ||True / False ||Hardcoded "True"
|}
For PODCode, for normal successful deliveries (where there is no reason code set against them), this should be set to "01". In all other cases, the reason code against the job should be used here (EPOD_CONTAINER.EPL_REASON_CODE).
The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:
      <tem:addEpodPallet>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:PalletBarcode>?</tem:PalletBarcode>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
      </tem:addEpodPallet>




Line 409: Line 586:
         <tem:oImageData>cid:454165867125</tem:oImageData>
         <tem:oImageData>cid:454165867125</tem:oImageData>
       </tem:addMPodImage>
       </tem:addMPodImage>


<!-- MEDIA LANDSCAPE YES -->  
<!-- MEDIA LANDSCAPE YES -->  
= Appendix A: TEST PLAN  =
= Appendix A: TEST PLAN  =
{{TestPlan_Header
{{TestPlan_Header
Line 433: Line 607:
|Remarks=
|Remarks=
|PassFail=
|PassFail=
}} {{TestPlan_CycleFooter}}  
}}<!-- {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Ensure that Pallet Barcode can be configured on the PDA tab of the Job Groups Maintenance screen.
|Result=The new field is present. The drop-down list contains the values as described. The value saved can be saved, retrieved, edited and displayed correctly.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Configure the system as using EPL_CODE_1 as the alternative pallet ID. Use the Container/Products screen to create a new Container.
|Result=The pop-up allows Alternative ID 1, 2 and 3 to be added, saved, displayed and edited as expected.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Save a value in EPL_CODE_1. Save and display the screen.
|Result=The container table should display an additional column to show the alternative pallet ID - the correct value is displayed in this table for the record changed.
|Remarks=
|PassFail=
}} -->{{TestPlan_CycleFooter}}  


{{TestPlan_CycleHeader
{{TestPlan_CycleHeader
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}
|Title=Mobile Device
|Title=Mobile Device - Reason Codes
|Notes=Set up as follows:
|Notes=Set up as follows:
* Set up Exclusive, Non-exclusive and generic reason codes at Job, Detail and Clause level.  
* Set up Exclusive, Non-exclusive and generic reason codes at Job, Detail and Clause level.  
Line 498: Line 690:
|PassFail=
|PassFail=
}} {{TestPlan_CycleFooter}}  
}} {{TestPlan_CycleFooter}}  
 
<!--
{{TestPlan_CycleHeader
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}
|Title=Mobile Device - Alternative Container IDs
|Notes=Set up as follows:
* Set up the system to use EPL_CODE_1 as the alternative pallet ID.
* Set up a jobs that are for a PALLEX export, with several containers:
** 3 with a unique value in EPL_CODE_1.
** 3 without a value in EPL_CODE_1
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Start a delivery job and move to the Container tab.
|Result=The Container IDs displayed in the container list are the values entered in EPL_CODE_1. The one without a value in here should display the container ID instead.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Click on a container in the container list with an alternative ID and choose Deliver.
|Result=A message should display showing the container is delivered, showing the value in EPL_CODE_1
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Click on a container in the container list with an alternative ID and choose Cancel
|Result=The Cancellation screen should show the container ID as the value in EPL_CODE_1
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Cancel the container with a reason code.
|Result=A message should display showing the container is cancelled, showing the value in EPL_CODE_1
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Click on a container in the container list with an alternative ID and choose Info
|Result=The Container Information screen should display the container and Code 1 values separately - the container ID should be the system container ID.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Enter a container to deliver that does not exist as a system or alternative container ID.
|Result=A message should display showing the container could not be found.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Enter a container to deliver that exists as an alternative container ID
|Result=A message should display showing the container is delivered, showing the value in EPL_CODE_1
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Enter a container to deliver that exists with a system container ID
|Result=A message should display showing the container is delivered, showing the value in EPL_CONTAINER_ID
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Scan a container to deliver that does not exist as a system or alternative container ID.
|Result=A message should display showing the container could not be found.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Scan a container to deliver that exists as an alternative container ID
|Result=A message should display showing the container is delivered, showing the value in EPL_CODE_1
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Scan a container to deliver that exists with a system container ID
|Result=A message should display showing the container is delivered, showing the value in EPL_CONTAINER_ID
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Complete the delivery
|Result=The signature screen should display, showing the container IDs correctly i.e. those with Alternative Codes will display those, those without will display the system container ID.
|Remarks=
|PassFail=
}} {{TestPlan_Test
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}
|Action=Clause a container with an alternative container ID
|Result=The Container Information screen should display the container and Code 1 values separately - the container ID should be the system container ID.
|Remarks=
|PassFail=
}} {{TestPlan_CycleFooter}}
-->
{{TestPlan_CycleHeader
{{TestPlan_CycleHeader
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}
Line 561: Line 841:
|RefV4=2.8
|RefV4=2.8
|RefDate4=04/02/2014
|RefDate4=04/02/2014
|EREQ=0
|EEST=1.25
|EFS=2.0
|ETS=1.5
|EDEV=7.75
|ESTT=1.5
|EIMP=1
|EPM=1
|REQ=0
|REQ=0
|EST=1.25
|EST=1.25
|FS=2.0
|FS=3.0
|TS=1.5
|TS=2.5
|DEV=7.75
|DEV=14.25
|ST=1.5
|ST=2.75
|IMP=1
|IMP=1
|PM=1
|PM=1.75
|Client={{#var:Client}}
|Client={{#var:Client}}
|Year={{#var:Year}}
|Year={{#var:Year}}
|FSEST=Y
|FSEST=Y
|FOC=Y
|FIXEDCOST=6000
|Rev1=Matt Turner
|Rev1=Matt Turner
|Rev1Title=OBSL Account Manager
|Rev1Title=OBSL Account Manager

Latest revision as of 10:25, 2 September 2015





Aptean Logo.png







Partnerlink

Pall-Ex Interface


CALIDUS ePOD

2nd September 2015 - 1.1
Reference: FS 324096












































Functional Overview

Client Requirement

AE Parker will be rolling out CALIDUS ePOD to their fleet and will need to send ePOD information/confirmation on deliver completion through to Pall-Ex systems.


Solution Overview

Process:

  • The new partner A.E.Parker will be set up with a new partner code within CALIDUS ePOD, will be configured for their use following the standard configuration. This partner will be configured for export to the TMS system in use.
  • Pall-Ex specific reason codes will be set up as required by the Pall-Ex TWINE system.
  • New Pall-Ex Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs.
  • When planned, these jobs will be sent to CALIDUS ePOD through the existing interface in use for the existing partners, and will be identified with a new Job Group e.g. PALLEX. Note: This will require change to the sending process from the TMS system to accommodate this new job group.
  • The jobs will be completed like any other normal delivery.
  • When jobs are completed, the existing AutoExport functionality will update the Partners (identified through their Partner Codes) using a flat-file export of the job details in OBS Logistics' XML format, as it does with each existing partner.
  • The AutoExport process will also export the files to Pall-Ex TWINE system, identified through the Job's Group and the configuration attached to it.
  • The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.


The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.


The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). Additionally, this will generate the Pall-Ex pallet barcodes and store them into a field on the job.


The new Pall-Ex Export process will work as follows:

At least 2 messages will be sent to update the Pall-Ex TWINE system, by connecting through three methods of their existing webservice:

  • AddEpodConsignment – One message sent per cancelled consignment, to update the consignment as cancelled delivery, with an appropriate reason code.
  • AddEpodPallet – One message sent per cancelled or completed pallet, to update the pallets and the consignment as cancelled or completed delivery, with an appropriate reason code.
  • AddMPodImage – to upload the signature image from the delivery to the consignment.

The process will check the responses of sending these messages to the webservice, and will store the results in the Audit tables within CALIDUS ePOD. Messages that process in error will be marked as such, so that they may be identified and reprocessed manually if required.


The Mobile Device Application will be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. Note Note: For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see FS 318572 PART Job Group Level Clausing, referenced in Appendix B.


Scope

Assumptions:

  • Jobs will be sent to Partnerlink and through to CALIDUS ePOD using the existing JobShare interfaces.
  • Pallets for these Pallet Networks will be labelled with their own network's pallet labels, and not Partnerlink labels, like PalletForce. It is expected that pallets will be created by CALIDUS ePOD in the normal way, identifying the individual pallets by assigning each pallet a unique ID, counting from the 1 to the total number of pallets.
  • The Consignment Barcode will be sent to CALIDUS ePOD from the host TMS - this will be used to generate the Pall-Ex pallet barcodes, and to update Pall-Ex' TWINE system on completion of the jobs.
  • It has been confirmed that Pall-Ex pallet barcodes are generated by adding a 2-digit, zero-filled unbroken sequence to the Consignment Barcode, and the system will generate these barcodes based on this. If this is not correct, it is unlikely that the solution described within this document will be successful.
  • The new partners will accept updates into their Transport systems from CALIDUS ePOD in the standard OBS format - the pallet network system will be updated separately. This will require a modification to identify consignments as being completed for Pall-Ex.
  • The Consignment will already exist within the Pall-Ex TWINE system, ready for updating with POD information from CALIDUS ePOD.
  • AE Parker will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.


Changes will be made to latest version of CALIDUS ePOD only, and will require an update to all application components and full system and user acceptance testing.


This process is dependent on multiple reason codes for pallet networks change, specified in EST 318572 PART Job Group Level Clausing - No Duplicates. The work for this change must be completed before or as part of this change.


The reason codes used by Pall-Ex are not currently used in the Partnerlink system (2 character numeric values from 01 to 19), so these will not cause any contention in the system. It has been confirmed that any conflicts between these reason codes and any generic or partner-specific reason codes of the same type will be resolved by the partners.


This process is dependent on jobs being received into CALIDUS ePOD through the standard Partnerlink interface, changes to which have been specified in FS 326965 Partnerlink EPOD Interface, referenced in Appendix B. This change to the inbound interface may require changes to the Partner TMS systems to allow the new fields to be specified. The changes for this have been specified here for completeness. Note that no changes will be necessary to Partner TMS systems if those systems are used solely by partners that do not complete Pall-Ex jobs or have no requirement to specify linked (consolidated) jobs.


Additionally, jobs will be exported through the standard interface (also specified in the same document). As the latest version of the system is being used for the basis of this change, this may require changes to the partner TMS systems to extract the information in the new format. Note that only new fields have been added - fields have not been changed for purpose or function.


Note Note: This change requires integration with another system, so up to 1 day has been added to the specification and testing time to allow for this. If the specification time increases beyond this time allowed due to additional work required during this stage, the estimate will be increased to cover the actual time taken.


Set-up

Pre-requisites

Menu Structure

Data

  • New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.
  • A new Job Group "PALLEX" will be set up for Pall-Ex jobs. This will initially be a copy of the Palletforce job group "PALLET".
  • A new Auto-Export configuration will be created, linked to the job group PALLEX:
  • Pall-Ex Reason Codes added for all sites that require them, as follows:
Epod Code Description Type Note
01 Pallet Delivered   Default for all jobs
02 Pallet Delivered Short CLA  
03 Pallet Delivered Damaged CLA  
04 Late Economy Delivery CLA Possibly not required
05 Late Next Day Delivery CLA Possibly not required
06 Late Timed Delivery CLA Possibly not required
07 Refused - R.T.S - Damaged DET  
08 Refused - R.T.S - Not Required DET  
09 Other JOB/DET  
10 No Customer Delivery Paperwork CLA Possibly not required
13 Not Booked In - Awaiting Instructions   Not required
14 Collection Return Received   Not required
15 Company Stamped CLA Possibly not required
16 Handball Delivered CLA Possibly not required
17 In Progress   Not required
18 Arrived At Delivery point   Not required
19 Collection Attempted JOB Possibly not required


The interface of job data from the host TMS systems will be modified to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). This will also pass in the Consignment Barcode. For Pall-Ex jobs, this will be:

  • PF Tracking Number - Consignment Barcode
  • Tracking System - "PALLEX"


Functional Description

Database

The database package used to retrieve the job transfer configurations must be modified.

The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:

  • OWNER - the owning site.
  • OPERATOR - the operating site.
  • PALLET - any pallet network configuration

Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.

Any existing code will not be modified, so as not to affect current functionality.

An additional selection will be added to this and returned with the others, looking for transfer configurations for the new pallet networks (PALLEX and FORTRACK).

This section will link to the job specified, the site and job group for the job, and the indicated XF Configuration records of ID "PALLEX" or "FORTRACK" that match the job type (Delivery or Collection). If found, the Job Group configuration will be returned in preference to the Site configuration.

This configuration will also be marked as PARTNER_TYPE "PALLET", to indicate that this is a pallet network configuration.


Note Note: Suggested SQL:

   union all
   SELECT c.*, 'PALLET' PARTNER_TYPE FROM
   EPOD_JOB j
   INNER JOIN EPOD_SITE s
   ON s.EPL_SITE_ID = j.EPL_SITE_ID
   INNER JOIN EPOD_JOB_GROUPS jg
   ON jg.EPL_SITE_ID = j.EPL_SITE_ID 
   AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP
   LEFT JOIN EPOD_XF_CONFIG cjg
   ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG
   AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK') 
   AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)>0
   LEFT JOIN EPOD_XF_CONFIG cs
   ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG
   AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK') 
   AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)>0
   INNER JOIN EPOD_XF_CONFIG c
   ON c.EPL_XF_CONFIG_ID = CASE
       WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID
       ELSE cs.EPL_XF_CONFIG_ID
   END
   AND c.EPL_XF_ID IN ('PALLEX','FORTRACK') 
   AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)>0
   WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID



Admin

Export Configuration Screen

The Admin Export Configuration screen will be changed to allow the parameters for the new Pall-Ex extract to be specified against it.

FS 324096 ExportConfig1.PNG
Export Configuration Maintenance

The ID drop-down list will be modified to allow the new values below when entering a new configuration:

  • PALLEX
  • FORTRACK


Mobile Device Application

Reason Code Entry

The Mobile Device Application will also be modified to allow Job Group (exclusive, non-exclusive and generic) reason codes for Job and Detail reason codes as well as Clause reason codes. Note Note: For a more detailed explanation of exclusive, non-exclusive and generic reason codes, see FS 318572 PART Job Group Level Clausing, referenced in Appendix B.

This will be completed by, wherever reason codes are selected for showing throughout the application, the same code changes applied in the above referenced specification are also applied there.


Auto-Import

The Partnerlink Import process will be modified to add a field to the import process to identify the Pallet System in use (for example, Palletforce, Pall-Ex, Fortec). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in Appendix B. The changes are as follows:

# Field Name Type Max Length Notes
63 PF Depot C 10 Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.
64 PF Tracking Number C 30 Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.
* Tracking System C 29 This identifies any external pallet tracking system in use for this job. Currently values of "PALLET", "PALLEX", "FORTRACK". If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to "PALLET" (for the Palletforce network).
* Linked ID C 40 If this is set, any jobs with the same linked ID on the same load will be consolidated into a single delivery or collection. Note Note: Only link jobs of the same type and partner or pallet network.
* Load Information C 500 If this is set, shown on the ePOD Device Load Information pop-up.

Note Note: Those items marked with * above have been added since the last implementation of this interface. The other items above already existed but have had their length changed.


If the new fields Linked ID and Load Information are not passed, the system will not populate the data within CALIDUS ePOD.

If the new field Tracking System is not passed, the system will operate as it does now (assuming PalletForce). If passed in, this will be used to set the Job Group against the incoming job.

If the Tracking System has been set to "PALLEX", the procedure should generate the Pall-Ex pallet IDs at the same time as generating the Container IDs, by concatenating the Consignment Barcode (in PF Tracking Number) with a 2-digit counter, incremented per pallet to be created, zero-filled. This should be saved onto the container in the field EPL_CODE_1.


Auto-Export

The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.

Any that do not require transfer will be marked as transferred.

Any that have an applicable export configuration (see the database package modification above) will be passed to a procedure to transfer out according to the type (XF_ID) and parameters set against the configuration.

This function (EPOD_SYS_EXPORT.ExportJob) will be modified when checking EPOD_PARTNER_XF_CONFIG.EPL_XF_ID, to convert to a switch statement rather than a compound if statement. The cases are:

  • PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent
  • PALLEX - for Pall-Ex exports (see next section) - calls new function EPOD_SYS_EXPORT.GeneratePallExContent, defined below. The call to this function will be similar to that of the above, except that the Job will be passed as a parameter.
  • FORTRACK - for ForTec exports (future development) - This is added to support future development, and should drop through to the default processing with an appropriate comment.
  • Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent

All code will be placed in a switch statement rather than a compound if statement.


Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For Pall-Ex messages, this will require a change to the standard SOAP message processing. The function will be changed to add a section specific to Export ID "PALLEX", with all existing codes enclosed as the default processing.

For Export ID PALLEX, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. Note Note: This procedure may need a slight modification to ensure that the messages are sent in the correct format - if this is the case, existing code function should be maintained for all other messages.

The resulting message should be in this format:

addEpodConsignment
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:tem="http://tempuri.org/">
  <soap:Header/>
  <soap:Body>
     <tem:addEpodConsignment>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:Barcode>?</tem:Barcode>
        <tem:ConsignmentID>?</tem:ConsignmentID>
        <tem:CURN>?</tem:CURN>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
     </tem:addEpodConsignment>
  </soap:Body>
</soap:Envelope>


addEpodPallet
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:tem="http://tempuri.org/">
  <soap:Header/>
  <soap:Body>
     <tem:addEpodPallet>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:PalletBarcode>?</tem:PalletBarcode>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
     </tem:addEpodPallet>
  </soap:Body>
</soap:Envelope>


addMPodImage
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:tem="http://tempuri.org/">
  <soap:Header/>
  <soap:Body>
     <tem:addMPodImage>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:ConsignmentBarcode>?</tem:ConsignmentBarcode>
        <tem:oImageData>cid:454165867125</tem:oImageData>
     </tem:addMPodImage>
  </soap:Body>
</soap:Envelope>

This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function. Note Note: This is SOAP 1.2, not SOAP 1.0 - the latter is not supported.

This function will check the response and, if this is a failure, will mark the job as having failed export (exactly as it does in the existing SOAP code). The responses, if successful will follow the format of:

Tag "whatevermethodResponse" containing tag "whatevermethodResult"

containing at least the text "Success", as below for example:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
     <addEpodConsignmentResponse xmlns="http://tempuri.org/">
        <addEpodConsignmentResult>Success: Epods Added</addEpodConsignmentResult>
     </addEpodConsignmentResponse>
  </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
     <addEpodPalletResponse xmlns="http://tempuri.org/">
        <addEpodPallettResult>Success: Epods Added</addEpodPallettResult>
     </addEpodPalletResponse>
  </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
     <addMpodImageResponse xmlns="http://tempuri.org/">
        <addMpodImageResult>Success: Pod Image Added</addMpodImageResult>
     </addMpodImageResponse>
  </soap:Body>
</soap:Envelope>

As long as the result tag exists, and the text within contains "Success", this will be seen as a successful send. Anything else (i.e. no Result tag or "Success" not contained within will be seen as a failure.

Once this is complete, the job will be marked as having been exported for each successful export type (OPERATOR, OWNER and PALLET), based on the success of the send above. The new PALLEX export is seen as a PALLET export type.

When all exports have been successful, the job is marked as completely exported and will not be exported again.

The result (success or fail) and the response will be logged to the Audit table.


New Pall-Ex Auto-Export Process

Note Note: This function will be heavily based on the existing function EPOD_SYS_EXPORT.GenerateJobExportContent and will be called EPOD_SYS_EXPORT.GeneratePallExContent.

In a change from the function this is copied from, the job itself will be passed by reference to this function instead of the job ID and Site ID.

The process will then make several calls to the TWINE webservice, the root of which will be defined in the transfer configuration:

  • AddEpodConsignment – One message sent per cancelled consignment, to update the consignment with an appropriate reason code.
  • AddEpodPallet - One message sent per completed (cancelled or delivered) pallet, to update the pallet with the appropriate reason code.
  • AddMPodImage – to upload the signature image from the delivery to the consignment. Only for successfully completed deliveries.


For the AddEpodConsignment message, this should be placed in within an AddEpodConsignment tag with the following tags:

Parameter Description Details Notes
UserName Username provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_USER.
Password Password provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_PASSWORD
Barcode The Consignment Barcode Nvarchar(18) EPOD_JOB.EPL_PF_TRACKING_NO.
ConsignmentID The Consignment ID Nvarchar(13) Not required
CURN Not in Use  
podDateTime The time the signature was captured Any Valid Date Time format EPOD_JOB.EPL_ACTUAL_END_DATE/TIME
Poddesc Any additional notes Nvarchar(250) EPOD_JOB.EPL_USER_NOTES
ManualMpodScan Please set to True for any electronic solution. True / False Hardcoded "True"
PodSignature A string representation of the Recipient signature Nvarchar(50) EPOD_JOB.EPL_CUST_SIGNATORY
PODCode Predefined list Nvarchar(2) EPOD_JOB.EPL_REASON_CODE

The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:

     <tem:addEpodConsignment>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:Barcode>?</tem:Barcode>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
     </tem:addEpodConsignment>


For the AddEpodPallet message, this should be placed in within an AddEpodPallet tag with the following tags:

Parameter Description Details Notes
username Username provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_USER
password Password provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_PASSWORD
palletbarcode The Pallet Barcode Nvarchar(18) EPOD_CONTAINER.EPL_CODE_1.
podsignature A string representation of the Recipient signature Nvarchar(50) EPOD_JOB.EPL_CUST_SIGNATORY
podcode Predefined list Nvarchar(2) EPOD_CONTAINER.EPL_REASON_CODE if populated, else "01"
poddatetime Date and time of delivery XML Date Time format EPOD_JOB.EPL_ACTUAL_END_DATE/TIME, formatted as an XML DateTime
poddesc Any additional notes Nvarchar(250) EPOD_CONTAINER.EPL_CUST_COMMENTS
manualmpodscan Please set to True for any electronic solution. True / False Hardcoded "True"

For PODCode, for normal successful deliveries (where there is no reason code set against them), this should be set to "01". In all other cases, the reason code against the job should be used here (EPOD_CONTAINER.EPL_REASON_CODE).

The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:


     <tem:addEpodPallet>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:PalletBarcode>?</tem:PalletBarcode>
        <tem:PodSignature>?</tem:PodSignature>
        <tem:PODCode>?</tem:PODCode>
        <tem:podDateTime>?</tem:podDateTime>
        <tem:poddesc>?</tem:poddesc>
        <tem:manualmpodscan>?</tem:manualmpodscan>
     </tem:addEpodPallet>


For the addMPodImage message, this should be placed in within an addMPodImage tag with the following tags:

Parameter Description Details Notes
UserName Username provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_USER.
Password Password provided by Pallex Required EPOD_XF_CONFIG.EPL_WEB_PASSWORD
consignmentbarcode The Consignment Barcode Nvarchar(16) EPOD_JOB.EPL_PF_TRACKING_NO.
oimagedata The Signature JPG image Bytes EPOD_JOB.EPL_JOB_SIGNATURE

Note Note: the image data content is the raw bytes of the JPEG image, not a base64-encoded string.

The resulting XML should be placed in a list, for returning to the calling function and sending to the TWINE webservice. The format should be as follows:

     <tem:addMPodImage>
        <tem:UserName>?</tem:UserName>
        <tem:Password>?</tem:Password>
        <tem:ConsignmentBarcode>?</tem:ConsignmentBarcode>
        <tem:oImageData>cid:454165867125</tem:oImageData>
     </tem:addMPodImage>

Appendix A: TEST PLAN

Test Script / Scenario ReferencePall-Ex InterfaceCall Number(s): 324096
Test Script / Scenario DescriptionTesting Exports out to the Pall-Ex TWINE system from CALIDUS ePOD.PASS / ISSUES / FAIL
Menu AccessAdministration/Auto-Export 
Pre-requisitesA system configured as Partnerlink Test.Tested By:
 
Test ObjectiveTo test: Job and Detail-level Reason Codes may be selected from a sub-set, based on the job and job group attributes; Auto-Export may be configured for Pall-Ex exports and; Auto-Export exports the jobs correctly to the Pall-Ex TWINE system.Date:
 


Step Action Result Remarks P/F
1 Admin System      
       
1.01 Ensure that Pall-Ex exports may be configured through the Auto-Export screen New Export Configurations may be created of ID PALLEX, allowing selection of this through the drop-down grid and displayed on the table on the screen.    


Step Action Result Remarks P/F
2 Mobile Device - Reason Codes      
  Set up as follows:
  • Set up Exclusive, Non-exclusive and generic reason codes at Job, Detail and Clause level.
  • Set up 3 jobs that are for a PALLEX export, with PALLEX-exclusive reason codes (referred below as PALLEX jobs).
  • Set up 3 jobs that are for a partner job group with non-exclusive reason codes, owned and operated by the same partner (referred below as OWNER OPERATED jobs).
  • Set up 3 jobs that are for a partner job group with non-exclusive reason codes, owned and operated by different partners (referred below as SHARED jobs).
     
2.01 Cancel a PALLEX job. Only exclusive reason codes are shown    
2.02 Cancel a container on a PALLEX job. Only exclusive reason codes are shown    
2.03 Clause a container on a PALLEX job. Only exclusive reason codes are shown    
2.04 Cancel a OWNER OPERATED job. All non-exclusive and generic reason codes are shown    
2.05 Cancel a container on a OWNER OPERATED job. All non-exclusive and generic reason codes are shown    
2.06 Clause a container on a OWNER OPERATED job. All non-exclusive and generic reason codes are shown    
2.07 Cancel a SHARED job. Only generic reason codes are shown    
2.08 Cancel a container on a SHARED job. Only generic reason codes are shown    
2.09 Clause a container on a SHARED job. Only generic reason codes are shown    


Step Action Result Remarks P/F
3 Auto-Export      
  Ensure that the job groups and sites are configured to export to the Pall-Ex TWINE test system.

Set up 5 jobs that are for a PALLEX export, with PALLEX-exclusive reason codes. Ensure that 3 of these PALLEX jobs have a value in EPL_PF_TRACKING_NO that matches one of the following, and 2 do not:

  • C201005267228
  • C201005267229
  • C201005267230
  • C201005267231
  • C201005267232
Start the Auto-Export process.
     
3.01 Successfully complete a job with a correct consignment number. The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TWINE, with reason code "01".    
3.02 Cancel a job with a correct consignment number. The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TWINE, with the correct reason code.    
3.03 Successfully complete a job with an incorrect consignment number. The export should show as an error when exported. The consignment should not be updated in TWINE.    
3.04 Cancel a job with an incorrect consignment number. The export should show as an error when exported. The consignment should not be updated in TWINE.    
3.05 Change the export configuration to point to an incorrect URL for the TWINE webservice. Successfully complete a job with a correct consignment number. The export should show as an error when exported. The consignment should not be updated in TWINE.    


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 1.25 1.25 0 £0.00
Functional Specification 2.00 3.00 0 £0.00
Technical Specification 1.50 2.50 0 £0.00
Development 7.75 14.25 0 £0.00
Testing and Release 1.50 2.75 0 £0.00
Implementation 1.00 1.00 0 £0.00
Project Management 1.00 1.75 0 £0.00
 
TOTAL (FIXED COST) 16.00 26.50   £6,000.00
Estimate excludes training, release to live and go live support.

B.1 References

Ref NoDocument Title & IDVersionDate
1EST 324096 Pall-Ex Interface1.030/03/2015
2FS 318572 PART Job Group Level Clausing1.008/04/2015
3FS 326965 Partnerlink EPOD Interface1.022/05/2015
4Pall-Ex TWINE webservices v2.8.pdf2.804/02/2014


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


Matt Turner

OBSL Account Manager
_____________________________

John Davidson

Partnerlink Director
_____________________________