Skip to main content

nfe_parser/base/item/imposto/
cofins_st.rs

1//! COFINS ST - COFINS Substituição Tributária
2//!
3//! Este módulo implementa a estrutura para representar a COFINS retida
4//! por substituição tributária na NF-e.
5//!
6//! ## Quando Utilizar
7//!
8//! O grupo COFINSST deve ser informado quando houver retenção de COFINS
9//! por substituição tributária na operação.
10
11use serde::{Deserialize, Serialize};
12
13/// COFINS Substituição Tributária (tag `<COFINSST>`)
14#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
15pub struct CofinsSt {
16    /// Valor da Base de Cálculo da COFINS 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 da COFINS ST em percentual (tag `<pCOFINS>`)
22    #[serde(rename = "$unflatten=pCOFINS")]
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 da COFINS 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 da COFINS ST (tag `<vCOFINS>`)
39    #[serde(rename = "$unflatten=vCOFINS")]
40    pub valor: f32,
41}
42
43impl Default for CofinsSt {
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}