use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Default)]
pub struct IcmsContainer {
#[serde(rename = "ICMS00")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms00: Option<Icms00>,
#[serde(rename = "ICMS10")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms10: Option<Icms10>,
#[serde(rename = "ICMS20")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms20: Option<Icms20>,
#[serde(rename = "ICMS30")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms30: Option<Icms30>,
#[serde(rename = "ICMS40")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms40: Option<Icms40>,
#[serde(rename = "ICMS41")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms41: Option<Icms41>,
#[serde(rename = "ICMS50")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms50: Option<Icms50>,
#[serde(rename = "ICMS51")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms51: Option<Icms51>,
#[serde(rename = "ICMS60")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms60: Option<Icms60>,
#[serde(rename = "ICMS70")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms70: Option<Icms70>,
#[serde(rename = "ICMS90")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms90: Option<Icms90>,
#[serde(rename = "ICMSSN101")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn101: Option<IcmsSn101>,
#[serde(rename = "ICMSSN102")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn102: Option<IcmsSn102>,
#[serde(rename = "ICMSSN201")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn201: Option<IcmsSn201>,
#[serde(rename = "ICMSSN202")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn202: Option<IcmsSn202>,
#[serde(rename = "ICMSSN500")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn500: Option<IcmsSn500>,
#[serde(rename = "ICMSSN900")]
#[serde(skip_serializing_if = "Option::is_none")]
pub icms_sn900: Option<IcmsSn900>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms00 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
pub modalidade_bc: u8,
#[serde(rename = "$unflatten=vBC")]
pub valor_bc: f32,
#[serde(rename = "$unflatten=pICMS")]
pub aliquota: f32,
#[serde(rename = "$unflatten=vICMS")]
pub valor: f32,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms10 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
pub modalidade_bc: u8,
#[serde(rename = "$unflatten=vBC")]
pub valor_bc: f32,
#[serde(rename = "$unflatten=pICMS")]
pub aliquota: f32,
#[serde(rename = "$unflatten=vICMS")]
pub valor: f32,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
#[serde(rename = "$unflatten=modBCST")]
pub modalidade_bc_st: u8,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
pub valor_bc_st: f32,
#[serde(rename = "$unflatten=pICMSST")]
pub aliquota_st: f32,
#[serde(rename = "$unflatten=vICMSST")]
pub valor_st: f32,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms20 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
pub modalidade_bc: u8,
#[serde(rename = "$unflatten=pRedBC")]
pub percentual_reducao_bc: f32,
#[serde(rename = "$unflatten=vBC")]
pub valor_bc: f32,
#[serde(rename = "$unflatten=pICMS")]
pub aliquota: f32,
#[serde(rename = "$unflatten=vICMS")]
pub valor: f32,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms30 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBCST")]
pub modalidade_bc_st: u8,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
pub valor_bc_st: f32,
#[serde(rename = "$unflatten=pICMSST")]
pub aliquota_st: f32,
#[serde(rename = "$unflatten=vICMSST")]
pub valor_st: f32,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms40 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms41 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms50 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms51 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modalidade_bc: Option<u8>,
#[serde(rename = "$unflatten=pRedBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc: Option<f32>,
#[serde(rename = "$unflatten=vBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc: Option<f32>,
#[serde(rename = "$unflatten=pICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota: Option<f32>,
#[serde(rename = "$unflatten=vICMSOp")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_operacao: Option<f32>,
#[serde(rename = "$unflatten=pDif")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_diferimento: Option<f32>,
#[serde(rename = "$unflatten=vICMSDif")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_diferido: Option<f32>,
#[serde(rename = "$unflatten=vICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor: Option<f32>,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms60 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=vBCSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_st_consumidor: Option<f32>,
#[serde(rename = "$unflatten=vICMSSubstituto")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_substituto: Option<f32>,
#[serde(rename = "$unflatten=vICMSSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_st_retido: Option<f32>,
#[serde(rename = "$unflatten=vBCFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=vFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pRedBCEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_efetiva: Option<f32>,
#[serde(rename = "$unflatten=vBCEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_efetiva: Option<f32>,
#[serde(rename = "$unflatten=pICMSEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_efetiva: Option<f32>,
#[serde(rename = "$unflatten=vICMSEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_efetivo: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms70 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
pub modalidade_bc: u8,
#[serde(rename = "$unflatten=pRedBC")]
pub percentual_reducao_bc: f32,
#[serde(rename = "$unflatten=vBC")]
pub valor_bc: f32,
#[serde(rename = "$unflatten=pICMS")]
pub aliquota: f32,
#[serde(rename = "$unflatten=vICMS")]
pub valor: f32,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
#[serde(rename = "$unflatten=modBCST")]
pub modalidade_bc_st: u8,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
pub valor_bc_st: f32,
#[serde(rename = "$unflatten=pICMSST")]
pub aliquota_st: f32,
#[serde(rename = "$unflatten=vICMSST")]
pub valor_st: f32,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct Icms90 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CST")]
pub cst: String,
#[serde(rename = "$unflatten=modBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modalidade_bc: Option<u8>,
#[serde(rename = "$unflatten=pRedBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc: Option<f32>,
#[serde(rename = "$unflatten=vBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc: Option<f32>,
#[serde(rename = "$unflatten=pICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota: Option<f32>,
#[serde(rename = "$unflatten=vICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor: Option<f32>,
#[serde(rename = "$unflatten=pFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp: Option<f32>,
#[serde(rename = "$unflatten=vFCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp: Option<f32>,
#[serde(rename = "$unflatten=modBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modalidade_bc_st: Option<u8>,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_st: Option<f32>,
#[serde(rename = "$unflatten=pICMSST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_st: Option<f32>,
#[serde(rename = "$unflatten=vICMSST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_st: Option<f32>,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vICMSDeson")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_desonerado: Option<f32>,
#[serde(rename = "$unflatten=motDesICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub motivo_desoneracao: Option<u8>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn101 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
#[serde(rename = "$unflatten=pCredSN")]
pub aliquota_credito_sn: f32,
#[serde(rename = "$unflatten=vCredICMSSN")]
pub valor_credito_icms_sn: f32,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn102 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn201 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
#[serde(rename = "$unflatten=modBCST")]
pub modalidade_bc_st: u8,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
pub valor_bc_st: f32,
#[serde(rename = "$unflatten=pICMSST")]
pub aliquota_st: f32,
#[serde(rename = "$unflatten=vICMSST")]
pub valor_st: f32,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=pCredSN")]
pub aliquota_credito_sn: f32,
#[serde(rename = "$unflatten=vCredICMSSN")]
pub valor_credito_icms_sn: f32,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn202 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
#[serde(rename = "$unflatten=modBCST")]
pub modalidade_bc_st: u8,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
pub valor_bc_st: f32,
#[serde(rename = "$unflatten=pICMSST")]
pub aliquota_st: f32,
#[serde(rename = "$unflatten=vICMSST")]
pub valor_st: f32,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn500 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
#[serde(rename = "$unflatten=vBCSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_st_consumidor: Option<f32>,
#[serde(rename = "$unflatten=vICMSSubstituto")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_icms_substituto: Option<f32>,
#[serde(rename = "$unflatten=vICMSSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_st_retido: Option<f32>,
#[serde(rename = "$unflatten=vBCFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=vFCPSTRet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st_retido: Option<f32>,
#[serde(rename = "$unflatten=pRedBCEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_efetiva: Option<f32>,
#[serde(rename = "$unflatten=vBCEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_efetiva: Option<f32>,
#[serde(rename = "$unflatten=pICMSEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_efetiva: Option<f32>,
#[serde(rename = "$unflatten=vICMSEfet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_efetivo: Option<f32>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub struct IcmsSn900 {
#[serde(rename = "$unflatten=orig")]
pub origem: u8,
#[serde(rename = "$unflatten=CSOSN")]
pub csosn: String,
#[serde(rename = "$unflatten=modBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modalidade_bc: Option<u8>,
#[serde(rename = "$unflatten=pRedBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc: Option<f32>,
#[serde(rename = "$unflatten=vBC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc: Option<f32>,
#[serde(rename = "$unflatten=pICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota: Option<f32>,
#[serde(rename = "$unflatten=vICMS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor: Option<f32>,
#[serde(rename = "$unflatten=modBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modalidade_bc_st: Option<u8>,
#[serde(rename = "$unflatten=pMVAST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_mva_st: Option<f32>,
#[serde(rename = "$unflatten=pRedBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_reducao_bc_st: Option<f32>,
#[serde(rename = "$unflatten=vBCST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_bc_st: Option<f32>,
#[serde(rename = "$unflatten=pICMSST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_st: Option<f32>,
#[serde(rename = "$unflatten=vICMSST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_st: Option<f32>,
#[serde(rename = "$unflatten=pFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub percentual_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=vFCPST")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_fcp_st: Option<f32>,
#[serde(rename = "$unflatten=pCredSN")]
#[serde(skip_serializing_if = "Option::is_none")]
pub aliquota_credito_sn: Option<f32>,
#[serde(rename = "$unflatten=vCredICMSSN")]
#[serde(skip_serializing_if = "Option::is_none")]
pub valor_credito_icms_sn: Option<f32>,
}