Query Disparos: mudanças entre as edições

De Wiki NBS
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
'''<big>Agendamento - Lê as  Agendas programadas que ainda não foram para a fila</big>'''
'''<small>Job_LEADZAP_disparo_AGENDAMENTO</small>'''


'''<big>Lembrete - Query que seleciona os eventos para disparo</big>'''
<small>Select ev.cod_empresa, ev.cod_evento  cli.prefixo_cel DDD,cli.telefone_cel Celular</small>
SELeCT agenda.cod_empresa, agenda.cod_os_agenda


 cli.prefixo_cel , cli.telefone_cel, agenda.data_agendada
<small>from crm_eventos ev,      clientes cli  ,   cliente_diverso div,     crm_programacao prog     </small>


 from  os_agenda agenda , clientes cli, crm_parm_fluxo parm, cliente_diverso div
<small>  </small>


 where agenda.cod_cliente = cli.cod_cliente
<small>where ev.cod_cliente    = cli.cod_cliente </small>


 and   agenda.cod_empresa = parm.cod_empresa
<small>and  ev.cod_programacao = prog.cod_programacao</small>


 and   cli.cod_cliente    = div.cod_cliente
<small>and  cli.cod_cliente    = div.cod_cliente</small>


 and agenda.status_agenda = 'A' -- se ja confirmada nao precisa 'C'
<small>-- eventos pendentes</small>


  AND Nvl(agenda.apagar_ao_sair, 'N') <> 'X'
<small>'''and   ev.status = 'P'''' </small>


 -- cliente tem flag de envio liberado
<small>-- nao pode estar na tabela de disparo, pois se ja esta, ja chegou onde queriamos</small>


 and nvl(div.crm_sms,'N') = 'N' 
'''<small>and ev.cod_evento not in (select cod_evento from crm_disparo_fila)</small>'''


 -- pega a turma do futuro: amanha, conforme parametro. se vazio poe 1 dia na frente
<small>-- nao pode ter flags marcado</small>


 and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) >=  trunc(sysdate)
'''<small>and nvl(div.crm_sms,'N') = 'N'</small>'''


 and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) <   trunc(sysdate+1)
<small>-- so pega valido celular</small>


 --telefone celular tem que ser valido
<small>'''and length(trim(cli.prefixo_cel)) = 2  and length(trim(cli.telefone_cel)) in (8,9)''' </small>


 and length(cli.prefixo_cel)   = 2
<small>-- pega os agendados para hoje (ou seja,ligaria hoje para agendar)</small>


 and length(cli.telefone_cel) >= 8
'''<small>and ev.data_novo_contato >= trunc(sysdate)</small>'''


No Show - Query que lê as Agendas que não compareceram e alimenta a fila
'''<small>and ev.data_novo_contato <  trunc(sysdate+1)</small>'''
'''<big>Query que lê a fila de disparos e envia mensagem</big>'''
SELECT   disparo.template,


         fila.ddd,
'''<big>Lembrete - Query que seleciona os eventos Agendados a confirmar para disparo</big>'''
<small>SELeCT agenda.cod_empresa, agenda.cod_os_agenda , </small>


         fila.celular,
<small> cli.prefixo_cel , cli.telefone_cel, agenda.data_agendada</small>


         fila.cod_empresa,
<small> from  os_agenda agenda , clientes cli, crm_parm_fluxo parm, cliente_diverso div</small>


         fila.cod_evento,
<small> where agenda.cod_cliente = cli.cod_cliente</small>


         disparo.id_disparo,
<small> and   agenda.cod_empresa = parm.cod_empresa</small>


         disparo.template,
<small> and   cli.cod_cliente    = div.cod_cliente</small>


         fila.id_disparo_fila,
<small> '''and agenda.status_agenda = 'A' -- se ja confirmada nao precisa 'C''''</small>


         Nvl(fila.cod_os_agenda, ag.cod_os_agenda) cod_os_agenda
<small>  AND Nvl(agenda.apagar_ao_sair, 'N') <> 'X'</small>


FROM     crm_disparo disparo,
<small> -- cliente tem flag de envio liberado</small>


         crm_disparo_fila fila,
<small> '''and nvl(div.crm_sms,'N') = 'N'''' </small>


         os_agenda ag
<small> -- pega a turma do futuro: amanha, conforme parametro. se vazio poe 1 dia na frente</small>
 
<small> '''and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) >=  trunc(sysdate)'''</small>
 
