Browse Source

Melhorias no código de localizar a url do servidor

tags/0.1.5
Danimar Ribeiro 9 years ago
parent
commit
f4458972c3
  1. 59
      pytrustnfe/Servidores.py
  2. 48
      pytrustnfe/nfe/__init__.py
  3. 3
      pytrustnfe/nfe/templates/NfeConsultaCadastro.xml

59
pytrustnfe/Servidores.py

@ -2,32 +2,63 @@
# © 2016 Danimar Ribeiro
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
WS_NFE_AUTORIZACAO = 0
WS_NFE_CONSULTA_AUTORIZACAO = 1
WS_NFE_CANCELAMENTO = 2
WS_NFE_INUTILIZACAO = 3
WS_NFE_CONSULTA = 4
WS_NFE_SITUACAO = 5
WS_NFE_CONSULTA_CADASTRO = 6
WS_DPEC_RECEPCAO = 7
WS_NFE_AUTORIZACAO = 'NfeAutorizacao'
WS_NFE_CONSULTA_AUTORIZACAO = 'NfeRetAutorizacao'
WS_NFE_CANCELAMENTO = 'RecepcaoEventoCancelamento'
WS_NFE_INUTILIZACAO = 'NfeInutilizacao'
WS_NFE_CONSULTA = 'NfeConsultaProtocolo'
WS_NFE_SITUACAO = 'NfeStatusServico'
WS_NFE_CONSULTA_CADASTRO = 'NfeConsultaCadastro'
WS_DPEC_RECEPCAO = 'RecepcaoEventoEPEC'
WS_DPEC_CONSULTA = 8
WS_NFE_RECEPCAO_EVENTO = 9
WS_NFE_DOWNLOAD = 10
WS_NFE_CONSULTA_DESTINADAS = 11
WS_NFE_RECEPCAO_EVENTO = 'RecepcaoEventoCarta'
WS_NFE_DOWNLOAD = 'NfeDownloadNF'
WS_NFE_CONSULTA_DESTINADAS = 'NfeConsultaDest'
WS_DFE_DISTRIBUICAO = 12
NFE_AMBIENTE_PRODUCAO = 1
NFE_AMBIENTE_HOMOLOGACAO = 2
SIGLA_ESTADO = {
'12': 'AC',
'27': 'AL',
'13': 'AM',
'16': 'AP',
'29': 'BA',
'23': 'CE',
'53': 'DF',
'32': 'ES',
'52': 'GO',
'21': 'MA',
'31': 'MG',
'50': 'MS',
'51': 'MT',
'15': 'PA',
'25': 'PB',
'26': 'PE',
'22': 'PI',
'41': 'PR',
'33': 'RJ',
'24': 'RN',
'11': 'RO',
'14': 'RR',
'43': 'RS',
'42': 'SC',
'28': 'SE',
'35': 'SP',
'17': 'TO',
}
def localizar_url(servico, estado):
return ESTADO_WS[estado]['servidor'], ESTADO_WS[estado][servico]
sigla = SIGLA_ESTADO[estado]
return ESTADO_WS[sigla]['servidor'], ESTADO_WS[sigla][servico]
METODO_WS = {
WS_NFE_AUTORIZACAO:{
WS_NFE_AUTORIZACAO: {
'webservice': 'NfeAutorizacao',
'metodo': 'NfeAutorizacao',
},

48
pytrustnfe/nfe/__init__.py

@ -16,6 +16,7 @@ def _build_header(**kwargs):
vals = {'estado': kwargs['estado'], 'soap_action': ''}
return CabecalhoSoap(**vals)
def _generate_nfe_id(**kwargs):
for item in kwargs['NFes']:
vals = {
@ -28,71 +29,72 @@ def _generate_nfe_id(**kwargs):
'numero': item['infNFe']['ide']['nNF'],
'tipo': item['infNFe']['ide']['tpEmis'],
'codigo': item['infNFe']['ide']['cNF'],
}
}
chave = ChaveNFe(**vals)
item['infNFe']['Id'] = gerar_chave(chave, 'NFe')
item['infNFe']['Id'] = gerar_chave(chave, 'NFe')
def _send(certificado, method, **kwargs):
def _send(certificado, method, sign, **kwargs):
path = os.path.join(os.path.dirname(__file__), 'templates')
xml = render_xml(path, '%s.xml' % method, **kwargs)
xml_send = render_xml(path, '%s.xml' % method, **kwargs)
pfx_path = certificado.save_pfx()
signer = Assinatura(pfx_path, certificado.password)
xml_signed = signer.assina_xml(xml, kwargs['NFes'][0]['infNFe']['Id'])
if sign:
pfx_path = certificado.save_pfx()
signer = Assinatura(pfx_path, certificado.password)
xml_send = signer.assina_xml(
xml_send, kwargs['NFes'][0]['infNFe']['Id'])
url = localizar_url(0, 'RS')
url = localizar_url(method, kwargs['estado'])
cabecalho = _build_header(**kwargs)
return executar_consulta(certificado, url, cabecalho, xml_signed)
return executar_consulta(certificado, url, cabecalho, xml_send)
def autorizar_nfe(certificado, **kwargs): # Assinar
_generate_nfe_id(**kwargs)
_send(certificado, 'NfeAutorizacao', **kwargs)
_send(certificado, 'NfeAutorizacao', True, **kwargs)
def retorno_autorizar_nfe(certificado, **kwargs):
_send(certificado, 'NfeRetAutorizacao', **kwargs)
_send(certificado, 'NfeRetAutorizacao', False, **kwargs)
def recepcao_evento_cancelamento(certificado, **kwargs): # Assinar
_send(certificado, 'RecepcaoEventoCancelamento', **kwargs)
_send(certificado, 'RecepcaoEventoCancelamento', True, **kwargs)
def inutilizar_nfe(certificado, **kwargs): # Assinar
_send(certificado, 'NfeInutilizacao', **kwargs)
_send(certificado, 'NfeInutilizacao', True, **kwargs)
def consultar_protocolo_nfe(certificado, **kwargs):
_send(certificado, 'NfeConsultaProtocolo', **kwargs)
_send(certificado, 'NfeConsultaProtocolo', True, **kwargs)
def nfe_status_servico(certificado, **kwargs):
_send(certificado, 'NfeStatusServico.', **kwargs)
_send(certificado, 'NfeStatusServico', False, **kwargs)
def consulta_cadastro(certificado, **kwargs):
_send(certificado, 'NfeConsultaCadastro.', **kwargs)
_send(certificado, 'NfeConsultaCadastro', False, **kwargs)
def recepcao_evento_carta_correcao(certificado, **kwargs): # Assinar
_send(certificado, 'RecepcaoEventoCarta.', **kwargs)
_send(certificado, 'RecepcaoEventoCarta', True, **kwargs)
def recepcao_evento_manifesto(certificado, **kwargs): # Assinar
_send(certificado, 'RecepcaoEventoManifesto', **kwargs)
_send(certificado, 'RecepcaoEventoManifesto', True, **kwargs)
def recepcao_evento_epec(certificado, **kwargs): # Assinar
_send(certificado, 'RecepcaoEventoEPEC', **kwargs)
_send(certificado, 'RecepcaoEventoEPEC', True, **kwargs)
def consulta_nfe_destinada(certificado, **kwargs):
_send(certificado, 'NfeConsultaDest', **kwargs)
_send(certificado, 'NfeConsultaDest', False, **kwargs)
def download_nfe(certificado, **kwargs):
_send(certificado, 'NfeDownloadNF', **kwargs)
_send(certificado, 'NfeDownloadNF', False, **kwargs)

3
pytrustnfe/nfe/templates/NfeConsultaCadastro.xml

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<infCons>
<xServ>CONS-CAD</xServ>
<UF>{{ obj.estado }}</UF>
<CNPJ>{{ obj.cnpj }}</CNPJ>
</infCons>
</ConsCad>
</ConsCad>
Loading…
Cancel
Save