Clientes

Atualizar conceito de clientes que estão sem comprar a X dias

CLIENT.RQ-008

Descrição

Quando é necessário atualizar o conceito de clientes que estão sem comprar a um determinado tempo, pode-se criar uma rotina que faz esta atualização por meio de job.

Para isto, é necessário configurar uma operação custom, as preferências utilizadas e a job que executará a operação.

Criando a operação custom

import br.com.eligo.ent.EntClientes;
import br.com.eligo.ent.EntPessoas;
import br.com.eligo.ent.EntHistoricosConceitosClientes;
import br.com.telescope.adsrt.dom.DomDate;

Long conceitoId = Long.parseLong(ctx.getPreference("ATUALIZAR_CONCEITO_CLIENTE_SEM_COMPRAS.CONCEITO_APLICADO_ID", "0"));
Integer diasSemComprar = Integer.parseInt(ctx.getPreference("ATUALIZAR_CONCEITO_CLIENTE_SEM_COMPRAS.DIAS_SEM_COMPRAR", "0"));
String emailDestinatario = ctx.getPreference("ATUALIZAR_CONCEITO_CLIENTE_SEM_COMPRAS.EMAIL_DESTINATARIO", "");

if (conceitoId == 0l) { 

DomDate data = new DomDate();
data.setValue("[SYSDATE-"+diasSemComprar+"]");

EntClientes cli = new EntClientes(ctx);
EntPessoas pess = cli.joinId();
cli.filterBy()
    .lt(cli.getDataUltimaCompra(), data.getValue())
    .addWhere("(not exists (select h.id from historicos_conceitos_clientes h where h.cliente_id = "+cli.getAlias()+".id and ativo = 'S' and h.conceito_id = " + conceitoId + "))");
cli.orderBy().desc(cli.getDataUltimaCompra(), pess.getNomeCompleto());

EntHistoricosConceitosClientes historico = new EntHistoricosConceitosClientes(ctx);

StringBuilder rowCliente = new StringBuilder(200);
rowCliente.append("<table style='border-collapse:collapse;border:1px solid #000'><tr><th style='border:1px solid #000'>Cliente</th><th style='border:1px solid #000'>Nome completo</th><th style='border:1px solid #000'>Última compra em</th><th style='border:1px solid #000'>Conceito principal</th></tr>");

int quant = 0;
while (cli.next()) {

    rowCliente.append("<tr><td style='border:1px solid #000'>")
        .append(cli.findId().valueOfPessoa())
        .append("</td><td style='border:1px solid #000'>")
        .append(cli.findId().valueOfNomeCompleto())
        .append("</td><td style='border:1px solid #000'>")
        .append((cli.getDataUltimaCompra().isNotNull() ? cli.getDataUltimaCompra().toText() : ""))
        .append("</td><td style='border:1px solid #000'>")
        .append((cli.getConceitoId().isNotNull() ? cli.findConceito().valueOfConceito() : ""))
        .append("</td></tr>");

    historico.nullify();
    historico.setClienteId(cli.valueOfId());
    historico.setConceitoId(conceitoId);
    historico.setDataInicio("[SYSDATE]");
    historico.ins();
 
    quant++;
}

if (emailDestinatario != null && !"".equals(emailDestinatario.trim())) {
    if (quant > 0) {
        ctx.sendHtmlMail(emailDestinatario, null, "[Eligo - SELET] Atualização de conceito de clientes sem compras para iniativação", "Foram atualizados os seguintes " + quant + " clientes:<br>" + rowCliente.toString());
    } else {
        ctx.sendHtmlMail(emailDestinatario, null, "[Eligo - SELET] Atualização de conceito de clientes (sem clientes para iniativação)", "Não houve clientes sem comprar a " + diasSemComprar + " dias.");
    }
}

}

Definindo as preferências

Qual conceito será aplicado


Quantos dias sem comprar


Quem deve ser notificado


Configurando job

Informe: