Skip to main content

open_logistics/shiprocket/models/
create_order_payload.rs

1/*
2 * Open Logistics — Shiprocket
3 *
4 * 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`. 
5 *
6 * The version of the OpenAPI document: 0.3.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::shiprocket::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct CreateOrderPayload {
16    #[serde(rename = "order_id")]
17    pub order_id: String,
18    /// YYYY-MM-DD HH:mm
19    #[serde(rename = "order_date")]
20    pub order_date: String,
21    #[serde(rename = "pickup_location")]
22    pub pickup_location: String,
23    #[serde(rename = "billing_customer_name")]
24    pub billing_customer_name: String,
25    #[serde(rename = "billing_last_name", skip_serializing_if = "Option::is_none")]
26    pub billing_last_name: Option<String>,
27    #[serde(rename = "billing_address")]
28    pub billing_address: String,
29    #[serde(rename = "billing_city")]
30    pub billing_city: String,
31    #[serde(rename = "billing_pincode")]
32    pub billing_pincode: String,
33    #[serde(rename = "billing_state")]
34    pub billing_state: String,
35    #[serde(rename = "billing_country")]
36    pub billing_country: String,
37    #[serde(rename = "billing_email")]
38    pub billing_email: String,
39    #[serde(rename = "billing_phone")]
40    pub billing_phone: String,
41    #[serde(rename = "shipping_is_billing")]
42    pub shipping_is_billing: bool,
43    /// Required when `shipping_is_billing` is false.
44    #[serde(rename = "shipping_customer_name", skip_serializing_if = "Option::is_none")]
45    pub shipping_customer_name: Option<String>,
46    #[serde(rename = "shipping_last_name", skip_serializing_if = "Option::is_none")]
47    pub shipping_last_name: Option<String>,
48    /// Required when `shipping_is_billing` is false.
49    #[serde(rename = "shipping_address", skip_serializing_if = "Option::is_none")]
50    pub shipping_address: Option<String>,
51    #[serde(rename = "shipping_address_2", skip_serializing_if = "Option::is_none")]
52    pub shipping_address_2: Option<String>,
53    /// Required when `shipping_is_billing` is false.
54    #[serde(rename = "shipping_city", skip_serializing_if = "Option::is_none")]
55    pub shipping_city: Option<String>,
56    /// Required when `shipping_is_billing` is false.
57    #[serde(rename = "shipping_pincode", skip_serializing_if = "Option::is_none")]
58    pub shipping_pincode: Option<String>,
59    /// Required when `shipping_is_billing` is false.
60    #[serde(rename = "shipping_state", skip_serializing_if = "Option::is_none")]
61    pub shipping_state: Option<String>,
62    /// Required when `shipping_is_billing` is false.
63    #[serde(rename = "shipping_country", skip_serializing_if = "Option::is_none")]
64    pub shipping_country: Option<String>,
65    #[serde(rename = "shipping_email", skip_serializing_if = "Option::is_none")]
66    pub shipping_email: Option<String>,
67    /// Required when `shipping_is_billing` is false.
68    #[serde(rename = "shipping_phone", skip_serializing_if = "Option::is_none")]
69    pub shipping_phone: Option<String>,
70    #[serde(rename = "order_items")]
71    pub order_items: Vec<models::OrderItem>,
72    #[serde(rename = "payment_method")]
73    pub payment_method: PaymentMethod,
74    #[serde(rename = "sub_total")]
75    pub sub_total: f64,
76    #[serde(rename = "length")]
77    pub length: f64,
78    #[serde(rename = "breadth")]
79    pub breadth: f64,
80    #[serde(rename = "height")]
81    pub height: f64,
82    #[serde(rename = "weight")]
83    pub weight: f64,
84}
85
86impl CreateOrderPayload {
87    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 {
88        CreateOrderPayload {
89            order_id,
90            order_date,
91            pickup_location,
92            billing_customer_name,
93            billing_last_name: None,
94            billing_address,
95            billing_city,
96            billing_pincode,
97            billing_state,
98            billing_country,
99            billing_email,
100            billing_phone,
101            shipping_is_billing,
102            shipping_customer_name: None,
103            shipping_last_name: None,
104            shipping_address: None,
105            shipping_address_2: None,
106            shipping_city: None,
107            shipping_pincode: None,
108            shipping_state: None,
109            shipping_country: None,
110            shipping_email: None,
111            shipping_phone: None,
112            order_items,
113            payment_method,
114            sub_total,
115            length,
116            breadth,
117            height,
118            weight,
119        }
120    }
121}
122/// 
123#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
124pub enum PaymentMethod {
125    #[serde(rename = "prepaid")]
126    Prepaid,
127    #[serde(rename = "COD")]
128    Cod,
129}
130
131impl Default for PaymentMethod {
132    fn default() -> PaymentMethod {
133        Self::Prepaid
134    }
135}
136