Browse Source

Ajeitando métodos da nf-e

tags/0.1.5
Danimar Ribeiro 11 years ago
parent
commit
da1b52f680
  1. 29
      pytrustnfe/ChaveNFe.py
  2. 9
      pytrustnfe/servicos/Comunicacao.py
  3. 42
      pytrustnfe/servicos/NFeAutorizacao.py
  4. 15
      pytrustnfe/servicos/NFeDistribuicaoDFe.py
  5. 13
      pytrustnfe/servicos/NFeRetAutorizacao.py
  6. 7
      pytrustnfe/servicos/NfeConsultaCadastro.py
  7. 15
      pytrustnfe/servicos/NfeConsultaProtocolo.py
  8. 13
      pytrustnfe/servicos/NfeInutilizacao.py
  9. 21
      pytrustnfe/servicos/NfeStatusServico.py
  10. 15
      pytrustnfe/servicos/RecepcaoEvento.py
  11. 5
      pytrustnfe/servicos/Validacao.py
  12. 26
      pytrustnfe/utils.py

29
pytrustnfe/ChaveNFe.py

@ -0,0 +1,29 @@
# coding=utf-8
'''
Created on 23/06/2015
@author: danimar
'''
class ChaveNFe(object):
def __init__(self, valores):
self.cnpj = ''
self.estado = ''
self.emissao = ''
self.modelo = ''
self.serie = ''
self.numero = ''
self.tipo = ''
self.codigo = ''
def validar(self):
assert self.cnpj != '', 'CNPJ necessário para criar chave NF-e'
assert self.estado != '', 'Estado necessário para criar chave NF-e'
assert self.emissao != '', 'Emissão necessário para criar chave NF-e'
assert self.modelo != '', 'Modelo necessário para criar chave NF-e'
assert self.serie != '', 'Série necessária para criar chave NF-e'
assert self.numero != '', 'Número necessário para criar chave NF-e'
assert self.tipo != '', 'Tipo necessário para criar chave NF-e'
assert self.codigo != '', 'Código necessário para criar chave NF-e'

9
pytrustnfe/servicos/Comunicacao.py

@ -69,6 +69,15 @@ class Comunicacao(object):
assert self.metodo != '', "Método não configurado"
assert self.tag_retorno != '', "Tag de retorno não configurado"
def _validar_xml(self, obj):
xml = None
if isinstance(obj, DynamicXml):
xml = obj.render()
if isinstance(obj, basestring):
xml = obj
assert xml is not None, "Objeto deve ser do tipo DynamicXml ou string"
return xml
def _executar_consulta(self, xmlEnviar):
self._validar_dados()
chave, certificado = self._preparar_temp_pem()

42
pytrustnfe/servicos/NFeAutorizacao.py

