1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
17pub struct ContinuousServiceOfferPart {
18 #[serde(rename = "objectType")]
20 pub object_type: String,
21 #[serde(rename = "id")]
22 pub id: String,
23 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
24 pub summary: Option<Option<String>>,
25 #[serde(rename = "createdOn")]
27 pub created_on: String,
28 #[serde(rename = "confirmableUntil", skip_serializing_if = "Option::is_none")]
30 pub confirmable_until: Option<String>,
31 #[serde(rename = "validFrom")]
32 pub valid_from: String,
33 #[serde(rename = "validUntil", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
35 pub valid_until: Option<Option<String>>,
36 #[serde(rename = "confirmedOn", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
37 pub confirmed_on: Option<Option<String>>,
38 #[serde(rename = "confirmedFulfillmentOptions", skip_serializing_if = "Option::is_none")]
39 pub confirmed_fulfillment_options: Option<Box<models::FulfillmentOption>>,
40 #[serde(rename = "price")]
41 pub price: Box<models::Price>,
42 #[serde(rename = "refundAmount", skip_serializing_if = "Option::is_none")]
43 pub refund_amount: Option<Box<models::Price>>,
44 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
45 pub trip_coverage: Option<Box<models::TripCoverage>>,
46 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
47 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
48 #[serde(rename = "summaryProductId", skip_serializing_if = "Option::is_none")]
50 pub summary_product_id: Option<String>,
51 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
53 pub products: Option<Vec<models::ProductLegAssociation>>,
54 #[serde(rename = "status")]
55 pub status: models::BookingPartStatus,
56 #[serde(rename = "pricingStatus", skip_serializing_if = "Option::is_none")]
58 pub pricing_status: Option<String>,
59 #[serde(rename = "offerMode", skip_serializing_if = "Option::is_none")]
60 pub offer_mode: Option<models::OfferMode>,
61 #[serde(rename = "bookingPartCode", skip_serializing_if = "Option::is_none")]
63 pub booking_part_code: Option<String>,
64 #[serde(rename = "distributorBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
66 pub distributor_booking_ref: Option<Option<String>>,
67 #[serde(rename = "retailerBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
69 pub retailer_booking_ref: Option<Option<String>>,
70 #[serde(rename = "passengerIds")]
72 pub passenger_ids: Vec<String>,
73 #[serde(rename = "availableFulfillmentOptions", skip_serializing_if = "Option::is_none")]
74 pub available_fulfillment_options: Option<Vec<models::FulfillmentOption>>,
75 #[serde(rename = "refundable")]
76 pub refundable: models::RefundType,
77 #[serde(rename = "exchangeable")]
78 pub exchangeable: models::ExchangeableType,
79 #[serde(rename = "afterSaleConditions", skip_serializing_if = "Option::is_none")]
81 pub after_sale_conditions: Option<Vec<models::AfterSaleCondition>>,
82 #[serde(rename = "afterSalesOverrideDetails", skip_serializing_if = "Option::is_none")]
83 pub after_sales_override_details: Option<Box<models::AfterSalesOverrideDetails>>,
84 #[serde(rename = "appliedCorporateCodes", skip_serializing_if = "Option::is_none")]
85 pub applied_corporate_codes: Option<Vec<models::CorporateCode>>,
86 #[serde(rename = "appliedPassengerTypes", skip_serializing_if = "Option::is_none")]
87 pub applied_passenger_types: Option<Vec<models::AppliedPassengerType>>,
88 #[serde(rename = "appliedPromotionCodes", skip_serializing_if = "Option::is_none")]
89 pub applied_promotion_codes: Option<Vec<models::PromotionCode>>,
90 #[serde(rename = "appliedReductions", skip_serializing_if = "Option::is_none")]
91 pub applied_reductions: Option<Vec<models::CardReference>>,
92 #[serde(rename = "indicatedConsumption", skip_serializing_if = "Option::is_none")]
93 pub indicated_consumption: Option<Box<models::IndicatedConsumption>>,
94 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
95 pub accounting_ref: Option<Box<models::AccountingRef>>,
96 #[serde(rename = "grantedReductionAmounts", skip_serializing_if = "Option::is_none")]
97 pub granted_reduction_amounts: Option<Box<models::GrantedReductionAmounts>>,
98 #[serde(rename = "pickUpPlaces")]
100 pub pick_up_places: Vec<models::ContinuousServicePickUpPlace>,
101}
102
103impl ContinuousServiceOfferPart {
104 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, pick_up_places: Vec<models::ContinuousServicePickUpPlace>) -> ContinuousServiceOfferPart {
106 ContinuousServiceOfferPart {
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 pick_up_places,
142 }
143 }
144}
145