EDI XML File Structure¶
We added the ability to import quotations (instead of the order) by using EDI XML File functionality.
This has been done by using a new attribute to determine that it is a quotation.
To do this, you need to put the 'OrderType_ = "Quotation"' tag in the 'TEDIOrderHeader_Details' section.
The EDI file for an order does not have changed.
'CreateDate_"' (OrderDate, RequiredDate, CreateDate, CreateTime) tag should match the date format with the computer on where EDI transactions are received.
Please check the 'Minimum Requirements' of the imported tags at the end of this page.
XML Node/Tag |
Description |
Character Limits |
Acceptable Values |
|
---|---|---|---|---|
<Transfer> <TEDISenderInformation_Details |
Sender Information Header |
- |
- |
|
CompAccCode_="TRADE" |
Account code of sending customer can be mapped to inner code account code |
10 |
alphanumeric and Not Empty |
|
CompanyName_="Test Trade Account" |
Company name of a customer (sender) |
200 |
alphanumeric and Not Empty |
|
FileTransfName_="EDITransaction.xml" |
Can be held as this |
100 |
alphanumeric |
|
CreateDate_="19/07/2022" |
XML file create date |
MM/DD/YY or DD/MM/YY |
datetime |
|
CreateTime_="10:00:26"> |
XML file create time |
HH:MM:SS |
datetime |
|
<TEDIOrderHeader_Details |
Order Header Details |
- |
- |
|
PurchaseOrderNumber_="234855" |
Sender purchase order number will import to customer order no |
-2147483648 to 2147483647 |
numeric |
|
PurchaseOrderReference_="Order:3529620" |
Sender purchase order reference will import to Customer Reference if the CustomerReference_ field is empty |
50 |
alphanumeric |
|
CustomerReference_="Office near park No 3" |
Customer Reference |
50 |
alphanumeric |
|
ReceiptTypeName_="Credit Card" |
If there is 'Receipt Description' in the 'System Table > Receipt Description' tab |
255 |
alphanumeric |
|
ReceiptDescriptionName_="Test" |
If there is 'Receipt Description' in the 'System Table > Receipt Description' tab |
255 |
alphanumeric |
|
OrderNote_="" |
Order Notes |
200 |
alphanumeric |
|
OrderSource_="" |
'Order Source' in the 'Order Source' system table |
20 |
alphanumeric |
|
ConsignmentNoteNo_="654849845" |
Consignment Note No |
200 |
alphanumeric |
|
DeliveryNotes_="Test Delivery Notes" |
Delivery Notes is not used for the XML import, check DetailDeliveryNotes |
200 |
alphanumeric |
|
SagePayTransNumber_="9999999" |
If Sage Paid is 'True' then Sage Pay Transaction Number |
100 |
numeric |
|
TotalPrice_="630" |
Nett Total Price |
-922337203685477.5808 to 922337203685477.5807 |
money (numeric) |
|
DepositPrice_="255" |
Deposit Price |
-922337203685477.5808 to 922337203685477.5807 |
money (numeric) |
|
OrderDate_="19/04/2019" |
Order Date |
DD/MM/YY or MM/DD/YY |
datetime |
|
IsSameDayDespatch_="True" |
When an order is imported for a customer with ‘EDI Same Day Despatch’ = true, the import routine checks the EDI import file to see if the field ‘Same Day Despatch’ = true. If so, the order is flagged as a ‘Must Go’ and the ‘Required Date’ = current date |
True/False |
True/False and Not Empty |
|
IsSagePaid_="TRUE" |
Sage Paid |
True/False |
True/False and Not Empty |
|
MustGo_="TRUE" |
If ‘Must Go’ then 'True'. Otherwise 'False' |
True/False |
True/False |
|
IsTwoDayDespatch_="False" |
If Two Day Despatch then 'True'. Otherwise 'False' |
True/False |
True/False and Not Empty |
|
IsChildSafetyApplicable_="True"> |
Child Safety is checked in the EDI import process |
True/False |
True/False |
|
<TEDIOrderDetails_Details |
Order Details Header |
- |
- |
|
RequiredDate_="25/07/2022" |
Required date of the sales order. Filled in the order only if the 'Use Receiving Required Date' flag is ticked in the customer record. |
DD/MM/YY or MM/DD/YY |
datetime |
|
LiningDropAddOn_=”0” |
If blind identifier = Curtain, there is a new flag in the blind type record called 'Display Lining Drop Add On', which defaults to false. |
- |
numeric (numbers with a decimal point) |
|
JobReference_=Test Job Ref 21" |
The 'Job Reference' value is imported into the sales order. |
30 |
alphanumeric |
|
BlindTypeDescription_="Roller" |
Blind type description |
200 |
alphanumeric |
|
BlindTypeCode_="R" |
Blind type code, can be mapped to inner code blind type code |
50 |
alphanumeric and Not Empty |
|
MeasureName_="Recess" |
Measure Name eg Recess, Blind Size etc (20) |
20 |
alphanumeric and Not Empty |
|
MetricMeasurement_="0" |
0 = metric, 1 = imperial |
0/1 |
numeric and Not Empty |
|
Width_="1170" |
Width should be in the millimetres only |
53 |
numeric and Not Empty |
|
Drop_="1120" |
Drop should be in the millimetres only |
53 |
numeric and Not Empty |
|
NumberOfVanes_="0" |
Only required if the blind is 'Vanes Only' and the number of vanes is available, otherwise 0 |
10 |
numeric |
|
Depth_="0" |
Only required for a 'Vertical' blind identifier else 0 |
10 |
numeric |
|
SmallDrop_="0" |
Only required for a 'Pleated' blind identifier where Sloping Headrail' is flagged, else 0 |
10 |
numeric |
|
TopWidth_="0" |
Only required for a 'Pleated' blind identifier, else 0 |
10 |
numeric |
|
LhOffsetWidth_="0" |
Only required for a 'Pleated' blind identifier where the ‘Shaped Blind’ is flagged in the blind type, else 0 |
10 |
numeric |
|
SmallHeight_="0" |
Only required for a 'Pleated' blind identifier where the ‘Shaped Blind’ is flagged in the blind type, else 0 |
10 |
numeric |
|
FabricCode_="RFAB" |
Fabric code (or slat or colour code |
50 |
alphanumeric and Not Empty |
|
Location_="Location" |
Location |
255 |
alphanumeric |
|
SpecialInstructions_="Special Instruction" |
Text field, but will put the order on hold after import if this is filled |
500 |
alphanumeric |
|
FittingInstructions_="FittingInstructions text" |
Text field in the blind detail |
200 |
alphanumeric |
|
Quantity_="1" |
Quantity of blinds |
10 |
numeric |
|
FullQuantity_="1" |
Full quantity of components |
10 |
numeric |
|
FabricDescription_="Roller Fabric" |
Fabric description (or slat or colour description |
100 |
alphanumeric |
|
OrderDetailComment_="" |
Required only if 'Component' import and should be equal to FabricDescription _="" |
200 |
alphanumeric |
|
OrderDeliveryCompany_="Delivery Company" |
If ‘Direct Delivery to Supplier’ is set to true, the ‘Delivery Company Name’ in the EDI file will be transferred and then imported |
50 |
alphanumeric |
|
IsDirectDeliveryBySupplier_="True" |
If drop ship (if delivery address from XML file should be used) then True, else False |
True/False |
True/False |
|
DelLine1_="test Delivery Address1" |
Delivery address 1 |
200 |
alphanumeric |
|
DelLine2_="test Delivery Address2" |
Delivery address 2 |
200 |
alphanumeric |
|
DelCity_="London" |
Delivery address 3 |
200 |
alphanumeric |
|
DelState_="" |
Delivery address 4 |
200 |
alphanumeric |
|
DelPostCodePart1_="NG2" |
Delivery postcode (first part) |
50 |
alphanumeric |
|
DelPostCodePart2_="1NA" |
Delivery postcode (second part) |
50 |
alphanumeric |
|
DelFirstName_="First Name" |
Contact First Name |
100 |
alphanumeric |
|
DelLastName_="Last Name" |
Contact last name |
100 |
alphanumeric |
|
DelPhone_="6559999999" |
Delivery address phone number (30) |
30 |
numeric |
|
Mobile_=”59999999” |
Delivery mobile number can be imported only if IsUseDepartmentDeliveryAddress_="TRUE" and IsDirectDeliveryBySupplier_="TRUE" |
50 |
numeric |
|
DelFax_="" |
Delivery address fax number |
30 |
alphanumeric |
|
DelCountry_="GB" |
The DelCountry_ tag should include the 'Code' value from the 'Country' system table |
10 |
alphanumeric |
|
DelEmail_="test@gmail.com" |
Delivery email address |
100 |
alphanumeric + @ symbol |
|
InvoiceCompanyName_="Invoice Company Name" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
200 |
alphanumeric |
|
CustomerAddressLine1_="Invoice Add Line1" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
200 |
alphanumeric |
|
CustomerAddressLine2_="Invoice Add Line2" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
200 |
alphanumeric |
|
CustomerAddressLine3_="Invoice Add Line3" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
200 |
alphanumeric |
|
CustomerAddressLine4_="Invoice Add Line4" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
200 |
alphanumeric |
|
CustomerPostcodePart1_="87df" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
50 |
alphanumeric |
|
CustomerPostcodePart2_="sf32" |
These fields will only import to the order invoice address if ‘Is Variable Address’ is switched on in the customer record. |
50 |
alphanumeric |
|
OrderCategory_="Order Category" |
'Order Category' field in the sales order) |
200 |
alphanumeric |
|
Salesperson_="Doug Smith" |
‘Salesperson’ (Rep) in the sales order |
100 |
alphanumeric |
|
DespatchMethod_="Carrier" |
'Despatch Method' in the sales order |
100 |
alphanumeric |
|
Amount_="125.25" |
The ‘Amount’ will be a VAT inclusive amount, and will only be imported to a customer that has Trade Type = ‘Including Tax’. The value imported in the 'Total' field in the sales order for each blind detail. |
20 |
money (numeric) |
|
WidthDisplay_="1197" |
Entered width, millimetres if metric, inches if imperial |
53 |
numeric |
|
DropDisplay_="1130" |
Entered drop, millimetres if metric, inches if imperial |
53 |
numeric |
|
OrderDeliveryCompany_="Test Delivery Company" |
Delivery company name (use contact name if not available) |
50 |
alphanumeric |
|
NumberOfPanels_="0" |
Only required if the blind is 'Panel' and the number of panels is available, otherwise 0 |
-2147483648 to 2147483647 |
numeric |
|
OrderID_="4673" |
Sending company unique order id imported in the 'Customer Order No' field |
50 |
alphanumeric |
|
CustomerOrderReference_="Send Today to Apart 3B" |
Sending company customer reference (Customer Reference/Sidemark/Tag field in Blindata) |
50 |
alphanumeric |
|
DelTitle_="Dr" |
Delivery Title (Mr/Ms/Mrs etc) |
30 |
alphanumeric |
|
IsUseDepartmentDeliveryAddress_="FALSE" |
If Delivery Address = Department delivery address then 'True'. Otherwise 'False' |
True/False |
True/False |
|
IsDetailSameDayDespatch_="False" |
If 'Same Day Despatch' then True, else False |
True/False |
True/False and Not Empty |
|
DetailCarriageType_="Standard" |
There is a new field called ‘Carriage Type’ against the stock record. When the EDI import is done, if there is a carriage type held in that new field, then it will be applied to the carriage type in the order |
50 |
alphanumeric |
|
DetailNettPrice_="650" |
Detail Nett Price |
-922337203685477.5808 to 922337203685477.5807 |
money (numeric) |
|
DetailDeliveryNotes_="Detail Delivery Notes" |
The Detail Delivery Notes is used for the XML import |
200 |
alphanumeric |
|
ProductCode_="0" |
The product code includes fabric and options. Available if a menu option permission for 'Stock Control > EDI Product Codes' is ticked |
100 |
alphanumeric |
|
Return_="0" |
If there is a record in here, it will be used when a detail line with a ‘Return’ is entered or imported via EDI |
10 |
numeric |
|
ValanceWidth_="0" |
Only required if ‘Enter Valance Size’ = true in the blind type record |
10 |
numeric |
|
SubAccountCode_="" |
The EDI import will recognise this field and assign the sub-account and addresses on the order accordingly |
10 |
alphanumeric |
|
InstallHeight_="1250" |
The import routine will then have to validate the chain length. Entered install height, millimetres if metric, inches if imperial |
10 |
numeric and Not Empty |
|
ChainLength_="157" |
The import routine now looks at that field to see if the chain length has been overridden, and if so, imports that chain length amount and does not change it. Entered chain length, millimetres if metric, inches if imperial |
10 |
numeric and Not Empty |
|
IsDetailTwoDayDespatch_="FALSE" |
If Detail is Two Day Despatch then 'True' else 'False' |
True/False |
True/False and Not Empty |
|
PanelSize_="0" |
Only required if the blind is 'Panel' and the number of panels is available, otherwise 0 |
10 |
numeric and Not Empty |
|
PanelDrop_="0" |
Only required if the blind is 'Panel' and the number of panels is available, otherwise 0 |
10 |
numeric and Not Empty |
|
GapBetweenBlinds_="2" |
Only required for a 'Multi Blinds' blind identifier |
10 |
numeric and Not Empty |
|
MidRailHeight_="0" |
Only required for a 'Shutter' blind identifier, otherwise 0 |
-2147483648 to 2147483647 |
numeric and Not Empty |
|
MidRailHeight2_="0" |
Only required for a 'Shutter' blind identifier, otherwise 0 |
-2147483648 to 2147483647 |
numeric and Not Empty |
|
IsRemake_="TRUE" |
A ‘Remake’ field can now be held in the EDI import file. |
True/False |
True/False |
|
CustomerOrderNumber_="0" |
There is a new flag on the customer record called ‘Send Cust Ord No in PO XML’ which defaults to false. If it is set to true, then when the PO XML file is sent to the supplier, it contains the original cust ord no (from the sales order) |
30 |
numeric |
|
LeftReturn_="0" |
Left Return |
10 |
numeric |
|
RightReturn_="0" |
Right Return |
10 |
numeric |
|
DustCover_="0" |
Dust Cover |
10 |
numeric |
|
IsChainLengthOverridden_="True" > |
Chain Length Overridden (If you want to save the 'Chain Length' value that is manually entered) |
True/False |
True/False |
|
<TEDIOptionList_Details |
Option List Header |
- |
- |
|
OptionName_="Finish" |
Option Name |
100 |
alphanumeric |
|
Choice_="Colonade" |
Option Description |
50 |
alphanumeric |
|
ChoiceCode_="COLONADE" /> |
Option Code |
50 |
alphanumeric |
|
</TEDIOrderDetails_Details> |
- |
- |
- |
|
<TEDIOrderReceipts_Details |
- |
- |
- |
|
ReceiptType_="Credit Card" |
The type of the Receipts ('Window Blind Amend > Receipts' tab) 255 |
255 |
alphanumeric |
|
ReceiptDescription_="Credit" |
The description of the Receipts ('Window Blind Amend > Receipts' tab) |
255 |
alphanumeric |
|
Amount_="33.25" /> |
The amount of the receipt should be always 'Gross' |
10 |
money (numeric) |
|
</TEDIOrderHeader_Details> |
Footer |
- |
- |
|
</TEDISenderInformation_Details> |
Footer |
- |
- |
|
</Transfer> |
Footer |
- |
- |
|
If ‘Enter Valance size’ or ‘Enter Return Size’ is ticked in the blind type record, then it should be possible to enter these sizes in the online order entry, and then import them in EDI Enquiry > Import. (the numeric value)
Please note, that the name of the XML file should start from the 'EDI-'.
Miscellaneous - Component
Example with the Component XML order
Example with the Component AND Blind XML order
Also, if you need to import components (Miscellaneous) and blind type in the same order, there is a specific setting you should check first.
So to import it the 'Import Carriage in EDI Order' box should be ticked in the 'Customers > Carriage' tab this allows uploading XML files with the components and blinds inside the order.
Also, please note an imported component (stock item) should have a unit of sale record in the 'Stock Item > Unit Of Sale' tab for the proper mapping.
Blindata Online Orders
If ‘Use Receiving Required Date’ is set to TRUE in the customer record, then when the EDI order is imported, it is automatically flagged as ‘Must Go’.
EDI XML orders
If ‘Use Receiving Required Date’ and ‘Use XML Must Go Field’ flags are set to TRUE in the customer record, and the XML file includes the MustGo_="False" tag then the sales order will not automatically be marked as 'Must Go'.
But if there is no MustGo_="False" tag in the XML file, then a sales order will automatically be marked as 'Must Go'.
EDI Import Price
There is a new field in the customer record called ‘Use EDI Import Prices’ which defaults to false.
If this is set to true, then the prices in the XML file are put into the net price for the detail line instead of looking up the price tables.
The option prices and discount will always be 0.
If an order is for a customer that has the flag ‘Use EDI Import prices’ set to true, then it is no longer possible to untick ‘Price Overridden’ in a detail line price in order.
EDI Import
On the end-of-day despatch, it currently creates a CSV file each night. When an order comes across in XML format the Order reference is put in as “SO: 0012634,PO: 12634”.
As this has a comma in the order reference the whole CSV file jumps one column along.
When an order is imported from the online system the customer reference is under certain conditions set as "SO: 0012634 PO:12634.
This is now imported it without the comma i.e. "SO: 0012634 PO:12634".
In order to be able to import the invoice addresses, please check the 'Is Variable Invoice Address' flag in the customer record.
As for the delivery address, please change the value of the IsDirectDeliveryBySupplier_="False" tag to 'True'.
Multi Blind
If you need to import a multi blind via EDI XML functionality then please include the MultiBlindChoiceID_ tag in each of the <TEDIOrderDetails_Details sections for the multi blind details.
For example, if the multi blind is 3 on 1 then the main multi blind should have MultiBlindChoiceID_="3" and the child (linked) multi blinds should have MultiBlindChoiceID_="1".
The additional change
It is important to include the <TEDIOrderDetailMultiBlindSize_Details section to the MAIN multi blind type:
If the blind detail is 90 x 90 and 3 in 1, then this section should be included in the <TEDIOrderDetails_Details section :
<TEDIOrderDetailMultiBlindSize_Details Width_="30" LeftGap_="0" FabricWidth_="0" RightGap_="0" />
<TEDIOrderDetailMultiBlindSize_Details Width_="30" LeftGap_="0" FabricWidth_="0" RightGap_="0" />
<TEDIOrderDetailMultiBlindSize_Details Width_="30" LeftGap_="0" FabricWidth_="0" RightGap_="0" />
Order Processing > EDI Enquiry > Import > Receipts
The EDI import now checks to see if there is a receipt payment in the XML file.
If there is, then a receipt is added to the new sales order that has been imported.
This takes into account the 'Trade Type' for the customer ie does it include VAT or not.
Also, the correct 'Receipt Type' and 'Receipt Description' are updated.
Minimum Requirements
There is a way to import an XML file with minimum required fields, so the options will be selected as default and the delivery/invoice address and prices will apply in Blindata Desktop.
The XML file you can download here