dfe
DFE - Documentos Fiscais Eletrônicos Brasileiros.
Doações:
Instalação:
-> É necessário instalar o OPENSSL no seu ambiente de desenvolvimento.
-> Copie a pasta dfe que contém os arquivos de SCHEMA para o diretório do seu executável.
-> cargo add dfe
Exemplo de Uso: Emitir NFe
use emit;
use *;
let teste = emit
.await;
if let Err = teste else
Exemplo de uso: Cancelar NF-e
use nfe_cancelar;
use *;
let teste = nfe_cancelar
.await;
if let Err = teste else
Exemplo de uso: Status do Serviço
Webservice SP Produção
use service_status;
use *;
// TODO mudar o tipo para receber Estado, Ambiente, NFe ou NFCe Homologação ou Produção
let teste = service_status
.await;
if teste.is_err
let teste = teste.unwrap;
println!;
println!;
println!;
println!;
println!;
println!;
println!;
Notas importantes:
Este software está em desenvolvimento e não deve ser usado em produção a não ser que você saiba o que está fazendo.
DanfeBuilder - Geração de DANFE em PDF
O DanfeBuilder é um builder para geração de DANFE (Documento Auxiliar da Nota Fiscal Eletrônica) em PDF a partir do XML autorizado da NF-e (nfeProc).
Funcionalidades
- Gera DANFE Simplificado para impressoras térmicas 80mm, 56mm ou A4
- Suporta saída como arquivo PDF ou string base64
Tamanhos de papel suportados
| Tamanho | Modelo 55 (NF-e) | Modelo 65 (NFC-e) |
|---|---|---|
a4 |
Em breve | Em breve |
80mm |
✅ Disponível | Em breve |
56mm |
Em breve | Em breve |
Exemplo: Gerar DANFE como arquivo PDF
use DanfeBuilder;
let resultado = new
.xml
.paper_size
.as_file
.build
.await;
match resultado
Exemplo: Gerar DANFE como base64
use DanfeBuilder;
let resultado = new
.xml
.paper_size
.as_base64
.build
.await;
match resultado
Métodos
| Método | Descrição |
|---|---|
new() |
Cria uma nova instância do builder |
xml(xml: &str) |
Define o XML (caminho do arquivo .xml ou string XML) |
paper_size(size: &str) |
Define o tamanho do papel ("a4", "80mm", "56mm") |
as_file(path: &str) |
Configura saída como arquivo PDF no caminho indicado |
as_base64() |
Configura saída como string base64 |
build() |
Gera o PDF e retorna Result<String, String> |
Distribuição de DF-e
O módulo distribuicao permite consultar documentos fiscais eletrônicos de interesse do destinatário (NF-e, CT-e, etc.) via webservice da SEFAZ.
Exemplo: Consultar novos documentos (último NSU)
use Distribuicao;
let resposta = new
.cert_path
.cert_pass
.cnpj
.uf // código IBGE do estado do autor (SP = 35)
.ambiente // 1 = Produção, 2 = Homologação
.send
.await;
match resposta
Exemplo: Consultar por NSU específico
use DistribuicaoNSU;
let resposta = new
.cert_path
.cert_pass
.cnpj
.uf
.ambiente
.nsu
.send
.await;
Exemplo: Consultar por chave de acesso
use DistribuicaoChaveAcesso;
let resposta = new
.cert_path
.cert_pass
.cnpj
.uf
.ambiente
.chave_acesso
.send
.await;
Métodos comuns (Distribuição)
| Método | Descrição |
|---|---|
new() |
Cria uma nova instância do builder |
cert_path(path: &str) |
Caminho do certificado .pfx |
cert_pass(pass: &str) |
Senha do certificado |
cnpj(cnpj: &str) |
CNPJ do destinatário |
uf(uf: u8) |
Código IBGE da UF do autor |
ambiente(amb: u8) |
1 = Produção, 2 = Homologação |
nsu(nsu: &str) |
NSU específico (apenas DistribuicaoNSU) |
chave_acesso(chave: &str) |
Chave de acesso (apenas DistribuicaoChaveAcesso) |
check_flag() |
Ativa verificação de flag de pendência |
send() |
Executa a consulta e retorna Result<DistribuicaoResposta, String> |
Manifestação do Destinatário
O módulo distribuicao também expõe os builders de manifestação, que permitem registrar eventos de ciência, confirmação, desconhecimento ou operação não realizada para uma NF-e.
Exemplo: Ciência da Operação
use CienciaOperacao;
let resposta = new
.cert_path
.cert_pass
.cnpj
.ambiente
.chave_acesso
.send
.await;
match resposta
Exemplo: Confirmação da Operação
use ConfirmacaoOperacao;
let resposta = new
.cert_path
.cert_pass
.cnpj
.ambiente
.chave_acesso
.send
.await;
Exemplo: Desconhecimento da Operação
use DesconhecimentoOperacao;
let resposta = new
.cert_path
.cert_pass
.cnpj
.ambiente
.chave_acesso
.send
.await;
Exemplo: Operação Não Realizada
use OperacaoNaoRealizada;
let resposta = new
.cert_path
.cert_pass
.cnpj
.ambiente
.chave_acesso
.justificativa
.send
.await;
Métodos comuns (Manifestação)
| Método | Descrição |
|---|---|
new() |
Cria uma nova instância do builder |
cert_path(path: &str) |
Caminho do certificado .pfx |
cert_pass(pass: &str) |
Senha do certificado |
cnpj(cnpj: &str) |
CNPJ do destinatário |
ambiente(amb: u8) |
1 = Produção, 2 = Homologação |
chave_acesso(chave: &str) |
Chave de acesso da NF-e |
justificativa(just: &str) |
Justificativa (apenas OperacaoNaoRealizada, mín. 15 chars) |
send() |
Executa o evento e retorna Result<ManifestacaoResposta, String> |