<?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=Cak</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=Cak"/>
	<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php/Special:Contributions/Cak"/>
	<updated>2026-07-01T19:25:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11469</id>
		<title>Support - Tesla EDI Outbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11469"/>
		<updated>2024-09-06T09:53:52Z</updated>

		<summary type="html">&lt;p&gt;Cak: correct typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Tracking ==&lt;br /&gt;
A customer specific tracking interface is required to track the milestones associated with an order.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
USE_XML_ORDER_SUB_REFS should be set to Y for the appropriate cost centre.&lt;br /&gt;
&lt;br /&gt;
== Outbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost centre and the Tesla customer. The flow uses the standard ORD_XML_OUT flow type and includes a Milestones section.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla outbound edi 1.png|800x800px]]&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla outbound edi 2.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Messages sent ==&lt;br /&gt;
The following message types will be sent &lt;br /&gt;
&lt;br /&gt;
·        ORD&lt;br /&gt;
&lt;br /&gt;
·        CAN&lt;br /&gt;
&lt;br /&gt;
·        DEP&lt;br /&gt;
&lt;br /&gt;
·        ARR&lt;br /&gt;
&lt;br /&gt;
·        DEL&lt;br /&gt;
&lt;br /&gt;
== Triggering Events ==&lt;br /&gt;
An '''‘ORD’''' message will be triggered when the first item is added to an order and will only be sent once. The EDI parameter called ‘PREVENT_RESEND_ORDER’ will be set to ‘Y’ to ensure that a control record for an ‘ORD’ message is not created when an earlier message has been processed successfully. The trigger ‘TRG_SOI_XML’ will create the control record. The OMS status is ‘UNSCHEDULED’ and the milestone comment is ‘Booking Acknowledged’&lt;br /&gt;
&lt;br /&gt;
A '''‘DEP’''' message will be created when the actual departure time on the collection stop of an order is updated to show that the vehicle has left the collection location.&lt;br /&gt;
&lt;br /&gt;
The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘Departed Origin’ if this is the initial collection location or ‘Departed Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
An '''‘ARR’''' message will be created when the actual arrival time on the delivery stop of an order is updated to show that the vehicle has arrived at the delivery location. The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘At Dest’ if this is the final delivery location or ‘At Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
'''**Note''' If an order exists on multiple trips the ‘DEP’ and ‘ARR’ messages will be sent for each leg of the orders journey.&lt;br /&gt;
&lt;br /&gt;
A '''‘DEL’''' message will be created when the delivered quantities on an order line are updated for the first time, i.e. when the delivered quantity is changed from null to 1, for example. The trigger TRG_SOL_XML will create the control record&lt;br /&gt;
&lt;br /&gt;
A '''‘CAN’''' message will be triggered if the status of an order is set to ‘CANCELLED’. The trigger ‘TRG_SCH_ORD_XML_INT’ will create the control record. The OMS status is ‘CANCELLED’ and the milestone comment ‘Booking Rejected’.&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\545095 - SCR-CTMS-02428249-05 - CTMS - Customer-Specific Tracking File&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\623640- Changes to Tesla tracking milestones&lt;br /&gt;
[[Category:Support Documents]]&lt;br /&gt;
[[Category:DHL Tesla]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11468</id>
		<title>Support - Tesla EDI Outbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11468"/>
		<updated>2024-09-06T09:50:47Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Tracking ==&lt;br /&gt;
A customer specific tracking interface is required to track the milestones associated with an order.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
USE_XML_ORDER_SUB_REFS should be set to Y for the appropriate cost center.&lt;br /&gt;
&lt;br /&gt;
== Outbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost center and the Tesla customer. The flow uses the standard ORD_XML_OUT flow type and includes a Milestones section.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla outbound edi 1.png|800x800px]]&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla outbound edi 2.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Messages sent ==&lt;br /&gt;
The following message types will be sent &lt;br /&gt;
&lt;br /&gt;
·        ORD&lt;br /&gt;
&lt;br /&gt;
·        CAN&lt;br /&gt;
&lt;br /&gt;
·        DEP&lt;br /&gt;
&lt;br /&gt;
·        ARR&lt;br /&gt;
&lt;br /&gt;
·        DEL&lt;br /&gt;
&lt;br /&gt;
== Triggering Events ==&lt;br /&gt;
An '''‘ORD’''' message will be triggered when the first item is added to an order and will only be sent once. The EDI parameter called ‘PREVENT_RESEND_ORDER’ will be set to ‘Y’ to ensure that a control record for an ‘ORD’ message is not created when an earlier message has been processed successfully. The trigger ‘TRG_SOI_XML’ will create the control record. The OMS status is ‘UNSCHEDULED’ and the milestone comment is ‘Booking Acknowledged’&lt;br /&gt;
&lt;br /&gt;
A '''‘DEP’''' message will be created when the actual departure time on the collection stop of an order is updated to show that the vehicle has left the collection location.&lt;br /&gt;
&lt;br /&gt;
The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘Departed Origin’ if this is the initial collection location or ‘Departed Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
An '''‘ARR’''' message will be created when the actual arrival time on the delivery stop of an order is updated to show that the vehicle has arrived at the delivery location. The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘At Dest’ if this is the final delivery location or ‘At Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
'''**Note''' If an order exists on multiple trips the ‘DEP’ and ‘ARR’ messages will be sent for each leg of the orders journey.&lt;br /&gt;
&lt;br /&gt;
A '''‘DEL’''' message will be created when the delivered quantities on an order line are updated for the first time, i.e. when the delivered quantity is changed from null to 1, for example. The trigger TRG_SOL_XML will create the control record&lt;br /&gt;
&lt;br /&gt;
A '''‘CAN’''' message will be triggered if the status of an order is set to ‘CANCELLED’. The trigger ‘TRG_SCH_ORD_XML_INT’ will create the control record. The OMS status is ‘CANCELLED’ and the milestone comment ‘Booking Rejected’.&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\545095 - SCR-CTMS-02428249-05 - CTMS - Customer-Specific Tracking File&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\623640- Changes to Tesla tracking milestones&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_outbound_edi_2.png&amp;diff=11467</id>
		<title>File:Tesla outbound edi 2.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_outbound_edi_2.png&amp;diff=11467"/>
		<updated>2024-09-06T09:48:58Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_outbound_edi_1.png&amp;diff=11466</id>
		<title>File:Tesla outbound edi 1.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_outbound_edi_1.png&amp;diff=11466"/>
		<updated>2024-09-06T09:48:43Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11465</id>
		<title>Support - Tesla EDI Outbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Outbound_Guide&amp;diff=11465"/>
		<updated>2024-09-06T09:47:46Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Tracking ==&lt;br /&gt;
A customer specific tracking interface is required to track the milestones associated with an order.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
USE_XML_ORDER_SUB_REFS should be set to Y for the appropriate cost center.&lt;br /&gt;
&lt;br /&gt;
== Outbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost center and the Tesla customer. The flow uses the standard ORD_XML_OUT flow type and includes a Milestones section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
== Messages sent ==&lt;br /&gt;
The following message types will be sent &lt;br /&gt;
&lt;br /&gt;
·        ORD&lt;br /&gt;
&lt;br /&gt;
·        CAN&lt;br /&gt;
&lt;br /&gt;
·        DEP&lt;br /&gt;
&lt;br /&gt;
·        ARR&lt;br /&gt;
&lt;br /&gt;
·        DEL&lt;br /&gt;
&lt;br /&gt;
== Triggering Events ==&lt;br /&gt;
An '''‘ORD’''' message will be triggered when the first item is added to an order and will only be sent once. The EDI parameter called ‘PREVENT_RESEND_ORDER’ will be set to ‘Y’ to ensure that a control record for an ‘ORD’ message is not created when an earlier message has been processed successfully. The trigger ‘TRG_SOI_XML’ will create the control record. The OMS status is ‘UNSCHEDULED’ and the milestone comment is ‘Booking Acknowledged’&lt;br /&gt;
&lt;br /&gt;
A '''‘DEP’''' message will be created when the actual departure time on the collection stop of an order is updated to show that the vehicle has left the collection location.&lt;br /&gt;
&lt;br /&gt;
The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘Departed Origin’ if this is the initial collection location or ‘Departed Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
An '''‘ARR’''' message will be created when the actual arrival time on the delivery stop of an order is updated to show that the vehicle has arrived at the delivery location. The trigger ‘TRG_STS_XML_OUT’ will create the control record. The OMS status is ‘SCHEDULED’ and the milestone comment is ‘At Dest’ if this is the final delivery location or ‘At Consolidation Facility’ if the location is a x-dock location.&lt;br /&gt;
&lt;br /&gt;
'''**Note''' If an order exists on multiple trips the ‘DEP’ and ‘ARR’ messages will be sent for each leg of the orders journey.&lt;br /&gt;
&lt;br /&gt;
A '''‘DEL’''' message will be created when the delivered quantities on an order line are updated for the first time, i.e. when the delivered quantity is changed from null to 1, for example. The trigger TRG_SOL_XML will create the control record&lt;br /&gt;
&lt;br /&gt;
A '''‘CAN’''' message will be triggered if the status of an order is set to ‘CANCELLED’. The trigger ‘TRG_SCH_ORD_XML_INT’ will create the control record. The OMS status is ‘CANCELLED’ and the milestone comment ‘Booking Rejected’.&lt;br /&gt;
&lt;br /&gt;
An example tracking message is included below&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\545095 - SCR-CTMS-02428249-05 - CTMS - Customer-Specific Tracking File&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\623640- Changes to Tesla tracking milestones&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11464</id>
		<title>Support - Tesla EDI Inbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11464"/>
		<updated>2024-09-06T09:40:09Z</updated>

		<summary type="html">&lt;p&gt;Cak: Categorisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Template ==&lt;br /&gt;
