Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atualizado com novos schemas XSD #2

Open
wants to merge 58 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
6b634b9
Geraldo mudou API na versão atual (0.4): atualizando
alanjds Dec 11, 2010
ecc7051
Senhas dos certificados movidas para fora dos exemplos
alanjds Dec 11, 2010
e10e976
Senhas dos certificados movidas para fora dos exemplos
alanjds Dec 11, 2010
cf8d2ee
Exemplos parcialmente arrumados
alanjds Dec 11, 2010
5ed0938
Exemplos parcialmente arrumados
alanjds Dec 11, 2010
2990651
Ambiente de integração contínua configurado
alanjds Dec 14, 2010
3d2300d
Ambiente de integração contínua configurado
alanjds Dec 14, 2010
0151b68
Nosyd com problemas testando via GenericBuilder
alanjds Dec 15, 2010
35269da
Nosyd com problemas testando via GenericBuilder
alanjds Dec 15, 2010
9f25f82
Refatorando com soluções do PyNFe
alanjds Dec 15, 2010
bf2fe48
Refatorando com soluções do PyNFe
alanjds Dec 15, 2010
198fc29
Assinando via PEM e não mais PKCS12
alanjds Dec 16, 2010
66b7e87
Assinando via PEM e não mais PKCS12
alanjds Dec 16, 2010
d211e38
README atualizado com instruções para rodar os testes
alanjds Dec 16, 2010
7a992fd
README atualizado com instruções para rodar os testes
alanjds Dec 16, 2010
d2475fc
Exemplos podem ser depurados com Winpdb
alanjds Dec 16, 2010
4a45dee
Exemplos podem ser depurados com Winpdb
alanjds Dec 16, 2010
29f4e0d
Assinando NFe 1.10 OK
alanjds Dec 16, 2010
e5b9bfc
Assinando NFe 1.10 OK
alanjds Dec 16, 2010
b1652fc
FIX: parâmetro incorreto nos exemplos 003 e 007 (cancelamento)
alanjds Dec 16, 2010
4ee4283
FIX: parâmetro incorreto nos exemplos 003 e 007 (cancelamento)
alanjds Dec 16, 2010
6a6f821
Chaves e certificados sendo regenerados sob demanda
alanjds Dec 16, 2010
be1707b
Chaves e certificados sendo regenerados sob demanda
alanjds Dec 16, 2010
79a9943
Exemplos 004 e 008 arrumados. Falta apenas o 006
alanjds Dec 17, 2010
c7d9f2a
Exemplos 004 e 008 arrumados. Falta apenas o 006
alanjds Dec 17, 2010
558bbef
Documentação do Geraldo indica definir método do_on_new_page e não on…
alanjds Dec 22, 2010
a24c157
Documentação do Geraldo indica definir método do_on_new_page e não on…
alanjds Dec 22, 2010
44e2d9e
Refeito merge do schemas .xsd
alanjds Dec 23, 2010
98defe0
FIX: linha duplicada -> syntax error
alanjds Dec 23, 2010
ee773ae
Revertido ConexaoHTTPS para HTTPConnection
alanjds Dec 23, 2010
aa2f7bf
Geraldo mudou API na versão atual (0.4): atualizando
alanjds Dec 11, 2010
b9f59d7
REBASE realizado com código novo do Ari Caldeira
alanjds Dec 23, 2010
24478a3
Mesclando para subir no Github novamente
alanjds Dec 23, 2010
cd76295
Certificado com Nome e CNPJ do proprietário disponível diretamente
alanjds Dec 28, 2010
3786dbf
CNPJ do Certificado sendo regenerado automaticamente
alanjds Dec 28, 2010
8003b72
Exemplo 002 atualizado com mais dados reais
alanjds Dec 28, 2010
6e5cc79
lxml não validou com o "produto" antigo
alanjds Jan 22, 2011
2f38311
Exibe XML e mensagem de erro caso tenha problemas para validar schemas
alanjds Mar 12, 2011
7468324
Adicionadas tableas do IBGE para facilitar mapeamento cidade->codigo
alanjds Mar 20, 2011
c383fc3
Arrumado erro silencioso de typo nos exemplos
alanjds Mar 20, 2011
2361f03
Movidos codigos das cidades para webservices_flags
alanjds Mar 20, 2011
d012eaf
Arrumado teste 006 !! (NFe 2.00)
alanjds Apr 1, 2011
5706809
Modificado exemplo 006 (Envio 2.00) para empresa do Simples Nacional
alanjds Apr 1, 2011
5a13473
Desfeito teste de criacão de DANFE mesmo com erros
alanjds Apr 1, 2011
b944c89
Dados adicionais "padrão" para empresas do Simples adicionados ao exe…
alanjds Apr 2, 2011
6505202
Mudando para schema 006g
alanjds Apr 3, 2011
da7a0c5
[FIX] Salvando ENVIO de consulta de status por engano, e não RESPOSTA
alanjds Apr 3, 2011
eb8aff0
Aguardando um pouco mais que o tMed antes de consultar o recibo
alanjds Apr 5, 2011
78765fe
Tratamento para cidades com acentuação incorreta
alanjds Apr 5, 2011
fa82a2a
Esqueci um debug perdido
alanjds Apr 5, 2011
f9492bf
[FIX] (via Lucas Faiska) tag hSaiEnt não estava sendo utilizada
Apr 7, 2011
10025de
[Workarround] Impossível gerar a DANFE quando demora muito para proce…
alanjds Apr 9, 2011
fae31f2
Subindo exception (um pouco) menos genérica se o schema não valida
alanjds Apr 14, 2011
83a9aae
[Workaround] Algo mudou e nao consigo mais usar acentos
alanjds Jun 4, 2011
9254c4f
Exemplo 006 com 2 itens, a pedido de Tiago Tiede
alanjds Jun 4, 2011
9c4e7cc
Schema modificado para permitir envios ao servidor de Homologação
Jun 4, 2011
0ccb05e
Merge do fix de Tiago Tiede: pode enviar para Homologacao
alanjds Jun 4, 2011
8d80ea9
Tratamento do ambiente de Homologação criado dentro do processador_nfe
alanjds Jun 5, 2011
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.pyc
.DS_Store
.*.swp
.*.orig
pysped/exemplos/certificado_caminho.txt
pysped/exemplos/certificado_senha.txt
pysped/exemplos/*.pfx
10 changes: 10 additions & 0 deletions .hgignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
syntax: glob

*.pyc
.DS_Store
*.*.swp
*.*.orig
*.*~*
pysped/exemplos/certificado_caminho.txt
pysped/exemplos/certificado_senha.txt
pysped/exemplos/*.pfx
45 changes: 45 additions & 0 deletions README
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Visão Geral
-----------

Biblioteca de interface com o webservice de Nota Fiscal Eletronica,
da SEFAZ, oficializada pelo Ministerio da Fazendo do Governo do
Brasil.

A NF-e visa substituir as notas fiscais séries 1 e 1A

Dependências
------------

- Geraldo Reports (http://geraldo.sourceforge.net/)
- para a geração da DANFE
- SUDS (https://fedorahosted.org/suds/)
- para consumir o webservice SOAP/WSDL
- lxml
- biblioteca de leitura e gravação de arquivos XML, de alta
performance e fácil de implementar.
- libxml2
- outra biblioteca XML, mais rápida, escrita em C
- openssl
- abertura e conversão dos certificados
- XmlSEC
- assinatura e validação do XML
- Pyxmlsec
- adaptador Python para a XmlSEC

Executando os exemplos
----------------------

Para executar os exemplos você precisará

1. De um certificado válido no ambiente do SEFAZ, no formato .pfx
2. De conexão com a Internet, para conversar com o SEFAZ
3. Das dependências instaladas

Na pasta PySPED/pysped/exemplos, coloque o seguinte:

* arquivo "certificado_caminho.txt", com o caminho no sistema até o certificado.pfx
* arquivo "certificado_senha.txt", com a senha para o certificado.pfx

Obs: caso esteja em um sistema *nix, nesta pasta será criado automaticamente um link simbólico para a pasta ../ (a pasta "pysped"). Se estiver em um Windows ou se este link não existir, você pode cria-lo manualmente ou copiar a pasta "pysped" para dentro da pasta "exemplos"

Agora você já pode executar os exemplos
2 changes: 2 additions & 0 deletions pysped/exemplos/.nosy
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[nosy]

16 changes: 11 additions & 5 deletions pysped/exemplos/001_versao_1.10_consultar_situacao_servidor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

from pysped.nfe import ProcessadorNFe
from pysped.nfe.webservices_flags import *
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
p = ProcessadorNFe()
p.versao = u'1.10'
p.estado = u'SP'
p.certificado.arquivo = u'certificado.pfx'
p.certificado.senha = u'senha'
p.salva_arquivos = True
# arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
# arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
p.certificado.senha = open(FILE_DIR+'/certificado_senha.txt').read().strip()
p.salvar_arquivos = True
p.contingencia_SCAN = False
p.caminho = u''

Expand All @@ -25,7 +29,9 @@
#
processo = p.consultar_servico()

print processo[WS_NFE_SITUACAO][u'envio'].xml
print processo.envio.xml
print
print processo[WS_NFE_SITUACAO][u'resposta'].xml
print processo.resposta.xml
print
print processo.resposta.reason

37 changes: 19 additions & 18 deletions pysped/exemplos/002_versao_1.10_gerar_enviar_nota.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,19 @@
from pysped.nfe.webservices_flags import *
from pysped.nfe.manual_300 import *
from datetime import datetime
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
p = ProcessadorNFe()
p.versao = u'1.10'
p.estado = u'SP'
p.certificado.arquivo = u'certificado.pfx'
p.certificado.senha = u'senha'
p.salva_arquivos = True
# arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
# arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
p.certificado.senha = open(FILE_DIR+'/certificado_senha.txt').read().strip()
p.salvar_arquivos = True
p.contingencia_SCAN = False
p.caminho = u''

Expand All @@ -28,22 +32,22 @@
n.infNFe.ide.natOp.valor = u'Venda de produto do estabelecimento'
n.infNFe.ide.indPag.valor = 2
n.infNFe.ide.serie.valor = 101
n.infNFe.ide.nNF.valor = 27
n.infNFe.ide.dEmi.valor = datetime(2010, 4, 12)
n.infNFe.ide.dSaiEnt.valor = datetime(2010, 4, 12)
n.infNFe.ide.nNF.valor = 29
n.infNFe.ide.dEmi.valor = datetime(2010, 12, 12)
n.infNFe.ide.dSaiEnt.valor = datetime(2010, 12, 12)
n.infNFe.ide.cMunFG.valor = 3513801
n.infNFe.ide.tpImp.valor = 1
n.infNFe.ide.tpEmis.valor = 1
n.infNFe.ide.indPag.valor = 1
n.infNFe.ide.finNFe.valor = 1
n.infNFe.ide.procEmi.valor = 0
n.infNFe.ide.verProc.valor = u'TaugaRS Haveno 1.0'
n.infNFe.ide.verProc.valor = u'PySPED NFe (github)'

#
# Emitente
#
n.infNFe.emit.CNPJ.valor = u'11111111111111'
n.infNFe.emit.xNome.valor = u'Razão Social Ltda. EPP'
n.infNFe.emit.CNPJ.valor = p.certificado.proprietario_cnpj #u'11111111111111'
n.infNFe.emit.xNome.valor = p.certificado.proprietario_nome #u'Razão Social Ltda. EPP'
n.infNFe.emit.xFant.valor = u'Nome Fantasia'
n.infNFe.emit.enderEmit.xLgr.valor = u'R. Ibiúna'
n.infNFe.emit.enderEmit.nro.valor = u'729'
Expand All @@ -56,12 +60,12 @@
#n.infNFe.emit.enderEmit.cPais.valor = u'1058'
#n.infNFe.emit.enderEmit.xPais.valor = u'Brasil'
n.infNFe.emit.enderEmit.fone.valor = u'1534110602'
n.infNFe.emit.IE.valor = u'111111111111'
n.infNFe.emit.IE.valor = '115944836112'

#
# Destinatário
#
n.infNFe.dest.CNPJ.valor = u'11111111111111'
n.infNFe.dest.CNPJ.valor = '01225741000133'
n.infNFe.dest.xNome.valor = u'Razão Social Ltda. EPP'
n.infNFe.dest.enderDest.xLgr.valor = u'R. Ibiúna'
n.infNFe.dest.enderDest.nro.valor = u'729'
Expand All @@ -74,7 +78,7 @@
#n.infNFe.dest.enderDest.cPais.valor = u'1058'
#n.infNFe.dest.enderDest.xPais.valor = u'Brasil'
n.infNFe.dest.enderDest.fone.valor = u'1534110602'
n.infNFe.dest.IE.valor = u'111111111111'
n.infNFe.dest.IE.valor = u'114691048114'

#
# Detalhe
Expand Down Expand Up @@ -164,13 +168,10 @@
# }
#
for processo in p.processar_notas([n]):
chave_processo = processo.keys()[0]
print
print
print processo.envio.xml
print
print chave_processo
print processo.resposta.xml
print
print processo[chave_processo][u'envio'].xml
print
print processo[chave_processo][u'resposta'].xml

print processo.resposta.reason
18 changes: 12 additions & 6 deletions pysped/exemplos/003_versao_1.10_cancelar_nota.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

from pysped.nfe import ProcessadorNFe
from pysped.nfe.webservices_flags import *
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
p = ProcessadorNFe()
p.versao = u'1.10'
p.estado = u'SP'
p.certificado.arquivo = u'certificado.pfx'
p.certificado.senha = u'senha'
p.salva_arquivos = True
# arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
# arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
p.certificado.senha = open(FILE_DIR+'/certificado_senha.txt').read().strip()
p.salvar_arquivos = True
p.contingencia_SCAN = False
p.caminho = u''

Expand All @@ -24,10 +28,12 @@
# }
#
processo = p.cancelar_nota(chave_nfe=u'35100411111111111111551010000000271123456789',
protocolo=u'135100018751878',
numero_protocolo=u'135100018751878',
justificativa=u'Somente um teste de cancelamento')

print processo[WS_NFE_CANCELAMENTO][u'envio'].xml
print processo.envio.xml
print
print processo[WS_NFE_CANCELAMENTO][u'resposta'].xml
print processo.resposta.xml
print
print processo.resposta.reason

29 changes: 20 additions & 9 deletions pysped/exemplos/004_versao_1.10_inutilizar_notas.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

from pysped.nfe import ProcessadorNFe
from pysped.nfe.webservices_flags import *
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
p = ProcessadorNFe()
p.versao = u'1.10'
p.estado = u'SP'
p.certificado.arquivo = u'certificado.pfx'
p.certificado.senha = u'senha'
p.salva_arquivos = True
# arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
# arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
p.certificado.senha = open(FILE_DIR+'/certificado_senha.txt').read().strip()
p.salvar_arquivos = True
p.contingencia_SCAN = False
p.caminho = u''

Expand All @@ -27,10 +31,13 @@
serie=u'101',
numero_inicial=18,
justificativa=u'Testando a inutilização de NF-e')

print processo[WS_NFE_INUTILIZACAO][u'envio'].xml

print processo.envio.xml
print
print processo.resposta.xml
print
print processo[WS_NFE_INUTILIZACAO][u'resposta'].xml
print "NOTA UNICA"
print processo.resposta.reason

#
# Inutilizar uma faixa de numeração
Expand All @@ -40,7 +47,11 @@
numero_inicial=18,
numero_final=28,
justificativa=u'Testando a inutilização de NF-e')

print processo[WS_NFE_INUTILIZACAO][u'envio'].xml

print processo.envio.xml
print
print processo.resposta.xml
print
print processo[WS_NFE_INUTILIZACAO][u'resposta'].xml
print "FAIXA DE NOTAS"
print processo.resposta.reason

18 changes: 12 additions & 6 deletions pysped/exemplos/005_versao_2.00_consultar_situacao_servidor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

from pysped.nfe import ProcessadorNFe
from pysped.nfe.webservices_flags import *
from os.path import abspath, dirname

FILE_DIR = abspath(dirname(__file__))

if __name__ == '__main__':
p = ProcessadorNFe()
p.versao = u'2.00'
p.estado = u'SP'
p.certificado.arquivo = u'certificado.pfx'
p.certificado.senha = u'senha'
p.salva_arquivos = True
# arquivo 'certificado_caminho.txt' deve conter o caminho para o 'certificado.pfx'
p.certificado.arquivo = open(FILE_DIR+'/certificado_caminho.txt').read().strip()
# arquivo 'certificado_senha.txt' deve conter a senha para o 'certificado.pfx'
p.certificado.senha = open(FILE_DIR+'/certificado_senha.txt').read().strip()
p.salvar_arquivos = True
p.contingencia_SCAN = False
p.caminho = u''

Expand All @@ -25,7 +29,9 @@
#
processo = p.consultar_servico()

print processo[WS_NFE_SITUACAO][u'envio'].xml
print processo.envio.xml
print
print processo[WS_NFE_SITUACAO][u'resposta'].xml

print processo.resposta.xml
print
print processo.resposta.reason

Loading