artcoded_api/models/
invoice_row.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InvoiceRow {
16 #[serde(rename = "projectName", skip_serializing_if = "Option::is_none")]
17 pub project_name: Option<String>,
18 #[serde(rename = "period", skip_serializing_if = "Option::is_none")]
19 pub period: Option<String>,
20 #[serde(rename = "nature", skip_serializing_if = "Option::is_none")]
21 pub nature: Option<String>,
22 #[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
23 pub amount: Option<f64>,
24 #[serde(rename = "rate", skip_serializing_if = "Option::is_none")]
25 pub rate: Option<f64>,
26 #[serde(rename = "hoursPerDay", skip_serializing_if = "Option::is_none")]
27 pub hours_per_day: Option<f64>,
28 #[serde(rename = "amountType", skip_serializing_if = "Option::is_none")]
29 pub amount_type: Option<AmountType>,
30 #[serde(rename = "rateType", skip_serializing_if = "Option::is_none")]
31 pub rate_type: Option<RateType>,
32 #[serde(rename = "total", skip_serializing_if = "Option::is_none")]
33 pub total: Option<f64>,
34}
35
36impl InvoiceRow {
37 pub fn new() -> InvoiceRow {
38 InvoiceRow {
39 project_name: None,
40 period: None,
41 nature: None,
42 amount: None,
43 rate: None,
44 hours_per_day: None,
45 amount_type: None,
46 rate_type: None,
47 total: None,
48 }
49 }
50}
51#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
53pub enum AmountType {
54 #[serde(rename = "DAYS")]
55 Days,
56 #[serde(rename = "HOURS")]
57 Hours,
58}
59
60impl Default for AmountType {
61 fn default() -> AmountType {
62 Self::Days
63 }
64}
65#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
67pub enum RateType {
68 #[serde(rename = "DAYS")]
69 Days,
70 #[serde(rename = "HOURS")]
71 Hours,
72}
73
74impl Default for RateType {
75 fn default() -> RateType {
76 Self::Days
77 }
78}