use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct FulfillmentShipment {
#[serde(rename = "amazonShipmentId")]
pub amazon_shipment_id: String,
#[serde(rename = "fulfillmentCenterId")]
pub fulfillment_center_id: String,
#[serde(rename = "fulfillmentShipmentStatus")]
pub fulfillment_shipment_status: FulfillmentShipmentStatus,
#[serde(rename = "shippingDate", skip_serializing_if = "Option::is_none")]
pub shipping_date: Option<String>,
#[serde(rename = "estimatedArrivalDate", skip_serializing_if = "Option::is_none")]
pub estimated_arrival_date: Option<String>,
#[serde(rename = "shippingNotes", skip_serializing_if = "Option::is_none")]
pub shipping_notes: Option<Vec<String>>,
#[serde(rename = "fulfillmentShipmentItem")]
pub fulfillment_shipment_item: Vec<models::fulfillment_outbound_2020_07_01::FulfillmentShipmentItem>,
#[serde(rename = "fulfillmentShipmentPackage", skip_serializing_if = "Option::is_none")]
pub fulfillment_shipment_package: Option<Vec<models::fulfillment_outbound_2020_07_01::FulfillmentShipmentPackage>>,
}
impl FulfillmentShipment {
pub fn new(amazon_shipment_id: String, fulfillment_center_id: String, fulfillment_shipment_status: FulfillmentShipmentStatus, fulfillment_shipment_item: Vec<models::fulfillment_outbound_2020_07_01::FulfillmentShipmentItem>) -> FulfillmentShipment {
FulfillmentShipment {
amazon_shipment_id,
fulfillment_center_id,
fulfillment_shipment_status,
shipping_date: None,
estimated_arrival_date: None,
shipping_notes: None,
fulfillment_shipment_item,
fulfillment_shipment_package: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum FulfillmentShipmentStatus {
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "SHIPPED")]
Shipped,
#[serde(rename = "CANCELLED_BY_FULFILLER")]
CancelledByFulfiller,
#[serde(rename = "CANCELLED_BY_SELLER")]
CancelledBySeller,
}
impl Default for FulfillmentShipmentStatus {
fn default() -> FulfillmentShipmentStatus {
Self::Pending
}
}