Files
2024-05-13 12:54:14 +02:00

88 lines
3.7 KiB
SQL

CREATE OR REPLACE PROCEDURE P_REPORT_KPI(P_DATA_DA DATE, P_DATA_A DATE) IS
v_mese_comp varchar2(10);
v_rich_attese_controllo number;
v_rich_attese_contrattuali number;
v_rich_inviate_controllo number;
v_perc_controllo number;
v_rich_ricevute_contrattuali number;
v_perc_contrattuali number;
BEGIN
BEGIN
-- ESTRAZIONE DELLE INFORMAZIONI PER I KPI DI CONTROLLO
SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC
INTO v_mese_comp, v_rich_attese_controllo, v_rich_inviate_controllo, v_perc_controllo
FROM
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12
FROM MNP.MNP_GESTIONE_RICHIESTA GR, MNP.MNP_XML_RICHIESTA_OUT MTI, MNP.MNP_XML_OUT XO
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA
AND MTI.NOME_FILE= XO.NOME_FILE
AND XO.TIPO_FILE =6
AND XO.DESTINATARIO <> 'NPTS'
AND XO.DATA_INVIO <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI')
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
) A,
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE
FROM MNP_GESTIONE_RICHIESTA GR
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
)B
WHERE A.MESE_COMP = B.MESE_COMP;
EXCEPTION WHEN OTHERS THEN
v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY');
v_rich_attese_controllo := 0;
v_rich_inviate_controllo := 0;
v_perc_controllo := 0;
END;
--
BEGIN
-- ESTRAZIONE DELLE INFORMAZIONI PER I KPI CONTRATTUALI
SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC
INTO v_mese_comp, v_rich_attese_contrattuali, v_rich_ricevute_contrattuali, v_perc_contrattuali
FROM
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12
FROM MNP_GESTIONE_RICHIESTA GR,
( select t.id_richiesta, min(t.data_ricezione) data_ricezione
from mnp_mss_cessazione_in t
group by id_richiesta) MTI
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA(+)
AND GR.STATO IN (15, 16)
AND MTI.DATA_RICEZIONE <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI')
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
) A,
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE
FROM MNP_GESTIONE_RICHIESTA GR
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
)B
WHERE A.MESE_COMP = B.MESE_COMP;
EXCEPTION WHEN OTHERS THEN
v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY');
v_rich_attese_contrattuali := 0;
v_rich_ricevute_contrattuali := 0;
v_perc_contrattuali := 0;
END;
-- INSERIMENTO DATI IN TABELLA
INSERT INTO MNP_DW_REPORT_KPI (MESE_COMP, NUM_RICH_ATTESE_CONTROLLO, NUM_RICH_ATTESE_CONTRATTUALI, NUM_RICH_OK12_CONTROLLO,
NUM_RICH_OK12_CONTRATTUALI, PERC_CONTROLLO, PERC_CONTRATTUALI, DATA_ESECUZIONE)
VALUES (v_mese_comp, v_rich_attese_controllo, v_rich_attese_contrattuali, v_rich_inviate_controllo, v_rich_ricevute_contrattuali,
v_perc_controllo, v_perc_contrattuali, SYSDATE);
COMMIT;
END P_REPORT_KPI;
/