quickbooks_types/models/
company_info.rs1use chrono::NaiveDate;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5use super::common::{Addr, Email, MetaData, NtRef, PhoneNumber, WebAddr};
6#[cfg(feature = "builder")]
7use crate::error::QBTypeError;
8use crate::{QBFullUpdatable, QBSparseUpdateable};
9
10#[skip_serializing_none]
11#[derive(Clone, Debug, Deserialize, PartialEq, Serialize, Default)]
12#[serde(rename_all = "PascalCase", default)]
13#[cfg_attr(
14 feature = "builder",
15 derive(Builder),
16 builder(default, build_fn(error = "QBTypeError"), setter(into, strip_option))
17)]
18
19pub struct CompanyInfo {
29 pub id: Option<String>,
31 pub sync_token: Option<String>,
33 #[serde(skip_serializing)]
35 pub meta_data: Option<MetaData>,
36 pub company_addr: Option<Addr>,
38 pub company_name: Option<String>,
40 pub company_start_date: Option<NaiveDate>,
42 pub country: Option<String>,
44 pub customer_communication_addr: Option<Addr>,
46 pub domain: Option<String>,
48 pub email: Option<Email>,
50 pub fiscal_year_start_month: Option<String>,
52 pub legal_addr: Option<Addr>,
54 pub legal_name: Option<String>,
56 pub name_value: Option<Vec<NtRef>>,
58 pub primary_phone: Option<PhoneNumber>,
60 pub sparse: Option<bool>,
62 pub supported_languages: Option<String>,
64 pub web_addr: Option<WebAddr>,
66}
67
68impl QBFullUpdatable for CompanyInfo {
69 fn can_full_update(&self) -> bool {
70 self.sync_token.is_some() && self.company_name.is_some() && self.company_addr.is_some()
71 }
72}
73
74impl QBSparseUpdateable for CompanyInfo {
75 fn can_sparse_update(&self) -> bool {
76 self.can_full_update()
77 }
78}