Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/report/sql/NumeroAttivazNonEffettuate.sql
2024-05-13 12:54:14 +02:00

223 lines
8.7 KiB
SQL

SET serveroutput on
DECLARE
rs1 VARCHAR2 (255);
rs2 VARCHAR2 (255);
operatore VARCHAR2 (15);
operatore_res VARCHAR2 (15);
operatore_ VARCHAR2 (15);
dir_out VARCHAR2 (255);
num NUMBER (15, 0);
totale NUMBER (15, 0);
cod_ope VARCHAR2 (15);
cod VARCHAR2 (4);
file1 UTL_FILE.file_type;
data_inizio DATE;
data_fine DATE;
DATA DATE;
di DATE;
p VARCHAR2 (15) := '&1';
cod_olo NUMBER (5);
--cursore degli operatori
CURSOR cur_operatori
IS
SELECT desc_olo, cod_olo
FROM mnp_olo_report
WHERE flag_attivo = 1 AND desc_olo NOT IN ('TIMT', 'TIMG')
ORDER BY desc_olo;
--Numero di attivazioni non effettuate da un operatore in qualita di terza parte
CURSOR cur_res (
data_inizio DATE,
data_fine DATE,
cod_olo NUMBER,
operatore VARCHAR2
)
IS
SELECT olo.desc_olo, NVL (SUM (x.num), 0)
FROM mnp_olo_report olo,
(SELECT COUNT (r.id_richiesta) num,
codice_operatore_donating cod
FROM mnp_gestione_richiesta_rec r
WHERE r.data_cut_over_calc >= TRUNC (data_inizio)
AND r.data_cut_over_calc <= TRUNC (data_fine)
AND r.espletamentoterzeparti LIKE '%' || cod_olo || '%'
AND r.codice_operatore_donating != operatore
AND r.codice_operatore_donating = 'TIMT'
AND r.stato IN (8, 10, 11)
GROUP BY codice_operatore_donating
UNION ALL
SELECT COUNT (r.id_richiesta) num,
codice_operatore_donating cod
FROM mnp_gestione_richiesta_rec r
WHERE r.data_cut_over_aom >= TRUNC (data_inizio)
AND r.data_cut_over_aom <= TRUNC (data_fine)
AND r.espletamentoterzeparti LIKE '%' || cod_olo || '%'
AND r.codice_operatore_donating != operatore
AND r.codice_operatore_donating != 'TIMT'
AND r.stato IN (8, 10, 11)
GROUP BY codice_operatore_donating
UNION ALL
SELECT COUNT (r.id_richiesta) num,
codice_operatore_donating cod
FROM mnp_gestione_richiesta_rec r
WHERE r.data_cut_over_calc >= TRUNC (data_inizio)
AND r.data_cut_over_calc <= TRUNC (data_fine)
AND r.codice_operatore_donating != operatore
AND r.codice_operatore_donating = 'TIMT'
AND r.stato IN (8, 10, 11, 12)
AND EXISTS (
SELECT xri.id_richiesta
FROM mnp_xml_in xi, mnp_xml_richiesta_in xri
WHERE xi.tipo_file = 6
AND xi.mittente = operatore
AND xi.nome_file = xri.nome_file
AND xri.id_richiesta = r.id_richiesta
AND xri.richiestaxml LIKE
'%<STATO_RICHIESTA_NOTIFICA>4%'
AND TRUNC (xi.data_eff) > r.data_cut_over_calc
MINUS
SELECT xri.id_richiesta
FROM mnp_xml_in xi, mnp_xml_richiesta_in xri
WHERE xi.tipo_file = 6
AND xi.mittente = operatore
AND xi.nome_file = xri.nome_file
AND xri.id_richiesta = r.id_richiesta
AND xri.richiestaxml LIKE
'%<STATO_RICHIESTA_NOTIFICA>4%'
AND TRUNC (xi.data_eff) <= r.data_cut_over_calc)
GROUP BY codice_operatore_donating
UNION ALL
SELECT COUNT (r.id_richiesta) num,
codice_operatore_donating cod
FROM mnp_gestione_richiesta_rec r
WHERE r.data_cut_over_aom >= TRUNC (data_inizio)
AND r.data_cut_over_aom <= TRUNC (data_fine)
AND r.codice_operatore_donating != operatore
AND r.codice_operatore_donating != 'TIMT'
AND r.stato IN (8, 10, 11, 12)
AND EXISTS (
SELECT xri.id_richiesta
FROM mnp_xml_in xi, mnp_xml_richiesta_in xri
WHERE xi.tipo_file = 6
AND xi.mittente = operatore
AND xi.nome_file = xri.nome_file
AND xri.id_richiesta = r.id_richiesta
AND xri.richiestaxml LIKE
'%<STATO_RICHIESTA_NOTIFICA>4%'
AND TRUNC (xi.data_eff) > r.data_cut_over_aom
MINUS
SELECT xri.id_richiesta
FROM mnp_xml_in xi, mnp_xml_richiesta_in xri
WHERE xi.tipo_file = 6
AND xi.mittente = operatore
AND xi.nome_file = xri.nome_file
AND xri.id_richiesta = r.id_richiesta
AND xri.richiestaxml LIKE
'%<STATO_RICHIESTA_NOTIFICA>4%'
AND TRUNC (xi.data_eff) <= r.data_cut_over_aom)
GROUP BY codice_operatore_donating) x
WHERE olo.flag_attivo = 1 AND olo.desc_olo = x.cod(+)
GROUP BY olo.desc_olo
ORDER BY desc_olo;
--INIZIO
BEGIN
IF (p <> 'nullo')
THEN
data_inizio := TO_DATE ('&1', 'dd/mm/yyyy');
data_fine := TO_DATE ('&2', 'dd/mm/yyyy');
dir_out := '&3';
ELSE
IF (TO_CHAR (SYSDATE, 'DD') <= '15')
THEN
DATA := ADD_MONTHS ((TRUNC (SYSDATE)), -1);
data_inizio :=
TO_DATE ('16/' || TO_CHAR (TRUNC (DATA), 'mm/yyyy'),
'dd/mm/yyyy');
data_fine := LAST_DAY (TRUNC (DATA));
ELSE
data_inizio :=
TO_DATE ('01/' || TO_CHAR (TRUNC (SYSDATE), 'mm/yyyy'),
'dd/mm/yyyy'
);
data_fine :=
TO_DATE ('15/' || TO_CHAR (TRUNC (SYSDATE), 'mm/yyyy'),
'dd/mm/yyyy'
);
END IF;
SELECT donor_out
INTO dir_out
FROM mnp_olo_report
WHERE desc_olo = 'MONIT';
END IF;
BEGIN
OPEN cur_operatori;
LOOP
FETCH cur_operatori
INTO operatore, cod_olo;
EXIT WHEN cur_operatori%NOTFOUND;
totale := 0;
file1 :=
UTL_FILE.fopen (dir_out,
'TIMG_to_'
|| UPPER (operatore)
|| '_AttivazioneNonEffet_'
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|| '.csv',
'w'
);
UTL_FILE.put_line
(file1,
'Numero di attivazioni non effettuate da '
|| UPPER (operatore)
|| ' in qualità di operatore terza parte il giorno di cut_over previsto'
);
UTL_FILE.put_line (file1, ' ');
UTL_FILE.put_line (file1,
'Periodo dal '
|| TRUNC (data_inizio)
|| ' al '
|| TRUNC (data_fine)
);
UTL_FILE.put_line (file1, ' ');
UTL_FILE.put_line (file1,
'Operatore OLO terza Parte: ' || UPPER (operatore)
);
UTL_FILE.put_line (file1, ' ');
UTL_FILE.put_line (file1, ';TIMG ');
OPEN cur_res (data_inizio, data_fine, cod_olo, operatore);
LOOP
FETCH cur_res
INTO operatore_, num;
EXIT WHEN cur_res%NOTFOUND;
UTL_FILE.put_line (file1, operatore_ || ';' || num);
totale := totale + num;
END LOOP;
CLOSE cur_res;
UTL_FILE.put_line (file1, 'Totale' || ';' || totale);
END LOOP;
UTL_FILE.fflush (file1);
UTL_FILE.fclose (file1);
CLOSE cur_operatori;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;
END;
/
EXIT;