'''<small> and (agenda.data_agendada - nvl(parm.tempo_aviso_recepcao,1)) <   trunc(sysdate+1)</small>'''
 
<small> --telefone celular tem que ser valido</small>
 
<small> '''and length(cli.prefixo_cel)   = 2   and length(cli.telefone_cel) >= 8'''</small>
 
'''<big>No Show - Query que lê as Agendas que não compareceram e alimenta a fila</big>'''
<small>SELeCT agenda.cod_empresa, agenda.cod_os_agenda , cli.prefixo_cel , cli.telefone_cel, agenda.data_agendada</small>
 
<small>from  os_agenda agenda , clientes cli, crm_parm_fluxo parm, CRM_EVENTOS EV,   cliente_diverso div</small>
 
<small>where agenda.cod_cliente = cli.cod_cliente</small>
 
<small>and   agenda.cod_empresa = parm.cod_empresa</small>
 
<small>AND AGENdA.CRM_COD_EMPRESA = EV.COD_EMPRESA</small>
 
<small>and agenda.crm_cod_evento  = ev.cod_evento</small>
 
<small>and  cli.cod_cliente    = div.cod_cliente</small>
 
<small>-- Cliente nao pode ter flags marcado</small>
 
<small>'''and nvl(div.crm_sms,'N') = 'N''''</small>
 
<small>-- AGENDA TEM QUE ESTAR ATIVA</small>
 
<small>AND Nvl(agenda.apagar_ao_sair, 'N') <> 'X'</small>
 
<small>'''AND agenda.status_agenda IN ('C', 'A')'''</small>
 
<small>-- TEM QUE SER HOJE</small>
 
<small>'''and (agenda.data_agendada) >=  trunc(sysdate)  and  (agenda.data_agendada) <   trunc(sysdate+1)'''</small>
 
<small>-- QUE QUE TER ULTRAPASSADO O LIMITE DE HORAS . SE NAO MARCARAM O PARAMEtro VOU COLCOAR 4 HORAS</small>
 
<small>'''and (SYSDATE  - agenda.data_agendada)/24 >   nvl(PARM.tempo_horas_para_voltar_agenda,(4/24))'''</small>
 
<small>--telefone celular tem que ser valido</small>
 
<small>'''and length(cli.prefixo_cel)   = 2  and length(cli.telefone_cel) >= 8'''</small>
 
'''<big>Query que lê a fila TODOS os tipos de disparos e envia mensagem</big>'''
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
WHERE    disparo.id_disparo = fila.id_disparo
Linha 65: Linha 118:
         AND fila.cod_evento = ag.crm_cod_evento(+)
         AND fila.cod_evento = ag.crm_cod_evento(+)


         AND EXISTS (SELECT a.cod_evento
'''-- tem que existir dados no template'''


                     FROM   vw_crm_template_agendamento a
         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)


                     WHERE  a.cod_empresa = fila.cod_empresa
'''-- disparos com data menor que agora'''


                            AND a.cod_evento = fila.cod_evento)
         AND fila.data_disparo <= SYSDATE


         AND fila.data_disparo <= SYSDATE
'''-- Celular valido'''


         AND Length(fila.ddd) = 2
         AND Length(fila.ddd) = 2         AND Length(celular) >= 8


         AND Length(celular) >= 8
'''--Eventos ativos'''


         AND fila.status = 'P'
         AND fila.status = 'P'


         AND EXISTS (SELECT 1
'''-- parâmetro de Ativar LEADZAP OK'''
 
                     FROM   crm_parm_fluxo p
 
                     WHERE  p.cod_empresa = fila.cod_empresa
 
                            AND Nvl(p.ativar_leadzap, 'N') = 'S')


         AND EXISTS (SELECT 1
         AND EXISTS (SELECT 1                FROM   crm_parm_fluxo p              WHERE  p.cod_empresa = fila.cod_empresa                 AND Nvl(p.ativar_leadzap, 'N') = 'S')


                     FROM   crm_whatsapp_empresa a
'''- Empresa tem que estar cruzada com algum número de LEADZAP'''


                     WHERE  a.cod_empresa = fila.cod_empresa)
         AND EXISTS (SELECT 1         FROM   crm_whatsapp_empresa a         WHERE  a.cod_empresa = fila.cod_empresa)


ORDER BY fila.cod_empresa
ORDER BY fila.cod_empresa

Edição das 18h48min de 18 de agosto de 2020

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