def processar_nfe(self, xml_nfe, cert, key, versao=u'2.00', ambiente=2, estado=u'MG',
                      tipo_contingencia=False):
        """
        Este método realiza o processamento de validação, assinatura e transmissão da nfe.
        @param xml_nfe:xml da nfe (string)
        @param cert: string do certificado digital A1,
        @param key: chave privada do certificado digital,
        @param versao: versão da nfe,
        @param ambiente: ambiente da consulta, pode ser 1 para o ambiente de produção e 2 para homologação,
        @param estado: estado em que realizará o processamento,
        @param tipo_contingencia: habilita a contigência .
        @return: Dicionário com a chave_nfe, protocolo, envio, numero_lote, resposta, status_resposta,status_motivo e reason.
        """

        p = ProcessadorNFe()
        p.ambiente = ambiente
        p.estado = estado
        p.versao = versao
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.salvar_arquivos = True
        p.tipo_contingencia = tipo_contingencia
        p.caminho = u''
        if versao == '3.10':
            n = NFe_310()
        else:
            n = NFe_200()
        n.infNFe.xml = xml_nfe
        for processo in p.processar_notas([n]):
            processo.envio.xml
            processo.resposta.xml
            processo.resposta.reason
        vals = {'envio': processo.envio.xml,
                'resposta': processo.resposta.xml,
                'chave_nfe': n.chave,
                'xml_pre_validado': n.xml,
                'status_resposta': processo.resposta.cStat.valor,
                'status_motivo': processo.resposta.xMotivo.valor,
                'reason': processo.resposta.reason
        }
        try:
            if processo.resposta.infProt.nProt.valor == '':
                vals['protocolo'] = processo.resposta.protNFe.infProt.nProt.valor
        except:
            pass

        for nome, proc in p.processos.iteritems():
            for arquivo in proc[1]:
                if arquivo[0] == 'numero_lote':
                    vals['numero_lote'] = arquivo[1]
                if arquivo[0] == 'numero_protocolo':
                    vals['protocolo'] = arquivo[1]
                    vals['resposta'] = proc[1][1][1]
                if arquivo[0] == 'status_resp':
                    vals['status_resposta'] = arquivo[1][0]
                    vals['status_motivo'] = arquivo[1][1]
        return vals
    def processar_lote(self, lista_xml_nfe, cert, key, versao=u'2.00', ambiente=2, estado=u'MG',
                       tipo_contingencia=False):
        """
        Este método realiza o processamento de validação, assinatura e transmissão da nfe.
        @param lista_xml_nfe:lista nfe
        @param cert: string do certificado digital A1,
        @param key: chave privada do certificado digital,
        @param versao: versão da nfe,
        @param ambiente: ambiente da consulta, pode ser 1 para o ambiente de produção e 2 para homologação,
        @param estado: estado em que realizará o processamento,
        @param tipo_contingencia: habilita a contigência .
        @return: Dicionário com o envio,resposta e reason.
        """

        p = ProcessadorNFe()
        p.ambiente = ambiente
        p.estado = estado
        p.versao=versao
        p.tipo_contingencia = tipo_contingencia
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.salvar_arquivos = False
        p.caminho = u''
        if versao == '3.10':
            n = NFe_310()
        else:
            n = NFe_200()
        lista = []
        if lista_xml_nfe:
            for x in lista_xml_nfe:
                n.infNFe.xml = x
                lista.append(n)
        for processo in p.processar_notas(lista):
            processo.envio.xml
            processo.resposta.xml
            processo.resposta.reason

        return {'envio': processo.envio.xml, 'resposta': processo.resposta.xml,
                'reason': processo.resposta.reason}
