Repository URL to install this package:
|
Version:
1.3.1 ▾
|
/**
* @file @todo finish types
* @see https://jira.skava.net/confluence/display/ESA/Easy+Reorder+API+Call
*/
import {
FlagList,
} from '../index.base.d'
import {
LabelValue,
Value,
TypeValue,
Identifier,
NumberOrString,
} from './generic.d'
import {
CartItemInfo,
CartInfo,
CartBuyInfo as BuyInfo,
CartBuyInfo as SkuInfo,
CartProduct as Product,
CartProperties as Properties,
} from './cart'
import {
// not sure if this is the same
AddressInfo as ShippingAddress,
ShippingMethod,
} from './addressAndShipping'
import {
UserInfo,
} from './user'
type AddressIdentifier = Identifier
/**
* @todo cross-check
*/
interface OrderUserInfo extends UserInfo {
// @todo - payment
}
/**
* order details ============
*/
interface OrderProductCartInfo {
/**
* @lends id
*/
orderitemid: Identifier
totaltax: NumberOrString
total: NumberOrString
discountonlytotal: NumberOrString
discounttotal: NumberOrString
/**
* @todo add examples
*/
valueaddedtaxes: Array<LabelValue>
surcharges: Array<TypeValue>
shippingmethods: Array<ShippingMethod>
}
interface OrderProductItemInfo extends CartItemInfo {
/**
* @lends id
*/
psvid: Identifier
categoryids: Array<LabelValue>
flags: FlagList
cartinfo: CartInfo
description: Array<Value>
specifications: Array<LabelValue>
/**
* String
*/
isgiftcard: Boolean
isgiftwrap: Boolean
additionalinfo: Array<LabelValue>
}
interface OrderProductState {
timings: Array<LabelValue>
additionalinfo: Array<LabelValue>
/**
* @todo @enum
*/
locale: String
// NumberOrString
status: String
}
interface OrderInfo {
/**
* @lends id
*/
orderid: Identifier
}
/**
* store locator?
*/
interface StoreInfo {
/**
* @lends id
*/
identifier: Identifier
}
interface OrderProductProperties {
buyinfo: BuyInfo
cartinfo: OrderProductCartInfo
iteminfo: OrderProductItemInfo
state: OrderProductState
math: Math
orderinfo: OrderInfo
/**
* in cart this is not real skuinfo
*/
skuinfo: SkuInfo
userinfo: Array<OrderUserInfo>
}
interface OrderProduct extends Product {
// identifier: ID!
name: String
// @enum
type: String
properties: OrderProductProperties
}
type OrderProductList = Array<OrderProduct>
interface OrderChildrenProducts {
products: OrderProductList
}
/**
* @see shipping
*/
interface OrderChildrenPropertiesItemInfo {
/**
* @todo finish type example
*/
shippingmessages: Array<LabelValue>
additionalinfo: Array<LabelValue>
}
interface OrderChildrenProperties extends Properties {
cartinfo: CartInfo
state: OrderProductState
iteminfo: OrderChildrenPropertiesItemInfo
math: Math
storeinfo: StoreInfo
userinfo: Array<OrderUserInfo>
orderinfo: OrderInfo
}
interface OrderPackages {
children: OrderChildrenProducts
properties: OrderChildrenProperties
}
type FulfilmentType = 'digital' | 'physical'
interface OrderProductsByFulfilmentType {
physicalDeliveryProducts: Array<?OrderProduct>,
digitalDeliveryProducts: Array<?OrderProduct>,
}
interface OrderProductGroup {
products: Array<OrderProduct>,
shippingAddress: ShippingAddress,
// defaults
// these two are different on digital...
shippingMethod: ShippingMethod,
fulfilmentType: FulfilmentType,
}
type ProductNameList = Array<string>
type AddressIdentifierList = Array<AddressIdentifier>
interface OrderDynamicState {
// normal
products: Array<OrderProduct>,
// dynamic
groupedProducts: Array<OrderProductGroup>,
productsName: ProductNameList,
totalItemCount: number,
}
declare function typeToAddressIdList(products: OrderProductList): AddressIdentifierList
declare function typeFromProductsToNameList(products: OrderProductList, limit: number): ProductNameList
declare function typeHasAddressId(product: OrderProduct): boolean
declare function typeFromProductToName(product: OrderProduct): string
declare function typeIsFulfilmentType(product: OrderProduct): boolean
declare function typeToIndexedDeliveryType(products: OrderProductList): OrderProductsByFulfilmentType
export {
//
typeToAddressIdList,
typeFromProductsToNameList,
typeHasAddressId,
typeFromProductToName,
typeIsFulfilmentType,
typeToIndexedDeliveryType,
OrderProductList,
//
OrderUserInfo,
OrderProductCartInfo,
OrderProductItemInfo,
OrderProductState,
OrderInfo,
OrderProductProperties,
OrderProduct,
OrderChildrenProducts,
OrderChildrenPropertiesItemInfo,
StoreInfo,
OrderChildrenProperties,
OrderPackages,
}