open_logistics/shiprocket/models/
create_order_payload.rs1use 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 #[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 #[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 #[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 #[serde(rename = "shipping_city", skip_serializing_if = "Option::is_none")]
55 pub shipping_city: Option<String>,
56 #[serde(rename = "shipping_pincode", skip_serializing_if = "Option::is_none")]
58 pub shipping_pincode: Option<String>,
59 #[serde(rename = "shipping_state", skip_serializing_if = "Option::is_none")]
61 pub shipping_state: Option<String>,
62 #[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 #[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#[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