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

3286 lines
121 KiB
SQL

CREATE OR REPLACE PACKAGE PKG_CALCOLO_SLA_FRANCHIGIA AS
/******************************************************************************
NAME: PKG_CALCOLO_SLA_FRANCHIGIA
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 11/02/2011 1. Created this package.
******************************************************************************/
PROCEDURE CALCOLO_SLA0_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA1_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA2_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA3_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA0_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA1_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA2_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA3_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA1_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA2_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA3_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA1_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA2_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA3_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
PROCEDURE CALCOLO_SLA_FRANCHIGIA(dataRif IN DATE);
END PKG_CALCOLO_SLA_FRANCHIGIA;
/
CREATE OR REPLACE package body PKG_CALCOLO_SLA_FRANCHIGIA as
procedure CALCOLO_SLA0_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_pic DATE;
temp_data_fin_pic DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftempH CHAR(2);
min_fin_ftempH CHAR(2);
sec_fin_ftempH CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA0_RECIPIENT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 1 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 9 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in_att
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_ack_out ack_out_pic
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 1 AND
rich_out.id_richiesta = a.id_richiesta AND
ack_in_att.nome_file_riferito = rich_out.nome_file AND
xml_out.nome_file = rich_out.nome_file AND
xml_in.tipo_file = 5 AND
rich_in.id_richiesta = rich_out.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out_pic.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( ack_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in_att
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_ack_out ack_out_pic
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in.tipo_file = 9 AND
rich_out.id_richiesta = a.id_richiesta AND
ack_in_att.nome_file_riferito = rich_out.nome_file AND
xml_out.nome_file = rich_out.nome_file AND
xml_in.tipo_file = 5 AND
rich_in.id_richiesta = rich_out.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out_pic.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( ack_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
ora_fin_ftempH := null;
min_fin_ftempH := null;
sec_fin_ftempH := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 9;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 5;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA0'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA0'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA0_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA0_RECIPIENT;
procedure CALCOLO_SLA1_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftempH CHAR(2);
min_fin_ftempH CHAR(2);
sec_fin_ftempH CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA1_RECIPIENT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 1 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
a.stato NOT IN (5,9) AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 9 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
a.stato NOT IN (5,9) AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in_att
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_ack_out ack_out_val
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 1 AND
rich_out.id_richiesta = a.id_richiesta AND
ack_in_att.nome_file_riferito = rich_out.nome_file AND
xml_out.nome_file = rich_out.nome_file AND
xml_in.tipo_file = 2 AND
rich_in.id_richiesta = rich_out.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out_val.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in_att
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_ack_out ack_out_val
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 9 AND
rich_out.id_richiesta = a.id_richiesta AND
ack_in_att.nome_file_riferito = rich_out.nome_file AND
xml_out.nome_file = rich_out.nome_file AND
xml_in.tipo_file = 2 AND
rich_in.id_richiesta = rich_out.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out_val.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_in_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
ack_out_val.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=2 --validazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
ora_fin_ftempH := null;
min_fin_ftempH := null;
sec_fin_ftempH := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 9;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA1_RECIPIENT;
procedure CALCOLO_SLA2_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA2_RECIPIENT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
,a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in.tipo_file = 2 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
a.stato <> 7 AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in.tipo_file = 2 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
a.stato <> 7 AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_in xml_in_esp
,mnp.mnp_xml_richiesta_in rich_in_esp
,mnp.mnp_xml_ack_out ack_out_esp
,mnp.mnp_xml_in xml_in_val
,mnp.mnp_xml_richiesta_in rich_in_val
,mnp.mnp_xml_ack_out ack_out_val
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in_esp.tipo_file = 6 AND
rich_in_esp.id_richiesta = a.id_richiesta AND
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
xml_in_esp.nome_file = rich_in_esp.nome_file AND
xml_in_val.tipo_file = 2 AND
rich_in_val.id_richiesta = rich_in_esp.id_richiesta AND
xml_in_val.nome_file = rich_in_val.nome_file AND
ack_out_val.nome_file_riferito = rich_in_val.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
a.CODICE_OPERATORE_DONATING= xml_in_esp.MITTENTE AND
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_in xml_in_esp
,mnp.mnp_xml_richiesta_in rich_in_esp
,mnp.mnp_xml_ack_out ack_out_esp
,mnp.mnp_xml_in xml_in_val
,mnp.mnp_xml_richiesta_in rich_in_val
,mnp.mnp_xml_ack_out ack_out_val
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in_esp.tipo_file = 6 AND
rich_in_esp.id_richiesta = a.id_richiesta AND
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
xml_in_esp.nome_file = rich_in_esp.nome_file AND
xml_in_val.tipo_file = 2 AND
rich_in_val.id_richiesta = rich_in_esp.id_richiesta AND
xml_in_val.nome_file = rich_in_val.nome_file AND
ack_out_val.nome_file_riferito = rich_in_val.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
a.CODICE_OPERATORE_DONATING= xml_in_esp.MITTENTE AND
to_date( SUBSTR( ack_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp AND
ack_out_val.NOME_FILE = (select max(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in_val.ID_RICHIESTA
AND x.TIPO_FILE=2 --validazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE= 'AOM';
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA2_RECIPIENT;
procedure CALCOLO_SLA3_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_por DATE;
temp_data_fin_por DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA3_RECIPIENT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
,xml_out.destinatario as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_out.tipo_file = 3 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
xml_out.destinatario <> a.codice_operatore_donating AND
xml_out.destinatario <> 'NPTS' AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
,xml_out_por.destinatario as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_rec a
,mnp.mnp_xml_in xml_in_esp
,mnp.mnp_xml_richiesta_in rich_in_esp
,mnp.mnp_xml_ack_out ack_out_esp
,mnp.mnp_xml_out xml_out_por
,mnp.mnp_xml_richiesta_out rich_out_por
,mnp.mnp_xml_ack_in ack_in_por
WHERE
a.codice_operatore_rec_eff = 'TIMG' AND
xml_in_esp.tipo_file = 6 AND
rich_in_esp.id_richiesta = a.id_richiesta AND
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
xml_in_esp.nome_file = rich_in_esp.nome_file AND
xml_out_por.tipo_file = 3 AND
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
xml_out_por.nome_file = rich_out_por.nome_file AND
ack_in_por.nome_file_riferito = rich_out_por.nome_file AND
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
xml_in_esp.mittente <> a.codice_operatore_donating AND
xml_in_esp.mittente <> 'NPTS' AND
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por AND
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out_por.destinatario,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 3;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA3'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'R'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA3'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA3_RECIPIENT;
procedure CALCOLO_SLA0_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_pic DATE;
temp_data_fin_pic DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftempH CHAR(2);
min_fin_ftempH CHAR(2);
sec_fin_ftempH CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA0_DONOR';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
xml_in.tipo_file = 1 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
xml_in.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=1 --attvazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
xml_in.tipo_file = 9 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
xml_in.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=9 --attvazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out_att
,mnp.mnp_xml_out xml_out_pic
,mnp.mnp_xml_richiesta_out rich_out
WHERE
xml_in.tipo_file = 1 AND
rich_in.id_richiesta = a.id_richiesta AND
ack_out_att.nome_file_riferito = rich_in.nome_file AND
xml_in.nome_file = rich_in.nome_file AND
xml_out_pic.tipo_file = 5 AND
rich_out.id_richiesta = rich_in.id_richiesta AND
xml_out_pic.nome_file = rich_out.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( xml_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic AND
xml_in.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=1 --attvazione
AND y.NOME_FILE = x.NOME_FILE
) AND
xml_out_pic.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=5 --pic
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out_att
,mnp.mnp_xml_out xml_out_pic
,mnp.mnp_xml_richiesta_out rich_out
WHERE
xml_in.tipo_file = 9 AND
rich_in.id_richiesta = a.id_richiesta AND
ack_out_att.nome_file_riferito = rich_in.nome_file AND
xml_in.nome_file = rich_in.nome_file AND
xml_out_pic.tipo_file = 5 AND
rich_out.id_richiesta = rich_in.id_richiesta AND
xml_out_pic.nome_file = rich_out.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( xml_out_pic.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_pic AND temp_data_fin_pic AND
xml_in.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=9 --attvazione
AND y.NOME_FILE = x.NOME_FILE
) AND
xml_out_pic.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=5 --pic
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
ora_fin_ftempH := null;
min_fin_ftempH := null;
sec_fin_ftempH := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 9;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 5;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA0'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA0'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_pic:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA0'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA0_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA0_DONOR;
procedure CALCOLO_SLA1_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftempH CHAR(2);
min_fin_ftempH CHAR(2);
sec_fin_ftempH CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA1_DONOR';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
xml_in.tipo_file = 1 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
a.stato <> 4 AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
xml_in.tipo_file = 9 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
a.stato <> 4 AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out_att
,mnp.mnp_xml_out xml_out_val
,mnp.mnp_xml_richiesta_out rich_out
WHERE
xml_in.tipo_file = 1 AND
rich_in.id_richiesta = a.id_richiesta AND
ack_out_att.nome_file_riferito = rich_in.nome_file AND
xml_in.nome_file = rich_in.nome_file AND
xml_out_val.tipo_file = 2 AND
rich_out.id_richiesta = rich_in.id_richiesta AND
xml_out_val.nome_file = rich_out.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( xml_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out_att
,mnp.mnp_xml_out xml_out_val
,mnp.mnp_xml_richiesta_out rich_out
WHERE
xml_in.tipo_file = 9 AND
rich_in.id_richiesta = a.id_richiesta AND
ack_out_att.nome_file_riferito = rich_in.nome_file AND
xml_in.nome_file = rich_in.nome_file AND
xml_out_val.tipo_file = 2 AND
rich_out.id_richiesta = rich_in.id_richiesta AND
xml_out_val.nome_file = rich_out.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_out_att.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_att AND temp_data_fin_att AND
to_date( SUBSTR( xml_out_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
xml_out_val.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
AND x.TIPO_FILE=2 --validazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
ora_fin_ftempH := null;
min_fin_ftempH := null;
sec_fin_ftempH := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 9;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA1_DONOR;
procedure CALCOLO_SLA2_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA2_DONOR';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
xml_out.tipo_file = 2 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
a.stato <> 10 AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_attesi_hoc is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
xml_out.tipo_file = 2 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
a.stato <> 10 AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_out rich_out_esp
,mnp.mnp_xml_richiesta_out rich_out_val
,mnp.mnp_xml_out xml_out_esp
,mnp.mnp_xml_out xml_out_val
,mnp.mnp_xml_ack_in ack_in_val
WHERE
xml_out_esp.tipo_file = 6 AND
rich_out_esp.id_richiesta = a.id_richiesta AND
rich_out_esp.nome_file=xml_out_esp.nome_file AND
ack_in_val.nome_file_riferito = rich_out_val.nome_file AND
xml_out_val.nome_file = rich_out_val.nome_file AND
xml_out_val.tipo_file = 2 AND
rich_out_val.id_richiesta = rich_out_esp.id_richiesta AND
xml_out_esp.DESTINATARIO <> 'NPTS' AND
(a.richiestaAdHocAom = 0 and a.richiestaAdHoc = 0 ) AND
to_date( SUBSTR( ack_in_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
to_date( SUBSTR( xml_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla_hoc is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, a.CODICE_OPERATORE_DONATING as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta a
,mnp.mnp_xml_richiesta_out rich_out_esp
,mnp.mnp_xml_richiesta_out rich_out_val
,mnp.mnp_xml_out xml_out_esp
,mnp.mnp_xml_out xml_out_val
,mnp.mnp_xml_ack_in ack_in_val
WHERE
xml_out_esp.tipo_file = 6 AND
rich_out_esp.id_richiesta = a.id_richiesta AND
rich_out_esp.nome_file=xml_out_esp.nome_file AND
ack_in_val.nome_file_riferito = rich_out_val.nome_file AND
xml_out_val.nome_file = rich_out_val.nome_file AND
xml_out_val.tipo_file = 2 AND
rich_out_val.id_richiesta = rich_out_esp.id_richiesta AND
xml_out_esp.DESTINATARIO <> 'NPTS' AND
(a.richiestaAdHocAom > 0 or a.richiestaAdHoc > 0 ) AND
to_date( SUBSTR( ack_in_val.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_val AND temp_data_fin_val AND
to_date( SUBSTR( xml_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp AND
xml_out_val.NOME_FILE = (select max(X.NOME_FILE)
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
WHERE y.ID_RICHIESTA= rich_out_val.ID_RICHIESTA
AND x.TIPO_FILE=2 --validazione
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING,a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'AOM';
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
END LOOP;
--carico gli eventi attesi per pHOC
FOR rec IN eventi_attesi_hoc LOOP
BEGIN
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO, MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
EXCEPTION -- potrebbe essere già presente un record per progetti std/mvno. In questo caso devo sommare
WHEN dup_val_on_index
THEN BEGIN
-- lettura dati preesistenti
SELECT EVENTI_ATTESI
INTO eventi
FROM MNP_DW_SLA_FRANCHIGIA_OUT
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
eventi:= eventi + rec.eventiAttesi;
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_ATTESI = eventi
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END;
END;
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
FOR rec IN eventi_in_SLA_hoc LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = EVENTI_IN_SLA + rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_attesi_hoc%ISOPEN then CLOSE eventi_attesi_hoc;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
if eventi_in_sla_hoc%ISOPEN then CLOSE eventi_in_sla_hoc;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA2_DONOR;
procedure CALCOLO_SLA3_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_por DATE;
temp_data_fin_por DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA3_DONOR';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_porting a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
WHERE
xml_in.tipo_file = 3 AND
rich_in.id_richiesta = a.id_richiesta AND
xml_in.nome_file = rich_in.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,a.CODICE_OPERATORE_RECIPIENT as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DON_EFF as donorEffettivo
,a.codice_operatore_rec_eff as recipientEffettivo
FROM
mnp.mnp_gestione_richiesta_porting a
,mnp.mnp_xml_richiesta_in rich_in
,mnp.mnp_xml_in xml_in
,mnp.mnp_xml_ack_out ack_out
,mnp.mnp_xml_richiesta_out rich_out_esp
,mnp.mnp_xml_out xml_out_esp
WHERE
xml_out_esp.tipo_file = 6 AND
rich_out_esp.id_richiesta = a.id_richiesta AND
rich_out_esp.nome_file=xml_out_esp.nome_file AND
ack_out.nome_file_riferito = rich_in.nome_file AND
xml_in.nome_file = rich_in.nome_file AND
xml_in.tipo_file = 3 AND
rich_in.id_richiesta = rich_out_esp.id_richiesta AND
xml_out_esp.DESTINATARIO <> 'NPTS' AND
to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por AND
to_date( SUBSTR( xml_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp AND
xml_out_esp.NOME_FILE = (select min(X.NOME_FILE)
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
WHERE y.ID_RICHIESTA= rich_out_esp.ID_RICHIESTA
AND x.TIPO_FILE=6 --espletamento
AND y.NOME_FILE = x.NOME_FILE
)
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DON_EFF, a.codice_operatore_rec_eff;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 3;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA3'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'D'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di espl da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA3'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA3_DONOR;
procedure CALCOLO_SLA1_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA1_DONOR_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_DONOR_VIRT a
,mnp.MNP_STORICO_RICH_DON_VIRT sto
WHERE
a.id_richiesta = sto.id_richiesta AND
sto.stato_a = 2 AND
sto.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_DONOR_VIRT a
,mnp.MNP_STORICO_RICH_DON_VIRT sto_in
,mnp.MNP_STORICO_RICH_DON_VIRT sto_fin
WHERE
a.id_richiesta = sto_in.id_richiesta AND
a.id_richiesta = sto_fin.id_richiesta AND
sto_in.stato_a = 2 AND
sto_fin.stato_a IN (6,7) AND
sto_in.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att AND
sto_fin.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA1_DONOR_VIRT;
procedure CALCOLO_SLA2_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA2_DONOR_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_DONOR_VIRT a
,mnp.MNP_STORICO_RICH_DON_VIRT sto
WHERE
a.id_richiesta = sto.id_richiesta AND
sto.stato_a = 6 AND
sto.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_DONOR_VIRT a
,mnp.MNP_STORICO_RICH_DON_VIRT sto_in
,mnp.MNP_STORICO_RICH_DON_VIRT sto_fin
WHERE
a.id_richiesta = sto_in.id_richiesta AND
a.id_richiesta = sto_fin.id_richiesta AND
sto_in.stato_a = 6 AND
sto_fin.stato_a =10 AND
sto_in.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val AND
sto_fin.data_i_o BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA2_DONOR_VIRT;
procedure CALCOLO_SLA3_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_por DATE;
temp_data_fin_por DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA3_DONOR_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
,xml_out.destinatario as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.mnp_gest_rich_donor_virt a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
xml_out.tipo_file = 3 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
xml_out.destinatario <> 'TIMG' AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,a.codice_operatore_donating;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
,xml_out_por.destinatario as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.mnp_gest_rich_donor_virt a
,mnp.mnp_xml_in xml_in_esp
,mnp.mnp_xml_richiesta_in rich_in_esp
,mnp.mnp_xml_ack_out ack_out_esp
,mnp.mnp_xml_out xml_out_por
,mnp.mnp_xml_richiesta_out rich_out_por
,mnp.mnp_xml_ack_in ack_in_por
WHERE
xml_in_esp.tipo_file = 6 AND
rich_in_esp.id_richiesta = a.id_richiesta AND
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
xml_in_esp.nome_file = rich_in_esp.nome_file AND
xml_out_por.tipo_file = 3 AND
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
xml_out_por.nome_file = rich_out_por.nome_file AND
ack_in_por.nome_file_riferito = rich_out_por.nome_file AND
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
xml_in_esp.mittente <> a.codice_operatore_donating AND
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por AND
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out_por.destinatario,a.CODICE_OPERATORE_donating;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 3;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA3'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA3'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_DON_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA3_DONOR_VIRT;
procedure CALCOLO_SLA1_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_att DATE;
temp_data_fin_att DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA1_REC_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_REC_VIRT a
,mnp.MNP_STORICO_RICH_REC_VIRT sto
WHERE
a.id_richiesta = sto.id_richiesta AND
sto.stato_a = 2 AND
sto.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_REC_VIRT a
,mnp.MNP_STORICO_RICH_REC_VIRT sto_in
,mnp.MNP_STORICO_RICH_REC_VIRT sto_fin
WHERE
a.id_richiesta = sto_in.id_richiesta AND
a.id_richiesta = sto_fin.id_richiesta AND
sto_in.stato_a = 2 AND
sto_fin.stato_a IN (6,7) AND
sto_in.data_i_o BETWEEN temp_data_in_att AND temp_data_fin_att AND
sto_fin.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 1;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
temp_data_fin_att:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),2);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA1'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA1'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA1_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA1_REC_VIRT;
procedure CALCOLO_SLA2_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_val DATE;
temp_data_fin_val DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA2_REC_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_REC_VIRT a
,mnp.MNP_STORICO_RICH_REC_VIRT sto
WHERE
a.id_richiesta = sto.id_richiesta AND
sto.stato_a = 6 AND
sto.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
, 'TIMG' as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.MNP_GEST_RICH_REC_VIRT a
,mnp.MNP_STORICO_RICH_REC_VIRT sto_in
,mnp.MNP_STORICO_RICH_REC_VIRT sto_fin
WHERE
a.id_richiesta = sto_in.id_richiesta AND
a.id_richiesta = sto_fin.id_richiesta AND
sto_in.stato_a = 6 AND
sto_fin.stato_a =10 AND
sto_in.data_i_o BETWEEN temp_data_in_val AND temp_data_fin_val AND
sto_fin.data_i_o BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, a.CODICE_OPERATORE_DONATING;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE = 'MVNO';
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_val:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA2'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA2'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA2_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA2_REC_VIRT;
procedure CALCOLO_SLA3_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
temp_data_in_esp DATE;
temp_data_fin_esp DATE;
temp_data_in_por DATE;
temp_data_fin_por DATE;
ora_fin_ftemp1 CHAR(2);
min_fin_ftemp1 CHAR(2);
sec_fin_ftemp1 CHAR(2);
ora_fin_ftemp2 CHAR(2);
min_fin_ftemp2 CHAR(2);
sec_fin_ftemp2 CHAR(2);
mese_comp CHAR(7);
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA3_REC_VIRT';
D_ini DATE;
D_fine DATE;
eventi NUMBER;
CURSOR eventi_attesi is
SELECT COUNT(*) AS eventiAttesi
,'TIMG' as recipientRete
,xml_out.destinatario as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.mnp_gest_rich_rec_virt a
,mnp.mnp_xml_richiesta_out rich_out
,mnp.mnp_xml_out xml_out
,mnp.mnp_xml_ack_in ack_in
WHERE
xml_out.tipo_file = 3 AND
rich_out.id_richiesta = a.id_richiesta AND
xml_out.nome_file = rich_out.nome_file AND
ack_in.nome_file_riferito = rich_out.nome_file AND
xml_out.destinatario <> 'TIMG' AND
to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out.destinatario,a.codice_operatore_donating;
CURSOR eventi_in_sla is
SELECT COUNT(*) AS eventiSLA
,'TIMG' as recipientRete
,xml_out_por.destinatario as donatingRete
,a.CODICE_OPERATORE_DONATING as donorEffettivo
,a.codice_operatore_recipient as recipientEffettivo
FROM
mnp.mnp_gest_rich_rec_virt a
,mnp.mnp_xml_in xml_in_esp
,mnp.mnp_xml_richiesta_in rich_in_esp
,mnp.mnp_xml_ack_out ack_out_esp
,mnp.mnp_xml_out xml_out_por
,mnp.mnp_xml_richiesta_out rich_out_por
,mnp.mnp_xml_ack_in ack_in_por
WHERE
xml_in_esp.tipo_file = 6 AND
rich_in_esp.id_richiesta = a.id_richiesta AND
ack_out_esp.nome_file_riferito = rich_in_esp.nome_file AND
xml_in_esp.nome_file = rich_in_esp.nome_file AND
xml_out_por.tipo_file = 3 AND
rich_out_por.id_richiesta = rich_in_esp.id_richiesta AND
xml_out_por.nome_file = rich_out_por.nome_file AND
ack_in_por.nome_file_riferito = rich_out_por.nome_file AND
xml_out_por.destinatario= xml_in_esp.MITTENTE AND
xml_in_esp.mittente <> a.codice_operatore_donating AND
to_date( SUBSTR( ack_in_por.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_por AND temp_data_fin_por AND
to_date( SUBSTR( ack_out_esp.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN temp_data_in_esp AND temp_data_fin_esp
GROUP BY
a.CODICE_OPERATORE_RECIPIENT, xml_out_por.destinatario,a.CODICE_OPERATORE_donating;
BEGIN
cod_errore := 0;
ora_fin_ftemp1 := null;
min_fin_ftemp1 := null;
sec_fin_ftemp1 := null;
ora_fin_ftemp2 := null;
min_fin_ftemp2 := null;
sec_fin_ftemp2 := null;
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
/*il mese di competenza viene impostato sull'evento finale*/
mese_comp:= TO_CHAR (dwh.FUN_GIORNI_MENO (dataRif,1),'mm/yyyy');
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 3;
-- per pic presa dal nome file out non sono previsti i 15 minuti
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
WHERE TIPO_FILE = 6;
--carico gli eventi attesi per std/MVNO
--calcolo l'intervallo di 24h dalla chiusura finestra del giorno precedente, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),4);
temp_data_fin_por:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS'),3);
FOR rec IN eventi_attesi LOOP
n_rec := n_rec +1;
INSERT INTO MNP_DW_SLA_FRANCHIGIA_OUT (
TIPO_EVENTO, DATA_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO,
DONOR_RETE, RECIPIENT_RETE, EVENTI_ATTESI, PROCESSO,MESE_COMP_FINALE)
VALUES (
'SLA3'
,trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
,rec.donorEffettivo
,rec.recipientEffettivo
,rec.donatingRete
,rec.recipientRete
,rec.eventiAttesi
,'V'
,mese_comp
);
END LOOP;
--aggiorno gli eventi in SLA per std/MVNO
--calcolo l'intervallo di pic da inizio giornata, alla chiusura finestra del giorno corrente di determinazione eventi
temp_data_in_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||'00' ||'00'||'01'),'YYYYMMDDHH24MISS'),1);
temp_data_fin_esp:= dwh.FUN_GIORNI_MENO(TO_DATE((TO_CHAR (dataRif, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS'),1);
FOR rec IN eventi_in_SLA LOOP
UPDATE MNP_DW_SLA_FRANCHIGIA_OUT
SET EVENTI_IN_SLA = rec.eventiSLA
WHERE TIPO_EVENTO = 'SLA3'
AND DATA_EVENTO = trunc(dwh.FUN_GIORNI_MENO (dataRif,1))
AND DONOR_EFFETTIVO = rec.donorEffettivo
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo
AND DONOR_RETE = rec.donatingRete;
END LOOP;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
EXCEPTION
WHEN OTHERS
THEN
if eventi_attesi%ISOPEN then CLOSE eventi_attesi;
end if;
if eventi_in_sla%ISOPEN then CLOSE eventi_in_sla;
end if;
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CALCOLO_SLA3_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END CALCOLO_SLA3_REC_VIRT;
procedure CALCOLO_SLA_FRANCHIGIA(dataRif IN Date) IS
cod_errore NUMBER (1);
cod_errore_sla0_don NUMBER (1):=0;
cod_errore_sla1_don NUMBER (1):=0;
cod_errore_sla2_don NUMBER (1):=0;
cod_errore_sla3_don NUMBER (1):=0;
cod_errore_sla0_rec NUMBER (1):=0;
cod_errore_sla1_rec NUMBER (1):=0;
cod_errore_sla2_rec NUMBER (1):=0;
cod_errore_sla3_rec NUMBER (1):=0;
cod_errore_sla1_don_virt NUMBER (1):=0;
cod_errore_sla2_don_virt NUMBER (1):=0;
cod_errore_sla3_don_virt NUMBER (1):=0;
cod_errore_sla1_rec_virt NUMBER (1):=0;
cod_errore_sla2_rec_virt NUMBER (1):=0;
cod_errore_sla3_rec_virt NUMBER (1):=0;
n_rec integer := 0;
proc_name constant varchar2(30) := 'CALCOLO_SLA_FRANCHIGIA';
D_ini DATE;
D_fine DATE;
dataRif1 DATE;
BEGIN
--dbms_output.enable(9999999);
D_ini:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: INIZIO PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
-----------------------------------------------------
-- VERIFICO SE DATA_RIF E' FERIALE. SE E' FESTIVO NON FACCIO NULLA
-----------------------------------------------------
IF FUN_DATE_FESTIVE(dataRif) = dataRif
THEN BEGIN
-----------------------------------------------------
-- VOGLIO CALCOLARE TUTTI GLI EVENTI CHE FANNO RIFERIMENTO AL GIORNO LAVORATIVO ANTERIORE A DATA RIF
-- EFFETTUO UNA DELETE PREVENTIVA DELLE TABELLA FRANCHIGIA PER LA GIORNATA DI INTERESSE
-----------------------------------------------------
dataRif1 := FUN_GIORNI_MENO (dataRif,1);
DELETE MNP_DW_SLA_FRANCHIGIA_OUT WHERE TO_CHAR(DATA_EVENTO,'dd/mm/yyyy')=TO_CHAR(dataRif1,'dd/mm/yyyy');
cod_errore := 0;
-- caricamento dati per il processo donor nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
calcolo_sla0_donor(dataRif,cod_errore_sla0_don);
calcolo_sla1_donor(dataRif,cod_errore_sla1_don);
calcolo_sla2_donor(dataRif,cod_errore_sla2_don);
calcolo_sla3_donor(dataRif,cod_errore_sla3_don);
-- caricamento dati per il processo recipient nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
calcolo_sla0_recipient(dataRif,cod_errore_sla0_rec);
calcolo_sla1_recipient(dataRif,cod_errore_sla1_rec);
calcolo_sla2_recipient(dataRif,cod_errore_sla2_rec);
calcolo_sla3_recipient(dataRif,cod_errore_sla3_rec);
-- caricamento dati per il processo donor virtuale nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
calcolo_sla1_donor_virt(dataRif,cod_errore_sla1_don_virt);
calcolo_sla2_donor_virt(dataRif,cod_errore_sla2_don_virt);
calcolo_sla3_donor_virt(dataRif,cod_errore_sla3_don_virt);
-- caricamento dati per il processo recipient virtuale nella tabella MNP_DW_SLA_FRANCHIGIA_OUT
calcolo_sla1_rec_virt(dataRif,cod_errore_sla1_rec_virt);
calcolo_sla2_rec_virt(dataRif,cod_errore_sla2_rec_virt);
calcolo_sla3_rec_virt(dataRif,cod_errore_sla3_rec_virt);
-----------------------------------------------------
-- CALCOLO IL NUMERO 'EVENTI FUORI SLA' E A PERCENTUALE DI FRANCHIGIA PER
-- TUTTI I RECORD INSERITI
-----------------------------------------------------
UPDATE dwh.mnp_dw_sla_franchigia_out
SET
eventi_fuori_sla = eventi_attesi - eventi_in_sla
,percentuale_fuori_sla = round(((eventi_attesi - eventi_in_sla)/eventi_attesi)*100)
,data_agg = sysdate
WHERE
data_agg is null;
cod_errore := cod_errore_sla0_don + cod_errore_sla1_don+cod_errore_sla2_don +cod_errore_sla3_don +
cod_errore_sla0_rec + cod_errore_sla1_rec + cod_errore_sla2_rec + cod_errore_sla3_rec +
cod_errore_sla1_rec_virt + cod_errore_sla2_rec_virt + cod_errore_sla3_rec_virt +
cod_errore_sla1_don_virt + cod_errore_sla2_don_virt + cod_errore_sla3_don_virt;
IF cod_errore = 0
THEN
-- tutto a posto
DBMS_OUTPUT.put_line ('Caricamento dati e calcolo SLA avvenuto.');
ELSE
-- tutto na sola
DBMS_OUTPUT.put_line ('CARICAMENTO DATI E CALCOLO SLA PARZIALE: PROCESSO TERMINATO CON ERRORI VERIFICARE LOG!');
END IF;
COMMIT;
D_fine:=sysdate;
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_FRANCHIGIA: FINE PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440));
EXCEPTION
WHEN OTHERS THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore nel caricamento dati e calcolo Sla ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
RETURN;
END;
END IF;
END CALCOLO_SLA_FRANCHIGIA;
END PKG_CALCOLO_SLA_FRANCHIGIA;
/