use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct BillableClient {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "maxDaysToPay", skip_serializing_if = "Option::is_none")]
pub max_days_to_pay: Option<i32>,
#[serde(rename = "taxRate", skip_serializing_if = "Option::is_none")]
pub tax_rate: Option<f64>,
#[serde(rename = "nature", skip_serializing_if = "Option::is_none")]
pub nature: Option<String>,
#[serde(rename = "rate", skip_serializing_if = "Option::is_none")]
pub rate: Option<f64>,
#[serde(rename = "rateType", skip_serializing_if = "Option::is_none")]
pub rate_type: Option<RateType>,
#[serde(rename = "projectName", skip_serializing_if = "Option::is_none")]
pub project_name: Option<String>,
#[serde(rename = "vatNumber", skip_serializing_if = "Option::is_none")]
pub vat_number: Option<String>,
#[serde(rename = "address", skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "city", skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "emailAddress", skip_serializing_if = "Option::is_none")]
pub email_address: Option<String>,
#[serde(rename = "countryCode", skip_serializing_if = "Option::is_none")]
pub country_code: Option<String>,
#[serde(rename = "phoneNumber", skip_serializing_if = "Option::is_none")]
pub phone_number: Option<String>,
#[serde(rename = "contractStatus", skip_serializing_if = "Option::is_none")]
pub contract_status: Option<ContractStatus>,
#[serde(rename = "startDate", skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(rename = "endDate", skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(rename = "documentIds", skip_serializing_if = "Option::is_none")]
pub document_ids: Option<Vec<String>>,
#[serde(rename = "imported", skip_serializing_if = "Option::is_none")]
pub imported: Option<bool>,
#[serde(rename = "importedDate", skip_serializing_if = "Option::is_none")]
pub imported_date: Option<String>,
#[serde(rename = "defaultWorkingDays", skip_serializing_if = "Option::is_none")]
pub default_working_days: Option<Vec<DefaultWorkingDays>>,
#[serde(rename = "companyNumber", skip_serializing_if = "Option::is_none")]
pub company_number: Option<String>,
#[serde(rename = "cleanVatNumber", skip_serializing_if = "Option::is_none")]
pub clean_vat_number: Option<String>,
#[serde(rename = "ublrateType", skip_serializing_if = "Option::is_none")]
pub ublrate_type: Option<String>,
}
impl BillableClient {
pub fn new() -> BillableClient {
BillableClient {
id: None,
max_days_to_pay: None,
tax_rate: None,
nature: None,
rate: None,
rate_type: None,
project_name: None,
vat_number: None,
address: None,
city: None,
name: None,
email_address: None,
country_code: None,
phone_number: None,
contract_status: None,
start_date: None,
end_date: None,
document_ids: None,
imported: None,
imported_date: None,
default_working_days: None,
company_number: None,
clean_vat_number: None,
ublrate_type: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum RateType {
#[serde(rename = "DAYS")]
Days,
#[serde(rename = "HOURS")]
Hours,
}
impl Default for RateType {
fn default() -> RateType {
Self::Days
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ContractStatus {
#[serde(rename = "NOT_STARTED_YET")]
NotStartedYet,
#[serde(rename = "ONGOING")]
Ongoing,
#[serde(rename = "DONE")]
Done,
}
impl Default for ContractStatus {
fn default() -> ContractStatus {
Self::NotStartedYet
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DefaultWorkingDays {
#[serde(rename = "MONDAY")]
Monday,
#[serde(rename = "TUESDAY")]
Tuesday,
#[serde(rename = "WEDNESDAY")]
Wednesday,
#[serde(rename = "THURSDAY")]
Thursday,
#[serde(rename = "FRIDAY")]
Friday,
#[serde(rename = "SATURDAY")]
Saturday,
#[serde(rename = "SUNDAY")]
Sunday,
}
impl Default for DefaultWorkingDays {
fn default() -> DefaultWorkingDays {
Self::Monday
}
}