Skip to main content

nfe_parser/base/
emit.rs

1//! Emitente da Nota Fiscal Eletrônica
2
3use super::endereco::Endereco;
4use super::Error;
5use serde::{Deserialize, Serialize};
6use std::str::FromStr;
7
8/// Emitente da NFe
9/// 
10/// Contém os dados do emitente (empresa que está emitindo a nota fiscal),
11/// incluindo CNPJ, razão social, nome fantasia, inscrição estadual e endereço.
12#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13#[serde(rename = "emit")]
14pub struct Emitente {
15    /// CNPJ do emitente (14 dígitos)
16    #[serde(rename = "$unflatten=CNPJ")]
17    pub cnpj: Option<String>,
18    /// Razão social do emitente
19    #[serde(rename = "$unflatten=xNome")]
20    pub razao_social: Option<String>,
21    /// Nome fantasia do emitente
22    #[serde(rename = "$unflatten=xFant")]
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub nome_fantasia: Option<String>,
25    /// Inscrição Estadual do emitente
26    #[serde(rename = "$unflatten=IE")]
27    pub ie: Option<String>,
28    /// Inscrição Estadual do Substituto Tributário
29    #[serde(rename = "$unflatten=IEST")]
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub iest: Option<u32>,
32    /// Endereço do emitente
33    #[serde(rename = "enderEmit")]
34    pub endereco: Endereco,
35}
36
37impl FromStr for Emitente {
38    type Err = Error;
39
40    fn from_str(s: &str) -> Result<Self, Self::Err> {
41        quick_xml::de::from_str(s).map_err(|e| e.into())
42    }
43}
44
45impl ToString for Emitente {
46    fn to_string(&self) -> String {
47        quick_xml::se::to_string(self).expect("Falha ao serializar emitente")
48    }
49}