amazon-spapi 2.0.3

A Rust client library for Amazon Selling Partner API (SP-API)
Documentation
/*
 * Selling Partner API for Retail Procurement Payments
 *
 * The Selling Partner API for Retail Procurement Payments provides programmatic access to vendors payments data.
 *
 * The version of the OpenAPI document: v1
 * 
 * Generated by: https://openapi-generator.tech
 */

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

/// InvoiceItem : Details of the item being invoiced.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct InvoiceItem {
    /// Unique number related to this line item.
    #[serde(rename = "itemSequenceNumber")]
    pub item_sequence_number: i32,
    /// Amazon Standard Identification Number (ASIN) of an item.
    #[serde(rename = "amazonProductIdentifier", skip_serializing_if = "Option::is_none")]
    pub amazon_product_identifier: Option<String>,
    /// The vendor selected product identifier of the item. Should be the same as was provided in the purchase order.
    #[serde(rename = "vendorProductIdentifier", skip_serializing_if = "Option::is_none")]
    pub vendor_product_identifier: Option<String>,
    #[serde(rename = "invoicedQuantity")]
    pub invoiced_quantity: Box<models::vendor_invoices::ItemQuantity>,
    #[serde(rename = "netCost")]
    pub net_cost: Box<models::vendor_invoices::Money>,
    #[serde(rename = "netCostUnitOfMeasure", skip_serializing_if = "Option::is_none")]
    pub net_cost_unit_of_measure: Option<models::vendor_invoices::NetCostUnitOfMeasure>,
    /// The Amazon purchase order number for this invoiced line item. Formatting Notes: 8-character alpha-numeric code. This value is mandatory only when invoiceType is Invoice, and is not required when invoiceType is CreditNote.
    #[serde(rename = "purchaseOrderNumber", skip_serializing_if = "Option::is_none")]
    pub purchase_order_number: Option<String>,
    /// HSN Tax code. The HSN number cannot contain alphabets.
    #[serde(rename = "hsnCode", skip_serializing_if = "Option::is_none")]
    pub hsn_code: Option<String>,
    #[serde(rename = "creditNoteDetails", skip_serializing_if = "Option::is_none")]
    pub credit_note_details: Option<Box<models::vendor_invoices::CreditNoteDetails>>,
    /// Individual tax details per line item.
    #[serde(rename = "taxDetails", skip_serializing_if = "Option::is_none")]
    pub tax_details: Option<Vec<models::vendor_invoices::TaxDetails>>,
    /// Individual charge details per line item.
    #[serde(rename = "chargeDetails", skip_serializing_if = "Option::is_none")]
    pub charge_details: Option<Vec<models::vendor_invoices::ChargeDetails>>,
    /// Individual allowance details per line item.
    #[serde(rename = "allowanceDetails", skip_serializing_if = "Option::is_none")]
    pub allowance_details: Option<Vec<models::vendor_invoices::AllowanceDetails>>,
}

impl InvoiceItem {
    /// Details of the item being invoiced.
    pub fn new(item_sequence_number: i32, invoiced_quantity: models::vendor_invoices::ItemQuantity, net_cost: models::vendor_invoices::Money) -> InvoiceItem {
        InvoiceItem {
            item_sequence_number,
            amazon_product_identifier: None,
            vendor_product_identifier: None,
            invoiced_quantity: Box::new(invoiced_quantity),
            net_cost: Box::new(net_cost),
            net_cost_unit_of_measure: None,
            purchase_order_number: None,
            hsn_code: None,
            credit_note_details: None,
            tax_details: None,
            charge_details: None,
            allowance_details: None,
        }
    }
}