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::{
15 QBCreatable, QBFullUpdatable, QBItem, QBPDFable, QBSendable, QBSparseUpdateable, QBVoidable,
16};
17
18#[skip_serializing_none]
19#[derive(Clone, Debug, Deserialize, PartialEq, Serialize, Default)]
20#[serde(rename_all = "PascalCase", default)]
21#[cfg_attr(
22 feature = "builder",
23 derive(Builder),
24 builder(default, build_fn(error = "QBTypeError"), setter(into, strip_option))
25)]
26
27pub struct SalesReceipt {
38 pub id: Option<String>,
40 pub line: Option<LineField>,
42 pub customer_ref: Option<NtRef>,
44 pub sync_token: Option<String>,
46 pub currency_ref: Option<NtRef>,
48 pub bill_email: Option<Email>,
50 pub ship_from_addr: Option<Addr>,
52 pub custom_field: Option<Vec<CustomField>>,
54 pub ship_date: Option<NaiveDate>,
56 pub tracking_num: Option<String>,
58 pub class_ref: Option<NtRef>,
60 pub print_status: Option<PrintStatus>,
62 pub payment_ref_num: Option<String>,
64 pub txn_source: Option<String>,
66 pub linked_txn: Option<Vec<LinkedTxn>>,
68 pub global_tax_calculation: Option<GlobalTaxCalculation>,
70 pub apply_tax_after_discount: Option<bool>,
72 pub doc_number: Option<String>,
74 pub private_note: Option<String>,
76 pub deposit_to_account_ref: Option<NtRef>,
78 pub customer_memo: Option<NtRef>,
80 pub credit_card_payment: Option<CreditCardPayment>,
82 pub txn_tax_detail: Option<TxnTaxDetail>,
84 pub payment_method_ref: Option<NtRef>,
86 pub exchange_rate: Option<f64>,
88 pub ship_addr: Option<Addr>,
90 #[serde(rename = "sparse")]
92 pub sparse: Option<bool>,
93 pub department_ref: Option<NtRef>,
95 pub ship_method_ref: Option<NtRef>,
97 pub bill_addr: Option<Addr>,
99 #[serde(skip_serializing)]
101 pub meta_data: Option<MetaData>,
102 pub home_balance: Option<f64>,
104 pub delivery_info: Option<DeliveryInfo>,
106 pub recur_data_ref: Option<NtRef>,
108 pub total_amt: Option<f64>,
110 pub balance: Option<f64>,
112 pub free_form_address: Option<bool>,
114 pub txn_date: Option<NaiveDate>,
116}
117
118impl QBCreatable for SalesReceipt {
119 fn can_create(&self) -> bool {
120 self.line.can_create()
121 }
122}
123
124impl QBVoidable for SalesReceipt {}
125impl QBFullUpdatable for SalesReceipt {
126 fn can_full_update(&self) -> bool {
127 self.can_create() && self.has_read()
128 }
129}
130
131impl QBSparseUpdateable for SalesReceipt {
132 fn can_sparse_update(&self) -> bool {
133 self.can_full_update()
134 }
135}
136
137impl QBSendable for SalesReceipt {}
138impl QBPDFable for SalesReceipt {}