use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrderDetails {
#[serde(rename = "purchaseOrderDate")]
pub purchase_order_date: String,
#[serde(rename = "purchaseOrderChangedDate", skip_serializing_if = "Option::is_none")]
pub purchase_order_changed_date: Option<String>,
#[serde(rename = "purchaseOrderStateChangedDate")]
pub purchase_order_state_changed_date: String,
#[serde(rename = "purchaseOrderType", skip_serializing_if = "Option::is_none")]
pub purchase_order_type: Option<PurchaseOrderType>,
#[serde(rename = "importDetails", skip_serializing_if = "Option::is_none")]
pub import_details: Option<Box<models::vendor_orders::ImportDetails>>,
#[serde(rename = "dealCode", skip_serializing_if = "Option::is_none")]
pub deal_code: Option<String>,
#[serde(rename = "paymentMethod", skip_serializing_if = "Option::is_none")]
pub payment_method: Option<PaymentMethod>,
#[serde(rename = "buyingParty", skip_serializing_if = "Option::is_none")]
pub buying_party: Option<Box<models::vendor_orders::PartyIdentification>>,
#[serde(rename = "sellingParty", skip_serializing_if = "Option::is_none")]
pub selling_party: Option<Box<models::vendor_orders::PartyIdentification>>,
#[serde(rename = "shipToParty", skip_serializing_if = "Option::is_none")]
pub ship_to_party: Option<Box<models::vendor_orders::PartyIdentification>>,
#[serde(rename = "billToParty", skip_serializing_if = "Option::is_none")]
pub bill_to_party: Option<Box<models::vendor_orders::PartyIdentification>>,
#[serde(rename = "shipWindow", skip_serializing_if = "Option::is_none")]
pub ship_window: Option<String>,
#[serde(rename = "deliveryWindow", skip_serializing_if = "Option::is_none")]
pub delivery_window: Option<String>,
#[serde(rename = "items")]
pub items: Vec<models::vendor_orders::OrderItem>,
}
impl OrderDetails {
pub fn new(purchase_order_date: String, purchase_order_state_changed_date: String, items: Vec<models::vendor_orders::OrderItem>) -> OrderDetails {
OrderDetails {
purchase_order_date,
purchase_order_changed_date: None,
purchase_order_state_changed_date,
purchase_order_type: None,
import_details: None,
deal_code: None,
payment_method: None,
buying_party: None,
selling_party: None,
ship_to_party: None,
bill_to_party: None,
ship_window: None,
delivery_window: None,
items,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PurchaseOrderType {
#[serde(rename = "RegularOrder")]
RegularOrder,
#[serde(rename = "ConsignedOrder")]
ConsignedOrder,
#[serde(rename = "NewProductIntroduction")]
NewProductIntroduction,
#[serde(rename = "RushOrder")]
RushOrder,
}
impl Default for PurchaseOrderType {
fn default() -> PurchaseOrderType {
Self::RegularOrder
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PaymentMethod {
#[serde(rename = "Invoice")]
Invoice,
#[serde(rename = "Consignment")]
Consignment,
#[serde(rename = "CreditCard")]
CreditCard,
#[serde(rename = "Prepaid")]
Prepaid,
}
impl Default for PaymentMethod {
fn default() -> PaymentMethod {
Self::Invoice
}
}