<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rxe</id>
	<title>Calidus HUB - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rxe"/>
	<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php/Special:Contributions/Rxe"/>
	<updated>2026-07-02T00:28:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2939</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2939"/>
		<updated>2016-03-09T13:15:50Z</updated>

		<summary type="html">&lt;p&gt;Rxe: v1.0 Ready for Issue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|1.0}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new Tracking System value. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version (v3.x.x.x) of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be constructed as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Murray Middleton&lt;br /&gt;
|Rev1Title=OBS Product Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2938</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2938"/>
		<updated>2016-03-09T13:14:05Z</updated>

		<summary type="html">&lt;p&gt;Rxe: Undo revision 2937 by Rxe (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|1.0}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new Tracking System value. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version (v3.x.x.x) of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Murray Middleton&lt;br /&gt;
|Rev1Title=OBS Product Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2937</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2937"/>
		<updated>2016-03-09T13:13:06Z</updated>

		<summary type="html">&lt;p&gt;Rxe: v1.0 Status:Reviewed Reason:Ready for Issue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|1.0}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new Tracking System value. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version (v3.x.x.x) of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will retrieve each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Murray Middleton&lt;br /&gt;
|Rev1Title=OBS Product Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2936</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2936"/>
		<updated>2016-03-09T13:07:31Z</updated>

		<summary type="html">&lt;p&gt;Rxe: v0.3 After Internal Review&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|1.0}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new Tracking System value. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version (v3.x.x.x) of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Murray Middleton&lt;br /&gt;
|Rev1Title=OBS Product Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2935</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2935"/>
		<updated>2016-03-09T11:51:12Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.4}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2934</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2934"/>
		<updated>2016-03-09T11:39:32Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. The pallets should show as being delivered. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2933</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2933"/>
		<updated>2016-03-09T11:31:06Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to false. Set the ClauseNotes to the clause reason descriptions. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2931</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2931"/>
		<updated>2016-03-09T11:15:12Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job.&lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will be marked within the AddPOD message as being not Delivered. A message will NOT be sent to delete the pallet from the Connect system via the UpdateConsignmentPalletDelete message. Since Calidus Epod is not receiving information regarding individual pallet numbers, there is no way of identifying multiple delivery attempts for the same pallet. Therefore the system cannot determine whether a re-delivery attempt of pallet has occurred. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets have been cancelled, set the PODType to Delivered. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2929</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2929"/>
		<updated>2016-03-08T16:24:03Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the UpdateConsignmentPalletDelete and AddPOD methods of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will have an UpdateConsignmentPalletDelete message sent. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet has been deleted	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2928</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2928"/>
		<updated>2016-03-08T15:43:14Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the UpdateConsignmentPalletDelete and AddPOD methods of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will have an UpdateConsignmentPalletDelete message sent. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           &lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet has been deleted	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2927</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2927"/>
		<updated>2016-03-08T15:09:20Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the UpdateConsignmentPalletDelete and AddPOD methods of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will have an UpdateConsignmentPalletDelete message sent. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet has been deleted	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2926</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2926"/>
		<updated>2016-03-08T15:08:09Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the UpdateConsignmentPalletDelete and AddPOD methods of their existing ThirdPartyServices webservice. One message will be sent per consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will have a pdateConsignmentPalletDelete message sent. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet has been deleted	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2925</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2925"/>
		<updated>2016-03-08T14:50:16Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number.	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet has been deleted	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2924</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2924"/>
		<updated>2016-03-08T14:38:52Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|8th March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2923</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2923"/>
		<updated>2016-03-08T14:38:08Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These messages will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the UpdateConsignmentPalletDelete message, this should be placed within an UpdateConsignmentPalletDelete tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|consignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|palletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. For any that have been cancelled, an UpdateConsignmentPalletDelete message should be sent. &lt;br /&gt;
&lt;br /&gt;
{{ Note }} Cancelled pallets will not be included in the AddPOD message. If a job has pallets that were cancelled, they will be deleted from the Connect system via the UpdateConsignmentPalletDelete first. The AddPOD message will then have status Delivered or DeliveredClaused on the Connect system.&lt;br /&gt;
&lt;br /&gt;
Then a list of the other Pallet Numbers to send should be built.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. The Pallet repeating object should contain one record per container. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. The Pallet repeating object should contain one record per container. Set the Delivered against each pallet to true.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. The Pallet repeating object should be empty. The ClauseNotes should be blank or omitted. The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list for returning to the calling function and sending to the CONNECT webservice. For each job the UpdateConsignmentPalletDelete messages should be sent before the AddPOD messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2922</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2922"/>
		<updated>2016-03-08T13:46:22Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2921</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2921"/>
		<updated>2016-03-08T13:43:26Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2920</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2920"/>
		<updated>2016-03-08T13:41:24Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2919</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2919"/>
		<updated>2016-03-08T13:40:14Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting messages will use the AddPOD and UpdateConsignmentPalletDelete formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt; &lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:consignmentNumber&amp;gt;?&amp;lt;/tem:consignmentNumber&amp;gt;&lt;br /&gt;
         &amp;lt;tem:palletNumber&amp;gt;?&amp;lt;/tem:palletNumber&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:UpdateConsignmentPalletDelete&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2918</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2918"/>
		<updated>2016-03-08T11:59:36Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting message should be in this format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2917</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2917"/>
		<updated>2016-03-08T11:55:35Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting message should be in this format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* If all pallets that have been successfully delivered, set the PODType to Delivered. Set the Delivered flag against each pallet to true.&lt;br /&gt;
