NAV

<back to all web services

OrderClose

The following routes are available for this service:
POST/orders/close
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderCloseResponse:
    response_status: Optional[ResponseStatus] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseAddress:
    first_name: Optional[str] = None
    last_name: Optional[str] = None
    address_line1: Optional[str] = None
    address_line2: Optional[str] = None
    address_line3: Optional[str] = None
    address_line4: Optional[str] = None
    address_line5: Optional[str] = None
    city: Optional[str] = None
    state_province_code: Optional[str] = None
    postal_code: Optional[str] = None
    county: Optional[str] = None
    country_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseSkuComponent:
    parent_order_line_number: Optional[int] = None
    order_line_number: Optional[int] = None
    sku_code: Optional[str] = None
    quantity: Optional[int] = None
    price_paid_per_unit: Optional[Decimal] = None
    retail_price_per_unit: Optional[Decimal] = None
    net_price: Optional[Decimal] = None
    tax_amount: Optional[Decimal] = None
    tax_percentage: Optional[Decimal] = None
    version_number: Optional[str] = None
    version_year: Optional[str] = None
    vehicle_id: Optional[str] = None
    offer_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseSku:
    sku_code: Optional[str] = None
    order_line_number: Optional[int] = None
    quantity: Optional[int] = None
    is_auto_ship: Optional[bool] = None
    order_sku_components: Optional[List[NAVOrderCloseSkuComponent]] = None
    price_paid_per_unit: Optional[Decimal] = None
    retail_price_per_unit: Optional[Decimal] = None
    net_price: Optional[Decimal] = None
    net_sales: Optional[Decimal] = None
    submitted_net_price: Optional[Decimal] = None
    submitted_net_sales: Optional[Decimal] = None
    manual_discount_amount: Optional[Decimal] = None
    item_discount_percent: Optional[Decimal] = None
    tax_amount: Optional[Decimal] = None
    tax_percentage: Optional[Decimal] = None
    commissionable_value_earned: Optional[Decimal] = None
    qualifying_value_earned: Optional[Decimal] = None
    qualifying_value_earned_submitted: Optional[Decimal] = None
    override_c_v_earned: Optional[Decimal] = None
    override_c_v_earned_submitted: Optional[Decimal] = None
    override_q_v_earned: Optional[Decimal] = None
    group_c_v_earned: Optional[Decimal] = None
    group_q_v_earned: Optional[Decimal] = None
    upline_c_v_earned: Optional[Decimal] = None
    upline_q_v_earned: Optional[Decimal] = None
    version_number: Optional[str] = None
    version_year: Optional[str] = None
    coupon_code: Optional[str] = None
    substitute_indicator: Optional[str] = None
    fulfillment_indicator: Optional[str] = None
    substitute_sku_code: Optional[str] = None
    vehicle_id: Optional[str] = None
    offer_id: Optional[str] = None
    buying_discount: Optional[Decimal] = None
    original_order_qty: Optional[Decimal] = None
    parent_s_k_u_code: Optional[str] = None
    closed_quantity: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderClosePayment:
    payment_type: Optional[str] = None
    payment_identifier1: Optional[str] = None
    payment_identifier2: Optional[str] = None
    payment_identifier3: Optional[str] = None
    payment_identifier4: Optional[str] = None
    payment_identifier5: Optional[str] = None
    payment_token: Optional[str] = None
    authorization_time: Optional[datetime.datetime] = None
    authorization_code: Optional[str] = None
    transaction_id: Optional[str] = None
    amount_charged: Optional[Decimal] = None
    billing_address: Optional[NAVOrderCloseAddress] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseFee:
    fee_system_keyword: Optional[str] = None
    fee_amount: Optional[Decimal] = None
    tax_amount: Optional[Decimal] = None
    fee_total: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderClose:
    external_order_id: Optional[str] = None
    order_type_id: Optional[str] = None
    created_date_u_t_c: Optional[datetime.datetime] = None
    submitted_date_u_t_c: Optional[datetime.datetime] = None
    completed_date_u_t_c: Optional[datetime.datetime] = None
    bee_number_customer: Optional[Decimal] = None
    bee_number_payee: Optional[Decimal] = None
    order_source: Optional[str] = None
    shipping_method: Optional[str] = None
    gift_message: Optional[str] = None
    gift_message_from: Optional[str] = None
    gift_message_to: Optional[str] = None
    shipping_comment: Optional[str] = None
    shipping_address: Optional[NAVOrderCloseAddress] = None
    order_skus: Optional[List[NAVOrderCloseSku]] = None
    order_payments: Optional[List[NAVOrderClosePayment]] = None
    order_fees: Optional[List[NAVOrderCloseFee]] = None
    sub_total: Optional[Decimal] = None
    order_total: Optional[Decimal] = None
    shipping_cost: Optional[Decimal] = None
    tax: Optional[Decimal] = None
    shipping_tax: Optional[Decimal] = None
    external_discount_reason: Optional[str] = None
    pc_level: Optional[Decimal] = None
    agent_id: Optional[str] = None
    number_of_customers_served: Optional[Decimal] = None
    version_number: Optional[str] = None
    version_year: Optional[str] = None
    additional_code: Optional[str] = None
    discount_percent: Optional[str] = None
    tax_rate_percent: Optional[str] = None
    order_within_time_period: Optional[Decimal] = None
    tax_area_code: Optional[str] = None
    geocode: Optional[str] = None
    fundraiser_id: Optional[str] = None
    warehouse_code: Optional[str] = None
    original_reship_external_order_id: Optional[str] = None
    shipped_version_number: Optional[str] = None
    shipped_version_year: Optional[str] = None
    master_order_id: Optional[str] = None
    coupon_value: Optional[str] = None
    sales_center_id: Optional[str] = None
    premier_level: Optional[str] = None
    pc_level_current_cycle: Optional[Decimal] = None
    premier_level_current_cycle: Optional[str] = None
    email_address: Optional[str] = None
    phone_number: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseShipmentSku:
    order_line_number: Optional[int] = None
    quantity_shipped: Optional[int] = None
    substitute_sku_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NAVOrderCloseShipment:
    shipment_date_u_t_c: Optional[datetime.datetime] = None
    shipping_method: Optional[str] = None
    shipping_speed: Optional[str] = None
    tracking_number: Optional[str] = None
    shipment_status: Optional[str] = None
    shipment_details: Optional[str] = None
    shipping_cost: Optional[Decimal] = None
    charge: Optional[Decimal] = None
    tax: Optional[Decimal] = None
    actual_shipping_cost: Optional[Decimal] = None
    carton_weight: Optional[Decimal] = None
    order_shipment_sku: Optional[List[NAVOrderCloseShipmentSku]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderClose(IPost):
    order_close_data: Optional[NAVOrderClose] = None
    shipment: Optional[List[NAVOrderCloseShipment]] = None

Python OrderClose DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /orders/close HTTP/1.1 
Host: extensions.avon.ca 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	orderCloseData: 
	{
		externalOrderId: String,
		orderTypeId: String,
		createdDateUTC: 0001-01-01T00:00:00,
		submittedDateUTC: 0001-01-01T00:00:00,
		completedDateUTC: 0001-01-01T00:00:00,
		beeNumberCustomer: 0,
		beeNumberPayee: 0,
		orderSource: String,
		shippingMethod: String,
		giftMessage: String,
		giftMessageFrom: String,
		giftMessageTo: String,
		shippingComment: String,
		shippingAddress: 
		{
			firstName: String,
			lastName: String,
			addressLine1: String,
			addressLine2: String,
			addressLine3: String,
			addressLine4: String,
			addressLine5: String,
			city: String,
			stateProvinceCode: String,
			postalCode: String,
			county: String,
			countryCode: String
		},
		orderSkus: 
		[
			{
				skuCode: String,
				orderLineNumber: 0,
				quantity: 0,
				isAutoShip: False,
				orderSkuComponents: 
				[
					{
						parentOrderLineNumber: 0,
						orderLineNumber: 0,
						skuCode: String,
						quantity: 0,
						pricePaidPerUnit: 0,
						retailPricePerUnit: 0,
						netPrice: 0,
						taxAmount: 0,
						taxPercentage: 0,
						versionNumber: String,
						versionYear: String,
						vehicleId: String,
						offerId: String
					}
				],
				pricePaidPerUnit: 0,
				retailPricePerUnit: 0,
				netPrice: 0,
				netSales: 0,
				submittedNetPrice: 0,
				submittedNetSales: 0,
				manualDiscountAmount: 0,
				itemDiscountPercent: 0,
				taxAmount: 0,
				taxPercentage: 0,
				commissionableValueEarned: 0,
				qualifyingValueEarned: 0,
				qualifyingValueEarnedSubmitted: 0,
				overrideCVEarned: 0,
				overrideCVEarnedSubmitted: 0,
				overrideQVEarned: 0,
				groupCVEarned: 0,
				groupQVEarned: 0,
				uplineCVEarned: 0,
				uplineQVEarned: 0,
				versionNumber: String,
				versionYear: String,
				couponCode: String,
				substituteIndicator: String,
				fulfillmentIndicator: String,
				substituteSkuCode: String,
				vehicleId: String,
				offerId: String,
				buyingDiscount: 0,
				originalOrderQty: 0,
				parentSKUCode: String,
				closedQuantity: 0
			}
		],
		orderPayments: 
		[
			{
				paymentType: String,
				paymentIdentifier1: String,
				paymentIdentifier2: String,
				paymentIdentifier3: String,
				paymentIdentifier4: String,
				paymentIdentifier5: String,
				paymentToken: String,
				authorizationTime: 0001-01-01T00:00:00,
				authorizationCode: String,
				transactionId: String,
				amountCharged: 0,
				billingAddress: 
				{
					firstName: String,
					lastName: String,
					addressLine1: String,
					addressLine2: String,
					addressLine3: String,
					addressLine4: String,
					addressLine5: String,
					city: String,
					stateProvinceCode: String,
					postalCode: String,
					county: String,
					countryCode: String
				}
			}
		],
		orderFees: 
		[
			{
				feeSystemKeyword: String,
				feeAmount: 0,
				taxAmount: 0,
				feeTotal: 0
			}
		],
		subTotal: 0,
		orderTotal: 0,
		shippingCost: 0,
		tax: 0,
		shippingTax: 0,
		externalDiscountReason: String,
		pcLevel: 0,
		agentId: String,
		numberOfCustomersServed: 0,
		versionNumber: String,
		versionYear: String,
		additionalCode: String,
		discountPercent: String,
		taxRatePercent: String,
		orderWithinTimePeriod: 0,
		taxAreaCode: String,
		geocode: String,
		fundraiserId: String,
		warehouseCode: String,
		originalReshipExternalOrderId: String,
		shippedVersionNumber: String,
		shippedVersionYear: String,
		masterOrderId: String,
		couponValue: String,
		salesCenterId: String,
		premierLevel: String,
		pcLevelCurrentCycle: 0,
		premierLevelCurrentCycle: String,
		emailAddress: String,
		phoneNumber: String
	},
	shipment: 
	[
		{
			shipmentDateUTC: 0001-01-01T00:00:00,
			shippingMethod: String,
			shippingSpeed: String,
			trackingNumber: String,
			shipmentStatus: String,
			shipmentDetails: String,
			shippingCost: 0,
			charge: 0,
			tax: 0,
			actualShippingCost: 0,
			cartonWeight: 0,
			orderShipmentSku: 
			[
				{
					orderLineNumber: 0,
					quantityShipped: 0,
					substituteSkuCode: String
				}
			]
		}
	]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}