open-logistics 0.2.2

Rust client for the Open Logistics Shiprocket and Delhivery APIs.
Documentation
/*
 * 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.2.2
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::shiprocket::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrderItem {
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "sku")]
    pub sku: String,
    #[serde(rename = "units")]
    pub units: i32,
    #[serde(rename = "selling_price")]
    pub selling_price: f64,
    #[serde(rename = "discount", skip_serializing_if = "Option::is_none")]
    pub discount: Option<f64>,
    #[serde(rename = "tax", skip_serializing_if = "Option::is_none")]
    pub tax: Option<f64>,
    #[serde(rename = "hsn", skip_serializing_if = "Option::is_none")]
    pub hsn: Option<String>,
}

impl OrderItem {
    pub fn new(name: String, sku: String, units: i32, selling_price: f64) -> OrderItem {
        OrderItem {
            name,
            sku,
            units,
            selling_price,
            discount: None,
            tax: None,
            hsn: None,
        }
    }
}