FS 294229 Whiteline EPOD Modifications: Difference between revisions
(v1.1 - Adjusted cost) |
No edit summary |
||
Line 1,119: | Line 1,119: | ||
|REQ=0 | |REQ=0 | ||
|EST=0 | |EST=0 | ||
|FS=1. | |FS=1.5 | ||
|TS=0 | |TS=0 | ||
|DEV=8 | |DEV=8 |
Revision as of 18:15, 23 November 2011
Whiteline Group Ltd
Whiteline ePOD Modifications
CALIDUS ePOD
23th November 2011 - 0.1
Reference: FS 294229
Contents
Functional Overview
Client Requirement
The customer requires an ePOD system.
The functionality required is:
- Deliveries of loose products
- Collections of loose products
- Automatic Import of data from host system (Cold Fusion)
- Export of data
- Admin functions (for creation of Collections)
- Facility to confirm receipt of payment
- Integrated Navigation
The customer will have 5 users of the system.
Solution Overview
The following developments will be required:
- Data Interfacing
- Import
- Export
- Customer Reference
- Payment Received
- Integrated Navigation
- New POD format
Scope
- Modifications will be made to the latest version (1.1) of the CALIDUS ePOD system.
- The software delivery is by end of January (TBC).
- The software will be hosted on one of the customer's servers - minimum requirements have been notified.
Set-up
Pre-requisites
- For emailing POC/POD documents, Email must be configured on the CALIDUS ePOD server.
- The Co-pilot product must be installed for integrated navigation to work.
Menu Structure
None
Data
None
Functional Description
Configuration
The new field 'Delivery Payment' must be set to 'Enabled'.
Database Modifications
A new field will be added to the EPOD_PRODUCT table, called EPL_CUST_REF. This will be a 30-character field.
A new field will be added to the EPOD_SITE and EPOD_JOB_GROUPS tables, called EPL_DELIVERY_PAYMENT. This will be a 1-character rule, of values 'Y' or 'N'. This will control whether the Delivery process allows the user to display the Payment tab.
Data Interfacing
Data interfacing has been discussed with the Whiteline technical resource (Ian Finch of IFCon). The interfacing will be through a modified version of the standard Web Service XML structures.
All import data will be sent from the host system to the ePOD Web Service.
All export data will re requested by the host system from the ePOD Web Service. This will be requested based on a single day to be updated.
Import
The import XML will be modified to include a new tag EPL_CUST_REF within the EPOD_PRODUCT container tag, as follows:
<xsd:element name="EPL_CUST_REF" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="30" /> </xsd:restriction> </xsd:simpleType> </xsd:element>
When received within an EPOD_LOADS or EPOD_JOBS tag, this will be saved to the new field against the EPOD_PRODUCT table.
Export
The export XML will be modified to include a new tag EPL_CUST_REF within the EPOD_PRODUCT container tag, as follows:
<xsd:element name="EPL_CUST_REF" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="30" /> </xsd:restriction> </xsd:simpleType> </xsd:element>
Requests for data through the Web Service (ePOD_DataService.asmx) will require an XML message structure to define what data is being extracted. The structures follow:
- Load by Load ID
<?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="EPOD_EXPORT_LOAD"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_LOAD_ID" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="EPL_USER_ID" type="xsd:string" /> <xsd:attribute name="EPL_USER_PASSWORD" type="xsd:string" /> <xsd:attribute name="EPL_SITE_ID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>
Only the specified Load will be returned.
- Load by Date
<?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="EPOD_EXPORT_LOAD_DATE"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_LOAD_END_ACTUAL_DATE" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="EPL_USER_ID" type="xsd:string" /> <xsd:attribute name="EPL_USER_PASSWORD" type="xsd:string" /> <xsd:attribute name="EPL_SITE_ID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>
Only Loads that have been completed or cancelled on that date will be returned.
- Job by Job ID
<?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="EPOD_EXPORT_JOB"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_JOB_ID" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="EPL_USER_ID" type="xsd:string" /> <xsd:attribute name="EPL_USER_PASSWORD" type="xsd:string" /> <xsd:attribute name="EPL_SITE_ID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>
Only the specified job will be returned.
- Job by Date
<?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="EPOD_EXPORT_JOB"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_END_ACTUAL_DATE" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="EPL_USER_ID" type="xsd:string" /> <xsd:attribute name="EPL_USER_PASSWORD" type="xsd:string" /> <xsd:attribute name="EPL_SITE_ID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>
Only Jobs that have been completed or cancelled on that date will be returned.
Note: It is expected that this implementation will use the Job By Date export.
The exported file will follow the standard XML export structure, specified in Appendix B. The element below must be added to the EPOD_JOB tag:
<xsd:element name="EPL_INVOICED" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="1" /> </xsd:restriction> </xsd:simpleType> </xsd:element>
Customer Reference
A new field EPL_CUST_REF will be added to the EPOD_PRODUCT table.
It will not be necessary to view this through the Admin screens. However it will be necessary to view this on the PDA Client.
This will be achieved by allowing the user to long-click on a product in the grid on the Product tab of the Delivery screen. This will pop up a menu with a Details option against it. When selecting this option, the screen will display a new form, showing:
- EPL_PRODUCT_CODE
- EPL_DESCRIPTION
- EPL_CUST_REF
- EPL_PRODUCT_QTY_PLANNED
An OK button will be provided to return the user to the Delivery screen Product tab.
Payment Received
PDA Client
After all products have been confirmed (as delivered or cancelled), the user will be directed to a new tab on the Delivery screen, labelled Payment.
This tab will display a label or 'Payment Received' and a check box. The user can optionally check this box before clicking OK to finish the job.
This information will be sent back to the Admin system through the standard interface, and stored against the EPOD_JOB table in the existing EPL_INVOICED field.
Note: This field should be added to the standard interface, as specified in the #Export section.
Admin
The Job Group and Site configuration screens will be modified to allow the user to configure whether the Payment tab is displayed on the PDA Client. this is controlled through the new flag EPL_DELIVERY_PAYMENT field. This will be labelled 'Delivery Payment' and will allow values of 'Y' and 'N' only, labelled as 'Enabled' and 'Disabled' in the screen. The value will be selected through the use of a DDL. The value should default to 'Disabled'.
Integrated Navigation
Note: Integrated navigation is being developed under OBS product development.
The PDA Job screen will be modified to add a Navigate button to the Contact tab. This will be positioned next to the Call button. When clicked, this will start the Co-pilot application, if it is not already running.
When started, the PDA client will pass the address details to the Co-pilot application, which will then plan the route to the destination.
The user will be able to complete the route as per the usual navigation process.
Once complete, the user can either stop the Co-pilot application, or simply hide it using the buttons provided within Co-pilot. Note: As Co-pilot takes several seconds to start and initiate a connection to GPS, it is recommended to leave the Co-pilot application running.
The coding for the Co-pilot integration is detailed within the SDK provided for this product.
The PDA client must initiate the application and the messaging service to the application before any addresses (stops) can be interfaced to the application. This should only be done if the application is not already running. There is no need to close the messaging queue or the application at any point other than when the PDA client is closed.
The PDA client must also listen for events back from Co-pilot. This is required at a minimum so that the PDA client can be aware of whether the Co-pilot application is running.
Bespoke POD Document
A new POC format will be created, labelled as "Whiteline". This will match as closely as possible the existing documents used by the client, as can be seen in Appendix A.
The elements displayed on the POD will be:
- Delivery Drop Identifier - EPL_JOB_ID of EPL_JOB
- Customer Name - EPL_CUSTOMER_NAME of EPOD_CUSTOMER
- Delivery Address Line 1 - EPL_ADDRESS_1 of EPOD_CUSTOMER
- Delivery Address Line 2 - EPL_ADDRESS_2 of EPOD_CUSTOMER
- Delivery Town - EPL_ADDRESS_3 of EPOD_CUSTOMER
- Delivery County - EPL_ADDRESS_4 of EPOD_CUSTOMER
- Delivery Post Code - EPL_POSTCODE of EPOD_CUSTOMER
- Planned Drop Time - EPL_START_PLANNED_TIME of EPOD_CUSTOMER
- Item Identifier - EPL_PRODUCT_CODE of EPOD_PRODUCT
- Customer Reference - EPL_CUST_REF of EPOD_PRODUCT
- Description - EPL_DESCRIPTION of EPOD_PRODUCT
Appendix A: POD Document Formats
Appendix A: Export XML Structure
<?xml version="1.0" encoding="utf-16"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="EPOD_IMPORT"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_LOADS" maxOccurs="1" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_LOAD" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_LOAD_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_LOAD_START_PLANNED_DATE" type="xsd:int" nillable="true" minOccurs="0" /> <xsd:element name="EPL_LOAD_START_PLANNED_TIME" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_LOAD_END_PLANNED_DATE" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_LOAD_END_PLANNED_TIME" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_LOAD_DISTANCE_PLANNED" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_USER_ID" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPOD_JOBS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_JOB" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_LOAD_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_TYPE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="D"/> <xsd:enumeration value="C"/> <xsd:enumeration value="S"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_GROUP" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="5" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_INSTRUCTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_OFFICE_INSTRUCTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CUSTOMER_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_START_PLANNED_DATE" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_START_PLANNED_TIME" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_DISTANCE_PLANNED" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_CUSTOMER_NAME" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="100" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_1" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_2" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_3" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_4" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_POSTCODE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTACT" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_TELEPHONE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_EMAIL" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPOD_CONTAINERS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_CONTAINER" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_ID" type="xsd:int" nillable="false"/> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="true" minOccurs="0" /> <xsd:element name="EPL_CONTAINER_PACKAGE_CODE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="4" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_PACKAGE_DESC" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPOD_PRODUCTS" nillable="true" minOccurs="0" maxOccurs="1" > <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_PRODUCT" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_ID" type="xsd:int" nillable="false"/> <xsd:element name="EPL_PRODUCT_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="false"/> <xsd:element name="EPL_DESCRIPTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_QTY_PLANNED" type="xsd:int" nillable="false"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_PRODUCTS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_PRODUCT" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="false"/> <xsd:element name="EPL_DESCRIPTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_QTY_PLANNED" type="xsd:int" nillable="false"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_SERVICE" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SERVICE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SERVICE_TYPE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="D"/> <xsd:enumeration value="I"/> <xsd:enumeration value="S"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_REG_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="15" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_VIN_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SIM_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_JOBS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_JOB" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_LOAD_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_TYPE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="D"/> <xsd:enumeration value="C"/> <xsd:enumeration value="S"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_GROUP" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="5" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_INSTRUCTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_OFFICE_INSTRUCTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CUSTOMER_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_START_PLANNED_DATE" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_START_PLANNED_TIME" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_DISTANCE_PLANNED" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_CUSTOMER_NAME" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="100" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_1" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_2" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_3" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_4" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_POSTCODE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTACT" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_TELEPHONE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_EMAIL" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPOD_CONTAINERS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_CONTAINER" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_ID" type="xsd:int" nillable="false"/> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="true" minOccurs="0"/> <xsd:element name="EPL_CONTAINER_PACKAGE_CODE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="4" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_PACKAGE_DESC" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPOD_PRODUCTS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_PRODUCT" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTAINER_ID" type="xsd:int" nillable="false"/> <xsd:element name="EPL_PRODUCT_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="false"/> <xsd:element name="EPL_DESCRIPTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_QTY_PLANNED" type="xsd:int" nillable="false"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_PRODUCTS" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_PRODUCT" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SEQUENCE" type="xsd:int" nillable="false"/> <xsd:element name="EPL_DESCRIPTION" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_QTY_PLANNED" type="xsd:int" nillable="false"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_SERVICE" nillable="true" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_JOB_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SERVICE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SERVICE_TYPE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="D"/> <xsd:enumeration value="I"/> <xsd:enumeration value="S"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_REG_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="15" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_VIN_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_SIM_NUMBER" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_CUSTOMERS" maxOccurs="1" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_CUSTOMER" nillable="true" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CUSTOMER_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CUSTOMER_NAME" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="100" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_1" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_2" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_3" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_ADDRESS_4" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_POSTCODE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_CONTACT" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_TELEPHONE" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="50" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_EMAIL" nillable="true" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EPOD_SERVICE_PRODUCT_MASTERS" nillable="false" maxOccurs="1" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPOD_SERVICE_PRODUCT_MASTER" nillable="false" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="EPL_SITE_ID" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_CODE" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_PRODUCT_GROUP" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_DESCRIPTION" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_STATUS" nillable="false"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="A"/> <xsd:enumeration value="I"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EPL_QUANTITY" type="xsd:int" /> <xsd:element name="EPL_PRODUCT_WEIGHT" type="xsd:decimal" nillable="true" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="EPL_SITE_ID"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="EPL_USER_ID"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="EPL_USER_PASSWORD"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="100" /> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema>
Appendix C: Quote & Document References
![]() | Unknown costs for client/year (WHI/2011) |
Cost Details | ||||
Activity | Estimate No. of Days |
No. of Days | Rate per Day (£) | Cost (£ Exc. VAT) |
Requirements | 0.00 | 0.00 | 0 | £0.00 |
Change Request Evaluation | 0.00 | 0.00 | 0 | £0.00 |
Functional Specification | 1.50 | 1.50 | 0 | £0.00 |
Technical Specification | 0.00 | 0.00 | 0 | £0.00 |
Development | 8.00 | 8.00 | 0 | £0.00 |
Testing and Release | 2.00 | 2.00 | 0 | £0.00 |
Implementation | 0.00 | 0.00 | 0 | £0.00 |
Project Management | First argument to "number_format" must be a number. | First argument to "number_format" must be a number. | 0 | £First argument to "number_format" must be a number. |
TOTAL | First argument to "number_format" must be a number. | First argument to "number_format" must be a number. | £First argument to "number_format" must be a number. |
Estimate excludes training, release to live and go live support. |
C.1 References
Ref No | Document Title & ID | Version | Date |
1 |
C.2 Glossary
Term | Definition |
---|---|
EPOD | Electronic Proof of Delivery. The OBS EPOD system is CALIDUS ePOD. |
CALIDUS eSERV | The OBS mobile system to complete Service functionality in the field. This is part of the CALIDUS ePOD system. |
PDA | The mobile device on which the C-ePOD system will run in the field. This can be a Phone, EDA or industrial PDA, running Android. |
DAL | Data Access Layer. A mechanism for accessing data by the system that is removed from the application, allowing for simplified access and providing protection to the data, as only approved DAL methods can be used to modify it. |
GPS | Global Positioning System. A mechanism of retrieving accurate positioning information in the form of Latitude and Longitude (Lat-Long) co-ordinates from a device. |
GPRS, 3G, HSDPA, Data Service | All terms referring to mobile device network connectivity, and the speed at which the device connects to the internet. |
C.3 Authorised By
Steve McCartney | OBS Representative | _____________________________ |
Matt Turner | OBS Representative | _____________________________ |