-
Notifications
You must be signed in to change notification settings - Fork 215
Description
Boa noite pessoal alguem poderia me ajudar com esse erro ? from pynfe.processamento.comunicacao import ComunicacaoSefaz
from pynfe.entidades.cliente import Cliente
from pynfe.entidades.emitente import Emitente
from pynfe.entidades.notafiscal import NotaFiscal
from pynfe.entidades.fonte_dados import _fonte_dados
from pynfe.processamento.serializacao import SerializacaoXML
from pynfe.processamento.assinatura import AssinaturaA1
from pynfe.utils.flags import CODIGO_BRASIL
from decimal import Decimal
import datetime
certificado = "certificado_digital_16_07_2024.pfx"
senha = '124816tS@'
uf = 'ba'
homologacao = True
emitente
emitente = Emitente(
razao_social='TECH SILVA TECNOLOGIA LTDA',
nome_fantasia='TECH SILVA SEGURANCA ELETRONICA',
cnpj='38158054000152', # cnpj apenas números
codigo_de_regime_tributario='1', # 1 para simples nacional ou 3 para normal
inscricao_estadual='170288972', # numero de IE da empresa
inscricao_municipal=None,
cnae_fiscal='4321500', # cnae apenas números
endereco_logradouro='10AV RUA OTAVIO TOSTA',
endereco_numero='288',
endereco_bairro='MANTEIGA',
endereco_municipio='MURITIBA',
endereco_uf='BA',
endereco_cep='44340000',
endereco_pais=CODIGO_BRASIL
)
cliente
cliente = Cliente(
razao_social='Alexandre Ferreira Cardoso',
tipo_documento='CPF', #CPF ou CNPJ
email='xande09010@email.com',
numero_documento='07308099512', # numero do cpf ou cnpj
indicador_ie=9, # 9=Não contribuinte
endereco_logradouro='Rua Laurencio Moreira',
endereco_numero='01',
endereco_complemento='casa',
endereco_bairro='centro',
endereco_municipio='Governador Mangabeira',
endereco_uf='BA',
endereco_cep='44350000',
endereco_pais=CODIGO_BRASIL,
endereco_telefone='75983635533',
)
Nota Fiscal
nota_fiscal = NotaFiscal(
emitente=emitente,
cliente=cliente,
uf=uf.upper(),
natureza_operacao='VENDA', # venda, compra, transferência, devolução, etc
forma_pagamento=0, # 0=Pagamento à vista; 1=Pagamento a prazo; 2=Outros.
tipo_pagamento=1,
modelo=55, # 55=NF-e; 65=NFC-e
serie='1',
numero_nf='111', # Número do Documento Fiscal.
data_emissao=datetime.datetime.now(),
data_saida_entrada=datetime.datetime.now(),
tipo_documento=1, # 0=entrada; 1=saida
municipio='2911600', # Código IBGE do Município
tipo_impressao_danfe=1, # 0=Sem geração de DANFE;1=DANFE normal, Retrato;2=DANFE normal Paisagem;3=DANFE Simplificado;4=DANFE NFC-e;
forma_emissao='1', # 1=Emissão normal (não em contingência);
cliente_final=1, # 0=Normal;1=Consumidor final;
indicador_destino=1,
indicador_presencial=1,
finalidade_emissao='1', # 1=NF-e normal;2=NF-e complementar;3=NF-e de ajuste;4=Devolução de mercadoria.
processo_emissao='0', #0=Emissão de NF-e com aplicativo do contribuinte;
transporte_modalidade_frete=1,
informacoes_adicionais_interesse_fisco='Mensagem complementar',
totais_tributos_aproximado=Decimal('21.06'),
)
Produto
nota_fiscal.adicionar_produto_servico(
codigo='1', # id do produto
descricao='Notebook Asus',
ncm='84713012',
#cest='0100100', # NT2015/003
cfop='5102',
unidade_comercial='UN',
ean='SEM GTIN',
ean_tributavel='SEM GTIN',
quantidade_comercial=Decimal('1'), # 12 unidades
valor_unitario_comercial=Decimal('500'), # preço unitário
valor_total_bruto=Decimal('500'), # preço total
unidade_tributavel='UN',
quantidade_tributavel=Decimal('1'),
valor_unitario_tributavel=Decimal('1'),
ind_total=1,
# numero_pedido='12345', # xPed
# numero_item='123456', # nItemPed
icms_modalidade='102',
icms_origem=0,
icms_csosn='400',
pis_modalidade='07',
cofins_modalidade='07',
valor_tributos_aprox='21.06'
)
responsável técnico
nota_fiscal.adicionar_responsavel_tecnico(
cnpj='99999999000199',
contato='TadaSoftware',
email='tadasoftware@gmail.com',
fone='11912341234'
)
exemplo de nota fiscal referenciada (devolução/garantia)
nfRef = NotaFiscalReferenciada(
chave_acesso='99999999999999999999999999999999999999999999')
nota_fiscal.notas_fiscais_referenciadas.append(nfRef)
exemplo de grupo de pessoas autorizadas a baixar xml
autxml_lista = ['99999999000199', '00000000040']
for index, item in enumerate(autxml_lista, 1):
nota_fiscal.adicionar_autorizados_baixar_xml(CPFCNPJ=item)
serialização
serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
nfe = serializador.exportar()
assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(nfe)
envio
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
envio = con.autorizacao(modelo='nfe', nota_fiscal=xml)
em caso de sucesso o retorno será o xml autorizado
Ps: no modo sincrono, o retorno será o xml completo ( = + )
no modo async é preciso montar o nfeProc, juntando o retorno com a NFe
from lxml import etree
if envio[0] == 0:
print('Sucesso!')
print(etree.tostring(envio[1], encoding="unicode").replace('\n','').replace('ns0:','').replace(':ns0', ''))
em caso de erro o retorno será o xml de resposta da SEFAZ + NF-e enviada
else:
print('Erro:')
print(envio[1].text) # resposta
print('Nota:')
print(etree.tostring(envio[2], encoding="unicode")) # nfe
PS D:\nfe_teste> & C:/Users/User/AppData/Local/Programs/Python/Python312/python.exe d:/nfe_teste/app_nfe.py
Traceback (most recent call last):
File "d:\nfe_teste\app_nfe.py", line 131, in
xml = a1.assinar(nfe)
^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\pynfe\processamento\assinatura.py", line 51, in assinar
signed_root = signer.sign(
^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\signxml\signer.py", line 202, in sign
raise InvalidInput("No PEM-encoded certificates found in string cert input data")
signxml.exceptions.InvalidInput: No PEM-encoded certificates found in string cert input data
PS D:\nfe_teste>