Skip to main content

nfe_parser/
lib.rs

1//! # NFe Parser - Biblioteca Rust para Documentos Fiscais Eletrônicos
2//!
3//! Biblioteca de alto desempenho para parsing, serialização e manipulação de
4//! documentos fiscais eletrônicos brasileiros: NF-e, NFC-e e NFS-e.
5//!
6//! ## Funcionalidades
7//!
8//! - **NF-e (Modelo 55)**: Nota Fiscal Eletrônica para operações B2B
9//! - **NFC-e (Modelo 65)**: Nota Fiscal de Consumidor Eletrônica para varejo
10//! - **NFS-e**: Nota Fiscal de Serviços Eletrônica (padrão ABRASF)
11//! - **Impostos completos**: ICMS (todos os CSTs), IPI, PIS, COFINS, ISS, II, DIFAL
12//! - **Municípios**: Tabela IBGE com alíquotas de ISS (Matão, Araraquara e +)
13//! - **Alíquotas**: ICMS por UF, ISS por município, DIFAL interestadual
14//!
15//! ## Exemplo de uso
16//!
17//! ```rust,ignore
18//! use std::fs::File;
19//! use std::convert::TryFrom;
20//! use nfe_parser::{Nfe, NfeBuilder, ItemBuilder};
21//!
22//! // Lendo uma NF-e existente
23//! let file = File::open("nota.xml")?;
24//! let nfe = Nfe::try_from(file)?;
25//! println!("Chave: {}", nfe.chave_acesso);
26//! println!("Total: R$ {:.2}", nfe.totais.valor_total);
27//!
28//! // Criando uma nova NF-e
29//! let nfe = NfeBuilder::new()
30//!     .emitente("12345678000195", "Empresa Ltda", "SP")
31//!     .destinatario("98765432000123", "Cliente SA")
32//!     .item(ItemBuilder::new("001", "Produto X", "12345678", "5102")
33//!         .quantidade(10.0)
34//!         .valor_unitario(99.90)
35//!         .build())
36//!     .build()?;
37//! ```
38//!
39//! ## Módulos
40//!
41//! - [`base`]: Estruturas fundamentais da NF-e
42//! - [`builder`]: API fluente para construção de NF-e
43//! - [`modelos`]: Modelos específicos de documentos
44
45pub mod base;
46pub mod builder;
47pub mod modelos;
48
49#[cfg(test)]
50mod tests;
51
52// Re-exportação dos tipos principais para facilitar o uso
53pub use base::dest::{Destinatario, IndicadorContribuicaoIe};
54pub use base::emit::Emitente;
55pub use base::endereco::Endereco;
56pub use base::ide::{
57    ComposicaoChaveAcesso, DestinoOperacao, Emissao, FinalidadeEmissao, FormatoImpressaoDanfe,
58    Identificacao, ModeloDocumentoFiscal, Operacao, TipoAmbiente, TipoConsumidor, TipoEmissao,
59    TipoIntermediador, TipoOperacao, TipoPresencaComprador, TipoProcessoEmissao,
60};
61pub use base::item::{Imposto, Item, Produto};
62pub use base::item::imposto::*;
63pub use base::municipios::{
64    Municipio, ConfiguracaoUf, AliquotaIss, SistemaNfse,
65    matao, araraquara, sao_paulo_uf, aliquotas_iss_matao, aliquotas_iss_araraquara,
66    aliquotas_icms_por_uf, buscar_municipio_por_codigo, buscar_uf, calcular_aliquota_interestadual,
67};
68pub use base::nfce::{QrCodeNfce, ConfiguracaoCsc, ValidadorNfce, FormaPagamentoNfce, ModoEmissaoNfce};
69pub use base::nfse::{
70    Nfse, IdentificacaoNfse, PrestadorServico, TomadorServico, ServicoNfse, ValoresNfse,
71    NaturezaOperacaoNfse, RegimeEspecialNfse, StatusNfse, Rps, LoteRps,
72    calcular_valores_nfse,
73};
74pub use base::totais::Totalizacao;
75pub use base::transporte::{ModalidadeFrete, Transporte};
76pub use base::Error;
77pub use base::Nfe;
78pub use base::VersaoLayout;
79pub use builder::{NfeBuilder, ItemBuilder};