aricaldeira / pysped Goto Github PK
View Code? Open in Web Editor NEWSistema Público de Escrituração Digital em Python
License: GNU Lesser General Public License v2.1
Sistema Público de Escrituração Digital em Python
License: GNU Lesser General Public License v2.1
O CT-e possui apenas as classes de leiaute, como utilizá-las para geração e transmissão de um CT-e? Qual a maneira mais fácil de gerar as classes a partir do xsd para a versão 2.00? Obrigado.
Olá, estou usando a biblioteca para processar as notas eletrônicas, porém na hora de gerar o Danfe, ocorre o seguinte erro.
File "/usr/local/lib/python2.7/dist-packages/pysped/nfe/processador_nfe.py", line 724, in processar_notas
self.montar_processo_lista_notas(lista_nfes, dic_protNFe, dic_procNFe)
File "/usr/local/lib/python2.7/dist-packages/pysped/nfe/processador_nfe.py", line 732, in montar_processo_lista_notas
processo = self.montar_processo_uma_nota(nfe, protnfe_recibo=protocolo)
File "/usr/local/lib/python2.7/dist-packages/pysped/nfe/processador_nfe.py", line 783, in montar_processo_uma_nota
self.danfe.gerar_danfe()
File "/usr/local/lib/python2.7/dist-packages/pysped/nfe/danfe/__init__.py", line 242, in gerar_danfe
self.danfe.generate_by(PDFGenerator, filename=danfe_pdf)
File "/usr/local/lib/python2.7/dist-packages/geraldo/base.py", line 435, in generate_by
return generator.execute()
File "/usr/local/lib/python2.7/dist-packages/geraldo/generators/pdf.py", line 100, in execute
self.render_bands()
File "/usr/local/lib/python2.7/dist-packages/geraldo/generators/base.py", line 548, in render_bands
self.start_new_page()
File "/usr/local/lib/python2.7/dist-packages/geraldo/generators/base.py", line 432, in start_new_page
generator=self,
File "/usr/local/lib/python2.7/dist-packages/geraldo/base.py", line 318, in do_on_new_page
self.on_new_page(self, page, page_number, generator)
TypeError: on_new_page() takes exactly 4 arguments (5 given)
Eu olhei no histórico tanto na biblioteca geraldo quanto aqui e não vi nenhuma mudança recente no número de argumentos das chamadas e da função.
Poderias me ajudar?
Eu também fiz uma modificação em um fork, para a cada processo retornar também os nomes dos arquivos que foram salvos. É interessante para você isso? posso fazer um pull request se você achar que sim.
Ari precisa de ajuda nas NTs?
Abraços
Não consegui obter conexão com Sefaz de Goias, me retorna este erro:
Traceback (most recent call last):
File "/opt/odoo8/parts/l10n_br/odoo-brazil-eletronic-documents/nfe/account_invoice.py", line 133, in action_invoice_send_nfe
for processo in send(company, nfe):
File "/opt/odoo8/src/PySPED/pysped/nfe/processador_nfe.py", line 788, in processar_notas
proc_consulta = self.consultar_nota(ambiente=nfe.infNFe.ide.tpAmb.valor, chave_nfe=nfe.chave)
File "/opt/odoo8/src/PySPED/pysped/nfe/processador_nfe.py", line 700, in consultar_nota
self._conectar_servico(WS_NFE_CONSULTA, envio, resposta, ambiente)
File "/opt/odoo8/src/PySPED/pysped/nfe/processador_nfe.py", line 326, in _conectar_servico
con.request(b'POST', b'/' + self._url.encode('utf-8'), self._soap_envio.xml.encode('utf-8'), self._soap_envio.header)
File "/usr/lib/python2.7/httplib.py", line 973, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 1007, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 969, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 829, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 791, in send
self.connect()
File "/opt/odoo8/src/PySPED/pysped/nfe/processador_nfe.py", line 170, in connect
ssl_version=ssl.PROTOCOL_TLSv1)
File "/usr/lib/python2.7/ssl.py", line 487, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 243, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 405, in do_handshake
self._sslobj.do_handshake()
SSLError: [Errno 1] _ssl.c:510: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate
Quando tento pelo arquivo python 005_versao_2.00_consultar_situacao_servidor.py obtenho a mesma resposta. Verifiquei o certificado utilizado e ele é válido.
Suponho que a conexão esteja sendo recusada devido à apresentação da cadeia certificadora:
http://www.nfe.go.gov.br/post/ver/182650/obrigatoriedade-de-apresentacao-de-cadeia-de-certificacao-completa
Não consegui verificar a utilização da Cadeia no PySped, e mesmo forçando o uso de certificado ou TLSv1 no arquivo processador_nfe.py linha 167.
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_SSLv3)
Foi testado em mais de uma máquina, chegando no mesmo erro. Consulta de status de serviço em outros webservices funcionam perfeitamente, mesmo sem modificar o certificado.
Em todos os casos não obtive sucesso, alguma solução?
Obs.
Alguns endereços para Nfe 3.10 irão mudar e já estão em homologação:
http://www.nfe.go.gov.br/post/ver/194555/alteracao-de-web-service
http://hom.nfe.fazenda.gov.br/portal/webServices.aspx#GO
Ola Ari,
Fiz a alteração no código para o sistema NF-e 3.10 obrigatório a partir de 30/03/2015.
Gostaria de maiores informações sobre como postar aqui as modificações que realizei.
Quando tento transmitir uma nota, recebo esse erro.
Exception Type: | XMLSyntaxError
Exception Value: | None (line 0)
lxml.py in fromstring
(linha 143) rootelement = _etree.fromstring(text, parser, base_url=base_url)
forbid_dtd = False
forbid_entities = True
parser = <lxml.etree.XMLParser object at 0x7fece098f550>
base_url = None
text = ''
A geração do DANFE está funcionando? Existe alguma dependência de versão específica do geraldo?
Seguindo o que diz o readme, digitando sudo python setup.py install
simplesmente não funciona.
Já tentei instalar o pyxmlsec
seguindo vários e vários tutoriais mas não funciona, fica sempre faltando bibliotecas, tem alguma outra forma de fazer funcionar?
Uso o python 2.7
Já tentei
pip install pyflakes
pip install geraldo
sudo apt-get install python-libxml2
sudo apt-get install libxmlsec1-dev
sudo apt-get install libxml-security-c-dev
sudo pip install https://github.com/aricaldeira/pyxmlsec/archive/master.zip
Quais realmente as dependências? não teria um requirements.txt ?
"O Sistema de Contingência do Ambiente Nacional (SCAN) de emissão da Nota Fiscal Eletrônica (NFe) será desativado no dia 30/09/2014 e substituído pelo SEFAZ Virtual de Contingência (SVC), devendo as empresas que não se adequarem aos novos processos de contingência, utilizar as outras modalidades disponíveis.
Como é de conhecimento de todos, as duas SEFAZ Virtuais de Contingência (Ambiente Nacional e SEFAZ Rio Grande do Sul) estão em plena operação.
Diante disso, as secretarias de fazenda estão realizando uma ampla divulgação desses ambientes de emissão de NFe em contingência, junto aos contribuintes que a emitem em todo o Brasil, de acordo com os Convênios 32/2012 e 39/2012 e respectiva nota técnica 2013/007, publicada desde dezembro de 2013 e que determina que o SCAN será desativado.
A desativação decorre do custo de manutenção para o funcionamento de dois sistemas similares no Ambiente Nacional (SCAN e SVC).
"
http://portal.sefaz.ma.gov.br/portalsefaz/jsp/noticia/noticia.jsf?codigo=2037
"Esta Nota Técnica tem como objetivo a apresentação do novo ambiente de autorização em
contingência do Sistema NF-e denominado “SVC - SEFAZ VIRTUAL DE CONTINGÊNCIA”,
disciplinando a forma de uso deste ambiente pelas empresas, de acordo com o disposto no
Convênio ICMS 32/2012 de 30/03/2012 e Ato COTEPE ICMS 39/2012 de 4/09/2012.
Esta alternativa de emissão da NF-e em contingência, com transmissão da NF-e para a SEFAZ
Virtual de Contingência (SVC), permite a impressão do DANFE em papel comum e não existe a
necessidade de transmissão da NF-e para SEFAZ de origem quando cessarem os problemas
técnicos que impediam o uso do ambiente de autorização normal da circunscrição do contribuinte.
Diferentemente do SCAN - Sistema de Contingência do Ambiente Nacional, esta modalidade de
contingência não obriga o uso de série específica na NF-e (série 900-999), o que facilitará o uso
dessa modalidade de contingência por parte das empresas.
A contingência do Serviço de Contingência do Ambiente Nacional (SCAN) conviverá, por um
breve período de tempo, com esta nova modalidade, sendo desativada assim que as empresas
migrarem para o uso da SVC."
http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=n35AO6XmqBA=
Olá Aristides, tudo bom?
Gostaria de saber se o WS NFeConsultaDest já está funcionando... se você tiver um tempo, teria como fazer um exemplo de utilização e colocar no diretório 'exemplos'??
Muito obrigado e parabéns pela iniciativa!
Daniel
@aricaldeira Estou usando o PySped em um projeto.
O XML gerado está com um erro no Schema, usei o validador do RS para verificar, o qual obtive o seguinte erro:
Schema XML: The element 'ICMS00' in namespace 'http://www.portalfiscal.inf.br/nfe' has invalid child element 'CSOSN' in namespace 'http://www.portalfiscal.inf.br/nfe'. List of possible elements expected: 'CST' in namespace 'http://www.portalfiscal.inf.br/nfe'.
Caminho: NFe[1]/infNFe/det[1]/imposto/ICMS/ICMS00/CSOSN
Pesquisando a respeito disso, achei em um fórum sobre PHP, que os schemas eram constantemente atualizados pelo SEFAZ, entrei na pasta nfe\leiaute\schema e vi, por exemplo, que não havia o leiaute pl_006j que era o atual de Janeiro de 2012.
Como eu posso verificar a atualização dos schemes? Como eu posso contribuir com o schema mais atual? Você já passou por esse problema?
Ola @aricaldeira parece que houve um erro de digitação em https://github.com/aricaldeira/PySPED/blob/master/pysped/nfe/leiaute/nfe_400.py#L67
Ari teria como o sr me chamar no skype? Queria uma consultoria remota para integrar um bloco de output advinda de outra linguagem;
Renan Moura
skype: live:renan.uselimp
Oi, Ari.
Fiquei algum tempo sem acompanhar os commits, e quando voltei notei que você colocou uma licença no projeto.
Nos commits vi que te influenciei a fazer isso, mas acho melhor trocar de licença.
A licença atual é a AGPL, mas eu sugiro que seja trocada para LGPL. Detalhes:
Basicamente, a LGPL é mais permissiva, a GPL é a padrão e a AGPL é a mais restrita das 3.
O problema da PySPED ficar AGPL, no meu ponto de vista, é que isso acaba com qualquer possibilidade de integrar um ERP com ele: qualquer pessoa que ACESSE a interface do sistema DEVE poder copiar o código do ERP inteiro!
Se ficar como GPL, isso não acontece, mas o sistema precisa ficar confinado a quem o desenvolveu, então uma filial não pode, por exemplo, compartilhar com outra, senão o mundo inteiro toma o "direito" de ter aquele sistema.
Eu sugiro trocar para LGPL porque permite integrar com ERP proprietário, mas mantém a obrigação de mandar de volta pra nós quaisquer alterações na PySPED.
O que você acha, @aricaldeira ?
Fiz alguns teste com os servidores de emissão NFe/NFCe e verifiquei que as versões do SSL diferem de servidor para servidor como exibido abaixo (TLS 1.0/1.1/1.2 SSLv2, etc).
Com a mudança no arquivo processador_nfe.py na linha 171 (https://github.com/aricaldeira/PySPED/blob/master/pysped/nfe/processador_nfe.py#L171) de PROTOCOLO_TLS para PROTOCOLO_TLSv1, foi possível emitir NFe para o Sefaz SP, que utiliza TLS1.2. A pergunta é:
é possível utilizando o PROTOCOLO_TLSv1, conectar em qualquer um dos servidores de SEFAZ que utilizem versões diferentes?
Host Server: nfe.svrs.rs.gov.br
Olá pessoal,
Ao tentar transmitir uma NFe de importação temos a seguinte mensagem:
:1:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element '{http://www.portalfiscal.inf.br/nfe}xNome': This element is not expected. Expected is one of ( {http://www.portalfiscal.inf.br/nfe}CNPJ, {http://www.portalfiscal.inf.br/nfe}CPF )
Porque a tag do CNPJ não esta definida como obrigatório e neste caso como o destinatário não tem CNPJ deveria ser adicionada a tag vazia
Atualmente o PySPED só suporta o CT-e versão 1.04
Olá Pessoal,
Estou criando algumas notas fiscais, e ao criar uma nota fiscal onde a linha da nota fiscal tenha a CST do ICMS 20 ou 70 gera o seguinte erro:
:1:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element '{http://www.portalfiscal.inf.br/nfe}vBC': This element is not expected. Expected is ( {http://www.portalfiscal.inf.br/nfe}pRedBC ).
Ao tentar importar no emissor o NFe gerado pelo PySPED tenha a seguinte mensagem:
Posição incorreta do elemento "vBC". Um dos seguintes elementos deve aparecer no seu lugar: "{"http://www.portalfiscal.inf.br/nfe":pRedBC}";
Isso é devido ao fato de que nos casos das CSTs 20 e 70 a tag pRedBC deve vir antes da tag vBC, eu vou fazer uma proposta de pull request em breve para resolver esse problema.
Tentei usar o PySped mas vi que os exemplos estão defasados e não funcionam mais. Alguém de boa vontade poderia dar pelo menos um exemplo de como utilizar nas novas versões da NFe 3.10 / NFCe 3.10. Obrigado.
Alguns endereços de serviço não seguem a mesma url, por exemplo:
https://sef.sefaz.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx
https://nfe.sefaz.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
Devido a forma como é montada a url, apartir de um dominio unico para todo um ambiente está gerando erro 404 para alguns serviços em alguns estados.
No manual da NFC-e também tem especificado que os endereços para receber NF-e e NFC-e podem ser diferentes, então acho que seria legal modificar este código para corrigir os erros e permitir que seja configurado qualquer endereço.
Estou pensando em implementar essa mudança, se você tiver algum ideia agradeço.
Acho que você já tinha visto esse erro :)
"# o servidor da consulta de cadastro é diferente dos demais..."
Olá Ari, tudo bom?
Será que você pode me dar uma mão? Quando eu tento executar o p.conhecer_operacao_evento, eu recebo o seguinte erro do xmlsec:
func=xmlSecTransformXsltInitialize:file=xslt.c:line=106:obj=unknown:subj=g_xslt_default_security_prefs == NULL:error=100:assertion:
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=463:obj=unknown:subj=dsigCtx->signValueNode == NULL:error=100:assertion:
func=xmlSecDSigCtxSign:file=xmldsig.c:line=303:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec library function failed:
Erro ao realizar a assinatura do arquivo; status: "0"
O que pode ser isso? Ja conferi todos os dados da requisição, a chave da NF-e está correta, o CNPJ bate com a NF-e e o certificado digital está válido (não está expirado) e a senha do certificado está correta!
Obrigado!
DANFE com duas páginas, mesmo com poucos itens
Problema na logica do if da nfe 3.1
Qual a alternativa para instalação desde componente em Windows
A impressão do DANFE é partir do xml, onde acho a documentação ou exemplos de uso?
Para poder substituir o emissor da receita, precisa ter suporte para certificados A3.
A3 não tem acesso direto para chave particular, ele fica gravado num smart-card que normalmente é protegido com uma senha/PIN.
Tem duas funcionalidades que precisam ser modificadas para suportar A3:
Para o primeiro item tem um começo aqui, ele depende do PyKCS11, que é o interface padrão para acessar smart-cards no linux.
Para o segundo tem esse arquivo que depende do nss/python-nss que é mesmo stack que o navigador firefox usa. Ele aproveita a configuração feita no browser mesmo. Que é bem simples.
Ainda tem bastante trabalho para acabar isso, mas é um bom começo.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.