コード例 #1
0
 def xml_inactivate(self, cr, uid, ids, inv, ei_obj, cert_name,
                    context=None):
     proc_nfe = ProcessadorNFe()
     proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
     proc_nfe.versao = '3.10'
     proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
     proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
     proc_nfe.certificado.arquivo = cert_name
     proc_nfe.salvar_arquivos = False
     processo = proc_nfe.inutilizar_nota(
         ambiente=ei_obj['ambiente'], codigo_estado=ei_obj['UF'],
         ano=ei_obj['ano'], cnpj=ei_obj['CNPJ/CPF'], serie=ei_obj['serie'],
         numero_inicial=ei_obj['numero_inicial'],
         numero_final=ei_obj['numero_final'],
         justificativa=ei_obj['justificativa'])
     if processo.resposta.infInut.cStat.valor == '102':
         result = {
             'action': 'inactivate',
             'message': processo.resposta.infInut.xMotivo.valor,
             'ei_status': 'inactive'}
     else:
         msg = processo.resposta.infInut.cStat.valor + ' - ' + processo.resposta.xMotivo.valor
         result = {
             'action': 'inactivate',
             'message': msg
         }
     return result
コード例 #2
0
    def xml_send(self, cr, uid, ids, inv, ei_obj, cert_name, context=None):
        proc_nfe = ProcessadorNFe()
        proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
        proc_nfe.versao = '3.10'
        proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
        proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
        proc_nfe.certificado.arquivo = cert_name
        proc_nfe.salvar_arquivos = False
        for processo in proc_nfe.processar_notas([ei_obj]):
            result = {
                'action': 'send',
                'ei_status': 'failed',
                'message': processo.resposta.cStat.valor + '-' + processo.resposta.xMotivo.valor,
                'ei_access_key': ei_obj.chave}
            if processo.webservice == 1:
                for prot in processo.resposta.protNFe:
                    result['message'] = prot.infProt.cStat.valor + '-' + prot.infProt.xMotivo.valor
                    if prot.infProt.cStat.valor in ('100', '150'):
                        result['ei_protocol'] = prot.infProt.nProt.valor
                        result['ei_status'] = 'confirmed'
                        result['ei_date'] = prot.infProt.dhRecbto.valor
                        result['xml_send'] = ei_obj.xml
                        result['ei_image'] = proc_nfe.danfe.conteudo_pdf
                        result['ei_code'] = inv.internal_number

            elif processo.resposta.cStat.valor in ('100', '150'):
                result['ei_status'] = 'confirmed'
                result['ei_date'] = processo.resposta.protNFe.infProt.dhRecbto.valor
                result['ei_protocol'] = processo.resposta.protNFe.infProt.nProt.valor
                result['xml_send'] = ei_obj.xml
                result['ei_code'] = inv.internal_number

        return result
コード例 #3
0
def __processo(company):
    p = ProcessadorNFe()
    p.ambiente = int(company.nfe_environment)
    p.estado = company.partner_id.l10n_br_city_id.state_id.code
    p.certificado.stream_certificado = base64.decodestring(company.nfe_a1_file)
    p.certificado.senha = company.nfe_a1_password
    p.salvar_arquivos = False
    p.contingencia_SCAN = False
    return p
コード例 #4
0
    def xml_cancel(self, cr, uid, ids, inv, ei_obj, cert_name, context=None):
        proc_nfe = ProcessadorNFe()
        proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
        proc_nfe.versao = '3.10'
        proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
        proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
        proc_nfe.certificado.arquivo = cert_name
        proc_nfe.salvar_arquivos = False
        processo = proc_nfe.enviar_lote_cancelamento(lista_eventos=[ei_obj])
        result = {
            'action': 'cancel',
            'message': processo.resposta.xMotivo.valor
        }
        for prot in processo.resposta.retEvento:
            result['message'] = prot.infEvento.cStat.valor + '-' + processo.resposta.xMotivo.valor
            if prot.infEvento.cStat.valor == '135':
                result.update({'ei_status': 'cancelled'})

        return result
コード例 #5
0
 def xml_correction_letter(self, cr, uid, ids, inv, ei_obj, cert_name,
                           context=None):
     proc_nfe = ProcessadorNFe()
     proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2
     proc_nfe.versao = '3.10'
     proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code
     proc_nfe.certificado.senha = inv.company_id.nfe_a1_password
     proc_nfe.certificado.arquivo = cert_name
     proc_nfe.salvar_arquivos = False
     processo = proc_nfe.enviar_lote_cce(lista_eventos=[ei_obj])
     if processo.resposta.cStat.valor == '128':
         result = {
             'action': 'correction_letter',
             'message': processo.resposta.xMotivo.valor
         }
     else:
         result = {
             'action': 'correction_letter',
             'message': '%s - %s' % (
                 processo.resposta.cStat.valor,
                 processo.resposta.xMotivo.valor)
             }
     return result