Esempio n. 1
1
    def consultar_nfe_destinatario(self, cnpj, indnfe, indemi, cert, key, nsu='0', versao=u'2.00', ambiente=2, estado=u'MG', scan=False):
        """
            Realiza  a consulta do manifesto do destinatário
            @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 o envio,resposta e reason.
            """
        p = ProcessadorNFe()
        p.versao = versao
        p.estado = estado
        #Provisoriamente apontado para um estado que usa o webservice de ambiente nacional, pois em MG ainda não existe suporte ao Manifesto do Destinatário
        ESTADO_WS[estado] = SVAN
        p.ambiente = ambiente
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.contingencia_SCAN = scan
        p.salvar_arquivos = False
        processo = p.consultar_notas_destinatario(cnpj=cnpj, indnfe=indnfe, indemi=indemi, nsu=nsu)
        resp = processo.resposta
        lista_notas = []
        if resp.cStat.valor == '138':#Documento localizado para o destinatário
            for resp in resp.ret:
                if resp.resNFe.xml:
                    dict_resnfe = {
                        'NSU': resp.resNFe.NSU.valor,
                        'chNFe': resp.resNFe.chNFe.valor,
                        'CNPJ': resp.resNFe.CNPJ.valor,
                        'CPF': resp.resNFe.CPF.valor,
                        'xNome': resp.resNFe.xNome.valor,
                        'IE': resp.resNFe.IE.valor,
                        'dEmi': resp.resNFe.dEmi.valor,
                        'tpNF': resp.resNFe.tpNF.valor,
                        'vNF': resp.resNFe.vNF.valor,
                        'digVal': resp.resNFe.digVal.valor,
                        'dhRecbto': resp.resNFe.dhRecbto.valor,
                        'cSitNFe': resp.resNFe.cSitNFe.valor,
                        'cSitConf': resp.resNFe.cSitConf.valor
                    }
                    lista_notas.append({'resNFe': dict_resnfe})
                if resp.resCanc.xml:
                    dict_rescanc = {
                        'NSU': resp.resCanc.NSU.valor,
                        'chNFe': resp.resCanc.chNFe.valor,
                        'CNPJ': resp.resCanc.CNPJ.valor,
                        'CPF': resp.resCanc.CPF.valor,
                        'xNome': resp.resCanc.xNome.valor,
                        'IE': resp.resCanc.IE.valor,
                        'dEmi': resp.resCanc.dEmi.valor,
                        'tpNF': resp.resCanc.tpNF.valor,
                        'vNF': resp.resCanc.vNF.valor,
                        'digVal': resp.resCanc.digVal.valor,
                        'dhRecbto': resp.resCanc.dhRecbto.valor,
                        'cSitNFe': resp.resCanc.cSitNFe.valor,
                        'cSitConf': resp.resCanc.cSitConf.valor
                    }
                    lista_notas.append({'resCanc': dict_rescanc})
                if resp.resCCe.xml:
                    dict_rescce = {
                        'NSU': resp.resCCe.NSU.valor,
                        'chNFe': resp.resCCe.chNFe.valor,
                        'dhEvento': resp.resCCe.dhEvento.valor,
                        'tpEvento': resp.resCCe.tpEvento.valor,
                        'nSeqEvento': resp.resCCe.nSeqEvento.valor,
                        'descEvento': resp.resCCe.descEvento.valor,
                        'xCorrecao': resp.resCCe.xCorrecao.valor,
                        'tpNF': resp.resCCe.tpNF.valor,
                        'dhRecbto': resp.resCCe.dhRecbto.valor
                    }
                    lista_notas.append({'resCCe': dict_rescce})


        vals = {'envio':processo.envio.xml,
                'resposta': processo.resposta.xml,
                'status_resposta': processo.resposta.cStat.valor,
                'status_motivo': processo.resposta.xMotivo.valor,
                'lista_notas': lista_notas,
                'reason': processo.resposta.reason}

        return vals
    def consultar_nfe_destinatario(self, cnpj, indnfe, indemi, cert, key, nsu='0', versao=u'2.00',
                                   ambiente=2, estado=u'MG', tipo_contingencia=False):
        """
            Realiza  a consulta do manifesto do destinatário
            @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.versao = versao
        p.estado = estado
        #Provisoriamente apontado para um estado que usa o webservice de ambiente nacional, pois em MG ainda
        # não existe suporte ao Manifesto do Destinatário
        ESTADO_WS[estado] = SVAN
        p.ambiente = ambiente
        p.certificado.cert_str = cert
        p.certificado.key_str = key
        p.tipo_contingencia = tipo_contingencia
        p.salvar_arquivos = False
        processo = p.consultar_notas_destinatario(cnpj=cnpj, indnfe=indnfe, indemi=indemi, nsu=nsu)
        resp = processo.resposta
        lista_notas = []
        if resp.cStat.valor == '138':#Documento localizado para o destinatário
            for resp in resp.ret:
                if resp.resNFe.xml:
                    dict_resnfe = {
                        'NSU': resp.resNFe.NSU.valor,
                        'chNFe': resp.resNFe.chNFe.valor,
                        'CNPJ': resp.resNFe.CNPJ.valor,
                        'CPF': resp.resNFe.CPF.valor,
                        'xNome': resp.resNFe.xNome.valor,
                        'IE': resp.resNFe.IE.valor,
                        'dEmi': resp.resNFe.dEmi.valor,
                        'tpNF': resp.resNFe.tpNF.valor,
                        'vNF': resp.resNFe.vNF.valor,
                        'digVal': resp.resNFe.digVal.valor,
                        'dhRecbto': resp.resNFe.dhRecbto.valor,
                        'cSitNFe': resp.resNFe.cSitNFe.valor,
                        'cSitConf': resp.resNFe.cSitConf.valor
                    }
                    lista_notas.append({'resNFe': dict_resnfe})
                if resp.resCanc.xml:
                    dict_rescanc = {
                        'NSU': resp.resCanc.NSU.valor,
                        'chNFe': resp.resCanc.chNFe.valor,
                        'CNPJ': resp.resCanc.CNPJ.valor,
                        'CPF': resp.resCanc.CPF.valor,
                        'xNome': resp.resCanc.xNome.valor,
                        'IE': resp.resCanc.IE.valor,
                        'dEmi': resp.resCanc.dEmi.valor,
                        'tpNF': resp.resCanc.tpNF.valor,
                        'vNF': resp.resCanc.vNF.valor,
                        'digVal': resp.resCanc.digVal.valor,
                        'dhRecbto': resp.resCanc.dhRecbto.valor,
                        'cSitNFe': resp.resCanc.cSitNFe.valor,
                        'cSitConf': resp.resCanc.cSitConf.valor
                    }
                    lista_notas.append({'resCanc': dict_rescanc})
                if resp.resCCe.xml:
                    dict_rescce = {
                        'NSU': resp.resCCe.NSU.valor,
                        'chNFe': resp.resCCe.chNFe.valor,
                        'dhEvento': resp.resCCe.dhEvento.valor,
                        'tpEvento': resp.resCCe.tpEvento.valor,
                        'nSeqEvento': resp.resCCe.nSeqEvento.valor,
                        'descEvento': resp.resCCe.descEvento.valor,
                        'xCorrecao': resp.resCCe.xCorrecao.valor,
                        'tpNF': resp.resCCe.tpNF.valor,
                        'dhRecbto': resp.resCCe.dhRecbto.valor
                    }
                    lista_notas.append({'resCCe': dict_rescce})


        vals = {'envio':processo.envio.xml,
                'resposta': processo.resposta.xml,
                'status_resposta': processo.resposta.cStat.valor,
                'status_motivo': processo.resposta.xMotivo.valor,
                'lista_notas': lista_notas,
                'reason': processo.resposta.reason}

        return vals