Skip to content
Leonardo Gregianin edited this page Jan 30, 2022 · 2 revisions

Exemplo de como enviar eventos do MDF-e.

from pynfe.processamento import ComunicacaoMDFe
from pynfe.processamento.serializacao import SerializacaoXML
from pynfe.processamento.assinatura import AssinaturaA1
from pynfe.entidades.evento import (
    EventoCancelarNota,
    EventoEncerramento,
    EventoInclusaoCondutor,
    EventoInclusaoDFe,
    EventoInclusaoPagamento
)
from pynfe.entidades.fonte_dados import _fonte_dados
import datetime
from decimal import Decimal


# configurações gerais
certificado = ""
senha = ""
uf = 'PR'
homologacao = True
CPFCNPJ = ""
chave = ""
protocolo = ""

# instancia da classe
mdfe = ComunicacaoMDFe(uf, certificado, senha, homologacao)

Evento de Cancelamento

cancelar = EventoCancelarNota(
    cnpj=CPFCNPJ,  # cpf/cnpj do emissor
    chave=chave,  # chave de acesso do MDFe
    data_emissao=datetime.datetime.now(),
    uf=uf,
    protocolo=protocolo,  # número do protocolo do envio do MDFe
    justificativa='Erro na inclusao das informacoes do manifesto'
)

# serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
mdfe_cancelamento = serializador.serializar_evento_mdfe(cancelar)

# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(mdfe_cancelamento)

envio = mdfe.evento(evento=xml)
print(envio.text)

Evento de Encerramento de viagem

encerrar = EventoEncerramento(
    cnpj=CPFCNPJ,  # cpf/cnpj do emissor
    chave=chave,  # chave de acesso do MDFe
    data_emissao=datetime.datetime.now(),
    uf=uf,
    protocolo=protocolo,  # número do protocolo do envio do MDFe
    dtenc=datetime.datetime.now(),
    cuf='51',
    cmun='5103403'
)

# serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
mdfe_encerramento = serializador.serializar_evento_mdfe(encerrar)

# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(mdfe_encerramento)

# transmissão
envio = mdfe.evento(evento=xml)
print(envio.text)

Evento de Inclusão de Condutor

inclusao_condutor = EventoInclusaoCondutor(
    cnpj=CPFCNPJ,  # cpf/cnpj do emissor
    chave=chave,  # chave de acesso do MDFe
    data_emissao=datetime.datetime.now(),
    uf=uf,
    nome_motorista='Teste',
    cpf_motorista='00087355150'
)

# serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
mdfe_inclusao_condutor = serializador.serializar_evento_mdfe(inclusao_condutor)

# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(mdfe_inclusao_condutor)

# transmissão
envio = mdfe.evento(evento=xml)
print(envio.text)

Evento de Inclusão de DF-e

inclusao_dfe = EventoInclusaoDFe(
    cnpj=CPFCNPJ,  # cpf/cnpj do emissor
    chave=chave,  # chave de acesso do MDFe
    data_emissao=datetime.datetime.now(),
    uf=uf,
    protocolo='',
    cmun_carrega='5105101',
    xmun_carrega='JUARA',
    cmun_descarga='5105101',
    xmun_descarga='JUARA',
    chave_nfe=''
)

# serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
mdfe_inclusao_dfe = serializador.serializar_evento_mdfe(inclusao_dfe)

# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(mdfe_inclusao_dfe)

# transmissão
envio = mdfe.evento(evento=xml)
print(envio.text)

Evento de Pagamento DF-e

pagamento_dfe = EventoInclusaoPagamento(
    cnpj=CPFCNPJ,  # cpf/cnpj do emissor
    chave=chave,  # chave de acesso do MDFe
    data_emissao=datetime.datetime.now(),
    uf=uf,
    protocolo='',
    qtd_viagens='1',
    nro_viagens='1',
    nome_contratante='Teste',
    cpfcnpj_contratante='',
    tpComp='01',
    vComp=Decimal('100.00'),
    vContrato=Decimal('100.00'),
    indPag='1',
    nParcela='1',
    dVenc=datetime.datetime.now(),
    vParcela=Decimal('100.00'),
    CNPJIPEF='',
    codBanco='001',
    codAgencia='00214'
)

# serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
mdfe_pagamento_dfe = serializador.serializar_evento_mdfe(pagamento_dfe)

# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(mdfe_pagamento_dfe)

# transmissão
envio = mdfe.evento(evento=xml)
print(envio.text)

Voltar