use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Rate {
#[serde(rename = "rateId")]
pub rate_id: String,
#[serde(rename = "carrierId")]
pub carrier_id: String,
#[serde(rename = "carrierName")]
pub carrier_name: String,
#[serde(rename = "serviceId")]
pub service_id: String,
#[serde(rename = "serviceName")]
pub service_name: String,
#[serde(rename = "billedWeight", skip_serializing_if = "Option::is_none")]
pub billed_weight: Option<Box<models::shipping_v2::Weight>>,
#[serde(rename = "totalCharge")]
pub total_charge: Box<models::shipping_v2::Currency>,
#[serde(rename = "promise")]
pub promise: Box<models::shipping_v2::Promise>,
#[serde(rename = "supportedDocumentSpecifications")]
pub supported_document_specifications: Vec<models::shipping_v2::SupportedDocumentSpecification>,
#[serde(rename = "availableValueAddedServiceGroups", skip_serializing_if = "Option::is_none")]
pub available_value_added_service_groups: Option<Vec<models::shipping_v2::AvailableValueAddedServiceGroup>>,
#[serde(rename = "requiresAdditionalInputs")]
pub requires_additional_inputs: bool,
#[serde(rename = "rateItemList", skip_serializing_if = "Option::is_none")]
pub rate_item_list: Option<Vec<models::shipping_v2::RateItem>>,
#[serde(rename = "paymentType", skip_serializing_if = "Option::is_none")]
pub payment_type: Option<models::shipping_v2::PaymentType>,
#[serde(rename = "benefits", skip_serializing_if = "Option::is_none")]
pub benefits: Option<Box<models::shipping_v2::Benefits>>,
}
impl Rate {
pub fn new(rate_id: String, carrier_id: String, carrier_name: String, service_id: String, service_name: String, total_charge: models::shipping_v2::Currency, promise: models::shipping_v2::Promise, supported_document_specifications: Vec<models::shipping_v2::SupportedDocumentSpecification>, requires_additional_inputs: bool) -> Rate {
Rate {
rate_id,
carrier_id,
carrier_name,
service_id,
service_name,
billed_weight: None,
total_charge: Box::new(total_charge),
promise: Box::new(promise),
supported_document_specifications,
available_value_added_service_groups: None,
requires_additional_inputs,
rate_item_list: None,
payment_type: None,
benefits: None,
}
}
}