use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ShipmentConfirmation {
#[serde(rename = "shipmentIdentifier")]
pub shipment_identifier: String,
#[serde(rename = "shipmentConfirmationType")]
pub shipment_confirmation_type: ShipmentConfirmationType,
#[serde(rename = "shipmentType", skip_serializing_if = "Option::is_none")]
pub shipment_type: Option<ShipmentType>,
#[serde(rename = "shipmentStructure", skip_serializing_if = "Option::is_none")]
pub shipment_structure: Option<ShipmentStructure>,
#[serde(rename = "transportationDetails", skip_serializing_if = "Option::is_none")]
pub transportation_details: Option<Box<models::vendor_shipments::TransportationDetailsForShipmentConfirmation>>,
#[serde(rename = "amazonReferenceNumber", skip_serializing_if = "Option::is_none")]
pub amazon_reference_number: Option<String>,
#[serde(rename = "shipmentConfirmationDate")]
pub shipment_confirmation_date: String,
#[serde(rename = "shippedDate", skip_serializing_if = "Option::is_none")]
pub shipped_date: Option<String>,
#[serde(rename = "estimatedDeliveryDate", skip_serializing_if = "Option::is_none")]
pub estimated_delivery_date: Option<String>,
#[serde(rename = "sellingParty")]
pub selling_party: Box<models::vendor_shipments::PartyIdentification>,
#[serde(rename = "shipFromParty")]
pub ship_from_party: Box<models::vendor_shipments::PartyIdentification>,
#[serde(rename = "shipToParty")]
pub ship_to_party: Box<models::vendor_shipments::PartyIdentification>,
#[serde(rename = "shipmentMeasurements", skip_serializing_if = "Option::is_none")]
pub shipment_measurements: Option<Box<models::vendor_shipments::ShipmentMeasurements>>,
#[serde(rename = "importDetails", skip_serializing_if = "Option::is_none")]
pub import_details: Option<Box<models::vendor_shipments::ImportDetails>>,
#[serde(rename = "shippedItems")]
pub shipped_items: Vec<models::vendor_shipments::Item>,
#[serde(rename = "cartons", skip_serializing_if = "Option::is_none")]
pub cartons: Option<Vec<models::vendor_shipments::Carton>>,
#[serde(rename = "pallets", skip_serializing_if = "Option::is_none")]
pub pallets: Option<Vec<models::vendor_shipments::Pallet>>,
}
impl ShipmentConfirmation {
pub fn new(shipment_identifier: String, shipment_confirmation_type: ShipmentConfirmationType, shipment_confirmation_date: String, selling_party: models::vendor_shipments::PartyIdentification, ship_from_party: models::vendor_shipments::PartyIdentification, ship_to_party: models::vendor_shipments::PartyIdentification, shipped_items: Vec<models::vendor_shipments::Item>) -> ShipmentConfirmation {
ShipmentConfirmation {
shipment_identifier,
shipment_confirmation_type,
shipment_type: None,
shipment_structure: None,
transportation_details: None,
amazon_reference_number: None,
shipment_confirmation_date,
shipped_date: None,
estimated_delivery_date: None,
selling_party: Box::new(selling_party),
ship_from_party: Box::new(ship_from_party),
ship_to_party: Box::new(ship_to_party),
shipment_measurements: None,
import_details: None,
shipped_items,
cartons: None,
pallets: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ShipmentConfirmationType {
#[serde(rename = "Original")]
Original,
#[serde(rename = "Replace")]
Replace,
}
impl Default for ShipmentConfirmationType {
fn default() -> ShipmentConfirmationType {
Self::Original
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ShipmentType {
#[serde(rename = "TruckLoad")]
TruckLoad,
#[serde(rename = "LessThanTruckLoad")]
LessThanTruckLoad,
#[serde(rename = "SmallParcel")]
SmallParcel,
}
impl Default for ShipmentType {
fn default() -> ShipmentType {
Self::TruckLoad
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ShipmentStructure {
#[serde(rename = "PalletizedAssortmentCase")]
PalletizedAssortmentCase,
#[serde(rename = "LooseAssortmentCase")]
LooseAssortmentCase,
#[serde(rename = "PalletOfItems")]
PalletOfItems,
#[serde(rename = "PalletizedStandardCase")]
PalletizedStandardCase,
#[serde(rename = "LooseStandardCase")]
LooseStandardCase,
#[serde(rename = "MasterPallet")]
MasterPallet,
#[serde(rename = "MasterCase")]
MasterCase,
}
impl Default for ShipmentStructure {
fn default() -> ShipmentStructure {
Self::PalletizedAssortmentCase
}
}