1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
16pub struct Vat {
17 #[serde(rename = "countryCode")]
19 pub country_code: String,
20 #[serde(rename = "amount")]
22 pub amount: i32,
23 #[serde(rename = "scale", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
25 pub scale: Option<Option<i32>>,
26 #[serde(rename = "percentage", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub percentage: Option<Option<f32>>,
28 #[serde(rename = "taxId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
29 pub tax_id: Option<Option<String>>,
30 #[serde(rename = "scope", skip_serializing_if = "Option::is_none")]
32 pub scope: Option<String>,
33}
34
35impl Vat {
36 pub fn new(country_code: String, amount: i32) -> Vat {
37 Vat {
38 country_code,
39 amount,
40 scale: None,
41 percentage: None,
42 tax_id: None,
43 scope: None,
44 }
45 }
46}
47