nfe_parser/lib.rs
1//! # NFe - Biblioteca Rust para Nota Fiscal Eletrônica
2//!
3//! Esta biblioteca fornece estruturas e utilitários para parsing e serialização
4//! de arquivos XML de Nota Fiscal Eletrônica (NF-e) brasileira.
5//!
6//! ## Funcionalidades
7//!
8//! - Parse de XML de NF-e (Layout 4.00)
9//! - Serialização de estruturas para XML
10//! - Suporte a NF-e (modelo 55) e NFC-e (modelo 65)
11//! - Validação de campos obrigatórios
12//!
13//! ## Exemplo de uso
14//!
15//! ```rust,ignore
16//! use std::fs::File;
17//! use std::convert::TryFrom;
18//! use nfe::Nfe;
19//!
20//! fn main() -> Result<(), Box<dyn std::error::Error>> {
21//! let file = File::open("nota.xml")?;
22//! let nfe = Nfe::try_from(file)?;
23//!
24//! println!("Chave de acesso: {}", nfe.chave_acesso);
25//! println!("Emitente: {:?}", nfe.emit.razao_social);
26//!
27//! Ok(())
28//! }
29//! ```
30
31pub mod base;
32pub mod builder;
33pub mod modelos;
34
35#[cfg(test)]
36mod tests;
37
38// Re-exportação dos tipos principais para facilitar o uso
39pub use base::dest::{Destinatario, IndicadorContribuicaoIe};
40pub use base::emit::Emitente;
41pub use base::endereco::Endereco;
42pub use base::ide::{
43 ComposicaoChaveAcesso, DestinoOperacao, Emissao, FinalidadeEmissao, FormatoImpressaoDanfe,
44 Identificacao, ModeloDocumentoFiscal, Operacao, TipoAmbiente, TipoConsumidor, TipoEmissao,
45 TipoIntermediador, TipoOperacao, TipoPresencaComprador, TipoProcessoEmissao,
46};
47pub use base::item::{Imposto, Item, Produto};
48pub use base::totais::Totalizacao;
49pub use base::transporte::{ModalidadeFrete, Transporte};
50pub use base::Error;
51pub use base::Nfe;
52pub use base::VersaoLayout;
53pub use builder::{NfeBuilder, ItemBuilder};