quickbooks_types/models/
sales_receipt.rs1use chrono::NaiveDate;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5use super::{
6 common::{
7 Addr, CreditCardPayment, CustomField, DeliveryInfo, Email, GlobalTaxCalculation, LinkedTxn,
8 MetaData, NtRef, PrintStatus, TxnTaxDetail,
9 },
10 LineField,
11};
12#[cfg(feature = "builder")]
13use crate::error::QBTypeError;
14use crate::{QBCreatable, QBFullUpdatable, QBPDFable, QBSendable, QBSparseUpdateable, QBVoidable};
15
16#[skip_serializing_none]
17#[derive(Clone, Debug, Deserialize, PartialEq, Serialize, Default)]
18#[serde(rename_all = "PascalCase", default)]
19#[cfg_attr(
20 feature = "builder",
21 derive(Builder),
22 builder(default, build_fn(error = "QBTypeError"), setter(into, strip_option))
23)]
24
25pub struct SalesReceipt {
32 pub id: Option<String>,
34 pub line: Option<LineField>,
36 pub customer_ref: Option<NtRef>,
38 pub sync_token: Option<String>,
40 pub currency_ref: Option<NtRef>,
42 pub bill_email: Option<Email>,
44 pub ship_from_addr: Option<Addr>,
46 pub custom_field: Option<Vec<CustomField>>,
48 pub ship_date: Option<NaiveDate>,
50 pub tracking_num: Option<String>,
52 pub class_ref: Option<NtRef>,
54 pub print_status: Option<PrintStatus>,
56 pub payment_ref_num: Option<String>,
58 pub txn_source: Option<String>,
60 pub linked_txn: Option<Vec<LinkedTxn>>,
62 pub global_tax_calculation: Option<GlobalTaxCalculation>,
64 pub apply_tax_after_discount: Option<bool>,
66 pub doc_number: Option<String>,
68 pub private_note: Option<String>,
70 pub deposit_to_account_ref: Option<NtRef>,
72 pub customer_memo: Option<NtRef>,
74 pub credit_card_payment: Option<CreditCardPayment>,
76 pub txn_tax_detail: Option<TxnTaxDetail>,
78 pub payment_method_ref: Option<NtRef>,
80 pub exchange_rate: Option<f64>,
82 pub ship_addr: Option<Addr>,
84 #[serde(rename = "sparse")]
86 pub sparse: Option<bool>,
87 pub department_ref: Option<NtRef>,
89 pub ship_method_ref: Option<NtRef>,
91 pub bill_addr: Option<Addr>,
93 #[serde(skip_serializing)]
95 pub meta_data: Option<MetaData>,
96 pub home_balance: Option<f64>,
98 pub delivery_info: Option<DeliveryInfo>,
100 pub recur_data_ref: Option<NtRef>,
102 pub total_amt: Option<f64>,
104 pub balance: Option<f64>,
106 pub free_form_address: Option<bool>,
108 pub txn_date: Option<NaiveDate>,
110}
111
112impl QBCreatable for SalesReceipt {
113 fn can_create(&self) -> bool {
114 self.line.can_create()
115 }
116}
117
118impl QBVoidable for SalesReceipt {}
119impl QBFullUpdatable for SalesReceipt {
120 fn can_full_update(&self) -> bool {
121 self.can_create()
122 }
123}
124
125impl QBSparseUpdateable for SalesReceipt {
126 fn can_sparse_update(&self) -> bool {
127 self.can_full_update() && self.sparse.is_some_and(|x| x)
128 }
129}
130
131impl QBSendable for SalesReceipt {}
132impl QBPDFable for SalesReceipt {}