Vw crm service programacao
Esta view seleciona todas as campanhas ativas e o numero de Eventos que as mesmas tem
SELECT RESULTADO.ID_PROG,
PROG_NOME,
EQUALIZAR,
TOT_EVENTOS,
TOT_AGENTE,
RESULTADO.NOME,
TOT_EVENTO_RESP
FROM EMPRESAS_USUARIOS EU,
(SELECT NOVA_PROG.ID_PROG,
NOVA_PROG.PROG_NOME,
NOVA_PROG.EQUALIZAR,
NOVA_PROG.TOT_EVENTOS,
NOVA_PROG.TOT_AGENTE,
CEIL(NOVA_PROG.TOT_EVENTOS / NOVA_PROG.TOT_AGENTE) TOT_EV_AGENTE,
RESP.NOME,
RESP.TOT_EVENTO_RESP
FROM (
-- pega todos os AGENTES do TIME, neste momento. Passado nao importa
SELECT MEMBRO.NOME NOME,
CPA.ID_PROG,
(SELECT COUNT(*)
FROM CRM_EVENTOS EV
WHERE EV.STATUS = 'P'
AND EV.COD_PROGRAMACAO > 0
AND EV.RESPONSAVEL_PELO_EVENTO = MEMBRO.NOME) TOT_EVENTO_RESP
FROM CRM_TIME_MEMBRO MEMBRO,
CRM_PROG_AUTOMATICA CPA,
EMPRESAS_USUARIOS EU
WHERE MEMBRO.ID_TIME = CPA.ID_TIME
AND MEMBRO.NOME = EU.NOME
AND NVL(EU.DEMITIDO, 'N') = 'N'
GROUP BY membro.nome, cpa.id_prog) RESP,
-- pega dados da campanha
(SELECT A.ID_PROG,
A.EQUALIZAR,
A.DESCRICAO PROG_NOME,
COUNT(*) TOT_EVENTOS,
TIM.TOT_AGENTE
FROM CRM_EVENTOS EV,
CRM_PROG_AUTOMATICA A,
(SELECT ID_TIME, COUNT(*) TOT_AGENTE
FROM CRM_TIME_MEMBRO CTM, EMPRESAS_USUARIOS EU
WHERE CTM.NOME = EU.NOME
AND NVL(EU.DEMITIDO, 'N') = 'N'
GROUP BY ID_TIME) TIM
-- ----------------------------------------------------------------------------------------------
WHERE A.ATIVO = 'S'
-- PEGA O TOTAL DE AGENTES DO TIME
AND A.ID_TIME = TIM.ID_TIME
-- FILTROS EMPRESA TIPO EVENTO
AND EXISTS (SELECT 1
FROM CRM_PROG_EMPRESA
WHERE ID_PROG = A.ID_PROG --DA QUERY.PROGRAMACAO
AND COD_EMPRESA = EV.COD_EMPRESA)
AND EXISTS
(SELECT 1
FROM CRM_PROG_TIPO
WHERE ID_PROG = A.ID_PROG
AND COD_TIPO_EVENTO = EV.COD_TIPO_EVENTO)
-- SOMENTE PENDENTES E NAO PROGRAMADOS
AND EV.STATUS = 'P'
AND EV.COD_PROGRAMACAO IS NULL
-- PEGA A DATA PROXIMO CONTATO ALEM DA ULTIMA LEITURA
AND TRUNC(NVL(EV.DATA_NOVO_CONTATO, EV.DATA_EVENTO)) >= NVL(TRUNC(A.ULTIMO_DIA_LIDO) - 1, TRUNC(SYSDATE) - 1) -- SEMPRE VOLTA 1 DIA PRA PEGAR OS QUE ENTRARAM NO DIA
AND TRUNC(NVL(EV.DATA_NOVO_CONTATO, EV.DATA_EVENTO)) <= NVL(TRUNC(A.ULTIMO_DIA_LIDO) - 1, TRUNC(SYSDATE) - 1) + DECODE(PERIODO_LEITURA, 'D', 1, 'S', 7, 'Q', 15, 'M', 30)
GROUP BY ID_PROG, TIM.TOT_AGENTE, A.EQUALIZAR, A.DESCRICAO) nova_prog
WHERE RESP.ID_PROG = NOVA_PROG.ID_PROG
) RESULTADO
--
WHERE EU.NOME = RESULTADO.NOME
ORDER BY EU.FILA_WHATSAPP DESC;