osdm_sys/models/
exchange_offer.rs1use 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 ExchangeOffer {
17 #[serde(rename = "exchangeFee")]
18 pub exchange_fee: Box<models::Price>,
19 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
20 pub accounting_ref: Option<Box<models::AccountingRef>>,
21 #[serde(rename = "exchangePrice")]
22 pub exchange_price: Box<models::Price>,
23 #[serde(rename = "refundableAmount", skip_serializing_if = "Option::is_none")]
24 pub refundable_amount: Option<Box<models::Price>>,
25 #[serde(rename = "amountToBePaid", skip_serializing_if = "Option::is_none")]
26 pub amount_to_be_paid: Option<Box<models::Price>>,
27 #[serde(rename = "appliedOverruleCode", skip_serializing_if = "Option::is_none")]
29 pub applied_overrule_code: Option<String>,
30 #[serde(rename = "fulfillments")]
31 pub fulfillments: Vec<models::Fulfillment>,
32 #[serde(rename = "offerId")]
33 pub offer_id: String,
34 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36 pub summary: Option<Option<String>>,
37 #[serde(rename = "offerSummary", skip_serializing_if = "Option::is_none")]
38 pub offer_summary: Option<Box<models::OfferSummary>>,
39 #[serde(rename = "createdOn")]
40 pub created_on: String,
41 #[serde(rename = "preBookableUntil")]
43 pub pre_bookable_until: String,
44 #[serde(rename = "passengerRefs")]
45 pub passenger_refs: Vec<String>,
46 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
47 pub products: Option<Vec<models::Product>>,
48 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
49 pub trip_coverage: Option<Box<models::TripCoverage>>,
50 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
51 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
52 #[serde(rename = "exchangeOfferBreakdown", skip_serializing_if = "Option::is_none")]
54 pub exchange_offer_breakdown: Option<Vec<models::ExchangeBreakdownItem>>,
55 #[serde(rename = "admissionOfferParts")]
56 pub admission_offer_parts: Vec<models::AdmissionOfferPart>,
57 #[serde(rename = "reservationOfferParts", skip_serializing_if = "Option::is_none")]
58 pub reservation_offer_parts: Option<Vec<models::ReservationOfferPart>>,
59 #[serde(rename = "ancillaryOfferParts", skip_serializing_if = "Option::is_none")]
60 pub ancillary_offer_parts: Option<Vec<models::AncillaryOfferPart>>,
61 #[serde(rename = "fees", skip_serializing_if = "Option::is_none")]
62 pub fees: Option<Vec<models::Fee>>,
63 #[serde(rename = "fares", skip_serializing_if = "Option::is_none")]
64 pub fares: Option<Vec<models::Fare>>,
65 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
67 pub _links: Option<Vec<models::Link>>,
68}
69
70impl ExchangeOffer {
71 pub fn new(exchange_fee: models::Price, exchange_price: models::Price, fulfillments: Vec<models::Fulfillment>, offer_id: String, created_on: String, pre_bookable_until: String, passenger_refs: Vec<String>, admission_offer_parts: Vec<models::AdmissionOfferPart>) -> ExchangeOffer {
72 ExchangeOffer {
73 exchange_fee: Box::new(exchange_fee),
74 accounting_ref: None,
75 exchange_price: Box::new(exchange_price),
76 refundable_amount: None,
77 amount_to_be_paid: None,
78 applied_overrule_code: None,
79 fulfillments,
80 offer_id,
81 summary: None,
82 offer_summary: None,
83 created_on,
84 pre_bookable_until,
85 passenger_refs,
86 products: None,
87 trip_coverage: None,
88 inbound_trip_coverage: None,
89 exchange_offer_breakdown: None,
90 admission_offer_parts,
91 reservation_offer_parts: None,
92 ancillary_offer_parts: None,
93 fees: None,
94 fares: None,
95 _links: None,
96 }
97 }
98}
99