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}
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
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 }