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

1812 lines
61 KiB
SQL

CREATE OR REPLACE FUNCTION "FUN_CALCOLA_DATA_RIC"
(
data_default IN DATE,
tolleranza IN NUMBER
) RETURN DATE AS
orario varchar2(6);
chiusura_finestra DATE;
datanew DATE;
BEGIN
IF tolleranza > 0 then
orario:='191500';-- se 1 fa 1915
ELSE
orario:='190000'; --se 0 fa 1900
END IF;
-- verifico se data finale sia un giorno lavorativo
IF data_default = FUN_DATE_FESTIVE(data_default) THEN
-- imposto l'ora di chiusura di un giorno lavorativo
chiusura_finestra := to_DATE(
to_char(data_default,'YYYYMMDD') ||orario, 'YYYYMMDDHH24MISS');
ELSE
-- nei festivi la finestra è SEMPRE chiusa
chiusura_finestra := to_date(
to_char(data_default,'YYYYMMDD') || '000000', 'YYYYMMDDHH24MISS');
END IF ;
--DBMS_OUTPUT.put_line('Chiusura = '|| chiusura_finestra);
-- ora verifico se la data finale supera la chiusura
IF data_default> chiusura_finestra THEN
-- la supera, quindi devo aggiungere un giorno lavorativo
datanew := FUN_DATE_FESTIVE_SUCC(data_default+1);
ELSE
datanew := data_default;
END IF;
RETURN datanew;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Errore in FUN_CALCOLA_DATA ' || SQLERRM);
RETURN data_default;
END FUN_CALCOLA_DATA_RIC;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC_RV_MVNO"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo Recipient Virtuale MVNO
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(tcin.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcin.data_ricezione)
, gr.data_cut_over_eff --tempo iniziale, data di validazione del porting -- 05/10/10: sostituita con DATA_CUT_OVER_EFF
, FUN_CALCOLA_DATA_RIC( MIN (tcin.data_ricezione),0) -- tempo finale, data di notifica credito
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (gr.data_cut_over_eff),2)--MIN(grVal.data_i_o) --05/10/10: sostituita con DATA_CUT_OVER_EFF
, TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY')
FROM mnp.mnp_msp_tc_in@MNP tcin
, mnp.mnp_gest_rich_rec_virt@MNP gr
-- , mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
AND tcin.tipo_evento = '01'
AND gr.flag_esp = 0
--AND grVal.stato_a in (6,7)
AND tcin.data_ricezione >= data_iniziale
AND tcin.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- ora carico le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(tcinSblIm.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione)
, MIN (tcinSblIm.data_ricezione)
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione),1) --tempo iniziale, data di notifica cretito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),0) -- tempo finale, data di sblocco importo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY') -- 05/10/10 Modificato su tcinSblIm.data_ricezione evento Finale
FROM mnp.mnp_msp_tc_in@MNP tcinSblIm
, mnp.mnp_msp_tc_in@MNP tcinNtCr
, mnp.mnp_gest_rich_rec_virt@MNP gr
--, mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='RV'
AND tcinSblIm.tipo_evento = '03'
AND gr.flag_esp = 0
-- AND grVal.stato_a in (6,7)
AND tcinSblIm.data_ricezione >= data_iniziale
AND tcinSblIm.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- per le notifiche SI devo caricare la data della notifica relativa
/* UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT tcin.data_ricezione
FROM mnp.mnp_mspcoop_tc_in@MNP tcin
WHERE tcin.id_richiesta_dbc = tcout.id_richiesta
AND tcin.tipo_evento = '01'
AND rownum = 1
)
WHERE tcout.data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA_TC_RV_MVNO ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_RV_MVNO;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC_RV_ESP"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo Recipient Virtuale ESP
-- Per comodità di implementazione, estrae anche record
-- relativi al processo Recipient Virtuale MVNO
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(tcin.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcin.data_ricezione)
, MIN (gr.data_cut_over_eff) --tempo iniziale, data di validazione del porting ----05/10/10 modificata in data_cut_over_eff
, FUN_CALCOLA_DATA_RIC( MIN (tcin.data_ricezione),0) -- tempo finale, data di notifica credito
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (gr.data_cut_over_eff),2)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY') --05/10/10 modificata su Tf
FROM mnp.mnp_msp_tc_in@MNP tcin
, mnp.mnp_gest_rich_rec_virt@MNP gr
-- , mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
AND tcin.tipo_evento = '01'
AND gr.flag_esp = 1
-- AND grVal.stato_a in (6,7)
AND tcin.data_ricezione >= data_iniziale
AND tcin.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- ora carico le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(tcinSblIm.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione)
, MIN (tcinSblIm.data_ricezione)
, FUN_CALCOLA_DATA_RIC( MIN(tcinNtCr.data_ricezione),1) --tempo iniziale, data di notifica cretito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),0) -- tempo finale, data di sblocco importo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY') --- 05/10/10 spostato su Tf
FROM mnp.mnp_msp_tc_in@MNP tcinSblIm
, mnp.mnp_msp_tc_in@MNP tcinNtCr
, mnp.mnp_gest_rich_rec_virt@MNP gr
-- , mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='RV'
AND tcinSblIm.tipo_evento = '03'
AND gr.flag_esp = 1
--AND grVal.stato_a in (6,7)
AND tcinSblIm.data_ricezione >= data_iniziale
AND tcinSblIm.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- per le notifiche SI devo caricare la data della notifica relativa
/*UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT tcin.data_ricezione
FROM mnp.mnp_msp_tc_in@MNP tcin
WHERE tcin.id_richiesta_dbc = tcout.id_richiesta
AND tcin.tipo_evento = '01'
AND rownum = 1
)
WHERE tcout.data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA_TC_RV_ESP ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_RV_ESP;
/
CREATE OR REPLACE PROCEDURE "CARICAMENTO_SLA_TC_REC"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo RECIPIENT
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(trasXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- data notifica credito
, MIN(FUN_CALCOLA_DATA(espAckOut.nome_file,espAckOut.data_inserimento)) -- TI data Ack Espletamento del Donatin
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- TF data Ack in risposta alla notifica Credito
, 'R'
, MIN(trasXml.nome_file)
, MIN(espXml.nome_file)
, MIN(trasXml.nome_file)
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.id_richiesta
, MIN(espAckOut.nome_file)
, MIN(trasAckOut.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (espAckOut.nome_file,espAckOut.data_inserimento)),2)--TO_DATE( SUBSTR( MIN(trasAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' )
, TO_CHAR ( TO_DATE( SUBSTR( MIN(trasAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
, mnp.mnp_xml_ack_out@MNP espAckOut
, mnp.mnp_xml_in@MNP trasXml
, mnp.mnp_xml_in@MNP espXml
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
, mnp.mnp_xml_richiesta_in@MNP rEspIn
, mnp.mnp_gestione_richiesta_rec@MNP gr
WHERE trasAckOut.risultato = 'OK'
AND espXml.MITTENTE = gr.codice_operatore_donating -- VERIFICARE
AND trasAckOut.nome_file_riferito = trasXml.nome_file
AND trasXml.nome_file = rTrasIn.nome_file
AND rTrasin.id_richiesta = gr.id_richiesta
AND trasXml.tipo_file = 10
AND espAckOut.nome_file_riferito = espXml.nome_file
AND espXml.nome_file =rEspIn.nome_file
AND rEspIn.id_richiesta = gr.id_richiesta
and espXml.tipo_file = 6
AND trasAckOut.data_inserimento >= data_iniziale
AND trasAckOut.data_inserimento < data_finale
GROUP BY gr.id_richiesta
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.codice_operatore_don_eff
, GR.CODICE_OPERATORE_REC_EFF
, gr.msisdn
, gr.data_cut_over_eff
;
-- ora carico le sblocco credito anomalo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_credito_anomalo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Y'
, MIN(sblCrXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- data notifica credito
, MIN(FUN_CALCOLA_DATA(sblCrAckOut.nome_file,sblCrAckOut.data_inserimento)) -- data sblocco credito anomalo
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- TI data Ack in risposta alla notifica Credito
, MIN(FUN_CALCOLA_DATA(sblCrAckOut.nome_file,sblCrAckOut.data_inserimento)) -- TF data Ack in risposta allo sblocco Credito anomalo
, 'R'
, MIN(sblCrXml.nome_file)
, MIN(trasXml.nome_file)
, MIN(sblCrXml.nome_file)
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.id_richiesta
, MIN(trasAckOut.nome_file)
, MIN(sblCrAckOut.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (trasAckOut.nome_file,trasAckOut.data_inserimento)),5)--TO_DATE( SUBSTR( MIN(sblCrAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' )
, TO_CHAR ( TO_DATE( SUBSTR( MIN(sblCrAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
, mnp.mnp_xml_ack_out@MNP sblCrAckOut
, mnp.mnp_xml_in@MNP trasXml
, mnp.mnp_xml_in@MNP sblCrXml
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
, mnp.mnp_xml_richiesta_in@MNP rSblCrIn
, mnp.mnp_gestione_richiesta_rec@MNP gr
WHERE trasAckOut.risultato = 'OK'
AND trasAckOut.nome_file_riferito = trasXml.nome_file
AND trasXml.nome_file = rTrasIn.nome_file
AND rTrasin.id_richiesta = gr.id_richiesta
AND trasXml.tipo_file = 10
AND sblCrAckOut.nome_file_riferito = sblCrXml.nome_file
AND sblCrXml.nome_file =rSblCrIn.nome_file
AND rSblCrIn.id_richiesta = gr.id_richiesta
and sblCrXml.tipo_file = 11
AND sblCrAckOut.data_inserimento >= data_iniziale
AND sblCrAckOut.data_inserimento < data_finale
GROUP BY gr.id_richiesta
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.codice_operatore_don_eff
, GR.CODICE_OPERATORE_REC_EFF
, gr.msisdn
, gr.data_cut_over_eff
;
-- e infine le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(sblImXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- data notifica credito
, MIN(FUN_CALCOLA_DATA(sblImAckOut.nome_file,sblImAckOut.data_inserimento)) -- data sblocco credito anomalo
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file,trasAckOut.data_inserimento)) -- TI data Ack in risposta alla notifica Credito
, MIN(FUN_CALCOLA_DATA(sblImAckOut.nome_file,sblImAckOut.data_inserimento)) -- TF data Ack in risposta allo sblocco Credito anomalo
, 'R'
, MIN(sblImXml.nome_file)
, MIN(trasXml.nome_file)
, MIN(sblImXml.nome_file)
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.id_richiesta
, MIN(trasAckOut.nome_file)
, MIN(sblImAckOut.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (trasAckOut.nome_file,trasAckOut.data_inserimento)),5)--TO_DATE( SUBSTR( MIN(sblImAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' )
, TO_CHAR ( TO_DATE( SUBSTR( MIN(sblImAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
, mnp.mnp_xml_ack_out@MNP sblImAckOut
, mnp.mnp_xml_in@MNP trasXml
, mnp.mnp_xml_in@MNP sblImXml
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
, mnp.mnp_xml_richiesta_in@MNP rSblImIn
, mnp.mnp_gestione_richiesta_rec@MNP gr
WHERE trasAckOut.risultato = 'OK'
AND trasAckOut.nome_file_riferito = trasXml.nome_file
AND trasXml.nome_file = rTrasIn.nome_file
AND rTrasin.id_richiesta = gr.id_richiesta
AND trasXml.tipo_file = 10
AND sblImAckOut.nome_file_riferito = sblImXml.nome_file
AND sblImXml.nome_file =rSblImIn.nome_file
AND rSblImIn.id_richiesta = gr.id_richiesta
and sblImXml.tipo_file = 12
AND sblImAckOut.data_inserimento >= data_iniziale
AND sblImAckOut.data_inserimento < data_finale
GROUP BY gr.id_richiesta
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.codice_operatore_don_eff
, GR.CODICE_OPERATORE_REC_EFF
, gr.msisdn
, gr.data_cut_over_eff
;
-- per le notifiche SI e SCA devo caricare la data della notifica relativa
/* UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT FUN_CALCOLA_DATA(rich.nome_file,rich.data_eff)
FROM mnp.mnp_xml_richiesta_in@MNP rich, mnp.mnp_xml_in@mnp ncxml
WHERE rich.id_richiesta = tcout.id_richiesta
AND NCXML.NOME_FILE=RICH.NOME_FILE
AND ncxml.tipo_file = '10'
AND rownum = 1
)
WHERE data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA_TC_REC ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_REC;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC_MVNO2MVNO"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo Recipient Virtuale MVNO2MVNO
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(tcin.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcin.data_ricezione)
, MIN (gr.DATA_CUT_OVER_EFF) --tempo iniziale, data di validazione del porting
, FUN_CALCOLA_DATA_RIC( MIN(tcin.data_ricezione),1) -- tempo finale, data di notifica credito
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (gr.DATA_CUT_OVER_EFF),2)-- MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mvno_tc_in@MNP tcin
, mnp.mnp_gest_rich_rec_virt@MNP gr
-- , mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
-- AND grVal.id_richiesta = gr.id_richiesta
-- AND grVal.stato_a in (6,7)
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
AND tcin.tipo_evento = '01'
AND tcin.data_ricezione >= data_iniziale
AND tcin.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, 'SLA X'
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, gr.msisdn
;
-- ora carico le notifiche di sblocco credito anomalo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_credito_anomalo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Y'
, MIN(tcinSblCr.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione)
, MIN (tcinSblCr.data_ricezione)
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione),1) --tempo iniziale, data di validazione del porting
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblCr.data_ricezione) ,1)-- tempo finale, data di notifica credito
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblCr.data_ricezione),'MM/YYYY') ----05/10/10 modificata su Tf
FROM mnp.mnp_mvno_tc_in@MNP tcinNtCr
, mnp.mnp_mvno_tc_in@MNP tcinSblCr
, mnp.mnp_gest_rich_rec_virt@MNP gr
--, mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblCr.id_richiesta_dbc = gr.id_richiesta
-- AND grVal.id_richiesta = gr.id_richiesta
--AND grVal.stato_a in (6,7)
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblCr.id_richiesta_dbc,0,2)='RV'
AND tcinSblCr.tipo_evento = '02'
AND tcinSblCr.data_ricezione >= data_iniziale
AND tcinSblCr.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, 'SLA Y'
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, gr.msisdn
;
-- ora carico le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(tcinSblIm.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione)
, MIN (tcinSblIm.data_ricezione)
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione),1) --tempo iniziale, data di notifica Credito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione) ,1)-- tempo finale, data di sblocco importo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY') --05/10/10
FROM mnp.mnp_mvno_tc_in@MNP tcinNtCr
, mnp.mnp_mvno_tc_in@MNP tcinSblIm
, mnp.mnp_gest_rich_rec_virt@MNP gr
-- , mnp.mnp_storico_rich_rec_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
-- AND grVal.id_richiesta = gr.id_richiesta
-- AND grVal.stato_a in (6,7)
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='RV'
AND tcinSblIm.tipo_evento = '03'
AND tcinSblIm.data_ricezione >= data_iniziale
AND tcinSblIm.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, 'SLA Z'
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, gr.msisdn
;
-- per le notifiche SI e SCA devo caricare la data della notifica relativa
/* UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT tcin.data_ricezione
FROM mnp.mnp_mvno_tc_in@MNP tcin
WHERE tcin.id_richiesta_dbc = tcout.id_richiesta
AND tcin.tipo_evento = '01'
AND rownum = 1
)
WHERE tcout.data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA_TC_RV_MVNO2MVNO ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_MVNO2MVNO;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC_DV_MVNO"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo Donor Virtuale MVNO
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(tcin.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcin.data_ricezione)
, MIN (gr.data_cut_over_eff) --tempo iniziale, data di validazione del porting
, FUN_CALCOLA_DATA_RIC( MIN (tcin.data_ricezione),1) -- tempo finale, data di notifica credito
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (gr.data_cut_over_eff),2)-- MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mvno_tc_in@MNP tcin
,mnp.mnp_gest_rich_donor_virt@MNP gr
-- ,mnp.mnp_storico_rich_don_virt@MNP grVal
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
AND tcin.tipo_evento = '01'
-- AND grVal.stato_a in (6,7)
AND tcin.data_ricezione >= data_iniziale
AND tcin.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, gr.data_cut_over_eff
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
;
-- ora carico le notifiche di sblocco credito anomalo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_credito_anomalo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Y'
, MIN(tcinSblCr.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione) -- data notifica Credito
, MIN (tcinSblCr.data_ricezione) -- data sblocca credito anomalo
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione),1 ) --tempo iniziale, data di notifica Credito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblCr.data_ricezione),1) -- tempo finale, data di sblocco Credito Anomalo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)-- MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblCr.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mvno_tc_in@MNP tcinNtCr
,mnp.mnp_mvno_tc_in@MNP tcinSblCr
,mnp.mnp_gest_rich_donor_virt@MNP gr
-- ,mnp.mnp_storico_rich_don_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblCr.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='DV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblCr.id_richiesta_dbc,0,2)='DV'
AND tcinSblCr.tipo_evento = '02'
-- AND grVal.stato_a in (6,7)
AND tcinSblCr.data_ricezione >= data_iniziale
AND tcinSblCr.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, gr.data_cut_over_eff
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
;
-- e infine le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(tcinSblIm.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione) -- data notifica Credito
, MIN (tcinSblIm.data_ricezione) -- data sblocca importo
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione) ,1) --tempo iniziale, data di notifica Credito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),1) -- tempo finale, data di sblocco Credito Anomalo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5) --MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mvno_tc_in@MNP tcinNtCr
,mnp.mnp_mvno_tc_in@MNP tcinSblIm
,mnp.mnp_gest_rich_donor_virt@MNP gr
-- ,mnp.mnp_storico_rich_don_virt@MNP grVal
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
-- AND gr.id_richiesta = grVal.id_richiesta
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='DV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='DV'
AND tcinSblIm.tipo_evento = '03'
-- AND grVal.stato_a in (6,7)
AND tcinSblIm.data_ricezione >= data_iniziale
AND tcinSblIm.data_ricezione < data_finale
GROUP BY gr.id_richiesta
, gr.data_cut_over_eff
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
;
-- per le notifiche SI e SCA devo caricare la data della notifica relativa
/* UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT tcin.data_ricezione
FROM mnp.mnp_mvno_tc_in@MNP tcin
WHERE tcin.id_richiesta_dbc = tcout.id_richiesta
AND tcin.tipo_evento = '01'
AND rownum = 1
)
WHERE tcout.data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA_TC_DV_MVNO ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_DV_MVNO;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC_DV_ESP"
( mese_in IN NUMBER
, anno_in IN NUMBER
, cod_errore OUT NUMBER
) AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo Donor Virtuale ESP
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
data_finale := add_months(data_iniziale,+1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(tcin.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcin.data_ricezione)
, MIN (gr.data_cut_over_eff) --tempo iniziale, data di validazione del porting
, FUN_CALCOLA_DATA_RIC( MIN (tcin.data_ricezione),1) -- tempo finale, data di notifica credito
, 'V'
, NULL -- nome file non disponibile
, NULL -- nome file non disponibile
, NULL -- nome file non disponibile
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL -- nome file non disponibile
, NULL -- nome file non disponibile
, fun_giorni_piu(MIN (gr.data_cut_over_eff),2)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mspcoop_tc_in@MNP tcin
,mnp.mnp_gest_rich_donor_virt@MNP gr
-- ,mnp.mnp_storico_rich_don_virt@MNP grVal
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
-- AND grVal.id_richiesta = gr.id_richiesta
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
AND tcin.tipo_evento = '01'
-- AND grVal.stato_a in (6,7)
AND tcin.data_ricezione >= data_iniziale
AND tcin.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- ora carico le notifiche di sblocco importo
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file
, nome_file_iniziale
, nome_file_finale
, donor_effettivo
, recipient_effettivo
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(tcinSblIm.data_ricezione)
, 'TIMG'
, 'TIMG'
, gr.data_cut_over_eff
, MIN (tcinNtCr.data_ricezione)
, MIN (tcinSblIm.data_ricezione)
, FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione),1) --tempo iniziale, data di notifica credito
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),1) -- tempo finale, data di sblocco importo
, 'V'
, NULL
, NULL
, NULL
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.msisdn
, gr.id_richiesta
, NULL
, NULL
, fun_giorni_piu(MIN (tcinNtCr.data_ricezione),5)--MIN(grVal.data_i_o)
, TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY')
FROM mnp.mnp_mspcoop_tc_in@MNP tcinSblIm
,mnp.mnp_mspcoop_tc_in@MNP tcinNtCr
,mnp.mnp_gest_rich_donor_virt@MNP gr
-- ,mnp.mnp_storico_rich_don_virt@MNP grVal
WHERE tcinSblIm.id_richiesta_dbc = gr.id_richiesta
AND tcinNtCr.id_richiesta_dbc =gr.id_richiesta
-- AND grVal.id_richiesta = gr.id_richiesta
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='DV'
AND tcinNtCr.tipo_evento = '01'
AND SUBSTR(tcinsblIm.id_richiesta_dbc,0,2)='DV'
AND tcinSblIm.tipo_evento = '03'
-- AND grVal.stato_a in (6,7)
AND tcinSblIm.data_ricezione >= data_iniziale
AND tcinSblIm.data_ricezione < data_finale
GROUP BY gr.id_richiesta
,tcinSblIm.data_ricezione
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
;
-- per le notifiche SI devo caricare la data della notifica relativa
/* UPDATE dwh.mnp_dw_sla_tc_out tcout SET
tcout.data_notifica_credito = (
SELECT tcin.data_ricezione
FROM mnp.mnp_mspcoop_tc_in@MNP tcin
WHERE tcin.id_richiesta_dbc = tcout.id_richiesta
AND tcin.tipo_evento = '03'
AND rownum = 1
)
WHERE tcout.data_notifica_credito IS NULL
AND tcout.tipo_messaggio != 'SLA X'
AND tcout.data_messaggio >= data_iniziale
AND tcout.data_messaggio < data_finale
;*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA_TC_DV_ESP ' || SQLERRM);
RETURN;
END CARICAMENTO_SLA_TC_DV_ESP;
/
CREATE OR REPLACE PROCEDURE "CARICAMENTO_SLA_TC_DON" (
mese_in IN NUMBER,
anno_in IN NUMBER,
cod_errore OUT NUMBER
)
AS
-- Purpose: Caricamento della tabella MNP_DW_SLA_TC_OUT
-- relativamente al processo DONOR
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 27/10/2009 Creazione script
---------------------------------------
data_iniziale DATE;
data_finale DATE;
BEGIN
cod_errore := 0;
-- calcolo le date iniziali e finali di interesse
data_iniziale := TO_DATE ('1-' || mese_in || '-' || anno_in, 'DD-MM-YYYY');
data_finale := ADD_MONTHS (data_iniziale, +1);
-- DBMS_OUTPUT.put_line('Data iniziale = '|| data_iniziale);
-- DBMS_OUTPUT.put_line('Data finale = '|| data_finale);
-- per prima cosa carichiamo le notifiche credito: SLA X
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito -- coincide con t_finale
, t_iniziale
, t_finale
, processo
, nome_file -- duplicato di nome_file_finale
, nome_file_iniziale
, nome_file_finale
, donor_effettivo -- o donor Ospitato
, recipient_effettivo ---- o recipient Ospitato
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA X'
, MIN(trasXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN (fun_calcola_data (trasXml.nome_file, trasXml.data_eff)) -- data_notifica_credito
, MAX (fun_calcola_data (espAckIn.nome_file, espXml.data_eff)) -- data estratta dell ack inviato al Recipient in risposta all'espletamento del donating
, FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(trasXml.nome_file),5,14),'YYYYMMDDHH24MISS'),0) -- data estratta dal nome della notifica credito --qui
, 'D'
, MIN(trasXml.nome_file) -- nome file della notifica credito
, MAX(espXml.nome_file) -- nome file dell ack inviato al Recipient in risposta all'espletamento del donating
, MIN(trasXml.nome_file) -- nome_file della notifica credito
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.codice_richiesta_recipient
, MAX(espAckIn.nome_file)
, MIN(trasAckIn.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (espAckIn.nome_file, espXml.data_eff)),2) --TO_DATE( SUBSTR( MIN(trasXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ) ---- sbaglito!!!!!! qui ci va la data_attesa (ti+2gg))
, TO_CHAR ( TO_DATE( SUBSTR( MIN(trasXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_in@mnp espAckIn
,mnp.mnp_xml_richiesta_out@mnp rEsp
,mnp.mnp_xml_out@mnp espXml
,mnp.mnp_xml_out@mnp trasXml
,mnp.mnp_xml_richiesta_out@mnp rTras
,mnp.mnp_xml_ack_in@mnp trasAckIn
,mnp.mnp_gestione_richiesta@mnp gr
WHERE trasXml.tipo_processo = 'D'
AND espXml.destinatario <> 'NPTS'
AND trasXml.tipo_file = '10'
AND espXml.tipo_processo = 'D'
AND espXml.tipo_file= '6'
AND espAckIn.nome_file_riferito = rEsp.nome_file
AND rEsp.nome_file = espXml.nome_file
AND rEsp.id_richiesta = gr.id_richiesta
AND gr.id_richiesta = rTras.id_richiesta
AND rTras.nome_file = trasXml.nome_file
AND trasAckIn.nome_file_riferito = rTras.nome_file
AND trasXml.data_eff >= data_iniziale
AND trasXml.data_eff < data_finale
GROUP BY gr.id_richiesta
-- ,trasXml.data_eff
,gr.codice_operatore_don_eff
,gr.codice_operatore_rec_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.data_cut_over_eff
-- ,trasXml.nome_file
-- ,espAckIn.nome_file
-- ,trasXml.nome_file
,gr.msisdn
,gr.codice_richiesta_recipient
-- ,trasAckIn.nome_file
;
-- CARICHIAMO le notifiche di sblocco credito anomalo SLAY
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_credito_anomalo
, t_iniziale
, t_finale
, processo
, nome_file -- DUPLICATO DI NOME_FILE_FINALE
, nome_file_iniziale
, nome_file_finale
, donor_effettivo -- o donor Ospitato
, recipient_effettivo ---- o recipient Ospitato
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Y'
, MIN(sblCrXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN (fun_calcola_data (trasXml.nome_file, trasXml.data_eff)) -- data trasferimento credito
, MIN (fun_calcola_data (sblCrXml.nome_file, sblCrXml.data_eff)) -- data_sbl_credito_anomalo
, MIN (fun_calcola_data (trasAckIn.nome_file, trasXml.data_eff)) -- data estratta dell ack inviato al Recipient in risposta al trasferimento credito del donating
,FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(sblCrXml.nome_file),5,14),'YYYYMMDDHH24MISS'),0) -- data estratta dal nome sblocco credito anomalo out
, 'D'
, MIN(sblCrXml.nome_file) -- nome file della notifica credito
, MIN(trasXml.nome_file) -- nome file dell ack inviato al Recipient in risposta alla notifica di cretito
, MIN(sblCrXml.nome_file) -- nome_file del sblocco importo
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.codice_richiesta_recipient
, MIN(trasAckIn.nome_file)
, MIN(sblCrAckIn.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (trasAckIn.nome_file, trasXml.data_eff)),5)--TO_DATE( SUBSTR( MIN(sblCrXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' )
, TO_CHAR ( TO_DATE( SUBSTR( MIN(sblCrXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_in@mnp trasAckIn
,mnp.mnp_xml_richiesta_out@mnp rTras
,mnp.mnp_xml_out@mnp trasXml
,mnp.mnp_xml_out@mnp sblCrXml
,mnp.mnp_xml_richiesta_out@mnp rSblCr
,mnp.mnp_xml_ack_in@mnp sblCrAckIn
,mnp.mnp_gestione_richiesta@mnp gr
WHERE trasXml.tipo_processo = 'D'
AND trasXml.tipo_file = '10'
AND sblCrXml.tipo_processo = 'D'
AND sblCrXml.tipo_file= '11'
AND trasAckIn.nome_file_riferito = rTras.nome_file
AND rTras.nome_file = trasXml.nome_file
AND rTras.id_richiesta = gr.id_richiesta
AND gr.id_richiesta = rSblCr.id_richiesta
AND rSblCr.nome_file = sblCrXml.nome_file
AND sblCrAckIn.nome_file_riferito = sblCrXml.nome_file
AND sblCrXml.data_eff >= data_iniziale
AND sblCrXml.data_eff < data_finale
GROUP BY gr.id_richiesta
,gr.codice_operatore_don_eff
,gr.codice_operatore_rec_eff
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
,gr.codice_richiesta_recipient
;
-- ora carico le notifiche di sblocco importo ---SLA Z
INSERT INTO dwh.mnp_dw_sla_tc_out
(id_richiesta
, tipo_messaggio
, data_messaggio
, donor_rete
, recipient_rete
, dco_effettiva
, data_notifica_credito
, data_sbl_importo
, t_iniziale
, t_finale
, processo
, nome_file -- duplicato di nome_file_finale
, nome_file_iniziale
, nome_file_finale
, donor_effettivo -- o donor Ospitato
, recipient_effettivo ---- o recipient Ospitato
, msisdn
, codice_richiesta_recipient
, ack_iniziale
, ack_finale
, data_attesa_evento_fin
, mese_comp_finale
)
SELECT UNIQUE gr.id_richiesta
, 'SLA Z'
, MIN(sblImXml.data_eff)
, gr.codice_operatore_donating
, gr.codice_operatore_recipient
, gr.data_cut_over_eff
, MIN (fun_calcola_data (trasXml.nome_file, trasXml.data_eff)) -- data trasferimento credito
, MIN (fun_calcola_data (sblImXml.nome_file, sblImXml.data_eff)) -- data sblocco importo
, MIN (fun_calcola_data (trasAckIn.nome_file, trasXml.data_eff)) -- data estratta dell ack inviato al Recipient in risposta al trasferimento credito del donating
,FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(sblImXml.nome_file),5,14),'YYYYMMDDHH24MISS'),0) -- data estratta dal nome sblocco credito anomalo out
, 'D'
, MIN(sblImXml.nome_file) -- nome file della notifica credito
, MIN(trasXml.nome_file) -- nome file dell ack inviato al Recipient in risposta alla notifica credito
, MIN(sblImXml.nome_file) -- nome_file del sblocco Importo
, gr.codice_operatore_don_eff
, gr.codice_operatore_rec_eff
, gr.msisdn
, gr.codice_richiesta_recipient
, MIN(trasAckIn.nome_file)
, MIN(sblImAckIn.nome_file)
, fun_giorni_piu(MIN (fun_calcola_data (trasAckIn.nome_file, trasXml.data_eff)),5) --TO_DATE( SUBSTR( MIN(sblImXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' )
, TO_CHAR ( TO_DATE( SUBSTR( MIN(sblImXml.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
FROM mnp.mnp_xml_ack_in@mnp trasAckIn
,mnp.mnp_xml_richiesta_out@mnp rTras
,mnp.mnp_xml_out@mnp trasXml
,mnp.mnp_xml_out@mnp sblImXml
,mnp.mnp_xml_richiesta_out@mnp rSblIm
,mnp.mnp_xml_ack_in@mnp sblImAckIn
,mnp.mnp_gestione_richiesta@mnp gr
WHERE trasXml.tipo_processo = 'D'
AND trasXml.tipo_file = '10'
AND sblImXml.tipo_processo = 'D'
AND sblImXml.tipo_file= '12'
AND trasAckIn.nome_file_riferito = rTras.nome_file
AND rTras.nome_file = trasXml.nome_file
AND rTras.id_richiesta = gr.id_richiesta
AND gr.id_richiesta = rSblIm.id_richiesta
AND rSblIm.nome_file = sblImXml.nome_file
AND sblImAckIn.nome_file_riferito = sblImXml.nome_file
AND sblImXml.data_eff >= data_iniziale
AND sblImXml.data_eff < data_finale
GROUP BY gr.id_richiesta
,gr.codice_operatore_don_eff
,gr.codice_operatore_rec_eff
,gr.data_cut_over_eff
,gr.codice_operatore_donating
,gr.codice_operatore_recipient
,gr.msisdn
,gr.codice_richiesta_recipient
;
-- per le notifiche SI e SCA devo caricare la data della notifica relativa
/*UPDATE dwh.mnp_dw_sla_tc_out tcout
SET tcout.data_notifica_credito = (SELECT fun_calcola_data (nc.nome_file, nc.data_eff)
FROM mnp.mnp_xml_richiesta_out@mnp nc, mnp.mnp_xml_out@mnp ncxml
WHERE nc.id_richiesta = tcout.id_richiesta
AND NCXML.NOME_FILE=NC.NOME_FILE
AND NCXML.TIPO_FILE='10'
AND ROWNUM = 1)
WHERE tcout.data_notifica_credito IS NULL AND tcout.tipo_messaggio != 'SLA X';*/
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA_TC_DON ' || SQLERRM);
RETURN;
END caricamento_sla_tc_don;
/
CREATE OR REPLACE PROCEDURE "DWH"."CARICAMENTO_SLA_TC" (
mese_in IN NUMBER,
anno_in IN NUMBER,
cod_errore OUT NUMBER
)
IS
-- Purpose: Caricamento della tabella temporanea
-- necessarie al calcolo degli SLA X, Y e Z sui trasferimenti credito
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- Alessandro De Simone 26/10/2009 Creazione
--
-------------------------------------------------------
errore_don NUMBER (1);
errore_rec NUMBER (1);
errore_dv_mvno NUMBER (1);
errore_dv_esp NUMBER (1);
errore_rv_mvno NUMBER (1);
errore_rv_esp NUMBER (1);
errore_m2m NUMBER(1);
errore NUMBER (1);
BEGIN
cod_errore := 0;
-- caricamento notifiche DONOR
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_don');
dwh.caricamento_sla_tc_don (mese_in,anno_in, errore_don);
-- caricamento notifiche RECIPIENT
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_rec');
dwh.caricamento_sla_tc_rec (mese_in,anno_in, errore_rec);
-- caricamento notifiche processi VIRTUALI
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_dv_mvno');
dwh.caricamento_sla_tc_dv_mvno (mese_in,anno_in, errore_dv_mvno);
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_dv_esp');
dwh.caricamento_sla_tc_dv_esp (mese_in,anno_in, errore_dv_esp);
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_rv_mvno');
dwh.caricamento_sla_tc_rv_mvno (mese_in,anno_in, errore_rv_mvno);
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_rv_esp');
dwh.caricamento_sla_tc_rv_esp (mese_in,anno_in, errore_rv_esp);
DBMS_OUTPUT.put_line ('Sto eseguendo caricamento_sla_tc_mvno2mvno');
dwh.caricamento_sla_tc_mvno2mvno (mese_in,anno_in, errore_m2m);
errore := errore_don + errore_rec + errore_dv_mvno +
errore_dv_esp + errore_rv_mvno + errore_rv_esp +
errore_m2m;
IF errore = 0
THEN
-- tutto a posto
DBMS_OUTPUT.put_line ('Caricamento completato con successo');
ELSE
-- problema nel caricamento di almeno una tipologia di notifiche
DBMS_OUTPUT.put_line ('Errore nel caricamento delle notifiche');
cod_errore := 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore CARICAMENTO_SLA_TC ' || SQLERRM);
RETURN;
END; -- Procedure
/
CREATE OR REPLACE PROCEDURE "DWH"."CALCOLO_SLA_TC" (dataRif IN DATE)
AS
mese_in NUMBER;
anno_in NUMBER;
data_in DATE;
data_iniziale DATE;
cod_errore NUMBER;
BEGIN
cod_errore := 0;
data_in := add_months(dataRif,-1);
mese_in := to_number(to_char(data_in,'MM'),'99');
anno_in := to_number(to_char(data_in,'YYYY'),'9999');
DBMS_OUTPUT.put_line('Mese da calcolare : ' || mese_in);
DBMS_OUTPUT.put_line('Anno da calcolare : ' || anno_in);
--------------------------------------------------------------------
--- FACCIO UNA DELETE PREVENTIVA DELLA TABELLA PER IL MESE INTERESSATO DAL CALCOLO
--------------------------------------------------------------------
DELETE dwh.mnp_dw_sla_tc_out WHERE to_char(data_messaggio,'YYYYMM')=to_char(data_in,'YYYY')||to_char(data_in,'MM');
COMMIT;
DBMS_OUTPUT.put_line('primo step -1');
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
DBMS_OUTPUT.put_line('primo step');
-- CARICAMENTO DATI
-- caricamento dati nella tabella temporanea MNP_DW_SLA_TC_IN
dwh.caricamento_sla_tc(mese_in,anno_in, cod_errore);
DBMS_OUTPUT.put_line('secondo step');
IF cod_errore = 0
THEN
-- tutto a posto
DBMS_OUTPUT.put_line ('Avvio procedura di calcolo delle penali');
END IF;
-- CALCOLO SLA X (2 giorni)
-- calcolo i giorni di ritardo per lo SLAX
UPDATE dwh.mnp_dw_sla_tc_out SET
numero_giorni_ritardo = TRUNC(TRUNC(t_finale) - TRUNC(fun_giorni_piu(t_iniziale,2)))
,data_attesa_evento_fin=fun_giorni_piu(t_iniziale,2)
WHERE tipo_messaggio = 'SLA X'
AND numero_giorni_ritardo IS NULL
;
-- CALCOLO SLA Y (5 giorni)
-- calcolo i giorni di ritardo per lo SLAY
UPDATE dwh.mnp_dw_sla_tc_out SET
numero_giorni_ritardo = TRUNC(TRUNC(t_finale) - TRUNC(fun_giorni_piu(t_iniziale,5)))
,data_attesa_evento_fin=fun_giorni_piu(t_iniziale,5)
WHERE tipo_messaggio = 'SLA Y'
AND numero_giorni_ritardo IS NULL
;
-- CALCOLO SLA Z (5 giorni)
-- calcolo i giorni di ritardo per lo SLAZ
UPDATE dwh.mnp_dw_sla_tc_out SET
numero_giorni_ritardo = TRUNC(TRUNC(t_finale) - TRUNC(fun_giorni_piu(t_iniziale,5)))
,data_attesa_evento_fin=fun_giorni_piu(t_iniziale,5)
WHERE tipo_messaggio = 'SLA Z'
AND numero_giorni_ritardo IS NULL
;
-- se i giorni di ritardo sono < 0 (cioè non c'è ritardo) li
-- cancello i record corrispondenti
DELETE FROM dwh.mnp_dw_sla_tc_out
WHERE numero_giorni_ritardo <= 0 ;
DELETE FROM dwh.mnp_dw_sla_tc_out
WHERE numero_giorni_ritardo is null ;
-- infine calcolo la penale di 10 euro al giorno
UPDATE dwh.mnp_dw_sla_tc_out
SET penale = numero_giorni_ritardo * 10
WHERE numero_giorni_ritardo > 0
AND penale IS NULL
;
COMMIT;
DBMS_OUTPUT.put_line ('Calcolo penali completato con successo');
EXCEPTION
WHEN OTHERS THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in CALCOLO_SLA_TC ' || SQLERRM);
RETURN;
END CALCOLO_SLA_TC;
/