1use super::endereco::Endereco;
4use super::Error;
5use serde::{Deserialize, Serialize};
6use std::str::FromStr;
7
8#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
13#[serde(rename = "emit")]
14pub struct Emitente {
15 #[serde(rename = "$unflatten=CNPJ")]
17 pub cnpj: Option<String>,
18 #[serde(rename = "$unflatten=xNome")]
20 pub razao_social: Option<String>,
21 #[serde(rename = "$unflatten=xFant")]
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub nome_fantasia: Option<String>,
25 #[serde(rename = "$unflatten=IE")]
27 pub ie: Option<String>,
28 #[serde(rename = "$unflatten=IEST")]
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub iest: Option<u32>,
32 #[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}