223 lines
8.7 KiB
SQL
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;
|