stripe/resources/generated/
item.rs1use crate::ids::CheckoutSessionItemId;
6use crate::params::Object;
7use crate::resources::{Currency, Discount, Price, TaxRate};
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Debug, Default, Deserialize, Serialize)]
12pub struct CheckoutSessionItem {
13 pub id: CheckoutSessionItemId,
15
16 pub amount_discount: i64,
20
21 pub amount_subtotal: i64,
23
24 pub amount_tax: i64,
28
29 pub amount_total: i64,
31
32 pub currency: Currency,
36
37 pub description: String,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub discounts: Option<Vec<LineItemsDiscountAmount>>,
46
47 pub price: Option<Price>,
49
50 pub quantity: Option<u64>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub taxes: Option<Vec<LineItemsTaxAmount>>,
56}
57
58impl Object for CheckoutSessionItem {
59 type Id = CheckoutSessionItemId;
60 fn id(&self) -> Self::Id {
61 self.id.clone()
62 }
63 fn object(&self) -> &'static str {
64 "item"
65 }
66}
67
68#[derive(Clone, Debug, Default, Deserialize, Serialize)]
69pub struct LineItemsDiscountAmount {
70 pub amount: i64,
72
73 pub discount: Discount,
74}
75
76#[derive(Clone, Debug, Default, Deserialize, Serialize)]
77pub struct LineItemsTaxAmount {
78 pub amount: i64,
80
81 pub rate: TaxRate,
82
83 pub taxability_reason: Option<LineItemsTaxAmountTaxabilityReason>,
87
88 pub taxable_amount: Option<i64>,
90}
91
92#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
94#[serde(rename_all = "snake_case")]
95pub enum LineItemsTaxAmountTaxabilityReason {
96 CustomerExempt,
97 NotCollecting,
98 NotSubjectToTax,
99 NotSupported,
100 PortionProductExempt,
101 PortionReducedRated,
102 PortionStandardRated,
103 ProductExempt,
104 ProductExemptHoliday,
105 ProportionallyRated,
106 ReducedRated,
107 ReverseCharge,
108 StandardRated,
109 TaxableBasisReduced,
110 ZeroRated,
111}
112
113impl LineItemsTaxAmountTaxabilityReason {
114 pub fn as_str(self) -> &'static str {
115 match self {
116 LineItemsTaxAmountTaxabilityReason::CustomerExempt => "customer_exempt",
117 LineItemsTaxAmountTaxabilityReason::NotCollecting => "not_collecting",
118 LineItemsTaxAmountTaxabilityReason::NotSubjectToTax => "not_subject_to_tax",
119 LineItemsTaxAmountTaxabilityReason::NotSupported => "not_supported",
120 LineItemsTaxAmountTaxabilityReason::PortionProductExempt => "portion_product_exempt",
121 LineItemsTaxAmountTaxabilityReason::PortionReducedRated => "portion_reduced_rated",
122 LineItemsTaxAmountTaxabilityReason::PortionStandardRated => "portion_standard_rated",
123 LineItemsTaxAmountTaxabilityReason::ProductExempt => "product_exempt",
124 LineItemsTaxAmountTaxabilityReason::ProductExemptHoliday => "product_exempt_holiday",
125 LineItemsTaxAmountTaxabilityReason::ProportionallyRated => "proportionally_rated",
126 LineItemsTaxAmountTaxabilityReason::ReducedRated => "reduced_rated",
127 LineItemsTaxAmountTaxabilityReason::ReverseCharge => "reverse_charge",
128 LineItemsTaxAmountTaxabilityReason::StandardRated => "standard_rated",
129 LineItemsTaxAmountTaxabilityReason::TaxableBasisReduced => "taxable_basis_reduced",
130 LineItemsTaxAmountTaxabilityReason::ZeroRated => "zero_rated",
131 }
132 }
133}
134
135impl AsRef<str> for LineItemsTaxAmountTaxabilityReason {
136 fn as_ref(&self) -> &str {
137 self.as_str()
138 }
139}
140
141impl std::fmt::Display for LineItemsTaxAmountTaxabilityReason {
142 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
143 self.as_str().fmt(f)
144 }
145}
146impl std::default::Default for LineItemsTaxAmountTaxabilityReason {
147 fn default() -> Self {
148 Self::CustomerExempt
149 }
150}