/*
* Open Logistics — Shiprocket
*
* OpenAPI description of the Shiprocket endpoints wrapped by `open-logistics`. Source of truth for generated Python and Rust clients. Operation IDs and schema field names are intentionally snake_case so every language exposes the same names. Two TypeScript methods (`checkServiceability` and `calculateRates`) call `GET /courier/serviceability`; OpenAPI permits one operation per path + method, so this spec exposes a single `courier_serviceability` operation. Language facades may alias it as `calculate_rates`.
*
* The version of the OpenAPI document: 0.3.0
*
* Generated by: https://openapi-generator.tech
*/
use crate::shiprocket::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateOrderPayload {
#[serde(rename = "order_id")]
pub order_id: String,
/// YYYY-MM-DD HH:mm
#[serde(rename = "order_date")]
pub order_date: String,
#[serde(rename = "pickup_location")]
pub pickup_location: String,
#[serde(rename = "billing_customer_name")]
pub billing_customer_name: String,
#[serde(rename = "billing_last_name", skip_serializing_if = "Option::is_none")]
pub billing_last_name: Option<String>,
#[serde(rename = "billing_address")]
pub billing_address: String,
#[serde(rename = "billing_city")]
pub billing_city: String,
#[serde(rename = "billing_pincode")]
pub billing_pincode: String,
#[serde(rename = "billing_state")]
pub billing_state: String,
#[serde(rename = "billing_country")]
pub billing_country: String,
#[serde(rename = "billing_email")]
pub billing_email: String,
#[serde(rename = "billing_phone")]
pub billing_phone: String,
#[serde(rename = "shipping_is_billing")]
pub shipping_is_billing: bool,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_customer_name", skip_serializing_if = "Option::is_none")]
pub shipping_customer_name: Option<String>,
#[serde(rename = "shipping_last_name", skip_serializing_if = "Option::is_none")]
pub shipping_last_name: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_address", skip_serializing_if = "Option::is_none")]
pub shipping_address: Option<String>,
#[serde(rename = "shipping_address_2", skip_serializing_if = "Option::is_none")]
pub shipping_address_2: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_city", skip_serializing_if = "Option::is_none")]
pub shipping_city: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_pincode", skip_serializing_if = "Option::is_none")]
pub shipping_pincode: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_state", skip_serializing_if = "Option::is_none")]
pub shipping_state: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_country", skip_serializing_if = "Option::is_none")]
pub shipping_country: Option<String>,
#[serde(rename = "shipping_email", skip_serializing_if = "Option::is_none")]
pub shipping_email: Option<String>,
/// Required when `shipping_is_billing` is false.
#[serde(rename = "shipping_phone", skip_serializing_if = "Option::is_none")]
pub shipping_phone: Option<String>,
#[serde(rename = "order_items")]
pub order_items: Vec<models::OrderItem>,
#[serde(rename = "payment_method")]
pub payment_method: PaymentMethod,
#[serde(rename = "sub_total")]
pub sub_total: f64,
#[serde(rename = "length")]
pub length: f64,
#[serde(rename = "breadth")]
pub breadth: f64,
#[serde(rename = "height")]
pub height: f64,
#[serde(rename = "weight")]
pub weight: f64,
}
impl CreateOrderPayload {
pub fn new(order_id: String, order_date: String, pickup_location: String, billing_customer_name: String, billing_address: String, billing_city: String, billing_pincode: String, billing_state: String, billing_country: String, billing_email: String, billing_phone: String, shipping_is_billing: bool, order_items: Vec<models::OrderItem>, payment_method: PaymentMethod, sub_total: f64, length: f64, breadth: f64, height: f64, weight: f64) -> CreateOrderPayload {
CreateOrderPayload {
order_id,
order_date,
pickup_location,
billing_customer_name,
billing_last_name: None,
billing_address,
billing_city,
billing_pincode,
billing_state,
billing_country,
billing_email,
billing_phone,
shipping_is_billing,
shipping_customer_name: None,
shipping_last_name: None,
shipping_address: None,
shipping_address_2: None,
shipping_city: None,
shipping_pincode: None,
shipping_state: None,
shipping_country: None,
shipping_email: None,
shipping_phone: None,
order_items,
payment_method,
sub_total,
length,
breadth,
height,
weight,
}
}
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PaymentMethod {
#[serde(rename = "prepaid")]
Prepaid,
#[serde(rename = "COD")]
Cod,
}
impl Default for PaymentMethod {
fn default() -> PaymentMethod {
Self::Prepaid
}
}