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 {
26 pub id: Option<String>,
28 pub sync_token: Option<String>,
30 #[serde(skip_serializing)]
32 pub meta_data: Option<MetaData>,
33 pub company_addr: Option<Addr>,
35 pub company_name: Option<String>,
37 pub company_start_date: Option<NaiveDate>,
39 pub country: Option<String>,
41 pub customer_communication_addr: Option<Addr>,
43 pub domain: Option<String>,
45 pub email: Option<Email>,
47 pub fiscal_year_start_month: Option<String>,
49 pub legal_addr: Option<Addr>,
51 pub legal_name: Option<String>,
53 pub name_value: Option<Vec<NtRef>>,
55 pub primary_phone: Option<PhoneNumber>,
57 pub sparse: Option<bool>,
59 pub supported_languages: Option<String>,
61 pub web_addr: Option<WebAddr>,
63}
64
65impl QBFullUpdatable for CompanyInfo {
66 fn can_full_update(&self) -> bool {
67 self.sync_token.is_some() && self.company_name.is_some() && self.company_addr.is_some()
68 }
69}
70
71impl QBSparseUpdateable for CompanyInfo {
72 fn can_sparse_update(&self) -> bool {
73 self.can_full_update() && self.sparse.is_some_and(|x| x)
74 }
75}