1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct Fee {
17 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub summary: Option<Option<String>>,
22 #[serde(rename = "price")]
23 pub price: Box<models::Price>,
24 #[serde(rename = "applicability", skip_serializing_if = "Option::is_none")]
25 pub applicability: Option<String>,
26 #[serde(rename = "transactionContext", skip_serializing_if = "Option::is_none")]
27 pub transaction_context: Option<String>,
28 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
29 pub status: Option<models::FeeStatus>,
30 #[serde(rename = "distributorBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
32 pub distributor_booking_ref: Option<Option<String>>,
33 #[serde(rename = "refundable", skip_serializing_if = "Option::is_none")]
34 pub refundable: Option<models::RefundType>,
35 #[serde(rename = "conditions", skip_serializing_if = "Option::is_none")]
37 pub conditions: Option<Vec<models::Condition>>,
38 #[serde(rename = "productCode", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
40 pub product_code: Option<Option<String>>,
41 #[serde(rename = "productRef", skip_serializing_if = "Option::is_none")]
43 pub product_ref: Option<String>,
44 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
45 pub accounting_ref: Option<Box<models::AccountingRef>>,
46}
47
48impl Fee {
49 pub fn new(id: String, price: models::Price) -> Fee {
51 Fee {
52 id,
53 summary: None,
54 price: Box::new(price),
55 applicability: None,
56 transaction_context: None,
57 status: None,
58 distributor_booking_ref: None,
59 refundable: None,
60 conditions: None,
61 product_code: None,
62 product_ref: None,
63 accounting_ref: None,
64 }
65 }
66}
67