Marketplaces / VeePee Technical Scope / VeePee Order Management / VeePee Ship Orders

VeePee Ship Orders

Summary of Changes: (The purpose of this table is to keep traceability and Product team to highlight the things that were changed into the scope, based on comments or discussions)

Date Version Name Applied changes
15.02.2023 1.0 Bogomil Pavlov First Publish
28.02.2023 1.1 Danail Deltchev Small clean ups and rewordings
Proper logic explanation split between Carrier download and actual Shipment
01.03.2023 1.2 Danail Deltchev Clean up for confusion reduction
04.03.2023 1.3 Bogomil Pavlov Shipping status update

The purpose of this document is to give detailed explanation how Ship Orders would work.

On VeePee we can ship only a full order (shipment by order ID) and we can’t specify which products or lines we want to include.

In order to ship an order we need to use a carrier id which is specified from VeePee and we need to store them in Hemi. To describe the full flow the document below is split in the two parts of “getting the carrier list” and the actual “order shipment”

Get Carrier List

API Call: GET {{BaseURL}}/carriers

API Docs: https://pinkstaging.pink-connect.com/swagger#operation/listCarriers

We want to enforce a standard Hemi procedure for such Marketplaces where a specific carier value is required. The general requirement is to be able to store the carriers coming from the marketplaces and associate them with the Couriers created in Hemi. This way when we receive a user input of the Courier that they’ve used we can map to the Hemi Courier and pick the mapped Marketplace value.

To achieve this we want to download the VeePee Carier values in a separate table that will act as an enumeration list. The “enumeration list” should hold the Carier Name and the Carier ID.

We then want to create a section (table) which is dependent to the Hemi courier. In this section we want to have a drop down from which we want to be able to chose one of the VeePee Carriers.

Sample Request: GET https://api-pinkstaging.pink-connect.com/v4/carriers

Sample Response:

[
    {
        "id": 78,
        "name": "C chez vous"
    },
    {
        "id": 79,
        "name": "METHOD Advanced Logistics"
    }
    ]

Mapping:

VeePee Fields Hemi Fields Comment
id VeePee Couriers > Carrier ID
name VeePee Couriers > Carrier Name

Ship Orders

Once we have all the carriers we can ship the order. Please note the order must be with “Ready For Shipping“ or “Partially Shipped” status and acknowledged.

We are to use all standards as per the new Shipment abstraction (Just to confirm - this means we are to use the new methodology picking the shipping trigger and info from section Order Shipment). This should also include standard validations for full order shipments (as a reminder VeePee allows us to only ship the full order ID).

As mentioned above we need to ensure we are sending the correct value to VeePee. To achieve this we need to follow the following flow for selecting the carrier ID to send:

  1. Pick Order Shipment > Courier and match against Hemi Couriers > Name
  2. From the matched Hemi Courier pick the mapped VeePee Carrier
  3. From the enumeration list of VeePee carriers pick the **correct VeePee Carrier ID** which we need to send in the payload.

If we do not match any of the name we want to use the VeePee Couriers > Carrier Name - Other which in this case we will push only carrier and tracking without the tracking url.

If there are no records in VeePee Couriers we want to return an error in Order Error table stating: (Error message: There are no couriers into VeePee courier table) and set the Order Shipment to “error” status

API Call: PUT {{BaseURL}}//orders/{orderId}/status/{newStatus}

API Docs: https://api-pinkstaging.pink-connect.com/v4/orders/{orderId}/status/{newStatus}

Header Parameters: orderId - The order id returned from VeePee in the Get Orders flow (Orders > Marketplace Order ID) newStatus - "SHIPPED"

Body:

{
  "trackingNumber": "Excepteur irure Duis cupidatat",
  "trackingUrl": "aliqua anim ullamco",
  "carrierId": 76764483,
}

Sample Request: PUT https://api-pinkstaging.pink-connect.com/v4/orders/12345/status/SHIPPED

{
  "trackingNumber": "Excepteur irure Duis cupidatat",
  "trackingUrl": "aliqua anim ullamco",
  "carrierId": 76764483,
  }

Sample Response:

If there is empty response it means success. Otherwise we will receive an error (Please note we are still expecting to receive a status code in the 200s most notably 200 or 204 for success)Mapping:

VeePee Field Hemi Field Required Comment
trackingNumber Order Shipment > Tracking Number Yes
trackingUrl Order Shipment > Tracking URL

OR Courier > Tracking URL | No | If the Order Shipment > Tracking URL is missing we get the Couriers > Tracking URL for the mapped Courier Name. If nothing is populated there we push it empty in the payload. Also we are not sending tracking URL in case when there is no match between the Order Shipment > Courier and Hemi Couriers > Name and we push “Other” as carrier. | | carrierId | VeePee Couriers > Carrier ID | Yes | Based on the mapping Courier > Name and Order Shipment > Courier we get the carrierId from VeePee Couriers which we push in the payload. More details in the explanation above |

Is this article helpful?
0 0 0