Skip to main content

nfe_parser/base/item/imposto/
pis_st.rs

1//! PIS ST - PIS Substituição Tributária
2//!
3//! Este módulo implementa a estrutura para representar o PIS retido
4//! por substituição tributária na NF-e.
5//!
6//! ## Quando Utilizar
7//!
8//! O grupo PISST deve ser informado quando houver retenção de PIS
9//! por substituição tributária na operação.
10
11use serde::{Deserialize, Serialize};
12
13/// PIS Substituição Tributária (tag `<PISST>`)
14#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
15pub struct PisSt {
16    /// Valor da Base de Cálculo do PIS ST (tag `<vBC>`)
17    #[serde(rename = "$unflatten=vBC")]
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub valor_bc: Option<f32>,
20
21    /// Alíquota do PIS ST em percentual (tag `<pPIS>`)
22    #[serde(rename = "$unflatten=pPIS")]
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub aliquota: Option<f32>,
25
26    /// Quantidade vendida (tag `<qBCProd>`)
27    /// Para cálculo por quantidade
28    #[serde(rename = "$unflatten=qBCProd")]
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub quantidade_bc_produto: Option<f32>,
31
32    /// Alíquota do PIS ST em reais (tag `<vAliqProd>`)
33    /// Para cálculo por quantidade
34    #[serde(rename = "$unflatten=vAliqProd")]
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub aliquota_produto: Option<f32>,
37
38    /// Valor do PIS ST (tag `<vPIS>`)
39    #[serde(rename = "$unflatten=vPIS")]
40    pub valor: f32,
41}
42
43impl Default for PisSt {
44    fn default() -> Self {
45        Self {
46            valor_bc: None,
47            aliquota: None,
48            quantidade_bc_produto: None,
49            aliquota_produto: None,
50            valor: 0.0,
51        }
52    }
53}