For each dealership an order will be created each day, this is a placeholder which will be added to by the import process. This is existing fixed schedules functionality which has not been modified for Tesla.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
ALLOW_MULTIPLE_ADD_REFS should be set to Y for the appropriate cost centre.&lt;br /&gt;
&lt;br /&gt;
== Dealership Decodes ==&lt;br /&gt;
The delivery locations in the inbound files are the Tesla dealership locations not CTMS locations and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 1.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Du Type Decodes ==&lt;br /&gt;
The du types in the inbound files are the Tesla du types not du types and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 2.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Inbound Files ==&lt;br /&gt;
An example inbound file is included below&lt;br /&gt;
&lt;br /&gt;
== EDI Tables ==&lt;br /&gt;
Two new tables have been created to hold the details of the Inbound files&lt;br /&gt;
&lt;br /&gt;
* TESLA_EDI_ORDER_HEADER&lt;br /&gt;
* TESLA_EDI_ORDER_DETAILS&lt;br /&gt;
&lt;br /&gt;
Each table has an associated sequence, and the detail is linked to the header by the header ID.&lt;br /&gt;
== Inbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost centre and the Tesla customer. The import processes will be completed within the DP_TESLA_EDI package using the IMPORT_ORDERS procedure.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 3.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The test files provide simply have numeric a file name, so the file pattern is not specified on the EDI flow. An example file is included above.&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 4.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== EDI Report Values ==&lt;br /&gt;
The following Report values are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 5.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Order Processing ==&lt;br /&gt;
An order will exist on the correct schedule for each dealership in the inbound file the delivery date can be found in the “deliveryStartDateTime” tag and the dealership in the “referenceField7” tag&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 6.png|713x713px]]&lt;br /&gt;
&lt;br /&gt;
The correct CTMS dealership location will then be found using the decode&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 7.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
A skeleton order will exist in CTMS which will have been created by an existing process note the schedule and delivery location agree with your inbound file, if no order is found on the schedule for the dealership an error will be raised and the order will not be processed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 8.png|800x800px]]&lt;br /&gt;
The product type is not contained in the inbound file so therefore must exist as a default parameter on the EDI flow. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
The Du type must also exist as an EDI parameter on the flow. An attempt will be made to decode the passed in palletSize value which contains a du type which has been mapped so in this example&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 9.png]]&lt;br /&gt;
&lt;br /&gt;
Maps to&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 10.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
If no mapping is found the EDI default will be used. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
Once the correct order has been located and the product and DU type validated. The order will be updated with the details in the inbound file.&lt;br /&gt;
&lt;br /&gt;
If the DU type doesn’t exist on the current order a new line will be created for that DU type, the placeholder line will be removed at this point if no items exist with the same du type.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 11.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
Note the weight and volume on the line these are taken directly from the inbound pallet section and should not be manipulated.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 12.png]]&lt;br /&gt;
&lt;br /&gt;
Order items will have been created&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 13.png]]&lt;br /&gt;
&lt;br /&gt;
Item contents will have been created&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 14.png|800x800px]]&lt;br /&gt;
Additional References will have been created to indicate the Consolidated order reference, MH Order references(s) and Tesla references(s)&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 15.png|800x800px]]&lt;br /&gt;
Each reference should only be stored once and the values are found as follows&lt;br /&gt;
&lt;br /&gt;
Consolidated Order – “aggregatedOrderNumber”  tag, only 1 per order will be stored&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 16.png]]&lt;br /&gt;
MH(Manhattan) Order ref – “OrderNumber” tag&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 17.png]]&lt;br /&gt;
&lt;br /&gt;
Tesla Reference – “referenceField4” of the line section&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 18.png]]&lt;br /&gt;
&lt;br /&gt;
== Interface Errors ==&lt;br /&gt;
A new Tesla Orders tab page has been added to the interface errors screen which will contain the success/failure stats of each or the file imports and allow the user to reprocess any failed records after the issue has been corrected. This process will use the same package functionality as the inbound orders.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 19.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\543347 SCR - Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\613005 SCR - Changes to the Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\632041 - Changes to Tesla order interface for Aggregated order number&lt;br /&gt;
[[Category:Support Documents]]&lt;br /&gt;
[[Category:DHL Tesla]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11463</id>
		<title>Support - Tesla EDI Inbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11463"/>
		<updated>2024-09-06T09:39:09Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Template ==&lt;br /&gt;
For each dealership an order will be created each day, this is a placeholder which will be added to by the import process. This is existing fixed schedules functionality which has not been modified for Tesla.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
ALLOW_MULTIPLE_ADD_REFS should be set to Y for the appropriate cost centre.&lt;br /&gt;
&lt;br /&gt;
== Dealership Decodes ==&lt;br /&gt;
The delivery locations in the inbound files are the Tesla dealership locations not CTMS locations and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 1.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Du Type Decodes ==&lt;br /&gt;
The du types in the inbound files are the Tesla du types not du types and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 2.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Inbound Files ==&lt;br /&gt;
An example inbound file is included below&lt;br /&gt;
&lt;br /&gt;
== EDI Tables ==&lt;br /&gt;
Two new tables have been created to hold the details of the Inbound files&lt;br /&gt;
&lt;br /&gt;
* TESLA_EDI_ORDER_HEADER&lt;br /&gt;
* TESLA_EDI_ORDER_DETAILS&lt;br /&gt;
&lt;br /&gt;
Each table has an associated sequence, and the detail is linked to the header by the header ID.&lt;br /&gt;
== Inbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost centre and the Tesla customer. The import processes will be completed within the DP_TESLA_EDI package using the IMPORT_ORDERS procedure.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 3.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The test files provide simply have numeric a file name, so the file pattern is not specified on the EDI flow. An example file is included above.&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 4.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== EDI Report Values ==&lt;br /&gt;
The following Report values are required&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 5.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Order Processing ==&lt;br /&gt;
An order will exist on the correct schedule for each dealership in the inbound file the delivery date can be found in the “deliveryStartDateTime” tag and the dealership in the “referenceField7” tag&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 6.png|713x713px]]&lt;br /&gt;
&lt;br /&gt;
The correct CTMS dealership location will then be found using the decode&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 7.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
A skeleton order will exist in CTMS which will have been created by an existing process note the schedule and delivery location agree with your inbound file, if no order is found on the schedule for the dealership an error will be raised and the order will not be processed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 8.png|800x800px]]&lt;br /&gt;
The product type is not contained in the inbound file so therefore must exist as a default parameter on the EDI flow. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
The Du type must also exist as an EDI parameter on the flow. An attempt will be made to decode the passed in palletSize value which contains a du type which has been mapped so in this example&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 9.png]]&lt;br /&gt;
&lt;br /&gt;
Maps to&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 10.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
If no mapping is found the EDI default will be used. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
Once the correct order has been located and the product and DU type validated. The order will be updated with the details in the inbound file.&lt;br /&gt;
&lt;br /&gt;
If the DU type doesn’t exist on the current order a new line will be created for that DU type, the placeholder line will be removed at this point if no items exist with the same du type.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 11.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
Note the weight and volume on the line these are taken directly from the inbound pallet section and should not be manipulated.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 12.png]]&lt;br /&gt;
&lt;br /&gt;
Order items will have been created&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 13.png]]&lt;br /&gt;
&lt;br /&gt;
Item contents will have been created&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 14.png|800x800px]]&lt;br /&gt;
Additional References will have been created to indicate the Consolidated order reference, MH Order references(s) and Tesla references(s)&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 15.png|800x800px]]&lt;br /&gt;
Each reference should only be stored once and the values are found as follows&lt;br /&gt;
&lt;br /&gt;
Consolidated Order – “aggregatedOrderNumber”  tag, only 1 per order will be stored&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 16.png]]&lt;br /&gt;
MH(Manhattan) Order ref – “OrderNumber” tag&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 17.png]]&lt;br /&gt;
&lt;br /&gt;
Tesla Reference – “referenceField4” of the line section&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 18.png]]&lt;br /&gt;
&lt;br /&gt;
== Interface Errors ==&lt;br /&gt;
A new Tesla Orders tab page has been added to the interface errors screen which will contain the success/failure stats of each or the file imports and allow the user to reprocess any failed records after the issue has been corrected. This process will use the same package functionality as the inbound orders.&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla edi 19.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\543347 SCR - Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\613005 SCR - Changes to the Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\632041 - Changes to Tesla order interface for Aggregated order number&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_19.png&amp;diff=11461</id>
		<title>File:Tesla edi 19.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_19.png&amp;diff=11461"/>
		<updated>2024-09-06T09:26:57Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_18.png&amp;diff=11460</id>
		<title>File:Tesla edi 18.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_18.png&amp;diff=11460"/>
		<updated>2024-09-06T09:26:56Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_15.png&amp;diff=11459</id>
		<title>File:Tesla edi 15.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_15.png&amp;diff=11459"/>
		<updated>2024-09-06T09:26:55Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_17.png&amp;diff=11458</id>
		<title>File:Tesla edi 17.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_17.png&amp;diff=11458"/>
		<updated>2024-09-06T09:26:55Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_16.png&amp;diff=11457</id>
		<title>File:Tesla edi 16.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_16.png&amp;diff=11457"/>
		<updated>2024-09-06T09:26:55Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_14.png&amp;diff=11456</id>
		<title>File:Tesla edi 14.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_14.png&amp;diff=11456"/>
		<updated>2024-09-06T09:26:55Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_13.png&amp;diff=11455</id>
		<title>File:Tesla edi 13.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_13.png&amp;diff=11455"/>
		<updated>2024-09-06T09:26:53Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_11.png&amp;diff=11454</id>
		<title>File:Tesla edi 11.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_11.png&amp;diff=11454"/>
		<updated>2024-09-06T09:26:52Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_12.png&amp;diff=11453</id>
		<title>File:Tesla edi 12.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_12.png&amp;diff=11453"/>
		<updated>2024-09-06T09:26:52Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_10.png&amp;diff=11452</id>
		<title>File:Tesla edi 10.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_10.png&amp;diff=11452"/>
		<updated>2024-09-06T09:26:51Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_8.png&amp;diff=11451</id>
		<title>File:Tesla edi 8.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_8.png&amp;diff=11451"/>
		<updated>2024-09-06T09:26:51Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_9.png&amp;diff=11450</id>
		<title>File:Tesla edi 9.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_9.png&amp;diff=11450"/>
		<updated>2024-09-06T09:26:50Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_7.png&amp;diff=11449</id>
		<title>File:Tesla edi 7.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_7.png&amp;diff=11449"/>
		<updated>2024-09-06T09:26:49Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_5.png&amp;diff=11448</id>
		<title>File:Tesla edi 5.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_5.png&amp;diff=11448"/>
		<updated>2024-09-06T09:26:48Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_4.png&amp;diff=11447</id>
		<title>File:Tesla edi 4.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_4.png&amp;diff=11447"/>
		<updated>2024-09-06T09:26:48Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_6.png&amp;diff=11446</id>
		<title>File:Tesla edi 6.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_6.png&amp;diff=11446"/>
		<updated>2024-09-06T09:26:48Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_3.png&amp;diff=11445</id>
		<title>File:Tesla edi 3.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_3.png&amp;diff=11445"/>
		<updated>2024-09-06T09:26:48Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_2.png&amp;diff=11444</id>
		<title>File:Tesla edi 2.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_2.png&amp;diff=11444"/>
		<updated>2024-09-06T09:26:47Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_1.png&amp;diff=11443</id>
		<title>File:Tesla edi 1.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_edi_1.png&amp;diff=11443"/>
		<updated>2024-09-06T09:26:45Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11442</id>
		<title>Support - Tesla EDI Inbound Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_EDI_Inbound_Guide&amp;diff=11442"/>
		<updated>2024-09-06T09:25:26Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Template ==&lt;br /&gt;
For each dealership an order will be created each day, this is a placeholder which will be added to by the import process. This is existing fixed schedules functionality which has not been modified for Tesla.&lt;br /&gt;
&lt;br /&gt;
== System parameters ==&lt;br /&gt;
ALLOW_MULTIPLE_ADD_REFS should be set to Y for the appropriate cost center.&lt;br /&gt;
&lt;br /&gt;
== Dealership Decodes ==&lt;br /&gt;
The delivery locations in the inbound files are the Tesla dealership locations not CTMS locations and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
== Du Type Decodes ==&lt;br /&gt;
The du types in the inbound files are the Tesla du types not du types and as such must be decoded, scripts have been created and released during the normal release process to create these decodes&lt;br /&gt;
&lt;br /&gt;
== Inbound Files ==&lt;br /&gt;
An example inbound file is included below&lt;br /&gt;
&lt;br /&gt;
== EDI Tables ==&lt;br /&gt;
Two new tables have been created to hold the details of the Inbound files&lt;br /&gt;
&lt;br /&gt;
* TESLA_EDI_ORDER_HEADER&lt;br /&gt;
* TESLA_EDI_ORDER_DETAILS&lt;br /&gt;
&lt;br /&gt;
Each table has an associated sequence, and the detail is linked to the header by the header ID.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Inbound EDI ==&lt;br /&gt;
A new EDI flow will be present for the DHLAA cost center and the Tesla customer. The import processes will be completed within the DP_TESLA_EDI package using the IMPORT_ORDERS procedure.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The test files provide simply have numeric a file name, so the file pattern is not specified on the EDI flow. An example file is included above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EDI Parameters ==&lt;br /&gt;
The following Parameters are required&lt;br /&gt;
&lt;br /&gt;
== EDI Report Values ==&lt;br /&gt;
The following Report values are required&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Order Processing ==&lt;br /&gt;
An order will exist on the correct schedule for each dealership in the inbound file the delivery date can be found in the “deliveryStartDateTime” tag and the dealership in the “referenceField7” tag&lt;br /&gt;
&lt;br /&gt;
The correct CTMS dealership location will then be found using the decode&lt;br /&gt;
&lt;br /&gt;
A skeleton order will exist in CTMS which will have been created by an existing process note the schedule and delivery location agree with your inbound file, if no order is found on the schedule for the dealership an error will be raised and the order will not be processed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The product type is not contained in the inbound file so therefore must exist as a default parameter on the EDI flow. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
The Du type must also exist as an EDI parameter on the flow. An attempt will be made to decode the passed in palletSize value which contains a du type which has been mapped so in this example&lt;br /&gt;
&lt;br /&gt;
Maps to&lt;br /&gt;
&lt;br /&gt;
If no mapping is found the EDI default will be used. If no default is present an error will be raised and the order will not process.&lt;br /&gt;
&lt;br /&gt;
Once the correct order has been located and the product and DU type validated. The order will be updated with the details in the inbound file.&lt;br /&gt;
&lt;br /&gt;
If the DU type doesn’t exist on the current order a new line will be created for that DU type, the placeholder line will be removed at this point if no items exist with the same du type.&lt;br /&gt;
&lt;br /&gt;
Note the weight and volume on the line these are taken directly from the inbound pallet section and should not be manipulated.&lt;br /&gt;
&lt;br /&gt;
Order items will have been created&lt;br /&gt;
&lt;br /&gt;
Item contents will have been created&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional References will have been created to indicate the Consolidated order reference, MH Order references(s) and Tesla references(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each reference should only be stored once and the values are found as follows&lt;br /&gt;
&lt;br /&gt;
Consolidated Order – “aggregatedOrderNumber”  tag, only 1 per order will be stored&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MH(Manhattan) Order ref – “OrderNumber” tag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tesla Reference – “referenceField4” of the line section&lt;br /&gt;
&lt;br /&gt;
== Interface Errors ==&lt;br /&gt;
A new Tesla Orders tab page has been added to the interface errors screen which will contain the success/failure stats of each or the file imports and allow the user to reprocess any failed records after the issue has been corrected. This process will use the same package functionality as the inbound orders.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
P:\Development\CTMS\DHL\543347 SCR - Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\613005 SCR - Changes to the Tesla Order Interface&lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\632041 - Changes to Tesla order interface for Aggregated order number&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Category:DHL_Tesla&amp;diff=11441</id>
		<title>Category:DHL Tesla</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Category:DHL_Tesla&amp;diff=11441"/>
		<updated>2024-09-06T08:48:04Z</updated>

		<summary type="html">&lt;p&gt;Cak: Categorisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documents by Client]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Category:Support_Documents&amp;diff=11440</id>
		<title>Category:Support Documents</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Category:Support_Documents&amp;diff=11440"/>
		<updated>2024-09-06T08:47:03Z</updated>

		<summary type="html">&lt;p&gt;Cak: Categorisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documents by Type]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11439</id>
		<title>Support - Tesla Order Search Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11439"/>
		<updated>2024-09-06T08:44:02Z</updated>

		<summary type="html">&lt;p&gt;Cak: Categorisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Search ==&lt;br /&gt;
