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 99 100 101 102 103 104
//! Model struct for OrderLineItem type
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::{
enums::OrderLineItemItemType, Money, OrderLineItemAppliedDiscount, OrderLineItemAppliedTax,
OrderLineItemModifier, OrderLineItemPricingBlocklists, OrderQuantityUnit,
};
/// Represents a line item in an order.
///
/// Each line item describes a different product to purchase, with its own quantity and price
/// details.
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct OrderLineItem {
/// A unique ID that identifies the line item only within this order.
pub uid: Option<String>,
/// The name of the line item.
pub name: Option<String>,
/// The quantity purchased, formatted as a decimal number. For example, "3".
///
/// Line items with a quantity of "0" are automatically removed when paying for or otherwise
/// completing the order.
///
/// Line items with a `quantity_unit` can have non-integer quantities. For example, "1.70000".
pub quantity: String,
/// The unit and precision that this line item's quantity is measured in.
pub quantity_unit: Option<OrderQuantityUnit>,
/// The note of the line item.
pub note: Option<String>,
/// The [CatalogItemVariation] ID applied to this line item.
pub catalog_object_id: Option<String>,
/// The version of the catalog object that this line item references.
pub catalog_version: Option<i64>,
/// The name of the variation applied to this line item.
pub variation_name: Option<String>,
/// The type of line item: an itemized sale, a non-itemized sale (custom amount), or the
/// activation or reloading of a gift card.
pub item_type: Option<OrderLineItemItemType>,
/// Application-defined data attached to this order. Metadata fields are intended to store
/// descriptive references or associations with an entity in another system or store brief
/// information about the object. Square does not process this field; it only stores and returns
/// it in relevant API calls. Do not use metadata to store any sensitive information (such as
/// personally identifiable information or card details).
///
/// Keys written by applications must be 60 characters or less and must be in the character set
/// `[a-zA-Z0-9_-]`. Entries can also include metadata generated by Square. These keys are
/// prefixed with a namespace, separated from the key with a ':' character.
///
/// Values have a maximum length of 255 characters.
///
/// An application can have up to 10 entries per metadata field.
///
/// Entries written by applications are private and can only be read or modified by the same
/// application.
///
/// For more information,
/// see [Metadata](https://developer.squareup.com/docs/build-basics/metadata).
pub metadata: Option<HashMap<String, String>>,
/// The [CatalogModifier]s applied to this line item.
pub modifiers: Option<Vec<OrderLineItemModifier>>,
/// The list of references to taxes applied to this line item. Each `OrderLineItemAppliedTax`
/// has a `tax_uid` that references the `uid` of a top-level `OrderLineItemTax` applied to the
/// line item. On reads, the amount applied is populated.
///
/// An `OrderLineItemAppliedTax` is automatically created on every line item for all `ORDER`
/// scoped taxes added to the order. `OrderLineItemAppliedTax` records for `LINE_ITEM` scoped
/// taxes must be added in requests for the tax to apply to any line items.
///
/// To change the amount of a tax, modify the referenced top-level tax.
pub applied_taxes: Option<Vec<OrderLineItemAppliedTax>>,
/// The list of references to discounts applied to this line item. Each
/// `OrderLineItemAppliedDiscount` has a `discount_uid` that references the `uid` of a top-level
/// `OrderLineItemDiscounts` applied to the line item. On reads, the amount applied is
/// populated.
///
/// An `OrderLineItemAppliedDiscount` is automatically created on every line item for all
/// `ORDER` scoped discounts that are added to the order. `OrderLineItemAppliedDiscount` records
/// for `LINE_ITEM` scoped discounts must be added in requests for the discount to apply to any
/// line items.
///
/// To change the amount of a discount, modify the referenced top-level discount.
pub applied_discounts: Option<Vec<OrderLineItemAppliedDiscount>>,
/// The base price for a single unit of the line item.
pub base_price_money: Option<Money>,
/// **Read only** The total price of all item variations sold in this line item. The price is
/// calculated as `base_price_money` multiplied by `quantity`. It does not include modifiers.
pub variation_total_price_money: Option<Money>,
/// **Read only** The amount of money made in gross sales for this line item. The amount is
/// calculated as the sum of the variation's total price and each modifier's total price.
pub gross_sales_money: Option<Money>,
/// **Read only** The total amount of tax money to collect for the line item.
pub total_tax_money: Option<Money>,
/// **Read only** The total amount of discount money to collect for the line item.
pub total_discount_money: Option<Money>,
/// **Read only** The total amount of money to collect for this line item.
pub total_money: Option<Money>,
/// Describes pricing adjustments that are blocked from manual and automatic application to a
/// line item. For more information, see [Apply Taxes and
/// Discounts](https://developer.squareup.com/docs/orders-api/apply-taxes-and-discounts).
pub pricing_blocklists: Option<OrderLineItemPricingBlocklists>,
}