Skip to main content

nfe_parser/base/item/imposto/
pis.rs

1//! PIS - Programa de Integração Social
2
3use serde::{Deserialize, Serialize};
4
5/// Container para os grupos de PIS
6#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
7pub struct PisContainer {
8    /// PIS Alíquota - CST 01 e 02
9    #[serde(rename = "PISAliq")]
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub pis_aliq: Option<PisAliq>,
12    /// PIS Não Tributado - CST 04, 05, 06, 07, 08 e 09
13    #[serde(rename = "PISNT")]
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub pis_nt: Option<PisNt>,
16    /// PIS Outras Operações
17    #[serde(rename = "PISOutr")]
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub pis_outr: Option<PisOutr>,
20}
21
22/// PIS Alíquota - Tributação por alíquota
23#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
24pub struct PisAliq {
25    /// Código de Situação Tributária do PIS
26    #[serde(rename = "$unflatten=CST")]
27    pub cst: String,
28    /// Valor da Base de Cálculo do PIS
29    #[serde(rename = "$unflatten=vBC")]
30    pub valor_bc: f32,
31    /// Alíquota do PIS (em percentual)
32    #[serde(rename = "$unflatten=pPIS")]
33    pub aliquota: f32,
34    /// Valor do PIS
35    #[serde(rename = "$unflatten=vPIS")]
36    pub valor: f32,
37}
38
39/// PIS Não Tributado
40#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
41pub struct PisNt {
42    /// Código de Situação Tributária do PIS
43    #[serde(rename = "$unflatten=CST")]
44    pub cst: String,
45}
46
47/// PIS Outras Operações
48#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
49pub struct PisOutr {
50    /// Código de Situação Tributária do PIS
51    #[serde(rename = "$unflatten=CST")]
52    pub cst: String,
53    /// Valor da Base de Cálculo do PIS
54    #[serde(rename = "$unflatten=vBC")]
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub valor_bc: Option<f32>,
57    /// Alíquota do PIS (em percentual)
58    #[serde(rename = "$unflatten=pPIS")]
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub aliquota: Option<f32>,
61    /// Valor do PIS
62    #[serde(rename = "$unflatten=vPIS")]
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub valor: Option<f32>,
65}