Esempio n. 3
0
  def processar_nfe(self,xml_nfe,cert,key,versao=u'2.00',ambiente=2,estado=u'MG',scan=False):
     
      """
      Este método realiza o processamento de validação, assinatura e transmissão da nfe.
      @param xml_nfe:xml da nfe (string)
      @param cert: string do certificado digital A1,
      @param key: chave privada do certificado digital,
      @param versao: versão da nfe,
      @param ambiente: ambiente da consulta, pode ser 1 para o ambiente de produção e 2 para homologação,
      @param estado: estado em que realizará o processamento,
      @param scan: habilita a contigência SCAN. 
      @return: Dicionário com a chave_nfe, protocolo, envio,resposta e reason.
      """
      
      p = ProcessadorNFe()
      p.ambiente=ambiente
      p.estado=estado
      p.certificado.cert_str=cert
      p.certificado.key_str=key
      p.salvar_arquivos=False
      p.contingencia_SCAN=scan
      p.caminho = u''
      n = NFe_200()
      n.infNFe.xml=xml_nfe 
      for processo in p.processar_notas([n]): 
          processo.envio.xml
          processo.resposta.xml
          processo.resposta.reason
 
      return {'envio':processo.envio.xml,
              'resposta':processo.resposta.xml,
              'chave_nfe':n.chave,
              'protocolo':processo.resposta.protNFe.infProt.nProt.valor,
              'reason':processo.resposta.reason
              }
    def processar_nfe(self, xml_nfe, cert, key, versao=u'2.00', ambiente=2, estado=u'MG',
                      tipo_contingencia=False):
        """
        Este método realiza o processamento de validação, assinatura e transmissão da nfe.
        @param xml_nfe:xml da nfe (string)
        @param cert: string do certificado digital A1,
        @param key: chave privada do certificado digital,
        @param versao: versão da nfe,
        @param ambiente: ambiente da consulta, pode ser 1 para o ambiente de produção e 2 para homologação,
        @param estado: estado em que realizará o processamento,
        @param tipo_contingencia: habilita a contigência .
        @return: Dicionário com a chave_nfe, protocolo, envio, numero_lote, resposta, status_resposta,status_motivo e reason.
        """

        p = ProcessadorNFe()
        p.ambiente = ambiente
        p.estado = estado
        p.versao = versao
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.salvar_arquivos = True
        p.tipo_contingencia = tipo_contingencia
        p.caminho = u''
        if versao == '3.10':
            n = NFe_310()
        else:
            n = NFe_200()
        n.infNFe.xml = xml_nfe
        for processo in p.processar_notas([n]):
            processo.envio.xml
            processo.resposta.xml
            processo.resposta.reason
        vals = {'envio': processo.envio.xml,
                'resposta': processo.resposta.xml,
                'chave_nfe': n.chave,
                'xml_pre_validado': n.xml,
                'status_resposta': processo.resposta.cStat.valor,
                'status_motivo': processo.resposta.xMotivo.valor,
                'reason': processo.resposta.reason
        }
        try:
            if processo.resposta.infProt.nProt.valor == '':
                vals['protocolo'] = processo.resposta.protNFe.infProt.nProt.valor
        except:
            pass

        for nome, proc in p.processos.iteritems():
            for arquivo in proc[1]:
                if arquivo[0] == 'numero_lote':
                    vals['numero_lote'] = arquivo[1]
                if arquivo[0] == 'numero_protocolo':
                    vals['protocolo'] = arquivo[1]
                    vals['resposta'] = proc[1][1][1]
                if arquivo[0] == 'status_resp':
                    vals['status_resposta'] = arquivo[1][0]
                    vals['status_motivo'] = arquivo[1][1]
        return vals
Esempio n. 5
0
    def processar_lote(self,
                       lista_xml_nfe,
                       cert,
                       key,
                       versao=u'2.00',
                       ambiente=2,
                       estado=u'MG',
                       tipo_contingencia=False):
        """
        Este método realiza o processamento de validação, assinatura e transmissão da nfe.
        @param lista_xml_nfe:lista nfe
        @param cert: string do certificado digital A1,
        @param key: chave privada do certificado digital,
        @param versao: versão da nfe,
        @param ambiente: ambiente da consulta, pode ser 1 para o ambiente de produção e 2 para homologação,
        @param estado: estado em que realizará o processamento,
        @param tipo_contingencia: habilita a contigência .
        @return: Dicionário com o envio,resposta e reason.
        """

        p = ProcessadorNFe()
        p.ambiente = ambiente
        p.estado = estado
        p.versao = versao
        p.tipo_contingencia = tipo_contingencia
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.salvar_arquivos = False
        p.caminho = u''
        if versao == '3.10':
            n = NFe_310()
        else:
            n = NFe_200()
        lista = []
        if lista_xml_nfe:
            for x in lista_xml_nfe:
                n.infNFe.xml = x
                lista.append(n)
        for processo in p.processar_notas(lista):
            processo.envio.xml
            processo.resposta.xml
            processo.resposta.reason

        return {
            'envio': processo.envio.xml,
            'resposta': processo.resposta.xml,
            'reason': processo.resposta.reason
        }