Two new items have been added to the Order search in both the orders and new orders screens.&lt;br /&gt;
[[File:Tesla order search.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These will allow the user to search for orders containing a Tesla or consolidated order reference. These values are stored in the SCH_ORD_REFRENCES table and can be viewed in the Additional References tab page.&lt;br /&gt;
&lt;br /&gt;
An order may have multiple references&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla order search2.png|800x800px]]&lt;br /&gt;
System parameter ALLOW_MULTIPLE_ADD_REFS will allow the user to enter multiple additional references with the same type manually if required.&lt;br /&gt;
== ORS extracts ==&lt;br /&gt;
The existing ORDER_ITEM ORS extract has been modified to add a new content level which will be used by Tesla full mapping details for the extract can be found in the Functional Spec located on the projects drive here - &lt;br /&gt;
&lt;br /&gt;
[[File:Tesla order search3.png|800x800px]]&lt;br /&gt;
== Specification ==&lt;br /&gt;
P:\Development\CTMS\DHL\528798 SCR-CTMS-02428249-04 - CTMS - Reports - Tracking Report  - Spec&lt;br /&gt;
[[Category:Support Documents]]&lt;br /&gt;
[[Category:DHL Tesla]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11436</id>
		<title>Support - Tesla Order Search Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11436"/>
		<updated>2024-09-06T08:33:50Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Search ==&lt;br /&gt;
Two new items have been added to the Order search in both the orders and new orders screens.&lt;br /&gt;
[[File:Tesla order search.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These will allow the user to search for orders containing a Tesla or consolidated order reference. These values are stored in the SCH_ORD_REFRENCES table and can be viewed in the Additional References tab page.&lt;br /&gt;
&lt;br /&gt;
An order may have multiple references&lt;br /&gt;
&lt;br /&gt;
[[File:Tesla order search2.png|800x800px]]&lt;br /&gt;
System parameter ALLOW_MULTIPLE_ADD_REFS will allow the user to enter multiple additional references with the same type manually if required.&lt;br /&gt;
== ORS extracts ==&lt;br /&gt;
The existing ORDER_ITEM ORS extract has been modified to add a new content level which will be used by Tesla full mapping details for the extract can be found in the Functional Spec located on the projects drive here - &lt;br /&gt;
&lt;br /&gt;
[[File:Tesla order search3.png|800x800px]] &lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\528798 SCR-CTMS-02428249-04 - CTMS - Reports - Tracking Report  - Spec&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
P:\Development\CTMS\DHL\528798 SCR-CTMS-02428249-04 - CTMS - Reports - Tracking Report  - Spec&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search3.png&amp;diff=11435</id>
		<title>File:Tesla order search3.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search3.png&amp;diff=11435"/>
		<updated>2024-09-06T08:28:55Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search2.png&amp;diff=11434</id>
		<title>File:Tesla order search2.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search2.png&amp;diff=11434"/>
		<updated>2024-09-06T08:28:39Z</updated>

		<summary type="html">&lt;p&gt;Cak: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11433</id>
		<title>Support - Tesla Order Search Guide</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=Support_-_Tesla_Order_Search_Guide&amp;diff=11433"/>
		<updated>2024-09-06T08:23:30Z</updated>

		<summary type="html">&lt;p&gt;Cak: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Order Search ==&lt;br /&gt;
Two new items have been added to the Order search in both the orders and new orders screens.&lt;br /&gt;
[[File:Tesla order search.png|800x800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These will allow the user to search for orders containing a Tesla or consolidated order reference. These values are stored in the SCH_ORD_REFRENCES table and can be viewd in the Additional References tab page.&lt;br /&gt;
&lt;br /&gt;
An order may have multiple references&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
System parameter ALLOW_MULTIPLE_ADD_REFS will allow the user to enter multiple additional references with the same type manually if required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ORS extracts ==&lt;br /&gt;
The existing ORDER_ITEM ORS extract has been modified to add a new content level which will be used by Tesla full mapping details for the extract can be found in the Functional Spec located on the projects drive here - &lt;br /&gt;
&lt;br /&gt;
P:\Development\CTMS\DHL\528798 SCR-CTMS-02428249-04 - CTMS - Reports - Tracking Report  - Spec&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
P:\Development\CTMS\DHL\528798 SCR-CTMS-02428249-04 - CTMS - Reports - Tracking Report  - Spec&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search.png&amp;diff=11432</id>
		<title>File:Tesla order search.png</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=File:Tesla_order_search.png&amp;diff=11432"/>
		<updated>2024-09-06T08:21:28Z</updated>

		<summary type="html">&lt;p&gt;Cak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;tesla order search&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1287</id>
		<title>FS 311856 Multiple Serviceable Items</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1287"/>
		<updated>2013-10-23T07:51:53Z</updated>

		<summary type="html">&lt;p&gt;Cak: /* Database/DAL */&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|LANE}}&lt;br /&gt;
{{#vardefine:ClientName|Lanemark}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' eSERV}}&lt;br /&gt;
{{#vardefine:Doc_Title|Multiple Serviceable Items}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|19th September 2013}}&lt;br /&gt;
{{#vardefine:Reference|311856 309371-2}}&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;
* Multiple engineers assigned to one service job. &lt;br /&gt;
* One job with multiple service items.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
NAV can have multiple serviceable items on a single Job, allocated to multiple engineers. &lt;br /&gt;
&lt;br /&gt;
Where multiple engineers are required on a job, for example:&lt;br /&gt;
*    3 engineers on site&lt;br /&gt;
*    20 gas burners to service &lt;br /&gt;
Each engineer will complete the service of several of the burners (the serviceable items) against the service.&lt;br /&gt;
&lt;br /&gt;
In practice, the lead engineer will assign the burners to each engineer on the job, rather than pre-assign.&lt;br /&gt;
&lt;br /&gt;
This will be completed through a link to NAV direct from a mobile unit (i.e. a PC). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the PDA Info tab, if there are multiple serviceable items on the job, the screen also would have navigation buttons left and right of the title (sections 1 and 2), to allow the user to switch between serviceable items. &lt;br /&gt;
&lt;br /&gt;
A label showing the record being processed (e.g. &amp;quot;1 of 6&amp;quot;) would be shown, allowing the user to see how many there are. &lt;br /&gt;
&lt;br /&gt;
The Service Item number (LS Number) of the serviceable item will be displayed on the top of the Info tab, whereas the Service ID (SJ Number) will be displayed on the Job Details tab.&lt;br /&gt;
&lt;br /&gt;
Switching between the serviceable items will change the displayed data on each of the tabs to the next service record - the same affect can be made by swiping left or right on the title label. &lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} product only.&lt;br /&gt;
* The changes will be made to the Android eSERV client only. Note that this change drives change into the Server processes that deal with PDA updates that would mean that the existing Windows Mobile and previous versions of the Android client may be incompatible with this version of the server.&lt;br /&gt;
* {{Note}} The modifications seen here require NAV functionality to split a service job among several engineers, specifically assigning items to each engineer to complete. Any failure to deliver the required functionality will cause the processes described here to fail.&lt;br /&gt;
* {{Note}} The changes in SCR 312116 specify some details that will be useful in the completion of this code. This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&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;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL ==&lt;br /&gt;
The database table EPOD_SERVICE must have the indexes changed to reflect the new model, as follows:&lt;br /&gt;
* The primary key (PK_EPOD_SERVICE_1) should be modified as follows:&lt;br /&gt;
** EPL_SITE_ID, ascending&lt;br /&gt;
** EPL_JOB_ID, ascending&lt;br /&gt;
** EPL_SERVICE_ID, ascending&lt;br /&gt;
* The secondary unique index (IX_EPOD_SERVICE) should stay - Service IDs should remain unique under Site.&lt;br /&gt;
{{Note}} All database packages must be checked to ensure they reflect this change to the data model.&lt;br /&gt;
&lt;br /&gt;
The DAL object EPOD_JOB will be modified to have an EPOD_SERVICES collection added beneath it, consisting of all the EPOD_SERVICE records found against the EPOD_JOB. This will be completed when creating an EPOD_JOB DAL object for an EPOD_JOB record that already exists. If the EPOD_JOB DAL object created does not exist, an empty collection should be created.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The XML Export of jobs and Services already allows EPOD_SERVICE to iterate within a tag of EPOD_SERVICES, as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;EPOD_SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/EPOD_SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
This supports multiple EPOD_SERVICE records, but the EPOD_SERVICES tag must be changed to reflect multiple records, with a maxOccurs property of &amp;quot;unbounded&amp;quot; replacing &amp;quot;1&amp;quot;. All XSDs must be modified to reflect this, including but not limited to:&lt;br /&gt;
* EPOD_EXPORT_JOB_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_JOB.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD.xsd&lt;br /&gt;
&lt;br /&gt;
The XML Import process (through the web services ePOD_DataService.asmx and ePOD_DataService2.asmx) must be modified to allow the same functionality when receiving Service Jobs, i.e.:&lt;br /&gt;
* Allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
Therefore the following changes must be made:&lt;br /&gt;
* XMLUpload.xsd must be modified to allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
* EPOD_DATASERVICE.ProcessJobs must change to check for this EPOD_SERVICES tag - if it exists, each EPOD_SERVICE tag found inside should be passed to the ProcessService function - see the existing xePRODUCTS code above the EPOD_SERVICE code for an example of how this is achieved.&lt;br /&gt;
* Any EPOD_SERVICE objects that have not been found on the XML update should be removed from the EPOD_JOB (i.e. deleted) unless they have already been cancelled.&lt;br /&gt;
* Any EPOD_SERVICE tag that does not exist should be created.&lt;br /&gt;
* The XMLUpload XSD should also be changed to include an optional EPL_USER_ID tag within the EPOD_JOB section. When an import is received if no load information is provided and the new EPL_USER_ID tag has been populated a check should be made against the Site to ascertain the value of the EPL_AUTO_GEN_LOAD flag, if this value is set a check should be performed to see if there is currently a load assigned to the user at Pending or In progress status, if found the jobs should be allocated to this load. If no load details are found a load should be created using the user id and the current date as the Load id and the jobs assigned to this load.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Changes will be made to the JOB_UPDATE message returned from the PDA, as follows:&lt;br /&gt;
* Remove EPL_SITE_ID and EPL_SERVICE_ID from the ACTIVITY tag.&lt;br /&gt;
* Add EPL_SERVICE_ID  and EPL_SERVICE_TYPE to the top of the SERVICE tag.&lt;br /&gt;
{{Note}} For the format of the XML update message, see the [[#Android Client|Android Client]] section of this document&lt;br /&gt;
&lt;br /&gt;
In order to match these changes, the function MessageProcess.ProcessJobUpdate must change as follows:&lt;br /&gt;
* For each SERVICE tag found in SERVICES, create an EPOD_SERVICE object. Update this object with the details passed in the SERVICE tag from the PDA. This is similar processing to how the EPOD_SERVICE_PRODUCT and EPOD_SERVICE_ACTIVITY updates work in the same process.&lt;br /&gt;
{{Note}} The change to EPOD_SERVICE_ACTIVITY (where two elements have been removed) need not be reflected, as these elements are never used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
The Job and Service Screens will require modification when creating a new job. Those screens affected are:&lt;br /&gt;
*    ConfigurableJob.aspx&lt;br /&gt;
*    job_details.aspx&lt;br /&gt;
When creating or editing a new Service job, a pop-up screen is displayed. The Service section (lower left) will be modified as follows:&lt;br /&gt;
* When editing, all Service records will be loaded upon showing the pop-up form. When adding, only one will be assumed.&lt;br /&gt;
* A navigation group will be added to this section, disabled initially, enabled if there are multiple service records for the job.&lt;br /&gt;
* An '''Add''' button will be added to this section - each time this is pressed, a new service record will be allowed to be created in this section, by adding a navigable item to the navigation group and moving to this item.&lt;br /&gt;
* A '''Delete''' button will be added to this section - when pressed, this will mark the associated service record as requiring deletion when the page is saved. It will still show on the screen (but will have all fields disabled) until the page is saved.&lt;br /&gt;
* When a new item is created, the Service ID should be defaulted to EPL_JOB_CODE + &amp;quot;_&amp;quot; + count.&lt;br /&gt;
* Moving between service items on the navigation group should show the details of the salient service record.&lt;br /&gt;
* Saving will save all changed service records. Note that Service ID can be modified, and therefore care should be taken in updating each record. This should utilise the Service details on the page in the same sequence as the EPOD_SERVICE records in the EPOD_SERVICES collection in the DAL object. Therefore, even if the Service ID changes, this should update the correct EPOD_SERVICE record with these details.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Time should be taken at this point to re-organise the layout of this pop-up - for example, Dates and Times associated to each other should be concatenated onto the same line:&lt;br /&gt;
* Planned Date/Time&lt;br /&gt;
* Actual Date/Time&lt;br /&gt;
* Order Date/Time&lt;br /&gt;
* Expiry Date/Time&lt;br /&gt;
* Arrival Date/Time&lt;br /&gt;
Additionally, the Service section should be labelled as such and only appear if the job is a Service type.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The Service screen (service_job.aspx) utilises EPOD_SERVICE_JOB, a different DAL mechanism that allows only 1 service record per job. Although it should be possible to maintain and create Service jobs (with all the required fields) on this screen, it is not necessary to change this to allow creation of multiple service items on a single job. The screen itself ''should'' allow the searching for and displaying of each item, however. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Service Details screen (service_detail.aspx) will be modified as follows: &lt;br /&gt;
* When retrieving the EPOD_JOB, modifications will need to be made throughout the code to accommodate the fact that the EPOD_SERVICE objects exist only within an EPOD_SERVICES collection and not directly from EPOD_JOB, even if there is only one EPOD_SERVICE record.&lt;br /&gt;
* The &amp;quot;Service Details&amp;quot; section should be renamed &amp;quot;Job Details&amp;quot;, and the items Service ID and Service Type removed from this section.&lt;br /&gt;
* All further sections (Information, Pre-Work, Post-Work, Diagnosis, MC Refs and Products) should be included within another Section, labelled with the items Service ID and Service Type, in a larger, bolder font. &lt;br /&gt;
* The Service Details section should be created for each EPOD_SERVICE under the EPOD_SERVICES collection under EPOD_JOB, printed one under each other - the browser scroll-bar can be used to see all the details.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_311856_1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;New Job Details screen&lt;br /&gt;
&lt;br /&gt;
{{Note}} This sample also shows fields defined under SCR 312116 (status and reason code, and the '''Image''' button). This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&lt;br /&gt;
&lt;br /&gt;
{{Note}} In the current screen, the Diagnosis and Products sections seem to be less wide than the Information section - this should be corrected on all affected sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android Client ==&lt;br /&gt;
The PDA_SERVICE DAL object will change to:&lt;br /&gt;
* Add parameter Service ID on creation of a PDA_SERVICE object. &lt;br /&gt;
** If one is provided, this should create a PDA_SERVICE object, retrieve the EPOD_SERVICE record and return the object.&lt;br /&gt;
** If one is not provided, this should fetch all EPOD_SERVICE records for the job, create a PDASERVICES array and, for each record found, create a new PDA_SERVICE object (as PDASERVICE) and pass the Site, Job and Service ID parameters to the new object. Once all are created,  return the PDASERVICES collection.&lt;br /&gt;
* The existing function ProcessServiceUpdate (called when Job Lock Response is processed, on pressing the Start/Arrive/Continue button in Job Details) must change to iterate through a collection of Service records, and update each one separately, by creating a PDA_SERVICE object passing Site, Job ID and Service ID.&lt;br /&gt;
&lt;br /&gt;
All functions that create PDA_SERVICE objects must now be checked that they pass a Service ID correctly, or they are expecting a PDASERVICES collection returned.&lt;br /&gt;
&lt;br /&gt;
The PDA_JOB DAL object will change to:&lt;br /&gt;
* hold a collection of PDA_SERVICE record (named PDASERVICES), rather than a single PDA_SERVICE object (PDASERVICE), as it does now.&lt;br /&gt;
* On creation of a new Job, create a collection PDASERVICES from a new PDA_SERVICE object - this will return a collection from the instantiation.&lt;br /&gt;
&lt;br /&gt;
{{Note}} No further changes should be necessary on the importing of services - the existing InsertAllPDAServices (called by Job creation functions ) already iterates through a number of EPOD_SERVICE records within the passed XML tag EPOD_SERVICES and adds each record. As these functions delete all service records first before adding new records, no updating functionality should be required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The method PDA_JOB.ToUpdateXElement will be modified to create a SERVICES tag rather than a SERVICE tag, if there is more than one Service record in the PDASERVICES collection. Each element in the Services collection will then be iterated through, calling PDASERVICE.ToUpdateXElement().&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE.ToUpdateXElement will be modified to add EPL_SERVICE_ID and EPL_SERVICE_TYPE tags before any others.&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE_ACTIVITY.ToUpdateXElement will be modified to remove EPL_SITE_ID and EPL_SERVICE_ID.&lt;br /&gt;
&lt;br /&gt;
The resulting XML extraction for a job should then look as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
   &amp;lt;SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;SERVICE&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_ID&amp;gt;&amp;lt;/EPL_SERVICE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_TYPE&amp;gt;&amp;lt;/EPL_SERVICE_TYPE&amp;gt;&lt;br /&gt;
       &amp;lt;PREWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_INTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_PREWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_PREWORK&amp;gt;&amp;lt;/EPL_UDF_PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;POSTWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_INTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_POSTWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_POSTWORK&amp;gt;&amp;lt;/EPL_UDF_POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;INFO&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UNIT_TYPE&amp;gt;&amp;lt;/EPL_UNIT_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_2&amp;gt;&amp;lt;/EPL_CODE_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_1&amp;gt;&amp;lt;/EPL_CODE_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MILEAGE&amp;gt;&amp;lt;/EPL_MILEAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_3&amp;gt;&amp;lt;/EPL_CODE_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SPEC_REQUIRED&amp;gt;&amp;lt;/EPL_SPEC_REQUIRED&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SERVICE_GROUP&amp;gt;&amp;lt;/EPL_SERVICE_GROUP&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SYSTEM_TYPE&amp;gt;&amp;lt;/EPL_SYSTEM_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_INFO&amp;gt;&amp;lt;/EPL_UDF_INFO&amp;gt;&lt;br /&gt;
       &amp;lt;/INFO&amp;gt;&lt;br /&gt;
       &amp;lt;MC_REF&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_1&amp;gt;&amp;lt;/EPL_MC_REF_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_2&amp;gt;&amp;lt;/EPL_MC_REF_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_3&amp;gt;&amp;lt;EPL_MC_REF_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_4&amp;gt;&amp;lt;/EPL_MC_REF_4&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_NARRATIVE&amp;gt;&amp;lt;/EPL_MC_REF_NARRATIVE&amp;gt;&lt;br /&gt;
       &amp;lt;/MC_REF&amp;gt;&lt;br /&gt;
       &amp;lt;DIAGNOSIS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIAGNOSIS_NARRATIVE&amp;gt;&amp;lt;/EPL_DIAGNOSIS_NARRATIVE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CUSTOMER_DAMAGE&amp;gt;&amp;lt;/EPL_CUSTOMER_DAMAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VNOS&amp;gt;&amp;lt;/EPL_VNOS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_1&amp;gt;&amp;lt;/EPL_CHECKBOX_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_2&amp;gt;&amp;lt;/EPL_CHECKBOX_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_3&amp;gt;&amp;lt;/EPL_CHECKBOX_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_DIAGNOSIS&amp;gt;&amp;lt;/EPL_UDF_DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;/DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;PRODUCT&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PRODUCT_ID&amp;gt;&amp;lt;/EPL_PRODUCT_ID&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIRECTION&amp;gt;&amp;lt;/EPL_DIRECTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_RETURN&amp;gt;&amp;lt;/EPL_RETURN&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DESCRIPTION&amp;gt;&amp;lt;/EPL_DESCRIPTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VEHICLE_ID&amp;gt;&amp;lt;/EPL_VEHICLE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;/PRODUCT&amp;gt;&lt;br /&gt;
       &amp;lt;ACTIVITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_ACTIVITY_CODE&amp;gt;&amp;lt;/EPL_ACTIVITY_CODE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
       &amp;lt;/ACTIVITY&amp;gt;&lt;br /&gt;
     &amp;lt;/SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
{{Note}} This includes the changes made under references 311577, 311636, 311753 and 311801. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Job Details tab will be changed slightly, as follows:&lt;br /&gt;
* The main label showing &amp;quot;Service:&amp;quot; will be modified to show the Job Code of the Job here (EPOD_JOB.EPL_JOB_CODE) rather than the Service ID of the Service record (EPOD_SERVICE.EPL_SERVICE_ID).&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Info tab will be changed slightly, as follows:&lt;br /&gt;
* 2 buttons will be added to the left and right of the main label, labelled as &amp;quot;&amp;lt;&amp;quot; and &amp;quot;&amp;gt;&amp;quot;. These will be '''Previous''' and '''Next''' buttons.&lt;br /&gt;
* A new label will be added to the title, under the &amp;quot;Service:&amp;quot; label, in a very small font, showing &amp;quot;Item X of Y&amp;quot;, where X is current Service record in the Services collection (vars.lngServiceRecord - see below) and Y is the total number of records in the Services collection (PDAJOB.PDASERVICES.length).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=310px heights=400px perrow=3&amp;gt;&lt;br /&gt;
File:REQ_309187_2.PNG|Info tab, showing the position of the new previous/next buttons (1 and 2)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the user clicks on the '''Next''' button, the next service item will be displayed on each of the Service tabs. If there is no next Service record, the first will be displayed instead. The '''Previous''' button will work in the same way, showing the previous Service record, or the last. A &amp;quot;swipe&amp;quot; event will also be added to the &amp;quot;Service:&amp;quot; label, to perform the same function.&lt;br /&gt;
&lt;br /&gt;
In order to do this, a function must be written to update each of the tabs with the information from a particular service record. So:&lt;br /&gt;
* The screen will be changed to hold a current Service record number (vars.lngServiceRecord) that will be set on creating the screen.&lt;br /&gt;
* Any labels that need to be updated with data from the Service record on any of the tabs should be assigned variable items in the vars object, rather that just being added directly to any parent view - this is so that the text value can be updated.&lt;br /&gt;
* Any changes to the previous Service will be saved.&lt;br /&gt;
* The current Service record (lngServiceRecord) will be changed to the appropriate next Service record, depending on which button was pressed, and where in the Services collection the screen currently is.&lt;br /&gt;
* The new function will update:&lt;br /&gt;
** Each label, button, picker, text and check variable item in the screen with the appropriate value from the current Service record (for example, PDAJOB.PDASERVICES[vars.lngServiceRecord].PDASERVICE.EPL_SERVICE_ID).&lt;br /&gt;
* This new function will be called at start-up (through an &amp;quot;open&amp;quot; event added to the TabGroup object) - all assignations of value and text properties derived from Service data will be removed from each variable declaration, to ensure that only one part of the code sets these values, to make code support easier.&lt;br /&gt;
&lt;br /&gt;
The validateJob function will be modified to check that all PDA_SERVICE items have had all details entered against them. This should be completed by checking the validation of all the service items when pressing the '''Done''' button. The validation messages displayed should identify the Service Item with the issues. {{Note}} New field EPL_STATUS of EPOD_SERVICE (specified in SCR 312116, referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]]) may be used to check and store the status if required. In this way, validating a service need be done only once. Also, only non-cancelled Service records need be checked.&lt;br /&gt;
&lt;br /&gt;
If this is not the case, a validation message should be displayed - clearing this message will return the user to the Services process.&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=To test that multiple Serviceable Items are supported by {{#var:System}}&lt;br /&gt;
|MenuAccess=Services&lt;br /&gt;
|Prerequisites=As much as possible (as far as has been developed on other Lanemark changes to the point of testing this one), the Services created and configuration allowed should match closely to the Lanemark requirements.&lt;br /&gt;
|Objective=To test (for single and multiple serviceable items) that: Import adds and amends Service data correctly; Admin screens add, find and amend Service data correctly; the PDA allows navigation and updating of serviceable items and; the system exports Service data correctly.&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=Import&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Import a Service job in the new format, with one service record.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=Import a Service job in the new format, with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the single-service job again, but with an additional service item.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the multiple-service job again, but with one of the original service items removed.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID. The removed Service item should be deleted.&lt;br /&gt;
|Remarks= |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=Admin&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=In the Job screen, create a Service job with a single service.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=In the Job screen, create a Service job with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Find these service records again.&lt;br /&gt;
|Result=All should appear once only on the grid.&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=Edit a single-service job and add another service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Edit a multiple-service job, and delete a service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID, except the deleted one.&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=Repeat the above tests on the Configurable Job screen&lt;br /&gt;
|Result=As expected&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=In the Services screen, find all services.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Search for a specific Serviceable Item&lt;br /&gt;
|Result=The service should be found, with a single line for all serviceable items, not one per job.&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=Search for a serviceable item (Service ID) that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Enter a partial Serial Number that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&lt;br /&gt;
|Remarks= |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=PDA&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Start a single-service job on the device and complete.&lt;br /&gt;
|Result=This should operate as before, to the limit of already-coded changes for Lanemark at the point of testing.&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=Start a multiple-service job on the device (at least 3 serviceable items).&lt;br /&gt;
|Result=The Job Details screen will show the Job Code as the Service ID.&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=Change to the Info screen.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed.&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=Complete details of the first serviceable item. Press Done.&lt;br /&gt;
|Result=A validation error should be displayed, showing that not all details have been entered against all Serviceable Items.&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=Move to the Info tab and press Next.&lt;br /&gt;
|Result=The details of the second serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;2 of 3&amp;quot; is displayed. No other details have been entered against this item.&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=Complete the details of all remaining items (markedly different on all items), finishing on the third. &lt;br /&gt;
|Result=The details of the third serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;3 of 3&amp;quot; is displayed. All details entered against the third item are displayed.&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=Press Next.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed. All details entered against the first item are displayed.&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= Press Done&lt;br /&gt;
|Result=The service should complete (move to signature).&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=Complete the service job&lt;br /&gt;
|Result=The results of all services should be returned to the system.&lt;br /&gt;
|Remarks= |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=Post-PDA (Admin/Server)&lt;br /&gt;
|Notes=Ensure that single- and multiple-item jobs have been completed.&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Check all items on all jobs updated.&lt;br /&gt;
|Result=All records are updated correctly&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=Check the Service Details screen for a Single-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - only one service item's details are displayed&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=Check the Service Details screen for a multiple-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - all service item's details are displayed on a scrolling screen.&lt;br /&gt;
|Remarks= |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=Export&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Export a single-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&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=Export a multiple-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&lt;br /&gt;
|Remarks= |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=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291094_EPOD_Admin_User_Guide UG 291094 EPOD Admin User Guide]&lt;br /&gt;
|RefV1=2.0&lt;br /&gt;
|RefDate1=4/4/2012&lt;br /&gt;
|Ref2=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291097_EPOD_Client_User_Guide UG 291097 EPOD Client User Guide]&lt;br /&gt;
|RefV2=3.0&lt;br /&gt;
|RefDate2=23/4/2013&lt;br /&gt;
|Ref3=[[REQ_309371_Lanemark_eSERV_Requirements]]&lt;br /&gt;
|RefV3=0.4&lt;br /&gt;
|RefDate3=29/08/2013&lt;br /&gt;
|Ref4=[[FS_312116_Service_Cancellation_Changes]]&lt;br /&gt;
|RefV4=0.1&lt;br /&gt;
|RefDate4=19/09/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.25&lt;br /&gt;
|TS=0.0&lt;br /&gt;
|DEV=10.5&lt;br /&gt;
|ST=2.0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=N&lt;br /&gt;
|Rev1=Julie Taylor&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Jeff Foster&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
|Rev3=Alan Thompson&lt;br /&gt;
|Rev3Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1286</id>
		<title>FS 311856 Multiple Serviceable Items</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1286"/>
		<updated>2013-10-23T07:50:30Z</updated>

		<summary type="html">&lt;p&gt;Cak: /* Database/DAL */&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|LANE}}&lt;br /&gt;
{{#vardefine:ClientName|Lanemark}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' eSERV}}&lt;br /&gt;
{{#vardefine:Doc_Title|Multiple Serviceable Items}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|19th September 2013}}&lt;br /&gt;
{{#vardefine:Reference|311856 309371-2}}&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;
* Multiple engineers assigned to one service job. &lt;br /&gt;
* One job with multiple service items.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
NAV can have multiple serviceable items on a single Job, allocated to multiple engineers. &lt;br /&gt;
&lt;br /&gt;
Where multiple engineers are required on a job, for example:&lt;br /&gt;
*    3 engineers on site&lt;br /&gt;
*    20 gas burners to service &lt;br /&gt;
Each engineer will complete the service of several of the burners (the serviceable items) against the service.&lt;br /&gt;
&lt;br /&gt;
In practice, the lead engineer will assign the burners to each engineer on the job, rather than pre-assign.&lt;br /&gt;
&lt;br /&gt;
This will be completed through a link to NAV direct from a mobile unit (i.e. a PC). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the PDA Info tab, if there are multiple serviceable items on the job, the screen also would have navigation buttons left and right of the title (sections 1 and 2), to allow the user to switch between serviceable items. &lt;br /&gt;
&lt;br /&gt;
A label showing the record being processed (e.g. &amp;quot;1 of 6&amp;quot;) would be shown, allowing the user to see how many there are. &lt;br /&gt;
&lt;br /&gt;
The Service Item number (LS Number) of the serviceable item will be displayed on the top of the Info tab, whereas the Service ID (SJ Number) will be displayed on the Job Details tab.&lt;br /&gt;
&lt;br /&gt;
Switching between the serviceable items will change the displayed data on each of the tabs to the next service record - the same affect can be made by swiping left or right on the title label. &lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} product only.&lt;br /&gt;
* The changes will be made to the Android eSERV client only. Note that this change drives change into the Server processes that deal with PDA updates that would mean that the existing Windows Mobile and previous versions of the Android client may be incompatible with this version of the server.&lt;br /&gt;
* {{Note}} The modifications seen here require NAV functionality to split a service job among several engineers, specifically assigning items to each engineer to complete. Any failure to deliver the required functionality will cause the processes described here to fail.&lt;br /&gt;
* {{Note}} The changes in SCR 312116 specify some details that will be useful in the completion of this code. This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&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;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL ==&lt;br /&gt;
The database table EPOD_SERVICE must have the indexes changed to reflect the new model, as follows:&lt;br /&gt;
* The primary key (PK_EPOD_SERVICE_1) should be modified as follows:&lt;br /&gt;
** EPL_SITE_ID, ascending&lt;br /&gt;
** EPL_JOB_ID, ascending&lt;br /&gt;
** EPL_SERVICE_ID, ascending&lt;br /&gt;
* The secondary unique index (IX_EPOD_SERVICE) should stay - Service IDs should remain unique under Site.&lt;br /&gt;
{{Note}} All database packages must be checked to ensure they reflect this change to the data model.&lt;br /&gt;
&lt;br /&gt;
The DAL object EPOD_JOB will be modified to have an EPOD_SERVICES collection added beneath it, consisting of all the EPOD_SERVICE records found against the EPOD_JOB. This will be completed when creating an EPOD_JOB DAL object for an EPOD_JOB record that already exists. If the EPOD_JOB DAL object created does not exist, an empty collection should be created.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The XML Export of jobs and Services already allows EPOD_SERVICE to iterate within a tag of EPOD_SERVICES, as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;EPOD_SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/EPOD_SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
This supports multiple EPOD_SERVICE records, but the EPOD_SERVICES tag must be changed to reflect multiple records, with a maxOccurs property of &amp;quot;unbounded&amp;quot; replacing &amp;quot;1&amp;quot;. All XSDs must be modified to reflect this, including but not limited to:&lt;br /&gt;
* EPOD_EXPORT_JOB_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_JOB.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD.xsd&lt;br /&gt;
&lt;br /&gt;
The XML Import process (through the web services ePOD_DataService.asmx and ePOD_DataService2.asmx) must be modified to allow the same functionality when receiving Service Jobs, i.e.:&lt;br /&gt;
* Allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
Therefore the following changes must be made:&lt;br /&gt;
* XMLUpload.xsd must be modified to allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
* EPOD_DATASERVICE.ProcessJobs must change to check for this EPOD_SERVICES tag - if it exists, each EPOD_SERVICE tag found inside should be passed to the ProcessService function - see the existing xePRODUCTS code above the EPOD_SERVICE code for an example of how this is achieved.&lt;br /&gt;
* Any EPOD_SERVICE objects that have not been found on the XML update should be removed from the EPOD_JOB (i.e. deleted) unless they have already been cancelled ({{Note}} This functionality will be specified under a different change).&lt;br /&gt;
* Any EPOD_SERVICE tag that does not exist should be created.&lt;br /&gt;
* The XMLUpload XSD should also be changed to include an optional EPL_USER_ID tag within the EPOD_JOB section. When an import is received if no load information is provided and the new EPL_USER_ID tag has been populated a check should be made against the Site to ascertain the value of the EPL_AUTO_GEN_LOAD flag, if this value is set a check should be performed to see if there is currently a load assigned to the user at Pending or In progress status, if found the jobs should be allocated to this load. If no load details are found a load should be created using the user id and the current date as the Load id and the jobs assigned to this load.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Changes will be made to the JOB_UPDATE message returned from the PDA, as follows:&lt;br /&gt;
* Remove EPL_SITE_ID and EPL_SERVICE_ID from the ACTIVITY tag.&lt;br /&gt;
* Add EPL_SERVICE_ID  and EPL_SERVICE_TYPE to the top of the SERVICE tag.&lt;br /&gt;
{{Note}} For the format of the XML update message, see the [[#Android Client|Android Client]] section of this document&lt;br /&gt;
&lt;br /&gt;
In order to match these changes, the function MessageProcess.ProcessJobUpdate must change as follows:&lt;br /&gt;
* For each SERVICE tag found in SERVICES, create an EPOD_SERVICE object. Update this object with the details passed in the SERVICE tag from the PDA. This is similar processing to how the EPOD_SERVICE_PRODUCT and EPOD_SERVICE_ACTIVITY updates work in the same process.&lt;br /&gt;
{{Note}} The change to EPOD_SERVICE_ACTIVITY (where two elements have been removed) need not be reflected, as these elements are never used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
The Job and Service Screens will require modification when creating a new job. Those screens affected are:&lt;br /&gt;
*    ConfigurableJob.aspx&lt;br /&gt;
*    job_details.aspx&lt;br /&gt;
When creating or editing a new Service job, a pop-up screen is displayed. The Service section (lower left) will be modified as follows:&lt;br /&gt;
* When editing, all Service records will be loaded upon showing the pop-up form. When adding, only one will be assumed.&lt;br /&gt;
* A navigation group will be added to this section, disabled initially, enabled if there are multiple service records for the job.&lt;br /&gt;
* An '''Add''' button will be added to this section - each time this is pressed, a new service record will be allowed to be created in this section, by adding a navigable item to the navigation group and moving to this item.&lt;br /&gt;
* A '''Delete''' button will be added to this section - when pressed, this will mark the associated service record as requiring deletion when the page is saved. It will still show on the screen (but will have all fields disabled) until the page is saved.&lt;br /&gt;
* When a new item is created, the Service ID should be defaulted to EPL_JOB_CODE + &amp;quot;_&amp;quot; + count.&lt;br /&gt;
* Moving between service items on the navigation group should show the details of the salient service record.&lt;br /&gt;
* Saving will save all changed service records. Note that Service ID can be modified, and therefore care should be taken in updating each record. This should utilise the Service details on the page in the same sequence as the EPOD_SERVICE records in the EPOD_SERVICES collection in the DAL object. Therefore, even if the Service ID changes, this should update the correct EPOD_SERVICE record with these details.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Time should be taken at this point to re-organise the layout of this pop-up - for example, Dates and Times associated to each other should be concatenated onto the same line:&lt;br /&gt;
* Planned Date/Time&lt;br /&gt;
* Actual Date/Time&lt;br /&gt;
* Order Date/Time&lt;br /&gt;
* Expiry Date/Time&lt;br /&gt;
* Arrival Date/Time&lt;br /&gt;
Additionally, the Service section should be labelled as such and only appear if the job is a Service type.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The Service screen (service_job.aspx) utilises EPOD_SERVICE_JOB, a different DAL mechanism that allows only 1 service record per job. Although it should be possible to maintain and create Service jobs (with all the required fields) on this screen, it is not necessary to change this to allow creation of multiple service items on a single job. The screen itself ''should'' allow the searching for and displaying of each item, however. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Service Details screen (service_detail.aspx) will be modified as follows: &lt;br /&gt;
* When retrieving the EPOD_JOB, modifications will need to be made throughout the code to accommodate the fact that the EPOD_SERVICE objects exist only within an EPOD_SERVICES collection and not directly from EPOD_JOB, even if there is only one EPOD_SERVICE record.&lt;br /&gt;
* The &amp;quot;Service Details&amp;quot; section should be renamed &amp;quot;Job Details&amp;quot;, and the items Service ID and Service Type removed from this section.&lt;br /&gt;
* All further sections (Information, Pre-Work, Post-Work, Diagnosis, MC Refs and Products) should be included within another Section, labelled with the items Service ID and Service Type, in a larger, bolder font. &lt;br /&gt;
* The Service Details section should be created for each EPOD_SERVICE under the EPOD_SERVICES collection under EPOD_JOB, printed one under each other - the browser scroll-bar can be used to see all the details.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_311856_1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;New Job Details screen&lt;br /&gt;
&lt;br /&gt;
{{Note}} This sample also shows fields defined under SCR 312116 (status and reason code, and the '''Image''' button). This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&lt;br /&gt;
&lt;br /&gt;
{{Note}} In the current screen, the Diagnosis and Products sections seem to be less wide than the Information section - this should be corrected on all affected sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android Client ==&lt;br /&gt;
The PDA_SERVICE DAL object will change to:&lt;br /&gt;
* Add parameter Service ID on creation of a PDA_SERVICE object. &lt;br /&gt;
** If one is provided, this should create a PDA_SERVICE object, retrieve the EPOD_SERVICE record and return the object.&lt;br /&gt;
** If one is not provided, this should fetch all EPOD_SERVICE records for the job, create a PDASERVICES array and, for each record found, create a new PDA_SERVICE object (as PDASERVICE) and pass the Site, Job and Service ID parameters to the new object. Once all are created,  return the PDASERVICES collection.&lt;br /&gt;
* The existing function ProcessServiceUpdate (called when Job Lock Response is processed, on pressing the Start/Arrive/Continue button in Job Details) must change to iterate through a collection of Service records, and update each one separately, by creating a PDA_SERVICE object passing Site, Job ID and Service ID.&lt;br /&gt;
&lt;br /&gt;
All functions that create PDA_SERVICE objects must now be checked that they pass a Service ID correctly, or they are expecting a PDASERVICES collection returned.&lt;br /&gt;
&lt;br /&gt;
The PDA_JOB DAL object will change to:&lt;br /&gt;
* hold a collection of PDA_SERVICE record (named PDASERVICES), rather than a single PDA_SERVICE object (PDASERVICE), as it does now.&lt;br /&gt;
* On creation of a new Job, create a collection PDASERVICES from a new PDA_SERVICE object - this will return a collection from the instantiation.&lt;br /&gt;
&lt;br /&gt;
{{Note}} No further changes should be necessary on the importing of services - the existing InsertAllPDAServices (called by Job creation functions ) already iterates through a number of EPOD_SERVICE records within the passed XML tag EPOD_SERVICES and adds each record. As these functions delete all service records first before adding new records, no updating functionality should be required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The method PDA_JOB.ToUpdateXElement will be modified to create a SERVICES tag rather than a SERVICE tag, if there is more than one Service record in the PDASERVICES collection. Each element in the Services collection will then be iterated through, calling PDASERVICE.ToUpdateXElement().&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE.ToUpdateXElement will be modified to add EPL_SERVICE_ID and EPL_SERVICE_TYPE tags before any others.&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE_ACTIVITY.ToUpdateXElement will be modified to remove EPL_SITE_ID and EPL_SERVICE_ID.&lt;br /&gt;
&lt;br /&gt;
The resulting XML extraction for a job should then look as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
   &amp;lt;SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;SERVICE&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_ID&amp;gt;&amp;lt;/EPL_SERVICE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_TYPE&amp;gt;&amp;lt;/EPL_SERVICE_TYPE&amp;gt;&lt;br /&gt;
       &amp;lt;PREWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_INTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_PREWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_PREWORK&amp;gt;&amp;lt;/EPL_UDF_PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;POSTWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_INTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_POSTWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_POSTWORK&amp;gt;&amp;lt;/EPL_UDF_POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;INFO&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UNIT_TYPE&amp;gt;&amp;lt;/EPL_UNIT_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_2&amp;gt;&amp;lt;/EPL_CODE_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_1&amp;gt;&amp;lt;/EPL_CODE_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MILEAGE&amp;gt;&amp;lt;/EPL_MILEAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_3&amp;gt;&amp;lt;/EPL_CODE_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SPEC_REQUIRED&amp;gt;&amp;lt;/EPL_SPEC_REQUIRED&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SERVICE_GROUP&amp;gt;&amp;lt;/EPL_SERVICE_GROUP&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SYSTEM_TYPE&amp;gt;&amp;lt;/EPL_SYSTEM_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_INFO&amp;gt;&amp;lt;/EPL_UDF_INFO&amp;gt;&lt;br /&gt;
       &amp;lt;/INFO&amp;gt;&lt;br /&gt;
       &amp;lt;MC_REF&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_1&amp;gt;&amp;lt;/EPL_MC_REF_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_2&amp;gt;&amp;lt;/EPL_MC_REF_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_3&amp;gt;&amp;lt;EPL_MC_REF_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_4&amp;gt;&amp;lt;/EPL_MC_REF_4&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_NARRATIVE&amp;gt;&amp;lt;/EPL_MC_REF_NARRATIVE&amp;gt;&lt;br /&gt;
       &amp;lt;/MC_REF&amp;gt;&lt;br /&gt;
       &amp;lt;DIAGNOSIS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIAGNOSIS_NARRATIVE&amp;gt;&amp;lt;/EPL_DIAGNOSIS_NARRATIVE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CUSTOMER_DAMAGE&amp;gt;&amp;lt;/EPL_CUSTOMER_DAMAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VNOS&amp;gt;&amp;lt;/EPL_VNOS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_1&amp;gt;&amp;lt;/EPL_CHECKBOX_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_2&amp;gt;&amp;lt;/EPL_CHECKBOX_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_3&amp;gt;&amp;lt;/EPL_CHECKBOX_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_DIAGNOSIS&amp;gt;&amp;lt;/EPL_UDF_DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;/DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;PRODUCT&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PRODUCT_ID&amp;gt;&amp;lt;/EPL_PRODUCT_ID&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIRECTION&amp;gt;&amp;lt;/EPL_DIRECTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_RETURN&amp;gt;&amp;lt;/EPL_RETURN&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DESCRIPTION&amp;gt;&amp;lt;/EPL_DESCRIPTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VEHICLE_ID&amp;gt;&amp;lt;/EPL_VEHICLE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;/PRODUCT&amp;gt;&lt;br /&gt;
       &amp;lt;ACTIVITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_ACTIVITY_CODE&amp;gt;&amp;lt;/EPL_ACTIVITY_CODE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
       &amp;lt;/ACTIVITY&amp;gt;&lt;br /&gt;
     &amp;lt;/SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
{{Note}} This includes the changes made under references 311577, 311636, 311753 and 311801. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Job Details tab will be changed slightly, as follows:&lt;br /&gt;
* The main label showing &amp;quot;Service:&amp;quot; will be modified to show the Job Code of the Job here (EPOD_JOB.EPL_JOB_CODE) rather than the Service ID of the Service record (EPOD_SERVICE.EPL_SERVICE_ID).&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Info tab will be changed slightly, as follows:&lt;br /&gt;
* 2 buttons will be added to the left and right of the main label, labelled as &amp;quot;&amp;lt;&amp;quot; and &amp;quot;&amp;gt;&amp;quot;. These will be '''Previous''' and '''Next''' buttons.&lt;br /&gt;
* A new label will be added to the title, under the &amp;quot;Service:&amp;quot; label, in a very small font, showing &amp;quot;Item X of Y&amp;quot;, where X is current Service record in the Services collection (vars.lngServiceRecord - see below) and Y is the total number of records in the Services collection (PDAJOB.PDASERVICES.length).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=310px heights=400px perrow=3&amp;gt;&lt;br /&gt;
File:REQ_309187_2.PNG|Info tab, showing the position of the new previous/next buttons (1 and 2)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the user clicks on the '''Next''' button, the next service item will be displayed on each of the Service tabs. If there is no next Service record, the first will be displayed instead. The '''Previous''' button will work in the same way, showing the previous Service record, or the last. A &amp;quot;swipe&amp;quot; event will also be added to the &amp;quot;Service:&amp;quot; label, to perform the same function.&lt;br /&gt;
&lt;br /&gt;
In order to do this, a function must be written to update each of the tabs with the information from a particular service record. So:&lt;br /&gt;
* The screen will be changed to hold a current Service record number (vars.lngServiceRecord) that will be set on creating the screen.&lt;br /&gt;
* Any labels that need to be updated with data from the Service record on any of the tabs should be assigned variable items in the vars object, rather that just being added directly to any parent view - this is so that the text value can be updated.&lt;br /&gt;
* Any changes to the previous Service will be saved.&lt;br /&gt;
* The current Service record (lngServiceRecord) will be changed to the appropriate next Service record, depending on which button was pressed, and where in the Services collection the screen currently is.&lt;br /&gt;
* The new function will update:&lt;br /&gt;
** Each label, button, picker, text and check variable item in the screen with the appropriate value from the current Service record (for example, PDAJOB.PDASERVICES[vars.lngServiceRecord].PDASERVICE.EPL_SERVICE_ID).&lt;br /&gt;
* This new function will be called at start-up (through an &amp;quot;open&amp;quot; event added to the TabGroup object) - all assignations of value and text properties derived from Service data will be removed from each variable declaration, to ensure that only one part of the code sets these values, to make code support easier.&lt;br /&gt;
&lt;br /&gt;
The validateJob function will be modified to check that all PDA_SERVICE items have had all details entered against them. This should be completed by checking the validation of all the service items when pressing the '''Done''' button. The validation messages displayed should identify the Service Item with the issues. {{Note}} New field EPL_STATUS of EPOD_SERVICE (specified in SCR 312116, referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]]) may be used to check and store the status if required. In this way, validating a service need be done only once. Also, only non-cancelled Service records need be checked.&lt;br /&gt;
&lt;br /&gt;
If this is not the case, a validation message should be displayed - clearing this message will return the user to the Services process.&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=To test that multiple Serviceable Items are supported by {{#var:System}}&lt;br /&gt;
|MenuAccess=Services&lt;br /&gt;
|Prerequisites=As much as possible (as far as has been developed on other Lanemark changes to the point of testing this one), the Services created and configuration allowed should match closely to the Lanemark requirements.&lt;br /&gt;
|Objective=To test (for single and multiple serviceable items) that: Import adds and amends Service data correctly; Admin screens add, find and amend Service data correctly; the PDA allows navigation and updating of serviceable items and; the system exports Service data correctly.&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=Import&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Import a Service job in the new format, with one service record.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=Import a Service job in the new format, with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the single-service job again, but with an additional service item.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the multiple-service job again, but with one of the original service items removed.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID. The removed Service item should be deleted.&lt;br /&gt;
|Remarks= |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=Admin&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=In the Job screen, create a Service job with a single service.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=In the Job screen, create a Service job with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Find these service records again.&lt;br /&gt;
|Result=All should appear once only on the grid.&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=Edit a single-service job and add another service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Edit a multiple-service job, and delete a service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID, except the deleted one.&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=Repeat the above tests on the Configurable Job screen&lt;br /&gt;
|Result=As expected&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=In the Services screen, find all services.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Search for a specific Serviceable Item&lt;br /&gt;
|Result=The service should be found, with a single line for all serviceable items, not one per job.&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=Search for a serviceable item (Service ID) that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Enter a partial Serial Number that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&lt;br /&gt;
|Remarks= |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=PDA&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Start a single-service job on the device and complete.&lt;br /&gt;
|Result=This should operate as before, to the limit of already-coded changes for Lanemark at the point of testing.&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=Start a multiple-service job on the device (at least 3 serviceable items).&lt;br /&gt;
|Result=The Job Details screen will show the Job Code as the Service ID.&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=Change to the Info screen.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed.&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=Complete details of the first serviceable item. Press Done.&lt;br /&gt;
|Result=A validation error should be displayed, showing that not all details have been entered against all Serviceable Items.&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=Move to the Info tab and press Next.&lt;br /&gt;
|Result=The details of the second serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;2 of 3&amp;quot; is displayed. No other details have been entered against this item.&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=Complete the details of all remaining items (markedly different on all items), finishing on the third. &lt;br /&gt;
|Result=The details of the third serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;3 of 3&amp;quot; is displayed. All details entered against the third item are displayed.&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=Press Next.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed. All details entered against the first item are displayed.&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= Press Done&lt;br /&gt;
|Result=The service should complete (move to signature).&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=Complete the service job&lt;br /&gt;
|Result=The results of all services should be returned to the system.&lt;br /&gt;
|Remarks= |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=Post-PDA (Admin/Server)&lt;br /&gt;
|Notes=Ensure that single- and multiple-item jobs have been completed.&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Check all items on all jobs updated.&lt;br /&gt;
|Result=All records are updated correctly&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=Check the Service Details screen for a Single-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - only one service item's details are displayed&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=Check the Service Details screen for a multiple-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - all service item's details are displayed on a scrolling screen.&lt;br /&gt;
|Remarks= |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=Export&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Export a single-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&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=Export a multiple-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&lt;br /&gt;
|Remarks= |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=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291094_EPOD_Admin_User_Guide UG 291094 EPOD Admin User Guide]&lt;br /&gt;
|RefV1=2.0&lt;br /&gt;
|RefDate1=4/4/2012&lt;br /&gt;
|Ref2=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291097_EPOD_Client_User_Guide UG 291097 EPOD Client User Guide]&lt;br /&gt;
|RefV2=3.0&lt;br /&gt;
|RefDate2=23/4/2013&lt;br /&gt;
|Ref3=[[REQ_309371_Lanemark_eSERV_Requirements]]&lt;br /&gt;
|RefV3=0.4&lt;br /&gt;
|RefDate3=29/08/2013&lt;br /&gt;
|Ref4=[[FS_312116_Service_Cancellation_Changes]]&lt;br /&gt;
|RefV4=0.1&lt;br /&gt;
|RefDate4=19/09/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.25&lt;br /&gt;
|TS=0.0&lt;br /&gt;
|DEV=10.5&lt;br /&gt;
|ST=2.0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=N&lt;br /&gt;
|Rev1=Julie Taylor&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Jeff Foster&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
|Rev3=Alan Thompson&lt;br /&gt;
|Rev3Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1285</id>
		<title>FS 311856 Multiple Serviceable Items</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=FS_311856_Multiple_Serviceable_Items&amp;diff=1285"/>
		<updated>2013-10-23T07:49:14Z</updated>

		<summary type="html">&lt;p&gt;Cak: /* Database/DAL */&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|LANE}}&lt;br /&gt;
{{#vardefine:ClientName|Lanemark}}&lt;br /&gt;
{{#vardefine:System|''CALIDUS'' eSERV}}&lt;br /&gt;
{{#vardefine:Doc_Title|Multiple Serviceable Items}}&lt;br /&gt;
{{#vardefine:Version|0.2}}&lt;br /&gt;
{{#vardefine:Date|19th September 2013}}&lt;br /&gt;
{{#vardefine:Reference|311856 309371-2}}&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;
* Multiple engineers assigned to one service job. &lt;br /&gt;
* One job with multiple service items.&lt;br /&gt;
&lt;br /&gt;
== Solution Overview  ==&lt;br /&gt;
NAV can have multiple serviceable items on a single Job, allocated to multiple engineers. &lt;br /&gt;
&lt;br /&gt;
Where multiple engineers are required on a job, for example:&lt;br /&gt;
*    3 engineers on site&lt;br /&gt;
*    20 gas burners to service &lt;br /&gt;
Each engineer will complete the service of several of the burners (the serviceable items) against the service.&lt;br /&gt;
&lt;br /&gt;
In practice, the lead engineer will assign the burners to each engineer on the job, rather than pre-assign.&lt;br /&gt;
&lt;br /&gt;
This will be completed through a link to NAV direct from a mobile unit (i.e. a PC). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the PDA Info tab, if there are multiple serviceable items on the job, the screen also would have navigation buttons left and right of the title (sections 1 and 2), to allow the user to switch between serviceable items. &lt;br /&gt;
&lt;br /&gt;
A label showing the record being processed (e.g. &amp;quot;1 of 6&amp;quot;) would be shown, allowing the user to see how many there are. &lt;br /&gt;
&lt;br /&gt;
The Service Item number (LS Number) of the serviceable item will be displayed on the top of the Info tab, whereas the Service ID (SJ Number) will be displayed on the Job Details tab.&lt;br /&gt;
&lt;br /&gt;
Switching between the serviceable items will change the displayed data on each of the tabs to the next service record - the same affect can be made by swiping left or right on the title label. &lt;br /&gt;
&lt;br /&gt;
== Scope  ==&lt;br /&gt;
* These changes will be made in the latest version of the {{#var:System}} product only.&lt;br /&gt;
* The changes will be made to the Android eSERV client only. Note that this change drives change into the Server processes that deal with PDA updates that would mean that the existing Windows Mobile and previous versions of the Android client may be incompatible with this version of the server.&lt;br /&gt;
* {{Note}} The modifications seen here require NAV functionality to split a service job among several engineers, specifically assigning items to each engineer to complete. Any failure to deliver the required functionality will cause the processes described here to fail.&lt;br /&gt;
* {{Note}} The changes in SCR 312116 specify some details that will be useful in the completion of this code. This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&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;
&lt;br /&gt;
&amp;lt;!-- NEW PAGE --&amp;gt; &lt;br /&gt;
= Functional Description  =&lt;br /&gt;
== Database/DAL ==&lt;br /&gt;
The database table EPOD_SERVICE must have the indexes changed to reflect the new model, as follows:&lt;br /&gt;
* The primary key (PK_EPOD_SERVICE_1) should be modified as follows:&lt;br /&gt;
** EPL_SITE_ID, ascending&lt;br /&gt;
** EPL_JOB_ID, ascending&lt;br /&gt;
** EPL_SERVICE_ID, ascending&lt;br /&gt;
* The secondary unique index (IX_EPOD_SERVICE) should stay - Service IDs should remain unique under Site.&lt;br /&gt;
{{Note}} All database packages must be checked to ensure they reflect this change to the data model.&lt;br /&gt;
&lt;br /&gt;
The DAL object EPOD_JOB will be modified to have an EPOD_SERVICES collection added beneath it, consisting of all the EPOD_SERVICE records found against the EPOD_JOB. This will be completed when creating an EPOD_JOB DAL object for an EPOD_JOB record that already exists. If the EPOD_JOB DAL object created does not exist, an empty collection should be created.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The XML Export of jobs and Services already allows EPOD_SERVICE to iterate within a tag of EPOD_SERVICES, as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;EPOD_SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
     &amp;lt;EPOD_SERVICE&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;/EPOD_SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/EPOD_SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
This supports multiple EPOD_SERVICE records, but the EPOD_SERVICES tag must be changed to reflect multiple records, with a maxOccurs property of &amp;quot;unbounded&amp;quot; replacing &amp;quot;1&amp;quot;. All XSDs must be modified to reflect this, including but not limited to:&lt;br /&gt;
* EPOD_EXPORT_JOB_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_JOB.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD_RESPONSE.xsd&lt;br /&gt;
* EPOD_EXPORT_LOAD.xsd&lt;br /&gt;
&lt;br /&gt;
The XML Import process (through the web services ePOD_DataService.asmx and ePOD_DataService2.asmx) must be modified to allow the same functionality when receiving Service Jobs, i.e.:&lt;br /&gt;
* Allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
Therefore the following changes must be made:&lt;br /&gt;
* XMLUpload.xsd must be modified to allow an EPOD_SERVICES tag, containing the existing EPOD_SERVICE tag, allowing unbounded occurrences.&lt;br /&gt;
* EPOD_DATASERVICE.ProcessJobs must change to check for this EPOD_SERVICES tag - if it exists, each EPOD_SERVICE tag found inside should be passed to the ProcessService function - see the existing xePRODUCTS code above the EPOD_SERVICE code for an example of how this is achieved.&lt;br /&gt;
* Any EPOD_SERVICE objects that have not been found on the XML update should be removed from the EPOD_JOB (i.e. deleted) unless they have already been cancelled ({{Note}} This functionality will be specified under a different change).&lt;br /&gt;
* Any EPOD_SERVICE tag that does not exist should be created.&lt;br /&gt;
* The XMLUpload XSD should also be changed to include an optional EPL_USER_ID tag within the EPOD_JOB section. When an import is received if no load information is provided and the new EPL_USER_ID tag has been populated a check should be made against the Site to ascertain the value of the EPL_AUTO_GEN_LOAD flag, if this value is set a check should be performed to see if there is currently a load assigned to the user at Pending or In progress status and if found the jobs should be allocated to this load. If no load details are found a load should be created using the user id and the current date as the Load id and the jobs assigned to this load.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
Changes will be made to the JOB_UPDATE message returned from the PDA, as follows:&lt;br /&gt;
* Remove EPL_SITE_ID and EPL_SERVICE_ID from the ACTIVITY tag.&lt;br /&gt;
* Add EPL_SERVICE_ID  and EPL_SERVICE_TYPE to the top of the SERVICE tag.&lt;br /&gt;
{{Note}} For the format of the XML update message, see the [[#Android Client|Android Client]] section of this document&lt;br /&gt;
&lt;br /&gt;
In order to match these changes, the function MessageProcess.ProcessJobUpdate must change as follows:&lt;br /&gt;
* For each SERVICE tag found in SERVICES, create an EPOD_SERVICE object. Update this object with the details passed in the SERVICE tag from the PDA. This is similar processing to how the EPOD_SERVICE_PRODUCT and EPOD_SERVICE_ACTIVITY updates work in the same process.&lt;br /&gt;
{{Note}} The change to EPOD_SERVICE_ACTIVITY (where two elements have been removed) need not be reflected, as these elements are never used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin ==&lt;br /&gt;
The Job and Service Screens will require modification when creating a new job. Those screens affected are:&lt;br /&gt;
*    ConfigurableJob.aspx&lt;br /&gt;
*    job_details.aspx&lt;br /&gt;
When creating or editing a new Service job, a pop-up screen is displayed. The Service section (lower left) will be modified as follows:&lt;br /&gt;
* When editing, all Service records will be loaded upon showing the pop-up form. When adding, only one will be assumed.&lt;br /&gt;
* A navigation group will be added to this section, disabled initially, enabled if there are multiple service records for the job.&lt;br /&gt;
* An '''Add''' button will be added to this section - each time this is pressed, a new service record will be allowed to be created in this section, by adding a navigable item to the navigation group and moving to this item.&lt;br /&gt;
* A '''Delete''' button will be added to this section - when pressed, this will mark the associated service record as requiring deletion when the page is saved. It will still show on the screen (but will have all fields disabled) until the page is saved.&lt;br /&gt;
* When a new item is created, the Service ID should be defaulted to EPL_JOB_CODE + &amp;quot;_&amp;quot; + count.&lt;br /&gt;
* Moving between service items on the navigation group should show the details of the salient service record.&lt;br /&gt;
* Saving will save all changed service records. Note that Service ID can be modified, and therefore care should be taken in updating each record. This should utilise the Service details on the page in the same sequence as the EPOD_SERVICE records in the EPOD_SERVICES collection in the DAL object. Therefore, even if the Service ID changes, this should update the correct EPOD_SERVICE record with these details.&lt;br /&gt;
&lt;br /&gt;
{{Note}} Time should be taken at this point to re-organise the layout of this pop-up - for example, Dates and Times associated to each other should be concatenated onto the same line:&lt;br /&gt;
* Planned Date/Time&lt;br /&gt;
* Actual Date/Time&lt;br /&gt;
* Order Date/Time&lt;br /&gt;
* Expiry Date/Time&lt;br /&gt;
* Arrival Date/Time&lt;br /&gt;
Additionally, the Service section should be labelled as such and only appear if the job is a Service type.&lt;br /&gt;
&lt;br /&gt;
{{Note}} The Service screen (service_job.aspx) utilises EPOD_SERVICE_JOB, a different DAL mechanism that allows only 1 service record per job. Although it should be possible to maintain and create Service jobs (with all the required fields) on this screen, it is not necessary to change this to allow creation of multiple service items on a single job. The screen itself ''should'' allow the searching for and displaying of each item, however. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Service Details screen (service_detail.aspx) will be modified as follows: &lt;br /&gt;
* When retrieving the EPOD_JOB, modifications will need to be made throughout the code to accommodate the fact that the EPOD_SERVICE objects exist only within an EPOD_SERVICES collection and not directly from EPOD_JOB, even if there is only one EPOD_SERVICE record.&lt;br /&gt;
* The &amp;quot;Service Details&amp;quot; section should be renamed &amp;quot;Job Details&amp;quot;, and the items Service ID and Service Type removed from this section.&lt;br /&gt;
* All further sections (Information, Pre-Work, Post-Work, Diagnosis, MC Refs and Products) should be included within another Section, labelled with the items Service ID and Service Type, in a larger, bolder font. &lt;br /&gt;
* The Service Details section should be created for each EPOD_SERVICE under the EPOD_SERVICES collection under EPOD_JOB, printed one under each other - the browser scroll-bar can be used to see all the details.&lt;br /&gt;
&lt;br /&gt;
[[File:FS_311856_1.PNG|border|600px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;New Job Details screen&lt;br /&gt;
&lt;br /&gt;
{{Note}} This sample also shows fields defined under SCR 312116 (status and reason code, and the '''Image''' button). This is referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]].&lt;br /&gt;
&lt;br /&gt;
{{Note}} In the current screen, the Diagnosis and Products sections seem to be less wide than the Information section - this should be corrected on all affected sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android Client ==&lt;br /&gt;
The PDA_SERVICE DAL object will change to:&lt;br /&gt;
* Add parameter Service ID on creation of a PDA_SERVICE object. &lt;br /&gt;
** If one is provided, this should create a PDA_SERVICE object, retrieve the EPOD_SERVICE record and return the object.&lt;br /&gt;
** If one is not provided, this should fetch all EPOD_SERVICE records for the job, create a PDASERVICES array and, for each record found, create a new PDA_SERVICE object (as PDASERVICE) and pass the Site, Job and Service ID parameters to the new object. Once all are created,  return the PDASERVICES collection.&lt;br /&gt;
* The existing function ProcessServiceUpdate (called when Job Lock Response is processed, on pressing the Start/Arrive/Continue button in Job Details) must change to iterate through a collection of Service records, and update each one separately, by creating a PDA_SERVICE object passing Site, Job ID and Service ID.&lt;br /&gt;
&lt;br /&gt;
All functions that create PDA_SERVICE objects must now be checked that they pass a Service ID correctly, or they are expecting a PDASERVICES collection returned.&lt;br /&gt;
&lt;br /&gt;
The PDA_JOB DAL object will change to:&lt;br /&gt;
* hold a collection of PDA_SERVICE record (named PDASERVICES), rather than a single PDA_SERVICE object (PDASERVICE), as it does now.&lt;br /&gt;
* On creation of a new Job, create a collection PDASERVICES from a new PDA_SERVICE object - this will return a collection from the instantiation.&lt;br /&gt;
&lt;br /&gt;
{{Note}} No further changes should be necessary on the importing of services - the existing InsertAllPDAServices (called by Job creation functions ) already iterates through a number of EPOD_SERVICE records within the passed XML tag EPOD_SERVICES and adds each record. As these functions delete all service records first before adding new records, no updating functionality should be required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The method PDA_JOB.ToUpdateXElement will be modified to create a SERVICES tag rather than a SERVICE tag, if there is more than one Service record in the PDASERVICES collection. Each element in the Services collection will then be iterated through, calling PDASERVICE.ToUpdateXElement().&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE.ToUpdateXElement will be modified to add EPL_SERVICE_ID and EPL_SERVICE_TYPE tags before any others.&lt;br /&gt;
&lt;br /&gt;
The method PDA_SERVICE_ACTIVITY.ToUpdateXElement will be modified to remove EPL_SITE_ID and EPL_SERVICE_ID.&lt;br /&gt;
&lt;br /&gt;
The resulting XML extraction for a job should then look as follows:&lt;br /&gt;
 &amp;lt;EPOD_JOB&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
   &amp;lt;SERVICES&amp;gt;&lt;br /&gt;
     &amp;lt;SERVICE&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_ID&amp;gt;&amp;lt;/EPL_SERVICE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;EPL_SERVICE_TYPE&amp;gt;&amp;lt;/EPL_SERVICE_TYPE&amp;gt;&lt;br /&gt;
       &amp;lt;PREWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_INTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_PREWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PREWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_PREWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_PREWORK&amp;gt;&amp;lt;/EPL_UDF_PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/PREWORK&amp;gt;&lt;br /&gt;
       &amp;lt;POSTWORK&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_INTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_INTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_EXTERIOR&amp;gt;&amp;lt;/EPL_POSTWORK_EXTERIOR&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_POSTWORK_ELECTRIC&amp;gt;&amp;lt;/EPL_POSTWORK_ELECTRIC&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_POSTWORK&amp;gt;&amp;lt;/EPL_UDF_POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;/POSTWORK&amp;gt;&lt;br /&gt;
       &amp;lt;INFO&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UNIT_TYPE&amp;gt;&amp;lt;/EPL_UNIT_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_2&amp;gt;&amp;lt;/EPL_CODE_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_1&amp;gt;&amp;lt;/EPL_CODE_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MILEAGE&amp;gt;&amp;lt;/EPL_MILEAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CODE_3&amp;gt;&amp;lt;/EPL_CODE_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SPEC_REQUIRED&amp;gt;&amp;lt;/EPL_SPEC_REQUIRED&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SERVICE_GROUP&amp;gt;&amp;lt;/EPL_SERVICE_GROUP&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_SYSTEM_TYPE&amp;gt;&amp;lt;/EPL_SYSTEM_TYPE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_INFO&amp;gt;&amp;lt;/EPL_UDF_INFO&amp;gt;&lt;br /&gt;
       &amp;lt;/INFO&amp;gt;&lt;br /&gt;
       &amp;lt;MC_REF&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_1&amp;gt;&amp;lt;/EPL_MC_REF_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_2&amp;gt;&amp;lt;/EPL_MC_REF_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_3&amp;gt;&amp;lt;EPL_MC_REF_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_4&amp;gt;&amp;lt;/EPL_MC_REF_4&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_MC_REF_NARRATIVE&amp;gt;&amp;lt;/EPL_MC_REF_NARRATIVE&amp;gt;&lt;br /&gt;
       &amp;lt;/MC_REF&amp;gt;&lt;br /&gt;
       &amp;lt;DIAGNOSIS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIAGNOSIS_NARRATIVE&amp;gt;&amp;lt;/EPL_DIAGNOSIS_NARRATIVE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CUSTOMER_DAMAGE&amp;gt;&amp;lt;/EPL_CUSTOMER_DAMAGE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VNOS&amp;gt;&amp;lt;/EPL_VNOS&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_1&amp;gt;&amp;lt;/EPL_CHECKBOX_1&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_2&amp;gt;&amp;lt;/EPL_CHECKBOX_2&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_CHECKBOX_3&amp;gt;&amp;lt;/EPL_CHECKBOX_3&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_UDF_DIAGNOSIS&amp;gt;&amp;lt;/EPL_UDF_DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;/DIAGNOSIS&amp;gt;&lt;br /&gt;
       &amp;lt;PRODUCT&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_PRODUCT_ID&amp;gt;&amp;lt;/EPL_PRODUCT_ID&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DIRECTION&amp;gt;&amp;lt;/EPL_DIRECTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_RETURN&amp;gt;&amp;lt;/EPL_RETURN&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_DESCRIPTION&amp;gt;&amp;lt;/EPL_DESCRIPTION&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_VEHICLE_ID&amp;gt;&amp;lt;/EPL_VEHICLE_ID&amp;gt;&lt;br /&gt;
       &amp;lt;/PRODUCT&amp;gt;&lt;br /&gt;
       &amp;lt;ACTIVITY&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_ACTIVITY_CODE&amp;gt;&amp;lt;/EPL_ACTIVITY_CODE&amp;gt;&lt;br /&gt;
         &amp;lt;EPL_QUANTITY&amp;gt;&amp;lt;/EPL_QUANTITY&amp;gt;&lt;br /&gt;
       &amp;lt;/ACTIVITY&amp;gt;&lt;br /&gt;
     &amp;lt;/SERVICE&amp;gt;&lt;br /&gt;
   &amp;lt;/SERVICES&amp;gt;&lt;br /&gt;
 &amp;lt;/EPOD_JOB&amp;gt;&lt;br /&gt;
{{Note}} This includes the changes made under references 311577, 311636, 311753 and 311801. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Job Details tab will be changed slightly, as follows:&lt;br /&gt;
* The main label showing &amp;quot;Service:&amp;quot; will be modified to show the Job Code of the Job here (EPOD_JOB.EPL_JOB_CODE) rather than the Service ID of the Service record (EPOD_SERVICE.EPL_SERVICE_ID).&lt;br /&gt;
&lt;br /&gt;
If there are multiple serviceable items on the service job, the layout of the Info tab will be changed slightly, as follows:&lt;br /&gt;
* 2 buttons will be added to the left and right of the main label, labelled as &amp;quot;&amp;lt;&amp;quot; and &amp;quot;&amp;gt;&amp;quot;. These will be '''Previous''' and '''Next''' buttons.&lt;br /&gt;
* A new label will be added to the title, under the &amp;quot;Service:&amp;quot; label, in a very small font, showing &amp;quot;Item X of Y&amp;quot;, where X is current Service record in the Services collection (vars.lngServiceRecord - see below) and Y is the total number of records in the Services collection (PDAJOB.PDASERVICES.length).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=310px heights=400px perrow=3&amp;gt;&lt;br /&gt;
File:REQ_309187_2.PNG|Info tab, showing the position of the new previous/next buttons (1 and 2)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the user clicks on the '''Next''' button, the next service item will be displayed on each of the Service tabs. If there is no next Service record, the first will be displayed instead. The '''Previous''' button will work in the same way, showing the previous Service record, or the last. A &amp;quot;swipe&amp;quot; event will also be added to the &amp;quot;Service:&amp;quot; label, to perform the same function.&lt;br /&gt;
&lt;br /&gt;
In order to do this, a function must be written to update each of the tabs with the information from a particular service record. So:&lt;br /&gt;
* The screen will be changed to hold a current Service record number (vars.lngServiceRecord) that will be set on creating the screen.&lt;br /&gt;
* Any labels that need to be updated with data from the Service record on any of the tabs should be assigned variable items in the vars object, rather that just being added directly to any parent view - this is so that the text value can be updated.&lt;br /&gt;
* Any changes to the previous Service will be saved.&lt;br /&gt;
* The current Service record (lngServiceRecord) will be changed to the appropriate next Service record, depending on which button was pressed, and where in the Services collection the screen currently is.&lt;br /&gt;
* The new function will update:&lt;br /&gt;
** Each label, button, picker, text and check variable item in the screen with the appropriate value from the current Service record (for example, PDAJOB.PDASERVICES[vars.lngServiceRecord].PDASERVICE.EPL_SERVICE_ID).&lt;br /&gt;
* This new function will be called at start-up (through an &amp;quot;open&amp;quot; event added to the TabGroup object) - all assignations of value and text properties derived from Service data will be removed from each variable declaration, to ensure that only one part of the code sets these values, to make code support easier.&lt;br /&gt;
&lt;br /&gt;
The validateJob function will be modified to check that all PDA_SERVICE items have had all details entered against them. This should be completed by checking the validation of all the service items when pressing the '''Done''' button. The validation messages displayed should identify the Service Item with the issues. {{Note}} New field EPL_STATUS of EPOD_SERVICE (specified in SCR 312116, referenced in [[#Appendix_B:_Quote_.26_Document_References|Appendix B]]) may be used to check and store the status if required. In this way, validating a service need be done only once. Also, only non-cancelled Service records need be checked.&lt;br /&gt;
&lt;br /&gt;
If this is not the case, a validation message should be displayed - clearing this message will return the user to the Services process.&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=To test that multiple Serviceable Items are supported by {{#var:System}}&lt;br /&gt;
|MenuAccess=Services&lt;br /&gt;
|Prerequisites=As much as possible (as far as has been developed on other Lanemark changes to the point of testing this one), the Services created and configuration allowed should match closely to the Lanemark requirements.&lt;br /&gt;
|Objective=To test (for single and multiple serviceable items) that: Import adds and amends Service data correctly; Admin screens add, find and amend Service data correctly; the PDA allows navigation and updating of serviceable items and; the system exports Service data correctly.&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=Import&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Import a Service job in the new format, with one service record.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=Import a Service job in the new format, with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the single-service job again, but with an additional service item.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Import the multiple-service job again, but with one of the original service items removed.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID. The removed Service item should be deleted.&lt;br /&gt;
|Remarks= |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=Admin&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=In the Job screen, create a Service job with a single service.&lt;br /&gt;
|Result=The Job should be saved, with the service record associated to the Job ID.&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=In the Job screen, create a Service job with more than one (ideally three) service records.&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Find these service records again.&lt;br /&gt;
|Result=All should appear once only on the grid.&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=Edit a single-service job and add another service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID.&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=Edit a multiple-service job, and delete a service&lt;br /&gt;
|Result=The job should be saved, with all service records associated to the Job ID, except the deleted one.&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=Repeat the above tests on the Configurable Job screen&lt;br /&gt;
|Result=As expected&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=In the Services screen, find all services.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Search for a specific Serviceable Item&lt;br /&gt;
|Result=The service should be found, with a single line for all serviceable items, not one per job.&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=Search for a serviceable item (Service ID) that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&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=Enter a partial Serial Number that matches multiple serviceable items across multiple jobs.&lt;br /&gt;
|Result=All services created should be found, with a single line for all serviceable items, not one per job.&lt;br /&gt;
|Remarks= |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=PDA&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Start a single-service job on the device and complete.&lt;br /&gt;
|Result=This should operate as before, to the limit of already-coded changes for Lanemark at the point of testing.&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=Start a multiple-service job on the device (at least 3 serviceable items).&lt;br /&gt;
|Result=The Job Details screen will show the Job Code as the Service ID.&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=Change to the Info screen.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed.&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=Complete details of the first serviceable item. Press Done.&lt;br /&gt;
|Result=A validation error should be displayed, showing that not all details have been entered against all Serviceable Items.&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=Move to the Info tab and press Next.&lt;br /&gt;
|Result=The details of the second serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;2 of 3&amp;quot; is displayed. No other details have been entered against this item.&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=Complete the details of all remaining items (markedly different on all items), finishing on the third. &lt;br /&gt;
|Result=The details of the third serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;3 of 3&amp;quot; is displayed. All details entered against the third item are displayed.&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=Press Next.&lt;br /&gt;
|Result=The details of the first serviceable item are displayed; Previous and Next buttons are present; a sub-title of &amp;quot;1 of 3&amp;quot; is displayed. All details entered against the first item are displayed.&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= Press Done&lt;br /&gt;
|Result=The service should complete (move to signature).&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=Complete the service job&lt;br /&gt;
|Result=The results of all services should be returned to the system.&lt;br /&gt;
|Remarks= |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=Post-PDA (Admin/Server)&lt;br /&gt;
|Notes=Ensure that single- and multiple-item jobs have been completed.&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Check all items on all jobs updated.&lt;br /&gt;
|Result=All records are updated correctly&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=Check the Service Details screen for a Single-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - only one service item's details are displayed&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=Check the Service Details screen for a multiple-item Service Job &lt;br /&gt;
|Result=The screen has changed layout correctly - all service item's details are displayed on a scrolling screen.&lt;br /&gt;
|Remarks= |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=Export&lt;br /&gt;
|Notes=&lt;br /&gt;
}}{{TestPlan_Test&lt;br /&gt;
|Test={{ #vardefineecho: SubCycle | {{ #expr: {{ #var: SubCycle }} + 0.01 }} }}&lt;br /&gt;
|Action=Export a single-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&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=Export a multiple-item Service Job&lt;br /&gt;
|Result=The job is exported correctly and the resulting export XML matches the XSD.&lt;br /&gt;
|Remarks= |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=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291094_EPOD_Admin_User_Guide UG 291094 EPOD Admin User Guide]&lt;br /&gt;
|RefV1=2.0&lt;br /&gt;
|RefDate1=4/4/2012&lt;br /&gt;
|Ref2=[http://{{SERVERNAME}}/calidus-assist/EPOD/index.php/UG_291097_EPOD_Client_User_Guide UG 291097 EPOD Client User Guide]&lt;br /&gt;
|RefV2=3.0&lt;br /&gt;
|RefDate2=23/4/2013&lt;br /&gt;
|Ref3=[[REQ_309371_Lanemark_eSERV_Requirements]]&lt;br /&gt;
|RefV3=0.4&lt;br /&gt;
|RefDate3=29/08/2013&lt;br /&gt;
|Ref4=[[FS_312116_Service_Cancellation_Changes]]&lt;br /&gt;
|RefV4=0.1&lt;br /&gt;
|RefDate4=19/09/2013&lt;br /&gt;
|REQ=0&lt;br /&gt;
|EST=0&lt;br /&gt;
|FS=1.25&lt;br /&gt;
|TS=0.0&lt;br /&gt;
|DEV=10.5&lt;br /&gt;
|ST=2.0&lt;br /&gt;
|IMP=0&lt;br /&gt;
|FOC=Y&lt;br /&gt;
|Client={{#var:Client}}&lt;br /&gt;
|Year={{#var:Year}}&lt;br /&gt;
|FSEST=N&lt;br /&gt;
|Rev1=Julie Taylor&lt;br /&gt;
|Rev1Title=OBS Project Manager&lt;br /&gt;
|Rev2=Jeff Foster&lt;br /&gt;
|Rev2Title=Client Representative&lt;br /&gt;
|Rev3=Alan Thompson&lt;br /&gt;
|Rev3Title=Client Representative&lt;br /&gt;
}}&amp;lt;/div&amp;gt; &lt;br /&gt;
[[Category:{{#var:Client}} FS]]&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
	<entry>
		<id>https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=User:Cak&amp;diff=1278</id>
		<title>User:Cak</title>
		<link rel="alternate" type="text/html" href="https://calidusassist.adcservices.apteancloud.com/calidus-assist/OBS/index.php?title=User:Cak&amp;diff=1278"/>
		<updated>2013-10-16T09:02:30Z</updated>

		<summary type="html">&lt;p&gt;Cak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tina Kinsella&lt;br /&gt;
&lt;br /&gt;
'''OBS Logistics Developer'''&lt;br /&gt;
&lt;br /&gt;
Direct Dial: +44(0)151 448 2925&lt;br /&gt;
&lt;br /&gt;
Internal: 1225&lt;br /&gt;
&lt;br /&gt;
Email Address: mailto:Christine.Kinsella@obs-logistics.com&lt;/div&gt;</summary>
		<author><name>Cak</name></author>
	</entry>
</feed>