Order Download
Technical specification for the order download, storing, calculation and actions
Version | Created/Updated by | Notes |
---|---|---|
1.0 | Danail Deltchev | Initial creation |
1.1 | Danail Deltchev | “Orders> Buyer User ID” has changed from one filed to another. Now it is mapped from the correct Very “BUYER_REFERENCE” |
1.2 | Danail Deltchev | Clarification on file extension added as a Note (.xml) |
1.3 | Danail Deltchev | Added Subtotal calculation mapping |
1.4 | Danail Deltchev | Supplier code is not 4 digits number but 4 alphanumeric characters field (both in the payload and in the filename structure) |
1.5 | Milen Markov | Files extension changes |
BluJay will upload files to an FTP with orders for us to consume and store in Hemisphere. BluJay only support the ISO-8859-1 character set. Each file may contain more than one order
Field names and specifics:
Field Name | Format | Node | Comments | WAP Mapping | WAP Notes |
---|---|---|---|---|---|
Content | /CONTENT | ||||
Sender Address | X(5) | /ORDERS/SENDERADDRESS | “R0200” | Supplier table | TBD if we want to start separating such sections in separate tables in any way |
EAN | X(3) | /ORDERS/ORDER/BUYER/EAN | “201” | N/A | |
Data Type | X | /ORDERS/ORDER/TRANSACTIONTYPE | “N” | N/A | |
Supplier Code | X999 | /ORDERS/ORDER/SUPPLIER/BUYERREFERENCE | N/A | ||
Order Number | X(8) | /ORDERS/ORDER/NUMBER | Orders > Marketplace Order ID* |
AND Order_item > order_item_line_id | In case There is a Multiple Order Number This field should be stored only on Order Item level | | Order Date | YYYY-MM-DDThh:mm:ss | /ORDERS/ORDER/DATE | | Orders > Order Created Time | | | Order Release Date | YYYY-MM-DDThh:mm:ss | /ORDERS/ORDER/PROCESSDATE | | Order Payment > Transaction Date | | | Multiple Order Number | X(6) | /ORDERS/ORDER/SUPPLIERORDERNUMBER | | Orders > Marketplace Order ID* | In case this is present all Order IDs with the same MO Number should be combined in the same order | | Items in MO | 999 | /ORDERS/ORDER/ITEMSINMO | Tag may not be present. | TBD | We need to see the actual example to decide if this is needed as every order within a MO should have its all other sections, meaning we should be able to gather info from there | | Account Number | X(8) | /ORDERS/ORDER/SOLDTO/BUYERREFERENCE | | Orders > Buyer User ID | | | Encrypted Account Number | X(8) | /ORDERS/ORDER/SOLDTO/BUYERREFERENCE2 | | N/A | | | Delivery Name | X(22) | /ORDERS/ORDER/DELIVERTO/NAME | | Orders > Shipping Buyer Name | If no billing field specified add the same on the Billing section as well | | Address Line 1 | X(35) | /ORDERS/ORDER/DELIVERTO/ADDRESS/ADDRESSLINE | | Orders > ShippingStreet1 | If no billing field specified add the same on the Billing section as well | | Address Line 2 | X(35) | /ORDERS/ORDER/DELIVERTO/ADDRESS/ADDRESSLINE | | Orders > ShippingStreet2 | If no billing field specified add the same on the Billing section as well | | Address Line 3 | X(35) | /ORDERS/ORDER/DELIVERTO/ADDRESS/ADDRESSLINE | | Orders > Shipping City | If no billing field specified add the same on the Billing section as well | | Address Line 4 | X(35) | /ORDERS/ORDER/DELIVERTO/ADDRESS/ADDRESSLINE | | Orders > Shipping State Province | If no billing field specified add the same on the Billing section as well | | Post Code | X(8) | /ORDERS/ORDER/DELIVERTO/ADDRESS/POSTALCODE | | Orders > Shipping Post Code | If no billing field specified add the same on the Billing section as well | | Country Code | X(3) | /ORDERS/ORDER/DELIVERTO/ADDRESS/COUNTRYCODE | 2 alpha ISO Code | Orders > Shipping country code | If no billing field specified add the same on the Billing section as well | | Country Name | X(30) | /ORDERS/ORDER/DELIVERTO/ADDRESS/COUNTRYNAME | | Orders > Shipping Country Name | If no billing field specified add the same on the Billing section as well | | Telephone Number | X(16) | /ORDERS/ORDER/DELIVERTO/TELEPHONENUMBER1 | | Orders > Shipping Phone | If no billing field specified add the same on the Billing section as well | | Alt Telephone Number | X(16) | /ORDERS/ORDER/DELIVERTO/TELEPHONENUMBER2 | | N/A | | | Email address | X(64) | /ORDERS/ORDER/DELIVERTO/EMAILADDRESS | | Orders > Buyer email | | | Uplift/Replace Indicator | 9 | /ORDERS/ORDER/UPLIFT | Always “0” as not used | N/A | | | X-tant Confirmation Order Ind. (Refer to SD for field usage) | 9 | /ORDERS/ORDER/XTANT | “0” = No “1” = Yes | N/A | | | Photo Ind (Refer to SD for field usage) | 9 | /ORDERS/ORDER/PHOTOIND | “0” = no photo “1” = photo | N/A | | | Contract Number | 9(6) | /ORDERS/ORDER/CONTRACTNUMBER | | N/A | | | Expected Despatch Date | YYYY-MM-DDThh:mm:ss | /ORDERS/ORDER/SHIPDATE/ONDATE | | Orders > ShipByDate | If we currently don’t have such field we need to create it as we will need it for other integrations as well | | Customer Promise Date | YYYY-MM-DDThh:mm:ss | /ORDERS/ORDER/DELIVERYDATE/ONDATE | | N/A | | | Extra Details (Personalisation or Delivery Details. For Own label printing.) | X(120) | /ORDERS/ORDER/SPECIALINSTRUCTIONS | | Orders > Notes | | | Order Line Id | 999 | /ORDERS/ORDER/ORDERLINE/ORDERLINEID | Batched Orders Only | Order_item > Item Transaction ID | Expectation is this should not show as we will not be taking batched orders but all of them together. Till we see the exact example though I’d prefer we have a mapping prepared | | Quantity | 9(5).99 | /ORDERS/ORDER/ORDERLINE/QUANTITY | | Order_item > Item Quantity | | | Selling Price | 9(5).99 | /ORDERS/ORDER/ORDERLINE/RETAILPRICE | (Price customer paid plus any add ons) | Order_item > Item transaction price | | | CatalogueNumber/OptionNumber | X(5)/X(5) | /ORDERS/ORDER/ORDERLINE/PRODUCT/UNIQUEIDENTIFIER | | Order_item > Channel Item ID | | | Option Number | X(5) | /ORDERS/ORDER/ORDERLINE/PRODUCT/BUYERREFERENCE | | N/A | | | Catalogue Number | X(5) | /ORDERS/ORDER/ORDERLINE/PRODUCT/PRODUCTSTYLE/BUYERREFERENCE | | N/A | | | Own Product Code | X(15) | /ORDERS/ORDER/ORDERLINE/PRODUCT/OWNPRODUCTCODE | May be edited in BluJay Commerce by supplier | Order_item > Item SKU | | | Option Description | X(16) | /ORDERS/ORDER/ORDERLINE/PRODUCT/BUYERCOLOUR/COLOURDESCRIPTION | May contain Option / Colour / Size details | Order_item > Item Variations (Colour: the value) | | | Weight | 999.999 | /ORDERS/ORDER/ORDERLINE/PRODUCT/PRODUCTDIMENSIONS/WEIGHT | | N/A | If the Weight has been send to Very we should have it in our software and take it from there | | Catalogue Description | X(32) | /ORDERS/ORDER/ORDERLINE/PRODUCT/PRODUCTSTYLEDESCRIPTION | | Order_item > Item Title | | | Number of Packs (for larger items) | 99 | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/NUMBEROFOUTERS | | N/A | | | Carrier Barcode Value | X(30) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/CARRIERBARCODE | | Orders > Shipping Track Number | A general discussion should be made to what point we want to convert it and prepare for courier communication. Can be stored as part of Label Request TBD | | Safeplace | X(30) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/SAFEPLACE | | N/A | Can be Part of a Label Request | | Signature Required | X(1) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/SIGNATUREREQUIRED | 0=No, 1=Yes | N/A | Can be Part of a Label Request | | Currently not used | | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[1] | | N/A | Can be Part of a Label Request | | Customer Indicator | 9 | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[2] | “0” = Agent “1” = Customer | N/A | Can be Part of a Label Request | | Option Check Digit (For Own label printing) | 9 | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[3] | | N/A | Can be Part of a Label Request | | Yodel UPI | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[4] | | N/A | Can be Part of a Label Request | | Yodel Sort Code | X(6) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[5] | | N/A | Can be Part of a Label Request | | Yodel Route Code | X(8) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[6] | | N/A | Can be Part of a Label Request | | Bar Route Code | 9(7) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[7] | | N/A | Can be Part of a Label Request | | Account Week | 99 | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[8] | | N/A | Can be Part of a Label Request | | Payment Terms | 99 | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[9] | | N/A | Can be Part of a Label Request | | Company Name (Brand Name) | X(20) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[10] | | N/A | Can be Part of a Label Request | | Return Address | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING[11] | | N/A | Can be Part of a Label Request | | Service Type (Product1) | X(15) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING12 | Please note that this and subsequent PACKAGINGMARKING nodes are numbered | N/A | Can be Part of a Label Request | | Detailed Service Type (Product2) | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING13 | | N/A | Can be Part of a Label Request | | Meter Number | 9(5) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING14 | | N/A | Can be Part of a Label Request | | Feature Text | X(10) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING15 | Service Description | N/A | Can be Part of a Label Request | | Day Feature Text | X | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING16 | | N/A | Can be Part of a Label Request | | Time Feature Text | X | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING17 | | N/A | Can be Part of a Label Request | | Sort Centre Name | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING18 | | N/A | Can be Part of a Label Request | | Service Centre Name | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING19 | | N/A | Can be Part of a Label Request | | Routing Barcode | X(35) | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING20 | | N/A | Can be Part of a Label Request | | Product Code | XX | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING21 | Future Use | N/A | Can be Part of a Label Request | | Date Feature Code | XX | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING22 | Future Use | N/A | Can be Part of a Label Request | | Time Feature Code | X | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING23 | Future Use | N/A | Can be Part of a Label Request | | Feature ID | XXX | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING24 | Future Use | N/A | Can be Part of a Label Request | | Feature Code | XX | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING25 | Future Use | N/A | Can be Part of a Label Request | | Principal Brand | XXX | /ORDERS/ORDER/ORDERLINE/PACKINGINSTRUCTIONS/PACKAGINGMARKING26 | | N/A | Can be Part of a Label Request | | Carrier Code | 9999 | /ORDERS/ORDER/CARRIER/BUYERREFERENCE | | N/A | | | Carrier Name | X(32) | /ORDERS/ORDER/CARRIER/NAME | | Orders > Shipping Carrier | | | Carrier Account Number | 9(10) | /ORDERS/ORDER/CARRIER/CARRIERACCOUNTNUMBER | | N/A | | | Service Standard | X(20) | /ORDERS/ORDER/CARRIER/SERVICESTANDARD | e.g. “DDSTD” | Orders > Shipping Service | | | Collect Plus Indicator | X(3) | /ORDERS/ORDER/CARRIER/COLLECTPLUSINDICATOR | e.g. CPL | N/A | | | PPI value | X(7) | /ORDERS/ORDER/CARRIER/PRINTEDPOSTAGEIMPRESSION | | N/A | | | Local Collect indicator | X | /ORDERS/ORDER/CARRIER/LOCALCOLLECTINDICATOR | Null or 0=No, 1=Yes If ‘1’ Local Collect indicator to be printed on label Note: Only used for certain suppliers, as per The Very Group | N/A | | | Home Approval Guarantee Duration (no of days within which a customer can return goods) | 9(4) | /ORDERS/ORDER/HAGDuration | | N/A | | | Littlewoods CAM Order Number (SD back office Order Number) | 9(6) | /ORDERS/ORDER/CAMOrderNumber | | Orders > Selling Manager SalesRecordNumber | | | Littlewoods CAM Order Line Number | 9(5) | /ORDERS/ORDER/CAMOrderItemNumber | | N/A | | | Replacement Indicator – indicates if the order is a replacement | 9 | /ORDERS/ORDER/REPLACEMENT_IND /ORDERS/ORDER/REPLACE_ID (Batched Orders) | “1” = new order raised in place of cancelled order “0” = non replacement order Tag may also be blank or not present | Order Very > Is Replacement | | | Master Indicator – indicates if the order has multipart items | 9 | /ORDERS/ORDER/MASTER_IND /ORDERS/ORDER/MASTER_ID (Batched Orders) | Not used, will always be blank. | N/A | | | Priority Order Indicator – indicates if the order has previously been sent by SD, and is thus priority | 9 | /ORDERS/ORDER/PRIORITY_ORDER_IND | “1” = priority “0” = non-priority Tag may also be blank or not present | Order Very > Is Priority | | | EWS | X(16) | /ORDERS/ORDER/EWS | Future Use | N/A | | | Use Carrier Management System (CMS) | X(1) | /ORDERS/ORDER/USECMS | “Y” = use CMS. “N” = do not use CMS. | N/A | | | Pre-order Indicator | X(1) | /ORDERS/ORDER/PREORDERIND | “Y” = is a pre-order “N” = is not a pre-order. | Order Very > Is Pre-Order | This should always be N but we need to be ready to be able to block such orders |
Example XML:
Actions:
- Combining Orders - In case we have a Multiple Order (MO) indicated by its respective field we need to combine all orders with the same MO ID in one, meaning all of the below communications or “Status Updates”, as described in the next sections, are to be made by the ID we are storing on Order Item level
- Calculations - As it stands we have all values needed to be able to calculate to total value of the order. This needs to happen by multiplying the item trans price by quantity on every allocated item and sum it all up. We don’t have any shipping cost allocated so this is omitted from any calculations. The same value (due to the lack of shipping cost) should be stored in Orders > Subtotal as well
- Statuses - Every new order read from an order file needs to be stored as a Ready For Shipping order with each order_item_line created on a “pending” status (similar as for Next - Platform Plus). If the order we read is already existing in our DB the only difference we want to store is:
- If the “Priority” field has changed - track this change in our DB
- If there are any other differences we want to raise a flag in Orders Very > New field so someone can be alerted and check it manually on their portal ANY other changes should come in the form of Cancellation Requests or direct Cancellations from Very
- Payment - a payment record should be created with the date of release of the order as transaction date, fully paid, completed, process by mp and the Marketplace Order ID as transaction ID
File name and Limitations:
- Files will be produced by Very with the following naming convention: “nnnn.order.mmddyy.” where ‘nnnn’ is the 4 alphanumeric supplier code, mmddyy is the month day and year the transaction was produced and is an incrementing number for each file type per day
- Field sequence might differ in actual communication, structure and dependencies are the same though
- No other specific file limitations are present
<v1.5> Note: Expectation as per conversations and documentation is that files will be XMLs or with no extension at all so we should aim at working with files that are either .xml or with no extension. </v1.5>