use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct InvoiceGeneration {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "invoiceNumber", skip_serializing_if = "Option::is_none")]
pub invoice_number: Option<String>,
#[serde(
rename = "structuredReference",
skip_serializing_if = "Option::is_none"
)]
pub structured_reference: Option<String>,
#[serde(rename = "creditNoteId", skip_serializing_if = "Option::is_none")]
pub credit_note_id: Option<String>,
#[serde(rename = "seqInvoiceNumber", skip_serializing_if = "Option::is_none")]
pub seq_invoice_number: Option<i64>,
#[serde(rename = "dateOfInvoice", skip_serializing_if = "Option::is_none")]
pub date_of_invoice: Option<String>,
#[serde(rename = "dateCreation", skip_serializing_if = "Option::is_none")]
pub date_creation: Option<String>,
#[serde(rename = "archivedDate", skip_serializing_if = "Option::is_none")]
pub archived_date: Option<String>,
#[serde(rename = "updatedDate", skip_serializing_if = "Option::is_none")]
pub updated_date: Option<String>,
#[serde(rename = "billTo", skip_serializing_if = "Option::is_none")]
pub bill_to: Option<Box<models::BillTo>>,
#[serde(rename = "invoiceTable", skip_serializing_if = "Option::is_none")]
pub invoice_table: Option<Vec<models::InvoiceRow>>,
#[serde(rename = "taxRate", skip_serializing_if = "Option::is_none")]
pub tax_rate: Option<f64>,
#[serde(rename = "maxDaysToPay", skip_serializing_if = "Option::is_none")]
pub max_days_to_pay: Option<i32>,
#[serde(rename = "locked", skip_serializing_if = "Option::is_none")]
pub locked: Option<bool>,
#[serde(rename = "archived", skip_serializing_if = "Option::is_none")]
pub archived: Option<bool>,
#[serde(rename = "bookmarked", skip_serializing_if = "Option::is_none")]
pub bookmarked: Option<bool>,
#[serde(rename = "bookmarkedDate", skip_serializing_if = "Option::is_none")]
pub bookmarked_date: Option<String>,
#[serde(rename = "logicalDelete", skip_serializing_if = "Option::is_none")]
pub logical_delete: Option<bool>,
#[serde(rename = "uploadedManually", skip_serializing_if = "Option::is_none")]
pub uploaded_manually: Option<bool>,
#[serde(rename = "invoiceUploadId", skip_serializing_if = "Option::is_none")]
pub invoice_upload_id: Option<String>,
#[serde(rename = "invoiceUBLId", skip_serializing_if = "Option::is_none")]
pub invoice_ublid: Option<String>,
#[serde(
rename = "freemarkerTemplateId",
skip_serializing_if = "Option::is_none"
)]
pub freemarker_template_id: Option<String>,
#[serde(rename = "peppolStatus", skip_serializing_if = "Option::is_none")]
pub peppol_status: Option<PeppolStatus>,
#[serde(rename = "specialNote", skip_serializing_if = "Option::is_none")]
pub special_note: Option<String>,
#[serde(
rename = "creditNoteInvoiceReference",
skip_serializing_if = "Option::is_none"
)]
pub credit_note_invoice_reference: Option<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 = "timesheetId", skip_serializing_if = "Option::is_none")]
pub timesheet_id: Option<String>,
#[serde(rename = "reference", skip_serializing_if = "Option::is_none")]
pub reference: Option<String>,
#[serde(rename = "subTotal", skip_serializing_if = "Option::is_none")]
pub sub_total: Option<f64>,
#[serde(rename = "taxes", skip_serializing_if = "Option::is_none")]
pub taxes: Option<f64>,
#[serde(rename = "total", skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
#[serde(rename = "newInvoiceNumber", skip_serializing_if = "Option::is_none")]
pub new_invoice_number: Option<String>,
#[serde(rename = "clientName", skip_serializing_if = "Option::is_none")]
pub client_name: Option<String>,
#[serde(rename = "dueDate", skip_serializing_if = "Option::is_none")]
pub due_date: Option<String>,
#[serde(rename = "taxable", skip_serializing_if = "Option::is_none")]
pub taxable: Option<f64>,
#[serde(rename = "creditNote", skip_serializing_if = "Option::is_none")]
pub credit_note: Option<bool>,
}
impl InvoiceGeneration {
pub fn new() -> InvoiceGeneration {
InvoiceGeneration {
id: None,
invoice_number: None,
structured_reference: None,
credit_note_id: None,
seq_invoice_number: None,
date_of_invoice: None,
date_creation: None,
archived_date: None,
updated_date: None,
bill_to: None,
invoice_table: None,
tax_rate: None,
max_days_to_pay: None,
locked: None,
archived: None,
bookmarked: None,
bookmarked_date: None,
logical_delete: None,
uploaded_manually: None,
invoice_upload_id: None,
invoice_ublid: None,
freemarker_template_id: None,
peppol_status: None,
special_note: None,
credit_note_invoice_reference: None,
imported: None,
imported_date: None,
timesheet_id: None,
reference: None,
sub_total: None,
taxes: None,
total: None,
new_invoice_number: None,
client_name: None,
due_date: None,
taxable: None,
credit_note: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PeppolStatus {
#[serde(rename = "OLD")]
Old,
#[serde(rename = "NOT_SENT")]
NotSent,
#[serde(rename = "PROCESSING")]
Processing,
#[serde(rename = "SUCCESS")]
Success,
}
impl Default for PeppolStatus {
fn default() -> PeppolStatus {
Self::Old
}
}