1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct BillableClient {
16 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
17 pub id: Option<String>,
18 #[serde(rename = "maxDaysToPay", skip_serializing_if = "Option::is_none")]
19 pub max_days_to_pay: Option<i32>,
20 #[serde(rename = "taxRate", skip_serializing_if = "Option::is_none")]
21 pub tax_rate: Option<f64>,
22 #[serde(rename = "nature", skip_serializing_if = "Option::is_none")]
23 pub nature: Option<String>,
24 #[serde(rename = "rate", skip_serializing_if = "Option::is_none")]
25 pub rate: Option<f64>,
26 #[serde(rename = "rateType", skip_serializing_if = "Option::is_none")]
27 pub rate_type: Option<RateType>,
28 #[serde(rename = "projectName", skip_serializing_if = "Option::is_none")]
29 pub project_name: Option<String>,
30 #[serde(rename = "vatNumber", skip_serializing_if = "Option::is_none")]
31 pub vat_number: Option<String>,
32 #[serde(rename = "address", skip_serializing_if = "Option::is_none")]
33 pub address: Option<String>,
34 #[serde(rename = "city", skip_serializing_if = "Option::is_none")]
35 pub city: Option<String>,
36 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
37 pub name: Option<String>,
38 #[serde(rename = "emailAddress", skip_serializing_if = "Option::is_none")]
39 pub email_address: Option<String>,
40 #[serde(rename = "countryCode", skip_serializing_if = "Option::is_none")]
41 pub country_code: Option<String>,
42 #[serde(rename = "phoneNumber", skip_serializing_if = "Option::is_none")]
43 pub phone_number: Option<String>,
44 #[serde(rename = "contractStatus", skip_serializing_if = "Option::is_none")]
45 pub contract_status: Option<ContractStatus>,
46 #[serde(rename = "startDate", skip_serializing_if = "Option::is_none")]
47 pub start_date: Option<String>,
48 #[serde(rename = "endDate", skip_serializing_if = "Option::is_none")]
49 pub end_date: Option<String>,
50 #[serde(rename = "documentIds", skip_serializing_if = "Option::is_none")]
51 pub document_ids: Option<Vec<String>>,
52 #[serde(rename = "imported", skip_serializing_if = "Option::is_none")]
53 pub imported: Option<bool>,
54 #[serde(rename = "importedDate", skip_serializing_if = "Option::is_none")]
55 pub imported_date: Option<String>,
56 #[serde(rename = "defaultWorkingDays", skip_serializing_if = "Option::is_none")]
57 pub default_working_days: Option<Vec<DefaultWorkingDays>>,
58 #[serde(rename = "companyNumber", skip_serializing_if = "Option::is_none")]
59 pub company_number: Option<String>,
60 #[serde(rename = "cleanVatNumber", skip_serializing_if = "Option::is_none")]
61 pub clean_vat_number: Option<String>,
62 #[serde(rename = "ublrateType", skip_serializing_if = "Option::is_none")]
63 pub ublrate_type: Option<String>,
64}
65
66impl BillableClient {
67 pub fn new() -> BillableClient {
68 BillableClient {
69 id: None,
70 max_days_to_pay: None,
71 tax_rate: None,
72 nature: None,
73 rate: None,
74 rate_type: None,
75 project_name: None,
76 vat_number: None,
77 address: None,
78 city: None,
79 name: None,
80 email_address: None,
81 country_code: None,
82 phone_number: None,
83 contract_status: None,
84 start_date: None,
85 end_date: None,
86 document_ids: None,
87 imported: None,
88 imported_date: None,
89 default_working_days: None,
90 company_number: None,
91 clean_vat_number: None,
92 ublrate_type: None,
93 }
94 }
95}
96#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
98pub enum RateType {
99 #[serde(rename = "DAYS")]
100 Days,
101 #[serde(rename = "HOURS")]
102 Hours,
103}
104
105impl Default for RateType {
106 fn default() -> RateType {
107 Self::Days
108 }
109}
110#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
112pub enum ContractStatus {
113 #[serde(rename = "NOT_STARTED_YET")]
114 NotStartedYet,
115 #[serde(rename = "ONGOING")]
116 Ongoing,
117 #[serde(rename = "DONE")]
118 Done,
119}
120
121impl Default for ContractStatus {
122 fn default() -> ContractStatus {
123 Self::NotStartedYet
124 }
125}
126#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
128pub enum DefaultWorkingDays {
129 #[serde(rename = "MONDAY")]
130 Monday,
131 #[serde(rename = "TUESDAY")]
132 Tuesday,
133 #[serde(rename = "WEDNESDAY")]
134 Wednesday,
135 #[serde(rename = "THURSDAY")]
136 Thursday,
137 #[serde(rename = "FRIDAY")]
138 Friday,
139 #[serde(rename = "SATURDAY")]
140 Saturday,
141 #[serde(rename = "SUNDAY")]
142 Sunday,
143}
144
145impl Default for DefaultWorkingDays {
146 fn default() -> DefaultWorkingDays {
147 Self::Monday
148 }
149}