From 103cdb923c81d8976548ce13011a5f3f1f5bef94 Mon Sep 17 00:00:00 2001 From: Junior Tada Date: Wed, 15 Jul 2015 13:52:44 -0300 Subject: [PATCH] =?UTF-8?q?webservides=20para=20Paran=C3=A1=20e=20Sao=20Pa?= =?UTF-8?q?ulo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/processamento/comunicacao.py | 20 +- pynfe/utils/flags.py | 2 - pynfe/utils/webservices.py | 467 +++++++++++++++++++++++++++++++++++++ pynfe/utils/webservices_nfce.py | 2 - test.py | 10 +- 5 files changed, 483 insertions(+), 18 deletions(-) create mode 100644 pynfe/utils/webservices.py delete mode 100644 pynfe/utils/webservices_nfce.py diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index 72c0039..efae46c 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -3,13 +3,14 @@ import datetime import requests from pynfe.utils import etree, so_numeros from pynfe.utils.flags import NAMESPACE_NFE, NAMESPACE_SOAP, VERSAO_PADRAO, CODIGOS_ESTADOS +from pynfe.utils.webservices import NFCE, NFE from .assinatura import AssinaturaA1 class Comunicacao(object): u"""Classe abstrata responsavel por definir os metodos e logica das classes de comunicação com os webservices da NF-e.""" - _ambiente = 2 # 1 = Produção, 2 = Homologação + _ambiente = 1 # 1 = Produção, 2 = Homologação uf = None certificado = None certificado_senha = None @@ -26,7 +27,7 @@ class ComunicacaoSefaz(Comunicacao): _versao = VERSAO_PADRAO _assinatura = AssinaturaA1 - def transmitir(self, nota_fiscal): + def autorizacao(self, nota_fiscal): pass def cancelar(self, nota_fiscal): @@ -37,16 +38,22 @@ class ComunicacaoSefaz(Comunicacao): def status_servico(self, tipo): """ Verifica status do servidor da receita. """ + """ tipo é a string com tipo de serviço que deseja consultar + Ex: nfe ou nfce + """ if self._ambiente == 1: ambiente = 'https://' else: ambiente = 'https://homologacao.' if tipo == 'nfe': - # nfe - url = ambiente + 'nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3' + # nfe Ex: https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3 + url = ambiente + NFE[self.uf.upper()]['STATUS'] + elif tipo == 'nfce': + # nfce Ex: https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3 + url = ambiente + NFCE[self.uf.upper()]['STATUS'] else: - # nfce - url = ambiente + 'nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3' + # TODO implementar outros tipos de notas como NFS-e + pass # Monta XML do corpo da requisição raiz = etree.Element('consStatServ', versao='3.10', xmlns=NAMESPACE_NFE) @@ -59,7 +66,6 @@ class ComunicacaoSefaz(Comunicacao): # Chama método que efetua a requisição POST no servidor SOAP return self._post(url, xml, self._post_header()) - #return bool(retorno) def consultar_cadastro(self, instancia): #post = '/nfeweb/services/cadconsultacadastro.asmx' diff --git a/pynfe/utils/flags.py b/pynfe/utils/flags.py index 7a844bd..024cbf0 100644 --- a/pynfe/utils/flags.py +++ b/pynfe/utils/flags.py @@ -196,5 +196,3 @@ CODIGOS_ESTADOS = { 'GO': '52', 'DF': '53', } - - diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py new file mode 100644 index 0000000..096aab6 --- /dev/null +++ b/pynfe/utils/webservices.py @@ -0,0 +1,467 @@ + +# Nfc-e +NFCE = { + 'RO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'AC': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'AM': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'RR': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'PA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'AP': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'TO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'MA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'PI': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'CE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'RN': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'PB': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'PE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'AL': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'SE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'BA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'MG': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'ES': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'RJ': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'SP': { + 'STATUS': 'nfce.fazenda.sp.gov.br/ws/nfestatusservico2.asmx', + 'AUTORIZACAO': 'nfce.fazenda.sp.gov.br/ws/nfeautorizacao.asmx', + 'RECIBO': 'nfce.fazenda.sp.gov.br/ws/nferetautorizacao.asmx', + 'CHAVE': 'nfce.fazenda.sp.gov.br/ws/nfeconsulta2.asmx', + 'INUTILIZACAO': 'nfce.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx', + 'EVENTOS': 'nfce.fazenda.sp.gov.br/ws/recepcaoevento.asmx' + }, + 'PR': { + 'STATUS': 'nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3', + 'AUTORIZACAO': 'nfce.fazenda.pr.gov.br/nfce/NFeAutorizacao3', + 'RECIBO': 'nfce.fazenda.pr.gov.br/nfce/NFeRetAutorizacao3', + 'CHAVE': 'nfce.fazenda.pr.gov.br/nfce/NFeConsulta3', + 'INUTILIZACAO': 'nfce.fazenda.pr.gov.br/nfce/NFeInutilizacao3', + 'EVENTOS': 'nfce.fazenda.pr.gov.br/nfce/NFeRecepcaoEvento' + }, + 'SC': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'RS': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'MS': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'MT': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'GO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, + 'DF': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '' + }, +} + +# Nfe +NFE = { + 'RO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'AC': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'AM': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'RR': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'PA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'AP': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'TO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'MA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'PI': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'CE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'RN': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'PB': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'PE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'AL': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'SE': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'BA': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'MG': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'ES': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'RJ': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'SP': { + 'STATUS': 'nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx', + 'AUTORIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx', + 'RECIBO': 'nfe.fazenda.sp.gov.br/ws/nferetautorizacao.asmx', + 'CHAVE': 'nfe.fazenda.sp.gov.br/ws/nfeconsulta2.asmx', + 'INUTILIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx', + 'EVENTOS': 'nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx', + 'CADASTRO': 'nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx' + }, + 'PR': { + 'STATUS': 'nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3', # CONSULTA STATUS DO SERVIÇO + 'AUTORIZACAO': 'nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3', # AUTORIZACAO + 'RECIBO': 'nfe.fazenda.pr.gov.br/nfe/NFeRetAutorizacao3', # CONSULTA RECIBO + 'CHAVE': 'nfe.fazenda.pr.gov.br/nfe/NFeConsulta3', # CONSULTA CHAVE DE ACESSO + 'INUTILIZACAO': 'nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3', # INUTILIZAÇAO + 'EVENTOS': 'nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento', # REGISTRO DE EVENTOS + 'CADASTRO': 'nfe.fazenda.pr.gov.br/nfe/CadConsultaCadastro2' # CONSULTA CADASTRO + }, + 'SC': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'RS': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'MS': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'MT': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'GO': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, + 'DF': { + 'STATUS': '', + 'AUTORIZACAO': '', + 'RECIBO': '', + 'CHAVE': '', + 'INUTILIZACAO': '', + 'EVENTOS': '', + 'CADASTRO': '' + }, +} \ No newline at end of file diff --git a/pynfe/utils/webservices_nfce.py b/pynfe/utils/webservices_nfce.py deleted file mode 100644 index 793f1c8..0000000 --- a/pynfe/utils/webservices_nfce.py +++ /dev/null @@ -1,2 +0,0 @@ -# Paraná - diff --git a/test.py b/test.py index 00ff878..da8aca6 100644 --- a/test.py +++ b/test.py @@ -100,17 +100,13 @@ nota_fiscal.adicionar_produto_servico(codigo='000328', # id do produto (000328 e cofins_aliquota_percentual=Decimal('3.00'), cofins_valor=Decimal('3.51')) -#_fonte_dados.adicionar_objeto(nota_fiscal) - serializador = SerializacaoXML(_fonte_dados, homologacao=True) xml = serializador.exportar(retorna_string=True).decode('utf-8') -certificado = "JC.pfx" -senha = '12345328' +certificado = "certificado_A1.pfx" +senha = 'sua_senha' # assinatura a1 = AssinaturaA1(certificado, senha) xml = a1.assinar_nfe(xml) # escreve with open('teste.xml', 'wb') as arquivo: - arquivo.write(xml) - -#print serializador._serializar_nota_fiscal(nota_fiscal) + arquivo.write(xml) \ No newline at end of file