Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Coupon ¶
type Coupon interface { ValidForType(string) bool ValidForPrice(string, uint64) bool ValidForProduct(string) bool PercentageDiscount() uint64 FixedDiscount(string) uint64 }
Coupon is the interface for a coupon needed to do price calculation.
type DiscountItem ¶ added in v1.6.0
type DiscountItem struct { Type DiscountType `json:"type"` Percentage uint64 `json:"percentage"` Fixed uint64 `json:"fixed"` }
DiscountItem provides details about a discount that was applied
type DiscountType ¶ added in v1.6.0
type DiscountType int
DiscountType indicates what type of discount was given
const ( DiscountTypeCoupon DiscountType = iota + 1 DiscountTypeMember )
possible types for a discount item
func (DiscountType) MarshalJSON ¶ added in v1.6.0
func (t DiscountType) MarshalJSON() ([]byte, error)
MarshalJSON marshals the enum as a quoted json string
func (DiscountType) String ¶ added in v1.6.0
func (t DiscountType) String() string
func (*DiscountType) UnmarshalJSON ¶ added in v1.6.0
func (t *DiscountType) UnmarshalJSON(b []byte) error
UnmarshalJSON unmashals a quoted json string to the enum value
type FixedMemberDiscount ¶
FixedMemberDiscount represents a fixed discount given to members.
type Item ¶
type Item interface { ProductSku() string PriceInLowestUnit() uint64 ProductType() string FixedVAT() uint64 TaxableItems() []Item GetQuantity() uint64 }
Item is the interface for a single line item needed to do price calculation.
type ItemPrice ¶
type ItemPrice struct { Quantity uint64 Subtotal uint64 Discount uint64 NetTotal uint64 Taxes uint64 Total int64 DiscountItems []DiscountItem }
ItemPrice is the price of a single line item.
type MemberDiscount ¶
type MemberDiscount struct { Claims map[string]string `json:"claims"` Percentage uint64 `json:"percentage"` FixedAmount []*FixedMemberDiscount `json:"fixed"` ProductTypes []string `json:"product_types"` Products []string `json:"products"` }
MemberDiscount represents a discount given to members, either fixed or a percentage.
func (*MemberDiscount) FixedDiscount ¶
func (d *MemberDiscount) FixedDiscount(currency string) uint64
FixedDiscount returns what the fixed discount amount is for a particular currency.
func (*MemberDiscount) ValidForProduct ¶ added in v1.2.0
func (d *MemberDiscount) ValidForProduct(productSku string) bool
ValidForProduct returns whether a member discount is valid for a product sku
func (*MemberDiscount) ValidForType ¶
func (d *MemberDiscount) ValidForType(productType string) bool
ValidForType returns whether a member discount is valid for a product type.
type PaymentMethods ¶ added in v1.3.0
type PaymentMethods struct { Stripe struct { Enabled bool `json:"enabled"` PublicKey string `json:"public_key,omitempty"` } `json:"stripe"` PayPal struct { Enabled bool `json:"enabled"` ClientID string `json:"client_id,omitempty"` Environment string `json:"environment,omitempty"` } `json:"paypal"` }
PaymentMethods settings
type Price ¶
type Price struct { Items []ItemPrice Subtotal uint64 Discount uint64 NetTotal uint64 Taxes uint64 Total int64 }
Price represents the total price of all line items.
func CalculatePrice ¶
func CalculatePrice(settings *Settings, jwtClaims map[string]interface{}, params PriceParameters, log logrus.FieldLogger) Price
CalculatePrice will calculate the final total price. It takes into account currency, country, coupons, and discounts.
type PriceParameters ¶ added in v1.2.2
PriceParameters represents the order information to calculate prices.
type Settings ¶
type Settings struct { PricesIncludeTaxes bool `json:"prices_include_taxes"` Taxes []*Tax `json:"taxes,omitempty"` MemberDiscounts []*MemberDiscount `json:"member_discounts,omitempty"` PaymentMethods *PaymentMethods `json:"payment_methods,omitempty"` }
Settings represent the site-wide settings for price calculation.