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 Ancillary {
17 #[serde(rename = "objectType")]
19 pub object_type: String,
20 #[serde(rename = "id")]
21 pub id: String,
22 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
23 pub summary: Option<Option<String>>,
24 #[serde(rename = "createdOn")]
26 pub created_on: String,
27 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
29 pub confirmable_until: Option<String>,
30 #[serde(rename = "validFrom")]
31 pub valid_from: String,
32 #[serde(rename = "validUntil", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
34 pub valid_until: Option<Option<String>>,
35 #[serde(rename = "confirmedOn", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36 pub confirmed_on: Option<Option<String>>,
37 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
38 pub confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
39 #[serde(rename = "price")]
40 pub price: Box<models::Price>,
41 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
42 pub refund_amount: Option<Box<models::Price>>,
43 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
44 pub trip_coverage: Option<Box<models::TripCoverage>>,
45 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
46 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
47 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
49 pub summary_product_id: Option<String>,
50 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
52 pub products: Option<Vec<models::ProductLegAssociation>>,
53 #[serde(rename = "status")]
54 pub status: models::BookingPartStatus,
55 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
57 pub pricing_status: Option<String>,
58 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
59 pub offer_mode: Option<models::OfferMode>,
60 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
62 pub booking_part_code: Option<String>,
63 #[serde(rename = "distributorBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
65 pub distributor_booking_ref: Option<Option<String>>,
66 #[serde(rename = "retailerBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
68 pub retailer_booking_ref: Option<Option<String>>,
69 #[serde(rename = "passengerIds")]
71 pub passenger_ids: Vec<String>,
72 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
73 pub available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
74 #[serde(rename = "refundable")]
75 pub refundable: models::RefundType,
76 #[serde(rename = "exchangeable")]
77 pub exchangeable: models::ExchangeableType,
78 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
80 pub after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
81 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
82 pub after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
83 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
84 pub applied_corporate_codes: Option<Vec<models::CorporateCode>>,
85 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
86 pub applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
87 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
88 pub applied_promotion_codes: Option<Vec<models::PromotionCode>>,
89 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
90 pub applied_reductions: Option<Vec<models::CardReference>>,
91 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
92 pub indicated_consumption: Option<Box<models::IndicatedConsumption>>,
93 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
94 pub accounting_ref: Option<Box<models::AccountingRef>>,
95 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
96 pub granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
97 #[serde(rename = "feeRefs", skip_serializing_if = "Option::is_none")]
98 pub fee_refs: Option<Vec<models::BookingPartReference>>,
99 #[serde(rename = "type")]
101 pub r#type: String,
102}
103
104impl Ancillary {
105 pub fn new(object_type: String, id: String, created_on: String, valid_from: String, price: models::Price, status: models::BookingPartStatus, passenger_ids: Vec<String>, refundable: models::RefundType, exchangeable: models::ExchangeableType, r#type: String) -> Ancillary {
106 Ancillary {
107 object_type,
108 id,
109 summary: None,
110 created_on,
111 confirmable_until: None,
112 valid_from,
113 valid_until: None,
114 confirmed_on: None,
115 confirmed_fulfillment_options: None,
116 price: Box::new(price),
117 refund_amount: None,
118 trip_coverage: None,
119 inbound_trip_coverage: None,
120 summary_product_id: None,
121 products: None,
122 status,
123 pricing_status: None,
124 offer_mode: None,
125 booking_part_code: None,
126 distributor_booking_ref: None,
127 retailer_booking_ref: None,
128 passenger_ids,
129 available_fulfillment_options: None,
130 refundable,
131 exchangeable,
132 after_sale_conditions: None,
133 after_sales_override_details: None,
134 applied_corporate_codes: None,
135 applied_passenger_types: None,
136 applied_promotion_codes: None,
137 applied_reductions: None,
138 indicated_consumption: None,
139 accounting_ref: None,
140 granted_reduction_amounts: None,
141 fee_refs: None,
142 r#type,
143 }
144 }
145}
146