1812 lines
61 KiB
SQL
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;
|
|
/
|