1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InvoiceGeneration {
16 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
17 pub id: Option<String>,
18 #[serde(rename = "invoiceNumber", skip_serializing_if = "Option::is_none")]
19 pub invoice_number: Option<String>,
20 #[serde(
21 rename = "structuredReference",
22 skip_serializing_if = "Option::is_none"
23 )]
24 pub structured_reference: Option<String>,
25 #[serde(rename = "creditNoteId", skip_serializing_if = "Option::is_none")]
26 pub credit_note_id: Option<String>,
27 #[serde(rename = "seqInvoiceNumber", skip_serializing_if = "Option::is_none")]
28 pub seq_invoice_number: Option<i64>,
29 #[serde(rename = "dateOfInvoice", skip_serializing_if = "Option::is_none")]
30 pub date_of_invoice: Option<String>,
31 #[serde(rename = "dateCreation", skip_serializing_if = "Option::is_none")]
32 pub date_creation: Option<String>,
33 #[serde(rename = "archivedDate", skip_serializing_if = "Option::is_none")]
34 pub archived_date: Option<String>,
35 #[serde(rename = "updatedDate", skip_serializing_if = "Option::is_none")]
36 pub updated_date: Option<String>,
37 #[serde(rename = "billTo", skip_serializing_if = "Option::is_none")]
38 pub bill_to: Option<Box<models::BillTo>>,
39 #[serde(rename = "invoiceTable", skip_serializing_if = "Option::is_none")]
40 pub invoice_table: Option<Vec<models::InvoiceRow>>,
41 #[serde(rename = "taxRate", skip_serializing_if = "Option::is_none")]
42 pub tax_rate: Option<f64>,
43 #[serde(rename = "maxDaysToPay", skip_serializing_if = "Option::is_none")]
44 pub max_days_to_pay: Option<i32>,
45 #[serde(rename = "locked", skip_serializing_if = "Option::is_none")]
46 pub locked: Option<bool>,
47 #[serde(rename = "archived", skip_serializing_if = "Option::is_none")]
48 pub archived: Option<bool>,
49 #[serde(rename = "bookmarked", skip_serializing_if = "Option::is_none")]
50 pub bookmarked: Option<bool>,
51 #[serde(rename = "bookmarkedDate", skip_serializing_if = "Option::is_none")]
52 pub bookmarked_date: Option<String>,
53 #[serde(rename = "logicalDelete", skip_serializing_if = "Option::is_none")]
54 pub logical_delete: Option<bool>,
55 #[serde(rename = "uploadedManually", skip_serializing_if = "Option::is_none")]
56 pub uploaded_manually: Option<bool>,
57 #[serde(rename = "invoiceUploadId", skip_serializing_if = "Option::is_none")]
58 pub invoice_upload_id: Option<String>,
59 #[serde(rename = "invoiceUBLId", skip_serializing_if = "Option::is_none")]
60 pub invoice_ublid: Option<String>,
61 #[serde(
62 rename = "freemarkerTemplateId",
63 skip_serializing_if = "Option::is_none"
64 )]
65 pub freemarker_template_id: Option<String>,
66 #[serde(rename = "peppolStatus", skip_serializing_if = "Option::is_none")]
67 pub peppol_status: Option<PeppolStatus>,
68 #[serde(rename = "specialNote", skip_serializing_if = "Option::is_none")]
69 pub special_note: Option<String>,
70 #[serde(
71 rename = "creditNoteInvoiceReference",
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub credit_note_invoice_reference: Option<String>,
75 #[serde(rename = "imported", skip_serializing_if = "Option::is_none")]
76 pub imported: Option<bool>,
77 #[serde(rename = "importedDate", skip_serializing_if = "Option::is_none")]
78 pub imported_date: Option<String>,
79 #[serde(rename = "timesheetId", skip_serializing_if = "Option::is_none")]
80 pub timesheet_id: Option<String>,
81 #[serde(rename = "reference", skip_serializing_if = "Option::is_none")]
82 pub reference: Option<String>,
83 #[serde(rename = "subTotal", skip_serializing_if = "Option::is_none")]
84 pub sub_total: Option<f64>,
85 #[serde(rename = "taxes", skip_serializing_if = "Option::is_none")]
86 pub taxes: Option<f64>,
87 #[serde(rename = "total", skip_serializing_if = "Option::is_none")]
88 pub total: Option<f64>,
89 #[serde(rename = "newInvoiceNumber", skip_serializing_if = "Option::is_none")]
90 pub new_invoice_number: Option<String>,
91 #[serde(rename = "clientName", skip_serializing_if = "Option::is_none")]
92 pub client_name: Option<String>,
93 #[serde(rename = "dueDate", skip_serializing_if = "Option::is_none")]
94 pub due_date: Option<String>,
95 #[serde(rename = "taxable", skip_serializing_if = "Option::is_none")]
96 pub taxable: Option<f64>,
97 #[serde(rename = "creditNote", skip_serializing_if = "Option::is_none")]
98 pub credit_note: Option<bool>,
99}
100
101impl InvoiceGeneration {
102 pub fn new() -> InvoiceGeneration {
103 InvoiceGeneration {
104 id: None,
105 invoice_number: None,
106 structured_reference: None,
107 credit_note_id: None,
108 seq_invoice_number: None,
109 date_of_invoice: None,
110 date_creation: None,
111 archived_date: None,
112 updated_date: None,
113 bill_to: None,
114 invoice_table: None,
115 tax_rate: None,
116 max_days_to_pay: None,
117 locked: None,
118 archived: None,
119 bookmarked: None,
120 bookmarked_date: None,
121 logical_delete: None,
122 uploaded_manually: None,
123 invoice_upload_id: None,
124 invoice_ublid: None,
125 freemarker_template_id: None,
126 peppol_status: None,
127 special_note: None,
128 credit_note_invoice_reference: None,
129 imported: None,
130 imported_date: None,
131 timesheet_id: None,
132 reference: None,
133 sub_total: None,
134 taxes: None,
135 total: None,
136 new_invoice_number: None,
137 client_name: None,
138 due_date: None,
139 taxable: None,
140 credit_note: None,
141 }
142 }
143}
144#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
146pub enum PeppolStatus {
147 #[serde(rename = "OLD")]
148 Old,
149 #[serde(rename = "NOT_SENT")]
150 NotSent,
151 #[serde(rename = "PROCESSING")]
152 Processing,
153 #[serde(rename = "SUCCESS")]
154 Success,
155}
156
157impl Default for PeppolStatus {
158 fn default() -> PeppolStatus {
159 Self::Old
160 }
161}