GithubHelp home page GithubHelp logo

pysped's People

Contributors

alanjds avatar aricaldeira avatar boondocksaints-debug avatar daniel-hartmann avatar danimaribeiro avatar douglaspinheiro avatar lfdivino avatar mackilem avatar mbcosta avatar mileo avatar mstuttgart avatar renatonlima avatar sadamo avatar thiagopena avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pysped's Issues

Atualização do PySPED para Nf-e 3.10

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.

Atualizar exemplos para NFe 3.10 / NFCe 3.10

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.

Erro no p.conhecer_operacao_evento

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!

Bom tarde

A impressão do DANFE é partir do xml, onde acho a documentação ou exemplos de uso?

Endereço de alguns serviços estão incorretos

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.

urls consulta cadastro

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..."

Handshake TLS/SSL

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

  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: nfe-homologacao.svrs.rs.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: www.sefazvirtual.fazenda.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384
    =============================
    Host Server: hom.sefazvirtual.fazenda.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384
    =============================
    Host Server: www.scan.fazenda.gov.br
    =============================
    Host Server: hom.nfe.fazenda.gov.br
    =============================
    Host Server: www.svc.fazenda.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384
    =============================
    Host Server: hom.nfe.fazenda.gov.br
  • SSL connection using TLS1.1 / ECDHE_RSA_AES_256_CBC_SHA1
    =============================
    Host Server: nfe.svrs.rs.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: nfe-homologacao.svrs.rs.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: www.nfe.fazenda.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384
    =============================
    Host Server: hom.nfe.fazenda.gov.br
  • SSL connection using TLS1.1 / ECDHE_RSA_AES_256_CBC_SHA1
    =============================
    Host Server: nfe.sefaz.am.gov.br
    =============================
    Host Server: homnfe.sefaz.am.gov.br
    =============================
    Host Server: nfe.sefaz.ba.gov.br
  • SSL connection using TLS1.0 / ECDHE_RSA_AES_256_CBC_SHA1
    =============================
    Host Server: hnfe.sefaz.ba.gov.br
  • SSL connection using TLS1.0 / ECDHE_RSA_AES_256_CBC_SHA1
    =============================
    Host Server: homologacao.sefaz.mt.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_128_CBC_SHA1
    =============================
    Host Server: nfe.fazenda.ms.gov.br
  • SSL connection using TLS1.2 / DHE_RSA_AES_256_GCM_SHA384
    =============================
    Host Server: homologacao.nfe.ms.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
    =============================
    Host Server: nfe.sefaz.pe.gov.br
  • SSL connection using TLS1.0 / RSA_AES_256_CBC_SHA1
    =============================
    Host Server: nfehomolog.sefaz.pe.gov.br
  • SSL connection using TLS1.0 / RSA_AES_256_CBC_SHA1
    =============================
    Host Server: nfe.sefazrs.rs.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: nfe-homologacao.sefazrs.rs.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: nfe.fazenda.sp.gov.br
  • SSL connection using TLS1.2 / RSA_AES_128_CBC_SHA256
    =============================
    Host Server: homologacao.nfe.fazenda.sp.gov.br
  • SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384

Falha no schema do XML

@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?

Exception Value: None (line 0)

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 = ''

Problemas nas CSTs 20 e 70

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.

Ssl handshake com Sefaz de GO e mudanças de url

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

DANFE

A geração do DANFE está funcionando? Existe alguma dependência de versão específica do geraldo?

NFeConsultaDest já está funcionando?

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

NT2013/007 Desativar Contingencia SCAN

"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=

Erro na Instalação

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 ?

Erro ao gerar o Danfe

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.

Suporte para certificados A3

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:

  1. Criar assinatura, e colocar dentro do NFe mesmo
  2. Usando um stack http/ssl que permite uso de smartcard (pkcs11)

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.

CT-e

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.

Mudança de AGPL para LGPL

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:

  • GPL: A licença "padrão". Todo código "linkado" com GPL vira GPL, com efeito viral. Pode ser usado em projetos privados sem liberar código, mas se esses projetos forem distribuídos, digamos a um cliente ou parceiro, TODO o código precisa ser "doado" junto a qualquer interessado do mundo.
  • AGPL: Igual a GPL, só que o todo código precisa ser "doado" a qualquer um que acesse o sistema, inclusive via navegador.
  • LGPL: Igual a GPL, só que sem o "efeito viral". O código LGPL fica aberto, mas o código que "usa" o LGPL não precisa ficar aberto.

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 ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.