Query Disparos
Agendamento - Lê as Agendas programadas que ainda não foram para a fila
Job_LEADZAP_disparo_AGENDAMENTO
Select ev.cod_empresa, ev.cod_evento, cli.prefixo_cel DDD,cli.telefone_cel Celular
from crm_eventos ev, clientes cli , cliente_diverso div, crm_programacao prog
where ev.cod_cliente = cli.cod_cliente
and ev.cod_programacao = prog.cod_programacao
and cli.cod_cliente = div.cod_cliente
-- eventos pendentes
and ev.status = 'P'
-- nao pode estar na tabela de disparo, pois se ja esta, ja chegou onde queriamos
and ev.cod_evento not in (select cod_evento from crm_disparo_fila)
-- nao pode ter flags marcado
and nvl(div.crm_sms,'N') = 'N'
-- so pega valido celular
and length(trim(cli.prefixo_cel)) = 2 and length(trim(cli.telefone_cel)) in (8,9)
-- pega os agendados para hoje (ou seja,ligaria hoje para agendar)
and ev.data_novo_contato >= trunc(sysdate) and ev.data_novo_contato < trunc(sysdate+1)
Lembrete - Query que seleciona os eventos Agendados a confirmar para disparo
SELeCT agenda.cod_empresa, agenda.cod_os_agenda ,
cli.prefixo_cel , cli.telefone_cel, agenda.data_agendada
from os_agenda agenda , clientes cli, crm_parm_fluxo parm, cliente_diverso div
where agenda.cod_cliente = cli.cod_cliente
and agenda.cod_empresa = parm.cod_empresa
and cli.cod_cliente = div.cod_cliente
and agenda.status_agenda = 'A' -- se ja confirmada nao precisa 'C'
AND Nvl(agenda.apagar_ao_sair, 'N') <> 'X'
-- cliente tem flag de envio liberado
and nvl(div.crm_sms,'N') = 'N'
-- pega a turma do futuro: amanha, conforme parametro. se vazio poe 1 dia na frente
and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) >= trunc(sysdate)
and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) < trunc(sysdate+1)
--telefone celular tem que ser valido
and length(cli.prefixo_cel) = 2 and length(cli.telefone_cel) >= 8
No Show - Query que lê as Agendas que não compareceram e alimenta a fila
SELeCT agenda.cod_empresa, agenda.cod_os_agenda , cli.prefixo_cel , cli.telefone_cel, agenda.data_agendada
from os_agenda agenda , clientes cli, crm_parm_fluxo parm, CRM_EVENTOS EV, cliente_diverso div
where agenda.cod_cliente = cli.cod_cliente
and agenda.cod_empresa = parm.cod_empresa
AND AGENdA.CRM_COD_EMPRESA = EV.COD_EMPRESA
and agenda.crm_cod_evento = ev.cod_evento
and cli.cod_cliente = div.cod_cliente
-- Cliente nao pode ter flags marcado
and nvl(div.crm_sms,'N') = 'N'
-- AGENDA TEM QUE ESTAR ATIVA
AND Nvl(agenda.apagar_ao_sair, 'N') <> 'X'
AND agenda.status_agenda IN ('C', 'A')
-- TEM QUE SER HOJE
and (agenda.data_agendada) >= trunc(sysdate) and (agenda.data_agendada) < trunc(sysdate+1)
-- QUE QUE TER ULTRAPASSADO O LIMITE DE HORAS . SE NAO MARCARAM O PARAMEtro VOU COLCOAR 4 HORAS
and (SYSDATE - agenda.data_agendada)/24 > nvl(PARM.tempo_horas_para_voltar_agenda,(4/24))
--telefone celular tem que ser valido
and length(cli.prefixo_cel) = 2 and length(cli.telefone_cel) >= 8
Query que lê a fila TODOS os tipos de disparos e envia mensagem
SELECT disparo.template, fila.ddd, fila.celular, fila.cod_empresa, fila.cod_evento,
disparo.id_disparo, disparo.template, fila.id_disparo_fila, Nvl(fila.cod_os_agenda, ag.cod_os_agenda) cod_os_agenda
FROM crm_disparo disparo, crm_disparo_fila fila, os_agenda ag
WHERE disparo.id_disparo = fila.id_disparo
AND fila.cod_empresa = ag.crm_cod_empresa(+)
AND fila.cod_evento = ag.crm_cod_evento(+)
-- tem que existir dados no template
AND EXISTS (SELECT a.cod_evento FROM vw_crm_template_agendamento a WHERE a.cod_empresa = fila.cod_empresa AND a.cod_evento = fila.cod_evento)
-- disparos com data menor que agora
AND fila.data_disparo <= SYSDATE
-- Celular valido
AND Length(fila.ddd) = 2 AND Length(celular) >= 8
--Eventos ativos
AND fila.status = 'P'
-- parâmetro de Ativar LEADZAP OK
AND EXISTS (SELECT 1 FROM crm_parm_fluxo p WHERE p.cod_empresa = fila.cod_empresa AND Nvl(p.ativar_leadzap, 'N') = 'S')
- Empresa tem que estar cruzada com algum número de LEADZAP
AND EXISTS (SELECT 1 FROM crm_whatsapp_empresa a WHERE a.cod_empresa = fila.cod_empresa)
ORDER BY fila.cod_empresa