use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IpiContainer {
#[serde(rename = "$unflatten=clEnq")]
#[serde(skip_serializing_if = "Option::is_none")]
pub classe_enquadramento: Option<String>,
#[serde(rename = "$unflatten=CNPJProd")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cnpj_produtor: Option<String>,
#[serde(rename = "$unflatten=cSelo")]
#[serde(skip_serializing_if = "Option::is_none")]
pub codigo_selo: Option<String>,
#[serde(rename = "$unflatten=qSelo")]
#[serde(skip_serializing_if = "Option::is_none")]
pub quantidade_selo: Option<u32>,
#[serde(rename = "$unflatten=cEnq")]
pub codigo_enquadramento: String,
#[serde(rename = "IPITrib")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ipi_trib: Option<IpiTrib>,
#[serde(rename = "IPINT")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ipi_nt: Option<IpiNt>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IpiTrib {
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=vBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc: Option<f32>,
#[serde(rename = "$unflatten=pIPI")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota: Option<f32>,
#[serde(rename = "$unflatten=qUnid")]
#[serde(skip_serializing_if = "Option::is_none")]
pub quantidade_unidade: Option<f32>,
#[serde(rename = "$unflatten=vUnid")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_unidade: Option<f32>,
#[serde(rename = "$unflatten=vIPI")]
pub valor: f32,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IpiNt {
#[serde(rename = "$unflatten=CST")]
pub cst: String,
}
impl Default for IpiContainer {
fn default() -> Self {
Self {
classe_enquadramento: None,
cnpj_produtor: None,
codigo_selo: None,
quantidade_selo: None,
codigo_enquadramento: "999".to_string(),
ipi_trib: None,
ipi_nt: None,
}
}
}