@ -6,17 +6,43 @@ Created on 21/06/2015
'''
from pytrustnfe.servicos.Comunicacao import Comunicacao
from pytrustnfe.xml import DynamicXml
from pytrustnfe import utils
class NfeAutorizacao(Comunicacao):
def autorizar_nfe(self, nfe, sincrono=True):
xml = None
if isinstance(nfe, DynamicXml):
xml = nfe.render()
if isinstance(nfe, basestring):
xml = nfe
assert xml is not None, "Objeto nfe deve ser do tipo DynamicXml ou string"
def __init__(self, certificado, senha):
Comunicacao.__init__(self, certificado, senha)
def autorizar_nfe(self, nfe):
xml = self._validar_xml(nfe)
self.metodo = 'NFeAutorizacao'
self.tag_retorno = 'retEnviNFe'
self.web_service = 'ws/NfeAutorizacao/NFeAutorizacao.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)
def autorizar_nfe_e_recibo(self, nfe):
xml = self._validar_xml(nfe)
self.metodo = 'NFeAutorizacao'
self.tag_retorno = 'retEnviNFe'
self.web_service = 'ws/NfeAutorizacao/NFeAutorizacao.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
xml_recibo, recibo = self._executar_consulta(xml)
consulta_recibo = utils.gerar_consulta_recibo(recibo)
xml = self._validar_xml(nfe)
self.metodo = 'NFeRetAutorizacao'
self.tag_retorno = 'retConsReciNFe'
self.web_service = 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)
return self._executar_consulta(xml)

15
pytrustnfe/servicos/NFeDistribuicaoDFe.py

@ -11,12 +11,11 @@ from pytrustnfe.xml import DynamicXml
class NfeDistribuicaoDFe(Comunicacao):
def distribuicao(self, dfe):
xml = None
if isinstance(dfe, DynamicXml):
xml = dfe.render()
if isinstance(dfe, basestring):
xml = dfe
assert xml is not None, "Objeto recibo deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(recibo)
self.metodo = 'NFeDistribuicaoDFe'
self.tag_retorno = 'retDistDFeInt'
self.web_service = 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx'
self.url = 'www1.nfe.fazenda.gov.br'
return self._executar_consulta(xml)

13
pytrustnfe/servicos/NFeRetAutorizacao.py

@ -11,12 +11,11 @@ from pytrustnfe.xml import DynamicXml
class NfeRetAutorizacao(Comunicacao):
def consulta_autorizacao(self, recibo):
xml = None
if isinstance(recibo, DynamicXml):
xml = recibo.render()
if isinstance(recibo, basestring):
xml = recibo
assert xml is not None, "Objeto recibo deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(recibo)
self.metodo = 'NFeRetAutorizacao'
self.tag_retorno = 'retConsReciNFe'
self.web_service = 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)

7
pytrustnfe/servicos/NfeConsultaCadastro.py

@ -17,12 +17,7 @@ class NfeConsultaCadastro(Comunicacao):
def consultar_cadastro(self, cadastro, estado):
xml = None
if isinstance(cadastro, DynamicXml):
xml = cadastro.render()
if isinstance(cadastro, basestring):
xml = cadastro
assert xml is not None, "Objeto cadastro deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(cadastro)
self.web_service = '/ws/cadconsultacadastro/cadconsultacadastro2.asmx'
self.url = 'cad.svrs.rs.gov.br'

15
pytrustnfe/servicos/NfeConsultaProtocolo.py

@ -11,12 +11,11 @@ from pytrustnfe.xml import DynamicXml
class NfeConsultaProtocolo(Comunicacao):
def consultar_protocolo(self, recibo):
xml = None
if isinstance(recibo, DynamicXml):
xml = recibo.render()
if isinstance(recibo, basestring):
xml = recibo
assert xml is not None, "Objeto recibo deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(recibo)
self.metodo = 'NfeConsulta2'
self.tag_retorno = 'retConsSitNFe'
self.web_service = 'ws/NfeConsulta/NfeConsulta2.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)

13
pytrustnfe/servicos/NfeInutilizacao.py

@ -11,12 +11,11 @@ from pytrustnfe.xml import DynamicXml
class NfeInutilizacao(Comunicacao):
def inutilizar(self, inutilizacao):
xml = None
if isinstance(inutilizacao, DynamicXml):
xml = inutilizacao.render()
if isinstance(inutilizacao, basestring):
xml = inutilizacao
assert xml is not None, "Objeto inutilização deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(recibo)
self.metodo = 'nfeinutilizacao2'
self.tag_retorno = 'retInutNFe'
self.web_service = 'ws/nfeinutilizacao/nfeinutilizacao2.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)

21
pytrustnfe/servicos/NfeStatusServico.py

@ -1,4 +1,4 @@
#coding=utf-8
# coding=utf-8
'''
Created on 21/06/2015
@ -9,14 +9,13 @@ from pytrustnfe.xml import DynamicXml
class NfeStatusServico(Comunicacao):
def status(self, consulta):
xml = None
if isinstance(consulta, DynamicXml):
xml = consulta.render()
if isinstance(consulta, basestring):
xml = consulta
assert xml is not None, "Objeto consulta deve ser do tipo DynamicXml ou string"
return self._executar_consulta(xml)
xml = self._validar_xml(recibo)
self.metodo = 'NfeStatusServico2'
self.tag_retorno = 'retConsStatServ'
self.web_service = 'ws/NfeStatusServico/NfeStatusServico2.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)

15
pytrustnfe/servicos/RecepcaoEvento.py

@ -11,12 +11,11 @@ from pytrustnfe.xml import DynamicXml
class RecepcaoEvento(Comunicacao):
def registrar_evento(self, evento):
xml = None
if isinstance(evento, DynamicXml):
xml = evento.render()
if isinstance(evento, basestring):
xml = evento
assert xml is not None, "Objeto recibo deve ser do tipo DynamicXml ou string"
xml = self._validar_xml(recibo)
self.metodo = 'RecepcaoEvento'
self.tag_retorno = 'retEnvEvento'
self.web_service = 'ws/recepcaoevento/recepcaoevento.asmx'
self.url = 'nfe.sefazrs.rs.gov.br'
return self._executar_consulta(xml)

5
pytrustnfe/servicos/Validacao.py

@ -0,0 +1,5 @@
'''
Created on 24/06/2015
@author: danimar
'''

26
pytrustnfe/utils.py

@ -5,11 +5,35 @@ Created on 22/06/2015
@author: danimar
'''
from datetime import date, datetime
from pytrustnfe.ChaveNFe import ChaveNFe
def date_tostring(data):
assert isinstance(data, date), "Objeto date requerido"
return data.strftime("%d-%m-%y")
def datetime_tostring(data):
assert isinstance(data, datetime), "Objeto datetime requerido"
return data.strftime("%d-%m-%y %H:%M:%S")
return data.strftime("%d-%m-%y %H:%M:%S")
def gerar_consulta_recibo(recibo):
c = DynamicXml('consReciNFe')
c(xmlns="http://www.portalfiscal.inf.br/nfe", versao="2.00")
c.tpAmb = recibo.tpAmb
c.nRec = recibo.infRec.nRec
return c
def gerar_chave(obj_chave):
assert isinstance(obj_chave, ChaveNFe), "Objeto deve ser do tipo ChaveNFe"
obj_chave.validar()
return "%s%s%s%s%s%s%s%s" % (obj_chave.estado, obj_chave.emissao,
obj_chave.cnpj, obj_chave.modelo,
obj_chave.serie, obj_chave.numero,
obj_chave.tipo, obj_chave.codigo)
def descompacta_nfe_distribuicao(xml):
pass
Loading…
Cancel
Save