Skip to main content

Crate dfe

Crate dfe 

Source
Expand description

§dfe

Crate Rust para integração com os webservices da SEFAZ brasileira. Emite, cancela e distribui NF-e e NFC-e; gera DANFE em PDF e imprime via ESC/POS.

§Início rápido

[dependencies]
dfe = "0.5.7"

§Funcionalidades

MóduloResponsabilidade
emissaoEmissão de NF-e e NFC-e via NFeBuilder
cancelarCancelamento via CancelarBuilder
substituicaoCancelamento por substituição de NFC-e (110112) via SubstituicaoBuilder
carta_correcaoCarta de Correção Eletrônica (110110) via CartaCorrecaoBuilder
danfeGeração de DANFE em PDF via DanfeBuilder
escposImpressão ESC/POS via EscPosBuilder e EscPosNFCeBuilder
distribuicaoDistribuição de DF-e (Ambiente Nacional)
statusStatus do webservice SEFAZ via NFeService
manifestacaoManifestação do destinatário
xml_extractorExtração de campos de XML autorizado
tiposStructs e enums de domínio (Icms, Det, Ide, …)

§Exemplo — Emissão de NF-e

use dfe::{NFeBuilder, DfeError};
use dfe::tipos::{Det, Emit, Icms, Ide, Pag, Pis, Cofins, Total, Transp};

let resp = NFeBuilder::new()
    .cert("./cert.pfx", "senha")
    .ide(Ide { c_uf: 35, mod_: 55, serie: 1, n_nf: 1, tp_amb: 2, ..Default::default() })
    .emitente(Emit { cnpj: Some("11111111111111".into()), ..Default::default() })
    .itens(vec![Det {
        c_prod: "001".into(), x_prod: "PRODUTO".into(), ncm: "22030000".into(),
        cfop: 5102, q_com: 1.0, v_un_com: 10.0, v_prod: 10.0,
        icms: Icms::sn102(0, "400"),
        pis: Pis::Nt { cst: "07".into() },
        cofins: Cofins::Nt { cst: "07".into() },
        ..Default::default()
    }])
    .total(Total::default())
    .transporte(Transp::default())
    .pagamento(Pag::default())
    .emitir()
    .await?;

println!("cStat: {}", resp.protocolo.inf_prot.c_stat);

§Tratamento de erros

Todas as funções públicas retornam Result<T, DfeError>.

use dfe::DfeError;

match result {
    Ok(_)                         => {}
    Err(DfeError::Certificado(m)) => eprintln!("Problema no .pfx: {m}"),
    Err(DfeError::Validacao(m))   => eprintln!("Dado inválido: {m}"),
    Err(DfeError::Webservice(m))  => eprintln!("Falha SEFAZ: {m}"),
    Err(e)                        => eprintln!("Erro: {e}"),
}

Re-exports§

pub use cancelar::CancelarBuilder;
pub use consulta_situacao::ConsultaSituacaoBuilder;
pub use danfe::DanfeBuilder;
pub use escpos::EscPosBuilder;
pub use escpos::EscPosNFCeBuilder;
pub use escpos::EscPosDanfeNFeBuilder;
pub use manifestacao::ManifestacaoBuilder;
pub use substituicao::SubstituicaoBuilder;
pub use carta_correcao::CartaCorrecaoBuilder;
pub use emissao::NFeBuilder;
pub use emissao::Response as EmissaoResponse;
pub use emissao::transmitir_xml_assinado;
pub use error::DfeError;
pub use status::NFeService;
pub use status::NFeServiceResponse;
pub use xml_extractor::XmlExtractor;
pub use xml_extractor::XmlExtractorSignature;

Modules§

cancelar
carta_correcao
Carta de Correção Eletrônica (CC-e) — evento tpEvento 110110 (MOC / CCe_v1.00.xsd).
consulta_situacao
Consulta de situação da NF-e/NFC-e — consSitNFe (NfeConsultaProtocolo4).
danfe
distribuicao
emissao
error
escpos
manifestacao
Manifestação do destinatário — evento de NF-e processado pelo Ambiente Nacional.
status
substituicao
Cancelamento por substituição de NFC-e — evento tpEvento 110112 (NT 2018.004).
tipos
xml_extractor

Structs§

CertInfo
Metadados legíveis de um certificado digital A1 (PKCS#12 / .pfx).

Functions§

format_cnpj
Aplica a máscara 00.000.000/0000-00 a um CNPJ numérico ou alfanumérico.
is_xml_valid
sanitize_cnpj
Remove a formatação de um CNPJ/CPF (pontos, barra, traço, espaços), preservando letras e normalizando para maiúsculas.
validate_cnpj
Valida o dígito verificador de um CNPJ, numérico ou alfanumérico.
validate_cpf
Valida o dígito verificador de um CPF.