1133 lines
38 KiB
SQL
1133 lines
38 KiB
SQL
CREATE OR REPLACE FUNCTION "DWH"."FUN_CALCOLA_DATA"
|
|
( nome_file IN VARCHAR2
|
|
, data_default IN DATE
|
|
) RETURN DATE AS
|
|
data_finale DATE;
|
|
chiusura_finestra DATE;
|
|
|
|
BEGIN
|
|
|
|
data_finale := to_timestamp(substr(nome_file,5,14),'YYYYMMDDHH24MISS');
|
|
|
|
-- verifico se data finale sia un giorno lavorativo
|
|
IF data_finale = FUN_DATE_FESTIVE(data_finale) THEN
|
|
-- imposto l'ora di chiusura di un giorno lavorativo
|
|
chiusura_finestra := to_timestamp(
|
|
substr(nome_file,5,8) || '191500', 'YYYYMMDDHH24MISS');
|
|
ELSE
|
|
-- nei festivi la finestra è SEMPRE chiusa
|
|
chiusura_finestra := to_timestamp(
|
|
substr(nome_file,5,8) || '000000', 'YYYYMMDDHH24MISS');
|
|
END IF ;
|
|
|
|
--DBMS_OUTPUT.put_line('Chiusura = '|| chiusura_finestra);
|
|
|
|
-- ora verifico se la data finale supera la chiusura
|
|
IF data_finale > chiusura_finestra THEN
|
|
-- la supera, quindi devo aggiungere un giorno lavorativo
|
|
data_finale := FUN_DATE_FESTIVE_SUCC(data_finale+1);
|
|
END IF;
|
|
|
|
RETURN data_finale;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
DBMS_OUTPUT.put_line ('Errore in FUN_CALCOLA_DATA ' || SQLERRM);
|
|
RETURN data_default;
|
|
|
|
END FUN_CALCOLA_DATA;
|
|
/
|
|
|
|
|
|
|
|
|
|
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
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta, tipo_messaggio, data_messaggio, donor_effettivo, recipient_effettivo,
|
|
dco_effettiva, data_notifica_credito, processo, nome_file)
|
|
SELECT UNIQUE gr.id_richiesta, 'SLA X', xml.data_eff, gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff, gr.data_cut_over_eff,
|
|
MIN (fun_calcola_data (xml.nome_file, xml.data_eff)), 'D', xml.nome_file
|
|
FROM mnp.mnp_xml_out@mnp xml,
|
|
mnp.mnp_xml_richiesta_out@mnp rout,
|
|
mnp.mnp_gestione_richiesta@mnp gr
|
|
WHERE xml.tipo_processo = 'D'
|
|
AND rout.id_richiesta = gr.id_richiesta
|
|
AND xml.tipo_file = '10'
|
|
AND xml.nome_file = rout.nome_file
|
|
AND xml.data_eff >= data_iniziale
|
|
AND xml.data_eff < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file;
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta, tipo_messaggio, data_messaggio, donor_effettivo, recipient_effettivo,
|
|
data_sbl_importo, processo, nome_file)
|
|
SELECT UNIQUE gr.id_richiesta, 'SLA Y', xml.data_eff, gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff,
|
|
MIN (fun_calcola_data (xml.nome_file, xml.data_eff)), 'D', xml.nome_file
|
|
FROM mnp.mnp_xml_out@mnp xml,
|
|
mnp.mnp_xml_richiesta_out@mnp rout,
|
|
mnp.mnp_gestione_richiesta@mnp gr
|
|
WHERE xml.tipo_processo = 'D'
|
|
AND rout.id_richiesta = gr.id_richiesta
|
|
AND xml.tipo_file = '12'
|
|
AND xml.nome_file = rout.nome_file
|
|
AND xml.data_eff >= data_iniziale
|
|
AND xml.data_eff < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file;
|
|
|
|
-- e infine le notifiche di sblocco credito anomalo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta, tipo_messaggio, data_messaggio, donor_effettivo, recipient_effettivo,
|
|
data_sbl_credito_anomalo, processo, nome_file)
|
|
SELECT UNIQUE gr.id_richiesta, 'SLA Z', xml.data_eff, gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff,
|
|
MIN (fun_calcola_data (xml.nome_file, xml.data_eff)), 'D', xml.nome_file
|
|
FROM mnp.mnp_xml_out@mnp xml,
|
|
mnp.mnp_xml_richiesta_out@mnp rout,
|
|
mnp.mnp_gestione_richiesta@mnp gr
|
|
WHERE xml.tipo_processo = 'D'
|
|
AND rout.id_richiesta = gr.id_richiesta
|
|
AND xml.tipo_file = '11'
|
|
AND xml.nome_file = rout.nome_file
|
|
AND xml.data_eff >= data_iniziale
|
|
AND xml.data_eff < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
gr.codice_operatore_rec_eff,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file;
|
|
|
|
-- 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_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_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'R'
|
|
FROM mnp.mnp_mspcoop_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_donor_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
|
|
AND tcin.tipo_evento = '01'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'R'
|
|
FROM mnp.mnp_mspcoop_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_donor_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
|
|
AND tcin.tipo_evento = '03'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
-- 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 "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_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
MIN(tcin.data_ricezione),
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'R'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_donor_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
|
|
AND tcin.tipo_evento = '01'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
MIN(tcin.data_ricezione),
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'R'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_donor_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
|
|
AND tcin.tipo_evento = '03'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
|
|
-- e infine le notifiche di sblocco credito anomalo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_credito_anomalo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Z',
|
|
MIN(tcin.data_ricezione),
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'R'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_donor_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='DV'
|
|
AND tcin.tipo_evento = '02'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
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 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_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_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'V'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
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',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'V'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '03'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
'SLA Y',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
-- ora carico le notifiche di sblocco credito anomalo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_credito_anomalo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Z',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'V'
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '02'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
'SLA Z',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
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 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 "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_effettivo,
|
|
RECIPIENT_EFFETTIVO,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
processo,
|
|
nome_file
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
MIN(FUN_CALCOLA_DATA(xml.nome_file,ack.data_inserimento)),
|
|
'R',
|
|
xml.nome_file
|
|
FROM mnp.mnp_xml_ack_out@MNP ack,
|
|
mnp.mnp_xml_in@MNP xml,
|
|
mnp.mnp_xml_richiesta_in@MNP rin,
|
|
mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE ack.risultato = 'OK'
|
|
AND ack.nome_file_riferito = xml.nome_file
|
|
AND rin.id_richiesta = gr.id_richiesta
|
|
AND xml.tipo_file = '10'
|
|
AND xml.nome_file = rin.nome_file
|
|
AND ack.data_inserimento >= data_iniziale
|
|
AND ack.data_inserimento < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
RECIPIENT_EFFETTIVO,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
processo,
|
|
nome_file
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
MIN(FUN_CALCOLA_DATA(xml.nome_file,ack.data_inserimento)),
|
|
'R',
|
|
xml.nome_file
|
|
FROM mnp.mnp_xml_ack_out@MNP ack,
|
|
mnp.mnp_xml_in@MNP xml,
|
|
mnp.mnp_xml_richiesta_in@MNP rin,
|
|
mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE ack.risultato = 'OK'
|
|
AND rin.id_richiesta = gr.id_richiesta
|
|
AND ack.nome_file_riferito = xml.nome_file
|
|
AND xml.tipo_file = '12'
|
|
AND xml.nome_file = rin.nome_file
|
|
AND ack.data_inserimento >= data_iniziale
|
|
AND ack.data_inserimento < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file
|
|
;
|
|
|
|
|
|
-- e infine le notifiche di sblocco credito anomalo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
RECIPIENT_EFFETTIVO,
|
|
dco_effettiva,
|
|
data_sbl_credito_anomalo,
|
|
processo,
|
|
nome_file
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Z',
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
MIN(FUN_CALCOLA_DATA(xml.nome_file,ack.data_inserimento)),
|
|
'R',
|
|
xml.nome_file
|
|
FROM mnp.mnp_xml_ack_out@MNP ack,
|
|
mnp.mnp_xml_in@MNP xml,
|
|
mnp.mnp_xml_richiesta_in@MNP rin,
|
|
mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE ack.risultato = 'OK'
|
|
AND ack.nome_file_riferito = xml.nome_file
|
|
AND rin.id_richiesta = gr.id_richiesta
|
|
AND xml.tipo_file = '11'
|
|
AND xml.nome_file = rin.nome_file
|
|
AND ack.data_inserimento >= data_iniziale
|
|
AND ack.data_inserimento < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
xml.data_eff,
|
|
gr.codice_operatore_don_eff,
|
|
GR.CODICE_OPERATORE_REC_EFF,
|
|
gr.data_cut_over_eff,
|
|
xml.nome_file
|
|
;
|
|
|
|
-- 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_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_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'D'
|
|
FROM mnp.mnp_msp_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
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,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'D'
|
|
FROM mnp.mnp_msp_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '03'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
-- 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 "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_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_notifica_credito,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA X',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'D'
|
|
FROM mnp.mnp_mspcoop_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
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,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
|
|
-- ora carico le notifiche di sblocco importo
|
|
INSERT INTO dwh.mnp_dw_sla_tc_out
|
|
(id_richiesta,
|
|
tipo_messaggio,
|
|
data_messaggio,
|
|
donor_effettivo,
|
|
recipient_effettivo,
|
|
dco_effettiva,
|
|
data_sbl_importo,
|
|
PROCESSO
|
|
)
|
|
SELECT UNIQUE gr.id_richiesta,
|
|
'SLA Y',
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff,
|
|
MIN(tcin.data_ricezione),
|
|
'D'
|
|
FROM mnp.mnp_mspcoop_tc_in@MNP tcin,
|
|
mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '03'
|
|
AND tcin.data_ricezione >= data_iniziale
|
|
AND tcin.data_ricezione < data_finale
|
|
GROUP BY gr.id_richiesta,
|
|
tcin.data_ricezione,
|
|
gr.codice_operatore_donating,
|
|
gr.codice_operatore_recipient,
|
|
gr.data_cut_over_eff
|
|
;
|
|
|
|
-- 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" (
|
|
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
|
|
dwh.caricamento_sla_tc_don (mese_in,anno_in, errore_don);
|
|
|
|
-- caricamento notifiche RECIPIENT
|
|
dwh.caricamento_sla_tc_rec (mese_in,anno_in, errore_rec);
|
|
|
|
-- caricamento notifiche processi VIRTUALI
|
|
dwh.caricamento_sla_tc_dv_mvno (mese_in,anno_in, errore_dv_mvno);
|
|
dwh.caricamento_sla_tc_dv_esp (mese_in,anno_in, errore_dv_esp);
|
|
dwh.caricamento_sla_tc_rv_mvno (mese_in,anno_in, errore_rv_mvno);
|
|
dwh.caricamento_sla_tc_rv_esp (mese_in,anno_in, errore_rv_esp);
|
|
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"
|
|
AS
|
|
mese_in NUMBER;
|
|
anno_in NUMBER;
|
|
data_in DATE;
|
|
data_iniziale DATE;
|
|
cod_errore NUMBER;
|
|
BEGIN
|
|
cod_errore := 0;
|
|
data_in := add_months(sysdate,-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);
|
|
|
|
data_iniziale := to_date('1-'|| mese_in||'-'|| anno_in,'DD-MM-YYYY');
|
|
|
|
|
|
-- CARICAMENTO DATI
|
|
-- caricamento dati nella tabella temporanea MNP_DW_SLA_TC_IN
|
|
dwh.caricamento_sla_tc(mese_in,anno_in, cod_errore);
|
|
|
|
|
|
IF cod_errore = 0
|
|
THEN
|
|
-- tutto a posto
|
|
DBMS_OUTPUT.put_line ('Avvio procedura di calcolo delle penali');
|
|
END IF;
|
|
|
|
-- CALCOLO SLA X
|
|
-- calcolo i giorni di ritardo per lo SLAX
|
|
UPDATE dwh.mnp_dw_sla_tc_out SET
|
|
numero_giorni_ritardo = trunc(data_notifica_credito -dwh.FUN_GIORNI_PIU(dco_effettiva,2))
|
|
WHERE tipo_messaggio = 'SLA X'
|
|
AND numero_giorni_ritardo IS NULL
|
|
;
|
|
|
|
-- CALCOLO SLA Y
|
|
-- calcolo i giorni di ritardo per lo SLAY
|
|
UPDATE dwh.mnp_dw_sla_tc_out SET
|
|
numero_giorni_ritardo = trunc(data_sbl_importo-dwh.FUN_GIORNI_PIU(data_notifica_credito,5))
|
|
WHERE tipo_messaggio = 'SLA Y'
|
|
AND numero_giorni_ritardo IS NULL
|
|
;
|
|
|
|
-- CALCOLO SLA Z
|
|
-- calcolo i giorni di ritardo per lo SLAZ
|
|
UPDATE dwh.mnp_dw_sla_tc_out SET
|
|
numero_giorni_ritardo = trunc(data_sbl_credito_anomalo-dwh.FUN_GIORNI_PIU(data_notifica_credito,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 ;
|
|
|
|
-- 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;
|
|
/
|