Query Disparos
Query que seleciona os eventos 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
Query que lê a fila 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(+)
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)
AND fila.data_disparo <= SYSDATE
AND Length(fila.ddd) = 2
AND Length(celular) >= 8
AND fila.status = 'P'
AND EXISTS (SELECT 1
FROM crm_parm_fluxo p
WHERE p.cod_empresa = fila.cod_empresa
AND Nvl(p.ativar_leadzap, 'N') = 'S')
AND EXISTS (SELECT 1
FROM crm_whatsapp_empresa a
WHERE a.cod_empresa = fila.cod_empresa)
ORDER BY fila.cod_empresa