* If some pallets have been delivered claused, set the PODType to DeliveredClaused. Set the ClauseNotes to the notes against the Claused pallets or the clause reason descriptions. Set the Delivered against each pallet to true.&lt;br /&gt;
* If some pallets were cancelled, set the PODType to DeliveredClaused. Set Delivered to false for the cancelled pallets, and the ClauseNotes to the reason code description. The signature should not be set.&lt;br /&gt;
* If all pallets were cancelled, set the PODType to RefusedByConsignee. Set the Delivered flag against each pallet to false. The ClauseNotes should be blank or omitted,  The signature should not be set.&lt;br /&gt;
&lt;br /&gt;
A single AddPOD message should be sent for the whole consignment. The Pallet repeating object should contain one record per container. &lt;br /&gt;
&lt;br /&gt;
{{Note}} If a consignment contains deliveries that have been claused for different reasons, the ClauseNotes will be set to the notes against the Claused pallets or the reason code descriptions for all of claused pallets on the consignment.The trailing spaces should be removed from each field and then appended together into a single string.&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. A single message should have been sent. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. A single message should have been sent. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent on both pallets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent on both pallets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2916</id>
		<title>FS 333427 PART TPN - Pallet Network Interface</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_333427_PART_TPN_-_Pallet_Network_Interface&amp;diff=2916"/>
		<updated>2016-03-07T18:16:29Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|Partnerlink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|TPN - Pallet Network Interface}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|2nd March 2016}}&lt;br /&gt;
{{#vardefine:Reference|333427}}&lt;br /&gt;
{{#vardefine:Year|2016}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Partnerlink Partners David Hathaway and R Swain &amp;amp; Sons require an interface to update the POD Delivery details from CALIDUS ePOD into The Pallet Network (TPN).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
Process:&lt;br /&gt;
*	Any new partners will be set up with a new partner code within ''CALIDUS'' ePOD, will be configured for their use following the standard configuration. These will be configured for export to the TMS system in use.&lt;br /&gt;
*	An export configuration for TPN will be created and linked to the TPN job code.&lt;br /&gt;
*	New Jobs will be sent to Partnerlink through the existing JobShare format, or directly to the back-end TMSs. &lt;br /&gt;
*	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. TPN. {{Note}} This will require change to the sending process from the TMS system to accommodate this new job group. The Consignment number will also be provided.&lt;br /&gt;
*	The Partnerlink Pallet IDs will be generated as now.&lt;br /&gt;
*	The TPN pallet IDs will be generated as an ascending numeric sequence from 1.&lt;br /&gt;
*	The jobs will be completed like any other normal delivery.&lt;br /&gt;
*	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.&lt;br /&gt;
*	The AutoExport process will also export the files to TPN Connect application, identified through the Job's Group and the configuration attached to it.&lt;br /&gt;
*	The AutoExport functionality will store the success or failure of the export, along with any of the returned reasons from the export.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new TPN Export process will work as follows:&lt;br /&gt;
&lt;br /&gt;
A message will be sent to the TPN Connect application, by connecting through the AddPOD method of their existing ThirdPartyServices webservice. One message sent per pallet on the consignment, to update a pallet and consignment with delivery, signatory and signature information. Pallets that are not marked as delivered will still have a message sent, but with the Delivered flag set to false. The pallet ID used for this update will be the TPN pallet ID generated on receipt of the order (the numeric sequence) and the consignment will be set from that provided on the order.&lt;br /&gt;
&lt;br /&gt;
The response will be captured by the process and handled for success or failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
Assumptions:&lt;br /&gt;
*	Jobs will be sent to Partnerlink and through to ''CALIDUS'' ePOD using the existing JobShare interfaces.&lt;br /&gt;
*	It is expected that pallets for TPN will be labelled with their own network's pallet labels. 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. &lt;br /&gt;
*	Partners completing jobs for TPN will accept updates into their Transport systems from ''CALIDUS'' EPOD in the standard OBS format - the TPN Connect system will be updated separately. This will require a modification to identify consignments as being completed for TPN when jobs are interfaced from the external Transport systems.&lt;br /&gt;
*	The Consignment will already exist within the TPN Connect application, ready for updating with POD information from ''CALIDUS'' ePOD.&lt;br /&gt;
*	Any new partners will be assigned a Partner Code by Partnerlink, which will be provided to OBS Logistics prior to implementation of this change.&lt;br /&gt;
&lt;br /&gt;
{{Note}} There are no reason codes required on the interface to TPN Connect for failed deliveries.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Consignment number for TPN jobs may be up to 50 characters. At this time, the maximum job reference length of any type in ''CALIDUS'' ePOD is 20 characters. This SCR does '''''not''''' account for any changes in this length in the database, as it is assumed that this will not be required. If this is required, this will increase the development cost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes will be made to latest version of {{#var:System}} only, and will require an update to all application components and full system and user acceptance testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This process is dependent on jobs being received into {{#var:System}} through the standard Partnerlink interface, changes to which have been specified in [[FS 326965 Partnerlink EPOD Interface]], referenced in [[#Appendix B: Quote &amp;amp; Document References|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 TPN jobs or have no requirement to specify linked (consolidated) jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* New Sites will be set up and configured for all new Partner Codes. This will be as Partnerlink standard.&lt;br /&gt;
* A new Job Group &amp;quot;TPN&amp;quot; will be set up for TPN jobs. This will initially be a copy of the Pall-Ex job group &amp;quot;PALLEX&amp;quot;.&lt;br /&gt;
* A new Auto-Export configuration will be created, linked to the job group TPN:&lt;br /&gt;
** EPL_XF_ID - &amp;quot;TPN&amp;quot;&lt;br /&gt;
** EPL_XF_TYPE - &amp;quot;SOAP&amp;quot;&lt;br /&gt;
** EPL_XF_DIRECTION - &amp;quot;O&amp;quot;&lt;br /&gt;
** EPL_WEB_USER - &amp;quot;203obs&amp;quot; (test)&lt;br /&gt;
** EPL_WEB_PASSWORD - &amp;quot;obs&amp;quot; (test)&lt;br /&gt;
** EPL_XF_DESTINATION - &amp;quot;http://dev.tpnconnect.com/&amp;quot; (test) or &amp;quot;http://pilot.tpnconnect.com/&amp;quot; (live)&lt;br /&gt;
** EPL_SOAP_NS - &amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&lt;br /&gt;
** EPL_SOAP_NS_PREFIX - &amp;quot;con&amp;quot;&lt;br /&gt;
** EPL_EXPORT_JOB_TYPES - &amp;quot;D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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, TPN). This will also pass in the Consignment Number. For TPN jobs, this will be:&lt;br /&gt;
*	PF Tracking Number	- Consignment Number&lt;br /&gt;
*	Tracking System	- &amp;quot;TPN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database ==&lt;br /&gt;
The database package used to retrieve the job transfer configurations must be modified.&lt;br /&gt;
&lt;br /&gt;
The package EPOD_JOB_GROUP_CONFIGS retrieves the transfer configurations for each job, for each possible transfer, namely:&lt;br /&gt;
* OWNER - the owning site.&lt;br /&gt;
* OPERATOR - the operating site.&lt;br /&gt;
* PALLET - any pallet network configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these configurations if present are retrieved sequentially and grouped together and returned to the calling process.&lt;br /&gt;
&lt;br /&gt;
The additional selection will be added to this and returned with the others, looking for transfer configurations for TPN.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Suggested amendment to SQL:&lt;br /&gt;
    union all&lt;br /&gt;
    SELECT c.*, 'PALLET' PARTNER_TYPE FROM&lt;br /&gt;
    EPOD_JOB j&lt;br /&gt;
    INNER JOIN EPOD_SITE s&lt;br /&gt;
    ON s.EPL_SITE_ID = j.EPL_SITE_ID&lt;br /&gt;
    INNER JOIN EPOD_JOB_GROUPS jg&lt;br /&gt;
    ON jg.EPL_SITE_ID = j.EPL_SITE_ID &lt;br /&gt;
    AND jg.EPL_JOB_GROUP = j.EPL_JOB_GROUP&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cjg&lt;br /&gt;
    ON cjg.EPL_XF_CONFIG_ID = jg.EPL_XF_CONFIG&lt;br /&gt;
    AND cjg.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cjg.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    LEFT JOIN EPOD_XF_CONFIG cs&lt;br /&gt;
    ON cs.EPL_XF_CONFIG_ID = s.EPL_XF_CONFIG&lt;br /&gt;
    AND cs.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,cs.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    INNER JOIN EPOD_XF_CONFIG c&lt;br /&gt;
    ON c.EPL_XF_CONFIG_ID = CASE&lt;br /&gt;
        WHEN (cjg.EPL_XF_CONFIG_ID IS NOT NULL) THEN cjg.EPL_XF_CONFIG_ID&lt;br /&gt;
        ELSE cs.EPL_XF_CONFIG_ID&lt;br /&gt;
    END&lt;br /&gt;
    AND c.EPL_XF_ID IN ('PALLEX','FORTRACK', 'TPN') &lt;br /&gt;
    AND CHARINDEX(J.EPL_JOB_TYPE ,c.EPL_EXPORT_JOB_TYPES)&amp;gt;0&lt;br /&gt;
    WHERE J.EPL_JOB_ID=@EPL_JOB_ID  and J.EPL_SITE_ID=@EPL_SITE_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
=== Export Configuration Screen ===&lt;br /&gt;
The Admin Export Configuration screen will be changed to allow the parameters for the new TPN extract to be specified against it.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_324096_ExportConfig1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;''Export Configuration Maintenance''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID drop-down list will be modified to allow the new values below when entering a new configuration:&lt;br /&gt;
* TPN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Import ==&lt;br /&gt;
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, TPN). This has been specified in full in FS 326965 Partnerlink EPOD Interface, referenced in [[#Appendix B: Quote &amp;amp; Document References|Appendix B]]. The changes are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!#	!!Field Name	!!Type	!!Max Length		!!width=&amp;quot;50%&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|63	||PF Depot	||C	||10	||Pallet Tracking System depot code, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|64	||PF Tracking Number	||C	||30	||Pallet Tracking System tracking number, used when generating Pallet IDs for this pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Tracking System	||C	||29	||This identifies any external pallet tracking system in use for this job. Currently values of &amp;quot;PALLET&amp;quot;, &amp;quot;PALLEX&amp;quot;, &amp;quot;FORTRACK&amp;quot;, &amp;quot;TPN&amp;quot;. If this is not set, and Pallet Tracking System Depot Code and Tracking number are set, defaults to &amp;quot;PALLET&amp;quot; (for the Palletforce network).&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||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}} Only link jobs of the same type and partner or pallet network.&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;red&amp;quot;|*	||Load Information	||C	||500	||If this is set, shown on the ePOD Device Load Information pop-up.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the new fields Linked ID and Load Information are not passed, the system will not populate the data within {{#var:System}}.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
If the Tracking System has been set to &amp;quot;TPN&amp;quot;, the procedure should generate the pallet IDs at the same time as generating the Container IDs, by generating a 2-digit counter, incremented per pallet to be created, non-zero-filled. This should be saved onto the container in the field EPL_CODE_1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Auto-Export ==&lt;br /&gt;
The auto-export process retrieves all completed jobs that have not yet been transferred out of the system, and checks whether they require transfer.&lt;br /&gt;
&lt;br /&gt;
Any that do not require transfer will be marked as transferred.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* PF - PalletForce (existing code) - calls EPOD_SYS_EXPORT.GeneratePalletForceContent&lt;br /&gt;
* PALLEX - for Pall-Ex exports (existing code) - calls EPOD_SYS_EXPORT.GeneratePallExContent. &lt;br /&gt;
* FORTRACK - for ForTec exports - This is added to support future development, and should drop through to the default processing with an appropriate comment.&lt;br /&gt;
* TPN - for TPN exports (see next section) - calls new function EPOD_SYS_EXPORT.GenerateTPNContent, defined below. The call to this function will be similar to that of the PALLEX export above.&lt;br /&gt;
* Default - default processing - calls EPOD_SYS_EXPORT.GenerateJobExportContent&lt;br /&gt;
All code will be placed in a switch statement rather than a compound if statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once all the data is created, the function then sends the message in the format specified on the transfer configuration record. For TPN 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 &amp;quot;TPN&amp;quot;, with all existing codes enclosed as the default processing. Essentially, the SOAP message should be built as normal for the POD section, then the username and password added afterwards manually.&lt;br /&gt;
&lt;br /&gt;
For Export ID TPN, the function will loop through each item in the list and send this through a specific SendExportAsSoap function. {{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.&lt;br /&gt;
&lt;br /&gt;
The resulting message should be in this format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
   xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot; &lt;br /&gt;
   xmlns:con=&amp;quot;http://schemas.datacontract.org/2004/07/ConnectSystem.Models.Integration&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;
   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:Pallets&amp;gt;&lt;br /&gt;
               &amp;lt;con:POD_Pallet&amp;gt;&lt;br /&gt;
                  &amp;lt;con:Delivered&amp;gt;1&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
                  &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
               &amp;lt;/con:POD_Pallet&amp;gt;&lt;br /&gt;
            &amp;lt;/con:Pallets&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
This will then be sent to the webservice through the standard mechanism in the system, and the resulting response returned to this function.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
:Tag &amp;quot;whatevermethodResponse&amp;quot; containing tag &amp;quot;whatevermethodResult&amp;quot;&lt;br /&gt;
containing at least the text &amp;quot;Success&amp;quot;, as below for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;s:Envelope xmlns:s=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;s:Body&amp;gt;&lt;br /&gt;
     &amp;lt;AddPODResponse xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;AddPODResult&amp;gt;Error: Unable to authenticate with provided credentials&amp;lt;/AddPODResult&amp;gt;&lt;br /&gt;
    &amp;lt;/AddPODResponse&amp;gt;&lt;br /&gt;
   &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/s:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
As long as the result tag exists, and the text within contains &amp;quot;Success&amp;quot;, this will be seen as a successful send. Anything else (i.e. no Result tag or &amp;quot;Success&amp;quot; not contained within) will be seen as a failure.&lt;br /&gt;
&lt;br /&gt;
{{Note}} This is functionally identical to the method of acknowledging Pall-Ex results and should be combined with this type.&lt;br /&gt;
&lt;br /&gt;
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 TPN export is seen as a PALLET export type.&lt;br /&gt;
&lt;br /&gt;
When all exports have been successful, the job is marked as completely exported and will not be exported again.&lt;br /&gt;
&lt;br /&gt;
The result (success or fail) and the response will be logged to the Audit table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New TPN Auto-Export Process ===&lt;br /&gt;
&lt;br /&gt;
{{Note}} This function will be heavily based on the existing function EPOD_SYS_EXPORT.GeneratePallExContent and will be called EPOD_SYS_EXPORT.GenerateTPNContent.&lt;br /&gt;
&lt;br /&gt;
The process will then make a call to the CONNECT webservice for the method AddPOD, the root of which will be defined in the transfer configuration:&lt;br /&gt;
*	One message will be sent for the whole consignment with each pallet number contained within the message. The consignment will be updated with the appropriate status, time, image and signatory. Each pallet will be marked as either Delivered or not. &lt;br /&gt;
&lt;br /&gt;
{{Note}} Note that there will be no facility to indicate to the CONNECT webservice the reason code for each claused pallet delivery. A pallet that has been delivered with a Claused Reason code will be sent as being delivered.&lt;br /&gt;
&lt;br /&gt;
For the AddPOD message, this should be placed within an AddPOD tag with the following tags:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;silver&amp;quot;&lt;br /&gt;
!Parameter	!!Description	!!Details	!! Notes&lt;br /&gt;
|-&lt;br /&gt;
|userName	||Username provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_USER.&lt;br /&gt;
|-&lt;br /&gt;
|password	||Password provided by TPN	||Required	||EPOD_XF_CONFIG.EPL_WEB_PASSWORD&lt;br /&gt;
|-&lt;br /&gt;
|pod	||The POD information, containing the following tags	||	||&lt;br /&gt;
|-&lt;br /&gt;
|ConsignmentNumber	||The Consignment Number	||String (50)	||EPOD_JOB.EPL_PF_TRACKING_NO.&lt;br /&gt;
|-&lt;br /&gt;
|DeliveryDateTime	||The time of Delivery	||XML Date Time format	||EPOD_JOB.EPL_ACTUAL_END_DATE/TIME&lt;br /&gt;
|-&lt;br /&gt;
|Notes	||Free text relating to the proof of delivery	||String	||EPOD_JOB.EPL_USER_NOTES&lt;br /&gt;
|-&lt;br /&gt;
|PODImage ||The Signature image in PNG format  ||Bytes ||EPOD_JOB.EPL_JOB_SIGNATURE&lt;br /&gt;
|-&lt;br /&gt;
|SigneeName	||Name of person who signed the proof of delivery	||String (50)	||EPOD_JOB.EPL_CUST_SIGNATORY&lt;br /&gt;
|-&lt;br /&gt;
|SignatureOnly 	||Boolean. If true, then the image only contains a signature and not a TPN POD form || Boolean || set to true at all times.&lt;br /&gt;
|-&lt;br /&gt;
|ClauseNotes 	||String. Notes for a claused delivery || String || Set to the clause text or a clause reason code description, if a pallet on the consignment has been claused.&lt;br /&gt;
|-&lt;br /&gt;
|PODType  	||Enum. One of Delivered, DeliveredClaused or RefusedByConsignee || Enum || Set based on Status or clause code.&lt;br /&gt;
|-&lt;br /&gt;
|Pallets Repeating Object                                                           ||&lt;br /&gt;
|-&lt;br /&gt;
|PalletNumber	||The TPN Pallet Number, if a pallet, but not the whole consignment, has been delivered	||Integer	||EPOD_CONTAINER.EPL_CODE_1.&lt;br /&gt;
|-&lt;br /&gt;
|Delivered	||Whether the pallet was delivered (true) or not (false)	||boolean	||(EPOD_JOB.EPL_STATUS==&amp;quot;C&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|End of Pallets Repeating Object                                                     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The process should first convert the Signature for the job to a PNG format.&lt;br /&gt;
&lt;br /&gt;
The process should loop through all containers for the job. Build a list of Pallet Numbers to send.&lt;br /&gt;
&lt;br /&gt;
All fields other than those following should be set as described above.&lt;br /&gt;
* For pallets that have been successfully delivered, set the PODType to Delivered.&lt;br /&gt;
* For pallets that have been delivered claused, set the ClauseNotes to the notes against the pallet or the clause reason description, and the PODType to DeliveredClaused.&lt;br /&gt;
* For pallets that were cancelled, set Delivered to false, the ClauseNotes to the reason code description and the PODType to RefusedByConsignee. The signature should not be set. &lt;br /&gt;
&lt;br /&gt;
For complete consignment deliveries with no cancelled or claused pallets, a single AddPOD message should be sent for the whole consignment. The PalletNumber and ClauseNotes tags should be blank or omitted, Delivered set to true and PODType set to Delivered. The pallet messages need not be created.&lt;br /&gt;
&lt;br /&gt;
For cancelled consignments, as single AddPOD message should be sent for the whole consignment. The PalletNumber and ClauseNotes tags should be blank or omitted, Delivered set to false and PODType set to RefusedByConsignee. The signature should not be set. The pallet messages need not be created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The resulting XML (per message to be sent) should be placed in a list, for returning to the calling function and sending to the CONNECT webservice. The format should be as follows:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tem:AddPOD&amp;gt;&lt;br /&gt;
         &amp;lt;tem:userName&amp;gt;?&amp;lt;/tem:userName&amp;gt;&lt;br /&gt;
         &amp;lt;tem:password&amp;gt;?&amp;lt;/tem:password&amp;gt;&lt;br /&gt;
         &amp;lt;tem:pod&amp;gt;&lt;br /&gt;
            &amp;lt;con:ConsignmentNumber&amp;gt;?&amp;lt;/con:ConsignmentNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:Delivered&amp;gt;?&amp;lt;/con:Delivered&amp;gt;&lt;br /&gt;
            &amp;lt;con:DeliveryDateTime&amp;gt;?&amp;lt;/con:DeliveryDateTime&amp;gt;&lt;br /&gt;
            &amp;lt;con:Notes&amp;gt;?&amp;lt;/con:Notes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODImage&amp;gt;?&amp;lt;/con:PODImage&amp;gt;&lt;br /&gt;
            &amp;lt;con:PalletNumber&amp;gt;?&amp;lt;/con:PalletNumber&amp;gt;&lt;br /&gt;
            &amp;lt;con:SigneeName&amp;gt;?&amp;lt;/con:SigneeName&amp;gt;&lt;br /&gt;
            &amp;lt;con:SignatureOnly&amp;gt;?&amp;lt;/con:SignatureOnly&amp;gt;&lt;br /&gt;
            &amp;lt;con:ClauseNotes&amp;gt;?&amp;lt;/con:ClauseNotes&amp;gt;&lt;br /&gt;
            &amp;lt;con:PODType&amp;gt;?&amp;lt;/con:PODType&amp;gt;&lt;br /&gt;
         &amp;lt;/tem:pod&amp;gt;&lt;br /&gt;
      &amp;lt;/tem:AddPOD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt; &lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Testing Exports out to the TPN CONNECT system from {{#var:System}}.&lt;br /&gt;
|MenuAccess=Administration/Auto-Export&lt;br /&gt;
|Prerequisites=A system configured as Partnerlink Test.&lt;br /&gt;
|Objective=To test: Auto-Export may be configured for TPN exports and; Auto-Export exports the jobs correctly to the TPN Connect system.&lt;br /&gt;
}} {{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin System&lt;br /&gt;
|Notes=&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Ensure that TPN exports may be configured through the Auto-Export screen.&lt;br /&gt;
|Result=New Export Configurations may be created of ID TPN, allowing selection of this through the drop-down grid and displayed on the table on the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}}{{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Auto-Export&lt;br /&gt;
|Notes=Ensure that the job groups and sites are configured to export to the TPN Connect test system.&lt;br /&gt;
&lt;br /&gt;
Set up 5 orders in TPN Connect, each with 2 pallets.&lt;br /&gt;
&lt;br /&gt;
Set up 7 jobs that are for a TPN export. Ensure that 2 of these jobs have a value in EPL_PF_TRACKING_NO that does not match a pre-created consignment in TPN Connect.&lt;br /&gt;
&lt;br /&gt;
Start the Auto-Export process.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with a correct consignment number and all pallets delivered.&lt;br /&gt;
|Result=The export should show as exported successfully. A single message should have been sent. The consignment should be updated to Epod Confirmed with a signature in TPN Connect, showing the signature.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as exported successfully. A single message should have been sent. The consignment should show in TPN Connect as Refused. No signature should be sent.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Successfully complete a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel a job with an incorrect consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with a reason code.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent on both pallets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but clause a pallet with text.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Claused. One pallet should show as delivered, and one shown as delivered claused. A signature should be sent on both pallets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Complete a job with a correct consignment number, but cancel a pallet.&lt;br /&gt;
|Result=The export should show as exported successfully. 2 messages should have been sent, one per pallet. The consignment should show in TPN Connect as Delivered. One pallet should show as delivered, and one shown as refused. A signature should be sent on the delivered pallet.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Change the export configuration to point to an incorrect URL for the TPN Connect webservice. Successfully complete a job with a correct consignment number.&lt;br /&gt;
|Result=The export should show as an error when exported. The consignment should not be updated in TPN Connect.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[EST 333427 PART TPN - Pallet Network Interface]]&lt;br /&gt;
|RefV1=1.0&lt;br /&gt;
|RefDate1=18/02/2015&lt;br /&gt;
|Ref2=[[FS 318572 PART Job Group Level Clausing]]&lt;br /&gt;
|RefV2=1.0&lt;br /&gt;
|RefDate2=08/04/2015&lt;br /&gt;
|Ref3=[[FS 326965 Partnerlink EPOD Interface]]&lt;br /&gt;
|RefV3=1.0&lt;br /&gt;
|RefDate3=22/05/2015&lt;br /&gt;
|Ref4=ThirdPartyServices.docx&lt;br /&gt;
|RefV4=N/A&lt;br /&gt;
|RefDate4=2015&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0.25&lt;br /&gt;
|EFS=1.0&lt;br /&gt;
|ETS=1.0&lt;br /&gt;
|EDEV=4.5&lt;br /&gt;
|ESTT=0.75&lt;br /&gt;
|EIMP=0.25&lt;br /&gt;
|EPM=0.25&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0.25&lt;br /&gt;
|FS=1.0&lt;br /&gt;
|TS=1.0&lt;br /&gt;
|DEV=4.5&lt;br /&gt;
|ST=0.75&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|PM=0.25&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Matt Turner&lt;br /&gt;
|Rev1Title=OBSL Account Manager&lt;br /&gt;
|Rev2=John Davidson&lt;br /&gt;
|Rev2Title=Partnerlink Director&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1700</id>
		<title>EST 318572 PART Job Group Level Clausing</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1700"/>
		<updated>2015-01-29T16:55:34Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Number=318572&lt;br /&gt;
|The_version_of_the_document=2.0&lt;br /&gt;
|Your_Name=A N Walker&lt;br /&gt;
|Supimix_PO_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=16/01/15&lt;br /&gt;
|Clients_Customer=&amp;amp;nbsp;&lt;br /&gt;
|System_Version_being_changed=1.4&lt;br /&gt;
|Client_Request=New Clausing Requirement:&lt;br /&gt;
1. Clausing Reason Codes to be used on all job groups (applicable only to Palletforce currently as per log 314964)&lt;br /&gt;
&lt;br /&gt;
2. Separate Reason codes will apply for 3 different Job Groups&lt;br /&gt;
:a Palletforce (Palletforce or other Pallet Network codes only)&lt;br /&gt;
:b Partnerlink (Delivery for a different Partner - Partnerlink agreed codes to be used only)&lt;br /&gt;
:c Partner (Owned and executed jobs to use own set of codes that link back to the Partner TMS).&lt;br /&gt;
3. Import change, need to split Partnerlink and Owned&amp;amp;executed jobs.&lt;br /&gt;
&lt;br /&gt;
4. Can the TAB on the signature capture screen be changed from &amp;quot;Pallets&amp;quot; to &amp;quot;Clause&amp;quot;.&lt;br /&gt;
|OBS_Solution=The ''CALIDUS'' ePOD system will be modified as follows:&lt;br /&gt;
&lt;br /&gt;
The Reason Codes Maintenance screen will be modified to allow the users to maintain the Group for which the code entered is valid - this may be left blank to indicate codes that may be used for all jobs.&lt;br /&gt;
A new flag against each reason code will indicate whether this reason code is partner-specific or generic.&lt;br /&gt;
&lt;br /&gt;
{{Note|Reason codes themselves must still be unique to the system - a reason code must not exist for the Palletforce job group and also for the Partners job group or Partnerlink reason codes.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Site maintenance screen will be modified to add a new configuration flag to control whether the system should check if there are different reason codes for owners and operators. This will be set up enabled for Partnerlink's system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Job Group maintenance screen will be modified to add a new configuration flag to control whether reason codes for this Job Group are exclusive i.e. no generic Partnerlink codes may be used for jobs of this Job Group, only ones that have been specifically assigned to the Job Group. It is expected that the Pallet Network (for example Palletforce) job group will have this set. It is also possible that other Partner job groups will have this enabled, in case it is decided that the generic Partnerlink codes may not be used for jobs that are owned and operated by the same partner. In the examples contained in this estimate, I have assumed that the Partner Job Codes will allow the use of the generic codes as well as specific codes, although this configuration may be changed at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These new flags and Reason codes fields will be sent to the Android PDA application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When prompting for Clause Reason Codes at job confirmation, the device will check the settings to decide which clause reason codes to display:&lt;br /&gt;
* If this is a Palletforce job (i.e. in the Palletforce Job Group), the device will show only Palletforce clause reason codes.&lt;br /&gt;
* If this is a job owned and operated by the same partner, the device will show all generic Partnerlink clause reason codes, and also all clause reason codes specific to that partner.&lt;br /&gt;
* If this job is being operated on behalf of a different partner, the device will show only the generic Partnerlink clause reason codes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|All other reason codes (e.g. cancellation reason codes) will be unaffected by this change.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The signature screen will be modified so that the title of the current Pallets tab will be displayed as &amp;quot;Clause&amp;quot; instead, only for the Partnerlink style.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=1&lt;br /&gt;
|Functional_Specification_Days=1.25&lt;br /&gt;
|Technical_Specification_Days=1&lt;br /&gt;
|Development_Days=4.25&lt;br /&gt;
|Testing_and_Release_Days=1.25&lt;br /&gt;
|Implementation_Days=.25&lt;br /&gt;
|Project_Management_Days=1&lt;br /&gt;
|Year=2015&lt;br /&gt;
|Free_Of_Charge=N&lt;br /&gt;
|Supimix_Client_Code=PART}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1699</id>
		<title>EST 318572 PART Job Group Level Clausing</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1699"/>
		<updated>2015-01-29T16:50:27Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Number=318572&lt;br /&gt;
|The_version_of_the_document=2.0&lt;br /&gt;
|Your_Name=A N Walker&lt;br /&gt;
|Supimix_PO_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=16/01/15&lt;br /&gt;
|Clients_Customer=&amp;amp;nbsp;&lt;br /&gt;
|System_Version_being_changed=1.4&lt;br /&gt;
|Client_Request=New Clausing Requirement:&lt;br /&gt;
1. Clausing Reason Codes to be used on all job groups (applicable only to Palletforce currently as per log 314964)&lt;br /&gt;
&lt;br /&gt;
2. Separate Reason codes will apply for 3 different Job Groups&lt;br /&gt;
:a Palletforce (Palletforce or other Pallet Network codes only)&lt;br /&gt;
:b Partnerlink (Delivery for a different Partner - Partnerlink agreed codes to be used only)&lt;br /&gt;
:c Partner (Owned and executed jobs to use own set of codes that link back to the Partner TMS).&lt;br /&gt;
3. Import change, need to split Partnerlink and Owned&amp;amp;executed jobs.&lt;br /&gt;
&lt;br /&gt;
4. Can the TAB on the signature capture screen be changed from &amp;quot;Pallets&amp;quot; to &amp;quot;Clause&amp;quot;.&lt;br /&gt;
|OBS_Solution=The ''CALIDUS'' ePOD system will be modified as follows:&lt;br /&gt;
&lt;br /&gt;
The Reason Codes Maintenance screen will be modified to allow the users to maintain the Group for which the code entered is valid - this may be left blank to indicate codes that may be used for all jobs.&lt;br /&gt;
A new flag against each reason code will indicate whether this reason code is partner-specific or generic.&lt;br /&gt;
&lt;br /&gt;
{{Note|Reason codes themselves must still be unique to the system - a reason code must not exist for the Palletforce job group and also for the Partners job group or Partnerlink reason codes.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Site maintenance screen will be modified to add a new configuration flag to control whether the system should check if there are different reason codes for owners and operators. This will be set up enabled for Partnerlink's system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Job Group maintenance screen will be modified to add a new configuration flag to control whether reason codes for this Job Group are exclusive i.e. no generic Partnerlink codes may be used for jobs of this Job Group, only ones that have been specifically assigned to the Job Group. It is expected that the Palletforce job group will have this set. It is also possible that other Partner job groups will have this enabled, in case it is decided that the generic Partnerlink codes may not be used for jobs that are owned and operated by the same partner. In the examples contained in this estimate, I have assumed that the Partner Job Codes will allow the use of the generic codes as well as specific codes, although this configuration may be changed at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These new flags and Reason codes fields will be sent to the Android PDA application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When prompting for Clause Reason Codes at job confirmation, the device will check the settings to decide which clause reason codes to display:&lt;br /&gt;
* If this is a Palletforce job (i.e. in the Palletforce Job Group), the device will show only Palletforce clause reason codes.&lt;br /&gt;
* If this is a job owned and operated by the same partner, the device will show all generic Partnerlink clause reason codes, and also all clause reason codes specific to that partner.&lt;br /&gt;
* If this job is being operated on behalf of a different partner, the device will show only the generic Partnerlink clause reason codes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|All other reason codes (e.g. cancellation reason codes) will be unaffected by this change.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The signature screen will be modified so that the title of the current Pallets tab will be displayed as &amp;quot;Clause&amp;quot; instead, only for the Partnerlink style.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=1&lt;br /&gt;
|Functional_Specification_Days=1.25&lt;br /&gt;
|Technical_Specification_Days=1&lt;br /&gt;
|Development_Days=4.25&lt;br /&gt;
|Testing_and_Release_Days=1.25&lt;br /&gt;
|Implementation_Days=.25&lt;br /&gt;
|Project_Management_Days=1&lt;br /&gt;
|Year=2015&lt;br /&gt;
|Free_Of_Charge=N&lt;br /&gt;
|Supimix_Client_Code=PART}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1698</id>
		<title>EST 318572 PART Job Group Level Clausing</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1698"/>
		<updated>2015-01-29T16:50:05Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Number=318572&lt;br /&gt;
|The_version_of_the_document=0.1&lt;br /&gt;
|Your_Name=A N Walker&lt;br /&gt;
|Supimix_PO_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=16/01/15&lt;br /&gt;
|Clients_Customer=&amp;amp;nbsp;&lt;br /&gt;
|System_Version_being_changed=1.4&lt;br /&gt;
|Client_Request=New Clausing Requirement:&lt;br /&gt;
1. Clausing Reason Codes to be used on all job groups (applicable only to Palletforce currently as per log 314964)&lt;br /&gt;
&lt;br /&gt;
2. Separate Reason codes will apply for 3 different Job Groups&lt;br /&gt;
:a Palletforce (Palletforce or other Pallet Network codes only)&lt;br /&gt;
:b Partnerlink (Delivery for a different Partner - Partnerlink agreed codes to be used only)&lt;br /&gt;
:c Partner (Owned and executed jobs to use own set of codes that link back to the Partner TMS).&lt;br /&gt;
3. Import change, need to split Partnerlink and Owned&amp;amp;executed jobs.&lt;br /&gt;
&lt;br /&gt;
4. Can the TAB on the signature capture screen be changed from &amp;quot;Pallets&amp;quot; to &amp;quot;Clause&amp;quot;.&lt;br /&gt;
|OBS_Solution=The ''CALIDUS'' ePOD system will be modified as follows:&lt;br /&gt;
&lt;br /&gt;
The Reason Codes Maintenance screen will be modified to allow the users to maintain the Group for which the code entered is valid - this may be left blank to indicate codes that may be used for all jobs.&lt;br /&gt;
A new flag against each reason code will indicate whether this reason code is partner-specific or generic.&lt;br /&gt;
&lt;br /&gt;
{{Note|Reason codes themselves must still be unique to the system - a reason code must not exist for the Palletforce job group and also for the Partners job group or Partnerlink reason codes.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Site maintenance screen will be modified to add a new configuration flag to control whether the system should check if there are different reason codes for owners and operators. This will be set up enabled for Partnerlink's system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Job Group maintenance screen will be modified to add a new configuration flag to control whether reason codes for this Job Group are exclusive i.e. no generic Partnerlink codes may be used for jobs of this Job Group, only ones that have been specifically assigned to the Job Group. It is expected that the Palletforce job group will have this set. It is also possible that other Partner job groups will have this enabled, in case it is decided that the generic Partnerlink codes may not be used for jobs that are owned and operated by the same partner. In the examples contained in this estimate, I have assumed that the Partner Job Codes will allow the use of the generic codes as well as specific codes, although this configuration may be changed at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These new flags and Reason codes fields will be sent to the Android PDA application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When prompting for Clause Reason Codes at job confirmation, the device will check the settings to decide which clause reason codes to display:&lt;br /&gt;
* If this is a Palletforce job (i.e. in the Palletforce Job Group), the device will show only Palletforce clause reason codes.&lt;br /&gt;
* If this is a job owned and operated by the same partner, the device will show all generic Partnerlink clause reason codes, and also all clause reason codes specific to that partner.&lt;br /&gt;
* If this job is being operated on behalf of a different partner, the device will show only the generic Partnerlink clause reason codes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|All other reason codes (e.g. cancellation reason codes) will be unaffected by this change.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The signature screen will be modified so that the title of the current Pallets tab will be displayed as &amp;quot;Clause&amp;quot; instead, only for the Partnerlink style.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=1&lt;br /&gt;
|Functional_Specification_Days=1.25&lt;br /&gt;
|Technical_Specification_Days=1&lt;br /&gt;
|Development_Days=4.25&lt;br /&gt;
|Testing_and_Release_Days=1.25&lt;br /&gt;
|Implementation_Days=.25&lt;br /&gt;
|Project_Management_Days=1&lt;br /&gt;
|Year=2015&lt;br /&gt;
|Free_Of_Charge=N&lt;br /&gt;
|Supimix_Client_Code=PART}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1696</id>
		<title>EST 318572 PART Job Group Level Clausing</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_318572_PART_Job_Group_Level_Clausing&amp;diff=1696"/>
		<updated>2015-01-27T17:42:40Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Number=318572&lt;br /&gt;
|The_version_of_the_document=1.0&lt;br /&gt;
|Your_Name=A N Walker&lt;br /&gt;
|Supimix_PO_Reference=&amp;amp;nbsp;&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=16/01/15&lt;br /&gt;
|Clients_Customer=&amp;amp;nbsp;&lt;br /&gt;
|System_Version_being_changed=1.4&lt;br /&gt;
|Client_Request=New Clausing Requirement:&lt;br /&gt;
1. Clausing Reason Codes to be used on all job groups (applicable only to Palletforce currently as per log 314964)&lt;br /&gt;
&lt;br /&gt;
2. Separate Reason codes will apply for 3 different Job Groups&lt;br /&gt;
:a Palletforce (Palletforce or other Pallet Network codes only)&lt;br /&gt;
:b Partnerlink (Delivery for a different Partner - Partnerlink agreed codes to be used only)&lt;br /&gt;
:c Partner (Owned and executed jobs to use own set of codes that link back to the Partner TMS).&lt;br /&gt;
3. Import change, need to split Partnerlink and Owned&amp;amp;executed jobs.&lt;br /&gt;
&lt;br /&gt;
4. Can the TAB on the signature capture screen be changed from &amp;quot;Pallets&amp;quot; to &amp;quot;Clause&amp;quot;.&lt;br /&gt;
|OBS_Solution=The ''CALIDUS'' ePOD system will be modified as follows:&lt;br /&gt;
&lt;br /&gt;
The Reason Codes Maintenance screen will be modified to allow the users to maintain the Group for which the code entered is valid - this may be left blank to indicate codes that may be used for all jobs.&lt;br /&gt;
&lt;br /&gt;
A new flag against each reason code will indicate whether this reason code is partner-specific or generic.&lt;br /&gt;
&lt;br /&gt;
A new optional text item will also be added to allow the users to maintain an Export Reason Code, used when exporting completed jobs back to external systems. &lt;br /&gt;
&lt;br /&gt;
{{Note|Reason codes themselves must still be unique to the system - a reason code must not exist for one job group (for example a pallet network partner) and also for the Partners job group or Partnerlink global reason codes. If the same reason code is required across multiple job groups, the Export Reason code can be used to achieve this in the export file.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Site maintenance screen will be modified to add a new configuration flag to control whether the system should check if there are different reason codes for owners and operators. This will be configured to be enabled for Partnerlink's system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Job Group maintenance screen will be modified to add a new configuration flag to control whether reason codes for this Job Group are exclusive i.e. no generic Partnerlink codes may be used for jobs of this Job Group, only ones that have been specifically assigned to the Job Group. It is expected that the Pallet Network (for example Palletforce) job group will have this set. It is also possible that other Partner job groups will have this enabled, in case it is decided that the generic Partnerlink codes may not be used for jobs that are owned and operated by the same partner. In the examples contained in this estimate, I have assumed that the Partner Job Codes will allow the use of the generic codes as well as specific codes, although this configuration may be changed at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These new flags and Reason codes fields will be sent to the Android PDA application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When prompting for Clause Reason Codes at job confirmation, the device will check the settings to decide which clause reason codes to display:&lt;br /&gt;
* If this is a Pallet Network job (e.g. in the Palletforce Job Group), the device will show only clause reason codes for this pallet network.&lt;br /&gt;
* If this is a job owned and operated by the same partner, the device will show all generic Partnerlink clause reason codes, and also all clause reason codes specific to that partner.&lt;br /&gt;
* If this job is being operated on behalf of a different partner, the device will show only the generic Partnerlink clause reason codes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All Export processes will be modified to check reason codes when exporting completed or cancelled jobs to the external systems - the processes will look up the reason code used on the job and substitute it for the Export Reason Code is one exists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|All other reason codes (e.g. cancellation reason codes) are expected to be unaffected by this change, as the data for these reason codes will not be modified. However, if it is decided that this functionality is applicable across all reason codes, these may be configured to act in the same way as the clause reason codes.}}&lt;br /&gt;
{{Note|Although this modification will support multiple pallet network job codes, currently only Palletforce is in use within Partnerlink. If other pallet networks are added into this implementation, there may be more work required when importing jobs from JobShare, and exporting completed jobs out to the external pallet network systems.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The signature screen will be modified so that the title of the current Pallets tab will be displayed as &amp;quot;Clause&amp;quot; instead, only for the Partnerlink style.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=1.25&lt;br /&gt;
|Functional_Specification_Days=1.75&lt;br /&gt;
|Technical_Specification_Days=1.25&lt;br /&gt;
|Development_Days=5.75&lt;br /&gt;
|Testing_and_Release_Days=1.75&lt;br /&gt;
|Implementation_Days=.25&lt;br /&gt;
|Project_Management_Days=1.25&lt;br /&gt;
|Year=2015&lt;br /&gt;
|Free_Of_Charge=N&lt;br /&gt;
|Supimix_Client_Code=PART}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_318679_SCR04_NHSBT_CTMS.NET_Tag_to_Asset_Scanning&amp;diff=1599</id>
		<title>FS 318679 SCR04 NHSBT CTMS.NET Tag to Asset Scanning</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_318679_SCR04_NHSBT_CTMS.NET_Tag_to_Asset_Scanning&amp;diff=1599"/>
		<updated>2014-10-13T11:59:43Z</updated>

		<summary type="html">&lt;p&gt;Rxe: Changes to test plan in response to 321252.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|NHS}}&lt;br /&gt;
{{#vardefine:ClientName|NHSBT}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' TMS.NET}}&lt;br /&gt;
{{#vardefine:Doc_Title|Tag to Asset Scanning}}&lt;br /&gt;
{{#vardefine:Version|1.0}}&lt;br /&gt;
{{#vardefine:Date|2nd July 2014}}&lt;br /&gt;
{{#vardefine:Reference|318679 SCR04}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
The following changes from the Solution Design document are included in this specification:&lt;br /&gt;
* '''SCR-316403-107''' - Tag To Asset Scanning&lt;br /&gt;
: Tag to Asset Scanning system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview ==&lt;br /&gt;
The operation requires the ability to place picked order items, uniquely labelled by PULSE with Buff Tags, into polar boxes. These polar boxes come in many different sizes and shapes, but will all be identified with a uniquely identified, traceable Asset ID. The scanning of Buff Tags to Assets (Boxes) will be completed by Hospital Services. As there is no process in place within PULSE to achieve this, OBS Logistics will supply a separate scanning application. This is an addition to the original scope of the project ('''SCR-316403-107'''). &lt;br /&gt;
&lt;br /&gt;
This process is essential to the operation and how it wishes to operate, both for process needs (ensuring that all items are correctly boxed), but also for asset tracking, to help reduces losses of valuable assets within the network. As such, other processes within C-TMS and C-EPOD will validate that this has been completed before the orders can be advanced. &lt;br /&gt;
&lt;br /&gt;
The application will be: &lt;br /&gt;
*	accessible through a browser. &lt;br /&gt;
*	designed in such a way to allow fast scanning of barcodes. &lt;br /&gt;
*	be capable of being run from both a mobile device or through a PC with a browser. &lt;br /&gt;
Scanning will be a function of attached external scanning wedges. &lt;br /&gt;
&lt;br /&gt;
The user will log on to the system and start the Tag to Asset process. This is expected to be through a browser with a keyboard wedge scanner. &lt;br /&gt;
&lt;br /&gt;
The process flow is as follows: &lt;br /&gt;
*	Scan Tag 1 &lt;br /&gt;
*	Scan Tag 2 &lt;br /&gt;
*	Scan Tag 3 &lt;br /&gt;
*	Scan Asset 1 - marks tags 1-3 as in Asset 1 &lt;br /&gt;
*	Scan Tag 4 &lt;br /&gt;
*	Scan Tag 5 &lt;br /&gt;
*	Scan Asset 2 - marks tags 4-5 in Asset 2 &lt;br /&gt;
The user of the system will not be allowed to continue until all scanned tags are marked as in an Asset. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The screen will display all Tags and assets scanned by the user, requiring the user to confirm at the end, at which point any additional validation will be displayed and errors resolved. When an Asset is scanned and confirmed, the system will instruct C-TMS to create all Assets and assign the Buff Tags to these Assets ('''SCR-316403-25''').&lt;br /&gt;
&lt;br /&gt;
If an asset is not logged within the asset register as being in this depot at this point of scanning, the asset will be marked as in this depot, and an audit history maintained.&lt;br /&gt;
&lt;br /&gt;
There will be validation when scanning buff tags and asset labels, as follows: &lt;br /&gt;
*	There may be multiple buff tags to an Asset. &lt;br /&gt;
*	There may be multiple hospital requests (orders) in an Asset for the same hospital. &lt;br /&gt;
*	Whether the items are allowed to be scanned together and placed into the same asset (box) - the differences will be noted by the process and the user will be forced to confirm that these items may be packed together.&lt;br /&gt;
*	The barcodes themselves will be validated to ensure they are of the correct type. For example, Buff tags will be recognised by the AI &amp;quot;&amp;amp;x&amp;quot;, whereas permanent Assets will be recognised by the AI &amp;quot;8004&amp;quot;. No other barcodes will be allowed, and the system will automatically recognise these types and these types alone. &lt;br /&gt;
*	An Asset must always be scanned after scanning Buff Tags. &lt;br /&gt;
*	The Buff Tags will be validated with C-TMS to ensure that the Order exists. This will be achieved by extracting the Order Reference from the Buff Tag data (removing the AI and the last 5 digits). This will be matched to C-TMS' External Reference data to find the OMS Reference. Note: The rules governing the extraction of this data will be bespoke to this operation, rather than configurable. &lt;br /&gt;
*	If a Buff tag is scanned multiple times, this is ignored by the application - a facility will exist using screen interaction (using buttons) to reverse any mistakes made when scanning tags. &lt;br /&gt;
*	The status of the Asset (i.e. Active, Inactive, and Retired) will be used to check whether the Asset is available for use. If the status is not Active, the asset must not be allowed to be used, with an audible blocking error displayed on the screen (i.e. a pop-up dialogue). &lt;br /&gt;
The application will perform all of this this validation off-line, and will display any issues on the screen after scanning in an obvious manner. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* The system is designed to make use of the existing barcode wedge scanners and equipment in already in the operation. OBS will need samples of the equipment in use, or details of how the scanner returns data, as this will be key to the validation provided by the application.&lt;br /&gt;
* Any changes to the format of the barcodes as described in this document will result in further changes being required to this system.&lt;br /&gt;
* The scanner will be configured to auto-return the data. If this is not the case, then the user will be forced to manually enter the data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
* A working {{#var:System}} system.&lt;br /&gt;
&lt;br /&gt;
=== Core C-TMS Changes ===&lt;br /&gt;
* Interface routines created for:&lt;br /&gt;
** Order Query - identify the order from the Order Reference and return some details about the order.&lt;br /&gt;
** Permanent Asset Query - identify the details of the permanent asset.&lt;br /&gt;
** Asset Update - update the order items with the asset identified (as a parameter array). Update the assets' status and location.&lt;br /&gt;
** Login Query - identify and validate the user, password and access, and return the user name, depot and access control information.&lt;br /&gt;
* The text of the solution below provides more details on each of the procedures below, including parameters and return details required.&lt;br /&gt;
* Changes pertaining to original SDD SCR-316403-81: Validation is required within EPOD to show when all buff tags have not been properly scanned to Assets:&lt;br /&gt;
** The C-TMS - C-EPOD interface will be modified to change the Job Instructions for any loading collection jobs at the depot that have no asset information when they should have them. This will be based on the standard checks that have been specified for the C-TMS Trip Management screen under original SDD SCR-316403-61. The instructions field will be populated with &amp;quot;WARNING: Some items on this order have not been scanned into assets - please check.&amp;quot;. It will then be up to the driver and Hospital Services to check whether all items that should be available are. This may require refreshing the C-EPOD device to obtain the latest information on the orders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
* C-TMS users must be created with access control, to allow access only to this system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Login ==&lt;br /&gt;
[[File:FS_318517_Login.PNG|border|600px]]&lt;br /&gt;
&lt;br /&gt;
The login screen will be re-purposed from the existing C-CMS.NET application.&lt;br /&gt;
&lt;br /&gt;
{{Note| The whole system will be styled to NHSBT standards - the OBS styling of EPOD Admin will be used as a base, with the NHSBT logo in place of the OBS logo.}}&lt;br /&gt;
&lt;br /&gt;
The screen will prompt the user to enter their username and password.&lt;br /&gt;
&lt;br /&gt;
This controls the depot under which the user is logged on and the access control.&lt;br /&gt;
&lt;br /&gt;
Only if a user is set up for this application and if the user name and password are correct will the user be allowed to continue.&lt;br /&gt;
&lt;br /&gt;
The application will submit the username and password to the server.&lt;br /&gt;
&lt;br /&gt;
The server will validate this data with the database, using a new procedure created for this purpose (or reusing the existing login procedure if one exists, but validating that this is the scanning application):&lt;br /&gt;
* The user exists&lt;br /&gt;
* The password is correct&lt;br /&gt;
* The user has access to the scanning system&lt;br /&gt;
The package will return a status (Success or failure, plus reason), with some other details about the user:&lt;br /&gt;
* Full Name&lt;br /&gt;
* Depot&lt;br /&gt;
&lt;br /&gt;
The application will on successful logon, display the menu/home screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu/Home ==&lt;br /&gt;
This is the screen displayed when a user first logs on.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_318517_Main.PNG|border|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All screens in the system conform to this standard, as follows:&lt;br /&gt;
* A Logo and Header. The logo will be the NHSBT logo and will be fixed as part of the system. The logo will also display the logged on full user name and depot in the top right. An option to log off will be present here.&lt;br /&gt;
* A menu bar - see later&lt;br /&gt;
* A footer, floating below the main screen content. The footer will contain a link to a credits text file.&lt;br /&gt;
&lt;br /&gt;
There should be a timed (session-based) log-off process built into this screen (and indeed the entire system), to ensure that the user is taken tack to the login screen if the session has not been active for longer than a proscribed time (for example 30 minutes).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The menu will be displayed as part of every screen, located on the left. The menu items that may be allowed, based on access control, are:&lt;br /&gt;
* Home - this link redisplays this screen.&lt;br /&gt;
* Tag to Asset&lt;br /&gt;
* Intake&lt;br /&gt;
* Asset Returns&lt;br /&gt;
Clicking on the option from the menu will display the appropriate screen.&lt;br /&gt;
&lt;br /&gt;
== Tag to Asset ==&lt;br /&gt;
&lt;br /&gt;
The process will be written in such a way as to ensure hands-free operation if possible (where there are no issues with either the orders for the items or the assets being scanned.&lt;br /&gt;
&lt;br /&gt;
The screen will display with several sections and buttons:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_318679_TagToAsset.PNG|border|600px]]&lt;br /&gt;
* An entry prompt for Asset entry and an '''Enter''' button. The asset entry text box will be focussed for entry.&lt;br /&gt;
* An Error display section, below the text entry.&lt;br /&gt;
* A Buff Tags section, containing a table, initially empty.&lt;br /&gt;
* An Assets Scanned section, containing a table with a single row, initially empty.&lt;br /&gt;
* A '''Clear All''' button.&lt;br /&gt;
&lt;br /&gt;
The Buff Tags table will be in a section that allows the contents to scroll vertically. Although the screen is designed to allow for up to 6 tags per asset on a normal sized screen, if there are more the screen will create a vertical scrolling bar for this section so the user can manually scroll to see all assets.&lt;br /&gt;
&lt;br /&gt;
The Assets Scanned table will be a single header and row.&lt;br /&gt;
&lt;br /&gt;
The '''Clear All''' button can be used to clear any already-entered details (Asset and Buff Tag table rows) - pressing the button will request confirmation before clearing the tables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The entry of the buff tag data must include the barcode AI, as follows:&lt;br /&gt;
* &amp;amp;x - buff tags.&lt;br /&gt;
* 8004 - permanent assets&lt;br /&gt;
&lt;br /&gt;
The scanner will be configured to auto-return the data, which means a carriage return will be appended to the returned barcode. The application will recognise this and automatically trigger the actions associated with the '''Enter''' button. This will also be the case if the user is keying in the barcode text and presses the Return/Enter key on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The Enter process will validate that the barcode begins with the AIs identified above - any other data will be ignored. This will display a warning (in large, red text format) under the barcode entry line, displaying &amp;quot;Barcode Type Invalid&amp;quot;. The system will also sound an audible warning tone. The alert will quickly fade after 2 seconds.  (For clarity, this type of message will be referred to as a Toast pop-up message.) &lt;br /&gt;
&lt;br /&gt;
If the validation above is passed, the process will check the AI. If this is a buff tag, the details of the barcode should be extracted, as follows:&lt;br /&gt;
*	&amp;amp;x: AI (Application Identifier) &lt;br /&gt;
*	X0000000: Request, where X is the originating centre (e.g. H - Birmingham, T - Filton) &lt;br /&gt;
*	00000: Box ID (tag ID) &lt;br /&gt;
If the entered barcode does not conform to the fixed format above, a temporary warning will be displayed as before.&lt;br /&gt;
&lt;br /&gt;
If the validation is passed, the application will check to see if the item has already been scanned - if so, no action will be taken or error displayed, the scan will simply be ignored.&lt;br /&gt;
&lt;br /&gt;
If the item was added to the table, the data extracted will be displayed on the Buff Tag table as follows:&lt;br /&gt;
* ID - the Box ID extracted from the barcode.&lt;br /&gt;
* Order - the Request extracted from the barcode.&lt;br /&gt;
* Details - the fixed text &amp;quot;Checking...&amp;quot;&lt;br /&gt;
* Action - nothing. &lt;br /&gt;
&lt;br /&gt;
This will also instigate a background (AJAX) check to the server, to procure the details of the tag. While this is occurring, the user will be able to scan more barcodes. &lt;br /&gt;
&lt;br /&gt;
The server process will call the new Order Check procedure created for this purpose. The details found will include:&lt;br /&gt;
* Status (Success or Failure and reason)&lt;br /&gt;
* ID &lt;br /&gt;
* Order&lt;br /&gt;
* OMS Ref&lt;br /&gt;
* Destination Location&lt;br /&gt;
* Planned Order Date and Time Window&lt;br /&gt;
* Asset ID, if already planned into an asset&lt;br /&gt;
* Planned Trip details (if present), as follows:&lt;br /&gt;
** Planned Trip ID&lt;br /&gt;
** Planned Trip Delivery Drop ID&lt;br /&gt;
** Planned Trip Delivery Drop Date and Time&lt;br /&gt;
These will be passed back to the application (through a JSON-formatted message).&lt;br /&gt;
&lt;br /&gt;
If any server error is encountered during the processing of this message (time-out, server not found, other error), the application will update the row on the Buff Tag table pertaining to this tag as follows:&lt;br /&gt;
* The row background colour will be set to red.&lt;br /&gt;
* Details - &amp;quot;Error encountered whilst checking with server&amp;quot;&lt;br /&gt;
* Action - A '''Remove''' button which, when clicked, will remove the row and a '''Recheck''' button which, when clicked, will instigate the background message as before.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Errors will be returned in the status if:&lt;br /&gt;
*    The order doesn't exist&lt;br /&gt;
*    The collection stop for the planned trip for this order has an actual depart time (i.e. the item has already been loaded).&lt;br /&gt;
&lt;br /&gt;
If an error is returned, the application will update the row on the Buff Tag table pertaining to this tag as follows:&lt;br /&gt;
* The row background colour will be set to red.&lt;br /&gt;
* Details - &amp;quot;Error:&amp;quot; plus the reason for the error&lt;br /&gt;
* Action - A '''Remove''' button which, when clicked, will remove the row.&lt;br /&gt;
Examples are:&lt;br /&gt;
*    &amp;quot;Order X does not exist&amp;quot;&lt;br /&gt;
*    &amp;quot;Order X already confirmed&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If no error is encountered, the system will check the returned message for the details shown above.&lt;br /&gt;
&lt;br /&gt;
If the destination location of this order is different to the destination location of any other buff tags already scanned, the application will update the row on the Buff Tag table pertaining to this tag as follows:&lt;br /&gt;
* The row background colour will be set to red.&lt;br /&gt;
* Details - &amp;quot;Error: Location Different&amp;quot; plus the Destination Location of this order.&lt;br /&gt;
* Action - A '''Remove''' button which, when clicked, will remove the row.&lt;br /&gt;
&lt;br /&gt;
If the validation is passed, the Details line on this row in the Buff Tag table will be updated with these details. The format of this will depend on the returned data. Examples follow:&lt;br /&gt;
&lt;br /&gt;
If the order is planned:&lt;br /&gt;
* Trip {TRIP_ID}, {TRIP_DELIVERY_DATE/ if not today}{TRIP_DELIVERY_TIME} Delivery (Drop {TRIP_DROP_ID} to {DELIVERY_LOCATION}&lt;br /&gt;
If the order is unplanned:&lt;br /&gt;
* Unplanned, {ORDER_DELIVERY_DATE/ if not today}{ORDER_DELIVERY_TIME_FROM}-{ORDER_DELIVERY_TIME_TO} Delivery at {TO_LOCATION_NAME}&lt;br /&gt;
&lt;br /&gt;
The Action buttons added to this row will also depend on the returned details and further validation.&lt;br /&gt;
&lt;br /&gt;
If the scanned item is planned, the application will check the trip and stop information of this item against any previous items scanned. If they are different, the line with the later delivery will be require confirmation that the item may be moved onto the earlier delivery. To reflect this:&lt;br /&gt;
* The row background colour will be set to amber.&lt;br /&gt;
* A '''Remove''' action button will be added which will, when clicked, remove the row.&lt;br /&gt;
* The Details cell will have some text appended below it, to show that this item will be planned with these other items. &lt;br /&gt;
* Pop-up help (tooltip) will be set against the row, to display more detailed information on the error, to be displayed when the user hovers over the row.&lt;br /&gt;
&lt;br /&gt;
If the scanned item is not planned, the application will check the planned order times against those of tags already scanned. If the planned times do not exist within the same range, this line will be changed to show this:&lt;br /&gt;
* The row background colour will be set to amber.&lt;br /&gt;
* A '''Remove''' action button will be added which will, when clicked, remove the row.&lt;br /&gt;
* The Details cell will have some text appended below it, to show that this item will be planned with these other items. &lt;br /&gt;
* The Pop-up help (tooltip) will be set against the row, to display more detailed information on the error, to be displayed when the user hovers over the row.&lt;br /&gt;
&lt;br /&gt;
The application will check whether the item has already been scanned into an asset (by checking the returned asset ID from the message). If set, the line will be changed to show this:&lt;br /&gt;
* The row background colour will be set to amber.&lt;br /&gt;
* A '''Remove''' action button will be added which will, when clicked, remove the row. &lt;br /&gt;
* The Details cell will have some text appended below it, to show that this item will has already been scanned, as the Asset ID. &lt;br /&gt;
* Pop-up help (tooltip) will be set against the row, to display more detailed information on the error, to be displayed when the user hovers over the row.&lt;br /&gt;
&lt;br /&gt;
If the scanned item passes the validation, the line will be added with a simple '''Remove''' button which, when clicked, will remove the row.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The user can continue to scan items, which will follow the process and validation above. To associate all of the items together and update C-TMS with the details, a valid permanent asset must be scanned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the barcode scanned is an asset (AI '8004'), the asset ID will be extracted (removing the AI from the start) and a row added to the Asset table, as follows:&lt;br /&gt;
* ID - The extracted asset ID.&lt;br /&gt;
* Type - blank.&lt;br /&gt;
* Status - Checking...&lt;br /&gt;
* Action - blank.&lt;br /&gt;
The application will also instigate a message back to the server to check the asset. The system will show a waiting message while this is processing.&lt;br /&gt;
&lt;br /&gt;
The server process will call the new Asset Check procedure created for this purpose. The details found will include:&lt;br /&gt;
* Status (Success or Failure and reason)&lt;br /&gt;
* ID&lt;br /&gt;
* Asset Status&lt;br /&gt;
* Type and description (if found).&lt;br /&gt;
* Details of all active orders' buff tags that have already been scanned into this asset (if any):&lt;br /&gt;
**    Order Reference&lt;br /&gt;
**    OMS Ref &lt;br /&gt;
**    Buff Tag Id already associated to the asset_id&lt;br /&gt;
**    Destination Location &lt;br /&gt;
**    Order Early Collect Date and Time&lt;br /&gt;
**    Order Late Collect Date and Time&lt;br /&gt;
**    Order Early Deliver Date and Time&lt;br /&gt;
**    Order Late Deliver date and Time&lt;br /&gt;
**    Planned Trip details (if present), as follows: &lt;br /&gt;
*** 	Planned Trip ID &lt;br /&gt;
*** 	Planned Trip Delivery Drop ID &lt;br /&gt;
*** 	Planned Trip Delivery Drop Date and Time&lt;br /&gt;
&lt;br /&gt;
Returned failure reasons may be:&lt;br /&gt;
* The asset is marked as inactive.&lt;br /&gt;
* The asset is not found.&lt;br /&gt;
&lt;br /&gt;
These will be passed back to the application (through a JSON-formatted message).&lt;br /&gt;
&lt;br /&gt;
If any server error is encountered during the processing of this message (timeout, server not found, other error), the application will update the row on the Buff Tag table pertaining to this tag as follows:&lt;br /&gt;
* The row background colour will be set to red.&lt;br /&gt;
* Details - &amp;quot;Error encountered whilst checking with server&amp;quot;&lt;br /&gt;
* Action - A '''Remove''' button which, when clicked, will remove the row and a '''Recheck''' button which, when clicked, will instigate the background message as before.&lt;br /&gt;
* Pop-up help (tooltip) will be set against the row, to display more detailed information on the error, to be displayed when the user hovers over the row.&lt;br /&gt;
&lt;br /&gt;
{{Note}} A new asset or the same asset may be scanned again, which will remove the asset in the table and add the new one and instigate the check again.&lt;br /&gt;
&lt;br /&gt;
When the message returns, the application will check the returned status. If the asset is marked as inactive, an error should be displayed (in the error section and as a toast pop-up), showing &amp;quot;Asset X is inactive and cannot be used&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the response message includes details of active orders already in the asset, these buff tags will be added to the grid as new rows. Each will be validated as if they were new rows added through the scan procedure above. {{Note}} If the asset has tags associated to it, the screen will ''not'' attempt to automatically update any tags already scanned with the asset, but will require the user to press the '''Confirm''' button. Furthermore, an error will be displayed (in the error section and as a toast pop-up), showing &amp;quot;Asset already has tags - please confirm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If there are no issues with the asset scanned, the row should be updated as follows:&lt;br /&gt;
* Type - Type and description&lt;br /&gt;
* Status - &amp;quot;Confirmed&amp;quot; &lt;br /&gt;
* Action - '''Remove''' button which, if clicked, remove the row (and the '''Confirm''' button at the bottom of the screen).&lt;br /&gt;
* Additionally, a '''Confirm''' button will be added to the bottom of the screen with the '''Clear All''' button.&lt;br /&gt;
&lt;br /&gt;
If the asset does not exist or has no defined asset type, the Asset row will be updated:&lt;br /&gt;
* Type - a drop-down list of the asset types allowed by the system (the DU types from C-TMS).&lt;br /&gt;
* Status - &amp;quot;Unknown Asset&amp;quot; &lt;br /&gt;
* Action - '''Remove''' and '''Save and Confirm''' buttons&lt;br /&gt;
* The background colour should be red. &lt;br /&gt;
* Pop-up help (tooltip) will be set against the row, to display more detailed information on the error, to be displayed when the user hovers over the row.&lt;br /&gt;
* Additionally, a '''Confirm''' button will be added to the bottom of the screen with the '''Clear All''' button.&lt;br /&gt;
&lt;br /&gt;
The '''Remove''' button should remove the row (and the '''Confirm''' button at the bottom of the screen), whereas the '''Save and Confirm''' button should validate that an asset type has been entered. If not, a pop-up alert can be displayed (&amp;quot;You must enter an asset type or remove the asset&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
If the Asset Type is selected, the row should be changed as follows:&lt;br /&gt;
* Type - Type and description&lt;br /&gt;
* Status - &amp;quot;Confirmed&amp;quot; &lt;br /&gt;
* Action - '''Remove''' button which, if clicked, remove the row (and the '''Confirm''' button at the bottom of the screen).&lt;br /&gt;
* The row background colour should return to the normal white.&lt;br /&gt;
* Additionally, a '''Confirm''' button will be added to the bottom of the screen with the '''Clear All''' button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the Asset Type has been entered and the '''Save and Confirm''' button pressed, or the asset had no issues, or the '''Confirm''' button at the bottom of the screen is pressed, the application will validate:&lt;br /&gt;
* No buff tags are in error (i.e. red background).&lt;br /&gt;
* The asset must be entered and valid, with asset type details.&lt;br /&gt;
* There must be buff tags entered.&lt;br /&gt;
&lt;br /&gt;
If this validation is not passed, an appropriate pop-up toast error can be displayed, showing all the issues, for example:&lt;br /&gt;
* &amp;quot;Invalid buff tags must be removed&amp;quot;&lt;br /&gt;
* &amp;quot;You must enter an asset type or remove the asset&amp;quot;&lt;br /&gt;
* &amp;quot;Buff tags must be entered for the asset.&amp;quot;&lt;br /&gt;
These should also be displayed in the error section. The application should not be allowed to continue unless these problems are resolved.&lt;br /&gt;
&lt;br /&gt;
If the validation is passed, the application will check if there are any warning elements on the table (i.e. buff tags that are planned for a different time or trip than others in the asset). If this is a case, a confirmation dialogue will be shown, showing all the details:&lt;br /&gt;
* The asset&lt;br /&gt;
* The buff tags with warnings and their details&lt;br /&gt;
* the trip and stop (or planned time window) into which these items will be moved.&lt;br /&gt;
* A '''Confirm''' and a '''Cancel''' button.&lt;br /&gt;
&lt;br /&gt;
If the '''Cancel''' button is clicked, the user will be returned to the main screen, with all data preserved, allowing them to make modification is desired, then confirm again. &lt;br /&gt;
&lt;br /&gt;
If the '''Confirm''' button is pressed, this will proceed with confirmation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If all the validation is passed (or the confirmation dialogue is displayed and confirmed by the user), the server will be sent a message to update the asset. The application will wait while this is in progress.&lt;br /&gt;
&lt;br /&gt;
The server process will call the new Asset Update procedure created for this purpose, passing in the asset and an array of all the buff tags to be associated to it. The process will:&lt;br /&gt;
* Create the asset if it does not exist, with the asset type as defined by the user.&lt;br /&gt;
* Update the asset scanned as being at this depot location if it was not already.&lt;br /&gt;
* Update the tags with the selected asset, or create the tags if they do not exist.&lt;br /&gt;
* Unplan and replan any orders that have already been planned onto other trips.&lt;br /&gt;
* Update the collection and delivery windows for any orders that have not yet been planned.&lt;br /&gt;
* Plan unplanned orders onto the earliest trip stop.&lt;br /&gt;
* Trigger a refresh of this order (jobs) through to C-EPOD.&lt;br /&gt;
The details returned will simply be the Status (Success or Failure and reason).&lt;br /&gt;
&lt;br /&gt;
These will be passed back to the application (through a JSON-formatted message).&lt;br /&gt;
&lt;br /&gt;
If no error is received, an update toast pop-up will be displayed, showing that the asset has been updated, with a list of the details. The Asset and Buff tags tables should be cleared, ready for the next job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Test the C-TMS.NET Scanning Solution for NHSBT.&lt;br /&gt;
|MenuAccess=None&lt;br /&gt;
|Prerequisites=Data set up as per Data Setup section.&lt;br /&gt;
|Objective=To test that: The system logs users in correctly and securely; the options are available to the users from a menu; the Tag to Asset process works as expected.&lt;br /&gt;
}} {{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Login Tests&lt;br /&gt;
|Notes=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log in with a user that does not exist&lt;br /&gt;
|Result=An appropriate error should be displayed&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log is with a valid user but the wrong password&lt;br /&gt;
|Result=An appropriate error should be displayed&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log in with a valid C-TMS user and password, that doesn't have access to this system.&lt;br /&gt;
|Result=An appropriate error should be displayed&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log in with a valid use and password&lt;br /&gt;
|Result=The main screen should be displayed, showing the logged in user name and depot. The menu should be displayed with all required items on it.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click the Logout button&lt;br /&gt;
|Result=The system should return to the login screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Tag to Asset Tests&lt;br /&gt;
|Notes=Assets should be noted for completed orders as well as available and unavailable assets at a number of locations. {{Note}} This series of tests is dependent on the completion of the CTMS packages required by this application.&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Login and click the ''Tag to Asset'' menu item.&lt;br /&gt;
|Result=The Tag to Asset screen should be displayed, showing a Scan text box and an '''Enter''' button only.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter an &amp;quot;XXXXX&amp;quot; and click the '''Enter''' button&lt;br /&gt;
|Result=An appropriate error is displayed in the error section and a pop-up with the same message should appear, fading after 2 seconds. A beep should be played. Note that all errors are this type in this process and should be checked as such.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan a single trip barcode (i.e. beginning with '00' and a total of 18 digits in length).&lt;br /&gt;
|Result=An appropriate error is displayed.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter an invalid buff tag (e.g. &amp;amp;xS897HJH7H9) and press enter.&lt;br /&gt;
|Result=An appropriate error is displayed.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that does not exist.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order, and a Details of &amp;quot;Checking...&amp;quot; with an amber background colour. The Scan text box should be focused.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Wait for the server response.&lt;br /&gt;
|Result=The row should change to show the details &amp;quot;Error: Order X does not exist&amp;quot;. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan or enter the same item again.&lt;br /&gt;
|Result=Nothing should happen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Remove''' against the row.&lt;br /&gt;
|Result=The row should be removed.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists and is not planned.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order, and a Details of &amp;quot;Checking&amp;quot; with an amber background colour. The Scan text box should be focused.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Wait for the server response.&lt;br /&gt;
|Result=The row should change to show the details &amp;quot;Unplanned,&amp;quot;, with the order delivery window and destination location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists and is planned onto a trip, with a planned time in the same window. Wait for the server response.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order with an amber background colour. The Scan text box should be focused. The Details should show the planned Trip, Time, Stop and Destination Location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists and is planned onto a different trip, with a planned time in the same window. Wait for the server response.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order with an amber background colour. The Scan text box should be focused. The Details should show the planned Trip, Time, Stop and Destination Location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists (planned or unplanned) with a different location. Wait for the server response.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order with an amber background colour. The Scan text box should be focused. The Details should show an error that the order is to a different Destination Location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists (planned or unplanned) with a time later than the window. Wait for the server response.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order with an amber background colour. The Scan text box should be focused. The Details should show the planned Trip, Time, Stop and Destination Location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists (planned or unplanned) already scanned into an Asset. Wait for the server response.&lt;br /&gt;
|Result=A row should be added to the top of the table, showing the extracted ID and order with an amber background colour. The Scan text box should be focused. The Details should show the planned Trip, Time, Stop and Destination Location, and the planned asset ID. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter a valid format buff tag for an order that exists (planned or unplanned) with a time earlier than the window. Wait for the server response.&lt;br /&gt;
|Result=This row should be added showing the planned or unplanned time, as above. A '''Remove''' button should be shown and the background should be normal white or grey.&lt;br /&gt;
The Scan text box should be focused. &lt;br /&gt;
All rows with later times should be updated with an amber background colour. The Details for each of these rows should show the planned Trip, Time, Stop and Destination Location. A '''Remove''' button should be shown.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan a permanent Asset that does not exist.&lt;br /&gt;
|Result=A row should be added to the Asset Scanned table. The row should be amber and the status &amp;quot;Checking...&amp;quot;&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Wait for the server response.&lt;br /&gt;
|Result=The row background should change to red. A list of Asset types should be shown under Type, the status should be &amp;quot;Unknown Asset Type&amp;quot;, and there should be '''Remove''' and '''Save and Confirm''' buttons. A '''Confirm''' button should be shown at the bottom of the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Save and Confirm'''.&lt;br /&gt;
|Result=A pop-up error should be shown, describing that the asset type must be entered.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Clear the pop-up, select the asset type and click '''Save and Confirm'''.&lt;br /&gt;
|Result=A pop-up dialogue should be shown, describing that there are warnings and that further confirmation is required. A '''Clear All''' and a '''Confirm''' button should be shown. &lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Confirm''' at the bottom of the screen.&lt;br /&gt;
|Result=A pop-up dialogue should be shown, describing that there are warnings and that further confirmation is required. A '''Clear All''' and a '''Confirm''' button should be shown. &lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Remove''' against the Asset.&lt;br /&gt;
|Result=The row should be removed, as should the '''Confirm''' button on the bottom of the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan an existing asset that is inactive status. Wait for the server response.&lt;br /&gt;
|Result=A fading pop-up and error message should be displayed &amp;quot;Asset X is inactive and cannot be used&amp;quot;. The Asset row should not be changed.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan an existing asset that is active. Wait for the server response.&lt;br /&gt;
|Result=The asset should replace the row in the Asset Scanned table. The row background should be white. The type should be displayed. The status should be &amp;quot;Confirmed&amp;quot;. A '''Remove''' button should be shown.&lt;br /&gt;
A pop-up dialogue should be shown, describing that there are warnings, what the items are, when they will be moved to and that further confirmation is required. A '''Clear All''' and a '''Confirm''' button should be shown. &lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Confirm all buff tags that require it. Click the '''Confirm''' button at the bottom of the screen.&lt;br /&gt;
|Result=C-TMS should be updated. All buff tags against the orders should be updated with the asset ID. All buff tags that did not exist before will have been created. All unplanned orders should be planned onto the earliest trip and stop. All orders planned onto other trips and stops should be moved onto the earliest trip and stop. A pop-up will display that the asset has been updated with a list of the details. The screen should be cleared of buff tags and assets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan or enter more than 6 buff tags from the same new order.&lt;br /&gt;
|Result=Each tag should be added to the Buff Tags table as above. A scroll-bar should appear on the table.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan or enter an asset that does not exist. Wait for the server response.&lt;br /&gt;
|Result=The row background should change to red. A list of Asset types should be shown under Type, the status should be &amp;quot;Unknown Asset Type&amp;quot;, and there should be '''Remove''' and '''Save and Confirm''' buttons. A '''Confirm''' button should be shown at the bottom of the screen.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Clear All'''.&lt;br /&gt;
|Result=Confirmation should be requested through a pop-up alert.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Cancel this.&lt;br /&gt;
|Result=The screen should not clear anything, just redisplay the screen with all details as before.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Clear All'''. Confirm the action.&lt;br /&gt;
|Result=The Buff Tags and Asset Scanned tables will be wiped of all rows.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan multiple valid buff tags on a new unplanned order. Scan a valid new asset.&lt;br /&gt;
|Result=C-TMS should be updated. The buff tags should be updated with the asset ID. If the buff tags did not exist before, they will have been created. A fading pop-up will display that the asset has been updated with a list of the details. The screen should be cleared of buff tags and assets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan another buff tag for the same order. Scan the same asset.&lt;br /&gt;
|Result=The buff tags table should be populated will all tags from before and the new one. A fading pop-up (and the error section) will display that the asset already has tags and must be manually confirmed.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Confirm''' at the bottom of the screen.&lt;br /&gt;
|Result=C-TMS should be updated. The buff tags should be updated with the asset ID. If the buff tags did not exist before, they will have been created. A fading pop-up will display that the asset has been updated with a list of the details. The screen should be cleared of buff tags and assets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan another buff tag for a different order, but on for a different location. Scan the same asset.&lt;br /&gt;
|Result=The buff tags table should be populated will all tags from before and the new one. A fading pop-up (and the error section) will display that the asset already has tags and must be manually confirmed. All tags against the asset will be marked as in error.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Click '''Clear All''' and confirm. Scan another buff tag for a different order, but on a different trip. Scan the same asset.&lt;br /&gt;
|Result=The buff tags table should be populated will all tags from before and the new one. A fading pop-up (and the error section) will display that the asset already has tags and must be manually confirmed. All tags against the asset will be marked as in requiring confirmation that they will be moved to the new trip.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Confirm all buff tags that require it. Click the '''Confirm''' button at the bottom of the screen.&lt;br /&gt;
|Result=C-TMS should be updated. All buff tags against the orders should be updated with the asset ID. All buff tags that did not exist before will have been created. All unplanned orders should be planned onto the earliest trip and stop. All orders planned onto other trips and stops should be moved onto the earliest trip and stop. A fading pop-up will display that the asset has been updated with a list of the details. The screen should be cleared of buff tags and assets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan a valid new asset.  Click the '''Confirm''' button at the bottom of the screen.&lt;br /&gt;
|Result=A fading pop-up will display that buff tags must be entered.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Scan multiple valid buff tags on a new unplanned order. Click the '''Confirm''' button at the bottom of the screen.&lt;br /&gt;
|Result=C-TMS should be updated. The buff tags should be updated with the asset ID. If the buff tags did not exist before, they will have been created. A fading pop-up will display that the asset has been updated with a list of the details. The screen should be cleared of buff tags and assets.&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=NHSBT High Level Solution Design v2.0.doc&lt;br /&gt;
|RefV1=2.0&lt;br /&gt;
|RefDate1=21/05/2014&lt;br /&gt;
|Ref2=FS 317907 SCR01 EPOD-TMS Interface &lt;br /&gt;
|RefV2=&amp;amp;nbsp;&lt;br /&gt;
|RefDate2=&amp;amp;nbsp;&lt;br /&gt;
|Ref3=FS-317756-NHSBT Tag to Asset Scanning&lt;br /&gt;
|RefV3=0.6&lt;br /&gt;
|RefDate3=25/06/2014&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=2.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=13&lt;br /&gt;
|ST=3.0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0&lt;br /&gt;
|EFS=3&lt;br /&gt;
|ETS=0&lt;br /&gt;
|EDEV=15&lt;br /&gt;
|ESTT=3&lt;br /&gt;
|EIMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=N&lt;br /&gt;
|Rev1=Julie Scott&lt;br /&gt;
|Rev1Title=Project Manager&lt;br /&gt;
|Rev2=Ed Bond&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_313761_AUNZ-026_LFS_AUNZ_POD_POC_Format&amp;diff=1489</id>
		<title>FS 313761 AUNZ-026 LFS AUNZ POD POC Format</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_313761_AUNZ-026_LFS_AUNZ_POD_POC_Format&amp;diff=1489"/>
		<updated>2014-04-10T16:40:59Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|LFS}}&lt;br /&gt;
{{#vardefine:ClientName|LFS}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|LFS AUNZ POD/POC Format}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|24th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|313761 AUNZ-026}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Proof of Delivery and Proof of Collection documents are required for Delivery and customer collection Jobs only.&lt;br /&gt;
&lt;br /&gt;
There are two ways the Proof of delivery document can be issued to the customer:&lt;br /&gt;
:1)	If a customer email is available on the contact section of the Location stored in the CTMS system, an automatic POD document can be sent to the customer at the completion of the job. It is understood that PDF format is required. There is also the option to send the EPOD document to a central email address for LFS.&lt;br /&gt;
:2)	The Proof of Delivery / Proof of Collection documents will be available for the customer to view on-line through the web portal.&lt;br /&gt;
&lt;br /&gt;
LFS have provides OBS with the format of the POD document, seen in [[#Appendix A: Report Format Examples|Appendix A]]&lt;br /&gt;
&lt;br /&gt;
Further comments provided by the customer:&lt;br /&gt;
* The shipping Temp and the Commodity are as per the fields that are on the CTMS for Order Temp and Commodity. These are in specs AUNZ-001,AUNZ-002 and AUNZ-003.&lt;br /&gt;
* The delivery comments should be any notes that have been keyed in by the driver&lt;br /&gt;
* The POC is the same format, just changing delivery to collection.&lt;br /&gt;
* The watermark they want on the Signature is seen in [[#Appendix A: Report Format Examples|Appendix A]]. This is related to the PDA changes in AUNZ-013. The text is slightly different than what has been provided previously. This must show on the POD and POC note too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview ==&lt;br /&gt;
The report will be produced in {{#var:System}} to the specifications provided - several further items of data not currently stored by the system will be passed in from ''CALIDUS'' TMS and will be used to populate the report.&lt;br /&gt;
&lt;br /&gt;
The report may be viewed through direct access through the '''Report''' button in the Jobs screens in {{#var:System}} or through remote access from ''CALIDUS'' Portal.&lt;br /&gt;
&lt;br /&gt;
The format has been prototyped and is as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_313761_POD.PNG|border|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* This functionality will be developed in the latest version of {{#var:System}} only.&lt;br /&gt;
* ''CALIDUS'' TMS requirements are mentioned only by reference in this solution - see elsewhere for specification of the changes to that system.&lt;br /&gt;
* {{Note}} Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
* A working {{#var:System}} system.&lt;br /&gt;
* A working ''CALIDUS'' TMS system, accessible to the {{#var:System}} system.&lt;br /&gt;
&lt;br /&gt;
=== ''CALIDUS'' TMS Interface Changes ===&lt;br /&gt;
{{Note}} No change are required to the existing {{#var:System}} interface formats, as the new data will be passed in using existing fields in the interface. For clarity, this information is as follows:&lt;br /&gt;
* Order Date - EPL_ORDER_DATE&lt;br /&gt;
* Shipping Temp - EPL_CONTAINER_PACKAGE_CODE&lt;br /&gt;
* Commodity - EPL_DESCRIPTION_LONG &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
A Job Group record should be created for the business. The settings should include:&lt;br /&gt;
*    Driver Signature requirements&lt;br /&gt;
*    POD and POC format set to &amp;quot;LFS (AU/NZ)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
The Job Group and Site screens (job_group.aspx and site_header.aspx respectively) will be modified to allow the system to be configured for the new LFS report, by adding this as an option to the DDLs in the editing pop-up forms, for both POD and POC format. Additionally, the grid will be modified to display this correctly if selected. The name on the list will be 'LFS (AU/NZ)', pointing to the new report below, LFS_AUNZ.aspx. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD/POC Format ==&lt;br /&gt;
{{Note}} This format has been prototyped and is available on request for the developer to base the final formats. &lt;br /&gt;
&lt;br /&gt;
The format created here should follow the standardised pagination code used in other formats.&lt;br /&gt;
&lt;br /&gt;
The format will be created as LFS_AUNZ.aspx.&lt;br /&gt;
&lt;br /&gt;
The fields will be mapped as follows when this is a delivery job. Note that all fields come from EPOD_JOB unless specified differently:&lt;br /&gt;
* Customer - EPL_CUSTOMER_NAME of EPL_CUSTOMER.&lt;br /&gt;
* Customer Reference - EPL_CUST_REF&lt;br /&gt;
* Order Date - EPL_ORDER_DATE, formatted as a long date format, plus day name.&lt;br /&gt;
* Origin - EPL_NAME/EPL_ADDRESS_LINE_1/2/3/4/5/EPL_POST_CODE of EPL_JOB_ADDRESS for job type &amp;quot;C&amp;quot;.&lt;br /&gt;
* Destination - EPL_NAME/EPL_ADDRESS_LINE_1/2/3/4/5/EPL_POSTCODE of EPL_JOB_ADDRESS for job type &amp;quot;D&amp;quot;.&lt;br /&gt;
* Delivery Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Details - This information will come from the Containers sent to {{#var:System}}. Regardless of whether this is a collection or delivery, the information is taken from the EPOD_CONTAINERS table. The information will be concatenated on EPL_CONTAINER_PACKAGE_CODE and EPL_DESCRIPTION_LONG (the shipping temp and commodity code respectively) - this will be referred to as the group from this point onwards. There will be a maximum of 6 detail lines in this format, not including the title. &lt;br /&gt;
** Items - The number of containers of this matching EPL_CONTAINER_PACKAGE_CODE ND and EPL_DESCRIPTION_LONG. &lt;br /&gt;
** Shipping Temp - EPL_CONTAINER_PACKAGE_CODE of the group&lt;br /&gt;
** Commodity - EPL_DESCRIPTION_LONG of the group&lt;br /&gt;
** Weight - The sum of all EPL_WEIGHT fields on all records in this group&lt;br /&gt;
** Dimensions - EPL_CODE_1 of any of the records of this group&lt;br /&gt;
* Delivery Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Delivery Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
* Received By - EPL_SIGNATORY&lt;br /&gt;
* Delivery Comments&lt;br /&gt;
* Signature - the image of the customer signature from EPL_JOB_SIGNATURE. This will overlay a background containing the fixed text &amp;quot;ORDER RECEIVED IN FULL AND GOOD CONDITION&amp;quot;.&lt;br /&gt;
All other elements on the report shall be fixed text and formatting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For collection jobs, the following modifications will be made:&lt;br /&gt;
* Replace the word &amp;quot;Delivery&amp;quot; with the word &amp;quot;Collection&amp;quot; in all labels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note}} When producing this format as PDF through WkHtmlToPDF, this format should have no borders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 MEDIA LANDSCAPE YES&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Test the ...&lt;br /&gt;
|MenuAccess=None&lt;br /&gt;
|Prerequisites=None&lt;br /&gt;
|Objective=To test that: ...&lt;br /&gt;
}} &lt;br /&gt;
{{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Test Title&lt;br /&gt;
|Notes=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Do something&lt;br /&gt;
|Result=Some expected results&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
MEDIA LANDSCAPE NO&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Appendix A: Report Format Examples =&lt;br /&gt;
== Sample POD Note ==&lt;br /&gt;
[[File:FS_313761_POD_Sample.PNG|border|600px]]&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
== Sample Watermark ==&lt;br /&gt;
[[File:FS_313761_Watermark.PNG|border|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=&lt;br /&gt;
|RefV1=&lt;br /&gt;
|RefDate1=&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.75&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=1.75&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0&lt;br /&gt;
|EFS=0&lt;br /&gt;
|ETS=0&lt;br /&gt;
|EDEV=0&lt;br /&gt;
|ESTT=0&lt;br /&gt;
|EIMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Rev1=Matt Tipping&lt;br /&gt;
|Rev1Title=Project Manager&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_313761_AUNZ-026_LFS_AUNZ_POD_POC_Format&amp;diff=1488</id>
		<title>FS 313761 AUNZ-026 LFS AUNZ POD POC Format</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_313761_AUNZ-026_LFS_AUNZ_POD_POC_Format&amp;diff=1488"/>
		<updated>2014-04-07T13:21:51Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|LFS}}&lt;br /&gt;
{{#vardefine:ClientName|LFS}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|LFS AUNZ POD/POC Format}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|24th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|313761 AUNZ-026}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Proof of Delivery and Proof of Collection documents are required for Delivery and customer collection Jobs only.&lt;br /&gt;
&lt;br /&gt;
There are two ways the Proof of delivery document can be issued to the customer:&lt;br /&gt;
:1)	If a customer email is available on the contact section of the Location stored in the CTMS system, an automatic POD document can be sent to the customer at the completion of the job. It is understood that PDF format is required. There is also the option to send the EPOD document to a central email address for LFS.&lt;br /&gt;
:2)	The Proof of Delivery / Proof of Collection documents will be available for the customer to view on-line through the web portal.&lt;br /&gt;
&lt;br /&gt;
LFS have provides OBS with the format of the POD document, seen in [[#Appendix A: Report Format Examples|Appendix A]]&lt;br /&gt;
&lt;br /&gt;
Further comments provided by the customer:&lt;br /&gt;
* The shipping Temp and the Commodity are as per the fields that are on the CTMS for Order Temp and Commodity. These are in specs AUNZ-001,AUNZ-002 and AUNZ-003.&lt;br /&gt;
* The delivery comments should be any notes that have been keyed in by the driver&lt;br /&gt;
* The POC is the same format, just changing delivery to collection.&lt;br /&gt;
* The watermark they want on the Signature is seen in [[#Appendix A: Report Format Examples|Appendix A]]. This is related to the PDA changes in AUNZ-013. The text is slightly different than what has been provided previously. This must show on the POD and POC note too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview ==&lt;br /&gt;
The report will be produced in {{#var:System}} to the specifications provided - several further items of data not currently stored by the system will be passed in from ''CALIDUS'' TMS and will be used to populate the report.&lt;br /&gt;
&lt;br /&gt;
The report may be viewed through direct access through the '''Report''' button in the Jobs screens in {{#var:System}} or through remote access from ''CALIDUS'' Portal.&lt;br /&gt;
&lt;br /&gt;
The format has been prototyped and is as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_313761_POD.PNG|border|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* This functionality will be developed in the latest version of {{#var:System}} only.&lt;br /&gt;
* ''CALIDUS'' TMS requirements are mentioned only by reference in this solution - see elsewhere for specification of the changes to that system.&lt;br /&gt;
* {{Note}} Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
* A working {{#var:System}} system.&lt;br /&gt;
* A working ''CALIDUS'' TMS system, accessible to the {{#var:System}} system.&lt;br /&gt;
&lt;br /&gt;
=== ''CALIDUS'' TMS Interface Changes ===&lt;br /&gt;
{{Note}} No change are required to the existing {{#var:System}} interface formats, as the new data will be passed in using existing fields in the interface. For clarity, this information is as follows:&lt;br /&gt;
* Order Date - EPL_ORDER_DATE&lt;br /&gt;
* Shipping Temp - EPL_CONTAINER_PACKAGE_CODE&lt;br /&gt;
* Commodity - EPL_DESCRIPTION_LONG &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
A Job Group record should be created for the business. The settings should include:&lt;br /&gt;
*    Driver Signature requirements&lt;br /&gt;
*    POD and POC format set to &amp;quot;LFS (AU/NZ)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
The Job Group and Site screens (job_group.aspx and site_header.aspx respectively) will be modified to allow the system to be configured for the new LFS report, by adding this as an option to the DDLs in the editing pop-up forms, for both POD and POC format. Additionally, the grid will be modified to display this correctly if selected. The name on the list will be 'LFS (AU/NZ)', pointing to the new report below, LFS_AUNZ.aspx. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD/POC Format ==&lt;br /&gt;
{{Note}} This format has been prototyped and is available on request for the developer to base the final formats. &lt;br /&gt;
&lt;br /&gt;
The format created here should follow the standardised pagination code used in other formats.&lt;br /&gt;
&lt;br /&gt;
The format will be created as LFS_AUNZ.aspx.&lt;br /&gt;
&lt;br /&gt;
The fields will be mapped as follows when this is a delivery job. Note that all fields come from EPOD_JOB unless specified differently:&lt;br /&gt;
* Customer - EPL_CUSTOMER_NAME of EPL_CUSTOMER.&lt;br /&gt;
* Customer Reference - EPL_CUST_REF&lt;br /&gt;
* Order Date - EPL_ORDER_DATE, formatted as a long date format, plus day name.&lt;br /&gt;
* Origin - EPL_NAME/EPL_ADDRESS_LINE_1/2/3/4/5/EPL_POST_CODE of EPL_JOB_ADDRESS for job type &amp;quot;C&amp;quot;.&lt;br /&gt;
* Destination - EPL_CUSTOMER_NAME/EPL_ADDRESS_LINE_1/2/3/4/5/EPL_POSTCODE of EPL_JOB_ADDRESS for job type &amp;quot;D&amp;quot;.&lt;br /&gt;
* Delivery Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Details - This information will come from the Containers sent to {{#var:System}}. Regardless of whether this is a collection or delivery, the information is taken from the EPOD_CONTAINERS table. The information will be concatenated on EPL_CONTAINER_PACKAGE_CODE and EPL_DESCRIPTION_LONG (the shipping temp and commodity code respectively) - this will be referred to as the group from this point onwards. There will be a maximum of 6 detail lines in this format, not including the title. &lt;br /&gt;
** Items - The number of containers of this matching EPL_CONTAINER_PACKAGE_CODE ND and EPL_DESCRIPTION_LONG. &lt;br /&gt;
** Shipping Temp - EPL_CONTAINER_PACKAGE_CODE of the group&lt;br /&gt;
** Commodity - EPL_DESCRIPTION_LONG of the group&lt;br /&gt;
** Weight - The sum of all EPL_WEIGHT fields on all records in this group&lt;br /&gt;
** Dimensions - EPL_CODE_1 of any of the records of this group&lt;br /&gt;
* Delivery Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Delivery Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
* Received By - EPL_SIGNATORY&lt;br /&gt;
* Delivery Comments&lt;br /&gt;
* Signature - the image of the customer signature from EPL_JOB_SIGNATURE. This will overlay a background containing the fixed text &amp;quot;ORDER RECEIVED IN FULL AND GOOD CONDITION&amp;quot;.&lt;br /&gt;
All other elements on the report shall be fixed text and formatting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For collection jobs, the following modifications will be made:&lt;br /&gt;
* Replace the word &amp;quot;Delivery&amp;quot; with the word &amp;quot;Collection&amp;quot; in all labels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note}} When producing this format as PDF through WkHtmlToPDF, this format should have no borders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 MEDIA LANDSCAPE YES&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=Test the ...&lt;br /&gt;
|MenuAccess=None&lt;br /&gt;
|Prerequisites=None&lt;br /&gt;
|Objective=To test that: ...&lt;br /&gt;
}} &lt;br /&gt;
{{ #vardefine: Cycle | 0 }}{{ #vardefine: SubCycle | 0 }}&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Test Title&lt;br /&gt;
|Notes=&lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Do something&lt;br /&gt;
|Result=Some expected results&lt;br /&gt;
|Remarks=&lt;br /&gt;
|PassFail=&lt;br /&gt;
}} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
MEDIA LANDSCAPE NO&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Appendix A: Report Format Examples =&lt;br /&gt;
== Sample POD Note ==&lt;br /&gt;
[[File:FS_313761_POD_Sample.PNG|border|600px]]&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
== Sample Watermark ==&lt;br /&gt;
[[File:FS_313761_Watermark.PNG|border|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=&lt;br /&gt;
|RefV1=&lt;br /&gt;
|RefDate1=&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.75&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=1.75&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0.25&lt;br /&gt;
|EREQ=0&lt;br /&gt;
|EEST=0&lt;br /&gt;
|EFS=0&lt;br /&gt;
|ETS=0&lt;br /&gt;
|EDEV=0&lt;br /&gt;
|ESTT=0&lt;br /&gt;
|EIMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Rev1=Matt Tipping&lt;br /&gt;
|Rev1Title=Project Manager&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1477</id>
		<title>EST 315767 K-5 Load Complete (Amended) Status</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1477"/>
		<updated>2014-03-21T13:06:02Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=K-5&lt;br /&gt;
|Supimix_Number=315767&lt;br /&gt;
|The_version_of_the_document=0.2&lt;br /&gt;
|Your_Name=A Walker&lt;br /&gt;
|Supimix_PO_Reference=Unknown&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=27/02/2014&lt;br /&gt;
|Clients_Customer=N/A&lt;br /&gt;
|System_Version_being_changed=Latest&lt;br /&gt;
|Client_Request=Admin Portal - Load Summary Screen - Loads stay green even with a clause on a pallet&lt;br /&gt;
|OBS_Solution={{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
&lt;br /&gt;
This functionality will be modified as follows:&lt;br /&gt;
* A Load that holds modified Jobs will be updated to show that amendments have occurred.&lt;br /&gt;
* Whenever a Job is marked as Amended or Cancelled, the Load containing the Job will be tagged as &amp;quot;Complete (Amended)&amp;quot; status within the {{#var:System}} Admin Load screen.&lt;br /&gt;
* The functionality that highlights Jobs as amended will be made available:&lt;br /&gt;
:Whenever a product is cancelled claused or the quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments. &lt;br /&gt;
:The {{#var:System}} Admin Job, Job Product and Containers screens display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=0.25&lt;br /&gt;
|Functional_Specification_Days=0.5&lt;br /&gt;
|Technical_Specification_Days=0&lt;br /&gt;
|Development_Days=1.5&lt;br /&gt;
|Testing_and_Release_Days=0.25&lt;br /&gt;
|Implementation_Days=0.25&lt;br /&gt;
|Project_Management_Days=0.25&lt;br /&gt;
|Year=2014}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1476</id>
		<title>EST 315767 K-5 Load Complete (Amended) Status</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1476"/>
		<updated>2014-03-21T12:57:55Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=K-5&lt;br /&gt;
|Supimix_Number=315767&lt;br /&gt;
|The_version_of_the_document=0.1&lt;br /&gt;
|Your_Name=A Walker&lt;br /&gt;
|Supimix_PO_Reference=Unknown&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=27/02/2014&lt;br /&gt;
|Clients_Customer=N/A&lt;br /&gt;
|System_Version_being_changed=Latest&lt;br /&gt;
|Client_Request=Admin Portal - Load Summary Screen - Loads stay green even with a clause on a pallet&lt;br /&gt;
|OBS_Solution={{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
&lt;br /&gt;
This functionality will be modified as follows:&lt;br /&gt;
* A Load that holds modified Jobs will be updated to show that amendments have occurred.&lt;br /&gt;
* Whenever a Job is marked as Amended or Cancelled, the Load containing the Job will be tagged as &amp;quot;Complete (Amended)&amp;quot; status within the {{#var:System}} Admin Load screen.&lt;br /&gt;
* The functionality that highlights Jobs as amended will be made available:&lt;br /&gt;
:Whenever a product is cancelled claused or the quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments. &lt;br /&gt;
:The {{#var:System}} Admin Job, Job Product and Containers screens display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=0.25&lt;br /&gt;
|Functional_Specification_Days=0.5&lt;br /&gt;
|Technical_Specification_Days=0&lt;br /&gt;
|Development_Days=1.5&lt;br /&gt;
|Testing_and_Release_Days=0.25&lt;br /&gt;
|Implementation_Days=0.25&lt;br /&gt;
|Project_Management_Days=0.25&lt;br /&gt;
|Year=2014}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1475</id>
		<title>EST 315767 K-5 Load Complete (Amended) Status</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1475"/>
		<updated>2014-03-21T12:37:13Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=K-5&lt;br /&gt;
|Supimix_Number=315767&lt;br /&gt;
|The_version_of_the_document=0.1&lt;br /&gt;
|Your_Name=A Walker&lt;br /&gt;
|Supimix_PO_Reference=Unknown&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=27/02/2014&lt;br /&gt;
|Clients_Customer=N/A&lt;br /&gt;
|System_Version_being_changed=Latest&lt;br /&gt;
|Client_Request=Admin Portal - Load Summary Screen - Loads stay green even with a clause on a pallet&lt;br /&gt;
|OBS_Solution={{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{Note}} There is a known bug reported by Partnerlink regarding &amp;quot;Complete (Amended)&amp;quot; Status with {{#var:System}}, logged under Supimix reference 314743.&lt;br /&gt;
&lt;br /&gt;
The existing functionality (developed under reference 305796) is as follows: &lt;br /&gt;
:When a product is cancelled or had their quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments.&lt;br /&gt;
:When a container is cancelled, the PDA client mark the job record with a status showing that the job was completed with amendments.&lt;br /&gt;
:These details are sent back to the Server and saved on the database there.&lt;br /&gt;
:The {{#var:System}} Admin ''Job'', ''Job Product'' and ''Containers'' screens will display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status. &lt;br /&gt;
&lt;br /&gt;
This functionality will be modified as follows:&lt;br /&gt;
* A Load that holds modified Jobs will be updated to show that amendments have occurred.&lt;br /&gt;
* Whenever a Job is marked as Amended or Cancelled, the Load containing the Job will be tagged as &amp;quot;Complete (Amended)&amp;quot; status within the {{#var:System}} Admin Load screen.&lt;br /&gt;
* The functionality that highlights Jobs as amended will be made available:&lt;br /&gt;
:Whenever a product is cancelled claused or the quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments. &lt;br /&gt;
:The {{#var:System}} Admin Job, Job Product and Containers screens display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status.&lt;br /&gt;
&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=0.25&lt;br /&gt;
|Functional_Specification_Days=0.5&lt;br /&gt;
|Technical_Specification_Days=0&lt;br /&gt;
|Development_Days=1.5&lt;br /&gt;
|Testing_and_Release_Days=0.25&lt;br /&gt;
|Implementation_Days=0.25&lt;br /&gt;
|Project_Management_Days=0.25&lt;br /&gt;
|Year=2014}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1474</id>
		<title>EST 315767 K-5 Load Complete (Amended) Status</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1474"/>
		<updated>2014-03-21T12:36:05Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=K-5&lt;br /&gt;
|Supimix_Number=315767&lt;br /&gt;
|The_version_of_the_document=0.1&lt;br /&gt;
|Your_Name=A Walker&lt;br /&gt;
|Supimix_PO_Reference=Unknown&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=27/02/2014&lt;br /&gt;
|Clients_Customer=N/A&lt;br /&gt;
|System_Version_being_changed=Latest&lt;br /&gt;
|Client_Request=Admin Portal - Load Summary Screen - Loads stay green even with a clause on a pallet&lt;br /&gt;
|OBS_Solution={{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{Note}} There is a known bug reported by Partnerlink regarding &amp;quot;Complete (Amended)&amp;quot; Status with {{#var:System}}, logged under Supimix reference 314743.&lt;br /&gt;
&lt;br /&gt;
The existing functionality (developed under reference 305796) is as follows: &lt;br /&gt;
:When a product is cancelled or had their quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments.&lt;br /&gt;
:When a container is cancelled, the PDA client mark the job record with a status showing that the job was completed with amendments.&lt;br /&gt;
:These details are sent back to the Server and saved on the database there.&lt;br /&gt;
:The {{#var:System}} Admin ''Job'', ''Job Product'' and ''Containers'' screens will display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status. &lt;br /&gt;
&lt;br /&gt;
This functionality will be modified as follows:&lt;br /&gt;
* A Load that holds modified Jobs will be updated to show that amendments have occurred.&lt;br /&gt;
* Whenever a Job is marked as Amended or Cancelled, the Load containing the Job will be tagged as &amp;quot;Complete (Amended)&amp;quot; status within the {{#var:System}} Admin Load screen.&lt;br /&gt;
* The {{#var:System}} Admin ''Load'' screen will display Loads marked as amended with &amp;quot;Complete (Amended)&amp;quot; status.&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=0.25&lt;br /&gt;
|Functional_Specification_Days=0.5&lt;br /&gt;
|Technical_Specification_Days=0&lt;br /&gt;
|Development_Days=1.5&lt;br /&gt;
|Testing_and_Release_Days=0.25&lt;br /&gt;
|Implementation_Days=0.25&lt;br /&gt;
|Project_Management_Days=0.25&lt;br /&gt;
|Year=2014}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1473</id>
		<title>EST 315767 K-5 Load Complete (Amended) Status</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=EST_315767_K-5_Load_Complete_(Amended)_Status&amp;diff=1473"/>
		<updated>2014-03-21T12:35:21Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Estimate&lt;br /&gt;
|Supimix_Client_Code=PART&lt;br /&gt;
|Supimix_Project_Code=DEV&lt;br /&gt;
|Supimix_Site_Code=PART&lt;br /&gt;
|Supimix_Client_Reference=K-5&lt;br /&gt;
|Supimix_Number=315767&lt;br /&gt;
|The_version_of_the_document=0.1&lt;br /&gt;
|Your_Name=A Walker&lt;br /&gt;
|Supimix_PO_Reference=Unknown&lt;br /&gt;
|Supimix_Priority=3&lt;br /&gt;
|Date_(DD/MM/YY)=27/02/2014&lt;br /&gt;
|Clients_Customer=N/A&lt;br /&gt;
|System_Version_being_changed=Latest&lt;br /&gt;
|Client_Request=Admin Portal - Load Summary Screen - Loads stay green even with a clause on a pallet&lt;br /&gt;
|OBS_Solution={{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{Note}} There is a known bug reported by Partnerlink regarding &amp;quot;Complete (Amended)&amp;quot; Status with {{#var:System}}, logged under Supimix reference 314743.&lt;br /&gt;
&lt;br /&gt;
The existing functionality (developed under reference 305796) is as follows: &lt;br /&gt;
:When a product is cancelled or had their quantity changed, the PDA client will mark the parent Container and Job records with a status showing that the job was completed with amendments.&lt;br /&gt;
:When a container is cancelled, the PDA client mark the job record with a status showing that the job was completed with amendments.&lt;br /&gt;
:These details are sent back to the Server and saved on the database there.&lt;br /&gt;
:The {{#var:System}} Admin ''Job'', ''Job Product'' and ''Containers'' screens will display items marked as amended with &amp;quot;Complete (Amended)&amp;quot; status. &lt;br /&gt;
&lt;br /&gt;
This functionality will be modified as follows:&lt;br /&gt;
* A Load that holds modified Jobs will be updated to show that amendments have occurred.&lt;br /&gt;
* Whenever a Job is marked as Amended or Cancelled, the Load will be tagged as amended.&lt;br /&gt;
* The {{#var:System}} Admin ''Load'' screen will display Loads marked as amended with &amp;quot;Complete (Amended)&amp;quot; status.&lt;br /&gt;
|Requirements_Days=0&lt;br /&gt;
|Estimation_Days=0.25&lt;br /&gt;
|Functional_Specification_Days=0.5&lt;br /&gt;
|Technical_Specification_Days=0&lt;br /&gt;
|Development_Days=1.5&lt;br /&gt;
|Testing_and_Release_Days=0.25&lt;br /&gt;
|Implementation_Days=0.25&lt;br /&gt;
|Project_Management_Days=0.25&lt;br /&gt;
|Year=2014}}&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1471</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1471"/>
		<updated>2014-03-19T13:03:42Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Note the text in the list will be displayed as 'Claused' but the value stored in the database will be 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be expected to choose a reason code from the list. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. All fields will be checked for the existence of commas entered as part of the text. If they exist, they will be replaced with space characters before the message is sent.&lt;br /&gt;
&lt;br /&gt;
Note that cancelled containers will not be sent as part of the process. This may be expected to change in future. In this scenario further changes may be required.&lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The following is added for clarification purposes following testing:&lt;br /&gt;
The Claused Container pop-up screen will only become visible if the site level flag is set to 'Y'.&lt;br /&gt;
The decision to prompt for the Reason Code will then be dependant on the Job Group level flag. &lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
&lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason'. The user will be expected to choose the reason for marking the delivery as claused. The list will be a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5.0&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1465</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1465"/>
		<updated>2014-03-14T16:18:14Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_JOB_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_CUST_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Claused&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1464</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1464"/>
		<updated>2014-03-14T15:48:18Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_ENG_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_CUST_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Claused&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1463</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1463"/>
		<updated>2014-03-14T15:30:00Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_ENG_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_CUST_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1462</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1462"/>
		<updated>2014-03-14T15:28:57Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_CUST_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1461</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1461"/>
		<updated>2014-03-14T15:14:49Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1460</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1460"/>
		<updated>2014-03-14T15:10:21Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_NUMBER&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1459</id>
		<title>FS 315770 K-13 PART POD Format Rework</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_315770_K-13_PART_POD_Format_Rework&amp;diff=1459"/>
		<updated>2014-03-14T14:56:24Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|POD Format (Rework)}}&lt;br /&gt;
{{#vardefine:Version|0.3}}&lt;br /&gt;
{{#vardefine:Date|7th March 2014}}&lt;br /&gt;
{{#vardefine:Reference|315770/K-13}}&lt;br /&gt;
{{#vardefine:Year|2013}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Fix the POD format created for Partnerlink, referenced in [[#Appendix_A:_Quote_.26_Document_References|Appendix A]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
A POD report format will be produced.&lt;br /&gt;
&lt;br /&gt;
This format will be configurable against the Partners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* Best efforts will be made to match the produced format to the sample provided, but differences in production and presentation (i.e. Browser, Email, etc) may result in some small differences. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Set-up  =&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
Ensure Job Groups must be configured to use the Partnerlink format, where required.&lt;br /&gt;
&lt;br /&gt;
Ensure an EPOD_CUSTOMER record is created for the EP_SITE_ID, populated as follows:&lt;br /&gt;
* EPL_CUSTOMER_NAME, EPL_ADDRESS_1/2/3/4, EPL_POST_CODE, EPL_TELEPHONE - As required&lt;br /&gt;
* EPL_ADDRESS_LINE_5 - URL e.g. http://www.knightsofold.ltd.uk for site L03 (KOO).&lt;br /&gt;
&lt;br /&gt;
Ensure Logos are uploaded for the Sites (on EPOD_SITE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL Changes ==&lt;br /&gt;
Table EPOD_JOB_ADDRESS requires the following modification:&lt;br /&gt;
*    EPL_NAME - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_ADDRESS_INSERT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_DELETE&lt;br /&gt;
*    EPOD_JOB_ADDRESS_SELECT&lt;br /&gt;
*    EPOD_JOB_ADDRESS_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_ADDRESS DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB requires the following modification:&lt;br /&gt;
*    EPL_ACCOUNT - nvarchar(40)&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new field, including but not limited to:&lt;br /&gt;
*    EPOD_JOB_INSERT&lt;br /&gt;
*    EPOD_JOB_DELETE&lt;br /&gt;
*    EPOD_JOB_SELECT&lt;br /&gt;
*    EPOD_JOB_UPDATE&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB DAL object will be changed to:&lt;br /&gt;
*    Export the new field in XML requests&lt;br /&gt;
*    Read the new field &lt;br /&gt;
&lt;br /&gt;
{{Note}} It is not necessary to add this field as a searchable item. However, if allowing this keeps the packages and DAL objects standard in design, then this can also be done, within the DAL and the packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Import/Export Changes ==&lt;br /&gt;
The Partnerlink Import process will be modified to populate the following fields from the incoming file:&lt;br /&gt;
* EPL_ACCOUNT of EPOD_JOB - populated from column 58 (Account Code). &lt;br /&gt;
* EPL_NAME of EPOD_JOB_ADDRESS - populated from column 7 (Col Name) for Collection Addresses, from column 18 (Del Name) for Delivery Addresses. Both job addresses should be written at all times, as both are present on the incoming file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POD Report Format ==&lt;br /&gt;
The final format will look like this prototype:&lt;br /&gt;
&lt;br /&gt;
[[File:FS_315770_POD.PNG|600px|border]]&lt;br /&gt;
&lt;br /&gt;
Mapped fields on the POD report have not changed from the original specification. However, these are re-stated here for clarity.&lt;br /&gt;
* Partner Logo - taken from EPL_LOGO of EPOD_SITE for this EPL_SITE_ID&lt;br /&gt;
* Partner URL - taken from EPL_ADDRESS_5 of the EPOD_CUSTOMER record for this EPL_SITE_ID&lt;br /&gt;
* Partnerlink Logo - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Partnerlink URL - fixed text as &amp;quot;http://www.partnerlink.ltd.uk&amp;quot; - removed if this is a Palletforce job (i.e. EPL_JOB_GROUP = &amp;quot;PALLET&amp;quot;)&lt;br /&gt;
* Customer - EPL_ACCOUNT&lt;br /&gt;
* Consignment Details - EPL_JOB_CODE&lt;br /&gt;
* Consignor - the address of the consignor (collection address). This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;C&amp;quot;. If this does not exist and this is a collection job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this is a delivery job, this should be populated from the Partner address, by retrieving the EPOD_CUSTOMER record for this EPL_SITE_ID. If this does not exist, use the Site information (EPOD_SITE.EPL_SITE_NAME) with no address (blank).&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER), EPL_SITE_NAME (if EPOD_SITE)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Deliver To - the delivery address. This will come from EPOD_JOB_ADDRESS for this EPL_JOB_ID, where EPL_JOB_TYPE = &amp;quot;D&amp;quot;. If this does not exist and this is a delivery job, this should be populated from the the EPOD_CUSTOMER record for this EPL_CUSTOMER_CODE. If this does not exist, this should be blank.&lt;br /&gt;
** Company - EPL_NAME (if EPOD_JOB_ADDRESS), EPL_CUSTOMER_NAME (if  EPOD_CUSTOMER)&lt;br /&gt;
** Address - EPL_ADDRESS_1/2/3/4/5 of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Postcode - EPL_POST_CODE of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
** Phone - EPL_PHONE_NO of EPL_CUSTOMER or EPOD_JOB_ADDRESS&lt;br /&gt;
* Driver - EPL_USER_ID of EPOD_DRIVER&lt;br /&gt;
* Vehicle - EPL_VEHICLE_REG of EPOD_VEHICLE&lt;br /&gt;
* Track Num - EPL_EXT_REF&lt;br /&gt;
* Trailer Number - EPL_TRAILER_ID&lt;br /&gt;
* Col Date - EPL_COL_DATE&lt;br /&gt;
* Manifest Number - EPL_LOAD_ID&lt;br /&gt;
* Del Date - EPL_START_PLANNED_DATE&lt;br /&gt;
* Service - EPL_SERVICE_LEVEL&lt;br /&gt;
* Del Time - EPL_START_PLANNED_TIME. {{Note}} The display of this time should be suppressed (i.e. not displayed on the report) if the value of this field is &amp;quot;2359&amp;quot;.&lt;br /&gt;
* Conditions - Hard-coded as &amp;quot;CONDITIONS: ALL GOODS HANDLED IN ACCORDANCE WITH THE COMPANY'S OWN CONDITIONS, COPIES OF WHICH ARE AVAILABLE ON APPLICATION.&amp;quot;&lt;br /&gt;
* Customer Ref - EPL_CUST_REF&lt;br /&gt;
* Customer Ref2 - EPL_SO_REF&lt;br /&gt;
* Consignment Instructions - EPL_JOB_INSTRUCTION&lt;br /&gt;
* Total Packs - Calculated from number of the job's container records (not including loose products)&lt;br /&gt;
* Total Weight - sub-totalled from EPL_GROSS_WEIGHT of the job's container records (not including loose products)&lt;br /&gt;
* Consignee Signature - EPL_SIGNATURE&lt;br /&gt;
* Printed Name - EPL_SIGNATORY&lt;br /&gt;
* Date - EPL_END_ACTUAL_DATE&lt;br /&gt;
* Arrival Time - EPL_ARRIVAL_TIME&lt;br /&gt;
* Departure Time - EPL_END_ACTUAL_TIME&lt;br /&gt;
{{Note}} All fields are from EPOD_JOB unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
The details section is mapped as follows:&lt;br /&gt;
* Consignment Packs - EPL_CONTAINER_ID&lt;br /&gt;
* Status - the translated status, as follows:&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot;&lt;br /&gt;
** &amp;quot;Cancelled&amp;quot; - EPL_STATUS = &amp;quot;X&amp;quot;&lt;br /&gt;
** &amp;quot;Delivered&amp;quot; - EPL_STATUS = &amp;quot;C&amp;quot; and EPL_REASON_CODE not blank, or EPL_CUST_COMMENTS not blank&lt;br /&gt;
* Notes - EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;DET&amp;quot; (if present and EPL_STATUS = &amp;quot;X&amp;quot;), else EPL_REASON_CODE and EPL_DESCRIPTION of EPOD_REASON_CODE of type &amp;quot;CLA&amp;quot; (if present and EPL_STATUS = &amp;quot;C&amp;quot;), else EPL_CUST_COMMENTS.&lt;br /&gt;
{{Note}} All fields are from EPOD_CONTAINER unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Differences from original designed report:&lt;br /&gt;
* &amp;quot;DRIVER COPY&amp;quot; is now &amp;quot;PROOF OF [EPL_JOB_TYPE.translated]&amp;quot; e.g for a Delivery job, this would be &amp;quot;PROOF OF DELIVERY&amp;quot;.&lt;br /&gt;
* Customer is now set from the account code on the incoming file.&lt;br /&gt;
* The &amp;quot;Del Time&amp;quot; value is suppressed if this is &amp;quot;2359&amp;quot;&lt;br /&gt;
* The &amp;quot;Item&amp;quot; title on the details section is now &amp;quot;Consignment Packs&amp;quot;&lt;br /&gt;
* The following labels and data are all vertically aligned: Track Num, Manifest Number, Service, Driver, Vehicle, Trailer, Col Date, Del Date, Del Time.&lt;br /&gt;
* Labels are now bold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional differences from coded report:&lt;br /&gt;
* Correct Partnerlink Logo&lt;br /&gt;
* URLs for the respective businesses in the header&lt;br /&gt;
* General formatting of the POD (border lines, heading positions, spacing, size of text, etc)&lt;br /&gt;
* Correct formatting and positioning of Signature box&lt;br /&gt;
* Correction of Arrival title (colons)&lt;br /&gt;
* General correction of spacing between labels and data&lt;br /&gt;
* Correct number of lines in details section (30 lines)&lt;br /&gt;
* Data mapped correctly for the following fields (see above for details):&lt;br /&gt;
** Consignment Details&lt;br /&gt;
** Track Num&lt;br /&gt;
** Customer Ref2&lt;br /&gt;
** Departure Time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As there is a possibility that the number of containers will exceed that allowable on a page, the format should be written as a paginated document. The style of this should be copied from previous examples (e.g. ALS.aspx/ALS.aspx.cs).&lt;br /&gt;
&lt;br /&gt;
The specific requirements of this format are:&lt;br /&gt;
* 30 lines should be allowed per page.&lt;br /&gt;
* The Container list should be recognised as the Detail portion of the document, the rest seen as the header.&lt;br /&gt;
* The header should be shown on each page, ensuring that the signature is shown at all times.&lt;br /&gt;
* There is no footer section&lt;br /&gt;
&lt;br /&gt;
== Notes on how to develop POD formats for {{#var:System}} ==&lt;br /&gt;
* All new reports should be created by using existing pagination code - this should be centralised and reusable where possible.&lt;br /&gt;
* To simplify development, existing reports ''that already use the pagination code'' should be copied.&lt;br /&gt;
* Pagination allows for a string definition of just the following 3 sections: Header, Details and Footer. {{Note}} This may be extended in time to Initial and Final headers, plus Page Header and Footers.&lt;br /&gt;
* The call of the Pagination object (ReportPager) allows for the configuration of each section (for example, whether a particular section should be displayed, whether to reserve space for it, etc) - see this code and extensive examples for details of how this works and how to extend this for your report, if necessary.&lt;br /&gt;
* A prototype is always created in plain text - use this to copy in the header, detail and footer sections, escaping special characters as required. Also use this to source the correct CSS.&lt;br /&gt;
* Each section is defined in the C#.NET file (i.e. the &amp;quot;aspx.cs&amp;quot; file) rather than defined as objects in the asp.NET file (i.e. the &amp;quot;.aspx&amp;quot; file), modifying the copied populateReport method and any called methods, such as generateContent, generateHeader, generateFooter. These will be built by copying the provided prototype HTML code replacing data from the records found, escaping special characters as required. Note that data may be retrieved from globally- or locally-declared DAL objects within the report, if this is required.&lt;br /&gt;
* All other methods in the C#.NET file should be common to all POD reports, as follows:&lt;br /&gt;
** private int ValidateUser()&lt;br /&gt;
** public void Page_Error(object sender, EventArgs e)&lt;br /&gt;
** protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
** protected override void Render(HtmlTextWriter writer)&lt;br /&gt;
** protected override void OnUnload(EventArgs e)&lt;br /&gt;
** protected void emailBT_clicked(object sender, EventArgs e)&lt;br /&gt;
** private string convertJobType(String EPL_JOB_TYPE)&lt;br /&gt;
** public static int roundup(int i)&lt;br /&gt;
* The asp.NET file contains only:&lt;br /&gt;
** The required CSS code for this format, sourced mainly from the prototype rather than the copied source code.&lt;br /&gt;
** The &amp;quot;Email&amp;quot; div&lt;br /&gt;
** A general &amp;quot;POD&amp;quot; div.&lt;br /&gt;
* When complete:&lt;br /&gt;
** Check against the prototype - pay particular attention to line breaks (both forced by the HTML BR tag and those automatically placed into data and labels by size restrictions. &lt;br /&gt;
** Check the final PDF result by converting the produced page to PDF using the conversion tool.&lt;br /&gt;
** It should not then be necessary to check on multiple browsers, as the prototype has already been tested against all major browsers and likely versions, such as:&lt;br /&gt;
*** Firefox (latest)&lt;br /&gt;
*** Chrome (latest)&lt;br /&gt;
*** Internet Explorer 11&lt;br /&gt;
*** Internet Explorer 6-10 (through emulation)&lt;br /&gt;
*** Safari (through PDF conversion)&lt;br /&gt;
&lt;br /&gt;
When creating a report following these instructions, the produced report should match the prototype completely, and therefore there is less chance of a customer being unhappy upon delivery, having received a report that does not match the specification and prototype that they agreed before development commenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=A&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1=[[FS_304709_Partnerlink_POD_Format|FS 304709 Partnerlink POD Format]]&lt;br /&gt;
|RefV1=0.2&lt;br /&gt;
|RefDate1=27/08/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=3.0&lt;br /&gt;
|ST=0.25&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1404</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1404"/>
		<updated>2014-02-13T14:36:56Z</updated>

		<summary type="html">&lt;p&gt;Rxe: /* Palletforce File Export Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Note the text in the list will be displayed as 'Claused' but the value stored in the database will be 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be expected to choose a reason code from the list. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. All fields will be checked for the existence of commas entered as part of the text. If they exist, they will be replaced with space characters before the message is sent.&lt;br /&gt;
&lt;br /&gt;
Note that cancelled containers will not be sent as part of the process. This may be expected to change in future. In this scenario further changes may be required.&lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason'. The user will be expected to choose the reason for marking the delivery as claused. The list will be a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5.0&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1393</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1393"/>
		<updated>2014-02-12T13:55:43Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Note the text in the list will be displayed as 'Claused' but the value stored in the database will be 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be expected to choose a reason code from the list. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason'. The user will be expected to choose the reason for marking the delivery as claused. The list will be a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5.0&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1392</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1392"/>
		<updated>2014-02-12T13:53:21Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Note the text in the list will be displayed as 'Claused' but the value stored in the database will be 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be expected to choose a reason code from the list. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason'. The user will be expected to choose the reason for marking the delivery as claused. The list will be a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=N&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=0&lt;br /&gt;
|ST=0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1391</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1391"/>
		<updated>2014-02-12T13:50:40Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Note the text in the list will be displayed as 'Claused' but the value stored in the database will be 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be able to choose a reason code from the list. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank. Note that only completed jobs&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason' to allow the user to choose the reason for marking the delivery as claused. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=N&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=0&lt;br /&gt;
|ST=0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1388</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1388"/>
		<updated>2014-02-12T13:31:42Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list.&lt;br /&gt;
Note that the Text will be displayed as 'Claused' but the value on the database will be stored as 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be expected to choose a reason code from the list. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated and the status of the container record is 'C'. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. &lt;br /&gt;
The EPL_CUST_COMMENTS field will be checked for comma characters. If any are found, they will be replaced with space characters in the outbound file to ensure the integrity of the csv produced. &lt;br /&gt;
Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== PDA Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason'. The user will be expected to choose the reason for marking the delivery as claused. The list will be made a required field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1387</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1387"/>
		<updated>2014-02-12T13:20:10Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list.&lt;br /&gt;
Note that the Text will be displayed as 'Claused' but the value on the database will be stored as 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be able to choose a reason code from the list. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated and the status of the container record is 'C'. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. &lt;br /&gt;
The EPL_CUST_COMMENTS field will be checked for comma characters. If any are found, they will be replaced with space characters in the outbound file to ensure the integrity of the csv produced. &lt;br /&gt;
Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== PDA Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason' to allow the user to choose the reason for marking the delivery as claused. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=Y&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1386</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1386"/>
		<updated>2014-02-12T13:17:53Z</updated>

		<summary type="html">&lt;p&gt;Rxe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list.&lt;br /&gt;
Note that the Text will be displayed as 'Claused' but the value on the database will be stored as 'CLA'. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be able to choose a reason code from the list. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated and the status of the container record is 'C'. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. &lt;br /&gt;
The EPL_CUST_COMMENTS field will be checked for comma characters. If any are found, they will be replaced with space characters in the outbound file to ensure the integrity of the csv produced. &lt;br /&gt;
Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== PDA Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason' to allow the user to choose the reason for marking the delivery as claused. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=N&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.5&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=5&lt;br /&gt;
|ST=1.0&lt;br /&gt;
|IMP=0.5&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1385</id>
		<title>FS 314964 Palletforce Interface changes</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_314964_Palletforce_Interface_changes&amp;diff=1385"/>
		<updated>2014-02-12T09:46:26Z</updated>

		<summary type="html">&lt;p&gt;Rxe: /* Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
{{#vardefine:Client|PART}}&lt;br /&gt;
{{#vardefine:ClientName|PartnerLink}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' ePOD}}&lt;br /&gt;
{{#vardefine:Doc_Title|Palletforce Interface Changes}}&lt;br /&gt;
{{#vardefine:Version|0.1}}&lt;br /&gt;
{{#vardefine:Date|7th February 2014}}&lt;br /&gt;
{{#vardefine:Reference|314964}}&lt;br /&gt;
{{#vardefine:Year|2014}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Doc_Title&lt;br /&gt;
|Client={{#var:ClientName}}&lt;br /&gt;
|System={{#var:System}}&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Reference=FS {{#var:Reference}}&lt;br /&gt;
|Version={{#var:Version}}&lt;br /&gt;
|Date={{#var:Date}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TOC --&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
= Functional Overview  =&lt;br /&gt;
== Client Requirement  ==&lt;br /&gt;
Palletforce Interface changes. Add Delivery Status Code and POD Notes.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
The Palletforce export format will be altered in line with their recent format changes.&lt;br /&gt;
&lt;br /&gt;
The export format will be altered to include two extra fields: Delivery Status Code and POD Notes used to indicate that the delivery has been successful but with exceptions or minor damages. &lt;br /&gt;
&lt;br /&gt;
In order to achieve this, a reason code may be prompted for when making a successful delivery.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} system.&lt;br /&gt;
* These changes will only be made to the Android version of the PDA client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Set-up  =&lt;br /&gt;
&lt;br /&gt;
== Pre-requisites  ==&lt;br /&gt;
&lt;br /&gt;
== Menu Structure  ==&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Data  ==&lt;br /&gt;
New &amp;quot;Clause&amp;quot; type reason codes will be expected to be setup for the Palletforce Job Group. &lt;br /&gt;
Initially reason codes of 'PODC' and 'PODD' will be expected to be defined with descriptions of 'Delivered with Exception' and 'Delivered with Damage' respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database Changes ==&lt;br /&gt;
&lt;br /&gt;
Table EPOD_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing EPOD_JOB_GROUP DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of EPOD_JOB_GROUP&lt;br /&gt;
&lt;br /&gt;
Existing packages will be modified to allow the creating, editing and selecting of the new fields, including but not limited to:&lt;br /&gt;
* EPOD_JOB_GROUPS_INSERT&lt;br /&gt;
* EPOD_JOB_GROUPS_SEARCH&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT&lt;br /&gt;
* EPOD_JOB_GROUPS_SELECT_UPDATED_DATA&lt;br /&gt;
* EPOD_JOB_GROUPS_UPDATE&lt;br /&gt;
&lt;br /&gt;
== Admin Changes ==&lt;br /&gt;
&lt;br /&gt;
The Reason Code Maintenance screen (Reason_code.aspx) will be altered to include a new 'Type' of 'Claused' in the 'Type' drop-down list. &lt;br /&gt;
Reason codes of this type will be used to indicate a complete delivery with exceptions, e.g. 'PODD' or 'PODC'.&lt;br /&gt;
&lt;br /&gt;
The Job Group Maintenance screen (job_group.aspx) will be altered to include a 'Claused Delivery' flag. This will appear as a drop-down list in the 'PDA' tab. &lt;br /&gt;
The list will have three possible values: &lt;br /&gt;
* '0' - don't prompt for a claused delivery description or claused reason code &lt;br /&gt;
* '1' - prompt for a claused delivery description without a claused reason code&lt;br /&gt;
* '2' - prompt for both a claused delivery description and a claused reason code&lt;br /&gt;
&lt;br /&gt;
Note that if the current Site level 'Claused Delivery' tickbox is set, then this will mean that the 'Claused Delivery' text box will appear &lt;br /&gt;
regardless of the value of the Job Group setting.&lt;br /&gt;
&lt;br /&gt;
The Container Maintenance screen (product_containers.aspx) will be altered to allow the user to choose a reason code when entering a Claused Delivery. &lt;br /&gt;
In the Container Details popup box, the user is currently able to enter free text within the Claused Delivery field. &lt;br /&gt;
The program will be changed to check the 'Claused Delivery' flags mentioned above. If the flag is set to the appropriate value and if there are any 'Claused' type reason codes defined for the Job Group in question, &lt;br /&gt;
then a drop-down list will appear labelled as 'Claused Reason'. The user will be able to choose a reason code from the list. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
== Palletforce File Export Changes ==&lt;br /&gt;
The file extension for the current process is set as .epod. This will be altered to be .epd.&lt;br /&gt;
&lt;br /&gt;
In addition, two extra fields will be added to the current layout for the outbound Palletforce file:&lt;br /&gt;
&lt;br /&gt;
* Delivery Status Code - to be set as EPL_REASON_CODE of EPOD_CONTAINER if populated. If not then set as 'POD'.&lt;br /&gt;
* POD Notes - to be set as EPL_CUST_COMMENTS of EPOD_CONTAINER if populated. If not and EPL_REASON_CODE of EPOD_CONTAINER is populated, then set as EPL_DESCRIPTION of EPOD_REASON_CODE for that reason code record. Otherwise, this field should be left blank.&lt;br /&gt;
&lt;br /&gt;
Note that the layout is to remain as a comma-separated file so the new fields will need to be separated with extra commas. &lt;br /&gt;
&lt;br /&gt;
== Message Process Changes ==&lt;br /&gt;
The message process class (messageprocess.cs) that sends data to the PDA will need to verified to ensure that the EPL_CLAUSE_DELIVERY flag is sent as part of the Job Group message.&lt;br /&gt;
&lt;br /&gt;
== Pda Changes ==&lt;br /&gt;
&lt;br /&gt;
Table PDA_JOB_GROUPS requires the following modifications:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY (New field) - nvarchar(1)&lt;br /&gt;
&lt;br /&gt;
The existing PDA_JOB_GROUPS DAL object will be changed to include:&lt;br /&gt;
* EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS&lt;br /&gt;
&lt;br /&gt;
The login request process will be altered to allow the EPL_CLAUSE_DELIVERY flag to be populated when Job Group level data is passed in.&lt;br /&gt;
&lt;br /&gt;
The Claused Container pop-up screen will be altered to check for the EPL_CLAUSE_DELIVERY of PDA_JOB_GROUPS flag. &lt;br /&gt;
If this is set to '2', then the program will check for the existence of PDA_REASON_CODES for the Job Group in question&lt;br /&gt;
of Reason Type 'CLA'.&lt;br /&gt;
If records exist then a new drop-down list will be displayed Labelled as 'Claused Reason' to allow the user to choose the reason for marking the delivery as claused. The list will not be made a required field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE YES --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Appendix A: TEST PLAN  =&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_Header&lt;br /&gt;
|Title={{#var:Doc_Title}}&lt;br /&gt;
|Log={{#var:Reference}}&lt;br /&gt;
|Description=To test the production of the outbound Palletforce export process to ensure the new Claused delivery fields are included in {{#var:System}}&lt;br /&gt;
|MenuAccess=Job Group Maintenance, Reason Code Maintenance&lt;br /&gt;
|Prerequisites=Ensure that Palletforce job groups are defined against the required sites &lt;br /&gt;
|Objective=To test the additional fields required for the Palletforce export process are populated. Check that the claused reason code field is prompted for on the device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Admin&lt;br /&gt;
|Notes=Setup Job Groups to allow Claused Reasons to be sent. Setup Claused Reason Codes in Reason Code Maintenance. &lt;br /&gt;
}} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Job Group Maintenance. Check that a 'Claused Reason' drop-down list option is available in the PDA tab. Check the default value is set to 'Don't prompt'&lt;br /&gt;
|Result=Each Job Group can be configured to use 'Claused Reasons' or not.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Log into Reason Code Maintenance. Check that new 'Claused' reason codes can be defined.&lt;br /&gt;
|Result=Reason Codes of type 'Claused' can be created.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Enter/Find a job that is 'In Progress'. Enter the Details screen and then click 'Select' on one of the Container records.&lt;br /&gt;
|Result=The Option to enter a 'Claused Reason' should now be available. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}&lt;br /&gt;
{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }}{{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=PDA - Process&lt;br /&gt;
|Notes=Check the user is prompted for a Claused Reason Code when appropriate. &lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Process a job for the Job Group in question. Enter the Claused Reasons canvas.&lt;br /&gt;
|Result=The user should be prompted for a Claused reason code as well as the current Claused free text box.&lt;br /&gt;
|Remarks= |PassFail= }}  {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Delete the Claused Reason Code definitions from Reason Code Maintenance and repeat the last test. &lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'. &lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Add the Claused Reason Code definitions back but set the job group not to prompt for Claused Reason codes.&lt;br /&gt;
|Result=The user should no longer be able to enter a 'Claused Reason'.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}}&lt;br /&gt;
&lt;br /&gt;
{{TestPlan_CycleHeader&lt;br /&gt;
|Cycle={{ #vardefineecho: Cycle | {{ #expr: {{ #var: Cycle }} + 1 }} }}{{ #vardefine: SubCycle | {{ #var: Cycle }} }}&lt;br /&gt;
|Title=Export process - Palletforce &lt;br /&gt;
|Notes=Check that two new fields are included at the end of each line. Check that the file extension of the file produced is .epd.&lt;br /&gt;
}} &amp;lt;!--INSERT TESTS HERE --&amp;gt; {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason and Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Claused text are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Create an outbound Palletforce Export file for a job that has a Claused Reason but no Claused Reason text.&lt;br /&gt;
|Result=Check the Claused Reason Code and Reason Code description are included in the output file produced.&lt;br /&gt;
|Remarks= |PassFail= }} {{TestPlan_CycleFooter}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MEDIA LANDSCAPE NO --&amp;gt; &lt;br /&gt;
{{Doc_Appendix&lt;br /&gt;
|Appendix=B&lt;br /&gt;
|Estimate=N&lt;br /&gt;
|Glossary=EPOD&lt;br /&gt;
|Ref1= &lt;br /&gt;
|RefV1= &lt;br /&gt;
|RefDate1= &lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=0&lt;br /&gt;
|TS=0&lt;br /&gt;
|DEV=0&lt;br /&gt;
|ST=0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=Y&lt;br /&gt;
|Rev1=Phil Harding&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Andrew Allison&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Rxe</name></author>
	</entry>
</feed>