First Commit - Source Code from Reply
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
ALTER TABLE DWH_SVIL.MNP_DW_SLA_3GG_OUT
|
||||
DROP PRIMARY KEY CASCADE;
|
||||
DROP TABLE DWH_SVIL.MNP_DW_SLA_3GG_OUT CASCADE CONSTRAINTS;
|
||||
|
||||
CREATE TABLE DWH_SVIL.MNP_DW_SLA_3GG_OUT
|
||||
(
|
||||
ID_RICHIESTA VARCHAR2(23 BYTE) NOT NULL,
|
||||
TIPO_MESSAGGIO VARCHAR2(23 BYTE) NOT NULL,
|
||||
ID_PROG NUMBER NOT NULL,
|
||||
DATA_MESSAGGIO DATE NOT NULL,
|
||||
DONOR_EFFETTIVO VARCHAR2(4 BYTE) NOT NULL,
|
||||
RECIPIENT_EFFETTIVO VARCHAR2(4 BYTE) NOT NULL,
|
||||
TERZA_PARTE VARCHAR2(4 BYTE),
|
||||
NOME_FILE VARCHAR2(27 BYTE) NOT NULL,
|
||||
NUMERO_GIORNI_RITARDO NUMBER DEFAULT 0 NOT NULL,
|
||||
PENALE NUMBER DEFAULT 0 NOT NULL,
|
||||
T_INIZIALE DATE NOT NULL,
|
||||
T_FINALE DATE NOT NULL,
|
||||
PROCESSO VARCHAR2(1 BYTE) NOT NULL,
|
||||
DATA_CUT_OVER DATE NOT NULL
|
||||
)
|
||||
TABLESPACE TAB_SMALL
|
||||
PCTUSED 40
|
||||
PCTFREE 10
|
||||
INITRANS 1
|
||||
MAXTRANS 255
|
||||
STORAGE (
|
||||
INITIAL 10M
|
||||
NEXT 10M
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS UNLIMITED
|
||||
PCTINCREASE 0
|
||||
FREELISTS 1
|
||||
FREELIST GROUPS 1
|
||||
BUFFER_POOL DEFAULT
|
||||
)
|
||||
LOGGING
|
||||
NOCOMPRESS
|
||||
NOCACHE
|
||||
NOPARALLEL
|
||||
NOMONITORING;
|
||||
|
||||
|
||||
CREATE UNIQUE INDEX DWH_SVIL.MNP_DW_SLA_3GG_OUT_PK ON DWH_SVIL.MNP_DW_SLA_3GG_OUT
|
||||
(ID_RICHIESTA, TIPO_MESSAGGIO, ID_PROG)
|
||||
LOGGING
|
||||
TABLESPACE TAB_SMALL
|
||||
PCTFREE 10
|
||||
INITRANS 2
|
||||
MAXTRANS 255
|
||||
STORAGE (
|
||||
INITIAL 10M
|
||||
NEXT 10M
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS UNLIMITED
|
||||
PCTINCREASE 0
|
||||
FREELISTS 1
|
||||
FREELIST GROUPS 1
|
||||
BUFFER_POOL DEFAULT
|
||||
)
|
||||
NOPARALLEL;
|
||||
|
||||
|
||||
ALTER TABLE DWH_SVIL.MNP_DW_SLA_3GG_OUT ADD (
|
||||
CONSTRAINT MNP_DW_SLA_3GG_OUT_PK
|
||||
PRIMARY KEY
|
||||
(ID_RICHIESTA, TIPO_MESSAGGIO, ID_PROG)
|
||||
USING INDEX
|
||||
TABLESPACE TAB_SMALL
|
||||
PCTFREE 10
|
||||
INITRANS 2
|
||||
MAXTRANS 255
|
||||
STORAGE (
|
||||
INITIAL 10M
|
||||
NEXT 10M
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS UNLIMITED
|
||||
PCTINCREASE 0
|
||||
FREELISTS 1
|
||||
FREELIST GROUPS 1
|
||||
));
|
||||
147
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/CALCOLO_SLA_TC.sql
Normal file
147
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/CALCOLO_SLA_TC.sql
Normal file
@@ -0,0 +1,147 @@
|
||||
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;
|
||||
mesecomp varchar2(7);
|
||||
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');
|
||||
mesecomp := to_char(data_in,'MM/YYYY');
|
||||
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;
|
||||
|
||||
|
||||
-- ######################################### --
|
||||
-- ## AGGIORNAMENTO FLAG_PENALE_ALTRO_AOM ## --
|
||||
-- ######################################### --
|
||||
|
||||
-- QUESTA UPDATE FA SI CHE TUTTI GLI EVENTI 'SLA X', 'SLA Y' E 'SLA Z' APPENA CARICATI
|
||||
-- VENGANO IMPOSTATI CON IL FLAG A N se e' PRESENTE UN RITARDO
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'N'
|
||||
WHERE IS_PENALE_ALTRO_AOM IS NULL AND PROCESSO <> 'V' AND MESE_COMP_FINALE = mesecomp
|
||||
AND numero_giorni_ritardo > 0;
|
||||
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA X DONOR
|
||||
-- LA WHERE CONDITION IS_PENALE_ALTRO_AOM IS NULL FA SI CHE CONSIDERI SOLO I DATI APPENA INSERITI
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA X' AND IS_PENALE_ALTRO_AOM IS NULL AND PROCESSO = 'D' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,2))) > 0;
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA Y DONOR
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA Y' AND IS_PENALE_ALTRO_AOM IS NULL AND PROCESSO = 'D' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,5))) > 0;
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA Z DONOR
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA Z' AND IS_PENALE_ALTRO_AOM IS NULL AND PROCESSO = 'D' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,5))) > 0;
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA X RECIPIENT
|
||||
-- LA WHERE CONDITION IS_PENALE_ALTRO_AOM IS NULL FA SI CHE CONSIDERI SOLO I DATI APPENA INSERITI
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA X' AND PROCESSO = 'R' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,2))) > 0;
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA Y RECIPIENT
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA Y' AND PROCESSO = 'R' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,5))) > 0;
|
||||
|
||||
-- CALCOLO FLAG PENALE ALTRO AOM SLA Z RECIPIENT
|
||||
UPDATE DWH.MNP_DW_SLA_TC_OUT
|
||||
SET IS_PENALE_ALTRO_AOM = 'Y'
|
||||
WHERE TIPO_MESSAGGIO='SLA Z' AND PROCESSO = 'R' AND MESE_COMP_FINALE = mesecomp
|
||||
AND TRUNC( TRUNC(T_FINALE_ALTRO_AOM) - TRUNC(FUN_GIORNI_PIU(T_INIZIALE,5))) > 0;
|
||||
|
||||
-- ######################################### --
|
||||
|
||||
-- ######################################### --
|
||||
|
||||
-- se i giorni di ritardo sono < 0 (non c'e' ritardo)
|
||||
-- cancello i record corrispondenti
|
||||
DELETE FROM dwh.mnp_dw_sla_tc_out
|
||||
WHERE numero_giorni_ritardo <= 0
|
||||
and is_penale_altro_aom IS NULL;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_sla_tc_out
|
||||
WHERE numero_giorni_ritardo is null and is_penale_altro_aom IS NULL;
|
||||
|
||||
|
||||
-- INFINE CALCOLO LA PENALE DI 10 EURO AL GIORNO
|
||||
UPDATE dwh.mnp_dw_sla_tc_out
|
||||
SET penale = numero_giorni_ritardo * F_ESTRAI_IMPORTO_SLA(decode(processo,'D',donor_effettivo,'R',recipient_effettivo,
|
||||
'V',decode(donor_effettivo,'TIMG',donor_effettivo,recipient_effettivo)),TIPO_MESSAGGIO)
|
||||
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;
|
||||
/
|
||||
@@ -0,0 +1,180 @@
|
||||
create or replace procedure CARICAMENTO_REPORT_TCR(P_DATA DATE) is
|
||||
begin
|
||||
-- cancellazione del pregresso
|
||||
BEGIN
|
||||
|
||||
DELETE MNP_DW_REPORT_TCR
|
||||
WHERE data_di_riferimento < ADD_MONTHS(sysdate,-13);
|
||||
--
|
||||
COMMIT;
|
||||
|
||||
DBMS_OUTPUT.put_line('CANCELLAZIONE DEL PREGRESSO (DATI PIU'' VECCHI DI 13 MESI) '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.put_line('ERRORE IN CANCELLAZIONE DEL PREGRESSO '|| SQLERRM
|
||||
|| ' '|| TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
DBMS_OUTPUT.put_line('INIZIO CARICAMENTO TCR AMBITO RECIPIENT '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
-- CARICAMENTO DATI AMBITO RECIPIENT
|
||||
INSERT INTO MNP_DW_REPORT_TCR (id_richiesta, blocco, data_di_riferimento, data_dco_eff, tcr1, tcr2,
|
||||
msisdn, codice_pre_post_pagato, codice_operatore_don_eff, codice_operatore_rec_eff)
|
||||
SELECT R.ID_RICHIESTA, 0 BLOCCO, SRTC.DATA_NOTIFICA_RECIPIENT, R.DATA_CUT_OVER_EFF,RTC.CREDITO, RTC.CREDITO,
|
||||
R.MSISDN, R.CODICE_PRE_POST_PAGATO, R.CODICE_OPERATORE_DON_EFF, R.CODICE_OPERATORE_REC_EFF
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA_REC R, MNP.MNP_GEST_RICH_REC_TC RTC, MNP.MNP_STOR_RICH_REC_TC SRTC
|
||||
WHERE R.ID_RICHIESTA = RTC.ID_RICHIESTA
|
||||
AND RTC.ID_RICHIESTA = SRTC.ID_RICHIESTA
|
||||
AND R.CODICE_OPERATORE_REC_EFF = 'TIMG'
|
||||
AND SRTC.STATO_DA = -1 --PASSAGGIO DI STATO DELLE RICHIESTE SENZA BLOCCO
|
||||
AND SRTC.STATO_A = 7 --
|
||||
AND SRTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT R.ID_RICHIESTA, 1 BLOCCO, SRTC.DATA_NOTIFICA_RECIPIENT, R.DATA_CUT_OVER_EFF, RTC.CREDITO, RTC.CREDITO,
|
||||
R.MSISDN, R.CODICE_PRE_POST_PAGATO, R.CODICE_OPERATORE_DON_EFF, R.CODICE_OPERATORE_REC_EFF
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA_REC R, MNP.MNP_GEST_RICH_REC_TC RTC, MNP.MNP_STOR_RICH_REC_TC SRTC
|
||||
WHERE R.ID_RICHIESTA = RTC.ID_RICHIESTA
|
||||
AND RTC.ID_RICHIESTA = SRTC.ID_RICHIESTA
|
||||
AND R.CODICE_OPERATORE_REC_EFF = 'TIMG'
|
||||
AND SRTC.STATO_DA = 2 -- PASSAGGIO DI STATO DELLE RICHIESTE CON BLOCCO IMPORTO
|
||||
AND SRTC.STATO_A = 7 --
|
||||
AND SRTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT R.ID_RICHIESTA, 2 BLOCCO, SRTC.DATA_NOTIFICA_RECIPIENT, R.DATA_CUT_OVER_EFF, RTC.CREDITO, RTC.CREDITO,
|
||||
R.MSISDN, R.CODICE_PRE_POST_PAGATO, R.CODICE_OPERATORE_DON_EFF, R.CODICE_OPERATORE_REC_EFF
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA_REC R, MNP.MNP_GEST_RICH_REC_TC RTC, MNP.MNP_STOR_RICH_REC_TC SRTC
|
||||
WHERE R.ID_RICHIESTA = RTC.ID_RICHIESTA
|
||||
AND RTC.ID_RICHIESTA = SRTC.ID_RICHIESTA
|
||||
AND R.CODICE_OPERATORE_REC_EFF = 'TIMG'
|
||||
AND SRTC.STATO_DA = 3 -- PASSAGGIO DI STATO DELLE RICHIESTE CON VERIFICA CREDITO ANOMALO
|
||||
AND SRTC.STATO_A = 7 --
|
||||
AND SRTC.DATA_LAVORAZIONE = TRUNC(P_DATA);
|
||||
--
|
||||
--
|
||||
COMMIT;
|
||||
--
|
||||
DBMS_OUTPUT.put_line('FINE CARICAMENTO TCR AMBITO RECIPIENT '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.put_line('ERRORE CARICAMENTO TCR AMBITO RECIPIENT '|| SQLERRM
|
||||
|| ' '|| TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
-- CARICAMENTO DATI AMBITO DONOR
|
||||
DBMS_OUTPUT.put_line('INIZIO CARICAMENTO TCR AMBITO DONOR '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
--
|
||||
INSERT INTO MNP_DW_REPORT_TCR (id_richiesta, blocco, data_di_riferimento, data_dco_eff, tcr1, tcr2,
|
||||
msisdn, codice_pre_post_pagato, codice_operatore_don_eff, codice_operatore_rec_eff)
|
||||
SELECT D.ID_RICHIESTA, 0 BLOCCO, SDTC.DATA_NOTIFICA_RECIPIENT, D.DATA_CUT_OVER_EFF, DTC.CREDITO, DTC.CREDITO,
|
||||
D.MSISDN, D.CODICE_PRE_POST_PAGATO, D.CODICE_OPERATORE_DON_EFF, D.CODICE_OPERATORE_REC_EFF
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA D, MNP.MNP_GEST_RICH_DON_TC DTC, MNP.MNP_STOR_RICH_DON_TC SDTC
|
||||
WHERE D.ID_RICHIESTA = DTC.ID_RICHIESTA
|
||||
AND DTC.ID_RICHIESTA = SDTC.ID_RICHIESTA
|
||||
AND D.CODICE_OPERATORE_DON_EFF = 'TIMG'
|
||||
AND SDTC.STATO_DA = 1 -- PASSAGGIO DI STATO DELLE RICHIESTE SENZA BLOCCO
|
||||
AND SDTC.STATO_A = 7 --
|
||||
AND SDTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT D.ID_RICHIESTA, 1 BLOCCO, SDTC.DATA_NOTIFICA_RECIPIENT, D.DATA_CUT_OVER_EFF, DTC.CREDITO, DTC.CREDITO,
|
||||
D.MSISDN, D.CODICE_PRE_POST_PAGATO, D.CODICE_OPERATORE_DON_EFF, D.CODICE_OPERATORE_REC_EFF
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA D, MNP.MNP_GEST_RICH_DON_TC DTC, MNP.MNP_STOR_RICH_DON_TC SDTC
|
||||
WHERE D.ID_RICHIESTA = DTC.ID_RICHIESTA
|
||||
AND DTC.ID_RICHIESTA = SDTC.ID_RICHIESTA
|
||||
AND D.CODICE_OPERATORE_DON_EFF = 'TIMG'
|
||||
AND SDTC.STATO_DA = 4 -- PASSAGGIO DI STATO DELLE RICHIESTE CON BLOCCO IMPORTO
|
||||
AND SDTC.STATO_A = 7 --
|
||||
AND SDTC.DATA_LAVORAZIONE = TRUNC(P_DATA);
|
||||
--
|
||||
COMMIT;
|
||||
--
|
||||
DBMS_OUTPUT.put_line('FINE CARICAMENTO TCR AMBITO DONOR '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
--
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.put_line('ERRORE CARICAMENTO TCR AMBITO DONOR '|| SQLERRM
|
||||
|| ' '|| TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
END;
|
||||
--
|
||||
--
|
||||
|
||||
|
||||
BEGIN
|
||||
DBMS_OUTPUT.put_line('INIZIO CARICAMENTO TCR AMBITO RECIPIENT VIRTULAE '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
-- CARICAMENTO DATI AMBITO RECIPIENT VIRTULAE
|
||||
INSERT INTO MNP_DW_REPORT_TCR (id_richiesta, blocco, data_di_riferimento, data_dco_eff, tcr1, tcr2,
|
||||
msisdn, codice_pre_post_pagato, codice_operatore_don_eff, codice_operatore_rec_eff)
|
||||
SELECT RV.ID_RICHIESTA, 0 BLOCCO, SRVTC.DATA_NOTIFICA_RECIPIENT, RV.DATA_CUT_OVER_EFF,RVTC.CREDITO, RVTC.CREDITO,
|
||||
RV.MSISDN, RV.CODICE_PRE_POST_PAGATO, RV.CODICE_OPERATORE_DONATING, RV.CODICE_OPERATORE_RECIPIENT
|
||||
FROM MNP.MNP_GEST_RICH_REC_VIRT RV, MNP.MNP_GEST_RICH_REC_VIRT_TC RVTC, MNP.MNP_STOR_RICH_REC_VIRT_TC SRVTC
|
||||
WHERE RV.ID_RICHIESTA = RVTC.ID_RICHIESTA
|
||||
AND RVTC.ID_RICHIESTA = SRVTC.ID_RICHIESTA
|
||||
AND SRVTC.STATO_DA = 1 --PASSAGGIO DI STATO DELLE RICHIESTE SENZA BLOCCO
|
||||
AND SRVTC.STATO_A = 7 --
|
||||
AND SRVTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT RV.ID_RICHIESTA, 1 BLOCCO, SRVTC.DATA_NOTIFICA_RECIPIENT, RV.DATA_CUT_OVER_EFF, RVTC.CREDITO, RVTC.CREDITO,
|
||||
RV.MSISDN, RV.CODICE_PRE_POST_PAGATO, RV.CODICE_OPERATORE_DONATING, RV.CODICE_OPERATORE_RECIPIENT
|
||||
FROM MNP.MNP_GEST_RICH_REC_VIRT RV, MNP.MNP_GEST_RICH_REC_VIRT_TC RVTC, MNP.MNP_STOR_RICH_REC_VIRT_TC SRVTC
|
||||
WHERE RV.ID_RICHIESTA = RVTC.ID_RICHIESTA
|
||||
AND RVTC.ID_RICHIESTA = SRVTC.ID_RICHIESTA
|
||||
AND SRVTC.STATO_DA = 4 -- PASSAGGIO DI STATO DELLE RICHIESTE CON BLOCCO IMPORTO
|
||||
AND SRVTC.STATO_A = 7 --
|
||||
AND SRVTC.DATA_LAVORAZIONE = TRUNC(P_DATA);
|
||||
--
|
||||
--
|
||||
COMMIT;
|
||||
--
|
||||
DBMS_OUTPUT.put_line('FINE CARICAMENTO TCR AMBITO RECIPIENT VIRTULAE '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.put_line('ERRORE CARICAMENTO TCR AMBITO RECIPIENT VIRTULAE '|| SQLERRM
|
||||
|| ' '|| TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
-- CARICAMENTO DATI AMBITO DONOR VIRTUALE
|
||||
DBMS_OUTPUT.put_line('INIZIO CARICAMENTO TCR AMBITO DONOR VIRTUALE '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
--
|
||||
INSERT INTO MNP_DW_REPORT_TCR (id_richiesta, blocco, data_di_riferimento, data_dco_eff, tcr1, tcr2,
|
||||
msisdn, codice_pre_post_pagato, codice_operatore_don_eff, codice_operatore_rec_eff)
|
||||
SELECT DV.ID_RICHIESTA, 0 BLOCCO, SDVTC.DATA_NOTIFICA_RECIPIENT, DV.DATA_CUT_OVER_EFF, DVTC.CREDITO, DVTC.CREDITO,
|
||||
DV.MSISDN, DV.CODICE_PRE_POST_PAGATO, DV.CODICE_OPERATORE_DONATING, DV.CODICE_OPERATORE_RECIPIENT
|
||||
FROM MNP.MNP_GEST_RICH_DONOR_VIRT DV, MNP.MNP_GEST_RICH_DON_VIRT_TC DVTC, MNP.MNP_STOR_RICH_DON_VIRT_TC SDVTC
|
||||
WHERE DV.ID_RICHIESTA = DVTC.ID_RICHIESTA
|
||||
AND DVTC.ID_RICHIESTA = SDVTC.ID_RICHIESTA
|
||||
AND SDVTC.STATO_DA = 6 -- PASSAGGIO DI STATO DELLE RICHIESTE SENZA BLOCCO
|
||||
AND SDVTC.STATO_A = 7 --
|
||||
AND SDVTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT DV.ID_RICHIESTA, 1 BLOCCO, SDVTC.DATA_NOTIFICA_RECIPIENT, DV.DATA_CUT_OVER_EFF, DVTC.CREDITO, DVTC.CREDITO,
|
||||
DV.MSISDN, DV.CODICE_PRE_POST_PAGATO, DV.CODICE_OPERATORE_DONATING, DV.CODICE_OPERATORE_RECIPIENT
|
||||
FROM MNP.MNP_GEST_RICH_DONOR_VIRT DV, MNP.MNP_GEST_RICH_DON_VIRT_TC DVTC, MNP.MNP_STOR_RICH_DON_VIRT_TC SDVTC
|
||||
WHERE DV.ID_RICHIESTA = DVTC.ID_RICHIESTA
|
||||
AND DVTC.ID_RICHIESTA = SDVTC.ID_RICHIESTA
|
||||
AND SDVTC.STATO_DA = 2 -- PASSAGGIO DI STATO DELLE RICHIESTE CON BLOCCO IMPORTO
|
||||
AND SDVTC.STATO_A = 6 --
|
||||
AND SDVTC.DATA_LAVORAZIONE = TRUNC(P_DATA)
|
||||
UNION
|
||||
SELECT DV.ID_RICHIESTA, 2 BLOCCO, SDVTC.DATA_NOTIFICA_RECIPIENT, DV.DATA_CUT_OVER_EFF, DVTC.CREDITO, DVTC.CREDITO,
|
||||
DV.MSISDN, DV.CODICE_PRE_POST_PAGATO, DV.CODICE_OPERATORE_DONATING, DV.CODICE_OPERATORE_RECIPIENT
|
||||
FROM MNP.MNP_GEST_RICH_DONOR_VIRT DV, MNP.MNP_GEST_RICH_DON_VIRT_TC DVTC, MNP.MNP_STOR_RICH_DON_VIRT_TC SDVTC
|
||||
WHERE DV.ID_RICHIESTA = DVTC.ID_RICHIESTA
|
||||
AND DVTC.ID_RICHIESTA = SDVTC.ID_RICHIESTA
|
||||
AND SDVTC.STATO_DA = 3 -- PASSAGGIO DI STATO DELLE RICHIESTE CON VERIFICA CREDITO ANOMALO
|
||||
AND SDVTC.STATO_A = 6 --
|
||||
AND SDVTC.DATA_LAVORAZIONE = TRUNC(P_DATA);
|
||||
--
|
||||
COMMIT;
|
||||
--
|
||||
DBMS_OUTPUT.put_line('FINE CARICAMENTO TCR AMBITO DONOR VIRTUALE '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
--
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.put_line('ERRORE CARICAMENTO TCR AMBITO DONOR VIRTUALE '|| SQLERRM
|
||||
|| ' '|| TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
END;
|
||||
|
||||
|
||||
--
|
||||
DBMS_OUTPUT.put_line('CARICAMENTO REPORT TCR TERMINATO '||TO_CHAR(SYSDATE,'DD/MM/YYYY'));
|
||||
--
|
||||
|
||||
end CARICAMENTO_REPORT_TCR;
|
||||
/
|
||||
@@ -0,0 +1,69 @@
|
||||
CREATE OR REPLACE PROCEDURE "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
|
||||
-- Luca Alghisi K12-2012: commentate le chiamate alle procedura TCR ESP per rendere valida la procedura di lancio
|
||||
-------------------------------------------------------
|
||||
|
||||
errore_don NUMBER;
|
||||
errore_rec NUMBER;
|
||||
errore_dv_mvno NUMBER;
|
||||
errore_dv_esp NUMBER;
|
||||
errore_rv_mvno NUMBER;
|
||||
errore_rv_esp NUMBER;
|
||||
errore_m2m NUMBER;
|
||||
errore NUMBER;
|
||||
|
||||
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'); Commentata la procedura per il calcolo delle penali TCR per le richieste ESP non piu' presenti
|
||||
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'); Commentata la procedura per il calcolo delle penali TCR per le richieste ESP non piu' presenti
|
||||
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_rv_mvno + errore_m2m;
|
||||
-- errore_dv_esp + errore_rv_esp
|
||||
|
||||
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;
|
||||
/
|
||||
@@ -0,0 +1,313 @@
|
||||
CREATE OR REPLACE PROCEDURE DWH.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
|
||||
-- Luca Alghisi K12-2012: introduzione dell'estrazione delle finestre temporali dalla tabella di configurazione
|
||||
---------------------------------------
|
||||
data_iniziale DATE;
|
||||
data_finale DATE;
|
||||
V_TFINALE_ESPL mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_ESPL mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
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);
|
||||
-- ESTRAZIONE ORARI DI CHIUSURA DELLA FINESTRE PER GLI SLA X-Y-Z
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ESPL, V_TFINALE_ACK_ESPL
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'ESPLETAMENTO'
|
||||
AND TIPO_FILE = 6;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_TRASF, V_TFINALE_ACK_TRASF
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'TRASFERIMENTOCREDITO'
|
||||
AND TIPO_FILE = 10;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_SBL_CRED_ANOM, V_TFINALE_ACK_SBL_CRED_ANOM
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOCREDITOANOMALO'
|
||||
AND TIPO_FILE = 11;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':')
|
||||
INTO V_TFINALE_SBL_IMP
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOIMPORTO'
|
||||
AND TIPO_FILE = 12;
|
||||
|
||||
-- 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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_TRASF, trasXml.data_eff)) -- data_notifica_credito
|
||||
, MAX (fun_calcola_data (nvl(espAckIn.nome_file, espXml.nome_file), DECODE(espAckIn.nome_file, NULL, V_TFINALE_ESPL, V_TFINALE_ACK_ESPL), espXml.data_eff)) -- TI 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'),V_TFINALE_TRASF) -- TF data estratta dal nome della notifica credito
|
||||
, '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 (nvl(espAckIn.nome_file, espXml.nome_file), DECODE(espAckIn.nome_file, NULL, V_TFINALE_ESPL, V_TFINALE_ACK_ESPL), espXml.data_eff)),2) -- la data_attesa evento finale (TI+2gg))
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(trasXml.nome_file),5,14),'YYYYMMDDHH24MISS'),V_TFINALE_TRASF), 'MM/YYYY') -- mese competenza
|
||||
, MIN (fun_calcola_data (trasXml.nome_file, V_TFINALE_TRASF, trasXml.data_eff))
|
||||
FROM mnp.mnp_xml_ack_in espAckIn
|
||||
,mnp.mnp_xml_richiesta_out rEsp
|
||||
,mnp.mnp_xml_out espXml
|
||||
,mnp.mnp_xml_out trasXml
|
||||
,mnp.mnp_xml_richiesta_out rTras
|
||||
,mnp.mnp_xml_ack_in trasAckIn
|
||||
,mnp.mnp_gestione_richiesta 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 trasAckIn.RISULTATO = 'OK'
|
||||
AND espAckIn.RISULTATO(+) = 'OK'
|
||||
AND trasXml.data_eff >= data_iniziale
|
||||
AND trasXml.data_eff < data_finale
|
||||
GROUP BY gr.id_richiesta
|
||||
,gr.codice_operatore_don_eff
|
||||
,gr.codice_operatore_rec_eff
|
||||
,gr.codice_operatore_donating
|
||||
,gr.codice_operatore_recipient
|
||||
,gr.data_cut_over_eff
|
||||
,gr.msisdn
|
||||
,gr.codice_richiesta_recipient;
|
||||
|
||||
|
||||
-- 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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_TRASF, trasXml.data_eff)) -- data trasferimento credito
|
||||
, MIN (fun_calcola_data (sblCrXml.nome_file, V_TFINALE_SBL_CRED_ANOM, sblCrXml.data_eff)) -- data_sbl_credito_anomalo
|
||||
, MIN (fun_calcola_data (nvl(trasAckIn.nome_file, trasXml.nome_file), DECODE(trasAckIn.nome_file, NULL, V_TFINALE_TRASF, V_TFINALE_ACK_TRASF), trasXml.data_eff)) -- TI data estratta dall'ack ricevuto dal Recipient in risposta al trasferimento credito del donating
|
||||
, FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(sblCrXml.nome_file),5,14),'YYYYMMDDHH24MISS'),V_TFINALE_SBL_CRED_ANOM) -- TF 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 (nvl(trasAckIn.nome_file, trasXml.nome_file), DECODE(trasAckIn.nome_file, NULL, V_TFINALE_TRASF, V_TFINALE_ACK_TRASF), trasXml.data_eff)),5) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(to_date(substr( MIN(sblCrXml.nome_file),5,14),'YYYYMMDDHH24MISS'),V_TFINALE_SBL_CRED_ANOM) , 'MM/YYYY') -- mese competenza
|
||||
, MIN (fun_calcola_data (sblCrXml.nome_file, V_TFINALE_SBL_CRED_ANOM, sblCrXml.data_eff))
|
||||
FROM mnp.mnp_xml_ack_in trasAckIn
|
||||
,mnp.mnp_xml_richiesta_out rTras
|
||||
,mnp.mnp_xml_out trasXml
|
||||
,mnp.mnp_xml_out sblCrXml
|
||||
,mnp.mnp_xml_richiesta_out rSblCr
|
||||
,mnp.mnp_xml_ack_in sblCrAckIn
|
||||
,mnp.mnp_gestione_richiesta 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 sblCrAckIn.risultato = 'OK'
|
||||
AND trasAckIn.risultato(+) = 'OK'
|
||||
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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_TRASF, trasXml.data_eff)) -- data trasferimento credito
|
||||
, MIN (fun_calcola_data (sblImXml.nome_file, V_TFINALE_SBL_IMP, sblImXml.data_eff)) -- data sblocco importo
|
||||
, MIN (fun_calcola_data (NVL(trasAckIn.nome_file, trasXml.nome_file), DECODE(trasAckIn.nome_file, NULL, V_TFINALE_TRASF, V_TFINALE_ACK_TRASF), trasXml.data_eff)) -- TI data estratta dall'ack ricevuto dal Recipient in risposta al trasferimento credito del donating
|
||||
, FUN_CALCOLA_DATA_RIC(to_date(substr(MIN(sblImXml.nome_file),5,14),'YYYYMMDDHH24MISS'),V_TFINALE_SBL_IMP) -- data estratta dal nome sblocco importo
|
||||
, '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 (NVL(trasAckIn.nome_file, trasXml.nome_file), DECODE(trasAckIn.nome_file, NULL, V_TFINALE_TRASF, V_TFINALE_ACK_TRASF), trasXml.data_eff)),5) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(to_date(substr(MIN(sblImXml.nome_file),5,14),'YYYYMMDDHH24MISS'),V_TFINALE_SBL_IMP), 'MM/YYYY') -- mese competenza
|
||||
, MIN (fun_calcola_data (sblImXml.nome_file, V_TFINALE_SBL_IMP, sblImXml.data_eff))
|
||||
FROM mnp.mnp_xml_ack_in trasAckIn
|
||||
,mnp.mnp_xml_richiesta_out rTras
|
||||
,mnp.mnp_xml_out trasXml
|
||||
,mnp.mnp_xml_out sblImXml
|
||||
,mnp.mnp_xml_richiesta_out rSblIm
|
||||
,mnp.mnp_xml_ack_in sblImAckIn
|
||||
,mnp.mnp_gestione_richiesta 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 trasAckIn.RISULTATO(+) = 'OK'
|
||||
AND sblImAckIn.RISULTATO = 'OK'
|
||||
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 nc, mnp.mnp_xml_out 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;
|
||||
/
|
||||
@@ -0,0 +1,183 @@
|
||||
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(FUN_CALCOLA_DATA_RIC(MIN(tcin.data_ricezione),1),'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(FUN_CALCOLA_DATA_RIC(MIN(tcinSblIm.data_ricezione),1),'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;
|
||||
/
|
||||
@@ -0,0 +1,261 @@
|
||||
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
|
||||
-- Luca Alghisi K12-2012: introduzione dell'estrazione delle finestre temporali dalla tabella di configurazione
|
||||
---------------------------------------
|
||||
data_iniziale DATE;
|
||||
data_finale DATE;
|
||||
V_TFINALE_ACK_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
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);
|
||||
|
||||
SELECT REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ACK_TRASF
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'TRASFERIMENTOCREDITO'
|
||||
AND TIPO_FILE = 10;
|
||||
|
||||
SELECT REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ACK_SBL_CRED_ANOM
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOCREDITOANOMALO'
|
||||
AND TIPO_FILE = 11;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ACK_SBL_IMP
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOIMPORTO'
|
||||
AND TIPO_FILE = 12;
|
||||
|
||||
|
||||
-- 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),V_TFINALE_ACK_TRASF) -- 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) -- DATA ATTESA EVENTO FINALE
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcin.data_ricezione),V_TFINALE_ACK_TRASF),'MM/YYYY') -- MESE DI COMPENTENZA
|
||||
FROM mnp.mnp_mvno_tc_in tcin
|
||||
,mnp.mnp_gest_rich_donor_virt 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.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),V_TFINALE_ACK_TRASF) -- tempo iniziale, data di notifica Credito
|
||||
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblCr.data_ricezione),V_TFINALE_ACK_SBL_CRED_ANOM) -- 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) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcinSblCr.data_ricezione),V_TFINALE_ACK_SBL_CRED_ANOM),'MM/YYYY') -- mese di competenza
|
||||
FROM mnp.mnp_mvno_tc_in tcinNtCr
|
||||
,mnp.mnp_mvno_tc_in tcinSblCr
|
||||
,mnp.mnp_gest_rich_donor_virt gr
|
||||
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
||||
AND tcinSblCr.id_richiesta_dbc = gr.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 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) ,V_TFINALE_ACK_TRASF) --tempo iniziale, data di notifica Credito
|
||||
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),V_TFINALE_ACK_SBL_IMP) -- 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) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcinSblIm.data_ricezione),V_TFINALE_ACK_SBL_IMP),'MM/YYYY') -- mese competenza
|
||||
FROM mnp.mnp_mvno_tc_in tcinNtCr
|
||||
,mnp.mnp_mvno_tc_in tcinSblIm
|
||||
,mnp.mnp_gest_rich_donor_virt gr
|
||||
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
||||
AND tcinSblIm.id_richiesta_dbc = 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 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;
|
||||
/
|
||||
@@ -0,0 +1,262 @@
|
||||
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
|
||||
-- Luca Alghisi K12-2012: introduzione dell'estrazione delle finestre temporali dalla tabella di configurazione
|
||||
---------------------------------------
|
||||
data_iniziale DATE;
|
||||
data_finale DATE;
|
||||
V_TFINALE_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
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);
|
||||
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_TRASF, V_TFINALE_ACK_TRASF
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'TRASFERIMENTOCREDITO'
|
||||
AND TIPO_FILE = 10;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ACK_SBL_CRED_ANOM
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOCREDITOANOMALO'
|
||||
AND TIPO_FILE = 11;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ACK_SBL_IMP
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOIMPORTO'
|
||||
AND TIPO_FILE = 12;
|
||||
|
||||
-- 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 cut over
|
||||
, FUN_CALCOLA_DATA_RIC(MIN(tcin.data_ricezione),V_TFINALE_ACK_TRASF) -- 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) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcin.data_ricezione),V_TFINALE_ACK_TRASF),'MM/YYYY') -- mese competenza
|
||||
FROM mnp.mnp_mvno_tc_in tcin
|
||||
, mnp.mnp_gest_rich_rec_virt 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'
|
||||
, 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),V_TFINALE_ACK_TRASF) -- tempo iniziale, data di notifica credito
|
||||
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblCr.data_ricezione) ,V_TFINALE_ACK_SBL_CRED_ANOM) -- tempo finale, data di sblocco anomalo
|
||||
, 'V'
|
||||
, NULL
|
||||
, NULL
|
||||
, NULL
|
||||
, gr.codice_operatore_donating
|
||||
, gr.codice_operatore_recipient
|
||||
, gr.msisdn
|
||||
, gr.id_richiesta
|
||||
, NULL
|
||||
, NULL
|
||||
, fun_giorni_piu(FUN_CALCOLA_DATA_RIC(MIN(tcinNtCr.data_ricezione),V_TFINALE_ACK_TRASF),5) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcinSblCr.data_ricezione),V_TFINALE_ACK_SBL_CRED_ANOM),'MM/YYYY') ---- mese competenza 05/10/10 modificata su Tf
|
||||
FROM mnp.mnp_mvno_tc_in tcinNtCr
|
||||
, mnp.mnp_mvno_tc_in tcinSblCr
|
||||
, mnp.mnp_gest_rich_rec_virt gr
|
||||
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
||||
AND tcinSblCr.id_richiesta_dbc = gr.id_richiesta
|
||||
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), V_TFINALE_ACK_TRASF) -- tempo iniziale, data di notifica Credito
|
||||
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione), V_TFINALE_ACK_SBL_IMP) -- 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(FUN_CALCOLA_DATA_RIC( MIN (tcinNtCr.data_ricezione), V_TFINALE_ACK_TRASF),5) -- data attesa evento
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcinSblIm.data_ricezione),V_TFINALE_ACK_SBL_IMP),'MM/YYYY') -- mese competenza
|
||||
FROM mnp.mnp_mvno_tc_in tcinNtCr
|
||||
, mnp.mnp_mvno_tc_in tcinSblIm
|
||||
, mnp.mnp_gest_rich_rec_virt gr
|
||||
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
||||
AND tcinSblIm.id_richiesta_dbc = gr.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 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;
|
||||
/
|
||||
@@ -0,0 +1,313 @@
|
||||
CREATE OR REPLACE PROCEDURE DWH."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
|
||||
-- Luca Alghisi K12-2012: introduzione dell'estrazione delle finestre temporali dalla tabella di configurazione
|
||||
---------------------------------------
|
||||
data_iniziale DATE;
|
||||
data_finale DATE;
|
||||
V_TFINALE_ESPL mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_ESPL mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_CRED_ANOM mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
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);
|
||||
|
||||
-- ESTRAZIONE ORARI DI CHIUSURA DELLA FINESTRE PER GLI SLA X-Y-Z
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_ESPL, V_TFINALE_ACK_ESPL
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'ESPLETAMENTO'
|
||||
AND TIPO_FILE = 6;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_TRASF, V_TFINALE_ACK_TRASF
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'TRASFERIMENTOCREDITO'
|
||||
AND TIPO_FILE = 10;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_SBL_CRED_ANOM, V_TFINALE_ACK_SBL_CRED_ANOM
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOCREDITOANOMALO'
|
||||
AND TIPO_FILE = 11;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_SBL_IMP, V_TFINALE_ACK_SBL_IMP
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOIMPORTO'
|
||||
AND TIPO_FILE = 12;
|
||||
|
||||
-- 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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)) -- data notifica credito
|
||||
, MIN(FUN_CALCOLA_DATA(espAckOut.nome_file, V_TFINALE_ACK_ESPL, espAckOut.data_inserimento)) -- TI data Ack in risposta all'Espletamento del Donating
|
||||
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file, V_TFINALE_ACK_TRASF, 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, V_TFINALE_ACK_ESPL, espAckOut.data_inserimento)),2) -- data attesa evento finale
|
||||
, TO_CHAR(MIN(FUN_CALCOLA_DATA(trasAckOut.NOME_FILE, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)), 'MM/YYYY') -- mese competenza
|
||||
, MIN(FUN_CALCOLA_DATA(trasXml.nome_file, V_TFINALE_TRASF, trasXml.data_EFF))
|
||||
FROM mnp.mnp_xml_ack_out trasAckOut
|
||||
, mnp.mnp_xml_ack_out espAckOut
|
||||
, mnp.mnp_xml_in trasXml
|
||||
, mnp.mnp_xml_in espXml
|
||||
, mnp.mnp_xml_richiesta_in rTrasIn
|
||||
, mnp.mnp_xml_richiesta_in rEspIn
|
||||
, mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE trasAckOut.risultato = 'OK'
|
||||
AND espAckOut.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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)) -- data notifica credito
|
||||
, MIN(FUN_CALCOLA_DATA(sblCrAckOut.nome_file, V_TFINALE_ACK_SBL_CRED_ANOM, sblCrAckOut.data_inserimento)) -- data sblocco credito anomalo
|
||||
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)) -- TI data Ack in risposta alla notifica Credito
|
||||
, MIN(FUN_CALCOLA_DATA(sblCrAckOut.nome_file, V_TFINALE_ACK_SBL_CRED_ANOM, 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, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)),5) -- data attesa evento finale
|
||||
, TO_CHAR(MIN(FUN_CALCOLA_DATA(sblCrAckOut.NOME_FILE, V_TFINALE_ACK_SBL_CRED_ANOM, sblCrAckOut.data_inserimento)), 'MM/YYYY') -- mese competenza
|
||||
, MIN(FUN_CALCOLA_DATA(sblCrXml.nome_file, V_TFINALE_SBL_CRED_ANOM, sblCrXml.data_EFF))
|
||||
FROM mnp.mnp_xml_ack_out trasAckOut
|
||||
, mnp.mnp_xml_ack_out sblCrAckOut
|
||||
, mnp.mnp_xml_in trasXml
|
||||
, mnp.mnp_xml_in sblCrXml
|
||||
, mnp.mnp_xml_richiesta_in rTrasIn
|
||||
, mnp.mnp_xml_richiesta_in rSblCrIn
|
||||
, mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE trasAckOut.risultato = 'OK'
|
||||
AND sblCrAckOut.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,t_finale_altro_aom
|
||||
)
|
||||
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, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)) -- data notifica credito
|
||||
, MIN(FUN_CALCOLA_DATA(sblImAckOut.nome_file, V_TFINALE_ACK_SBL_IMP, sblImAckOut.data_inserimento)) -- data sblocco importo
|
||||
, MIN(FUN_CALCOLA_DATA(trasAckOut.nome_file, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)) -- TI data Ack in risposta alla notifica Credito
|
||||
, MIN(FUN_CALCOLA_DATA(sblImAckOut.nome_file, V_TFINALE_ACK_SBL_IMP, sblImAckOut.data_inserimento)) -- TF data Ack in risposta allo sblocco Importo
|
||||
, '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, V_TFINALE_ACK_TRASF, trasAckOut.data_inserimento)),5) -- data attesa evento finale
|
||||
, TO_CHAR(MIN(FUN_CALCOLA_DATA(sblImAckOut.NOME_FILE, V_TFINALE_ACK_SBL_IMP, sblImAckOut.data_inserimento)),'MM/YYYY') -- mese competenza
|
||||
, MIN(FUN_CALCOLA_DATA(sblImXml.nome_file, V_TFINALE_SBL_IMP, sblImXml.data_EFF))
|
||||
FROM mnp.mnp_xml_ack_out trasAckOut
|
||||
, mnp.mnp_xml_ack_out sblImAckOut
|
||||
, mnp.mnp_xml_in trasXml
|
||||
, mnp.mnp_xml_in sblImXml
|
||||
, mnp.mnp_xml_richiesta_in rTrasIn
|
||||
, mnp.mnp_xml_richiesta_in rSblImIn
|
||||
, mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE trasAckOut.risultato = 'OK'
|
||||
AND sblImAckOut.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 rich, mnp.mnp_xml_in 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;
|
||||
/
|
||||
@@ -0,0 +1,186 @@
|
||||
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(FUN_CALCOLA_DATA_RIC( MIN(tcin.data_ricezione),0),'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(FUN_CALCOLA_DATA_RIC( MIN(tcinSblIm.data_ricezione),0),'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;
|
||||
/
|
||||
@@ -0,0 +1,189 @@
|
||||
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
|
||||
-- Luca Alghisi K12-2012: introduzione dell'estrazione delle finestre temporali dalla tabella di configurazione
|
||||
---------------------------------------
|
||||
data_iniziale DATE;
|
||||
data_finale DATE;
|
||||
V_TFINALE_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_ACK_TRASF mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
V_TFINALE_SBL_IMP mnp.MNP_ANAG_FINESTRE_TEMP_D147.T_FINALE%type;
|
||||
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);
|
||||
|
||||
SELECT REPLACE(T_FINALE,':'), REPLACE(T_FINALE_ACK,':')
|
||||
INTO V_TFINALE_TRASF, V_TFINALE_ACK_TRASF
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'TRASFERIMENTOCREDITO'
|
||||
AND TIPO_FILE = 10;
|
||||
--
|
||||
SELECT REPLACE(T_FINALE,':')
|
||||
INTO V_TFINALE_SBL_IMP
|
||||
FROM MNP.MNP_ANAG_FINESTRE_TEMP_D147
|
||||
WHERE DESC_FILE = 'SBLOCCOIMPORTO'
|
||||
AND TIPO_FILE = 12;
|
||||
|
||||
|
||||
-- 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),V_TFINALE_TRASF) -- 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) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcin.data_ricezione),V_TFINALE_TRASF),'MM/YYYY') -- mese competenza
|
||||
FROM mnp.mnp_msp_tc_in tcin
|
||||
, mnp.mnp_gest_rich_rec_virt gr
|
||||
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
||||
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
||||
AND tcin.tipo_evento = '01'
|
||||
AND gr.flag_esp = 0
|
||||
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),V_TFINALE_ACK_TRASF) -- tempo iniziale, data di notifica cretito
|
||||
, FUN_CALCOLA_DATA_RIC( MIN (tcinSblIm.data_ricezione),V_TFINALE_SBL_IMP) -- 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) -- data attesa evento finale
|
||||
, TO_CHAR(FUN_CALCOLA_DATA_RIC(MIN(tcinSblIm.data_ricezione),V_TFINALE_SBL_IMP),'MM/YYYY') -- mese competenza 05/10/10 Modificato su tcinSblIm.data_ricezione evento Finale
|
||||
FROM mnp.mnp_msp_tc_in tcinSblIm
|
||||
, mnp.mnp_msp_tc_in tcinNtCr
|
||||
, mnp.mnp_gest_rich_rec_virt gr
|
||||
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
||||
AND tcinSblIm.id_richiesta_dbc = gr.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 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;
|
||||
/
|
||||
@@ -0,0 +1,396 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_DONOR (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Donor
|
||||
-- La procedura calcola gli SLA Donor relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_DONOR_DELTA ed inserisce un record
|
||||
-- con i valori caolcolati nella tabella MNP_DW_DONOR_SLA
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 15/07/2004 Versione Iniziale
|
||||
-- A.Parati 22/07/2004 Modifica all'algoritmo di calcolo degli SLA
|
||||
-- A.Parati 17/08/2004 Correzione errori di calcolo
|
||||
-- L.Marcucci 15/10/2004 Correzione errori di calcolo SLA1 e SLA2
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
app_id_richiesta dwh.mnp_dw_donor_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0_minore dwh.mnp_dw_donor_sla.sla_zero_minore%TYPE;
|
||||
-- numero di giorni di SLA0<=4 relativi al mese calcolato su SLA precedenti
|
||||
sla0_maggiore dwh.mnp_dw_donor_sla.sla_zero_maggiore%TYPE;
|
||||
-- numero di giorni di SLA0>4 relativi al mese calcolato su SLA precedenti
|
||||
sla1_minore dwh.mnp_dw_donor_sla.sla_uno_minore%TYPE;
|
||||
-- numero di giorni di SLA1<=4 relativi al mese
|
||||
sla1_maggiore dwh.mnp_dw_donor_sla.sla_uno_maggiore%TYPE;
|
||||
-- numero di giorni di SLA1>4 relativi al mese
|
||||
sla2_minore dwh.mnp_dw_donor_sla.sla_due_minore%TYPE;
|
||||
-- numero di giorni di SLA2<=4 relativi al mese
|
||||
sla2_maggiore dwh.mnp_dw_donor_sla.sla_due_maggiore%TYPE;
|
||||
-- numero di giorni di SLA2>4 relativi al mese
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
app_data_ricezione_richiesta DATE; -- data ricezione richiesta
|
||||
app_data_validazione DATE; -- data di validazione
|
||||
app_data_validazione_max DATE; -- data di validazione massima
|
||||
app_data_espletamento DATE; -- data di espletamento
|
||||
app_data_stato_finale DATE;
|
||||
-- data in cui la richiesta ha terminato il processo
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
bound NUMBER := 4;
|
||||
-- Limite per la separazione dei giorni/ore di ritardo
|
||||
sla1_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA1 nel mese di riferimento
|
||||
sla1_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA1 dei mesi precedenti
|
||||
sla2_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA2 nel mese di riferimento
|
||||
sla2_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA2 dei mesi precedenti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_presa_in_carico,
|
||||
data_ricezione_richiesta, data_validazione, data_validazione_max,
|
||||
data_espletamento, data_stato_finale, data_cut_over_calc
|
||||
FROM dwh.mnp_dw_donor_delta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_DONOR_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA DONOR'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_sla
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta,
|
||||
app_data_validazione,
|
||||
app_data_validazione_max,
|
||||
app_data_espletamento,
|
||||
app_data_stato_finale,
|
||||
app_data_cut_over_calc;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
sla1_mesi_precedenti := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
sla2_mesi_precedenti := 0;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
-- se la data di presa in carico h nulla lo sla non viene calcolato
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
IF (TRUNC (app_data_presa_in_carico) <= ultimo_giorno_mese)
|
||||
AND (TRUNC (app_data_presa_in_carico) >= primo_giorno_mese)
|
||||
THEN
|
||||
sla0 := dwh.fun_giorni_lavorativi (
|
||||
app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta
|
||||
)
|
||||
- 1;
|
||||
ELSE
|
||||
sla0 := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale
|
||||
IF (TRUNC (app_data_validazione_max) <= ultimo_giorno_mese)
|
||||
AND ( app_data_validazione IS NULL
|
||||
OR app_data_validazione >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_validazione := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 := dwh.fun_giorni_lavorativi (
|
||||
app_data_validazione,
|
||||
app_data_validazione_max
|
||||
);
|
||||
|
||||
IF sla1 > 0
|
||||
THEN
|
||||
IF TRUNC (app_data_validazione_max) >= primo_giorno_mese
|
||||
THEN
|
||||
sla1_mese_corrente := sla1;
|
||||
ELSE
|
||||
sla1_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_validazione,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla1_mesi_precedenti := sla1
|
||||
- sla1_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mese_corrente < 0
|
||||
THEN
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mesi_precedenti < 0
|
||||
THEN
|
||||
sla1_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale
|
||||
IF (TRUNC (app_data_cut_over_calc) <= ultimo_giorno_mese)
|
||||
AND ( app_data_espletamento IS NULL
|
||||
OR app_data_espletamento >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_espletamento IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_espletamento := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_espletamento := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 := dwh.fun_giorni_lavorativi (
|
||||
app_data_espletamento,
|
||||
app_data_cut_over_calc
|
||||
);
|
||||
|
||||
IF sla2 > 0
|
||||
THEN
|
||||
IF TRUNC (app_data_cut_over_calc) >= primo_giorno_mese
|
||||
THEN
|
||||
sla2_mese_corrente := sla2;
|
||||
ELSE
|
||||
sla2_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_espletamento,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 mesi precedenti
|
||||
sla2_mesi_precedenti := sla2
|
||||
- sla2_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mese_corrente < 0
|
||||
THEN
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mesi_precedenti < 0
|
||||
THEN
|
||||
sla2_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA0 relativo al mese di riferimento
|
||||
IF sla0 > 0
|
||||
THEN
|
||||
IF sla0 <= bound
|
||||
THEN
|
||||
sla0_minore := sla0;
|
||||
sla0_maggiore := 0;
|
||||
ELSE
|
||||
sla0_minore := bound;
|
||||
sla0_maggiore := sla0
|
||||
- bound;
|
||||
END IF;
|
||||
ELSE
|
||||
-- se lo SLA totale h <= 0 gli SLA relativi al mese sono 0
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
END IF;
|
||||
|
||||
-- ************************ CALCOLO SLA1 SULLE DATE ****************************
|
||||
IF sla1_mese_corrente = 0
|
||||
THEN -- lo SLA1 del mese corrente h 0
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
ELSE -- lo SLA1 del mese corrente h positivo
|
||||
IF sla1_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := sla1_mese_corrente;
|
||||
ELSE
|
||||
IF sla1_mese_corrente >= bound
|
||||
- sla1_mesi_precedenti
|
||||
THEN
|
||||
sla1_minore := bound
|
||||
- sla1_mesi_precedenti;
|
||||
sla1_maggiore := sla1
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA1 del mese corrente h minore di 4 - SLA1 dei mesi precedenti
|
||||
sla1_minore := sla1_mese_corrente;
|
||||
sla1_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- ************************ FINE CALCOLO SLA1 SULLE DATE ****************************
|
||||
|
||||
-- ************************ CALCOLO SLA2 SULLE DATE ****************************
|
||||
IF sla2_mese_corrente = 0
|
||||
THEN -- lo SLA2 del mese corrente h 0
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
ELSE -- lo SLA2 del mese corrente h positivo
|
||||
IF sla2_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := sla2_mese_corrente;
|
||||
ELSE
|
||||
IF sla2_mese_corrente >= bound
|
||||
- sla2_mesi_precedenti
|
||||
THEN
|
||||
sla2_minore := bound
|
||||
- sla2_mesi_precedenti;
|
||||
sla2_maggiore := sla2
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA2 del mese corrente h minore di 4 - SLA2 dei mesi precedenti
|
||||
sla2_minore := sla2_mese_corrente;
|
||||
sla2_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- ************************ FINE CALCOLO SLA2 SULLE DATE ****************************
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla0_minore > 0
|
||||
OR sla0_maggiore > 0
|
||||
OR sla1_minore > 0
|
||||
OR sla1_maggiore > 0
|
||||
OR sla2_minore > 0
|
||||
OR sla2_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_donor_sla
|
||||
(id_richiesta, mese, anno, sla_zero_minore,
|
||||
sla_zero_maggiore, sla_uno_minore, sla_uno_maggiore,
|
||||
sla_due_minore, sla_due_maggiore)
|
||||
VALUES (app_id_richiesta, mese_in, anno_in, sla0_minore,
|
||||
sla0_maggiore, sla1_minore, sla1_maggiore,
|
||||
sla2_minore, sla2_maggiore);
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_donor_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA DONOR'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_DONOR '
|
||||
|| SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,395 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_DONOR_HOC (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Donor ad HOC
|
||||
-- La procedura calcola gli SLA Donor ad HOC relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_DONOR_HOC_DELTA ed inserisce un record
|
||||
-- con i valori caolcolati nella tabella MNP_DW_DONOR_HOC_SLA
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 18/08/2004 Versione Iniziale
|
||||
-- L.Marcucci 15/10/2004 Correzione errore calcolo SLA1 e SLA2
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
app_id_richiesta dwh.mnp_dw_donor_hoc_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0_minore dwh.mnp_dw_donor_hoc_sla.sla_zero_minore%TYPE;
|
||||
-- numero di giorni di SLA0<=4 relativi al mese calcolato su SLA precedenti
|
||||
sla0_maggiore dwh.mnp_dw_donor_hoc_sla.sla_zero_maggiore%TYPE;
|
||||
-- numero di giorni di SLA0>4 relativi al mese calcolato su SLA precedenti
|
||||
sla1_minore dwh.mnp_dw_donor_hoc_sla.sla_uno_minore%TYPE;
|
||||
-- numero di giorni di SLA1<=4 relativi al mese
|
||||
sla1_maggiore dwh.mnp_dw_donor_hoc_sla.sla_uno_maggiore%TYPE;
|
||||
-- numero di giorni di SLA1>4 relativi al mese
|
||||
sla2_minore dwh.mnp_dw_donor_hoc_sla.sla_due_minore%TYPE;
|
||||
-- numero di giorni di SLA2<=4 relativi al mese
|
||||
sla2_maggiore dwh.mnp_dw_donor_hoc_sla.sla_due_maggiore%TYPE;
|
||||
-- numero di giorni di SLA2>4 relativi al mese
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
app_data_ricezione_richiesta DATE; -- data ricezione richiesta
|
||||
app_data_prima_validazione DATE; -- data di prima validazione
|
||||
app_data_validazione_max DATE; -- data di validazione massima
|
||||
app_data_espletamento DATE; -- data di espletamento
|
||||
app_data_stato_finale DATE;
|
||||
-- data in cui la richiesta ha terminato il processo
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
bound NUMBER := 4;
|
||||
-- Limite per la separazione dei giorni/ore di ritardo
|
||||
sla1_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA1 nel mese di riferimento
|
||||
sla1_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA1 dei mesi precedenti
|
||||
sla2_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA2 nel mese di riferimento
|
||||
sla2_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA2 dei mesi precedenti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_presa_in_carico,
|
||||
data_ricezione_richiesta, data_prima_validazione,
|
||||
data_validazione_max, data_espletamento, data_stato_finale,
|
||||
data_cut_over_calc
|
||||
FROM dwh.mnp_dw_donor_hoc_delta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_DONOR_HOC_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA DONOR HOC'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_hoc_sla
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta,
|
||||
app_data_prima_validazione,
|
||||
app_data_validazione_max,
|
||||
app_data_espletamento,
|
||||
app_data_stato_finale,
|
||||
app_data_cut_over_calc;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
sla1_mesi_precedenti := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
sla2_mesi_precedenti := 0;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
-- se la data di presa in carico h nulla lo sla non viene calcolato
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
IF (TRUNC (app_data_presa_in_carico) <= ultimo_giorno_mese)
|
||||
AND (TRUNC (app_data_presa_in_carico) >= primo_giorno_mese)
|
||||
THEN
|
||||
sla0 := dwh.fun_giorni_lavorativi (
|
||||
app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta
|
||||
)
|
||||
- 1;
|
||||
ELSE
|
||||
sla0 := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale
|
||||
IF (TRUNC (app_data_validazione_max) <= ultimo_giorno_mese)
|
||||
AND ( app_data_prima_validazione IS NULL
|
||||
OR app_data_prima_validazione >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_prima_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_prima_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_prima_validazione := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 := dwh.fun_giorni_lavorativi (
|
||||
app_data_prima_validazione,
|
||||
app_data_validazione_max
|
||||
);
|
||||
|
||||
IF sla1 > 0
|
||||
THEN
|
||||
IF TRUNC (app_data_validazione_max) >= primo_giorno_mese
|
||||
THEN
|
||||
sla1_mese_corrente := sla1;
|
||||
ELSE
|
||||
sla1_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_prima_validazione,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla1_mesi_precedenti := sla1
|
||||
- sla1_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mese_corrente < 0
|
||||
THEN
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mesi_precedenti < 0
|
||||
THEN
|
||||
sla1_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale
|
||||
IF (TRUNC (app_data_cut_over_calc) <= ultimo_giorno_mese)
|
||||
AND ( app_data_espletamento IS NULL
|
||||
OR app_data_espletamento >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_espletamento IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_espletamento := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_espletamento := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 := dwh.fun_giorni_lavorativi (
|
||||
app_data_espletamento,
|
||||
app_data_cut_over_calc
|
||||
);
|
||||
|
||||
IF sla2 > 0
|
||||
THEN
|
||||
IF TRUNC (app_data_cut_over_calc) >= primo_giorno_mese
|
||||
THEN
|
||||
sla2_mese_corrente := sla2;
|
||||
ELSE
|
||||
sla2_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_espletamento,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 mesi precedenti
|
||||
sla2_mesi_precedenti := sla2
|
||||
- sla2_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mese_corrente < 0
|
||||
THEN
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mesi_precedenti < 0
|
||||
THEN
|
||||
sla2_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA0 relativo al mese di riferimento
|
||||
IF sla0 > 0
|
||||
THEN
|
||||
IF sla0 <= bound
|
||||
THEN
|
||||
sla0_minore := sla0;
|
||||
sla0_maggiore := 0;
|
||||
ELSE
|
||||
sla0_minore := bound;
|
||||
sla0_maggiore := sla0
|
||||
- bound;
|
||||
END IF;
|
||||
ELSE
|
||||
-- se lo SLA totale h <= 0 gli SLA relativi al mese sono 0
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
END IF;
|
||||
|
||||
-- ************************ CALCOLO SLA1 SULLE DATE ****************************
|
||||
IF sla1_mese_corrente = 0
|
||||
THEN -- lo SLA1 del mese corrente h 0
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
ELSE -- lo SLA1 del mese corrente h positivo
|
||||
IF sla1_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := sla1_mese_corrente;
|
||||
ELSE
|
||||
IF sla1_mese_corrente >= bound
|
||||
- sla1_mesi_precedenti
|
||||
THEN
|
||||
sla1_minore := bound
|
||||
- sla1_mesi_precedenti;
|
||||
sla1_maggiore := sla1
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA1 del mese corrente h minore di 4 - SLA1 dei mesi precedenti
|
||||
sla1_minore := sla1_mese_corrente;
|
||||
sla1_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- ************************ FINE CALCOLO SLA1 SULLE DATE ****************************
|
||||
|
||||
-- ************************ CALCOLO SLA2 SULLE DATE ****************************
|
||||
IF sla2_mese_corrente = 0
|
||||
THEN -- lo SLA2 del mese corrente h 0
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
ELSE -- lo SLA2 del mese corrente h positivo
|
||||
IF sla2_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := sla2_mese_corrente;
|
||||
ELSE
|
||||
IF sla2_mese_corrente >= bound
|
||||
- sla2_mesi_precedenti
|
||||
THEN
|
||||
sla2_minore := bound
|
||||
- sla2_mesi_precedenti;
|
||||
sla2_maggiore := sla2
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA2 del mese corrente h minore di 4 - SLA2 dei mesi precedenti
|
||||
sla2_minore := sla2_mese_corrente;
|
||||
sla2_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- ************************ FINE CALCOLO SLA2 SULLE DATE ****************************
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla0_minore > 0
|
||||
OR sla0_maggiore > 0
|
||||
OR sla1_minore > 0
|
||||
OR sla1_maggiore > 0
|
||||
OR sla2_minore > 0
|
||||
OR sla2_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_donor_hoc_sla
|
||||
(id_richiesta, mese, anno, sla_zero_minore,
|
||||
sla_zero_maggiore, sla_uno_minore, sla_uno_maggiore,
|
||||
sla_due_minore, sla_due_maggiore)
|
||||
VALUES (app_id_richiesta, mese_in, anno_in, sla0_minore,
|
||||
sla0_maggiore, sla1_minore, sla1_maggiore,
|
||||
sla2_minore, sla2_maggiore);
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_hoc d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_donor_hoc_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA DONOR HOC '
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_DONOR_HOC '
|
||||
|| SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,156 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_DONOR_HOC_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Donor ad HOC
|
||||
-- La procedura calcola gli SLA Donor ad HOC per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_DONOR_HOC_ONLINE
|
||||
-- MODIFICATION HISTORY
|
||||
app_id_richiesta dwh.mnp_dw_donor_hoc_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
app_data_ricezione_richiesta DATE; -- data ricezione richiesta
|
||||
app_data_prima_validazione DATE; -- data di prima validazione
|
||||
app_data_validazione_max DATE; -- data di validazione massima
|
||||
app_data_espletamento DATE; -- data di espletamento
|
||||
app_data_stato_finale DATE;
|
||||
-- data in cui la richiesta ha terminato il processo
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
-- numero di giorni di SLA2 dei mesi precedenti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_presa_in_carico,
|
||||
data_ricezione_richiesta, data_prima_validazione,
|
||||
data_validazione_max, data_espletamento, data_stato_finale,
|
||||
data_cut_over_calc
|
||||
FROM dwh.mnp_dw_donor_hoc_online;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_DONOR_HOC_ONLINE'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA DONOR HOC ONLINE '
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta, app_data_prima_validazione,
|
||||
app_data_validazione_max, app_data_espletamento,
|
||||
app_data_stato_finale, app_data_cut_over_calc;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
-- se la data di presa in carico h nulla lo sla non viene calcolato
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
sla0 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta
|
||||
)
|
||||
- 1;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale
|
||||
IF app_data_prima_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_prima_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_prima_validazione := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_prima_validazione,
|
||||
app_data_validazione_max
|
||||
);
|
||||
|
||||
-- Calcolo SLA2 totale
|
||||
IF app_data_espletamento IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_espletamento := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_espletamento := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_espletamento,
|
||||
app_data_cut_over_calc
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online d
|
||||
SET d.sla_zero = sla0,
|
||||
d.sla_uno = sla1,
|
||||
d.sla_due = sla2
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA DONOR HOC ONLINE '
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_DONOR_HOC_ONLINE '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,161 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_DONOR_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Donor ONLINE
|
||||
-- La procedura calcola gli SLA Donor relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_DONOR_ONLINE ed aggiorna i valori degli SLA0, SLA1, SLA2
|
||||
-- MODIFICATION HISTORY
|
||||
app_id_richiesta dwh.mnp_dw_donor_online.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
app_data_ricezione_richiesta DATE; -- data ricezione richiesta
|
||||
app_data_validazione DATE; -- data di validazione
|
||||
app_data_validazione_max DATE; -- data di validazione massima
|
||||
app_data_espletamento DATE; -- data di espletamento
|
||||
app_data_stato_finale DATE;
|
||||
-- data in cui la richiesta ha terminato il processo
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_presa_in_carico,
|
||||
data_ricezione_richiesta, data_validazione,
|
||||
data_validazione_max, data_espletamento, data_stato_finale,
|
||||
data_cut_over_calc
|
||||
FROM dwh.mnp_dw_donor_online;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_DONOR_ONLINE'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA DONOR ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta, app_data_validazione,
|
||||
app_data_validazione_max, app_data_espletamento,
|
||||
app_data_stato_finale, app_data_cut_over_calc;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
-- se la data di presa in carico h nulla lo sla non viene calcolato
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
sla0 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_presa_in_carico,
|
||||
app_data_ricezione_richiesta
|
||||
)
|
||||
- 1;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale
|
||||
IF app_data_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_validazione := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_validazione,
|
||||
app_data_validazione_max
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale
|
||||
IF app_data_espletamento IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_espletamento := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_espletamento := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_espletamento,
|
||||
app_data_cut_over_calc
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
-- ************************ FINE CALCOLO SLA2 SULLE DATE ****************************
|
||||
UPDATE dwh.mnp_dw_donor_online d
|
||||
SET d.sla_zero = sla0,
|
||||
d.sla_uno = sla1,
|
||||
d.sla_due = sla2
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA DONOR'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in CALCOLA_SLA_DONOR_ONLINE ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,581 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_RECIPIENT (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Recipient
|
||||
-- La procedura calcola gli SLA Recipient relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_DELTA ed inserisce un record
|
||||
-- con i valori caolcolati nella tabella MNP_DW_REC_SLA
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 15/07/2004 Versione Iniziale
|
||||
-- A.Parati 18/08/2004 Modifica al calcolo degli SLA
|
||||
-- L.Marcucci 15/10/2004 Modifica al calcolo degli SLA1 e SLA2
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
primo_giorno_mese DATE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_id_richiesta dwh.mnp_dw_rec_delta.id_richiesta%TYPE;
|
||||
-- numero di giorni di SLA0<=4 relativi al mese
|
||||
sla0_minore dwh.mnp_dw_rec_sla.sla_zero_minore%TYPE;
|
||||
-- numero di giorni di SLA0>4 relativi al mese
|
||||
sla0_maggiore dwh.mnp_dw_rec_sla.sla_zero_maggiore%TYPE;
|
||||
-- numero di giorni di SLA1<=4 relativi al mese
|
||||
sla1_minore dwh.mnp_dw_rec_sla.sla_uno_minore%TYPE;
|
||||
-- numero di giorni di SLA1>4 relativi al mese
|
||||
sla1_maggiore dwh.mnp_dw_rec_sla.sla_uno_maggiore%TYPE;
|
||||
-- numero di giorni di SLA2<=4 relativi al mese
|
||||
sla2_minore dwh.mnp_dw_rec_sla.sla_due_minore%TYPE;
|
||||
-- numero di giorni di SLA2>4 relativi al mese
|
||||
sla2_maggiore dwh.mnp_dw_rec_sla.sla_due_maggiore%TYPE;
|
||||
-- numero di giorni di SLA3<=4 relativi al mese
|
||||
sla3_minore dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
-- numero di giorni di SLA3>4 relativi al mese
|
||||
sla3_maggiore dwh.mnp_dw_rec_sla_terzeparti.sla_tre_maggiore%TYPE;
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
data_presa_in_carico_presunta DATE; -- data di presa in carico presunta
|
||||
app_data_invio_aom DATE;
|
||||
-- data di invio del file XML di attivazione
|
||||
app_data_validazione DATE; -- data di validazione
|
||||
data_validazione_presunta DATE; -- data di validazione presunta
|
||||
app_data_esple_donating DATE; -- data di espletamento del donating
|
||||
data_esple_donating_presunta DATE;
|
||||
-- data di espletamento del donating presunta
|
||||
app_data_cut_over_aom DATE;
|
||||
-- data di cut over dell'AOM donating
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
bound NUMBER := 4;
|
||||
dco_calc_aom_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_terzeparti_delta.id_richiesta%TYPE;
|
||||
sla1_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA1 nel mese di riferimento
|
||||
sla1_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA1 dei mesi precedenti
|
||||
sla2_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA2 nel mese di riferimento
|
||||
sla2_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA2 dei mesi precedenti
|
||||
sla3_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA3 nel mese di riferimento
|
||||
sla3_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA3 dei mesi precedenti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_presa_in_carico,
|
||||
data_invio_ad_aom, data_validazione, data_espletamento_donating,
|
||||
data_cut_over_aom
|
||||
FROM dwh.mnp_dw_rec_delta;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_terzeparti_delta
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_RECIPIENT_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_sla
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_sla_terzeparti
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_stato_finale,
|
||||
app_data_presa_in_carico,
|
||||
app_data_invio_aom,
|
||||
app_data_validazione,
|
||||
app_data_esple_donating,
|
||||
app_data_cut_over_aom;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
sla1_mesi_precedenti := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
sla2_mesi_precedenti := 0;
|
||||
|
||||
-- Calcolo le date presunte
|
||||
IF app_data_invio_aom IS NOT NULL
|
||||
THEN
|
||||
data_presa_in_carico_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 1);
|
||||
data_validazione_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 3);
|
||||
data_esple_donating_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 6);
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
IF (TRUNC (app_data_presa_in_carico) <= ultimo_giorno_mese)
|
||||
AND (TRUNC (app_data_presa_in_carico) >= primo_giorno_mese)
|
||||
THEN
|
||||
sla0 :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_presa_in_carico,
|
||||
data_presa_in_carico_presunta
|
||||
);
|
||||
ELSE
|
||||
sla0 := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale e corrente
|
||||
IF (TRUNC (data_validazione_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_validazione IS NULL
|
||||
OR app_data_validazione >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_validazione := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 := dwh.fun_giorni_lavorativi (
|
||||
app_data_validazione,
|
||||
data_validazione_presunta
|
||||
);
|
||||
|
||||
IF sla1 > 0
|
||||
THEN
|
||||
IF TRUNC (data_validazione_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla1_mese_corrente := sla1;
|
||||
ELSE
|
||||
sla1_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_validazione,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla1_mesi_precedenti := sla1
|
||||
- sla1_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA1 sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mese_corrente < 0
|
||||
THEN
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mesi_precedenti < 0
|
||||
THEN
|
||||
sla1_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale e corrente
|
||||
IF (TRUNC (data_esple_donating_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_esple_donating IS NULL
|
||||
OR app_data_esple_donating >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_esple_donating IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_esple_donating := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_esple_donating := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 := dwh.fun_giorni_lavorativi (
|
||||
app_data_esple_donating,
|
||||
data_esple_donating_presunta
|
||||
);
|
||||
|
||||
IF sla2 > 0
|
||||
THEN
|
||||
IF TRUNC (data_esple_donating_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla2_mese_corrente := sla2;
|
||||
ELSE
|
||||
sla2_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_esple_donating,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 mesi precedenti
|
||||
sla2_mesi_precedenti := sla2
|
||||
- sla2_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA2 sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mese_corrente < 0
|
||||
THEN
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mesi_precedenti < 0
|
||||
THEN
|
||||
sla2_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA0 relativo al mese di riferimento
|
||||
IF sla0 > 0
|
||||
THEN
|
||||
IF sla0 <= bound
|
||||
THEN
|
||||
sla0_minore := sla0;
|
||||
sla0_maggiore := 0;
|
||||
ELSE
|
||||
sla0_minore := bound;
|
||||
sla0_maggiore := sla0
|
||||
- bound;
|
||||
END IF;
|
||||
ELSE
|
||||
-- se lo SLA totale h <= 0 gli SLA relativi al mese sono 0
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 relativo al mese di riferimento
|
||||
IF sla1_mese_corrente = 0
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
ELSE -- lo SLA1 del mese corrente h positivo
|
||||
IF sla1_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := sla1_mese_corrente;
|
||||
ELSE
|
||||
IF sla1_mese_corrente >= bound
|
||||
- sla1_mesi_precedenti
|
||||
THEN
|
||||
sla1_minore := bound
|
||||
- sla1_mesi_precedenti;
|
||||
sla1_maggiore := sla1
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA1 del mese corrente h minore di 4 - SLA1 dei mesi precedenti
|
||||
sla1_minore := sla1_mese_corrente;
|
||||
sla1_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 relativo al mese di riferimento
|
||||
IF sla2_mese_corrente = 0
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
ELSE -- lo SLA2 del mese corrente h positivo
|
||||
IF sla2_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := sla2_mese_corrente;
|
||||
ELSE
|
||||
IF sla2_mese_corrente >= bound
|
||||
- sla2_mesi_precedenti
|
||||
THEN
|
||||
sla2_minore := bound
|
||||
- sla2_mesi_precedenti;
|
||||
sla2_maggiore := sla2
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA2 del mese corrente h minore di 4 - SLA2 dei mesi precedenti
|
||||
sla2_minore := sla2_mese_corrente;
|
||||
sla2_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla0_minore > 0
|
||||
OR sla0_maggiore > 0
|
||||
OR sla1_minore > 0
|
||||
OR sla1_maggiore > 0
|
||||
OR sla2_minore > 0
|
||||
OR sla2_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_rec_sla
|
||||
(id_richiesta, mese, anno, sla_zero_minore,
|
||||
sla_zero_maggiore, sla_uno_minore, sla_uno_maggiore,
|
||||
sla_due_minore, sla_due_maggiore)
|
||||
VALUES (app_id_richiesta, mese_in, anno_in, sla0_minore,
|
||||
sla0_maggiore, sla1_minore, sla1_maggiore,
|
||||
sla2_minore, sla2_maggiore);
|
||||
END IF;
|
||||
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA sulle Terze Parti
|
||||
LOOP
|
||||
FETCH cur_terzaparte INTO app_id_richiesta_tp,
|
||||
app_aom_tp,
|
||||
app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
sla3_mesi_precedenti := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_aom_ora := app_data_cut_over_aom
|
||||
+ 8 / 24;
|
||||
-- Data di invio del file XML di Porting alla Terza Parte con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 :=
|
||||
TRUNC (app_data_config_teorica)
|
||||
+ 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_aom_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_aom_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF (TRUNC (data_config_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_config_effettiva IS NULL
|
||||
OR app_data_config_effettiva >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (ultimo_giorno_mese, 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 := dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
IF TRUNC (data_config_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla3_mese_corrente := sla3;
|
||||
ELSE
|
||||
sla3_mese_corrente :=
|
||||
dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla3_mesi_precedenti := sla3
|
||||
- sla3_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mese_corrente < 0
|
||||
THEN
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mesi_precedenti < 0
|
||||
THEN
|
||||
sla3_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 relativo al mese di riferimento
|
||||
IF sla3_mese_corrente = 0
|
||||
THEN -- lo SLA3 del mese corrente h 0
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
ELSE -- lo SLA3 del mese corrente h positivo
|
||||
IF sla3_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := sla3_mese_corrente;
|
||||
ELSE
|
||||
IF sla3_mese_corrente >= bound
|
||||
- sla3_mesi_precedenti
|
||||
THEN
|
||||
sla3_minore := bound
|
||||
- sla3_mesi_precedenti;
|
||||
sla3_maggiore := sla3
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA3 del mese corrente h minore di 4 - SLA3 dei mesi precedenti
|
||||
sla3_minore := sla3_mese_corrente;
|
||||
sla3_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla3_minore > 0
|
||||
OR sla3_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_rec_sla_terzeparti
|
||||
(id_richiesta, aom_terze_parti, mese,
|
||||
anno, sla_tre_minore, sla_tre_maggiore)
|
||||
VALUES (app_id_richiesta_tp, app_aom_tp, mese_in,
|
||||
anno_in, sla3_minore, sla3_maggiore);
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END IF; -- data_invio_aom non nulla
|
||||
|
||||
COMMIT;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_terzeparti d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta)
|
||||
AND NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta)
|
||||
AND NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_RECIPIENT '
|
||||
|| SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,583 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_RECIPIENT_HOC (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Recipient ad HOC
|
||||
-- La procedura calcola gli SLA Recipient relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_HOC_DELTA ed inserisce un record
|
||||
-- con i valori caolcolati nella tabella MNP_DW_REC_HOC_SLA
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 15/07/2004 Versione Iniziale
|
||||
-- A.Parati 19/08/2004 Modifica al calcolo degli SLA
|
||||
-- A.Parati 15/10/2004 Modifica al calcolo degli SLA1 e SLA2
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0_minore dwh.mnp_dw_rec_hoc_sla.sla_zero_minore%TYPE;
|
||||
-- numero di giorni di SLA0<=4 relativi al mese
|
||||
sla0_maggiore dwh.mnp_dw_rec_hoc_sla.sla_zero_maggiore%TYPE;
|
||||
-- numero di giorni di SLA0>4 relativi al mese
|
||||
sla1_minore dwh.mnp_dw_rec_hoc_sla.sla_uno_minore%TYPE;
|
||||
-- numero di giorni di SLA1<=4 relativi al mese
|
||||
sla1_maggiore dwh.mnp_dw_rec_hoc_sla.sla_uno_maggiore%TYPE;
|
||||
-- numero di giorni di SLA1>4 relativi al mese
|
||||
sla2_minore dwh.mnp_dw_rec_hoc_sla.sla_due_minore%TYPE;
|
||||
-- numero di giorni di SLA2<=4 relativi al mese
|
||||
sla2_maggiore dwh.mnp_dw_rec_hoc_sla.sla_due_maggiore%TYPE;
|
||||
-- numero di giorni di SLA2>4 relativi al mese
|
||||
sla3_minore dwh.mnp_dw_rec_hoc_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
-- numero di giorni di SLA3<=4 relativi al mese
|
||||
sla3_maggiore dwh.mnp_dw_rec_hoc_sla_terzeparti.sla_tre_maggiore%TYPE;
|
||||
-- numero di giorni di SLA3>4 relativi al mese
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
data_presa_in_carico_presunta DATE; -- data di presa in carico presunta
|
||||
app_data_invio_aom DATE;
|
||||
-- data di invio del file XML di attivazione
|
||||
app_data_prima_validazione DATE; -- data di prima validazione
|
||||
data_validazione_presunta DATE; -- data di validazione presunta
|
||||
app_data_esple_donating DATE; -- data di espletamento del donating
|
||||
data_esple_donating_presunta DATE;
|
||||
-- data di espletamento del donating presunta
|
||||
app_data_cut_over_aom DATE;
|
||||
-- data di cut over dell'AOM donating
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
bound NUMBER := 4;
|
||||
dco_calc_aom_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_hoc_tp_delta.id_richiesta%TYPE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
sla1_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA1 nel mese di riferimento
|
||||
sla1_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA1 dei mesi precedenti
|
||||
sla2_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA2 nel mese di riferimento
|
||||
sla2_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA2 dei mesi precedenti
|
||||
sla3_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA3 nel mese di riferimento
|
||||
sla3_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA3 dei mesi precedenti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_presa_in_carico,
|
||||
data_invio_ad_aom, data_validazione, data_espletamento_donating,
|
||||
data_cut_over_aom
|
||||
FROM dwh.mnp_dw_rec_hoc_delta;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_hoc_tp_delta
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_RECIPIENT_HOC_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT HOC'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_sla
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_sla_terzeparti
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_stato_finale,
|
||||
app_data_presa_in_carico,
|
||||
app_data_invio_aom,
|
||||
app_data_prima_validazione,
|
||||
app_data_esple_donating,
|
||||
app_data_cut_over_aom;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
sla1_mesi_precedenti := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
sla2_mesi_precedenti := 0;
|
||||
|
||||
IF app_data_invio_aom IS NOT NULL
|
||||
THEN
|
||||
-- Calcolo le date presunte
|
||||
data_presa_in_carico_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 1);
|
||||
data_validazione_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 3);
|
||||
data_esple_donating_presunta := app_data_invio_aom
|
||||
+ 45;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
IF (TRUNC (app_data_presa_in_carico) <= ultimo_giorno_mese)
|
||||
AND (TRUNC (app_data_presa_in_carico) >= primo_giorno_mese)
|
||||
THEN
|
||||
sla0 :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_presa_in_carico,
|
||||
data_presa_in_carico_presunta
|
||||
);
|
||||
ELSE
|
||||
sla0 := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale e corrente
|
||||
IF (TRUNC (data_validazione_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_prima_validazione IS NULL
|
||||
OR app_data_prima_validazione >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_prima_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_prima_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_prima_validazione := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 := dwh.fun_giorni_lavorativi (
|
||||
app_data_prima_validazione,
|
||||
data_validazione_presunta
|
||||
);
|
||||
|
||||
IF sla1 > 0
|
||||
THEN
|
||||
IF TRUNC (data_validazione_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla1_mese_corrente := sla1;
|
||||
ELSE
|
||||
sla1_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_prima_validazione,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla1 := 0;
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla1_mesi_precedenti := sla1
|
||||
- sla1_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA1 sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mese_corrente < 0
|
||||
THEN
|
||||
sla1_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla1_mesi_precedenti < 0
|
||||
THEN
|
||||
sla1_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale e corrente
|
||||
IF (TRUNC (data_esple_donating_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_esple_donating IS NULL
|
||||
OR app_data_esple_donating >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_esple_donating IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_esple_donating := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_esple_donating := FUN_GIORNI_PIU(ultimo_giorno_mese,1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 := dwh.fun_giorni_lavorativi (
|
||||
app_data_esple_donating,
|
||||
data_esple_donating_presunta
|
||||
);
|
||||
|
||||
IF sla2 > 0
|
||||
THEN
|
||||
IF TRUNC (data_esple_donating_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla2_mese_corrente := sla2;
|
||||
ELSE
|
||||
sla2_mese_corrente :=
|
||||
dwh.fun_giorni_lavorativi (
|
||||
app_data_esple_donating,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
ELSE
|
||||
sla2 := 0;
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 mesi precedenti
|
||||
sla2_mesi_precedenti := sla2
|
||||
- sla2_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA2 sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mese_corrente < 0
|
||||
THEN
|
||||
sla2_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla2_mesi_precedenti < 0
|
||||
THEN
|
||||
sla2_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA0 relativo al mese di riferimento
|
||||
IF sla0 > 0
|
||||
THEN
|
||||
IF sla0 <= bound
|
||||
THEN
|
||||
sla0_minore := sla0;
|
||||
sla0_maggiore := 0;
|
||||
ELSE
|
||||
sla0_minore := bound;
|
||||
sla0_maggiore := sla0
|
||||
- bound;
|
||||
END IF;
|
||||
ELSE
|
||||
-- se lo SLA totale h <= 0 gli SLA relativi al mese sono 0
|
||||
sla0_minore := 0;
|
||||
sla0_maggiore := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 relativo al mese di riferimento
|
||||
IF sla1_mese_corrente = 0
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := 0;
|
||||
ELSE -- lo SLA1 del mese corrente h positivo
|
||||
IF sla1_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla1_minore := 0;
|
||||
sla1_maggiore := sla1_mese_corrente;
|
||||
ELSE
|
||||
IF sla1_mese_corrente >= bound
|
||||
- sla1_mesi_precedenti
|
||||
THEN
|
||||
sla1_minore := bound
|
||||
- sla1_mesi_precedenti;
|
||||
sla1_maggiore := sla1
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA1 del mese corrente h minore di 4 - SLA1 dei mesi precedenti
|
||||
sla1_minore := sla1_mese_corrente;
|
||||
sla1_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 relativo al mese di riferimento
|
||||
IF sla2_mese_corrente = 0
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := 0;
|
||||
ELSE -- lo SLA2 del mese corrente h positivo
|
||||
IF sla2_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla2_minore := 0;
|
||||
sla2_maggiore := sla2_mese_corrente;
|
||||
ELSE
|
||||
IF sla2_mese_corrente >= bound
|
||||
- sla2_mesi_precedenti
|
||||
THEN
|
||||
sla2_minore := bound
|
||||
- sla2_mesi_precedenti;
|
||||
sla2_maggiore := sla2
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA2 del mese corrente h minore di 4 - SLA2 dei mesi precedenti
|
||||
sla2_minore := sla2_mese_corrente;
|
||||
sla2_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla0_minore > 0
|
||||
OR sla0_maggiore > 0
|
||||
OR sla1_minore > 0
|
||||
OR sla1_maggiore > 0
|
||||
OR sla2_minore > 0
|
||||
OR sla2_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_sla
|
||||
(id_richiesta, mese, anno, sla_zero_minore,
|
||||
sla_zero_maggiore, sla_uno_minore, sla_uno_maggiore,
|
||||
sla_due_minore, sla_due_maggiore)
|
||||
VALUES (app_id_richiesta, mese_in, anno_in, sla0_minore,
|
||||
sla0_maggiore, sla1_minore, sla1_maggiore,
|
||||
sla2_minore, sla2_maggiore);
|
||||
END IF;
|
||||
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA sulle Terze Parti
|
||||
LOOP
|
||||
FETCH cur_terzaparte INTO app_id_richiesta_tp,
|
||||
app_aom_tp,
|
||||
app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
sla3_mesi_precedenti := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_aom_ora := app_data_cut_over_aom
|
||||
+ 8 / 24;
|
||||
-- Data di invio del file XML di Porting alla Terza Parte con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 :=
|
||||
TRUNC (app_data_config_teorica)
|
||||
+ 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_aom_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_aom_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF (TRUNC (data_config_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_config_effettiva IS NULL
|
||||
OR app_data_config_effettiva >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (ultimo_giorno_mese, 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 := dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
IF TRUNC (data_config_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla3_mese_corrente := sla3;
|
||||
ELSE
|
||||
sla3_mese_corrente :=
|
||||
dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla3_mesi_precedenti := sla3
|
||||
- sla3_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mese_corrente < 0
|
||||
THEN
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mesi_precedenti < 0
|
||||
THEN
|
||||
sla3_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 relativo al mese di riferimento
|
||||
IF sla3_mese_corrente = 0
|
||||
THEN -- lo SLA3 del mese corrente h 0
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
ELSE -- lo SLA3 del mese corrente h positivo
|
||||
IF sla3_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := sla3_mese_corrente;
|
||||
ELSE
|
||||
IF sla3_mese_corrente >= bound
|
||||
- sla3_mesi_precedenti
|
||||
THEN
|
||||
sla3_minore := bound
|
||||
- sla3_mesi_precedenti;
|
||||
sla3_maggiore := sla3
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA3 del mese corrente h minore di 4 - SLA3 dei mesi precedenti
|
||||
sla3_minore := sla3_mese_corrente;
|
||||
sla3_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla3_minore > 0
|
||||
OR sla3_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_sla_terzeparti
|
||||
(id_richiesta, aom_terze_parti, mese,
|
||||
anno, sla_tre_minore, sla_tre_maggiore)
|
||||
VALUES (app_id_richiesta_tp, app_aom_tp, mese_in,
|
||||
anno_in, sla3_minore, sla3_maggiore);
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END IF; -- data_invio_aom non nulla
|
||||
|
||||
COMMIT;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_terzeparti d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_hoc_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta)
|
||||
AND NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_hoc_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_hoc_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta)
|
||||
AND NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_hoc_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT HOC'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in CALCOLA_SLA_RECIPIENT_HOC '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,263 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_RECIPIENT_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Recipient
|
||||
-- La procedura calcola gli SLA Recipient per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_ONLINE
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 22/10/2004 Versione Iniziale
|
||||
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_id_richiesta dwh.mnp_dw_rec_delta.id_richiesta%TYPE;
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
data_presa_in_carico_presunta DATE; -- data di presa in carico presunta
|
||||
app_data_invio_aom DATE;
|
||||
-- data di invio del file XML di attivazione
|
||||
app_data_validazione DATE; -- data di validazione
|
||||
data_validazione_presunta DATE; -- data di validazione presunta
|
||||
app_data_esple_donating DATE; -- data di espletamento del donating
|
||||
data_esple_donating_presunta DATE;
|
||||
-- data di espletamento del donating presunta
|
||||
app_data_cut_over_aom DATE;
|
||||
-- data di cut over dell'AOM donating
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
dco_calc_aom_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_terzeparti_delta.id_richiesta%TYPE;
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_presa_in_carico,
|
||||
data_invio_ad_aom, data_validazione, data_espletamento_donating,
|
||||
data_cut_over_aom
|
||||
FROM dwh.mnp_dw_rec_online;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_tp_online
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_RECIPIENT_ONLINE'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_stato_finale,
|
||||
app_data_presa_in_carico,
|
||||
app_data_invio_aom,
|
||||
app_data_validazione,
|
||||
app_data_esple_donating,
|
||||
app_data_cut_over_aom;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
|
||||
-- Calcolo le date presunte
|
||||
IF app_data_invio_aom IS NOT NULL
|
||||
THEN
|
||||
data_presa_in_carico_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 1);
|
||||
data_validazione_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 3);
|
||||
data_esple_donating_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 6);
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
sla0 := dwh.fun_giorni_lavorativi (
|
||||
app_data_presa_in_carico,
|
||||
data_presa_in_carico_presunta
|
||||
);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale e corrente
|
||||
IF app_data_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_validazione := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 := dwh.fun_giorni_lavorativi (
|
||||
app_data_validazione,
|
||||
data_validazione_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA1 sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA2 totale e corrente
|
||||
IF app_data_esple_donating IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_esple_donating := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_esple_donating := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 := dwh.fun_giorni_lavorativi (
|
||||
app_data_esple_donating,
|
||||
data_esple_donating_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA2 sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online d
|
||||
SET d.sla_zero = sla0,
|
||||
d.sla_uno = sla1,
|
||||
d.sla_due = sla2
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA sulle Terze Parti
|
||||
LOOP
|
||||
FETCH cur_terzaparte INTO app_id_richiesta_tp,
|
||||
app_aom_tp,
|
||||
app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3 := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_aom_ora := app_data_cut_over_aom
|
||||
+ 8 / 24;
|
||||
-- Data di invio del file XML di Porting alla Terza Parte con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 :=
|
||||
TRUNC (app_data_config_teorica)
|
||||
+ 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_aom_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_aom_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (TRUNC (SYSDATE), 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 := dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tp_online d
|
||||
SET d.sla_tre = sla3
|
||||
WHERE d.id_richiesta = app_id_richiesta
|
||||
AND d.aom_terze_parti = app_aom_tp;
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END IF; -- data_invio_aom non nulla
|
||||
|
||||
COMMIT;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_RECIPIENT '
|
||||
|| SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,266 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_RECIPIENT_TACS (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Recipient TACS
|
||||
-- La procedura calcola gli SLA Recipient relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_TACS_DELTA ed inserisce un record per
|
||||
-- ogni Terza Parte, con i valori caolcolati, nella tabella MNP_DW_REC_TACS_SLA_TERZEPARTI
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 15/07/2004 Versione Iniziale
|
||||
-- A.Parati 25/08/2004 Modifica alla logica di calcolo degli SLA
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_id_richiesta dwh.mnp_dw_rec_tacs_delta.id_richiesta%TYPE;
|
||||
-- numero di giorni di SLA3<=4 relativi al mese
|
||||
sla3_minore dwh.mnp_dw_rec_tacs_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
-- numero di giorni di SLA3>4 relativi al mese
|
||||
sla3_maggiore dwh.mnp_dw_rec_tacs_sla_terzeparti.sla_tre_maggiore%TYPE;
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
sla3_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA3 nel mese di riferimento
|
||||
sla3_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA3 dei mesi precedenti
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
bound NUMBER := 4;
|
||||
dco_calc_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_tacs_tp_delta.id_richiesta%TYPE;
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello stato finale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_cut_over_calc
|
||||
FROM dwh.mnp_dw_rec_tacs_delta;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_tacs_tp_delta
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_RECIPIENT_TACS_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT TACS'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_sla_terzeparti
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_stato_finale,
|
||||
app_data_cut_over_calc;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_terzaparte
|
||||
INTO app_id_richiesta_tp, app_aom_tp, app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
sla3_mesi_precedenti := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
dco_calc_ora := app_data_cut_over_calc + 8 / 24;
|
||||
dco_conf_teorica_19 := TRUNC (app_data_config_teorica) + 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF (TRUNC (data_config_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_config_effettiva IS NULL
|
||||
OR app_data_config_effettiva >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (ultimo_giorno_mese, 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 :=
|
||||
dwh.fun_ore_lavorative (app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
IF TRUNC (data_config_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla3_mese_corrente := sla3;
|
||||
ELSE
|
||||
sla3_mese_corrente :=
|
||||
dwh.fun_ore_lavorative (app_data_config_effettiva,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla3_mesi_precedenti := sla3 - sla3_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mese_corrente < 0
|
||||
THEN
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mesi_precedenti < 0
|
||||
THEN
|
||||
sla3_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 relativo al mese di riferimento
|
||||
IF sla3_mese_corrente = 0
|
||||
THEN -- lo SLA3 del mese corrente h 0
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
ELSE -- lo SLA3 del mese corrente h positivo
|
||||
IF sla3_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := sla3_mese_corrente;
|
||||
ELSE
|
||||
IF sla3_mese_corrente >= bound - sla3_mesi_precedenti
|
||||
THEN
|
||||
sla3_minore := bound - sla3_mesi_precedenti;
|
||||
sla3_maggiore := sla3 - bound;
|
||||
ELSE
|
||||
-- lo SLA3 del mese corrente h minore di 4 - SLA3 dei mesi precedenti
|
||||
sla3_minore := sla3_mese_corrente;
|
||||
sla3_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla3_minore > 0 OR sla3_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_sla_terzeparti
|
||||
(id_richiesta, aom_terze_parti, mese,
|
||||
anno, sla_tre_minore, sla_tre_maggiore
|
||||
)
|
||||
VALUES (app_id_richiesta_tp, app_aom_tp, mese_in,
|
||||
anno_in, sla3_minore, sla3_maggiore
|
||||
);
|
||||
END IF;
|
||||
END IF; -- non ho inviato il file di Porting -> lo SLA3 h nullo
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
COMMIT;
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_terzeparti d
|
||||
WHERE NOT EXISTS (SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_tacs_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs d
|
||||
WHERE NOT EXISTS (SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_tacs_sla_terzeparti ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT TACS'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in CALCOLA_SLA_RECIPIENT_TACS ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,253 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_REC_HOC_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Recipient ad HOC
|
||||
-- La procedura calcola gli SLA Recipient per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_HOC_ONLINE
|
||||
-- MODIFICATION HISTORY
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_online.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla0 NUMBER; -- numero di giorni di SLA0 totale
|
||||
sla1 NUMBER; -- numero di giorni di SLA1 totale
|
||||
sla2 NUMBER; -- numero di giorni di SLA2 totale
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_data_presa_in_carico DATE; -- data di presa in carico
|
||||
data_presa_in_carico_presunta DATE; -- data di presa in carico presunta
|
||||
app_data_invio_aom DATE;
|
||||
-- data di invio del file XML di attivazione
|
||||
app_data_prima_validazione DATE; -- data di prima validazione
|
||||
data_validazione_presunta DATE; -- data di validazione presunta
|
||||
app_data_esple_donating DATE; -- data di espletamento del donating
|
||||
data_esple_donating_presunta DATE;
|
||||
-- data di espletamento del donating presunta
|
||||
app_data_cut_over_aom DATE;
|
||||
-- data di cut over dell'AOM donating
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
dco_calc_aom_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_hoc_tp_online.id_richiesta%TYPE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_presa_in_carico,
|
||||
data_invio_ad_aom, data_validazione, data_espletamento_donating,
|
||||
data_cut_over_aom
|
||||
FROM dwh.mnp_dw_rec_hoc_online;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_hoc_tp_online
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_RECIPIENT_HOC_ONLINE'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT HOC ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_stato_finale,
|
||||
app_data_presa_in_carico, app_data_invio_aom,
|
||||
app_data_prima_validazione, app_data_esple_donating,
|
||||
app_data_cut_over_aom;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla0 := 0;
|
||||
sla1 := 0;
|
||||
sla2 := 0;
|
||||
|
||||
IF app_data_invio_aom IS NOT NULL
|
||||
THEN
|
||||
-- Calcolo le date presunte
|
||||
data_presa_in_carico_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 1);
|
||||
data_validazione_presunta :=
|
||||
dwh.fun_giorni_piu (app_data_invio_aom, 3);
|
||||
data_esple_donating_presunta := app_data_invio_aom + 45;
|
||||
|
||||
-- Calcolo SLA0 totale
|
||||
IF app_data_presa_in_carico IS NULL
|
||||
THEN
|
||||
sla0 := 0;
|
||||
ELSE
|
||||
sla0 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_presa_in_carico,
|
||||
data_presa_in_carico_presunta
|
||||
);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA1 totale e corrente
|
||||
IF app_data_prima_validazione IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_prima_validazione := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_prima_validazione := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla1 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_prima_validazione,
|
||||
data_validazione_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA1 sono positivi
|
||||
IF sla1 < 0
|
||||
THEN
|
||||
sla1 := 0;
|
||||
END IF;
|
||||
|
||||
IF app_data_esple_donating IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_esple_donating := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_esple_donating := TRUNC (SYSDATE);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla2 :=
|
||||
dwh.fun_giorni_lavorativi (app_data_esple_donating,
|
||||
data_esple_donating_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA2 sono positivi
|
||||
IF sla2 < 0
|
||||
THEN
|
||||
sla2 := 0;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online d
|
||||
SET d.sla_zero = sla0,
|
||||
d.sla_uno = sla1,
|
||||
d.sla_due = sla2
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA sulle Terze Parti
|
||||
LOOP
|
||||
FETCH cur_terzaparte
|
||||
INTO app_id_richiesta_tp, app_aom_tp, app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3 := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_aom_ora := app_data_cut_over_aom + 8 / 24;
|
||||
-- Data di invio del file XML di Porting alla Terza Parte con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 :=
|
||||
TRUNC (app_data_config_teorica)
|
||||
+ 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_aom_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_aom_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (TRUNC (SYSDATE), 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 :=
|
||||
dwh.fun_ore_lavorative (app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_tp_online d
|
||||
SET d.sla_tre = sla3
|
||||
WHERE d.id_richiesta = app_id_richiesta
|
||||
AND d.aom_terze_parti = app_aom_tp;
|
||||
END IF;
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END IF; -- data_invio_aom non nulla
|
||||
|
||||
COMMIT;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT HOC ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_RECIPIENT_HOC ONLINE '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,162 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_REC_TACS_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Recipient TACS
|
||||
-- La procedura calcola gli SLA Recipient per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_REC_TACS_ONLINE ed inserisce un record per
|
||||
-- ogni Terza Parte, con i valori caolcolati, nella tabella MNP_DW_REC_TACS_SLA_TP_ONLINE
|
||||
-- MODIFICATION HISTORY
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_id_richiesta dwh.mnp_dw_rec_tacs_delta.id_richiesta%TYPE;
|
||||
-- numero di giorni di SLA3<=4 relativi al mese
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
app_data_config_teorica DATE;
|
||||
-- data di invio del file XML di porting alla Terza Parte
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di ricezione del file XML di espletamento dalla Terza Parte
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
dco_calc_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
-- Identificativo della richiesta sulla tabella delta delle terze parti
|
||||
app_id_richiesta_tp dwh.mnp_dw_rec_tacs_tp_delta.id_richiesta%TYPE;
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello stato finale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
app_aom_tp VARCHAR2 (4); -- Operatore terza parte
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale, data_cut_over_calc
|
||||
FROM dwh.mnp_dw_rec_tacs_online;
|
||||
|
||||
-- Cursore per le terze parti di cui calcolare gli SLA3
|
||||
CURSOR cur_terzaparte (var_richiesta IN VARCHAR2)
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva
|
||||
FROM dwh.mnp_dw_rec_tacs_tp_online
|
||||
WHERE id_richiesta = var_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_RECIPIENT_TACS_ONLINE'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA RECIPIENT TACS ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_stato_finale,
|
||||
app_data_cut_over_calc;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
OPEN cur_terzaparte (app_id_richiesta);
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_terzaparte
|
||||
INTO app_id_richiesta_tp, app_aom_tp, app_data_config_teorica,
|
||||
app_data_config_effettiva;
|
||||
|
||||
EXIT WHEN cur_terzaparte%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3 := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
dco_calc_ora := app_data_cut_over_calc + 8 / 24;
|
||||
dco_conf_teorica_19 := TRUNC (app_data_config_teorica) + 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_rec
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (trunc(sysdate), 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 :=
|
||||
dwh.fun_ore_lavorative (app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
UPDATE dwh.mnp_dw_rec_tacs_tp_online d
|
||||
SET d.sla_tre = sla3
|
||||
WHERE d.id_richiesta = app_id_richiesta
|
||||
AND d.aom_terze_parti = app_aom_tp;
|
||||
END IF; -- non ho inviato il file di Porting -> lo SLA3 h nullo
|
||||
END LOOP; -- cur_terzaparte
|
||||
|
||||
COMMIT;
|
||||
|
||||
CLOSE cur_terzaparte;
|
||||
END LOOP; -- cur_richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA RECIPIENT TACS ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_RECIPIENT_TACS ONLINE '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,249 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_TERZEPARTI (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA Terze Parti
|
||||
-- La procedura calcola gli SLA Terze Parti relativi al mese di riferimento per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_PORTING_DELTA ed inserisce un record
|
||||
-- con i valori caolcolati nella tabella MNP_DW_PORTING_SLA
|
||||
-- MODIFICATION HISTORY
|
||||
-- A.Parati 15/07/2004 Versione Iniziale
|
||||
-- A.Parati 24/08/2004 Modifica al meccanismo di calcolo
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferimento
|
||||
app_id_richiesta dwh.mnp_dw_porting_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla3_minore dwh.mnp_dw_porting_sla.sla_tre_minore%TYPE;
|
||||
-- numero di giorni di SLA3<=4 relativi al mese
|
||||
sla3_maggiore dwh.mnp_dw_porting_sla.sla_tre_maggiore%TYPE;
|
||||
-- numero di giorni di SLA3>4 relativi al mese
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
sla3_mese_corrente NUMBER;
|
||||
-- numero di giorni di SLA3 nel mese di riferimento
|
||||
sla3_mesi_precedenti NUMBER;
|
||||
-- numero di giorni di SLA3 dei mesi precedenti
|
||||
app_data_config_teorica DATE;
|
||||
-- data di ricezione del file XML di porting
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di invio del file di espletamento
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
bound NUMBER := 4;
|
||||
dco_calc_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale,
|
||||
data_configurazione_teorica, data_configurazione_effettiva,
|
||||
data_cut_over_calc
|
||||
FROM dwh.mnp_dw_porting_delta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log := UTL_FILE.fopen (
|
||||
dir_out_log,
|
||||
'SLA_TERZAPARTE_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA TERZA PARTE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_porting_sla
|
||||
WHERE mese = mese_in AND anno = anno_in;
|
||||
|
||||
COMMIT;
|
||||
-- Calcolo ultimo giorno lavorativo del mese
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
-- Calcolo primo giorno lavorativo del mese
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta,
|
||||
app_stato,
|
||||
app_data_stato_finale,
|
||||
app_data_config_teorica,
|
||||
app_data_config_effettiva,
|
||||
app_data_cut_over_calc;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
sla3_mesi_precedenti := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_ora := app_data_cut_over_calc
|
||||
+ 8 / 24;
|
||||
-- Data di ricezione del file XML di Porting dall'operatore Recipient con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 := TRUNC (app_data_config_teorica)
|
||||
+ 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_porting
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF (TRUNC (data_config_presunta) <= ultimo_giorno_mese)
|
||||
AND ( app_data_config_effettiva IS NULL
|
||||
OR app_data_config_effettiva >= primo_giorno_mese
|
||||
)
|
||||
THEN
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (ultimo_giorno_mese, 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 := dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
IF TRUNC (data_config_presunta) >= primo_giorno_mese
|
||||
THEN
|
||||
sla3_mese_corrente := sla3;
|
||||
ELSE
|
||||
sla3_mese_corrente :=
|
||||
dwh.fun_ore_lavorative (
|
||||
app_data_config_effettiva,
|
||||
primo_giorno_mese
|
||||
);
|
||||
END IF;
|
||||
ELSE
|
||||
sla3 := 0;
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA1 mesi precedenti
|
||||
sla3_mesi_precedenti := sla3
|
||||
- sla3_mese_corrente;
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mese_corrente < 0
|
||||
THEN
|
||||
sla3_mese_corrente := 0;
|
||||
END IF;
|
||||
|
||||
IF sla3_mesi_precedenti < 0
|
||||
THEN
|
||||
sla3_mesi_precedenti := 0;
|
||||
END IF;
|
||||
|
||||
-- Calcolo SLA3 relativo al mese di riferimento
|
||||
IF sla3_mese_corrente = 0
|
||||
THEN -- lo SLA3 del mese corrente h 0
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := 0;
|
||||
ELSE -- lo SLA3 del mese corrente h positivo
|
||||
IF sla3_mesi_precedenti >= bound
|
||||
THEN
|
||||
sla3_minore := 0;
|
||||
sla3_maggiore := sla3_mese_corrente;
|
||||
ELSE
|
||||
IF sla3_mese_corrente >= bound
|
||||
- sla3_mesi_precedenti
|
||||
THEN
|
||||
sla3_minore := bound
|
||||
- sla3_mesi_precedenti;
|
||||
sla3_maggiore := sla3
|
||||
- bound;
|
||||
ELSE
|
||||
-- lo SLA3 del mese corrente h minore di 4 - SLA3 dei mesi precedenti
|
||||
sla3_minore := sla3_mese_corrente;
|
||||
sla3_maggiore := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Se esiste almeno uno SLA nel mese di riferimento
|
||||
IF sla3_minore > 0
|
||||
OR sla3_maggiore > 0
|
||||
THEN
|
||||
-- Inserimento del record relativo al mese nella tabella degli SLA
|
||||
INSERT INTO dwh.mnp_dw_porting_sla
|
||||
(id_richiesta, mese, anno, sla_tre_minore,
|
||||
sla_tre_maggiore)
|
||||
VALUES (app_id_richiesta, mese_in, anno_in, sla3_minore,
|
||||
sla3_maggiore);
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_porting d
|
||||
WHERE NOT EXISTS ( SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_porting_sla ds
|
||||
WHERE ds.id_richiesta = d.id_richiesta);
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (
|
||||
file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA TERZA PARTE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_TERZEPARTI '
|
||||
|| SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,139 @@
|
||||
CREATE OR REPLACE PROCEDURE CALCOLA_SLA_TP_ONLINE (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Calcolo degli SLA Terze Parti
|
||||
-- La procedura calcola gli SLA Terze Parti per tutte
|
||||
-- le richieste contenute nella tabella MNP_DW_PORTING_ONLINE
|
||||
-- MODIFICATION HISTORY
|
||||
app_id_richiesta dwh.mnp_dw_porting_delta.id_richiesta%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
sla3 NUMBER; -- numero di giorni di SLA3 totale
|
||||
app_data_config_teorica DATE;
|
||||
-- data di ricezione del file XML di porting
|
||||
app_data_config_effettiva DATE;
|
||||
-- data di invio del file di espletamento
|
||||
app_data_cut_over_calc DATE; -- data di cut over calcolata
|
||||
data_config_presunta DATE; -- data di configurazione presunta
|
||||
dco_calc_ora DATE;
|
||||
dco_conf_teorica_19 DATE;
|
||||
file_log UTL_FILE.file_type; -- file di log
|
||||
dir_out_log VARCHAR2 (200);
|
||||
line_log VARCHAR2 (200);
|
||||
var_stato_finale NUMBER;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
app_stato NUMBER; -- stato attuale della richiesta
|
||||
app_data_stato_finale DATE; -- data di transizione nello stato
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato, data_stato_finale,
|
||||
data_configurazione_teorica, data_configurazione_effettiva,
|
||||
data_cut_over_calc
|
||||
FROM dwh.mnp_dw_porting_online;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out_log := 'SLA';
|
||||
file_log :=
|
||||
UTL_FILE.fopen (dir_out_log,
|
||||
'SLA_TERZAPARTE_ONLINE_'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
|| '.log',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': INIZIO CALCOLO SLA TERZA PARTE ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato, app_data_stato_finale,
|
||||
app_data_config_teorica, app_data_config_effettiva,
|
||||
app_data_cut_over_calc;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
-- Inizializzazione variabili
|
||||
sla3 := 0;
|
||||
|
||||
IF app_data_config_teorica IS NOT NULL
|
||||
THEN
|
||||
-- Data cut over contenuta nel file XML di Porting con l'ora impostata alle 08:00
|
||||
dco_calc_ora := app_data_cut_over_calc + 8 / 24;
|
||||
-- Data di ricezione del file XML di Porting dall'operatore Recipient con l'ora impostata alle 19:00
|
||||
dco_conf_teorica_19 := TRUNC (app_data_config_teorica) + 19 / 24;
|
||||
|
||||
IF app_data_config_teorica <=
|
||||
dwh.fun_meno_ore_lavorative (dco_calc_ora, 39)
|
||||
THEN
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_calc_ora, 2);
|
||||
ELSE
|
||||
data_config_presunta :=
|
||||
dwh.fun_piu_ore_lavorative (dco_conf_teorica_19, 39);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT DECODE (finale, 1, id_stato, 0, -1)
|
||||
INTO var_stato_finale
|
||||
FROM mnp.mnp_stato_porting
|
||||
WHERE id_stato = app_stato;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
var_stato_finale := -1;
|
||||
END;
|
||||
|
||||
-- Calcolo SLA3 totale
|
||||
IF app_data_config_effettiva IS NULL
|
||||
THEN
|
||||
IF app_stato = var_stato_finale
|
||||
THEN
|
||||
app_data_config_effettiva := app_data_stato_finale;
|
||||
ELSE
|
||||
app_data_config_effettiva :=
|
||||
dwh.fun_giorni_piu (TRUNC (SYSDATE), 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
sla3 :=
|
||||
dwh.fun_ore_lavorative (app_data_config_effettiva,
|
||||
data_config_presunta
|
||||
);
|
||||
|
||||
-- Verifico se gli SLA sono positivi
|
||||
IF sla3 < 0
|
||||
THEN
|
||||
sla3 := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_online d
|
||||
SET d.sla_tre = sla3
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
|
||||
COMMIT;
|
||||
UTL_FILE.put_line (file_log,
|
||||
TO_CHAR (SYSDATE, 'yyyyMMdd HH24:mi:ss')
|
||||
|| ': FINE CALCOLO SLA TERZA PARTE ONLINE'
|
||||
);
|
||||
UTL_FILE.fflush (file_log);
|
||||
UTL_FILE.fclose (file_log);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in CALCOLA_SLA_TERZEPARTI ONLINE '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,522 @@
|
||||
CREATE OR REPLACE PROCEDURE CAL_SLA_ANALITICO_DONOR_3PARTI (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA ANALITICI DONOR - 3PARTI
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- M.Zagaria - C.Poccia 25/07/2004 Versione Iniziale
|
||||
app_select varchar2(200);
|
||||
app_c_aom dwh.mnp_dw_donor.aom_recipient%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_aom_rec dwh.mnp_dw_donor.aom_recipient%TYPE;
|
||||
app_id_richiesta dwh.mnp_dw_donor.id_richiesta%TYPE;
|
||||
app_msisdn dwh.mnp_dw_donor.msisdn%TYPE;
|
||||
app_tipo_richiesta VARCHAR2 (3); --- STD/HOC/TP
|
||||
app_tipo_linea dwh.mnp_dw_donor.tipo_linea%TYPE;
|
||||
app_marcaggio dwh.mnp_dw_donor.marcaggio%TYPE;
|
||||
app_codfis_piva dwh.mnp_dw_donor.codice_fiscale_partita_iva%TYPE;
|
||||
app_data_ric_richiesta DATE;
|
||||
app_data_pic DATE;
|
||||
app_sla0 dwh.mnp_dw_donor_sla.sla_zero_minore%TYPE;
|
||||
app_data_invio_crm_bit DATE;
|
||||
app_data_val_max DATE;
|
||||
app_data_prima_val_max DATE;
|
||||
app_data_val_eff DATE;
|
||||
app_data_prima_val_eff DATE;
|
||||
app_sla1 dwh.mnp_dw_donor_sla.sla_uno_minore%TYPE;
|
||||
app_ric_crm_bit dwh.mnp_dw_donor.data_ricezione_da_ccrmbit%TYPE;
|
||||
app_data_conf_teorica DATE;
|
||||
app_data_conf_eff DATE;
|
||||
app_data_cut_over_calc DATE;
|
||||
app_data_cut_over_rec DATE;
|
||||
app_data_cut_over_eff DATE;
|
||||
app_sla2 dwh.mnp_dw_donor_sla.sla_due_minore%TYPE;
|
||||
app_sla3 dwh.mnp_dw_porting_sla.sla_tre_minore%TYPE;
|
||||
app_causale_rifiuto dwh.mnp_dw_donor.causale_rifiuto%TYPE;
|
||||
mese_appo VARCHAR2(2);
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_out UTL_FILE.file_type; -- file di log
|
||||
dir_out VARCHAR2 (200);
|
||||
line VARCHAR2 (200);
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Definizione cursore per l'estrazione degli AOM RECIPIENT da trattare
|
||||
-----------------------------------------------------------------
|
||||
CURSOR c_aom
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR STANDARD
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT d.id_richiesta
|
||||
FROM mnp_dw_donor d, mnp_dw_donor_sla ds
|
||||
WHERE d.aom_recipient = app_c_aom
|
||||
AND ds.mese = mese_in
|
||||
AND ds.anno = anno_in
|
||||
AND d.id_richiesta = ds.id_richiesta;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR PRJ-HOC
|
||||
CURSOR cur_richiesta_hoc
|
||||
IS
|
||||
SELECT d.id_richiesta
|
||||
FROM mnp_dw_donor_hoc d, mnp_dw_donor_hoc_sla ds
|
||||
WHERE d.aom_recipient = app_c_aom
|
||||
AND ds.mese = mese_in
|
||||
AND ds.anno = anno_in
|
||||
and d.id_richiesta = ds.id_richiesta;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- TERZE PARTI
|
||||
CURSOR cur_richiesta_tp
|
||||
IS
|
||||
SELECT d.id_richiesta
|
||||
FROM mnp_dw_porting d, mnp_dw_porting_sla ds
|
||||
WHERE d.aom_recipient = app_c_aom
|
||||
AND ds.mese = mese_in
|
||||
AND ds.anno = anno_in
|
||||
and d.id_richiesta = ds.id_richiesta;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out := 'REPORT_SLA';
|
||||
|
||||
select TO_CHAR (decode(length(mese_in),1,'0'||mese_in, mese_in)) into mese_appo from dual;
|
||||
|
||||
file_out := UTL_FILE.fopen (
|
||||
dir_out,
|
||||
'SLA_ANALITICO_DONOR_TERZE_PARTI_'
|
||||
|| mese_appo|| TO_CHAR (anno_in)
|
||||
|| '.csv',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'RICHIESTE DONOR (STANDARD/PROGETTI AD HOC)/ TERZA PARTE: MESE/ANNO DI RIFERIMENTO:'
|
||||
|| mese_in
|
||||
|| '/'
|
||||
|| anno_in
|
||||
|| ';'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'AOM_REC;ID_RICHIESTA;MSISDN;TIPO_RICHIESTA;TIPO_LINEA;'
|
||||
|| 'MARCAGGIO ;CODFIS_PIVA;DATA_RIC_RICHIESTA;DATA_PIC;SLA0;DATA_INVIO_CRM_BIT;'
|
||||
|| 'DATA_VAL_MAX;DATA_PRIMA_VAL_MAX;DATA_VAL_EFF;DATA_PRIMA_VAL_EFF;SLA1;'
|
||||
|| 'RIC_CRM_BIT;DATA_CONF_TEORICA;DATA_CONF_EFF;DATA_CUT_OVER_CALC;'
|
||||
|| 'DATA_CUT_OVER_REC;DATA_CUT_OVER_EFF;SLA2;SLA3;CAUSALE_RIFIUTO;'
|
||||
);
|
||||
OPEN c_aom;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR STANDARD
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR STANDARD
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '1';
|
||||
SELECT aom_recipient, d.id_richiesta, msisdn,
|
||||
'STD', tipo_linea, marcaggio,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_presa_in_carico, table_sla.sla0,
|
||||
data_invio_ai_sistemi_commer, data_validazione_max,
|
||||
NULL, data_validazione,
|
||||
NULL, table_sla.sla1, data_ricezione_da_ccrmbit,
|
||||
NULL, NULL,
|
||||
data_cut_over_calc, NULL,
|
||||
data_cut_over_eff, table_sla.sla2, NULL,
|
||||
causale_rifiuto
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_marcaggio,
|
||||
app_codfis_piva, app_data_ric_richiesta,
|
||||
app_data_pic, app_sla0,
|
||||
app_data_invio_crm_bit, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1, app_ric_crm_bit,
|
||||
app_data_conf_teorica, app_data_conf_eff,
|
||||
app_data_cut_over_calc, app_data_cut_over_rec,
|
||||
app_data_cut_over_eff, app_sla2, app_sla3,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_donor d,
|
||||
(SELECT SUM (sla_zero_minore)
|
||||
+ SUM (sla_zero_maggiore) AS sla0,
|
||||
SUM (sla_uno_minore)
|
||||
+ SUM (sla_uno_maggiore) AS sla1,
|
||||
SUM (sla_due_minore)
|
||||
+ SUM (sla_due_maggiore) AS sla2
|
||||
FROM mnp_dw_donor_sla
|
||||
WHERE mnp_dw_donor_sla.id_richiesta = app_id_richiesta
|
||||
and mnp_dw_donor_sla.mese=mese_in and mnp_dw_donor_sla.anno=anno_in) table_sla
|
||||
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.fflush (file_out);
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR PRJ-HOC
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '2';
|
||||
SELECT aom_recipient, d.id_richiesta, msisdn,
|
||||
'HOC', tipo_linea, marcaggio,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_presa_in_carico, table_sla.sla0,
|
||||
data_invio_ai_sistemi_commer, NULL,
|
||||
data_validazione_max, NULL,
|
||||
data_prima_validazione, table_sla.sla1,
|
||||
data_ricezione_da_ccrmbit, NULL, NULL,
|
||||
data_cut_over_calc, data_cut_over_calc,
|
||||
data_cut_over_eff, table_sla.sla2, NULL,
|
||||
causale_rifiuto
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_marcaggio,
|
||||
app_codfis_piva, app_data_ric_richiesta,
|
||||
app_data_pic, app_sla0,
|
||||
app_data_invio_crm_bit, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1,
|
||||
app_ric_crm_bit, app_data_conf_teorica, app_data_conf_eff,
|
||||
app_data_cut_over_calc, app_data_cut_over_rec,
|
||||
app_data_cut_over_eff, app_sla2, app_sla3,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_donor_hoc d,
|
||||
(SELECT SUM (sla_zero_minore)
|
||||
+ SUM (sla_zero_maggiore) AS sla0,
|
||||
SUM (sla_uno_minore)
|
||||
+ SUM (sla_uno_maggiore) AS sla1,
|
||||
SUM (sla_due_minore)
|
||||
+ SUM (sla_due_maggiore) AS sla2
|
||||
FROM mnp_dw_donor_hoc_sla
|
||||
WHERE mnp_dw_donor_hoc_sla.id_richiesta = app_id_richiesta
|
||||
and mnp_dw_donor_hoc_sla.mese=mese_in and mnp_dw_donor_hoc_sla.anno=anno_in) table_sla
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
|
||||
OPEN cur_richiesta_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_tp INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tp%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- TERZE PARTI
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '3-'||app_c_aom;
|
||||
SELECT aom_recipient, d.id_richiesta, msisdn,
|
||||
'TP', NULL, NULL,
|
||||
NULL, data_ricezione_richiesta, NULL,
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
NULL, NULL, NULL,
|
||||
data_configurazione_teorica, data_configurazione_effettiva,
|
||||
data_cut_over_calc, NULL,
|
||||
NULL, NULL, table_sla.sla3,
|
||||
NULL
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_marcaggio,
|
||||
app_codfis_piva, app_data_ric_richiesta, app_data_pic,
|
||||
app_sla0, app_data_invio_crm_bit, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1, app_ric_crm_bit,
|
||||
app_data_conf_teorica, app_data_conf_eff,
|
||||
app_data_cut_over_calc, app_data_cut_over_rec,
|
||||
app_data_cut_over_eff, app_sla2, app_sla3,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_porting d,
|
||||
(SELECT SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore) AS sla3
|
||||
FROM mnp_dw_porting_sla
|
||||
WHERE mnp_dw_porting_sla.id_richiesta = app_id_richiesta
|
||||
and mnp_dw_porting_sla.mese=mese_in and mnp_dw_porting_sla.anno=anno_in) table_sla
|
||||
WHERE d.id_richiesta = app_id_richiesta;
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tp;
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
UTL_FILE.fflush (file_out);
|
||||
UTL_FILE.fclose (file_out);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in REPORT_ANALITICO_SLA_DONOR_TERZE_PARTI : (SEL '||app_select||' ) - '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,792 @@
|
||||
CREATE OR REPLACE PROCEDURE CAL_SLA_ANALITICO_RECIPIENT (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA ANALITICI RECIPIENT
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- M.Zagaria - C.Poccia 25/07/2004 Versione Iniziale
|
||||
|
||||
app_c_aom mnp.mnp_olo.desc_olo%TYPE;
|
||||
app_c_aom_tp mnp.mnp_olo.desc_olo%TYPE;
|
||||
app_ind NUMBER (1);
|
||||
app_aom_tp dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_data_conf_teo_aom DATE;
|
||||
app_data_eff_aom DATE;
|
||||
app_sla3_aom dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_aom_don dwh.mnp_dw_rec.aom_donor%TYPE;
|
||||
app_aom_tp_1 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_aom_tp_2 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_aom_tp_3 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_id_richiesta dwh.mnp_dw_rec.id_richiesta%TYPE;
|
||||
app_msisdn dwh.mnp_dw_rec.msisdn%TYPE;
|
||||
app_tipo_richiesta VARCHAR2 (5); --- STD/HOC/TACS
|
||||
app_tipo_linea dwh.mnp_dw_rec.tipo_linea%TYPE;
|
||||
app_data_ric_richiesta DATE;
|
||||
app_data_invio_aom DATE;
|
||||
app_data_pic DATE;
|
||||
app_sla0 dwh.mnp_dw_rec_sla.sla_zero_minore%TYPE;
|
||||
app_data_val_max DATE;
|
||||
app_data_prima_val_max DATE;
|
||||
app_data_val_eff DATE;
|
||||
app_data_prima_val_eff DATE;
|
||||
app_sla1 dwh.mnp_dw_rec_sla.sla_uno_minore%TYPE;
|
||||
app_data_conf_teo_aom1 DATE;
|
||||
app_data_conf_teo_aom2 DATE;
|
||||
app_data_conf_teo_aom3 DATE;
|
||||
app_data_eff_aom1 DATE;
|
||||
app_data_eff_aom2 DATE;
|
||||
app_data_eff_aom3 DATE;
|
||||
app_data_cut_over_calc DATE;
|
||||
app_data_cut_over_aom DATE;
|
||||
app_data_esple_don DATE;
|
||||
app_sla2 dwh.mnp_dw_rec_sla.sla_due_minore%TYPE;
|
||||
app_sla3_aom1 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_sla3_aom2 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_sla3_aom3 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_causale_rifiuto dwh.mnp_dw_rec.causale_rifiuto%TYPE;
|
||||
mese_appo VARCHAR2(2);
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_out UTL_FILE.file_type; -- file di log
|
||||
dir_out VARCHAR2 (200);
|
||||
line VARCHAR2 (200);
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Definizione cursore per l'estrazione degli AOM RECIPIENT da trattare
|
||||
-----------------------------------------------------------------
|
||||
CURSOR c_aom
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT STANDARD
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT r.id_richiesta
|
||||
FROM mnp_dw_rec r, mnp_dw_rec_sla rs
|
||||
WHERE r.aom_donor = app_c_aom
|
||||
AND rs.mese = mese_in
|
||||
AND rs.anno = anno_in
|
||||
AND r.id_richiesta = rs.id_richiesta
|
||||
UNION
|
||||
SELECT r.id_richiesta
|
||||
FROM mnp_dw_rec r, mnp_dw_rec_sla_terzeparti rs
|
||||
WHERE r.aom_donor = app_c_aom
|
||||
AND rs.mese = mese_in
|
||||
AND rs.anno = anno_in
|
||||
AND r.id_richiesta = rs.id_richiesta;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT AD HOC
|
||||
CURSOR cur_richiesta_hoc
|
||||
IS
|
||||
SELECT r.id_richiesta
|
||||
FROM mnp_dw_rec_hoc r, mnp_dw_rec_hoc_sla rs
|
||||
WHERE r.aom_donor = app_c_aom
|
||||
AND rs.mese = mese_in
|
||||
AND rs.anno = anno_in
|
||||
AND r.id_richiesta = rs.id_richiesta
|
||||
UNION
|
||||
SELECT r.id_richiesta
|
||||
FROM mnp_dw_rec_hoc r, mnp_dw_rec_hoc_sla_terzeparti rs
|
||||
WHERE r.aom_donor = app_c_aom
|
||||
AND rs.mese = mese_in
|
||||
AND rs.anno = anno_in
|
||||
AND r.id_richiesta = rs.id_richiesta;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT Scivolo TACS
|
||||
|
||||
CURSOR cur_richiesta_tacs
|
||||
IS
|
||||
SELECT distinct (r.id_richiesta)
|
||||
FROM mnp_dw_rec_tacs r, mnp_dw_rec_tacs_sla_terzeparti rs
|
||||
WHERE r.aom_donor = app_c_aom
|
||||
AND rs.mese = mese_in
|
||||
AND rs.anno = anno_in
|
||||
AND r.id_richiesta = rs.id_richiesta;
|
||||
|
||||
|
||||
-- Calcolo SLA3 Recipient Standard / HOC / TACS
|
||||
CURSOR c_aom_tp
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1 AND desc_olo <> app_c_aom;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out := 'REPORT_SLA';
|
||||
|
||||
select TO_CHAR (decode(length(mese_in),1,'0'||mese_in, mese_in)) into mese_appo from dual;
|
||||
|
||||
file_out := UTL_FILE.fopen (
|
||||
dir_out,
|
||||
'SLA_ANALITICO_RECIPIENT_'
|
||||
|| mese_appo || TO_CHAR (anno_in)
|
||||
|| '.csv',
|
||||
'w'
|
||||
);
|
||||
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'RICHIESTE RECIPIENT (STANDARD/PROGETTI AD HOC/TACS): MESE/ANNO DI RIFERIMENTO:'
|
||||
|| mese_in
|
||||
|| '/'
|
||||
|| anno_in
|
||||
|| ';'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'AOM_DON;AOM_TP_1;AOM_TP_2;AOM_TP_3;ID_RICHIESTA;MSISDN;TIPO_RICHIESTA;'
|
||||
|| 'TIPO_LINEA;DATA_RIC_RICHIESTA;DATA_INVIO_AOM;DATA_PIC;SLA0;DATA_VAL_MAX;'
|
||||
|| 'DATA_PRIMA_VAL_MAX;DATA_VAL_EFF;DATA_PRIMA_VAL_EFF;SLA1;DATA_CONF_TEO_AOM1;'
|
||||
|| 'DATA_CONF_TEO_AOM2;DATA_CONF_TEO_AOM3;DATA_EFF_AOM1;DATA_EFF_AOM2;DATA_EFF_AOM3;'
|
||||
|| 'DATA_CUT_OVER_CALC;DATA_CUT_OVER_AOM;DATA_ESPLE_DON;SLA2;SLA3_AOM1;SLA3_AOM2;'
|
||||
|| 'SLA3_AOM3;CAUSALE_RIFIUTO;'
|
||||
);
|
||||
OPEN c_aom;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
OPEN cur_richiesta;
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT STANDARD
|
||||
-----------------------------------------------------------------
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
|
||||
SELECT aom_donor, r.id_richiesta, msisdn,
|
||||
'STD', tipo_linea, data_ricezione_richiesta,
|
||||
data_invio_ad_aom, data_presa_in_carico,
|
||||
DECODE (sla0, NULL, 0, sla0) AS sla0, data_validazione_max,
|
||||
NULL, data_validazione,
|
||||
NULL, DECODE (sla1, NULL, 0, sla1) AS sla1, NULL,
|
||||
data_cut_over_aom, data_espletamento_donating,
|
||||
DECODE (sla2, NULL, 0, sla2) AS sla2, causale_rifiuto
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_data_ric_richiesta,
|
||||
app_data_invio_aom, app_data_pic,
|
||||
app_sla0, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1, app_data_cut_over_calc,
|
||||
app_data_cut_over_aom, app_data_esple_don,
|
||||
app_sla2, app_causale_rifiuto
|
||||
FROM mnp_dw_rec r,
|
||||
(SELECT SUM (sla_zero_minore)
|
||||
+ SUM (sla_zero_maggiore) AS sla0,
|
||||
SUM (sla_uno_minore)
|
||||
+ SUM (sla_uno_maggiore) AS sla1,
|
||||
SUM (sla_due_minore)
|
||||
+ SUM (sla_due_maggiore) AS sla2
|
||||
FROM mnp_dw_rec_sla
|
||||
WHERE mnp_dw_rec_sla.id_richiesta = app_id_richiesta
|
||||
and mnp_dw_rec_sla.mese=mese_in and mnp_dw_rec_sla.anno=anno_in) sla_donating
|
||||
WHERE r.id_richiesta = app_id_richiesta;
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
|
||||
BEGIN
|
||||
-- slq clacolo sla
|
||||
SELECT tp.aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva,
|
||||
DECODE (
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore),
|
||||
NULL, 0,
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore)
|
||||
) AS sla3
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom,
|
||||
app_sla3_aom
|
||||
FROM mnp_dw_rec_terzeparti tp,
|
||||
mnp_dw_rec_sla_terzeparti sla_tp
|
||||
WHERE tp.id_richiesta = app_id_richiesta
|
||||
AND tp.id_richiesta = sla_tp.id_richiesta
|
||||
AND sla_tp.aom_terze_parti = tp.aom_terze_parti
|
||||
AND tp.aom_terze_parti = app_c_aom_tp
|
||||
and sla_tp.mese=mese_in and sla_tp.anno=anno_in
|
||||
GROUP BY tp.aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.fflush (file_out);
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT HOC
|
||||
-----------------------------------------------------------------
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
|
||||
SELECT aom_donor, r.id_richiesta, msisdn,
|
||||
'HOC', tipo_linea, data_ricezione_richiesta,
|
||||
data_invio_ad_aom, data_presa_in_carico,
|
||||
DECODE (sla0, NULL, 0, sla0) AS sla0, NULL,
|
||||
data_validazione_max, NULL,
|
||||
data_validazione, DECODE (sla1, NULL, 0, sla1) AS sla1, NULL,
|
||||
data_cut_over_aom, data_espletamento_donating,
|
||||
DECODE (sla2, NULL, 0, sla2) AS sla2, causale_rifiuto
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_data_ric_richiesta,
|
||||
app_data_invio_aom, app_data_pic,
|
||||
app_sla0, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1, app_data_cut_over_calc,
|
||||
app_data_cut_over_aom, app_data_esple_don,
|
||||
app_sla2, app_causale_rifiuto
|
||||
FROM mnp_dw_rec_hoc r,
|
||||
(SELECT SUM (sla_zero_minore)
|
||||
+ SUM (sla_zero_maggiore) AS sla0,
|
||||
SUM (sla_uno_minore)
|
||||
+ SUM (sla_uno_maggiore) AS sla1,
|
||||
SUM (sla_due_minore)
|
||||
+ SUM (sla_due_maggiore) AS sla2
|
||||
FROM mnp_dw_rec_hoc_sla
|
||||
WHERE mnp_dw_rec_hoc_sla.id_richiesta = app_id_richiesta
|
||||
and mnp_dw_rec_hoc_sla.mese=mese_in and mnp_dw_rec_hoc_sla.anno=anno_in) sla_donating
|
||||
WHERE r.id_richiesta = app_id_richiesta;
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
|
||||
BEGIN
|
||||
-- sla clacolo sla
|
||||
SELECT tp.aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva,
|
||||
DECODE (
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore),
|
||||
NULL, 0,
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore)
|
||||
) AS sla3
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom,
|
||||
app_sla3_aom
|
||||
FROM mnp_dw_rec_hoc_terzeparti tp,
|
||||
mnp_dw_rec_hoc_sla_terzeparti sla_tp
|
||||
WHERE tp.id_richiesta = app_id_richiesta
|
||||
AND tp.id_richiesta = sla_tp.id_richiesta
|
||||
AND tp.aom_terze_parti = app_c_aom_tp
|
||||
AND sla_tp.aom_terze_parti = tp.aom_terze_parti
|
||||
and sla_tp.mese=mese_in and sla_tp.anno=anno_in
|
||||
GROUP BY tp.aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
UTL_FILE.fflush (file_out);
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT SCIVOLO TACS
|
||||
-----------------------------------------------------------------
|
||||
app_c_aom := 'TIMT';
|
||||
OPEN cur_richiesta_tacs;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_tacs INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tacs%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
|
||||
SELECT aom_donor, r.id_richiesta, msisdn, 'TACS',
|
||||
tipo_linea, data_ricezione_richiesta, NULL,
|
||||
NULL, NULL, NULL,
|
||||
NULL, NULL,
|
||||
NULL, NULL, data_cut_over_calc,
|
||||
NULL, NULL, NULL,
|
||||
NULL
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn, app_tipo_richiesta,
|
||||
app_tipo_linea, app_data_ric_richiesta, app_data_invio_aom,
|
||||
app_data_pic, app_sla0, app_data_val_max,
|
||||
app_data_prima_val_max, app_data_val_eff,
|
||||
app_data_prima_val_eff, app_sla1, app_data_cut_over_calc,
|
||||
app_data_cut_over_aom, app_data_esple_don, app_sla2,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_rec_tacs r
|
||||
WHERE r.id_richiesta = app_id_richiesta;
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
|
||||
BEGIN
|
||||
-- slq clacolo sla
|
||||
SELECT tp.aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva,
|
||||
DECODE (
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore),
|
||||
NULL, 0,
|
||||
SUM (sla_tre_minore)
|
||||
+ SUM (sla_tre_maggiore)
|
||||
) AS sla3
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom,
|
||||
app_sla3_aom
|
||||
FROM mnp_dw_rec_tacs_terzeparti tp,
|
||||
mnp_dw_rec_tacs_sla_terzeparti sla_tp
|
||||
WHERE tp.id_richiesta = app_id_richiesta
|
||||
AND tp.id_richiesta = sla_tp.id_richiesta
|
||||
AND tp.aom_terze_parti = app_c_aom_tp
|
||||
AND sla_tp.aom_terze_parti = tp.aom_terze_parti
|
||||
and sla_tp.mese=mese_in and sla_tp.anno=anno_in
|
||||
GROUP BY tp.aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 3)
|
||||
THEN
|
||||
app_aom_tp_3 := app_aom_tp;
|
||||
app_data_conf_teo_aom3 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom3 := app_data_eff_aom;
|
||||
app_sla3_aom3 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tacs;
|
||||
|
||||
|
||||
---------- chiusura file
|
||||
UTL_FILE.fflush (file_out);
|
||||
UTL_FILE.fclose (file_out);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in REPORT_ANALITICO_SLA_RECIPIENT '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
CREATE OR REPLACE FUNCTION DONOR_PORTING_ONLINE_ID
|
||||
RETURN NUMBER
|
||||
IS
|
||||
|
||||
--
|
||||
-- To modify this template, edit file FUNC.TXT in TEMPLATE
|
||||
-- directory of SQL Navigator
|
||||
--
|
||||
-- Purpose: Briefly explain the functionality of the function
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- --------- ------ -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
-- Declare program variables as shown above
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_donor_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_donor_hoc_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_porting_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.sla_donor_3parti_on_demand (errore);
|
||||
END IF;
|
||||
|
||||
RETURN errore;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in DONOR_PORTING_ONLINE_ID '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN errore;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,50 @@
|
||||
CREATE OR REPLACE FUNCTION DONOR_PORTING_ONLINE_MSISDN
|
||||
RETURN NUMBER
|
||||
IS
|
||||
|
||||
--
|
||||
-- To modify this template, edit file FUNC.TXT in TEMPLATE
|
||||
-- directory of SQL Navigator
|
||||
--
|
||||
-- Purpose: Briefly explain the functionality of the function
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- --------- ------ -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
-- Declare program variables as shown above
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_donor_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_donor_hoc_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_porting_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.sla_donor_3parti_on_demand (errore);
|
||||
END IF;
|
||||
|
||||
RETURN errore;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in DONOR_PORTING_ONLINE_MSISDN '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN errore;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_DATE_FESTIVE (data_in IN DATE)
|
||||
RETURN DATE
|
||||
-- Se data_in è lavorativo restituisce data_in
|
||||
-- Se data_in è festivo restituisce il primo giorno lavorativo precedente
|
||||
IS
|
||||
appo_settimana VARCHAR2 (20) := NULL;
|
||||
appo_data DATE := NULL;
|
||||
appo_id_prog mnp.mnp_date_festive.id_prog%TYPE;
|
||||
BEGIN
|
||||
appo_data := data_in;
|
||||
appo_settimana := UPPER (TO_CHAR (appo_data, 'day'));
|
||||
|
||||
IF RTRIM (appo_settimana) = 'SATURDAY'
|
||||
OR RTRIM (appo_settimana) = 'SABATO'
|
||||
OR RTRIM (appo_settimana) = 'SUNDAY'
|
||||
OR RTRIM (appo_settimana) = 'DOMENICA'
|
||||
THEN
|
||||
appo_data := dwh.fun_date_festive (appo_data - 1);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT id_prog
|
||||
INTO appo_id_prog
|
||||
FROM mnp.mnp_date_festive
|
||||
WHERE TRUNC (data_festiva) = TRUNC (appo_data)
|
||||
AND rownum <2;
|
||||
|
||||
appo_data := dwh.fun_date_festive (appo_data - 1);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN appo_data;
|
||||
END;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_date_festive;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_DATE_FESTIVE_SUCC (data_in IN DATE)
|
||||
RETURN DATE
|
||||
-- Se data_in e lavorativo restituisce data_in
|
||||
-- Se data_in e festivo restituisce il primo giorno lavorativo successivo
|
||||
IS
|
||||
appo_settimana VARCHAR2 (20) := NULL;
|
||||
appo_data DATE := NULL;
|
||||
appo_id_prog mnp.mnp_date_festive.id_prog%TYPE;
|
||||
BEGIN
|
||||
appo_data := data_in;
|
||||
appo_settimana := UPPER (TO_CHAR (appo_data, 'day'));
|
||||
|
||||
IF RTRIM (appo_settimana) = 'SATURDAY'
|
||||
OR RTRIM (appo_settimana) = 'SABATO'
|
||||
OR RTRIM (appo_settimana) = 'SUNDAY'
|
||||
OR RTRIM (appo_settimana) = 'DOMENICA'
|
||||
THEN
|
||||
appo_data := dwh.fun_date_festive_succ (appo_data + 1);
|
||||
END IF;
|
||||
|
||||
BEGIN
|
||||
SELECT id_prog
|
||||
INTO appo_id_prog
|
||||
FROM mnp.mnp_date_festive
|
||||
WHERE TRUNC (data_festiva) = TRUNC (appo_data)
|
||||
AND rownum <2;
|
||||
|
||||
appo_data := dwh.fun_date_festive_succ (appo_data + 1);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN appo_data;
|
||||
END;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_date_festive_succ;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_GIORNI_LAVORATIVI (data_finale IN DATE, data_iniziale IN DATE)
|
||||
RETURN NUMBER
|
||||
-- Restituisce il numero di giorni lavorativi tra data_iniziale e data_finale
|
||||
IS
|
||||
appo_giorni NUMBER := NULL;
|
||||
appo_data_iniziale DATE := dwh.fun_date_festive_succ (data_iniziale);
|
||||
appo_data_finale DATE := dwh.fun_date_festive_succ (data_finale);
|
||||
BEGIN
|
||||
IF TRUNC (appo_data_finale) > TRUNC (appo_data_iniziale)
|
||||
THEN
|
||||
SELECT TRUNC (appo_data_finale)
|
||||
- TRUNC (appo_data_iniziale)
|
||||
- SUM (DECODE (tip_gio, 'F', 1, 'P', 1, 0))
|
||||
INTO appo_giorni
|
||||
FROM mnp.s_dim_tempo d
|
||||
WHERE d.DATA >= TRUNC (appo_data_iniziale)
|
||||
AND d.DATA <= TRUNC (appo_data_finale);
|
||||
ELSE
|
||||
appo_giorni := 0;
|
||||
END IF;
|
||||
|
||||
RETURN appo_giorni;
|
||||
END fun_giorni_lavorativi;
|
||||
/
|
||||
@@ -0,0 +1,18 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_GIORNI_MENO (data_in IN DATE, giorni IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Sottrae a data_in un numero giorni di giorni lavorativi
|
||||
IS
|
||||
appo_data DATE := NULL;
|
||||
appo_giorni NUMBER := giorni;
|
||||
BEGIN
|
||||
appo_data := data_in;
|
||||
|
||||
FOR j IN 1 .. appo_giorni
|
||||
LOOP
|
||||
appo_data := dwh.fun_date_festive (appo_data - 1);
|
||||
END LOOP;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_giorni_meno;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_GIORNI_PIU (data_in IN DATE, giorni IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Aggiunge a data_in un numero giorni di giorni lavorativi
|
||||
IS
|
||||
appo_data DATE := NULL;
|
||||
appo_giorni NUMBER := giorni;
|
||||
BEGIN
|
||||
appo_data := data_in;
|
||||
|
||||
FOR j IN 1 .. appo_giorni
|
||||
LOOP
|
||||
appo_data := dwh.fun_date_festive_succ (appo_data + 1);
|
||||
END LOOP;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_giorni_piu;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_MENO_ORE_LAVORATIVE (data_iniziale IN DATE, ore IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Toglie a data_iniziale un numero ore di ore lavorative
|
||||
IS
|
||||
appo_data DATE;
|
||||
appo_resto NUMBER;
|
||||
appo_ora NUMBER;
|
||||
appo_giorni NUMBER;
|
||||
n_ore NUMBER := ore;
|
||||
BEGIN
|
||||
appo_ora := TO_NUMBER (TO_CHAR (data_iniziale, 'HH24'));
|
||||
|
||||
IF n_ore < appo_ora
|
||||
THEN
|
||||
appo_data := data_iniziale - (n_ore / 24);
|
||||
ELSE
|
||||
n_ore := n_ore - appo_ora;
|
||||
appo_data := data_iniziale - (appo_ora / 24);
|
||||
appo_giorni := FLOOR (n_ore / 24);
|
||||
appo_resto := n_ore - appo_giorni * 24;
|
||||
appo_data := dwh.fun_giorni_meno (appo_data, appo_giorni);
|
||||
appo_data := dwh.fun_date_festive (appo_data - (appo_resto / 24));
|
||||
END IF;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_meno_ore_lavorative;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_ORE_LAVORATIVE (data_finale IN DATE, data_iniziale IN DATE)
|
||||
RETURN NUMBER
|
||||
-- Restituisce il numero di ore lavorative tra data_iniziale e data_finale
|
||||
IS
|
||||
appo_ore NUMBER;
|
||||
appo_giorni NUMBER;
|
||||
appo_ore_iniziali NUMBER;
|
||||
appo_ore_finali NUMBER;
|
||||
appo_min_finali NUMBER;
|
||||
appo_min_iniziali NUMBER;
|
||||
BEGIN
|
||||
appo_ore := 0;
|
||||
|
||||
IF data_finale > data_iniziale
|
||||
THEN
|
||||
appo_giorni := dwh.fun_giorni_lavorativi (data_finale, data_iniziale);
|
||||
|
||||
IF appo_giorni > 0
|
||||
THEN
|
||||
appo_ore := appo_giorni * 24;
|
||||
END IF;
|
||||
|
||||
appo_ore_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'HH24'));
|
||||
appo_ore_finali := TO_NUMBER (TO_CHAR (data_finale, 'HH24'));
|
||||
appo_ore := appo_ore + appo_ore_finali - appo_ore_iniziali;
|
||||
appo_min_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'mi'));
|
||||
appo_min_finali := TO_NUMBER (TO_CHAR (data_finale, 'mi'));
|
||||
|
||||
IF (appo_min_finali - appo_min_iniziali) < 0
|
||||
THEN
|
||||
appo_ore := appo_ore - 1;
|
||||
END IF;
|
||||
ELSE
|
||||
appo_ore := 0;
|
||||
END IF;
|
||||
|
||||
RETURN appo_ore;
|
||||
END fun_ore_lavorative;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_PIU_ORE_LAVORATIVE (data_iniziale IN DATE, ore IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Aggiunge a data_iniziale un numero ore di ore lavorative
|
||||
IS
|
||||
appo_data DATE;
|
||||
appo_resto NUMBER;
|
||||
appo_ora NUMBER;
|
||||
appo_giorni NUMBER;
|
||||
n_ore NUMBER := ore;
|
||||
BEGIN
|
||||
appo_ora := TO_NUMBER (TO_CHAR (data_iniziale, 'HH24'));
|
||||
|
||||
IF n_ore < 24 - appo_ora
|
||||
THEN
|
||||
appo_data := data_iniziale + (n_ore / 24);
|
||||
ELSE
|
||||
n_ore := n_ore - 24 + appo_ora;
|
||||
appo_data := TRUNC (fun_giorni_piu (data_iniziale, 1));
|
||||
appo_giorni := FLOOR (n_ore / 24);
|
||||
appo_resto := n_ore - appo_giorni * 24;
|
||||
appo_data := dwh.fun_giorni_piu (appo_data, appo_giorni);
|
||||
appo_data := appo_data + (appo_resto / 24);
|
||||
END IF;
|
||||
|
||||
RETURN appo_data;
|
||||
END fun_piu_ore_lavorative;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_PRIMO_GIORNO_LAVORATIVO (mese_in IN NUMBER, anno_in IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Calcola il primo giorno lavorativo del mese in input
|
||||
IS
|
||||
appo_gg NUMBER := NULL;
|
||||
appo_var VARCHAR2 (12) := NULL;
|
||||
appo_data DATE := NULL;
|
||||
BEGIN
|
||||
appo_var := '01-' || mese_in || '-' || anno_in;
|
||||
appo_data := dwh.fun_date_festive_succ (TO_DATE (appo_var, 'DD-MM-YYYY'));
|
||||
RETURN appo_data;
|
||||
END fun_primo_giorno_lavorativo;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
CREATE OR REPLACE FUNCTION FUN_ULTIMO_GIORNO_LAVORATIVO (mese_in IN NUMBER, anno_in IN NUMBER)
|
||||
RETURN DATE
|
||||
-- Calcola l'ultimo giorno lavorativo del mese in input
|
||||
IS
|
||||
appo_gg NUMBER := NULL;
|
||||
appo_var VARCHAR2 (12) := NULL;
|
||||
appo_data DATE := NULL;
|
||||
BEGIN
|
||||
appo_var := '01-' || mese_in || '-' || anno_in;
|
||||
appo_data :=
|
||||
dwh.fun_date_festive (LAST_DAY (TO_DATE (appo_var, 'DD-MM-YYYY')));
|
||||
RETURN appo_data;
|
||||
END fun_ultimo_giorno_lavorativo;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
CREATE OR REPLACE FUNCTION RECIPIENT_ONLINE_ID
|
||||
RETURN NUMBER
|
||||
IS
|
||||
|
||||
--
|
||||
-- To modify this template, edit file FUNC.TXT in TEMPLATE
|
||||
-- directory of SQL Navigator
|
||||
--
|
||||
-- Purpose: Briefly explain the functionality of the function
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- --------- ------ -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
-- Declare program variables as shown above
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_hoc_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tacs_online_id (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.sla_recipient_on_demand (errore);
|
||||
END IF;
|
||||
|
||||
RETURN errore;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in RECIPIENT_ONLINE_ID '
|
||||
|| SQLERRM);
|
||||
RETURN errore;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,50 @@
|
||||
CREATE OR REPLACE FUNCTION RECIPIENT_ONLINE_MSISDN
|
||||
RETURN NUMBER
|
||||
IS
|
||||
|
||||
--
|
||||
-- To modify this template, edit file FUNC.TXT in TEMPLATE
|
||||
-- directory of SQL Navigator
|
||||
--
|
||||
-- Purpose: Briefly explain the functionality of the function
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- --------- ------ -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
-- Declare program variables as shown above
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_hoc_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tacs_online_msisdn (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.sla_recipient_on_demand (errore);
|
||||
END IF;
|
||||
|
||||
RETURN errore;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in RECIPIENT_ONLINE_MSISDN '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN errore;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,658 @@
|
||||
CREATE OR REPLACE PROCEDURE "SLA_DONOR_3PARTI_ON_DEMAND" (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA ANALITICI DONOR - 3PARTI ON DEMAND
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- M.Zagaria 28/10/2004 Versione Iniziale
|
||||
|
||||
app_select VARCHAR2 (200);
|
||||
app_c_aom dwh.mnp_dw_donor_online.aom_recipient%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_aom_rec dwh.mnp_dw_donor_online.aom_recipient%TYPE;
|
||||
app_id_richiesta dwh.mnp_dw_donor_online.id_richiesta%TYPE;
|
||||
app_msisdn dwh.mnp_dw_donor_online.msisdn%TYPE;
|
||||
app_tipo_richiesta VARCHAR2 (3); --- STD/HOC/TP
|
||||
app_tipo_linea dwh.mnp_dw_donor_online.tipo_linea%TYPE;
|
||||
app_marcaggio dwh.mnp_dw_donor_online.marcaggio%TYPE;
|
||||
app_codfis_piva dwh.mnp_dw_donor_online.codice_fiscale_partita_iva%TYPE;
|
||||
app_data_ric_richiesta DATE;
|
||||
app_data_pic DATE;
|
||||
app_sla0 dwh.mnp_dw_donor_online.sla_zero%TYPE;
|
||||
app_data_invio_crm_bit DATE;
|
||||
app_data_val_max DATE;
|
||||
app_data_prima_val_max DATE;
|
||||
app_data_val_eff DATE;
|
||||
app_data_prima_val_eff DATE;
|
||||
app_sla1 dwh.mnp_dw_donor_online.sla_uno%TYPE;
|
||||
app_ric_crm_bit dwh.mnp_dw_donor_online.data_ricezione_da_ccrmbit%TYPE;
|
||||
app_data_conf_teorica DATE;
|
||||
app_data_conf_eff DATE;
|
||||
app_data_cut_over_calc DATE;
|
||||
app_data_cut_over_rec DATE;
|
||||
app_data_cut_over_eff DATE;
|
||||
app_sla2 dwh.mnp_dw_donor_online.sla_due%TYPE;
|
||||
app_sla3 dwh.mnp_dw_porting_online.sla_tre%TYPE;
|
||||
app_causale_rifiuto dwh.mnp_dw_donor_online.causale_rifiuto%TYPE;
|
||||
app_campi VARCHAR (50);
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_out UTL_FILE.file_type; -- file di log
|
||||
dir_out VARCHAR2 (200);
|
||||
line VARCHAR2 (200);
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Definizione cursore per l'estrazione degli AOM RECIPIENT da trattare
|
||||
-----------------------------------------------------------------
|
||||
CURSOR c_aom
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR STANDARD
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_donor_online
|
||||
WHERE aom_recipient = app_c_aom;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR PRJ-HOC
|
||||
CURSOR cur_richiesta_hoc
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_donor_hoc_online
|
||||
WHERE aom_recipient = app_c_aom;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- TERZE PARTI
|
||||
CURSOR cur_richiesta_tp
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_porting_online
|
||||
WHERE aom_recipient = app_c_aom;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out := 'REPORT_SLA';
|
||||
file_out := UTL_FILE.fopen (
|
||||
dir_out,
|
||||
'SLA_ANALITICO_DONOR_TERZE_PARTI_'
|
||||
|| TO_CHAR (SYSDATE, 'ddMMyyyyhh24miss')
|
||||
|| '.csv',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'RICHIESTE DONOR (STANDARD/PROGETTI AD HOC)/ TERZA PARTE ON DEMAND:;'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'AOM_REC;ID_RICHIESTA;MSISDN;TIPO_RICHIESTA;TIPO_LINEA;'
|
||||
|| 'MARCAGGIO ;CODFIS_PIVA;DATA_RIC_RICHIESTA;DATA_PIC;SLA0;DATA_INVIO_CRM_BIT;'
|
||||
|| 'DATA_VAL_MAX;DATA_PRIMA_VAL_MAX;DATA_VAL_EFF;DATA_PRIMA_VAL_EFF;SLA1;'
|
||||
|| 'RIC_CRM_BIT;DATA_CONF_TEORICA;DATA_CONF_EFF;DATA_CUT_OVER_CALC;'
|
||||
|| 'DATA_CUT_OVER_REC;DATA_CUT_OVER_EFF;SLA2;SLA3;CAUSALE_RIFIUTO;'
|
||||
);
|
||||
OPEN c_aom;
|
||||
app_select := '0';
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR STANDARD
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR STANDARD
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '1';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn,
|
||||
'STD', tipo_linea, marcaggio,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_presa_in_carico, sla_zero,
|
||||
data_invio_ai_sistemi_commer, data_validazione_max,
|
||||
data_validazione, sla_uno, data_ricezione_da_ccrmbit,
|
||||
data_cut_over_calc, data_cut_over_eff, sla_due,
|
||||
causale_rifiuto
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_marcaggio,
|
||||
app_codfis_piva, app_data_ric_richiesta,
|
||||
app_data_pic, app_sla0,
|
||||
app_data_invio_crm_bit, app_data_val_max,
|
||||
app_data_val_eff, app_sla1, app_ric_crm_bit,
|
||||
app_data_cut_over_calc, app_data_cut_over_eff, app_sla2,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_donor_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND ( sla_zero > 0
|
||||
OR sla_uno > 0
|
||||
OR sla_due > 0
|
||||
);
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se c'h almeno uno SLA
|
||||
|
||||
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.fflush (file_out);
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR PRJ-HOC
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '2';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn,
|
||||
'HOC', tipo_linea, marcaggio,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_presa_in_carico, sla_zero,
|
||||
data_invio_ai_sistemi_commer, data_validazione_max,
|
||||
data_prima_validazione, sla_uno,
|
||||
data_ricezione_da_ccrmbit, data_cut_over_calc,
|
||||
data_cut_over_calc, data_cut_over_eff, sla_due,
|
||||
causale_rifiuto
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_marcaggio,
|
||||
app_codfis_piva, app_data_ric_richiesta,
|
||||
app_data_pic, app_sla0,
|
||||
app_data_invio_crm_bit, app_data_prima_val_max,
|
||||
app_data_prima_val_eff, app_sla1,
|
||||
app_ric_crm_bit, app_data_cut_over_calc,
|
||||
app_data_cut_over_rec, app_data_cut_over_eff, app_sla2,
|
||||
app_causale_rifiuto
|
||||
FROM mnp_dw_donor_hoc_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND ( sla_zero > 0
|
||||
OR sla_uno > 0
|
||||
OR sla_due > 0
|
||||
);
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se c'h almeno uno SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
OPEN cur_richiesta_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_tp INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tp%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- TERZE PARTI
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_marcaggio := NULL;
|
||||
app_codfis_piva := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_invio_crm_bit := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_ric_crm_bit := NULL;
|
||||
app_data_conf_teorica := NULL;
|
||||
app_data_conf_eff := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_rec := NULL;
|
||||
app_data_cut_over_eff := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '3-'
|
||||
|| app_c_aom;
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn,
|
||||
'TP', data_ricezione_richiesta,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva, data_cut_over_calc,
|
||||
sla_tre
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_data_ric_richiesta,
|
||||
app_data_conf_teorica,
|
||||
app_data_conf_eff, app_data_cut_over_calc,
|
||||
app_sla3
|
||||
FROM mnp_dw_porting_online
|
||||
WHERE id_richiesta = app_id_richiesta AND sla_tre > 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se SLA3 > 0
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_rec
|
||||
|| ';'
|
||||
|| app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_marcaggio
|
||||
|| ';'
|
||||
|| app_codfis_piva
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_invio_crm_bit
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_ric_crm_bit
|
||||
|| ';'
|
||||
|| app_data_conf_teorica
|
||||
|| ';'
|
||||
|| app_data_conf_eff
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_rec
|
||||
|| ';'
|
||||
|| app_data_cut_over_eff
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tp;
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
UTL_FILE.fflush (file_out);
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- SCRITTURA SU FILE DELLE RICHIESTE SENZA SLA
|
||||
-----------------------------------------------------------------
|
||||
|
||||
|
||||
UTL_FILE.put_line (file_out, 'ID_RICHIESTA;MSISDN;CAMPI;');
|
||||
OPEN c_aom;
|
||||
app_campi := 'Richiesta non soggetta a SLA';
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- DONOR STANDARD
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR STANDARD
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '4';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_donor_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND sla_zero = 0
|
||||
AND sla_uno = 0
|
||||
AND sla_due = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.fflush (file_out);
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- DONOR PRJ-HOC
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '5';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_donor_hoc_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND sla_zero = 0
|
||||
AND sla_uno = 0
|
||||
AND sla_due = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
OPEN cur_richiesta_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_tp INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tp%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- TERZE PARTI
|
||||
-----------------------------------------------------------------
|
||||
app_aom_rec := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '5';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_recipient, id_richiesta, msisdn
|
||||
INTO app_aom_rec, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_porting_online
|
||||
WHERE id_richiesta = app_id_richiesta AND sla_tre = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_id_richiesta
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tp;
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
UTL_FILE.fflush (file_out);
|
||||
UTL_FILE.fclose (file_out);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in REPORT_ANALITICO_SLA_DONOR_TERZE_PARTI_ON_DEMAND : (SEL '
|
||||
|| app_select
|
||||
|| ' ) - '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,906 @@
|
||||
CREATE OR REPLACE PROCEDURE SLA_RECIPIENT_ON_DEMAND (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
|
||||
-- Purpose: Calcolo degli SLA ANALITICI RECIPIENT ON DEMAND
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- M.Zagaria 02/11/2004 Versione Iniziale
|
||||
|
||||
app_select VARCHAR2 (200);
|
||||
app_campi VARCHAR2 (200);
|
||||
app_c_aom mnp.mnp_olo.desc_olo%TYPE;
|
||||
app_c_aom_tp mnp.mnp_olo.desc_olo%TYPE;
|
||||
app_ind NUMBER (1);
|
||||
app_aom_tp dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_data_conf_teo_aom DATE;
|
||||
app_data_eff_aom DATE;
|
||||
app_sla3_aom dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
-- identificativo della richiesta di cui calcolare gli sla
|
||||
app_aom_don dwh.mnp_dw_rec.aom_donor%TYPE;
|
||||
app_aom_tp_1 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_aom_tp_2 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_aom_tp_3 dwh.mnp_dw_rec_sla_terzeparti.aom_terze_parti%TYPE;
|
||||
app_id_richiesta dwh.mnp_dw_rec_online.id_richiesta%TYPE;
|
||||
app_msisdn dwh.mnp_dw_rec.msisdn%TYPE;
|
||||
app_tipo_richiesta VARCHAR2 (5); --- STD/HOC/TACS
|
||||
app_tipo_linea dwh.mnp_dw_rec.tipo_linea%TYPE;
|
||||
app_data_ric_richiesta DATE;
|
||||
app_data_invio_aom DATE;
|
||||
app_data_pic DATE;
|
||||
app_sla0 dwh.mnp_dw_rec_sla.sla_zero_minore%TYPE;
|
||||
app_data_val_max DATE;
|
||||
app_data_prima_val_max DATE;
|
||||
app_data_val_eff DATE;
|
||||
app_data_prima_val_eff DATE;
|
||||
app_sla1 dwh.mnp_dw_rec_sla.sla_uno_minore%TYPE;
|
||||
app_data_conf_teo_aom1 DATE;
|
||||
app_data_conf_teo_aom2 DATE;
|
||||
app_data_conf_teo_aom3 DATE;
|
||||
app_data_eff_aom1 DATE;
|
||||
app_data_eff_aom2 DATE;
|
||||
app_data_eff_aom3 DATE;
|
||||
app_data_cut_over_calc DATE;
|
||||
app_data_cut_over_aom DATE;
|
||||
app_data_esple_don DATE;
|
||||
app_sla2 dwh.mnp_dw_rec_sla.sla_due_minore%TYPE;
|
||||
app_sla3_aom1 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_sla3_aom2 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_sla3_aom3 dwh.mnp_dw_rec_sla_terzeparti.sla_tre_minore%TYPE;
|
||||
app_causale_rifiuto dwh.mnp_dw_rec.causale_rifiuto%TYPE;
|
||||
-- variabile di appoggio per il codice dello sto finale
|
||||
file_out UTL_FILE.file_type; -- file di log
|
||||
dir_out VARCHAR2 (200);
|
||||
line VARCHAR2 (200);
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Definizione cursore per l'estrazione degli AOM RECIPIENT da trattare
|
||||
-----------------------------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
-- Definizione cursore per l'estrazione degli AOM RECIPIENT da trattare
|
||||
-----------------------------------------------------------------
|
||||
CURSOR c_aom
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT STANDARD
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_rec_online
|
||||
WHERE aom_donor = app_c_aom;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT AD HOC
|
||||
CURSOR cur_richiesta_hoc
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_rec_hoc_online
|
||||
WHERE aom_donor = app_c_aom;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT Scivolo TACS
|
||||
|
||||
CURSOR cur_richiesta_tacs
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM mnp_dw_rec_tacs_online
|
||||
WHERE aom_donor = app_c_aom;
|
||||
|
||||
|
||||
-- Calcolo SLA3 Recipient Standard / HOC / TACS
|
||||
CURSOR c_aom_tp
|
||||
IS
|
||||
SELECT DISTINCT desc_olo
|
||||
FROM mnp.mnp_olo
|
||||
WHERE flag_terze_parti = 1 AND desc_olo <> app_c_aom;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
dir_out := 'REPORT_SLA';
|
||||
file_out := UTL_FILE.fopen (
|
||||
dir_out,
|
||||
'SLA_ANALITICO_RECIPIENT_'
|
||||
|| TO_CHAR (SYSDATE, 'ddMMyyyyhh24miss')
|
||||
|| '.csv',
|
||||
'w'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'RICHIESTE RECIPIENT (STANDARD/PROGETTI AD HOC/TACS) ON DEMAND:;'
|
||||
);
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
'AOM_DON;AOM_TP_1;AOM_TP_2;AOM_TP_3;ID_RICHIESTA;MSISDN;TIPO_RICHIESTA;'
|
||||
|| 'TIPO_LINEA;DATA_RIC_RICHIESTA;DATA_INVIO_AOM;DATA_PIC;SLA0;DATA_VAL_MAX;'
|
||||
|| 'DATA_PRIMA_VAL_MAX;DATA_VAL_EFF;DATA_PRIMA_VAL_EFF;SLA1;DATA_CONF_TEO_AOM1;'
|
||||
|| 'DATA_CONF_TEO_AOM2;DATA_CONF_TEO_AOM3;DATA_EFF_AOM1;DATA_EFF_AOM2;DATA_EFF_AOM3;'
|
||||
|| 'DATA_CUT_OVER_CALC;DATA_CUT_OVER_AOM;DATA_ESPLE_DON;SLA2;SLA3_AOM1;SLA3_AOM2;'
|
||||
|| 'SLA3_AOM3;CAUSALE_RIFIUTO;'
|
||||
);
|
||||
OPEN c_aom;
|
||||
app_select := '0';
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT STANDARD
|
||||
-----------------------------------------------------------------
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
OPEN cur_richiesta;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, id_richiesta, msisdn,
|
||||
'STD', tipo_linea,
|
||||
data_ricezione_richiesta, data_invio_ad_aom,
|
||||
data_presa_in_carico, sla_zero, data_validazione_max,
|
||||
data_validazione, sla_uno, data_cut_over_aom,
|
||||
data_espletamento_donating, sla_due, causale_rifiuto
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea,
|
||||
app_data_ric_richiesta, app_data_invio_aom,
|
||||
app_data_pic, app_sla0, app_data_val_max,
|
||||
app_data_val_eff, app_sla1, app_data_cut_over_aom,
|
||||
app_data_esple_don, app_sla2, app_causale_rifiuto
|
||||
FROM mnp_dw_rec_online,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_tp_online
|
||||
WHERE mnp_dw_rec_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_tp
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND ( sla_zero > 0
|
||||
OR sla_uno > 0
|
||||
OR sla_due > 0
|
||||
OR sla_tp.sla_tre > 0
|
||||
);
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
app_select := '1';
|
||||
|
||||
BEGIN
|
||||
-- slq clacolo sla
|
||||
SELECT aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva, sla_tre
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom, app_sla3_aom
|
||||
FROM mnp_dw_rec_tp_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND aom_terze_parti = app_c_aom_tp;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
UTL_FILE.fflush (file_out);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := '';
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
UTL_FILE.fflush (file_out);
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT HOC
|
||||
----------------------------------------------------------------
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '3';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, id_richiesta, msisdn,
|
||||
'HOC', tipo_linea,
|
||||
data_ricezione_richiesta, data_invio_ad_aom,
|
||||
data_presa_in_carico, sla_zero, data_validazione_max,
|
||||
data_validazione, sla_uno, data_cut_over_aom,
|
||||
data_espletamento_donating, sla_due, causale_rifiuto
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea,
|
||||
app_data_ric_richiesta, app_data_invio_aom,
|
||||
app_data_pic, app_sla0, app_data_val_max,
|
||||
app_data_val_eff, app_sla1, app_data_cut_over_aom,
|
||||
app_data_esple_don, app_sla2, app_causale_rifiuto
|
||||
FROM mnp_dw_rec_hoc_online,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_hoc_tp_online
|
||||
WHERE mnp_dw_rec_hoc_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_hoc_tp
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND ( sla_zero > 0
|
||||
OR sla_uno > 0
|
||||
OR sla_due > 0
|
||||
OR sla_hoc_tp.sla_tre > 0
|
||||
);
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
app_select := '4';
|
||||
|
||||
BEGIN
|
||||
-- slq clacolo sla
|
||||
SELECT aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva, sla_tre
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom, app_sla3_aom
|
||||
FROM mnp_dw_rec_hoc_tp_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND aom_terze_parti = app_c_aom_tp;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
UTL_FILE.fflush (file_out);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := '';
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
UTL_FILE.fflush (file_out);
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
UTL_FILE.fflush (file_out);
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT SCIVOLO TACS
|
||||
----------------------------------------------------------------
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
app_c_aom := 'TIMT';
|
||||
OPEN cur_richiesta_tacs;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta_tacs INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tacs%NOTFOUND;
|
||||
app_aom_don := NULL;
|
||||
app_aom_tp_1 := NULL;
|
||||
app_aom_tp_2 := NULL;
|
||||
app_aom_tp_3 := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_tipo_richiesta := NULL;
|
||||
app_tipo_linea := NULL;
|
||||
app_data_ric_richiesta := NULL;
|
||||
app_data_invio_aom := NULL;
|
||||
app_data_pic := NULL;
|
||||
app_sla0 := NULL;
|
||||
app_data_val_max := NULL;
|
||||
app_data_prima_val_max := NULL;
|
||||
app_data_val_eff := NULL;
|
||||
app_data_prima_val_eff := NULL;
|
||||
app_sla1 := NULL;
|
||||
app_data_conf_teo_aom1 := NULL;
|
||||
app_data_conf_teo_aom2 := NULL;
|
||||
app_data_conf_teo_aom3 := NULL;
|
||||
app_data_eff_aom1 := NULL;
|
||||
app_data_eff_aom2 := NULL;
|
||||
app_data_eff_aom3 := NULL;
|
||||
app_data_cut_over_calc := NULL;
|
||||
app_data_cut_over_aom := NULL;
|
||||
app_data_esple_don := NULL;
|
||||
app_sla2 := NULL;
|
||||
app_sla3_aom1 := NULL;
|
||||
app_sla3_aom2 := NULL;
|
||||
app_sla3_aom3 := NULL;
|
||||
app_causale_rifiuto := NULL;
|
||||
app_select := '5';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, id_richiesta, msisdn,
|
||||
'TACS', tipo_linea, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn,
|
||||
app_tipo_richiesta, app_tipo_linea, app_data_ric_richiesta,
|
||||
app_data_val_max, app_data_cut_over_calc
|
||||
FROM mnp_dw_rec_tacs_online,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_tacs_tp_online
|
||||
WHERE mnp_dw_rec_tacs_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_tacs_tp
|
||||
WHERE id_richiesta = app_id_richiesta AND sla_tacs_tp.sla_tre > 0;
|
||||
|
||||
app_ind := 1;
|
||||
OPEN c_aom_tp;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom_tp INTO app_c_aom_tp;
|
||||
EXIT WHEN c_aom_tp%NOTFOUND;
|
||||
app_select := '6';
|
||||
|
||||
BEGIN
|
||||
-- slq clacolo sla
|
||||
SELECT aom_terze_parti, data_configurazione_teorica,
|
||||
data_configurazione_effettiva, sla_tre
|
||||
INTO app_aom_tp, app_data_conf_teo_aom,
|
||||
app_data_eff_aom, app_sla3_aom
|
||||
FROM mnp_dw_rec_tacs_tp_online
|
||||
WHERE id_richiesta = app_id_richiesta
|
||||
AND aom_terze_parti = app_c_aom_tp;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_sla3_aom := -1;
|
||||
END;
|
||||
|
||||
IF (app_sla3_aom > 0)
|
||||
THEN
|
||||
IF (app_ind = 1)
|
||||
THEN
|
||||
app_aom_tp_1 := app_aom_tp;
|
||||
app_data_conf_teo_aom1 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom1 := app_data_eff_aom;
|
||||
app_sla3_aom1 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 2)
|
||||
THEN
|
||||
app_aom_tp_2 := app_aom_tp;
|
||||
app_data_conf_teo_aom2 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom2 := app_data_eff_aom;
|
||||
app_sla3_aom2 := app_sla3_aom;
|
||||
ELSE
|
||||
IF (app_ind = 3)
|
||||
THEN
|
||||
app_aom_tp_3 := app_aom_tp;
|
||||
app_data_conf_teo_aom3 := app_data_conf_teo_aom;
|
||||
app_data_eff_aom3 := app_data_eff_aom;
|
||||
app_sla3_aom3 := app_sla3_aom;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
app_ind := app_ind
|
||||
+ 1;
|
||||
END LOOP; -- C_Aom_tp
|
||||
|
||||
CLOSE c_aom_tp;
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
app_aom_don
|
||||
|| ';'
|
||||
|| app_aom_tp_1
|
||||
|| ';'
|
||||
|| app_aom_tp_2
|
||||
|| ';'
|
||||
|| app_aom_tp_3
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_tipo_richiesta
|
||||
|| ';'
|
||||
|| app_tipo_linea
|
||||
|| ';'
|
||||
|| app_data_ric_richiesta
|
||||
|| ';'
|
||||
|| app_data_invio_aom
|
||||
|| ';'
|
||||
|| app_data_pic
|
||||
|| ';'
|
||||
|| app_sla0
|
||||
|| ';'
|
||||
|| app_data_val_max
|
||||
|| ';'
|
||||
|| app_data_prima_val_max
|
||||
|| ';'
|
||||
|| app_data_val_eff
|
||||
|| ';'
|
||||
|| app_data_prima_val_eff
|
||||
|| ';'
|
||||
|| app_sla1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom1
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom2
|
||||
|| ';'
|
||||
|| app_data_conf_teo_aom3
|
||||
|| ';'
|
||||
|| app_data_eff_aom1
|
||||
|| ';'
|
||||
|| app_data_eff_aom2
|
||||
|| ';'
|
||||
|| app_data_eff_aom3
|
||||
|| ';'
|
||||
|| app_data_cut_over_calc
|
||||
|| ';'
|
||||
|| app_data_cut_over_aom
|
||||
|| ';'
|
||||
|| app_data_esple_don
|
||||
|| ';'
|
||||
|| app_sla2
|
||||
|| ';'
|
||||
|| app_sla3_aom1
|
||||
|| ';'
|
||||
|| app_sla3_aom2
|
||||
|| ';'
|
||||
|| app_sla3_aom3
|
||||
|| ';'
|
||||
|| app_causale_rifiuto
|
||||
|| ';'
|
||||
);
|
||||
UTL_FILE.fflush (file_out);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := '';
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tacs;
|
||||
UTL_FILE.fflush (file_out);
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- SCRITTURA SU FILE DELLE RICHIESTE SENZA SLA
|
||||
-----------------------------------------------------------------
|
||||
|
||||
|
||||
UTL_FILE.put_line (file_out, 'ID_RICHIESTA;MSISDN;CAMPI;');
|
||||
OPEN c_aom;
|
||||
app_campi := 'Richiesta non soggetta a SLA';
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH c_aom INTO app_c_aom;
|
||||
EXIT WHEN c_aom%NOTFOUND;
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
-- RECIPIENT STANDARD
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT STANDARD
|
||||
-----------------------------------------------------------------
|
||||
app_aom_don := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '7';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, d.id_richiesta, msisdn
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_rec_online d,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_tp_online
|
||||
WHERE mnp_dw_rec_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_tp
|
||||
WHERE d.id_richiesta = app_id_richiesta
|
||||
AND sla_zero = 0
|
||||
AND sla_uno = 0
|
||||
AND sla_due = 0
|
||||
AND sla_tp.sla_tre = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
OPEN cur_richiesta_hoc;
|
||||
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
LOOP
|
||||
FETCH cur_richiesta_hoc INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_hoc%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT HOC
|
||||
-----------------------------------------------------------------
|
||||
app_aom_don := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '8';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, d.id_richiesta, msisdn
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_rec_hoc_online d,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_hoc_tp_online
|
||||
WHERE mnp_dw_rec_hoc_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_hoc_tp
|
||||
WHERE d.id_richiesta = app_id_richiesta
|
||||
AND sla_zero = 0
|
||||
AND sla_uno = 0
|
||||
AND sla_due = 0
|
||||
AND sla_hoc_tp.sla_tre = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_hoc;
|
||||
END LOOP; --aom
|
||||
|
||||
CLOSE c_aom;
|
||||
-- Per ogni richiesta di cui devo calcolare gli SLA
|
||||
app_c_aom := 'TIMT';
|
||||
OPEN cur_richiesta_tacs;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta_tacs INTO app_id_richiesta;
|
||||
EXIT WHEN cur_richiesta_tacs%NOTFOUND;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Estrazione dati richiesta per un AOM e per una determinata richiesta
|
||||
--- RECIPIENT SCIVOLO TACS
|
||||
-----------------------------------------------------------------
|
||||
app_aom_don := NULL;
|
||||
app_msisdn := NULL;
|
||||
app_select := '9';
|
||||
|
||||
BEGIN
|
||||
SELECT aom_donor, d.id_richiesta, msisdn
|
||||
INTO app_aom_don, app_id_richiesta, app_msisdn
|
||||
FROM mnp_dw_rec_tacs_online d,
|
||||
(SELECT SUM (sla_tre) AS sla_tre
|
||||
FROM mnp_dw_rec_tacs_tp_online
|
||||
WHERE mnp_dw_rec_tacs_tp_online.id_richiesta =
|
||||
app_id_richiesta) sla_tacs_tp
|
||||
WHERE d.id_richiesta = app_id_richiesta AND sla_tacs_tp.sla_tre = 0;
|
||||
|
||||
|
||||
------------ Scrive i dati della RICHIESTA se non SLA
|
||||
|
||||
UTL_FILE.put_line (
|
||||
file_out,
|
||||
''''
|
||||
|| app_id_richiesta
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| ''''
|
||||
|| app_msisdn
|
||||
|| ''''
|
||||
|| ';'
|
||||
|| app_campi
|
||||
|| ';'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
app_id_richiesta := NULL;
|
||||
END;
|
||||
END LOOP; -- richiesta
|
||||
|
||||
CLOSE cur_richiesta_tacs;
|
||||
UTL_FILE.fflush (file_out);
|
||||
UTL_FILE.fclose (file_out);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Errore in REPORT_ANALITICO_SLA_RECIPIENT_ON_DEMAND : (SEL '
|
||||
|| app_select
|
||||
|| ' ) - '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,115 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
-- Purpose: Inserimento dei dati aggiornati al mese di riferimento nella
|
||||
-- tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1);
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Inserimento di tutte le richieste donor standard
|
||||
-- che ancora non hanno raggiunto uno stato finale o lo hanno raggiunto nel
|
||||
-- mese di riferimento
|
||||
INSERT INTO dwh.mnp_dw_donor_delta
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko, marcaggio)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1), marcaggio
|
||||
FROM mnp.mnp_gestione_richiesta gr
|
||||
WHERE gr.richiestaadhoc = '0'
|
||||
AND gr.richiestaadhocaom = '0'
|
||||
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste consumenr con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
-- merge della tabella mnp_dw_donor_delta nella tabella mnp_dw_donor
|
||||
MERGE INTO dwh.mnp_dw_donor t
|
||||
USING dwh.mnp_dw_donor_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_recipient = s.aom_recipient, t.msisdn = s.msisdn,
|
||||
t.tipo_linea = s.tipo_linea, t.marcaggio = s.marcaggio,
|
||||
t.codice_fiscale_partita_iva =
|
||||
s.codice_fiscale_partita_iva,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_presa_in_carico = s.data_presa_in_carico,
|
||||
t.data_invio_ai_sistemi_commer =
|
||||
s.data_invio_ai_sistemi_commer,
|
||||
t.data_validazione_max = s.data_validazione_max,
|
||||
t.data_validazione = s.data_validazione,
|
||||
t.data_ricezione_da_ccrmbit = s.data_ricezione_da_ccrmbit,
|
||||
t.data_cut_over_calc = s.data_cut_over_calc,
|
||||
t.data_cut_over_eff = s.data_cut_over_eff,
|
||||
t.causale_rifiuto = s.causale_rifiuto,
|
||||
t.data_espletamento = s.data_espletamento,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale,
|
||||
t.presaincarico_ko = s.presaincarico_ko
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
marcaggio, codice_fiscale_partita_iva,
|
||||
data_ricezione_richiesta, data_presa_in_carico,
|
||||
data_invio_ai_sistemi_commer, data_validazione_max,
|
||||
data_validazione, data_ricezione_da_ccrmbit,
|
||||
data_cut_over_calc, data_cut_over_eff, causale_rifiuto,
|
||||
data_espletamento, stato, data_stato_finale,
|
||||
presaincarico_ko)
|
||||
VALUES (s.id_richiesta, s.aom_recipient, s.msisdn, s.tipo_linea,
|
||||
s.marcaggio, s.codice_fiscale_partita_iva,
|
||||
s.data_ricezione_richiesta, s.data_presa_in_carico,
|
||||
s.data_invio_ai_sistemi_commer, s.data_validazione_max,
|
||||
s.data_validazione, s.data_ricezione_da_ccrmbit,
|
||||
s.data_cut_over_calc, s.data_cut_over_eff,
|
||||
s.causale_rifiuto, s.data_espletamento, s.stato,
|
||||
s.data_stato_finale, s.presaincarico_ko);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_DELTA_2 (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
-- Purpose: Aggiornamento dei dati relativi al mese di riferimento che non si
|
||||
-- trovano nella tabella di gestione richiesta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
app_id_richiesta dwh.mnp_dw_donor_delta.id_richiesta%TYPE;
|
||||
|
||||
-- ID della richiesta
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_donor_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento dello stato e della data di transizione di stato
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_lavorazione
|
||||
FROM (SELECT sr.stato_a, sr.data_lavorazione
|
||||
FROM mnp.mnp_storico_richiesta sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di presaincarico
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '5'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND dw.presaincarico_ko = 1
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Business
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.tipo_linea = 'BU' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Consumer
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta
|
||||
AND cvo.stato = 'IN VALIDAZIONE')
|
||||
WHERE dw.tipo_linea = 'CO' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di validazione
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_validazione =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '2'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di ricezione delle liste di validazione dai
|
||||
-- sistemi commerciali
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_ricezione_da_ccrmbit =
|
||||
(SELECT MIN (data_ricezione)
|
||||
FROM mnp.mnp_crm_validazione_in cvi
|
||||
WHERE cvi.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di cessazione effettiva ricevuta da MSS
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_cut_over_eff =
|
||||
(SELECT MIN (TRUNC (data_ora_cessazione))
|
||||
FROM mnp.mnp_mss_cessazione_in mci
|
||||
WHERE mci.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di espletamento
|
||||
UPDATE dwh.mnp_dw_donor_delta dw
|
||||
SET dw.data_espletamento =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese
|
||||
AND xo.destinatario <> 'NPTS')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_DELTA_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,112 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_HOC_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_hoc_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1) := 0;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_hoc_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Inserimento di tutte le richieste donor ad hoc
|
||||
-- che ancora non hanno raggiunto uno stato finale o lo hanno raggiunto nel
|
||||
-- mese di riferimento
|
||||
INSERT INTO dwh.mnp_dw_donor_hoc_delta
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko, marcaggio)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1), marcaggio
|
||||
FROM mnp.mnp_gestione_richiesta gr
|
||||
WHERE (gr.richiestaadhoc = '1' OR gr.richiestaadhocaom = '1')
|
||||
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste business con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_hoc_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
-- merge della tabella mnp_dw_donor_hoc_delta nella tabella mnp_dw_donor_hoc
|
||||
MERGE INTO dwh.mnp_dw_donor_hoc t
|
||||
USING dwh.mnp_dw_donor_hoc_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_recipient = s.aom_recipient, t.msisdn = s.msisdn,
|
||||
t.tipo_linea = s.tipo_linea, t.marcaggio = s.marcaggio,
|
||||
t.codice_fiscale_partita_iva =
|
||||
s.codice_fiscale_partita_iva,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_presa_in_carico = s.data_presa_in_carico,
|
||||
t.data_invio_ai_sistemi_commer =
|
||||
s.data_invio_ai_sistemi_commer,
|
||||
t.data_validazione_max = s.data_validazione_max,
|
||||
t.data_prima_validazione = s.data_prima_validazione,
|
||||
t.data_ricezione_da_ccrmbit = s.data_ricezione_da_ccrmbit,
|
||||
t.data_cut_over_calc = s.data_cut_over_calc,
|
||||
t.data_cut_over_eff = s.data_cut_over_eff,
|
||||
t.causale_rifiuto = s.causale_rifiuto,
|
||||
t.data_espletamento = s.data_espletamento,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale,
|
||||
t.presaincarico_ko = s.presaincarico_ko
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
marcaggio, codice_fiscale_partita_iva,
|
||||
data_ricezione_richiesta, data_presa_in_carico,
|
||||
data_invio_ai_sistemi_commer, data_validazione_max,
|
||||
data_prima_validazione, data_ricezione_da_ccrmbit,
|
||||
data_cut_over_calc, data_cut_over_eff, causale_rifiuto,
|
||||
data_espletamento, stato, data_stato_finale,
|
||||
presaincarico_ko)
|
||||
VALUES (s.id_richiesta, s.aom_recipient, s.msisdn, s.tipo_linea,
|
||||
s.marcaggio, s.codice_fiscale_partita_iva,
|
||||
s.data_ricezione_richiesta, s.data_presa_in_carico,
|
||||
s.data_invio_ai_sistemi_commer, s.data_validazione_max,
|
||||
s.data_prima_validazione, s.data_ricezione_da_ccrmbit,
|
||||
s.data_cut_over_calc, s.data_cut_over_eff,
|
||||
s.causale_rifiuto, s.data_espletamento, s.stato,
|
||||
s.data_stato_finale, s.presaincarico_ko);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_HOC_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,126 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_HOC_DELTA_2 (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
-- Purpose: Aggiornamento dei dati relativi al mese di riferimento che non si
|
||||
-- trovano nella tabella di gestione richiesta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
app_id_richiesta dwh.mnp_dw_donor_hoc_delta.id_richiesta%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_donor_hoc_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento dello stato e della data di transizione
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_lavorazione
|
||||
FROM (SELECT sr.stato_a, sr.data_lavorazione
|
||||
FROM mnp.mnp_storico_richiesta sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di presaincarico
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = 5
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND dw.presaincarico_ko = 1
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Business
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.tipo_linea = 'BU' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Consumer
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta
|
||||
AND cvo.stato = 'IN VALIDAZIONE')
|
||||
WHERE dw.tipo_linea = 'CO' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di prima validazione
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_prima_validazione =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '2'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di ricezione delle liste di validazione dai
|
||||
-- sistemi commerciali
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_ricezione_da_ccrmbit =
|
||||
(SELECT MIN (data_ricezione)
|
||||
FROM mnp.mnp_crm_validazione_in cvi
|
||||
WHERE cvi.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di cessazione effettiva ricevuta da MSS
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_cut_over_eff = (SELECT MIN (TRUNC (data_ora_cessazione))
|
||||
FROM mnp.mnp_mss_cessazione_in mci
|
||||
WHERE mci.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di espletamento
|
||||
UPDATE dwh.mnp_dw_donor_hoc_delta dw
|
||||
SET data_espletamento =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese
|
||||
AND xo.destinatario <> 'NPTS')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_HOC_DELTA_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,119 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_HOC_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Aggiornamento dei dati relativi al mese di riferimento che non si
|
||||
-- trovano nella tabella di gestione richiesta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
app_id_richiesta dwh.mnp_dw_donor_hoc_online.id_richiesta%TYPE;
|
||||
app_stato dwh.mnp_dw_donor_hoc_online.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato
|
||||
FROM dwh.mnp_dw_donor_hoc_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento della data di transizione di stato
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT MAX (sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_richiesta sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di presaincarico
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = 5
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND dw.presaincarico_ko = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Business
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.tipo_linea = 'BU' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Consumer
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta
|
||||
AND cvo.stato = 'IN VALIDAZIONE')
|
||||
WHERE dw.tipo_linea = 'CO' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di prima validazione
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_prima_validazione =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '2'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di ricezione delle liste di validazione dai
|
||||
-- sistemi commerciali
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_ricezione_da_ccrmbit =
|
||||
(SELECT MIN (data_ricezione)
|
||||
FROM mnp.mnp_crm_validazione_in cvi
|
||||
WHERE cvi.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di cessazione effettiva ricevuta da MSS
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_cut_over_eff = (SELECT MIN (TRUNC (data_ora_cessazione))
|
||||
FROM mnp.mnp_mss_cessazione_in mci
|
||||
WHERE mci.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di espletamento
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET data_espletamento =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario <> 'NPTS')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_HOC_ONLINE_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_HOC_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose:
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
errore NUMBER (1) := 0;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_hoc_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Inserimento di tutte le richieste donor ad hoc
|
||||
-- che ancora non hanno raggiunto uno stato finale o lo hanno raggiunto nel
|
||||
-- mese di riferimento
|
||||
INSERT INTO dwh.mnp_dw_donor_hoc_online
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko,
|
||||
marcaggio, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1),
|
||||
marcaggio, stato
|
||||
FROM mnp.mnp_gestione_richiesta gr, mnp_dw_donor_tp_in_richiesta dim
|
||||
WHERE gr.id_richiesta = dim.id_richiesta
|
||||
AND (gr.richiestaadhoc = '1' OR gr.richiestaadhocaom = '1')
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste business con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_hoc_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_donor_hoc_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_HOC_ONLINE_ID ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_HOC_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose:
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
errore NUMBER (1) := 0;
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_hoc_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Inserimento di tutte le richieste donor ad hoc
|
||||
-- che ancora non hanno raggiunto uno stato finale o lo hanno raggiunto nel
|
||||
-- mese di riferimento
|
||||
INSERT INTO dwh.mnp_dw_donor_hoc_online
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko,
|
||||
marcaggio, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1),
|
||||
marcaggio, stato
|
||||
FROM mnp.mnp_gestione_richiesta gr, mnp_dw_donor_tp_in_msisdn dim
|
||||
WHERE gr.msisdn = dim.msisdn
|
||||
AND (gr.richiestaadhoc = '1' OR gr.richiestaadhocaom = '1')
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste business con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_hoc_online dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_hoc_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_donor_hoc_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_HOC_ONLINE_ID ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,120 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Aggiornamento dei dati relativi al mese di riferimento che non si
|
||||
-- trovano nella tabella di gestione richiesta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
app_id_richiesta dwh.mnp_dw_donor_online.id_richiesta%TYPE;
|
||||
-- ID della richiesta
|
||||
app_stato dwh.mnp_dw_donor_online.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato
|
||||
FROM dwh.mnp_dw_donor_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento della data di transizione di stato
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT max(sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_richiesta sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di presaincarico
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '5'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND dw.presaincarico_ko = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Business
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.tipo_linea = 'BU' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio delle liste di validazione ai
|
||||
-- sistemi commerciali per le richieste Consumer
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_invio_ai_sistemi_commer =
|
||||
(SELECT MIN (data_invio)
|
||||
FROM mnp.mnp_crm_validazione_out cvo
|
||||
WHERE cvo.id_richiesta = app_id_richiesta
|
||||
AND cvo.stato = 'IN VALIDAZIONE')
|
||||
WHERE dw.tipo_linea = 'CO' AND dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di validazione
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_validazione =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '2'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di ricezione delle liste di validazione dai
|
||||
-- sistemi commerciali
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_ricezione_da_ccrmbit =
|
||||
(SELECT MIN (data_ricezione)
|
||||
FROM mnp.mnp_crm_validazione_in cvi
|
||||
WHERE cvi.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di cessazione effettiva ricevuta da MSS
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_cut_over_eff =
|
||||
(SELECT MIN (TRUNC (data_ora_cessazione))
|
||||
FROM mnp.mnp_mss_cessazione_in mci
|
||||
WHERE mci.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
-- Aggiornamento della data di invio del file XML di espletamento
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET dw.data_espletamento =
|
||||
(SELECT MIN (TRUNC (data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario <> 'NPTS')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_ONLINE_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,56 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose:
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_donor_online
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko,
|
||||
marcaggio, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1),
|
||||
marcaggio, stato
|
||||
FROM mnp.mnp_gestione_richiesta gr
|
||||
WHERE gr.id_richiesta in (select dim.id_richiesta from dwh.mnp_dw_donor_tp_in_richiesta dim)
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.richiestaadhocaom = '0'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste consumenr con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_donor_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_ONLINE ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,58 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_DONOR_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
-- Purpose: Inserimento dei dati aggiornati al mese di riferimento nella
|
||||
-- tabella mnp_dw_donor_online
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
errore NUMBER (1);
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_donor_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_donor_online
|
||||
(id_richiesta, aom_recipient, msisdn, tipo_linea,
|
||||
codice_fiscale_partita_iva, data_ricezione_richiesta,
|
||||
data_validazione_max, data_cut_over_calc, presaincarico_ko,
|
||||
marcaggio, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
|
||||
gr.dataricezionerichiesta, gr.data_validazione_max,
|
||||
gr.data_cut_over_calc,
|
||||
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1),
|
||||
marcaggio, stato
|
||||
FROM mnp.mnp_gestione_richiesta gr
|
||||
WHERE gr.msisdn in (select dim.msisdn from mnp_dw_donor_tp_in_msisdn dim)
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.richiestaadhocaom = '0'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- aggiornamento del campo marcaggio delle richieste consumenr con il valore 'C'
|
||||
UPDATE dwh.mnp_dw_donor_online dw
|
||||
SET marcaggio = 'C'
|
||||
WHERE dw.tipo_linea = 'CO';
|
||||
|
||||
COMMIT;
|
||||
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
|
||||
dwh.update_donor_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_donor_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_ONLINE_MSISDN ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,79 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_porting_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_porting_delta
|
||||
(id_richiesta, aom_recipient, msisdn,
|
||||
data_ricezione_richiesta, data_cut_over_calc)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.dataricezionerichiesta, gr.data_cut_over
|
||||
FROM mnp.mnp_gestione_richiesta_porting gr
|
||||
WHERE gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
dwh.update_porting_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
MERGE INTO dwh.mnp_dw_porting t
|
||||
USING dwh.mnp_dw_porting_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_recipient = s.aom_recipient, t.msisdn = s.msisdn,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_configurazione_teorica =
|
||||
s.data_configurazione_teorica,
|
||||
t.data_configurazione_effettiva =
|
||||
s.data_configurazione_effettiva,
|
||||
t.data_cut_over_calc = s.data_cut_over_calc,
|
||||
t.data_cut_over_effettiva = s.data_cut_over_effettiva,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_recipient, msisdn,
|
||||
data_ricezione_richiesta, data_configurazione_teorica,
|
||||
data_configurazione_effettiva, data_cut_over_calc,
|
||||
data_cut_over_effettiva, stato, data_stato_finale)
|
||||
VALUES (s.id_richiesta, s.aom_recipient, s.msisdn,
|
||||
s.data_ricezione_richiesta,
|
||||
s.data_configurazione_teorica,
|
||||
s.data_configurazione_effettiva, s.data_cut_over_calc,
|
||||
s.data_cut_over_effettiva, s.stato, s.data_stato_finale);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_PORTING_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,80 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_DELTA_2 (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_porting_delta.id_richiesta%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_porting_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_i_o
|
||||
FROM (SELECT sr.stato_a, sr.data_i_o
|
||||
FROM mnp.mnp_storico_porting sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET dw.data_configurazione_teorica =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '3'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = dw.id_richiesta
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET dw.data_configurazione_effettiva =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo,
|
||||
mnp.mnp_xml_richiesta_out xro,
|
||||
mnp.mnp_gestione_richiesta_porting rp
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = dw.id_richiesta
|
||||
AND dw.id_richiesta = rp.id_richiesta
|
||||
AND (xro.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
)
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET data_cut_over_effettiva =
|
||||
(SELECT data_ora_cessazione
|
||||
FROM mnp.mnp_mss_porting_in mpi
|
||||
WHERE mpi.id_richiesta = dw.id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_PORTING_DELTA_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,76 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_porting_delta.id_richiesta%TYPE;
|
||||
app_stato dwh.mnp_dw_porting_delta.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato
|
||||
FROM dwh.mnp_dw_porting_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento della data di transizione di stato
|
||||
UPDATE dwh.mnp_dw_porting_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT MAX (sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_porting sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET dw.data_configurazione_teorica =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '3'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = dw.id_richiesta
|
||||
)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET dw.data_configurazione_effettiva =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo,
|
||||
mnp.mnp_xml_richiesta_out xro,
|
||||
mnp.mnp_gestione_richiesta_porting rp
|
||||
WHERE xo.tipo_file = '6'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = dw.id_richiesta
|
||||
AND dw.id_richiesta = rp.id_richiesta
|
||||
AND (xro.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
)
|
||||
)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_porting_delta dw
|
||||
SET data_cut_over_effettiva =
|
||||
(SELECT data_ora_cessazione
|
||||
FROM mnp.mnp_mss_porting_in mpi
|
||||
WHERE mpi.id_richiesta = dw.id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_PORTING_ONLINE_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,40 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_porting_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_porting_online
|
||||
(id_richiesta, aom_recipient, msisdn,
|
||||
data_ricezione_richiesta, data_cut_over_calc, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.dataricezionerichiesta, gr.data_cut_over, stato
|
||||
FROM mnp.mnp_gestione_richiesta_porting gr
|
||||
WHERE gr.id_richiesta in (select dim.id_richiesta from dwh.mnp_dw_donor_tp_in_richiesta dim)
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
dwh.update_porting_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_tp_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_PORTING_ONLINE_ID ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,42 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_PORTING_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_porting_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_porting_online
|
||||
(id_richiesta, aom_recipient, msisdn,
|
||||
data_ricezione_richiesta, data_cut_over_calc, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
|
||||
gr.dataricezionerichiesta, gr.data_cut_over, stato
|
||||
FROM mnp.mnp_gestione_richiesta_porting gr
|
||||
WHERE gr.msisdn in (select dim.msisdn from dwh.mnp_dw_donor_tp_in_msisdn dim)
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
dwh.update_porting_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_tp_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ( 'Errore in UPDATE_PORTING_ONLINE_MSISDN '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,126 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_delta
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom)
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_terzeparti_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_terzeparti_delta
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_delta dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_terze_parti (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
MERGE INTO dwh.mnp_dw_rec t
|
||||
USING dwh.mnp_dw_rec_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_donor = s.aom_donor, t.msisdn = s.msisdn,
|
||||
t.tipo_linea = s.tipo_linea,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_invio_ad_aom = s.data_invio_ad_aom,
|
||||
t.data_presa_in_carico = s.data_presa_in_carico,
|
||||
t.data_validazione_max = s.data_validazione_max,
|
||||
t.data_validazione = s.data_validazione,
|
||||
t.causale_rifiuto = s.causale_rifiuto,
|
||||
t.data_espletamento_donating =
|
||||
s.data_espletamento_donating,
|
||||
t.data_cut_over_aom = s.data_cut_over_aom,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_invio_ad_aom,
|
||||
data_presa_in_carico, data_validazione_max,
|
||||
data_validazione, causale_rifiuto,
|
||||
data_espletamento_donating, data_cut_over_aom, stato,
|
||||
data_stato_finale)
|
||||
VALUES (s.id_richiesta, s.aom_donor, s.msisdn, s.tipo_linea,
|
||||
s.data_ricezione_richiesta, s.data_invio_ad_aom,
|
||||
s.data_presa_in_carico, s.data_validazione_max,
|
||||
s.data_validazione, s.causale_rifiuto,
|
||||
s.data_espletamento_donating, s.data_cut_over_aom,
|
||||
s.stato, s.data_stato_finale);
|
||||
COMMIT;
|
||||
MERGE INTO dwh.mnp_dw_rec_terzeparti t
|
||||
USING dwh.mnp_dw_rec_terzeparti_delta s
|
||||
ON ( t.id_richiesta = s.id_richiesta
|
||||
AND t.aom_terze_parti = s.aom_terze_parti)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.data_configurazione_teorica =
|
||||
s.data_configurazione_teorica,
|
||||
t.data_configurazione_effettiva =
|
||||
s.data_configurazione_effettiva
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva)
|
||||
VALUES (s.id_richiesta, s.aom_terze_parti,
|
||||
s.data_configurazione_teorica,
|
||||
s.data_configurazione_effettiva);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,110 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_DELTA_2 (ultimo_giorno_mese IN DATE, errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_delta.id_richiesta%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_i_o
|
||||
FROM (SELECT sr.stato_a, sr.data_i_o
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET data_invio_ad_aom =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '1'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '5'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese
|
||||
AND ( xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>3%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>7%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>8%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>9%'
|
||||
))
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET data_validazione =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '2'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT causale_accodamento
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 5)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT gr.codicerifiutovalidazione
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 7)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_delta dw
|
||||
SET data_espletamento_donating =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = dw.aom_donor
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,126 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_delta
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom)
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.richiestaadhoc = '1'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_tp_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_tp_delta
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_hoc_delta dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_hoc_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_hoc_terze_parti (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
MERGE INTO dwh.mnp_dw_rec_hoc t
|
||||
USING dwh.mnp_dw_rec_hoc_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_donor = s.aom_donor, t.msisdn = s.msisdn,
|
||||
t.tipo_linea = s.tipo_linea,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_invio_ad_aom = s.data_invio_ad_aom,
|
||||
t.data_presa_in_carico = s.data_presa_in_carico,
|
||||
t.data_validazione_max = s.data_validazione_max,
|
||||
t.data_validazione = s.data_validazione,
|
||||
t.causale_rifiuto = s.causale_rifiuto,
|
||||
t.data_espletamento_donating =
|
||||
s.data_espletamento_donating,
|
||||
t.data_cut_over_aom = s.data_cut_over_aom,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_invio_ad_aom,
|
||||
data_presa_in_carico, data_validazione_max,
|
||||
data_validazione, causale_rifiuto,
|
||||
data_espletamento_donating, data_cut_over_aom, stato,
|
||||
data_stato_finale)
|
||||
VALUES (s.id_richiesta, s.aom_donor, s.msisdn, s.tipo_linea,
|
||||
s.data_ricezione_richiesta, s.data_invio_ad_aom,
|
||||
s.data_presa_in_carico, s.data_validazione_max,
|
||||
s.data_validazione, s.causale_rifiuto,
|
||||
s.data_espletamento_donating, s.data_cut_over_aom,
|
||||
s.stato, s.data_stato_finale);
|
||||
COMMIT;
|
||||
MERGE INTO dwh.mnp_dw_rec_hoc_terzeparti t
|
||||
USING dwh.mnp_dw_rec_hoc_tp_delta s
|
||||
ON ( t.id_richiesta = s.id_richiesta
|
||||
AND t.aom_terze_parti = s.aom_terze_parti)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.data_configurazione_teorica =
|
||||
s.data_configurazione_teorica,
|
||||
t.data_configurazione_effettiva =
|
||||
s.data_configurazione_effettiva
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva)
|
||||
VALUES (s.id_richiesta, s.aom_terze_parti,
|
||||
s.data_configurazione_teorica,
|
||||
s.data_configurazione_effettiva);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,113 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_DELTA_2 (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_delta.id_richiesta%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_hoc_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_i_o
|
||||
FROM (SELECT sr.stato_a, sr.data_i_o
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET data_invio_ad_aom =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '1'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '5'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese
|
||||
AND ( xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>3%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>7%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>8%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>9%'
|
||||
))
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET data_validazione =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '2'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT causale_accodamento
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 5)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT gr.codicerifiutovalidazione
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 7)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_delta dw
|
||||
SET data_espletamento_donating =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = dw.aom_donor
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_DELTA_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,105 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_online.id_richiesta%TYPE;
|
||||
app_stato dwh.mnp_dw_rec_hoc_online.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato
|
||||
FROM dwh.mnp_dw_rec_hoc_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
-- Aggiornamento della data di transizione di stato
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT MAX (sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET data_invio_ad_aom =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '1'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '5'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND ( xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>3%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>7%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>8%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>9%'
|
||||
))
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET data_validazione =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '2'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT causale_accodamento
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 5)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT gr.codicerifiutovalidazione
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 7)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_online dw
|
||||
SET data_espletamento_donating =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = dw.aom_donor
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_online_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,62 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom),
|
||||
stato
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr,
|
||||
dwh.mnp_dw_rec_in_richiesta dim
|
||||
WHERE gr.id_richiesta = dim.id_richiesta
|
||||
AND gr.richiestaadhoc = '1'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta > =
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_hoc_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_hoc_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_hoc_tp_online (errore);
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_rec_hoc_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_ONLINE ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,62 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_hoc_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom)
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr, dwh.mnp_dw_rec_in_msisdn dim
|
||||
WHERE gr.msisdn = dim.msisdn
|
||||
AND gr.richiestaadhoc = '1'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta > =
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_hoc_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_hoc_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_hoc_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_hoc_tp_online (errore);
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_rec_hoc_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in update_rec_hoc_online_msisdn'
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,62 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_TERZE_PARTI (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_tp_delta.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.mnp_dw_rec_hoc_tp_delta.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_hoc_tp_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_tp_delta dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte
|
||||
AND trunc(xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_tp_delta dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
AND trunc(xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_TERZE_PARTI ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_HOC_TP_ONLINE (
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_tp_online.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.mnp_dw_rec_hoc_tp_online.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_hoc_tp_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_tp_online dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_hoc_tp_online dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%')
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_HOC_TP_ONLINE ' || SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,104 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_online.id_richiesta%TYPE;
|
||||
app_stato dwh.mnp_dw_rec_online.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, stato
|
||||
FROM dwh.mnp_dw_rec_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT MAX (sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET data_invio_ad_aom =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '1'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET data_presa_in_carico =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '5'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND ( xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>3%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>7%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>8%'
|
||||
OR xri.richiestaxml LIKE
|
||||
'%<STATO_RICHIESTA_NOTIFICA>9%'
|
||||
))
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET data_validazione =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '2'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT causale_accodamento
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 5)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET causale_rifiuto =
|
||||
(SELECT gr.codicerifiutovalidazione
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta = app_id_richiesta AND gr.stato = 7)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_online dw
|
||||
SET data_espletamento_donating =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = dw.aom_donor
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%')
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_DONLINE_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,61 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom),
|
||||
stato
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.id_richiesta in (select dim.id_richiesta from dwh.mnp_dw_rec_in_richiesta dim)
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tp_online (errore);
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_recipient_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_ONLINE ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,61 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_aom, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
TRUNC (gr.data_validazione_max), TRUNC (gr.data_cut_over_aom),
|
||||
stato
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.msisdn in (select dim.msisdn from dwh.mnp_dw_rec_in_msisdn dim)
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating <> 'TIMT'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1 AND o.desc_olo <> dwt.aom_donor;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tp_online (errore);
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_recipient_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_ONLINE_MSISDN ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,114 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_DELTA (
|
||||
mese_in IN NUMBER,
|
||||
anno_in IN NUMBER,
|
||||
cod_errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
primo_giorno_mese DATE;
|
||||
-- Primo giorno lavorativo del mese di riferiemnto
|
||||
ultimo_giorno_mese DATE;
|
||||
-- Ultimo giorno lavorativo del mese di riferiemnto
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_dw_donor_delta
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 16/08/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
|
||||
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_delta
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_calc)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
gr.data_validazione_max, TRUNC (gr.data_cut_over_calc)
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr
|
||||
WHERE gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating = 'TIMT'
|
||||
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
|
||||
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
|
||||
AND ( gr.data_fine_processo IS NULL
|
||||
OR (gr.data_fine_processo >= primo_giorno_mese)
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_tp_delta;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_tp_delta
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_tacs_delta dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_tacs_delta_2 (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tacs_terze_parti (ultimo_giorno_mese, errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
MERGE INTO dwh.mnp_dw_rec_tacs t
|
||||
USING dwh.mnp_dw_rec_tacs_delta s
|
||||
ON (t.id_richiesta = s.id_richiesta)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.aom_donor = s.aom_donor, t.msisdn = s.msisdn,
|
||||
t.tipo_linea = s.tipo_linea,
|
||||
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
|
||||
t.data_validazione_max = s.data_validazione_max,
|
||||
t.data_cut_over_calc = s.data_cut_over_calc,
|
||||
t.stato = s.stato,
|
||||
t.data_stato_finale = s.data_stato_finale
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_calc, stato, data_stato_finale)
|
||||
VALUES (s.id_richiesta, s.aom_donor, s.msisdn, s.tipo_linea,
|
||||
s.data_ricezione_richiesta, s.data_validazione_max,
|
||||
s.data_cut_over_calc, s.stato, s.data_stato_finale);
|
||||
COMMIT;
|
||||
MERGE INTO dwh.mnp_dw_rec_tacs_terzeparti t
|
||||
USING dwh.mnp_dw_rec_tacs_tp_delta s
|
||||
ON ( t.id_richiesta = s.id_richiesta
|
||||
AND t.aom_terze_parti = s.aom_terze_parti)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET t.data_configurazione_teorica =
|
||||
s.data_configurazione_teorica,
|
||||
t.data_configurazione_effettiva =
|
||||
s.data_configurazione_effettiva
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (id_richiesta, aom_terze_parti,
|
||||
data_configurazione_teorica,
|
||||
data_configurazione_effettiva)
|
||||
VALUES (s.id_richiesta, s.aom_terze_parti,
|
||||
s.data_configurazione_teorica,
|
||||
s.data_configurazione_effettiva);
|
||||
COMMIT;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
cod_errore := 1;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_DELTA ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,47 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_DELTA_2 (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_tacs_delta.id_richiesta%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta
|
||||
FROM dwh.mnp_dw_rec_tacs_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_delta dw
|
||||
SET (dw.stato, dw.data_stato_finale) =
|
||||
(SELECT stato_a, data_i_o
|
||||
FROM (SELECT sr.stato_a, sr.data_i_o
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.data_lavorazione <= ultimo_giorno_mese
|
||||
ORDER BY sr.data_i_o DESC)
|
||||
WHERE ROWNUM = 1)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_DELTA_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,42 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_ONLINE_2 (errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_tacs_online.id_richiesta%TYPE;
|
||||
app_stato dwh.mnp_dw_rec_tacs_online.stato%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta,stato
|
||||
FROM dwh.mnp_dw_rec_tacs_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_stato;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_online dw
|
||||
SET (dw.data_stato_finale) =
|
||||
(SELECT MAX (sr.data_lavorazione)
|
||||
FROM mnp.mnp_storico_richiesta_rec sr
|
||||
WHERE sr.id_richiesta = app_id_richiesta
|
||||
AND sr.stato_a = app_stato)
|
||||
WHERE dw.id_richiesta = app_id_richiesta;
|
||||
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_ONLINE_2 ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_ONLINE_ID (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_rec_tacs_online
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_calc, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
gr.data_validazione_max, TRUNC (gr.data_cut_over_calc), stato
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr,
|
||||
dwh.mnp_dw_rec_in_richiesta dim
|
||||
WHERE gr.id_richiesta = dim.id_richiesta
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating = 'TIMT'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_tacs_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_tacs_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tacs_tp_online (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_rec_tacs_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_online_id ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,59 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_ONLINE_MSISDN (cod_errore IN OUT NUMBER)
|
||||
IS
|
||||
errore NUMBER (1) := 0;
|
||||
-- Purpose: Aggiornamento al mese di riferimento della tabella mnp_rec_tacs_online
|
||||
--
|
||||
-- MODIFICATION HISTORY
|
||||
-- Person Date Comments
|
||||
-- L.Marcucci 12/10/2004 -------------------------------------------
|
||||
BEGIN
|
||||
cod_errore := 0;
|
||||
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_tp_online;
|
||||
DELETE FROM dwh.mnp_dw_rec_tacs_online;
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_online
|
||||
(id_richiesta, aom_donor, msisdn, tipo_linea,
|
||||
data_ricezione_richiesta, data_validazione_max,
|
||||
data_cut_over_calc, stato)
|
||||
SELECT gr.id_richiesta, gr.codice_operatore_donating, gr.msisdn,
|
||||
gr.tipo_cliente, gr.dataricezionerichiesta,
|
||||
gr.data_validazione_max, TRUNC (gr.data_cut_over_calc), stato
|
||||
FROM mnp.mnp_gestione_richiesta_rec gr, dwh.mnp_dw_rec_in_msisdn dim
|
||||
WHERE gr.msisdn = dim.msisdn
|
||||
AND gr.richiestaadhoc = '0'
|
||||
AND gr.codice_operatore_donating = 'TIMT'
|
||||
AND gr.dataricezionerichiesta >=
|
||||
TO_DATE ('26-APR-2004', 'dd-MON-YYYY');
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
||||
INSERT INTO dwh.mnp_dw_rec_tacs_tp_online
|
||||
(id_richiesta, aom_terze_parti)
|
||||
SELECT dwt.id_richiesta, o.desc_olo
|
||||
FROM dwh.mnp_dw_rec_tacs_online dwt, mnp.mnp_olo o
|
||||
WHERE o.flag_terze_parti = 1;
|
||||
|
||||
COMMIT;
|
||||
dwh.update_rec_tacs_online_2 (errore);
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.update_rec_tacs_tp_online (errore);
|
||||
END IF;
|
||||
|
||||
IF errore = 0
|
||||
THEN
|
||||
dwh.calcola_sla_rec_tacs_online (errore);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
cod_errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_online_id ' || SQLERRM);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,63 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_TERZE_PARTI (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_hoc_tp_delta.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.mnp_dw_rec_hoc_tp_delta.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_tacs_tp_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_tp_delta dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_tp_delta dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_TERZE_PARTI '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,62 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TACS_TP_ONLINE (
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.MNP_DW_REC_TACS_TP_ONLINE.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.MNP_DW_REC_TACS_TP_ONLINE.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_tacs_tp_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_tp_online dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (xo.data_invio)
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte
|
||||
)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tacs_tp_online dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (xi.data_eff)
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%')
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TACS_TP_ONLINE '
|
||||
|| SQLERRM
|
||||
);
|
||||
RETURN;
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TERZE_PARTI (
|
||||
ultimo_giorno_mese IN DATE,
|
||||
errore IN OUT NUMBER
|
||||
)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_terzeparti_delta.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.mnp_dw_rec_terzeparti_delta.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_terzeparti_delta;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_terzeparti_delta dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte
|
||||
AND TRUNC (xo.data_invio) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_terzeparti_delta dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%'
|
||||
AND TRUNC (xi.data_eff) <= ultimo_giorno_mese)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TERZE_PARTI ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
@@ -0,0 +1,56 @@
|
||||
CREATE OR REPLACE PROCEDURE UPDATE_REC_TP_ONLINE (errore IN OUT NUMBER)
|
||||
IS
|
||||
app_id_richiesta dwh.mnp_dw_rec_tp_online.id_richiesta%TYPE;
|
||||
app_terza_parte dwh.mnp_dw_rec_tp_online.aom_terze_parti%TYPE;
|
||||
|
||||
-- Cursore per le richieste di cui calcolare gli SLA
|
||||
CURSOR cur_richiesta
|
||||
IS
|
||||
SELECT id_richiesta, aom_terze_parti
|
||||
FROM dwh.mnp_dw_rec_tp_online;
|
||||
BEGIN
|
||||
errore := 0;
|
||||
|
||||
OPEN cur_richiesta;
|
||||
|
||||
-- Per ogni richiesta aggiorno lo stato e la data di transizione
|
||||
LOOP
|
||||
FETCH cur_richiesta
|
||||
INTO app_id_richiesta, app_terza_parte;
|
||||
|
||||
EXIT WHEN cur_richiesta%NOTFOUND;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tp_online dw
|
||||
SET data_configurazione_teorica =
|
||||
(SELECT MIN (TRUNC (xo.data_invio))
|
||||
FROM mnp.mnp_xml_out xo, mnp.mnp_xml_richiesta_out xro
|
||||
WHERE xo.tipo_file = '3'
|
||||
AND xo.da_inviare IN (0, 2)
|
||||
AND xo.nome_file = xro.nome_file
|
||||
AND xro.id_richiesta = app_id_richiesta
|
||||
AND xo.destinatario = app_terza_parte)
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
|
||||
UPDATE dwh.mnp_dw_rec_tp_online dw
|
||||
SET data_configurazione_effettiva =
|
||||
(SELECT MIN (TRUNC (xi.data_eff))
|
||||
FROM mnp.mnp_xml_in xi, mnp.mnp_xml_richiesta_in xri
|
||||
WHERE xi.tipo_file = '6'
|
||||
AND xi.nome_file = xri.nome_file
|
||||
AND xri.id_richiesta = app_id_richiesta
|
||||
AND xi.mittente = app_terza_parte
|
||||
AND xri.richiestaxml LIKE '%<STATO_RICHIESTA_NOTIFICA>4%')
|
||||
WHERE dw.id_richiesta = app_id_richiesta
|
||||
AND dw.aom_terze_parti = app_terza_parte;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_richiesta;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
errore := 1;
|
||||
DBMS_OUTPUT.put_line ('Errore in UPDATE_REC_TP_ONLINE ' || SQLERRM);
|
||||
RETURN;
|
||||
END; -- Procedure
|
||||
/
|
||||
48
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/FUNC_TROVA_MESE.sql
Normal file
48
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/FUNC_TROVA_MESE.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
CREATE OR REPLACE
|
||||
FUNCTION fun_trova_mese (mese_in IN varchar2)
|
||||
RETURN varchar2
|
||||
-- Aggiunge a data_in un numero giorni di giorni lavorativi
|
||||
IS
|
||||
mese varchar2(3) := NULL;
|
||||
|
||||
BEGIN
|
||||
|
||||
if(mese_in = '01') then
|
||||
mese := 'jan';
|
||||
elsif(mese_in = '02') then
|
||||
mese := 'feb';
|
||||
elsif(mese_in = '03') then
|
||||
mese := 'mar';
|
||||
elsif(mese_in = '04') then
|
||||
mese := 'apr';
|
||||
elsif(mese_in = '05') then
|
||||
mese := 'may';
|
||||
elsif(mese_in = '06') then
|
||||
mese := 'jun';
|
||||
elsif(mese_in = '07') then
|
||||
mese := 'jul';
|
||||
elsif(mese_in = '08') then
|
||||
mese := 'aug';
|
||||
elsif(mese_in = '09') then
|
||||
mese := 'sep';
|
||||
elsif(mese_in = '10') then
|
||||
mese := 'oct';
|
||||
elsif(mese_in = '11') then
|
||||
mese := 'nov';
|
||||
elsif(mese_in = '12') then
|
||||
mese := 'dec';
|
||||
end if;
|
||||
|
||||
RETURN mese;
|
||||
|
||||
END FUN_TROVA_MESE;
|
||||
/
|
||||
|
||||
-- Grants for Function
|
||||
GRANT EXECUTE ON fun_trova_mese TO public
|
||||
/
|
||||
|
||||
|
||||
-- End of DDL Script for Function DWH.FUN_TROVA_MESE
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
CREATE OR REPLACE FUNCTION "FUN_CALCOLA_DATA"
|
||||
( nome_file IN VARCHAR2
|
||||
, orario_chiusura 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) || orario_chiusura, '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;
|
||||
/
|
||||
@@ -0,0 +1,43 @@
|
||||
CREATE OR REPLACE FUNCTION "FUN_CALCOLA_DATA_RIC"
|
||||
(
|
||||
data_default IN DATE,
|
||||
orario IN VARCHAR2
|
||||
) RETURN DATE AS
|
||||
|
||||
chiusura_finestra DATE;
|
||||
datanew DATE;
|
||||
|
||||
BEGIN
|
||||
|
||||
-- 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;
|
||||
/
|
||||
@@ -0,0 +1,19 @@
|
||||
CREATE OR REPLACE FUNCTION F_ESTRAI_IMPORTO_SLA(P_ID_OPERATORE mnp.MNP_ANAGRAFICA_OPERATORI.ID_OPERATORE%type, P_SLA VARCHAR2)
|
||||
RETURN NUMBER IS
|
||||
v_importo number;
|
||||
BEGIN
|
||||
|
||||
select importo
|
||||
into v_importo
|
||||
from mnp.mnp_importi_sla_operatore
|
||||
where id_operatore = P_ID_OPERATORE
|
||||
and sla = replace(P_SLA,' ');
|
||||
|
||||
return v_importo;
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
|
||||
return -1;
|
||||
|
||||
end F_ESTRAI_IMPORTO_SLA;
|
||||
/
|
||||
@@ -0,0 +1,347 @@
|
||||
spool compila.log
|
||||
set echo on
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_DATE_FESTIVE.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_DATE_FESTIVE_SUCC.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_GIORNI_LAVORATIVI.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_GIORNI_MENO.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_GIORNI_PIU.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_MENO_ORE_LAVORATIVE.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_ORE_LAVORATIVE.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_PIU_ORE_LAVORATIVE.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_PRIMO_GIORNO_LAVORATIVO.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.FUN_ULTIMO_GIORNO_LAVORATIVO.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_TERZEPARTI.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_DONOR.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_DONOR_HOC.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_RECIPIENT.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_RECIPIENT_HOC.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_RECIPIENT_TACS.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_HOC_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_PORTING_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_DELTA_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_TERZE_PARTI.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TERZE_PARTI.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_TERZE_PARTI.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_HOC_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_PORTING_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_DELTA.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_DONOR_HOC_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_DONOR_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_RECIPIENT_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_REC_HOC_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_REC_TACS_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CALCOLA_SLA_TP_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CAL_SLA_ANALITICO_DONOR_3PARTI.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.CAL_SLA_ANALITICO_RECIPIENT.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_HOC_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_PORTING_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_ONLINE_2.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_TP_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TP_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_TP_ONLINE.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_TACS_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_REC_HOC_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_PORTING_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_PORTING_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_HOC_ONLINE_ID.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_HOC_ONLINE_MSISDN.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.SLA_DONOR_3PARTI_ON_DEMAND.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.SLA_RECIPIENT_ON_DEMAND.prc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.DONOR_PORTING_ONLINE_ID.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.DONOR_PORTING_ONLINE_MSISDN.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.RECIPIENT_ONLINE_ID.fnc
|
||||
show err
|
||||
|
||||
@/mnpapp/script/procedure/dwh/DWH.RECIPIENT_ONLINE_MSISDN.fnc
|
||||
show err
|
||||
|
||||
|
||||
grant all on DWH.MNP_DW_DONOR to MNP;
|
||||
grant all on DWH.MNP_DW_DONOR_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_DONOR_HOC to MNP;
|
||||
grant all on DWH.MNP_DW_DONOR_HOC_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_DONOR_HOC_SLA to MNP;
|
||||
grant all on DWH.MNP_DW_DONOR_SLA to MNP;
|
||||
grant all on DWH.MNP_DW_PORTING to MNP;
|
||||
grant all on DWH.MNP_DW_PORTING_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_PORTING_SLA to MNP;
|
||||
grant all on DWH.MNP_DW_REC to MNP;
|
||||
grant all on DWH.MNP_DW_REC_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC_SLA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC_SLA_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_HOC_TP_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_SLA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_SLA_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TACS to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TACS_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TACS_SLA_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TACS_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TACS_TP_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TERZEPARTI to MNP;
|
||||
grant all on DWH.MNP_DW_REC_TERZEPARTI_DELTA to MNP;
|
||||
grant all on DWH.MNP_DW_REPORT_SLA to MNP;
|
||||
|
||||
grant all on DWH.CALCOLA_SLA_DONOR_HOC_ONLINE to MNP;
|
||||
grant all on DWH.CALCOLA_SLA_DONOR_ONLINE to MNP;
|
||||
grant all on DWH.CALCOLA_SLA_RECIPIENT_ONLINE to MNP;
|
||||
grant all on DWH.CALCOLA_SLA_REC_HOC_ONLINE to MNP;
|
||||
grant all on DWH.CALCOLA_SLA_REC_TACS_ONLINE to MNP;
|
||||
grant all on DWH.CALCOLA_SLA_TP_ONLINE to MNP;
|
||||
grant all on DWH.CAL_SLA_ANALITICO_DONOR_3PARTI to MNP;
|
||||
grant all on DWH.CAL_SLA_ANALITICO_RECIPIENT to MNP;
|
||||
grant all on DWH.DONOR_PORTING_ONLINE_ID to MNP;
|
||||
grant all on DWH.DONOR_PORTING_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.RECIPIENT_ONLINE_ID to MNP;
|
||||
grant all on DWH.RECIPIENT_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.SLA_DONOR_3PARTI_ON_DEMAND to MNP;
|
||||
grant all on DWH.SLA_RECIPIENT_ON_DEMAND to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_HOC_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_HOC_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_HOC_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_DONOR_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_PORTING_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_PORTING_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_PORTING_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_REC_HOC_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_REC_HOC_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_REC_HOC_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_REC_HOC_TP_ONLINE to MNP;
|
||||
grant all on DWH.UPDATE_REC_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_REC_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_REC_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_REC_TACS_ONLINE_2 to MNP;
|
||||
grant all on DWH.UPDATE_REC_TACS_ONLINE_ID to MNP;
|
||||
grant all on DWH.UPDATE_REC_TACS_ONLINE_MSISDN to MNP;
|
||||
grant all on DWH.UPDATE_REC_TACS_TP_ONLINE to MNP;
|
||||
grant all on DWH.UPDATE_REC_TP_ONLINE to MNP;
|
||||
|
||||
|
||||
|
||||
grant execute on DWH.CALCOLA_SLA_DONOR to public;
|
||||
grant execute on DWH.CALCOLA_SLA_DONOR_HOC to public;
|
||||
grant execute on DWH.CALCOLA_SLA_RECIPIENT to public;
|
||||
grant execute on DWH.CALCOLA_SLA_RECIPIENT_HOC to public;
|
||||
grant execute on DWH.CALCOLA_SLA_RECIPIENT_TACS to public;
|
||||
grant execute on DWH.CALCOLA_SLA_TERZEPARTI to public;
|
||||
grant execute on DWH.FUN_DATE_FESTIVE to public;
|
||||
grant execute on DWH.FUN_DATE_FESTIVE_SUCC to public;
|
||||
grant execute on DWH.FUN_GIORNI_LAVORATIVI to public;
|
||||
grant execute on DWH.FUN_GIORNI_MENO to public;
|
||||
grant execute on DWH.FUN_GIORNI_PIU to public;
|
||||
grant execute on DWH.FUN_MENO_ORE_LAVORATIVE to public;
|
||||
grant execute on DWH.FUN_ORE_LAVORATIVE to public;
|
||||
grant execute on DWH.FUN_PIU_ORE_LAVORATIVE to public;
|
||||
grant execute on DWH.FUN_PRIMO_GIORNO_LAVORATIVO to public;
|
||||
grant execute on DWH.FUN_ULTIMO_GIORNO_LAVORATIVO to public;
|
||||
grant execute on DWH.UPDATE_DONOR_DELTA to public;
|
||||
grant execute on DWH.UPDATE_DONOR_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_DONOR_HOC_DELTA to public;
|
||||
grant execute on DWH.UPDATE_DONOR_HOC_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_PORTING_DELTA to public;
|
||||
grant execute on DWH.UPDATE_PORTING_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_DELTA to public;
|
||||
grant execute on DWH.UPDATE_REC_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_DELTA to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_TERZE_PARTI to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_DELTA to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_DELTA_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_TERZE_PARTI to public;
|
||||
grant execute on DWH.UPDATE_REC_TERZE_PARTI to public;
|
||||
|
||||
grant execute on DWH.CALCOLA_SLA_DONOR_HOC_ONLINE to public;
|
||||
grant execute on DWH.CALCOLA_SLA_DONOR_ONLINE to public;
|
||||
grant execute on DWH.CALCOLA_SLA_RECIPIENT_ONLINE to public;
|
||||
grant execute on DWH.CALCOLA_SLA_REC_HOC_ONLINE to public;
|
||||
grant execute on DWH.CALCOLA_SLA_REC_TACS_ONLINE to public;
|
||||
grant execute on DWH.CALCOLA_SLA_TP_ONLINE to public;
|
||||
grant execute on DWH.CAL_SLA_ANALITICO_DONOR_3PARTI to public;
|
||||
grant execute on DWH.CAL_SLA_ANALITICO_RECIPIENT to public;
|
||||
grant execute on DWH.DONOR_PORTING_ONLINE_ID to public;
|
||||
grant execute on DWH.DONOR_PORTING_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.RECIPIENT_ONLINE_ID to public;
|
||||
grant execute on DWH.RECIPIENT_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.SLA_DONOR_3PARTI_ON_DEMAND to public;
|
||||
grant execute on DWH.SLA_RECIPIENT_ON_DEMAND to public;
|
||||
grant execute on DWH.UPDATE_DONOR_HOC_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_DONOR_HOC_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_DONOR_HOC_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_DONOR_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_DONOR_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_DONOR_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_PORTING_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_PORTING_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_PORTING_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_REC_HOC_TP_ONLINE to public;
|
||||
grant execute on DWH.UPDATE_REC_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_REC_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_ONLINE_2 to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_ONLINE_ID to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_ONLINE_MSISDN to public;
|
||||
grant execute on DWH.UPDATE_REC_TACS_TP_ONLINE to public;
|
||||
grant execute on DWH.UPDATE_REC_TP_ONLINE to public;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
spool off
|
||||
|
||||
exit
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
CREATE OR REPLACE
|
||||
PROCEDURE carica_mnp_dwh_xml_in
|
||||
(data_inizio IN varchar2,
|
||||
data_fine IN varchar2,
|
||||
path_file_log in varchar2)
|
||||
IS
|
||||
|
||||
sql_msg varchar2(1000);
|
||||
sql_code integer;
|
||||
num_rec_old number;
|
||||
num_rec number;
|
||||
puntatore_file_log SYS.UTL_FILE.FILE_TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
puntatore_file_log := UTL_FILE.FOPEN(path_file_log,'CARICA_MNP_DWH_XML_IN'||'_'||to_char(sysdate, 'ddmmyyyy_hh24miss')||'.log','w');
|
||||
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Inizio Procedura CARICA_MNP_DWH_XML_IN '||to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
|
||||
|
||||
delete from mnp_dwh_xml_in where trunc(to_date(substr(nome_file,11,2)||'-'||fun_trova_mese(substr(nome_file,9,2))||'-'||substr(nome_file,5,4))) < trunc(sysdate - 386);
|
||||
commit;
|
||||
|
||||
select count(*) into num_rec_old from mnp_dwh_xml_in;
|
||||
|
||||
INSERT INTO mnp_dwh_xml_in
|
||||
SELECT /*+ leading (x) full(x) parallel(x 4) use_nl(x xr)*/
|
||||
distinct xr.id_richiesta, x.nome_file, tipo_file
|
||||
FROM mnp.mnp_xml_in x, mnp.mnp_xml_richiesta_in xr
|
||||
WHERE xr.nome_file = x.nome_file AND tipo_file IN (6, 11, 12)
|
||||
and trunc(x.data_eff) >= trunc(to_date(data_inizio))
|
||||
and trunc(x.data_eff) <= trunc(to_date(data_fine));
|
||||
|
||||
commit;
|
||||
|
||||
select count(*) - num_rec_old into num_rec from mnp_dwh_xml_in;
|
||||
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Caricamento tabella MNP_DWH_XML_IN effettuato con '||num_rec||' record.');
|
||||
sql_msg := sqlerrm;
|
||||
sql_code := sqlcode;
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Fine Procedura CARICA_MNP_DWH_XML_IN '||to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' sqlmsg: '||sql_msg||' - sqlcode: '||sql_code);
|
||||
|
||||
SYS.UTL_FILE.FCLOSE(puntatore_file_log);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
|
||||
sql_msg := sqlerrm;
|
||||
sql_code := sqlcode;
|
||||
ROLLBACK;
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Procedura CARICA_MNP_DWH_XML_IN terminata con errore '||to_char(sysdate, 'dd/mm/yyyy_hh24:mi:ss')||' sqlmsg: '||sql_msg||' - sqlcode: '||sql_code);
|
||||
SYS.UTL_FILE.FCLOSE(puntatore_file_log);
|
||||
END; -- Procedure
|
||||
/
|
||||
|
||||
|
||||
-- End of DDL Script for Procedure DWH.CARICA_MNP_DWH_XML_IN
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
CREATE OR REPLACE PROCEDURE carica_mnp_dw_xml_in_out
|
||||
( data_inizio IN varchar2,
|
||||
data_fine IN varchar2,
|
||||
path_file_log in varchar2)
|
||||
IS
|
||||
|
||||
sql_msg varchar2(1000);
|
||||
sql_code integer;
|
||||
puntatore_file_log SYS.UTL_FILE.FILE_TYPE;
|
||||
CONT_INS NUMBER := 0;
|
||||
|
||||
CURSOR CUR_INS
|
||||
IS
|
||||
|
||||
SELECT
|
||||
b.id_richiesta id_richiesta,
|
||||
dwh.fun_extract_msisdn (b.richiestaxml) msisdn, 'XML' tipo_file,
|
||||
dwh.fun_tipo_notifica_id2desc (a.tipo_file) tipo_notifica,
|
||||
a.nome_file nome_file, 'Ricevuto' direzione, a.data_eff DATA,
|
||||
TO_CHAR (a.data_eff, 'dd/mm/yyyy HH24:mi:ss') data_show,
|
||||
a.destinatario destinatario, a.mittente mittente,
|
||||
a.canale_alternativo canale_alternativo, d.tipo_processo tipo_processo,
|
||||
a.nome_file nome_file_xml, NVL(c.nome_file,'-') nome_file_ack, 0 ord2
|
||||
FROM mnp.mnp_xml_richiesta_in b,
|
||||
mnp.mnp_xml_ack_out c,
|
||||
mnp.mnp_xml_in a,
|
||||
mnp.mnp_xml_out d
|
||||
WHERE a.nome_file = b.nome_file AND b.nome_file = c.nome_file_riferito(+)
|
||||
AND c.nome_file = d.nome_file(+)
|
||||
AND a.data_eff >= to_date(data_inizio,'dd-mon-yyyy')
|
||||
AND a.data_eff < to_date(data_fine,'dd-mon-yyyy')+1
|
||||
UNION
|
||||
SELECT
|
||||
b.id_richiesta id_richiesta,
|
||||
dwh.fun_extract_msisdn (b.richiestaxml) msisdn, 'ACK' tipo_file,
|
||||
dwh.fun_tipo_notifica_id2desc (d.tipo_file) tipo_notifica,
|
||||
d.nome_file nome_file, 'Ricevuto' direzione, d.data_eff DATA,
|
||||
TO_CHAR (d.data_eff, 'dd/mm/yyyy HH24:mi:ss') data_show,
|
||||
d.destinatario destinatario, d.mittente mittente,
|
||||
d.canale_alternativo canale_alternativo, a.tipo_processo tipo_processo,
|
||||
b.nome_file nome_file_xml, c.nome_file nome_file_ack, 1 ord2
|
||||
FROM mnp.mnp_xml_richiesta_out b,
|
||||
mnp.mnp_xml_ack_in c,
|
||||
mnp.mnp_xml_out a,
|
||||
mnp.mnp_xml_in d
|
||||
WHERE a.nome_file = b.nome_file
|
||||
AND b.nome_file = c.nome_file_riferito
|
||||
AND c.nome_file = d.nome_file
|
||||
AND d.data_eff >= to_date(data_inizio,'dd-mon-yyyy')
|
||||
AND d.data_eff < to_date(data_fine,'dd-mon-yyyy')+1
|
||||
UNION
|
||||
SELECT
|
||||
b.id_richiesta id_richiesta,
|
||||
dwh.fun_extract_msisdn (b.richiestaxml) msisdn, 'ACK' tipo_file,
|
||||
dwh.fun_tipo_notifica_id2desc (d.tipo_file) tipo_notifica,
|
||||
d.nome_file nome_file, 'Inviato' direzione, d.data_ultimo_invio DATA,
|
||||
TO_CHAR (d.data_ultimo_invio, 'dd/mm/yyyy HH24:mi:ss') data_show,
|
||||
d.destinatario destinatario, d.mittente mittente,
|
||||
d.canale_alternativo canale_alternativo, d.tipo_processo tipo_processo,
|
||||
b.nome_file nome_file_rif, d.nome_file nome_file_ack, 1 ord2
|
||||
FROM mnp.mnp_xml_richiesta_in b,
|
||||
mnp.mnp_xml_ack_out c,
|
||||
mnp.mnp_xml_out d
|
||||
WHERE b.nome_file = c.nome_file_riferito
|
||||
AND c.nome_file = d.nome_file
|
||||
AND d.data_ultimo_invio >= to_date(data_inizio,'dd-mon-yyyy')
|
||||
AND d.data_ultimo_invio < to_date(data_fine,'dd-mon-yyyy')+1
|
||||
UNION
|
||||
SELECT
|
||||
b.id_richiesta id_richiesta,
|
||||
dwh.fun_extract_msisdn (b.richiestaxml) msisdn, 'XML' tipo_file,
|
||||
dwh.fun_tipo_notifica_id2desc (a.tipo_file) tipo_notifica,
|
||||
a.nome_file nome_file, 'Inviato' direzione, a.data_ultimo_invio DATA,
|
||||
TO_CHAR (a.data_ultimo_invio, 'dd/mm/yyyy HH24:mi:ss') data_show,
|
||||
a.destinatario destinatario, a.mittente mittente,
|
||||
a.canale_alternativo canale_alternativo, a.tipo_processo tipo_processo,
|
||||
a.nome_file nome_file_xml, NVL(c.nome_file,'-') nome_file_ack, 0 ord2
|
||||
FROM mnp.mnp_xml_richiesta_out b,
|
||||
mnp.mnp_xml_ack_in c,
|
||||
mnp.mnp_xml_out a
|
||||
WHERE a.nome_file = b.nome_file
|
||||
AND b.nome_file = c.nome_file_riferito(+)
|
||||
AND a.data_ultimo_invio >= to_date(data_inizio,'dd-mon-yyyy')
|
||||
AND a.data_ultimo_invio < to_date(data_fine,'dd-mon-yyyy')+1;
|
||||
|
||||
BEGIN
|
||||
|
||||
puntatore_file_log := UTL_FILE.FOPEN(path_file_log,'CARICA_MNP_DW_XML_IN_OUT'||'_'||to_char(sysdate, 'ddmmyyyy_hh24miss')||'.log','w');
|
||||
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Inizio Procedura CARICA_MNP_DW_XML_IN_OUT '||to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
|
||||
|
||||
delete from MNP_DW_XML_IN_OUT where data < sysdate-386;
|
||||
commit;
|
||||
|
||||
--select count(*) into num_rec_old from mnp_dw_xml_in_out;
|
||||
|
||||
FOR C_I IN CUR_INS LOOP
|
||||
|
||||
BEGIN
|
||||
INSERT INTO mnp_dw_xml_in_out
|
||||
(
|
||||
ID_RICHIESTA,
|
||||
MSISDN,
|
||||
TIPO_FILE,
|
||||
TIPO_NOTIFICA,
|
||||
NOME_FILE,
|
||||
DIREZIONE,
|
||||
DATA,
|
||||
DATA_SHOW,
|
||||
DESTINATARIO,
|
||||
MITTENTE,
|
||||
CANALE_ALTERNATIVO,
|
||||
TIPO_PROCESSO,
|
||||
NOME_FILE_XML,
|
||||
NOME_FILE_ACK,
|
||||
ORD2
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
C_I.id_richiesta,
|
||||
C_I.msisdn,
|
||||
C_I.tipo_file,
|
||||
C_I.tipo_notifica,
|
||||
C_I.nome_file,
|
||||
C_I.direzione,
|
||||
C_I.DATA,
|
||||
C_I.data_show,
|
||||
C_I.destinatario,
|
||||
C_I.mittente,
|
||||
C_I.canale_alternativo,
|
||||
C_I.Tipo_processo,
|
||||
C_I.nome_file_xml,
|
||||
C_I.nome_file_ack,
|
||||
C_I.ord2
|
||||
);
|
||||
|
||||
EXCEPTION
|
||||
WHEN DUP_VAL_ON_INDEX THEN
|
||||
-- SE STO INSERENDO LO STESSO FILE VERIFICO CHE SI TRATTA DI UN FILE INVIATO,
|
||||
-- IN QUESTO CASO AGGIORNO LA DATA DI INVIO NEL CASO SIA UN NUOVO TENTATIVO DI INVIO
|
||||
BEGIN
|
||||
IF C_I.direzione = 'Inviato' THEN
|
||||
UPDATE mnp_dw_xml_in_out
|
||||
SET DATA = C_I.DATA,
|
||||
DATA_SHOW = C_I.data_show
|
||||
WHERE NOME_FILE = C_I.nome_file
|
||||
AND ID_RICHIESTA = C_I.id_richiesta
|
||||
AND TIPO_FILE = C_I.tipo_file
|
||||
AND DIREZIONE = C_I.direzione
|
||||
AND NOME_FILE_ACK = C_I.nome_file_ack;
|
||||
|
||||
ELSE
|
||||
-- NEGLI ALTRI CASI SEGNALO L'ERRORE
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy_hh24:mi:ss')||' Errore nel caricamento del file ' || C_I.direzione ||
|
||||
' ' || C_I.nome_file || ' di tipo '|| C_I.tipo_file ||' ' ||sqlerrm);
|
||||
END IF;
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy_hh24:mi:ss')||' Errore nel caricamento del file ' || C_I.direzione ||
|
||||
' ' || C_I.nome_file || ' di tipo '|| C_I.tipo_file ||' ' ||sqlerrm);
|
||||
END;
|
||||
|
||||
WHEN OTHERS THEN
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy_hh24:mi:ss')||' Errore nel caricamento del file ' || C_I.direzione ||
|
||||
' ' || C_I.nome_file || ' di tipo '|| C_I.tipo_file ||' ' ||sqlerrm);
|
||||
END;
|
||||
|
||||
IF MOD(CONT_INS, 100000) = 0 THEN
|
||||
COMMIT;
|
||||
END IF;
|
||||
|
||||
CONT_INS := CONT_INS + 1;
|
||||
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
|
||||
--select count(*) - num_rec_old into num_rec from mnp_dw_xml_in_out;
|
||||
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Caricamento tabella MNP_DW_XML_IN_OUT effettuato con '||CONT_INS||' record.');
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Fine Procedura CARICA_MNP_DW_XML_IN_OUT '||to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss'));
|
||||
SYS.UTL_FILE.FCLOSE(puntatore_file_log);
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
sql_msg := sqlerrm;
|
||||
sql_code := sqlcode;
|
||||
ROLLBACK;
|
||||
SYS.UTL_FILE.PUT_LINE(puntatore_file_log, 'Procedura CARICA_MNP_DW_XML_IN_OUT terminata con errore '||to_char(sysdate, 'dd/mm/yyyy_hh24:mi:ss')||' sqlmsg: '||sql_msg||' - sqlcode: '||sql_code);
|
||||
SYS.UTL_FILE.FCLOSE(puntatore_file_log);
|
||||
|
||||
END; -- Procedure
|
||||
/
|
||||
|
||||
88
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/P_REPORT_KPI.sql
Normal file
88
dbcmnpsrc/FE/mnpapp/script/procedure/dwh/P_REPORT_KPI.sql
Normal file
@@ -0,0 +1,88 @@
|
||||
CREATE OR REPLACE PROCEDURE P_REPORT_KPI(P_DATA_DA DATE, P_DATA_A DATE) IS
|
||||
|
||||
v_mese_comp varchar2(10);
|
||||
v_rich_attese_controllo number;
|
||||
v_rich_attese_contrattuali number;
|
||||
v_rich_inviate_controllo number;
|
||||
v_perc_controllo number;
|
||||
v_rich_ricevute_contrattuali number;
|
||||
v_perc_contrattuali number;
|
||||
|
||||
BEGIN
|
||||
|
||||
BEGIN
|
||||
-- ESTRAZIONE DELLE INFORMAZIONI PER I KPI DI CONTROLLO
|
||||
SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC
|
||||
INTO v_mese_comp, v_rich_attese_controllo, v_rich_inviate_controllo, v_perc_controllo
|
||||
FROM
|
||||
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12
|
||||
FROM MNP.MNP_GESTIONE_RICHIESTA GR, MNP.MNP_XML_RICHIESTA_OUT MTI, MNP.MNP_XML_OUT XO
|
||||
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
|
||||
AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA
|
||||
AND MTI.NOME_FILE= XO.NOME_FILE
|
||||
AND XO.TIPO_FILE =6
|
||||
AND XO.DESTINATARIO <> 'NPTS'
|
||||
AND XO.DATA_INVIO <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI')
|
||||
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
|
||||
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
|
||||
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
|
||||
) A,
|
||||
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE
|
||||
FROM MNP_GESTIONE_RICHIESTA GR
|
||||
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
|
||||
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
|
||||
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
|
||||
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
|
||||
)B
|
||||
WHERE A.MESE_COMP = B.MESE_COMP;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY');
|
||||
v_rich_attese_controllo := 0;
|
||||
v_rich_inviate_controllo := 0;
|
||||
v_perc_controllo := 0;
|
||||
END;
|
||||
--
|
||||
|
||||
BEGIN
|
||||
-- ESTRAZIONE DELLE INFORMAZIONI PER I KPI CONTRATTUALI
|
||||
SELECT A.MESE_COMP,ATTESE,OK_ALLE_12, ROUND((OK_ALLE_12/ATTESE)*100,2) AS PERC
|
||||
INTO v_mese_comp, v_rich_attese_contrattuali, v_rich_ricevute_contrattuali, v_perc_contrattuali
|
||||
FROM
|
||||
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS OK_ALLE_12
|
||||
FROM MNP_GESTIONE_RICHIESTA GR,
|
||||
( select t.id_richiesta, min(t.data_ricezione) data_ricezione
|
||||
from mnp_mss_cessazione_in t
|
||||
group by id_richiesta) MTI
|
||||
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
|
||||
AND GR.ID_RICHIESTA =MTI.ID_RICHIESTA(+)
|
||||
AND GR.STATO IN (15, 16)
|
||||
AND MTI.DATA_RICEZIONE <= TO_DATE(TO_CHAR(DATA_CUT_OVER_CALC,'DD_MM_YYYY')||' 12:00','DD_MM_YYYY HH24:MI')
|
||||
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
|
||||
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
|
||||
) A,
|
||||
( SELECT TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY') AS MESE_COMP,COUNT(*) AS ATTESE
|
||||
FROM MNP_GESTIONE_RICHIESTA GR
|
||||
WHERE GR.DATA_CUT_OVER_CALC BETWEEN P_DATA_DA AND P_DATA_A
|
||||
AND GR.ABBONATO_PREPAGATO = 'PREPAGATO'
|
||||
AND GR.CODICE_CONTROLLO_VALIDAZIONE= 0
|
||||
GROUP BY TO_CHAR(DATA_CUT_OVER_CALC,'MM/YYYY')
|
||||
)B
|
||||
WHERE A.MESE_COMP = B.MESE_COMP;
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
v_mese_comp := TO_CHAR(P_DATA_DA,'MM/YYYY');
|
||||
v_rich_attese_contrattuali := 0;
|
||||
v_rich_ricevute_contrattuali := 0;
|
||||
v_perc_contrattuali := 0;
|
||||
END;
|
||||
|
||||
|
||||
-- INSERIMENTO DATI IN TABELLA
|
||||
INSERT INTO MNP_DW_REPORT_KPI (MESE_COMP, NUM_RICH_ATTESE_CONTROLLO, NUM_RICH_ATTESE_CONTRATTUALI, NUM_RICH_OK12_CONTROLLO,
|
||||
NUM_RICH_OK12_CONTRATTUALI, PERC_CONTROLLO, PERC_CONTRATTUALI, DATA_ESECUZIONE)
|
||||
VALUES (v_mese_comp, v_rich_attese_controllo, v_rich_attese_contrattuali, v_rich_inviate_controllo, v_rich_ricevute_contrattuali,
|
||||
v_perc_controllo, v_perc_contrattuali, SYSDATE);
|
||||
|
||||
COMMIT;
|
||||
|
||||
END P_REPORT_KPI;
|
||||
/
|
||||
@@ -0,0 +1,111 @@
|
||||
create or replace procedure P_REPORT_MONITORAGGIORECIPIENT(p_mese_comp varchar2) is
|
||||
-- parametro in ingresso nel formato mm/yyyy
|
||||
v_ora_inizio number;
|
||||
v_ora_fine number;
|
||||
begin
|
||||
-- estrazione fascia oraria per inserimento richiesta
|
||||
select to_number(replace(inizio,':')), to_number(replace(fine,':'))
|
||||
into v_ora_inizio, v_ora_fine
|
||||
from mnp.MNP_FASCIA_ORARIA_MONITOR_REC;
|
||||
|
||||
-- popolamento tabella
|
||||
insert into MNP_DW_REPORT_MONITORAGGIO_REC
|
||||
(mese_comp, tipo_giorno_inserimento, fascia_oraria_richiesta, fascia_oraria_invio, tipo_cliente, numero_richieste)
|
||||
select p_mese_comp, tipo_giorno, tipologia, tipologia_invio, tipo_cliente, count(*) from (
|
||||
select rep.*,
|
||||
case
|
||||
when to_char(DATA_RICHIESTA, 'HH24miss')<=v_ora_inizio then '1'
|
||||
when to_char(DATA_RICHIESTA, 'HH24miss')>v_ora_inizio and to_char(DATA_RICHIESTA, 'HH24miss')<= v_ora_fine then '2'
|
||||
when to_char(DATA_RICHIESTA, 'HH24miss')>v_ora_fine then '3'
|
||||
end tipologia,
|
||||
DECODE(DWH.FUN_GIORNI_LAVORATIVI(data_invio, data_richiesta), 0, 0, 1, 1, 2) tipologia_invio
|
||||
from (SELECT ric."ID_RICHIESTA" ID_RICHIESTA,
|
||||
NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE") DATA_RICHIESTA,
|
||||
ric."COD_OP_DON" COD_OP_DON,
|
||||
xml_out.data_invio data_invio,
|
||||
rich_rec.tipo_cliente tipo_cliente,
|
||||
d.tip_gio tipo_giorno
|
||||
FROM (SELECT msp.id_richiesta id_richiesta,
|
||||
msp.data_richiesta data_richiesta,
|
||||
msp.data_ricezione data_ricezione,
|
||||
msp.codice_operatore_donating cod_op_don
|
||||
FROM mnp.mnp_msp_in_rec msp
|
||||
WHERE msp.progetto_ad_hoc = 'N'
|
||||
UNION
|
||||
SELECT msc.id_richiesta id_richiesta,
|
||||
msc.data_richiesta data_richiesta,
|
||||
msc.data_ricezione data_ricezione,
|
||||
msc.codice_operatore_donating cod_op_don
|
||||
FROM mnp.mnp_msc_in_rec msc
|
||||
WHERE msc.progetto_ad_hoc = 'N'
|
||||
UNION
|
||||
SELECT bit.id_richiesta id_richiesta,
|
||||
NULL data_richiesta, -- DATA_RICHIESTA NON CONTENENTE ORE:MI:SS
|
||||
bit.data_ricezione_file data_ricezione,
|
||||
bit.donating_cod_op cod_op_don
|
||||
FROM mnp.mnp_bit_in_rec bit
|
||||
WHERE bit.progetto_ad_hoc IS null) ric,
|
||||
mnp.mnp_xml_out xml_out,
|
||||
mnp.mnp_xml_richiesta_out richieste_out,
|
||||
mnp.mnp_gestione_richiesta_rec rich_rec,
|
||||
MNP.S_DIM_TEMPO d
|
||||
WHERE xml_out.nome_file = richieste_out.nome_file
|
||||
AND xml_out.tipo_file = 1
|
||||
AND richieste_out.id_richiesta = ric.id_richiesta
|
||||
AND ric.id_richiesta = rich_rec.id_richiesta
|
||||
AND ric.cod_op_don IN
|
||||
( SELECT id_operatore
|
||||
FROM mnp.mnp_anagrafica_operatori
|
||||
WHERE tipo_operatore = 'RETE')
|
||||
AND d.data = trunc(NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE"))
|
||||
UNION -- Donor Virtuale
|
||||
SELECT ric."ID_RICHIESTA" ID_RICHIESTA,
|
||||
NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE") DATA_RICHIESTA,
|
||||
ric."COD_OP_DON" COD_OP_DON,
|
||||
not_don_out.data_invio data_invio,
|
||||
rich_don_virt.tipo_cliente tipo_cliente,
|
||||
d.tip_gio tipo_giorno
|
||||
FROM (SELECT msp.id_richiesta id_richiesta,
|
||||
msp.data_richiesta data_richiesta,
|
||||
msp.data_ricezione data_ricezione,
|
||||
msp.codice_operatore_donating cod_op_don
|
||||
FROM mnp.mnp_msp_in_rec msp
|
||||
WHERE msp.progetto_ad_hoc = 'N'
|
||||
UNION
|
||||
SELECT msc.id_richiesta id_richiesta,
|
||||
msc.data_richiesta data_richiesta,
|
||||
msc.data_ricezione data_ricezione,
|
||||
msc.codice_operatore_donating cod_op_don
|
||||
FROM mnp.mnp_msc_in_rec msc
|
||||
WHERE msc.progetto_ad_hoc = 'N'
|
||||
UNION
|
||||
SELECT bit.id_richiesta id_richiesta,
|
||||
NULL data_richiesta, -- DATA_RICHIESTA NON CONTENENTE ORE:MI:SS
|
||||
bit.data_ricezione_file data_ricezione,
|
||||
bit.donating_cod_op cod_op_don
|
||||
FROM mnp.mnp_bit_in_rec bit
|
||||
WHERE bit.progetto_ad_hoc IS null) ric,
|
||||
mnp.mnp_gest_rich_donor_virt rich_don_virt,
|
||||
mnp.mnp_mvno_notifica_don_out not_don_out,
|
||||
MNP.S_DIM_TEMPO d
|
||||
WHERE not_don_out.id_richiesta_dbc = ric.id_richiesta
|
||||
AND not_don_out.tipo_evento = '01'
|
||||
AND ric.id_richiesta = rich_don_virt.id_richiesta
|
||||
AND ric.cod_op_don IN
|
||||
(SELECT id_operatore
|
||||
FROM mnp.mnp_anagrafica_operatori
|
||||
WHERE tipo_operatore = 'VIRT'
|
||||
AND gestore_aom = 'TIMG')
|
||||
AND d.data = trunc(NVL(ric."DATA_RICHIESTA", ric."DATA_RICEZIONE"))) rep
|
||||
where data_richiesta between to_date('01/'||p_mese_comp,'dd/mm/yyyy') and last_day(to_date('01/'||p_mese_comp,'dd/mm/yyyy'))
|
||||
)
|
||||
group by tipo_giorno, tipologia, tipologia_invio, tipo_cliente;
|
||||
|
||||
commit;
|
||||
|
||||
exception when others then
|
||||
|
||||
DBMS_OUTPUT.put_line ('Errore nel popolamento della tabella MNP_DW_REPORT_MONITORAGGIO_REC ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||||
|
||||
end P_REPORT_MONITORAGGIORECIPIENT;
|
||||
/
|
||||
116
dbcmnpsrc/FE/mnpapp/script/procedure/mnp/CALCOLA_SXMLIN.prc
Normal file
116
dbcmnpsrc/FE/mnpapp/script/procedure/mnp/CALCOLA_SXMLIN.prc
Normal file
@@ -0,0 +1,116 @@
|
||||
CREATE OR REPLACE PROCEDURE calcola_sxmlin (
|
||||
nomeindicatore IN VARCHAR2,
|
||||
starthour IN NUMBER,
|
||||
endhour IN NUMBER,
|
||||
frequenza IN VARCHAR2,
|
||||
nomefile IN VARCHAR2,
|
||||
partizione IN VARCHAR2,
|
||||
hostaria IN VARCHAR2
|
||||
)
|
||||
IS
|
||||
data_val DATE;
|
||||
file1 UTL_FILE.file_type;
|
||||
|
||||
TYPE rec_valore_type IS RECORD (
|
||||
desc_olo mnp_olo.desc_olo%TYPE,
|
||||
tipo_processo_descr mnp_lov.descr%TYPE,
|
||||
tipo_file_descr mnp_lov.descr%TYPE,
|
||||
valore NUMBER
|
||||
);
|
||||
|
||||
TYPE cur_valore_type IS REF CURSOR;
|
||||
|
||||
cur_valore cur_valore_type;
|
||||
rec_valore rec_valore_type;
|
||||
sql_stmt VARCHAR2 (2000);
|
||||
BEGIN
|
||||
sql_stmt :=
|
||||
' SELECT e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr,'
|
||||
|| ' COUNT (nome_file) valore'
|
||||
|| ' FROM mnp_xml_in PARTITION ('
|
||||
|| partizione
|
||||
|| ') a,'
|
||||
|| ' (SELECT b.NAME tipo_processo, b.descr tipo_processo_descr,'
|
||||
|| ' c.NAME tipo_file, c.descr tipo_file_descr, d.desc_olo'
|
||||
|| ' FROM mnp_lov b, mnp_lov c, mnp_olo d, mnp_lov_ref f'
|
||||
|| ' WHERE d.flag_terze_parti = 1'
|
||||
|| ' AND b.lov_name = ''PROCESS'''
|
||||
|| ' AND c.lov_name = ''XML_FILE_TYPE'''
|
||||
|| ' AND c.lov_id = f.lov_id'
|
||||
|| ' AND f.lov_id_ref = b.lov_id'
|
||||
|| ' AND c.NAME != ''K'') e'
|
||||
|| ' WHERE TRUNC (SYSDATE) + :starthour / 24 < a.data_eff(+)'
|
||||
|| ' AND TRUNC (SYSDATE) + :endhour / 24 >= a.data_eff(+)'
|
||||
|| ' AND e.desc_olo = a.mittente(+)'
|
||||
|| ' AND e.tipo_file = a.tipo_file(+)'
|
||||
|| ' GROUP BY e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr';
|
||||
DBMS_OUTPUT.put_line ( 'apro il file '
|
||||
|| 'MNP'
|
||||
|| '.'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
);
|
||||
file1 :=
|
||||
UTL_FILE.fopen (nomefile,
|
||||
'MNP' || '.' || TO_CHAR (SYSDATE, 'yyyyMMdd'),
|
||||
'a'
|
||||
);
|
||||
|
||||
OPEN cur_valore
|
||||
FOR sql_stmt USING starthour, endhour;
|
||||
|
||||
data_val := SYSDATE;
|
||||
|
||||
LOOP
|
||||
FETCH cur_valore
|
||||
INTO rec_valore;
|
||||
|
||||
EXIT WHEN cur_valore%NOTFOUND; -- process record
|
||||
UTL_FILE.put_line (file1,
|
||||
nomeindicatore
|
||||
|| ';'
|
||||
|| rec_valore.desc_olo
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_processo_descr
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_file_descr
|
||||
|| ';'
|
||||
|| rec_valore.valore
|
||||
|| ';'
|
||||
|| frequenza
|
||||
|| ';'
|
||||
|| hostaria
|
||||
|| ';'
|
||||
|| TO_CHAR (data_val, 'yyyymmdd')
|
||||
|| ';'
|
||||
|| TO_CHAR (data_val, 'hh24:mi:ss')
|
||||
|| ';'
|
||||
|| TO_CHAR (SYSDATE, 'yyyymmdd')
|
||||
|| ';'
|
||||
|| TO_CHAR (SYSDATE, 'hh24:mi:ss')
|
||||
|| ';'
|
||||
|| '0'
|
||||
|| ';'
|
||||
|| rec_valore.desc_olo
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_processo_descr
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_file_descr
|
||||
|| ';;'
|
||||
);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_valore;
|
||||
|
||||
UTL_FILE.fflush (file1);
|
||||
UTL_FILE.fclose (file1);
|
||||
DBMS_OUTPUT.put_line ( 'chiudo il file '
|
||||
|| 'MNP'
|
||||
|| '.'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line (SQLERRM);
|
||||
END;
|
||||
/
|
||||
136
dbcmnpsrc/FE/mnpapp/script/procedure/mnp/CALCOLA_SXMLOU.prc
Normal file
136
dbcmnpsrc/FE/mnpapp/script/procedure/mnp/CALCOLA_SXMLOU.prc
Normal file
@@ -0,0 +1,136 @@
|
||||
CREATE OR REPLACE PROCEDURE calcola_sxmlou (
|
||||
nomeindicatore IN VARCHAR2,
|
||||
starthour IN NUMBER,
|
||||
endhour IN NUMBER,
|
||||
frequenza IN VARCHAR2,
|
||||
nomefile IN VARCHAR2,
|
||||
partizione IN VARCHAR2,
|
||||
hostaria IN VARCHAR2
|
||||
)
|
||||
IS
|
||||
data_val DATE;
|
||||
file1 UTL_FILE.file_type;
|
||||
|
||||
TYPE rec_valore_type IS RECORD (
|
||||
desc_olo mnp_olo.desc_olo%TYPE,
|
||||
tipo_processo_descr mnp_lov.descr%TYPE,
|
||||
tipo_file_descr mnp_lov.descr%TYPE,
|
||||
valore NUMBER
|
||||
);
|
||||
|
||||
TYPE cur_valore_type IS REF CURSOR;
|
||||
|
||||
cur_valore cur_valore_type;
|
||||
rec_valore rec_valore_type;
|
||||
sql_stmt VARCHAR2 (2000);
|
||||
|
||||
BEGIN
|
||||
sql_stmt :=
|
||||
' SELECT e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr,'
|
||||
|| ' COUNT (nome_file) valore'
|
||||
|| ' FROM mnp_xml_out PARTITION ('
|
||||
|| partizione
|
||||
|| ') a,'
|
||||
|| ' (SELECT b.NAME tipo_processo, b.descr tipo_processo_descr,'
|
||||
|| ' c.NAME tipo_file, c.descr tipo_file_descr, d.desc_olo'
|
||||
|| ' FROM mnp_lov b, mnp_lov c, mnp_olo d'
|
||||
|| ' WHERE (d.flag_terze_parti = 1 OR d.desc_olo = ''NPTS'')'
|
||||
|| ' AND b.lov_name = ''PROCESS'''
|
||||
|| ' AND c.lov_name = ''XML_FILE_TYPE'''
|
||||
|| ' AND ((d.flag_terze_parti = 1'
|
||||
|| ' AND (b.NAME, c.NAME) IN'
|
||||
|| ' ((''K'', ''7''),'
|
||||
|| ' (''D'', ''2''),'
|
||||
|| ' (''D'', ''5''),'
|
||||
|| ' (''D'', ''6''),'
|
||||
|| ' (''R'', ''1''),'
|
||||
|| ' (''R'', ''3''),'
|
||||
|| ' (''R'', ''9''),'
|
||||
|| ' (''P'', ''6'')) '
|
||||
|| ' ) '
|
||||
|| ' OR (d.desc_olo = ''NPTS'''
|
||||
|| ' AND (b.NAME, c.NAME) IN'
|
||||
|| ' ((''K'', ''7''),'
|
||||
|| ' (''D'', ''6''),'
|
||||
|| ' (''R'', ''3''),'
|
||||
|| ' (''R'', ''6''),'
|
||||
|| ' (''P'', ''6'')) '
|
||||
|| ' )'
|
||||
|| ' )) e '
|
||||
|| ' WHERE TRUNC (SYSDATE) + :starthour / 24 < a.data_invio(+)'
|
||||
|| ' AND TRUNC (SYSDATE) + :endhour / 24 >= a.data_invio(+)'
|
||||
|| ' AND e.desc_olo = a.destinatario(+)'
|
||||
|| ' AND e.tipo_file = a.tipo_file(+)'
|
||||
|| ' AND e.tipo_processo = a.tipo_processo(+)'
|
||||
|| ' GROUP BY e.desc_olo, e.tipo_processo_descr, e.tipo_file_descr';
|
||||
|
||||
DBMS_OUTPUT.put_line ( 'apro il file '
|
||||
|| 'MNP'
|
||||
|| '.'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
);
|
||||
file1 :=
|
||||
UTL_FILE.fopen (nomefile,
|
||||
'MNP' || '.' || TO_CHAR (SYSDATE, 'yyyyMMdd'),
|
||||
'a'
|
||||
);
|
||||
|
||||
OPEN cur_valore
|
||||
FOR sql_stmt USING starthour, endhour;
|
||||
|
||||
data_val := SYSDATE;
|
||||
|
||||
LOOP
|
||||
FETCH cur_valore
|
||||
INTO rec_valore;
|
||||
|
||||
EXIT WHEN cur_valore%NOTFOUND;
|
||||
UTL_FILE.put_line (file1,
|
||||
nomeindicatore
|
||||
|| ';'
|
||||
|| rec_valore.desc_olo
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_processo_descr
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_file_descr
|
||||
|| ';'
|
||||
|| rec_valore.valore
|
||||
|| ';'
|
||||
|| frequenza
|
||||
|| ';'
|
||||
|| hostaria
|
||||
|| ';'
|
||||
|| TO_CHAR (data_val, 'yyyymmdd')
|
||||
|| ';'
|
||||
|| TO_CHAR (data_val, 'hh24:mi:ss')
|
||||
|| ';'
|
||||
|| TO_CHAR (SYSDATE, 'yyyymmdd')
|
||||
|| ';'
|
||||
|| TO_CHAR (SYSDATE, 'hh24:mi:ss')
|
||||
|| ';'
|
||||
|| '0'
|
||||
|| ';'
|
||||
|| rec_valore.desc_olo
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_processo_descr
|
||||
|| '-:-'
|
||||
|| rec_valore.tipo_file_descr
|
||||
|| ';;'
|
||||
);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur_valore;
|
||||
|
||||
UTL_FILE.fflush (file1);
|
||||
UTL_FILE.fclose (file1);
|
||||
DBMS_OUTPUT.put_line ( 'chiudo il file '
|
||||
|| 'MNP'
|
||||
|| '.'
|
||||
|| TO_CHAR (SYSDATE, 'yyyyMMdd')
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line (SQLERRM);
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,18 @@
|
||||
CREATE OR REPLACE FUNCTION F_SPLIT_ID_OPERATORE(P_ID_OPERATORE VARCHAR2 ) RETURN VARCHAR2 IS
|
||||
V_RESULT MNP_GESTIONE_RICHIESTA_REC.ESPLETAMENTOTERZEPARTI%TYPE;
|
||||
BEGIN
|
||||
|
||||
IF INSTR(P_ID_OPERATORE, ';') > 0 OR LENGTH(TRIM(TRANSLATE(P_ID_OPERATORE, '0123456789', ' '))) IS NOT NULL THEN
|
||||
RETURN P_ID_OPERATORE;
|
||||
ELSE
|
||||
FOR i in 1 .. length(P_ID_OPERATORE) LOOP
|
||||
|
||||
V_RESULT := V_RESULT || SUBSTR(P_ID_OPERATORE,i,1)||';';
|
||||
|
||||
END LOOP;
|
||||
|
||||
RETURN(V_RESULT);
|
||||
END IF;
|
||||
|
||||
END F_SPLIT_ID_OPERATORE;
|
||||
/
|
||||
@@ -0,0 +1,9 @@
|
||||
spool compila.log
|
||||
set echo on
|
||||
|
||||
@/mnpapp/script/procedure/mnp/report_Cessazione.fnc
|
||||
show err
|
||||
|
||||
spool off
|
||||
|
||||
exit
|
||||
@@ -0,0 +1,56 @@
|
||||
CREATE OR REPLACE PROCEDURE crea_partizione
|
||||
( p_data_partizione date default sysdate,
|
||||
p_nome_tabella varchar2,
|
||||
p_path_file_log varchar2
|
||||
) IS
|
||||
-- la procedura prende in ingresso la data di storicizzazione
|
||||
-- e imposta la data limite della nuova partizione aggiungendo 3 mesi a quella in ingresso
|
||||
|
||||
v_data_part varchar2(100);
|
||||
v_nome_part varchar2(100);
|
||||
s_partition_name_max varchar2(100);
|
||||
puntatore_file_log UTL_FILE.FILE_TYPE;
|
||||
v_anno number;
|
||||
|
||||
BEGIN
|
||||
|
||||
|
||||
v_data_part := to_char(p_data_partizione,' yyyy-mm-dd hh24:mi:ss');
|
||||
-- impostazione del nome della partizione con il seguente formato:
|
||||
-- yyyy_q anno (yyyy anno corrente - q trimestre di riferimento della partizione)
|
||||
v_nome_part := 'T'||to_char(trunc(p_data_partizione,'mm')-1,'q');
|
||||
if v_nome_part = 'T4' then
|
||||
v_anno := to_number(to_char(p_data_partizione,'yyyy'))-1;
|
||||
v_nome_part := v_nome_part||'_'||v_anno;
|
||||
else
|
||||
v_nome_part := v_nome_part||to_char(p_data_partizione, '_yyyy');
|
||||
end if;
|
||||
|
||||
puntatore_file_log := UTL_FILE.FOPEN(p_path_file_log,'crea_partizione_'||p_nome_tabella||'_'||to_char(sysdate, 'ddmmyyyy_hh24miss')||'.log','a');
|
||||
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Inizio Procedura crea_partizione per la tabella '||p_nome_tabella);
|
||||
|
||||
select a.partition_name
|
||||
into s_partition_name_max
|
||||
FROM all_tab_partitions a
|
||||
where a.table_name = upper(p_nome_tabella)
|
||||
and a.partition_position =
|
||||
( select max(partition_position)
|
||||
from all_tab_partitions
|
||||
where table_name = upper(p_nome_tabella));
|
||||
|
||||
execute immediate('ALTER TABLE '|| p_nome_tabella ||'
|
||||
SPLIT PARTITION ' || s_partition_name_max || ' AT (TO_DATE('''||v_data_part||''', ''SYYYY-MM-DD HH24:MI:SS'', ''NLS_CALENDAR=GREGORIAN''))
|
||||
INTO (PARTITION ' || v_nome_part ||',
|
||||
PARTITION ' ||s_partition_name_max||')');
|
||||
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, 'Creata partizione '||v_nome_part);
|
||||
|
||||
UTL_FILE.PUT_LINE(puntatore_file_log, to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss')||' Fine Procedura crea_partizione per la tabella '||v_nome_part);
|
||||
|
||||
UTL_FILE.FCLOSE(puntatore_file_log);
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
raise;
|
||||
END;
|
||||
/
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
CREATE OR REPLACE
|
||||
FUNCTION trova_data_part
|
||||
( data_oggi IN date)
|
||||
return varchar2 IS
|
||||
|
||||
s_data_oggi varchar2(30);
|
||||
s_data_part varchar2(30);
|
||||
|
||||
BEGIN
|
||||
for c IN 0..190 loop
|
||||
select to_char(data_oggi + c, 'ddmm') into s_data_oggi from dual;
|
||||
|
||||
if(s_data_oggi = '0104') then
|
||||
select ' '||to_char(data_oggi + c, ' yyyy-mm-dd')||' 00:00:00'
|
||||
into s_data_part
|
||||
from dual;
|
||||
|
||||
exit;
|
||||
|
||||
elsif(s_data_oggi = '0110') then
|
||||
select ' '||to_char(data_oggi + c, ' yyyy-mm-dd')||' 00:00:00'
|
||||
into s_data_part
|
||||
from dual;
|
||||
|
||||
exit;
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
RETURN s_data_part ;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
CREATE OR REPLACE function f_trova_ultimo_proc_concluso(
|
||||
p_msisdn varchar2,
|
||||
p_id_richiesta out varchar2,
|
||||
p_data out date,
|
||||
p_processo out varchar2,
|
||||
p_operatore_rec_rete out varchar2
|
||||
)
|
||||
return number is
|
||||
|
||||
v_result number;
|
||||
|
||||
begin
|
||||
|
||||
with t_richieste as(
|
||||
select id_richiesta, dataricezionerichiesta as data,'D' as processo, codice_operatore_recipient operatore from mnp_gestione_richiesta where msisdn= p_msisdn and stato=16
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'D' as processo, codice_operatore_recipient operatore from hist_gestione_richiesta where msisdn= p_msisdn and stato=16
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'R' as processo, codice_operatore_recipient operatore from mnp_gestione_richiesta_rec where msisdn= p_msisdn and stato=12
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'R' as processo, codice_operatore_recipient operatore from hist_gestione_richiesta_rec where msisdn= p_msisdn and stato=12
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'V' as processo, 'TIMG' operatore from mnp_gest_rich_donor_virt where msisdn= p_msisdn and stato=11
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'V' as processo, 'TIMG' operatore from hist_gest_rich_donor_virt where msisdn= p_msisdn and stato=11
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'W' as processo, 'TIMG' operatore from mnp_gest_rich_rec_virt where msisdn= p_msisdn and stato=12
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'W' as processo, 'TIMG' operatore from hist_gest_rich_rec_virt where msisdn= p_msisdn and stato=12
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'P' as processo, codice_operatore_recipient operatore from mnp_gestione_richiesta_porting where msisdn= p_msisdn and stato=6
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'P' as processo, codice_operatore_recipient operatore from hist_gestione_richiestaporting where msisdn= p_msisdn and stato=6
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'C' as processo, codice_operatore_recipient operatore from mnp_gestione_richiesta_cess where msisdn= p_msisdn and stato=3
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'K' as processo, codice_operatore_recipient operatore from mnp_gestione_rich_cess_port where msisdn= p_msisdn and stato=2
|
||||
)
|
||||
SELECT *
|
||||
into p_id_richiesta, p_data, p_processo, p_operatore_rec_rete
|
||||
from t_richieste
|
||||
WHERE DATA = (
|
||||
SELECT MAX(DATA) FROM T_RICHIESTE
|
||||
)
|
||||
and rownum < 2;
|
||||
|
||||
v_result := 0;
|
||||
|
||||
return v_result;
|
||||
|
||||
exception when others then
|
||||
|
||||
v_result := 1;
|
||||
return v_result;
|
||||
|
||||
end f_trova_ultimo_proc_concluso;
|
||||
/
|
||||
@@ -0,0 +1,56 @@
|
||||
create or replace function f_trova_ultimo_processo(
|
||||
p_msisdn varchar2,
|
||||
p_id_richiesta out varchar2,
|
||||
p_data out date,
|
||||
p_processo out varchar2
|
||||
)
|
||||
return number is
|
||||
|
||||
v_result number;
|
||||
|
||||
begin
|
||||
|
||||
with t_richieste as(
|
||||
select id_richiesta, dataricezionerichiesta as data,'D' as processo from mnp_gestione_richiesta where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'D' as processo from hist_gestione_richiesta where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'R' as processo from mnp_gestione_richiesta_rec where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'R' as processo from hist_gestione_richiesta_rec where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'V' as processo from mnp_gest_rich_donor_virt where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'V' as processo from hist_gest_rich_donor_virt where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'W' as processo from mnp_gest_rich_rec_virt where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'W' as processo from hist_gest_rich_rec_virt where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'P' as processo from mnp_gestione_richiesta_porting where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'P' as processo from hist_gestione_richiestaporting where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'C' as processo from mnp_gestione_richiesta_cess where msisdn= p_msisdn
|
||||
union
|
||||
select id_richiesta, dataricezionerichiesta as data,'K' as processo from mnp_gestione_rich_cess_port where msisdn= p_msisdn
|
||||
)
|
||||
SELECT *
|
||||
into p_id_richiesta, p_data, p_processo
|
||||
from t_richieste
|
||||
WHERE DATA = (
|
||||
SELECT MAX(DATA) FROM T_RICHIESTE
|
||||
)
|
||||
and rownum < 2;
|
||||
|
||||
v_result := 0;
|
||||
|
||||
return v_result;
|
||||
|
||||
exception when others then
|
||||
|
||||
v_result := 1;
|
||||
return v_result;
|
||||
|
||||
end f_trova_ultimo_processo;
|
||||
/
|
||||
@@ -0,0 +1,36 @@
|
||||
CREATE OR REPLACE FUNCTION report_cessazione RETURN VARCHAR2 IS
|
||||
|
||||
rs varchar2(255);
|
||||
file1 UTL_FILE.file_type;
|
||||
path varchar2(255);
|
||||
filename varchar2(255);
|
||||
|
||||
|
||||
CURSOR cur_res is
|
||||
select b.codice_richiesta_recipient || ';' || b.msisdn
|
||||
from mnp_gestione_richiesta_cess b
|
||||
where b.stato = 1
|
||||
and b.da_processare = 1
|
||||
and tim_donor =1;
|
||||
|
||||
BEGIN
|
||||
select directory_path
|
||||
into path
|
||||
from all_directories
|
||||
where directory_name='PATH_REPORT_CESS';
|
||||
filename := 'CESSAZIONI_'||to_char(sysdate,'yyyyMMddhh24miss')||'.txt';
|
||||
file1 := UTL_FILE.fopen ('PATH_REPORT_CESS',filename, 'w');
|
||||
UTL_FILE.put_line (file1,'Codice richiesta; Msisdn');
|
||||
|
||||
OPEN cur_res;
|
||||
LOOP
|
||||
FETCH cur_res INTO rs;
|
||||
EXIT WHEN cur_res%NOTFOUND;
|
||||
UTL_FILE.put_line (file1,rs);
|
||||
END LOOP;
|
||||
CLOSE cur_res;
|
||||
UTL_FILE.fflush (file1);
|
||||
UTL_FILE.fclose (file1);
|
||||
return path||'/'||filename;
|
||||
END;
|
||||
/
|
||||
Reference in New Issue
Block a user