quickbooks_types/models/
employee.rs1use chrono::NaiveDate;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5use super::common::{Addr, Email, MetaData, PhoneNumber};
6#[cfg(feature = "builder")]
7use crate::error::QBTypeError;
8use crate::{QBCreatable, QBFullUpdatable, QBItem};
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)]
18pub struct Employee {
26 pub id: Option<String>,
28 pub sync_token: Option<String>,
30 #[serde(skip_serializing)]
32 pub meta_data: Option<MetaData>,
33 pub primary_addr: Option<Addr>,
35 pub primary_email_addr: Option<Email>,
37 pub display_name: Option<String>,
39 pub title: Option<String>,
41 pub billable_time: Option<bool>,
43 pub given_name: Option<String>,
45 pub birth_date: Option<NaiveDate>,
47 pub middle_name: Option<String>,
49 pub ssn: Option<String>,
51 pub primary_phone: Option<PhoneNumber>,
53 pub active: Option<bool>,
55 pub released_date: Option<NaiveDate>,
57 pub cost_rate: Option<f64>,
59 pub mobile: Option<PhoneNumber>,
61 pub gender: Option<String>,
63 pub hired_date: Option<NaiveDate>,
65 pub bill_rate: Option<f64>,
67 pub organization: Option<bool>,
69 pub suffix: Option<String>,
71 pub family_name: Option<String>,
73 pub print_on_check_name: Option<String>,
75 pub employee_number: Option<String>,
77 #[serde(rename = "V4IDPseudonym")]
79 pub v4id_pseudonym: Option<String>,
80}
81
82impl QBCreatable for Employee {
83 fn can_create(&self) -> bool {
84 self.given_name.is_some() || self.family_name.is_some()
85 }
86}
87
88impl QBFullUpdatable for Employee {
89 fn can_full_update(&self) -> bool {
90 self.has_read()
91 }
92}