blob: ac7ad7d1336656d78a206295327a25345f2ddff5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
package lulu
import "github.com/shopspring/decimal"
type PrintJobCostLineItem struct {
NPages uint `json:"page_count"`
Mfg PkgId `json:"pod_package_id"`
Quantity uint `json:"quantity"`
}
type PrintJobCost struct {
Fees []Fee `json:"fees"`
LineItemCosts []LineItemCost `json:"line_item_costs"`
ShipCost FulfillmentCost `json:"shipping_cost"`
FulfillmentCost FulfillmentCost `json:"fulfillment_cost"`
TotalTax decimal.Decimal `json:"total_tax"`
TotalCostExclTax decimal.Decimal `json:"total_cost_excl_tax"`
TotalCostInclTax decimal.Decimal `json:"total_cost_incl_tax"`
TotalDiscount decimal.Decimal `json:"total_discount"`
Currency string `json:"currency"`
}
type Fee struct {
Currency string `json:"currency"`
Type string `json:"fee_type"`
Sku string `json:"sku"`
TaxRate decimal.Decimal `json:"tax_rate"`
TotalCostExclTax decimal.Decimal `json:"total_cost_excl_tax"`
TotalCostInclTax decimal.Decimal `json:"total_cost_incl_tax"`
TotalTax decimal.Decimal `json:"total_tax"`
}
type FulfillmentCost struct {
TotalCostExclTax decimal.Decimal `json:"total_cost_excl_tax"`
TotalCostInclTax decimal.Decimal `json:"total_cost_incl_tax"`
TotalTax decimal.Decimal `json:"total_tax"`
TaxRate decimal.Decimal `json:"tax_rate"`
}
type LineItemCost struct {
CostExclDiscounts decimal.Decimal `json:"cost_excl_discounts"`
TotalTax decimal.Decimal `json:"total_tax"`
TaxRate decimal.Decimal `json:"tax_rate"`
Quantity uint `json:"quantity"`
TotalCostExclTax decimal.Decimal `json:"total_cost_excl_tax"`
TotalCostExclDiscounts decimal.Decimal `json:"total_cost_excl_discounts"`
TotalCostInclTax decimal.Decimal `json:"total_cost_incl_tax"`
Discounts []Discount `json:"discounts"`
UnitTierCost decimal.Decimal `json:"unit_tier_cost"`
}
type Discount struct {
Amount decimal.Decimal `json:"amount"`
Description string `json:"description"`
}
type printJobCostReq struct {
LineItems []PrintJobCostLineItem `json:"line_items"`
ShipAddr printJobCostReqShipAddr `json:"shipping_address"`
ShipOpt ShippingLevel `json:"shipping_option"`
}
// TODO: just use ShippingAddress?
type printJobCostReqShipAddr struct {
City string `json:"city"`
Country string `json:"country_code"`
PostCode string `json:"postcode"`
State string `json:"state_code"`
Street1 string `json:"street1"`
Phone PhoneNumber `json:"phone_number"`
}
type printJobCostResp struct {
AddressValidation ShippingAddressValidation `json:"shipping_address"`
Fees []Fee `json:"fees"`
LineItemCosts []LineItemCost `json:"line_item_costs"`
ShipCost FulfillmentCost `json:"shipping_cost"`
FulfillmentCost FulfillmentCost `json:"fulfillment_cost"`
TotalTax decimal.Decimal `json:"total_tax"`
TotalCostExclTax decimal.Decimal `json:"total_cost_excl_tax"`
TotalCostInclTax decimal.Decimal `json:"total_cost_incl_tax"`
TotalDiscount decimal.Decimal `json:"total_discount_amount"`
Currency string `json:"currency"`
}
func (resp printJobCostResp) cost() PrintJobCost {
return PrintJobCost{
Fees: resp.Fees,
LineItemCosts: resp.LineItemCosts,
ShipCost: resp.ShipCost,
FulfillmentCost: resp.FulfillmentCost,
TotalTax: resp.TotalTax,
TotalCostExclTax: resp.TotalCostExclTax,
TotalCostInclTax: resp.TotalCostInclTax,
TotalDiscount: resp.TotalDiscount,
Currency: resp.Currency,
}
}
|