2978 lines
113 KiB
SQL
2978 lines
113 KiB
SQL
DROP TABLE MNP_DW_SLA_3GG_OUT;
|
||
CREATE TABLE MNP_DW_SLA_3GG_OUT
|
||
(
|
||
ID_RICHIESTA VARCHAR2(23 BYTE) NOT NULL,
|
||
TIPO_MESSAGGIO VARCHAR2(23 BYTE) NOT NULL,
|
||
DONOR_EFFETTIVO VARCHAR2(4 BYTE) NOT NULL,
|
||
RECIPIENT_EFFETTIVO VARCHAR2(4 BYTE) NOT NULL,
|
||
DATA_MESSAGGIO DATE NOT NULL,
|
||
DONOR_RETE VARCHAR2(4 BYTE) NOT NULL,
|
||
RECIPIENT_RETE VARCHAR2(4 BYTE) NOT NULL,
|
||
TERZA_PARTE VARCHAR2(4 BYTE),
|
||
PROCESSO VARCHAR2(1 BYTE) NOT NULL,
|
||
FLAG_CALCOLO_NUMSIM NUMBER(1) DEFAULT 0 NOT NULL,
|
||
NOME_FILE VARCHAR2(27 BYTE),
|
||
T_INIZIALE DATE NOT NULL,
|
||
T_FINALE DATE NOT NULL,
|
||
DATA_CUT_OVER DATE NOT NULL,
|
||
MSISDN VARCHAR2(15 BYTE),
|
||
ACK_INIZIALE VARCHAR2(27 BYTE),
|
||
ACK_FINALE VARCHAR2(27 BYTE),
|
||
DATA_ATTESA_EVENTO_FIN DATE,
|
||
MESE_COMP_FINALE VARCHAR2(7 BYTE),
|
||
NOME_FILE_INIZIALE VARCHAR2(27 BYTE),
|
||
NOME_FILE_FINALE VARCHAR2(27 BYTE),
|
||
NUMERO_GIORNI_RITARDO NUMBER DEFAULT 0 NOT NULL,
|
||
PENALE NUMBER DEFAULT 0 NOT NULL,
|
||
NUMERO_SIM NUMBER DEFAULT 0,
|
||
PROC_NAME VARCHAR2(30 BYTE) NOT NULL
|
||
)
|
||
TABLESPACE TAB_SMALL
|
||
PCTUSED 40
|
||
PCTFREE 10
|
||
INITRANS 1
|
||
MAXTRANS 255
|
||
STORAGE (
|
||
INITIAL 10M
|
||
NEXT 10M
|
||
MINEXTENTS 1
|
||
MAXEXTENTS 2147483645
|
||
PCTINCREASE 0
|
||
FREELISTS 1
|
||
FREELIST GROUPS 1
|
||
BUFFER_POOL DEFAULT
|
||
)
|
||
LOGGING
|
||
NOCACHE
|
||
NOPARALLEL
|
||
NOMONITORING;
|
||
|
||
CREATE UNIQUE INDEX MNP_DW_SLA_3GG_OUT_PK ON MNP_DW_SLA_3GG_OUT
|
||
(ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,RECIPIENT_EFFETTIVO)
|
||
LOGGING
|
||
TABLESPACE TAB_SMALL
|
||
PCTFREE 10
|
||
INITRANS 2
|
||
MAXTRANS 255
|
||
STORAGE (
|
||
INITIAL 10M
|
||
NEXT 10M
|
||
MINEXTENTS 1
|
||
MAXEXTENTS 2147483645
|
||
PCTINCREASE 0
|
||
FREELISTS 1
|
||
FREELIST GROUPS 1
|
||
BUFFER_POOL DEFAULT
|
||
)
|
||
NOPARALLEL;
|
||
|
||
|
||
ALTER TABLE MNP_DW_SLA_3GG_OUT ADD (
|
||
CONSTRAINT MNP_DW_SLA_3GG_OUT_PK
|
||
PRIMARY KEY
|
||
(ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,RECIPIENT_EFFETTIVO)
|
||
USING INDEX
|
||
TABLESPACE TAB_SMALL
|
||
PCTFREE 10
|
||
INITRANS 2
|
||
MAXTRANS 255
|
||
STORAGE (
|
||
INITIAL 10M
|
||
NEXT 10M
|
||
MINEXTENTS 1
|
||
MAXEXTENTS 2147483645
|
||
PCTINCREASE 0
|
||
FREELISTS 1
|
||
FREELIST GROUPS 1
|
||
));
|
||
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);
|
||
--appo_agg_giorni NUMBER :=0;
|
||
BEGIN
|
||
|
||
--IF appo_data_iniziale>data_iniziale then
|
||
-- appo_agg_giorni:=appo_agg_giorni+1;
|
||
--END IF;
|
||
-- IF appo_data_finale>data_finale then
|
||
-- appo_agg_giorni:=appo_agg_giorni+1;
|
||
--END IF;
|
||
|
||
--IF TRUNC (appo_data_finale) > TRUNC (appo_data_iniziale)
|
||
IF TRUNC (data_finale) > TRUNC (data_iniziale)
|
||
THEN
|
||
/*
|
||
SELECT TRUNC (appo_data_finale)
|
||
- TRUNC (appo_data_iniziale)
|
||
- SUM (DECODE (tip_gio, 'F', 1, 'P', 1, 0))
|
||
-- + appo_agg_giorni
|
||
INTO appo_giorni
|
||
FROM mnp.s_dim_tempo d
|
||
WHERE d.DATA >= TRUNC (appo_data_iniziale)
|
||
AND d.DATA <= TRUNC (appo_data_finale);
|
||
*/
|
||
select nvl(sum(decode(tip_gio,'L',1,0)),0)
|
||
INTO appo_giorni
|
||
FROM mnp.s_dim_tempo d
|
||
WHERE d.DATA between trunc(data_iniziale) and trunc(data_finale);
|
||
ELSE
|
||
appo_giorni := 0;
|
||
END IF;
|
||
|
||
RETURN appo_giorni;
|
||
END fun_giorni_lavorativi;
|
||
/
|
||
grant execute on DWH.FUN_GIORNI_LAVORATIVI to public;
|
||
/
|
||
CREATE OR REPLACE PACKAGE PKG_CALCOLO_SLA_PENALI_3GG AS
|
||
/******************************************************************************
|
||
NAME: PKG_CALCOLO_SLA_PENALI_3GG
|
||
PURPOSE:
|
||
|
||
REVISIONS:
|
||
Ver Date Author Description
|
||
--------- ---------- --------------- ------------------------------------
|
||
1.0 11/03/2010 1. Created this package.
|
||
******************************************************************************/
|
||
|
||
|
||
PROCEDURE CARICAMENTO_SLA0_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA1_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA2_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA3_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA0_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA1_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA2_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA3_DONOR (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
|
||
PROCEDURE CARICAMENTO_SLA1_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA2_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA3_DONOR_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA1_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA2_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA3_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA1_REC_VIRT_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA2_REC_VIRT_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
PROCEDURE CARICAMENTO_SLA3_REC_VIRT_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
||
|
||
PROCEDURE CALCOLO_SLA_PENALI(dataRif IN DATE);
|
||
|
||
|
||
END PKG_CALCOLO_SLA_PENALI_3GG;
|
||
/
|
||
CREATE OR REPLACE package body PKG_CALCOLO_SLA_PENALI_3GG as
|
||
|
||
procedure CARICAMENTO_SLA0_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA0_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
dataFinale DATE;
|
||
|
||
CURSOR record_sla
|
||
IS
|
||
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
||
,'SLA0' AS tipoMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS dataMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
||
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL AS terzaParte
|
||
,xml_out.TIPO_PROCESSO AS processo
|
||
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,rich_rec.codice_gruppo AS codiceGruppo
|
||
,ack_out.NOME_FILE AS nomeFile
|
||
,to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS tIniziale
|
||
,to_date( SUBSTR(ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS tFinale
|
||
,rich_rec.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,rich_rec.MSISDN AS msIsdn
|
||
,ack_in.NOME_FILE AS ackIniziale
|
||
,ack_out.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
-- AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
|
||
AS meseCompFinale
|
||
,xml_out.NOME_FILE AS nomeFileIniziale
|
||
,xml_in.NOME_FILE AS nomeFileFinale
|
||
,to_date( SUBSTR( RICH_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS dataRicIn
|
||
FROM mnp.MNP_XML_RICHIESTA_OUT rich_out
|
||
,mnp.MNP_XML_ACK_IN ack_in
|
||
,mnp.MNP_XML_OUT xml_out
|
||
,mnp.MNP_XML_ACK_OUT ack_out
|
||
,mnp.MNP_XML_IN xml_in
|
||
,mnp.MNP_XML_RICHIESTA_IN RICH_in
|
||
,mnp.MNP_GESTIONE_RICHIESTA_REC RICH_rec
|
||
WHERE rich_out.NOME_FILE = xml_out.NOME_FILE
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE ------calcolo pic
|
||
AND xml_in.TIPO_FILE = 5
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND ack_in.NOME_FILE_RIFERITO = rich_out.NOME_FILE
|
||
AND xml_out.TIPO_FILE =1 ----ATTIVAZIONE
|
||
AND rich_rec.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND rich_out.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND rich_rec.STATO = 5
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' )
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1)) ;
|
||
|
||
BEGIN
|
||
temp_data_in := NULL;
|
||
temp_data_fin := NULL;
|
||
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 1
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 1;
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 5
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 5;
|
||
|
||
cod_errore := 0;
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '1' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_INIZIALE AL GIORNO LAVORATIVO SUCCESSIVO
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale;
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE AL GIORNO LAVORATIVO SUCCESSIVO
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.dataRicIn, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
|
||
if FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 > 0
|
||
then
|
||
begin
|
||
dataFinale:=fun_giorni_piu(temp_data_in,0); /*data attesa evento finale */
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(temp_data_in,0) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta_rec c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim,proc_name
|
||
);
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT ACK_INIZIALE
|
||
INTO ackInizialeLetto
|
||
FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
|
||
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
||
IF to_date( SUBSTR( rec.ackIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
THEN
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,DONOR_RETE = rec.donorRete
|
||
,RECIPIENT_RETE = rec.recipientRete
|
||
,TERZA_PARTE = rec.terzaParte
|
||
,PROCESSO = rec.processo
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_INIZIALE=temp_data_in
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,MSISDN=rec.msIsdn
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=giorni_ritardo
|
||
,PENALE=penale
|
||
,PROC_NAME=proc_name
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
END IF;
|
||
END;
|
||
end;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
D_finE:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA0_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA0_RECIPIENT;
|
||
|
||
procedure CARICAMENTO_SLA1_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
||
,'SLA1' AS tipoMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS dataMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
||
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL AS terzaParte
|
||
,xml_out.TIPO_PROCESSO AS processo
|
||
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,rich_rec.codice_gruppo AS codiceGruppo
|
||
,ack_out.NOME_FILE AS nomeFile
|
||
,to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS tIniziale
|
||
,to_date( SUBSTR(ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS tFinale
|
||
,rich_rec.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,rich_rec.MSISDN AS msIsdn
|
||
,ack_in.NOME_FILE AS ackIniziale
|
||
,ack_out.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) + 1
|
||
-- AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
|
||
AS meseCompFinale
|
||
,xml_out.NOME_FILE AS nomeFileIniziale
|
||
,xml_in.NOME_FILE AS nomeFileFinale
|
||
,to_date( SUBSTR( RICH_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AS dataRicIn
|
||
FROM mnp.MNP_XML_RICHIESTA_OUT rich_out,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_OUT xml_out ,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA_REC rich_rec
|
||
WHERE rich_out.NOME_FILE = xml_out.NOME_FILE
|
||
AND ack_in.NOME_FILE_RIFERITO = rich_out.NOME_FILE
|
||
AND xml_in.NOME_FILE =RICH_in.NOME_FILE
|
||
AND xml_out.TIPO_FILE = 1 ---ATTIVAZIONE
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND xml_in.TIPO_FILE =2 ----validazione
|
||
AND rich_out.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND rich_rec.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' )
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS(dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 1;
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 2;
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale;
|
||
END IF;
|
||
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.dataRicIn, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
if FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 >1
|
||
then
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu(temp_data_in,1); /*data attesa evento finale*/
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(temp_data_in,1) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta_rec c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT ACK_INIZIALE
|
||
INTO ackInizialeLetto
|
||
FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
|
||
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
||
IF to_date( SUBSTR( rec.ackIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
THEN
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,DONOR_RETE = rec.donorRete
|
||
,RECIPIENT_RETE = rec.recipientRete
|
||
,TERZA_PARTE = rec.terzaParte
|
||
,PROCESSO = rec.processo
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_INIZIALE=temp_data_in
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,MSISDN=rec.msIsdn
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=giorni_ritardo
|
||
,PENALE=penale
|
||
,NUMERO_SIM=numero_sim
|
||
,PROC_NAME=proc_name
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
END IF;
|
||
END;
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_finE:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA1_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
END CARICAMENTO_SLA1_RECIPIENT;
|
||
|
||
|
||
|
||
procedure CARICAMENTO_SLA2_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp CHAR(2);
|
||
min_fin_ftemp CHAR(2);
|
||
sec_fin_ftemp CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
|
||
CURSOR record_sla is
|
||
SELECT rich_in.ID_RICHIESTA AS idRichiesta
|
||
,'SLA2' AS tipoMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
||
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL as terzaParte
|
||
,xml_out.TIPO_PROCESSO AS processo
|
||
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,rich_rec.codice_gruppo AS codiceGruppo
|
||
,ack_out_fin.NOME_FILE as nomeFile
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR( ack_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,rich_rec.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,rich_rec.MSISDN AS msIsdn
|
||
,ack_out.NOME_FILE AS ackIniziale
|
||
,ack_out_fin.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )+2 AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( ack_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,xml_in.NOME_FILE AS nomeFileIniziale
|
||
,xml_in_fin.NOME_FILE AS nomeFileFinale
|
||
,to_date( SUBSTR( RICH_in_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataRicIn
|
||
FROM mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN RICH_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA_REC RICH_rec,
|
||
mnp.MNP_XML_ACK_OUT ack_out_fin ,
|
||
mnp.MNP_XML_IN xml_in_fin ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in_fin ,
|
||
mnp.MNP_XML_OUT xml_out
|
||
WHERE xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND ack_out.NOME_FILE = xml_out.nome_file
|
||
AND xml_in.TIPO_FILE =2----VALIDAZIONE
|
||
AND RICH_rec.ID_RICHIESTA = RICH_in.ID_RICHIESTA
|
||
--AND RICH_rec.STATO = 8
|
||
AND xml_in_fin.NOME_FILE = rich_in_fin.NOME_FILE
|
||
AND ack_out_fin.NOME_FILE_RIFERITO = rich_in_fin.NOME_FILE
|
||
AND xml_in_fin.TIPO_FILE =6----espletamento
|
||
AND RICH_rec.CODICE_OPERATORE_DONATING= xml_in_fin.MITTENTE
|
||
AND rich_rec.ID_RICHIESTA = RICH_in_fin.ID_RICHIESTA
|
||
AND to_date( SUBSTR( ack_out_fin.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1)) ;
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_ini,'YYYY-MM-DD HH24:MI:SS'));
|
||
ora_fin_ftemp := null;
|
||
min_fin_ftemp := null;
|
||
sec_fin_ftemp := null;
|
||
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp,min_fin_ftemp,sec_fin_ftemp
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.dataRicIn, 'YYYYMMDD')||ora_fin_ftemp ||min_fin_ftemp||sec_fin_ftemp),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
|
||
END IF;
|
||
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(rec.tIniziale)) -1 >2
|
||
THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta_rec c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
begin
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
EXCEPTION WHEN dup_val_on_index THEN
|
||
begin
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT - CHIAVE DUPLICATA PER LA RICHIESTA ' || rec.idRichiesta||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
end;
|
||
end;
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_fine,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||n_rec);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
END CARICAMENTO_SLA2_RECIPIENT;
|
||
|
||
|
||
|
||
procedure CARICAMENTO_SLA3_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp CHAR(2);
|
||
min_fin_ftemp CHAR(2);
|
||
sec_fin_ftemp CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,xml_in.MITTENTE AS donorEffettivo -- terza parte in donor EFFETTIVO x far funzionare dbcgo (al posto di rich_rec.CODICE_OPERATORE_DON_EFF)
|
||
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
||
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,xml_out.TIPO_PROCESSO AS processo
|
||
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,rich_rec.codice_gruppo AS codiceGruppo
|
||
,ack_out.NOME_FILE as nomeFile
|
||
,to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR(ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,rich_rec.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,rich_rec.MSISDN AS msIsdn
|
||
,ack_in.NOME_FILE AS ackIniziale
|
||
,ack_out.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )+2 AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,xml_out.NOME_FILE AS nomeFileIniziale
|
||
,xml_in.NOME_FILE AS nomeFileFinale
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataRicIn
|
||
FROM mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out,
|
||
mnp.MNP_XML_OUT xml_out ,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA_REC rich_rec
|
||
WHERE rich_out.NOME_FILE = xml_out.NOME_FILE
|
||
AND ack_in.NOME_FILE_RIFERITO = rich_out.NOME_FILE
|
||
AND xml_out.TIPO_FILE =3 ----porting
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND RICH_rec.ID_RICHIESTA = RICH_in.ID_RICHIESTA
|
||
AND RICH_out.ID_RICHIESTA = RICH_in.ID_RICHIESTA
|
||
AND xml_in.TIPO_FILE =6
|
||
AND xml_in.MITTENTE <>rich_rec.CODICE_OPERATORE_DONATING
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
|
||
ora_fin_ftemp := null;
|
||
min_fin_ftemp := null;
|
||
sec_fin_ftemp := null;
|
||
|
||
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp,min_fin_ftemp,sec_fin_ftemp
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.dataRicIn, 'YYYYMMDD')||ora_fin_ftemp ||min_fin_ftemp||sec_fin_ftemp),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(rec.tIniziale))-1>2
|
||
THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *10;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta_rec c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT ACK_INIZIALE
|
||
INTO ackInizialeLetto
|
||
FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
|
||
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
||
IF to_date( SUBSTR( rec.ackIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
THEN
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,DONOR_RETE = rec.donorRete
|
||
,RECIPIENT_RETE = rec.recipientRete
|
||
,TERZA_PARTE = rec.terzaParte
|
||
,PROCESSO = rec.processo
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_INIZIALE=rec.tIniziale
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,MSISDN=rec.msIsdn
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=giorni_ritardo
|
||
,PENALE=penale
|
||
,NUMERO_SIM=numero_sim
|
||
,PROC_NAME=proc_name
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
END IF;
|
||
END;
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA3_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
END CARICAMENTO_SLA3_RECIPIENT;
|
||
|
||
|
||
|
||
procedure CARICAMENTO_SLA0_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA0_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_in.ID_RICHIESTA AS idRichiesta
|
||
,'SLA0' AS tipoMessaggio
|
||
,g.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,g.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,g.CODICE_OPERATORE_DONATING AS donorRete
|
||
,g.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL as terzaParte
|
||
,xml_out.TIPO_PROCESSO as processo
|
||
,g.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,g.codice_gruppo AS codiceGruppo
|
||
,ack_out.NOME_FILE AS nomeFile
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,g.DATA_CUT_OVER AS dataCutOver
|
||
,g.MSISDN AS msIsdn
|
||
,ack_out.NOME_FILE AS ackIniziale
|
||
,ack_in.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,xml_in.NOME_FILE AS nomeFileIniziale
|
||
,rich_out.NOME_FILE AS nomeFileFinale
|
||
FROM mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out ,
|
||
mnp.MNP_XML_OUT xml_out ,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA g
|
||
WHERE ack_out.NOME_FILE_RIFERITO= rich_in.NOME_FILE
|
||
AND xml_in.TIPO_FILE =1 --attivazione
|
||
AND rich_in.NOME_FILE = xml_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO= xml_in.NOME_FILE
|
||
AND xml_out.TIPO_FILE =5 ---pic
|
||
AND xml_out.NOME_FILE =rich_out.NOME_FILE
|
||
AND g.STATO =4 ---scartata
|
||
AND g.ID_RICHIESTA = rich_out.ID_RICHIESTA
|
||
AND rich_out.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND ack_in.NOME_FILE_RIFERITO = xml_out.NOME_FILE
|
||
AND to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 1;
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 5;
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale;
|
||
|
||
END IF;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := DWH.FUN_GIORNI_PIU (rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
if FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 > 0
|
||
THEN BEGIN
|
||
dataFinale:=fun_giorni_piu(temp_data_in,0);
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(temp_data_in,0) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA0_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
END CARICAMENTO_SLA0_DONOR;
|
||
|
||
|
||
|
||
procedure CARICAMENTO_SLA1_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_in.ID_RICHIESTA AS idRichiesta
|
||
,'SLA1' as tipoMessaggio
|
||
,g.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,g.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,g.CODICE_OPERATORE_DONATING AS donorRete
|
||
,g.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL as terzaParte
|
||
,xml_out.TIPO_PROCESSO AS processo
|
||
,g.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,g.codice_gruppo AS codiceGruppo
|
||
,xml_out.NOME_FILE as nomeFile
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,g.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,g.MSISDN AS msIsdn
|
||
,ack_out.NOME_FILE AS ackIniziale
|
||
,ack_in.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )+1 AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,xml_in.NOME_FILE AS nomeFileIniziale
|
||
,rich_out.NOME_FILE AS nomeFileFinale
|
||
FROM mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out ,
|
||
mnp.MNP_XML_OUT xml_out ,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA g
|
||
WHERE ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND xml_in.TIPO_FILE =1 --attivazione
|
||
AND rich_in.NOME_FILE = xml_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO = xml_in.NOME_FILE
|
||
AND xml_out.TIPO_FILE =2 ---VALIDAZIONE
|
||
AND xml_out.NOME_FILE =rich_out.NOME_FILE
|
||
AND rich_out.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
||
AND ack_in.NOME_FILE_RIFERITO = xml_out.NOME_FILE
|
||
AND g.ID_RICHIESTA = rich_out.ID_RICHIESTA
|
||
AND to_date( SUBSTR( rich_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) ---PRENDO TUTTI GLI ACK A PARTIRE DAL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 1;
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 2;
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale;
|
||
|
||
END IF;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := DWH.FUN_GIORNI_PIU (rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( temp_data_in)) -1 >1
|
||
THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu( temp_data_in,1);
|
||
-- giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu( temp_data_in,1) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT NOME_FILE_FINALE
|
||
INTO ackInizialeLetto
|
||
FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
|
||
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
||
IF to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
THEN
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,DONOR_RETE = rec.donorRete
|
||
,RECIPIENT_RETE = rec.recipientRete
|
||
,TERZA_PARTE = rec.terzaParte
|
||
,PROCESSO = rec.processo
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_INIZIALE=temp_data_in
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,MSISDN=rec.msIsdn
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=giorni_ritardo
|
||
,PENALE=penale
|
||
,NUMERO_SIM=numero_sim
|
||
,PROC_NAME=proc_name
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
END IF;
|
||
END;
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in CARICAMENTO_SLA1_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
END CARICAMENTO_SLA1_DONOR;
|
||
|
||
procedure CARICAMENTO_SLA2_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
ackInizialeLetto VARCHAR2(27);
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
||
,'SLA2' AS tipoMessaggio
|
||
,g.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,g.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( rich_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,g.CODICE_OPERATORE_DONATING AS donorRete
|
||
,g.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL as terzaParte
|
||
,xml_out.tipo_processo AS processo
|
||
,g.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
||
,g.codice_gruppo AS codiceGruppo
|
||
,xml_out_fin.NOME_FILE as nomeFile
|
||
,to_date( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR(xml_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,g.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,g.MSISDN AS msIsdn
|
||
,ack_in.NOME_FILE AS ackIniziale
|
||
,NULL AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_in.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )+2 AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( xml_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,ack_in.NOME_FILE AS nomeFileIniziale
|
||
,xml_out_fin.NOME_FILE AS nomeFileFinale
|
||
FROM mnp.MNP_XML_ACK_IN ack_in_fin ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out ,
|
||
mnp.MNP_XML_OUT xml_out ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out_fin,
|
||
mnp.MNP_XML_OUT xml_out_fin ,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_GESTIONE_RICHIESTA g
|
||
WHERE rich_out.NOME_FILE = xml_out.NOME_FILE
|
||
AND rich_out.NOME_FILE = ack_in.NOME_FILE_RIFERITO
|
||
AND xml_out.TIPO_FILE = 2 ----VALIDAZIONE
|
||
AND rich_out_fin.NOME_FILE = xml_out_fin.NOME_FILE
|
||
AND xml_out_fin.TIPO_FILE =6 ---ESPLETAMENTO
|
||
AND xml_out_fin.DESTINATARIO <> 'NPTS'
|
||
AND rich_out_fin.ID_RICHIESTA =rich_out.ID_RICHIESTA
|
||
AND g.ID_RICHIESTA = rich_out_fin.ID_RICHIESTA
|
||
AND ack_in_fin.NOME_FILE_RIFERITO = xml_out_fin.NOME_FILE
|
||
AND to_date( SUBSTR( rich_out_fin.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) ---PRENDO TUTTI GLI ACK A PARTIRE DAL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 2;
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale , 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale , 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale ;
|
||
|
||
END IF;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := DWH.FUN_GIORNI_PIU (rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND rec.richiestaAdHocAom > 0
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 >2
|
||
THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu(temp_data_in,2);
|
||
-- giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(temp_data_in,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:=giorni_ritardo*50;
|
||
if flagCalcoloNumSim = 1
|
||
THEN SELECT COUNT(*)
|
||
INTO numero_sim
|
||
FROM mnp.mnp_gestione_richiesta c
|
||
WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
AND c.RICHIESTAADHOCAOM > 0;
|
||
ELSE
|
||
numero_sim := 0;
|
||
END IF;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
EXCEPTION /*@@@ con la max non funziona perch<63> restringe l'intervallo**/
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT ACK_INIZIALE
|
||
INTO ackInizialeLetto
|
||
FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
|
||
-- se data dell'ack della nuova riga > data ack preesistente aggiorna i dati altrimenti scarta
|
||
IF to_date( SUBSTR( rec.ackIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) > to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ) --qua prende la massima??
|
||
THEN
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,DONOR_RETE = rec.donorRete
|
||
,RECIPIENT_RETE = rec.recipientRete
|
||
,TERZA_PARTE = rec.terzaParte
|
||
,PROCESSO = rec.processo
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_INIZIALE=temp_data_in
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,MSISDN=rec.msIsdn
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=giorni_ritardo
|
||
,PENALE=penale
|
||
,NUMERO_SIM=numero_sim
|
||
,PROC_NAME=proc_name
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
END IF;
|
||
END;
|
||
END;
|
||
ELSE -- non e' fuori SLA pero' potrebbe esistere una riga relativa ad un precedente ACK, calcolata fuori SLA, da cancellare...
|
||
BEGIN
|
||
DELETE FROM MNP_DW_SLA_3GG_OUT
|
||
WHERE ID_RICHIESTA = rec.idRichiesta
|
||
AND TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
AND DONOR_EFFETTIVO = rec.donorEffettivo
|
||
AND RECIPIENT_EFFETTIVO = rec.recipientEffettivo;
|
||
EXCEPTION
|
||
when no_data_found then NULL;
|
||
END;
|
||
end if;
|
||
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA2_DONOR;
|
||
|
||
|
||
procedure CARICAMENTO_SLA3_DONOR(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
flagCalcoloNumSim NUMBER(1):=0;
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_in.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,porting.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
||
,porting.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,porting.CODICE_OPERATORE_DONATING AS donorRete
|
||
,porting.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,NULL AS terzaParte
|
||
,'D' as processo --,xml_out.TIPO_PROCESSO AS processo
|
||
,0 AS richiestaAdHocAom
|
||
,NULL AS codiceGruppo
|
||
,xml_out.NOME_FILE as nomeFile
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tIniziale
|
||
,to_date( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,porting.DATA_CUT_OVER AS dataCutOver
|
||
,porting.MSISDN AS msIsdn
|
||
,ack_out.NOME_FILE AS ackIniziale
|
||
,ack_in.NOME_FILE AS ackFinale
|
||
--,TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' )+2 AS dataAttesaEventoFin
|
||
,TO_CHAR ( TO_DATE( SUBSTR( rich_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,xml_in.NOME_FILE AS nomeFileIniziale
|
||
,rich_out.NOME_FILE AS nomeFileFinale
|
||
FROM mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out ,
|
||
mnp.MNP_GESTIONE_RICHIESTA_PORTING porting,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_OUT xml_out
|
||
WHERE ack_out.NOME_FILE_RIFERITO= rich_in.NOME_FILE
|
||
AND xml_in.TIPO_FILE =3 --porting
|
||
AND rich_in.NOME_FILE = xml_in.NOME_FILE
|
||
AND ack_out.NOME_FILE_RIFERITO= xml_in.NOME_FILE
|
||
AND xml_out.TIPO_FILE =6 ---espletamento
|
||
AND rich_out.NOME_FILE = xml_out.NOME_FILE
|
||
AND porting.ID_RICHIESTA =rich_out.ID_RICHIESTA
|
||
AND rich_in.ID_RICHIESTA =rich_out.ID_RICHIESTA
|
||
AND ack_in.NOME_FILE_RIFERITO =xml_out.NOME_FILE
|
||
AND to_date( SUBSTR( rich_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
ora_fin_ftemp2 := null;
|
||
min_fin_ftemp2 := null;
|
||
sec_fin_ftemp2 := null;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 3;
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := rec.tIniziale;
|
||
|
||
END IF;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := DWH.FUN_GIORNI_PIU (rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 >2
|
||
THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu(temp_data_in,2);
|
||
-- giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(temp_data_in,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *10;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
end;
|
||
end if;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA3_DONOR ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
|
||
|
||
END CARICAMENTO_SLA3_DONOR;
|
||
|
||
|
||
procedure CARICAMENTO_SLA1_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_DONOR_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_don_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA1' as tipoMessaggio
|
||
,rich_don_virt.CODICE_OPERATORE_DONATING AS donorEffettivo
|
||
,rich_don_virt.CODICE_OPERATORE_RECIPIENT AS recipientEffettivo
|
||
,stor_don_virt_fin.DATA_I_O as dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'R' as processo
|
||
, 0 as richiestaAdHocAom
|
||
, NULL as codiceGruppo
|
||
, NULL as nomeFile
|
||
,stor_don_virt_ini.DATA_I_O AS tIniziale
|
||
,stor_don_virt_fin.DATA_I_O AS tFinale
|
||
,rich_don_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_don_virt.MSISDN AS msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_don_virt_ini.DATA_I_O + 1 AS dataAttesaEventoFin
|
||
,TO_CHAR( stor_don_virt_fin.DATA_I_O ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_DONOR_VIRT rich_don_virt ,
|
||
mnp.MNP_STORICO_RICH_DON_VIRT stor_don_virt_ini,
|
||
mnp.MNP_STORICO_RICH_DON_VIRT stor_don_virt_fin
|
||
WHERE rich_don_virt.ID_RICHIESTA = stor_don_virt_ini.ID_RICHIESTA
|
||
AND rich_don_virt.ID_RICHIESTA = stor_don_virt_fin.ID_RICHIESTA
|
||
AND stor_don_virt_ini.STATO_A = 2 ----LAVORABILE
|
||
AND stor_don_virt_fin.STATO_A IN (6,7) ----VALIDAZIONE OK/KO
|
||
AND stor_don_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc( rec.tIniziale)) -1 >1
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,1);
|
||
-- giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,1) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagcalcolonumsim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA1_DONOR_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA1_DONOR_VIRT;
|
||
|
||
|
||
procedure CARICAMENTO_SLA2_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_DONOR_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
dataFinale DATE;
|
||
CURSOR record_sla is
|
||
SELECT rich_don_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA2' as tipoMessaggio
|
||
,rich_don_virt.CODICE_OPERATORE_DONATING AS donorEffettivo
|
||
,rich_don_virt.CODICE_OPERATORE_RECIPIENT AS recipientEffettivo
|
||
,stor_don_virt_fin.DATA_I_O AS dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,NULL as nomeFile
|
||
,stor_don_virt_ini.DATA_I_O AS tIniziale
|
||
,stor_don_virt_fin.DATA_I_O AS tFinale
|
||
,rich_don_virt.DATA_CUT_OVER_CALC AS dataCutOver
|
||
,rich_don_virt.MSISDN AS msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_don_virt_ini.DATA_I_O+2 AS dataAttesaEventoFin
|
||
,TO_CHAR( stor_don_virt_fin.DATA_I_O ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_DONOR_VIRT rich_don_virt ,
|
||
mnp.MNP_STORICO_RICH_DON_VIRT stor_don_virt_ini,
|
||
mnp.MNP_STORICO_RICH_DON_VIRT stor_don_virt_fin
|
||
WHERE rich_don_virt.ID_RICHIESTA = stor_don_virt_ini.ID_RICHIESTA
|
||
AND rich_don_virt.ID_RICHIESTA = stor_don_virt_fin.ID_RICHIESTA
|
||
AND stor_don_virt_ini.STATO_A = 6 ----VALIDAZIONE OK
|
||
AND stor_don_virt_fin.STATO_A =10 ----CESSATA
|
||
AND stor_don_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
FOR rec IN record_sla LOOP
|
||
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc(rec.tIniziale)) -1 > 2
|
||
then
|
||
begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
--giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagcalolonumsim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_DONOR_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA2_DONOR_VIRT;
|
||
|
||
|
||
procedure CARICAMENTO_SLA3_DONOR_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_DONOR_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
dataFinale DATE;
|
||
|
||
CURSOR record_sla is
|
||
SELECT rich_don_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,xml_in.MITTENTE AS donorEffettivo --forzatura terza parte in donor EFFETTIVO (al posto di rich_don_virt.CODICE_OPERATORE_DONATING ) per dbcgo
|
||
,rich_don_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE AS terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,ack_out.NOME_FILE AS nomeFile
|
||
,stor_don_virt.DATA_I_O AS tIniziale
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,rich_don_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_don_virt.MSISDN AS msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_don_virt.DATA_I_O+2 AS dataAttesaEventoFin
|
||
,TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) as meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_DONOR_VIRT rich_don_virt ,
|
||
mnp.MNP_STORICO_RICH_DON_VIRT stor_don_virt,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in
|
||
WHERE rich_don_virt.ID_RICHIESTA = stor_don_virt.ID_RICHIESTA
|
||
AND stor_don_virt.STATO_A = 13 ----ACCETTATA
|
||
AND xml_in.TIPO_FILE = 6 -- ESPLETAMENTO
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND rich_in.ID_RICHIESTA = rich_don_virt.ID_RICHIESTA
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataMessaggio;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(rec.tIniziale)) -1 > 2
|
||
THEN BEGIN
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
--giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *10;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagcalcolonumsim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_DONOR_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA3_DONOR_VIRT;
|
||
|
||
procedure CARICAMENTO_SLA1_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_REC_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA1' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,stor_rec_virt_fin.DATA_I_O AS dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'D' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,NULL as nomeFile
|
||
,stor_rec_virt_ini.DATA_I_O as tIniziale
|
||
,stor_rec_virt_fin.DATA_I_O as tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN AS msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt_ini.DATA_I_O+1 AS dataAttesaEventoFin
|
||
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) as meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_ini,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_fin
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt_ini.ID_RICHIESTA
|
||
AND rich_rec_virt.ID_RICHIESTA = stor_rec_virt_fin.ID_RICHIESTA
|
||
AND stor_rec_virt_ini.STATO_A = 2 ----LAVORABILE
|
||
AND stor_rec_virt_fin.STATO_A IN (6,7) ----VALIDAZIONE OK/KO
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING = 'TIMG'
|
||
AND stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc( rec.tIniziale)) -1 >1
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,1);
|
||
--giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,1) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA1_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA1_REC_VIRT;
|
||
|
||
|
||
procedure CARICAMENTO_SLA2_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_REC_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA2' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,stor_rec_virt_fin.DATA_I_O as dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'D' as processo
|
||
, 0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,NULL as nomeFile
|
||
,stor_rec_virt_ini.DATA_I_O as tIniziale
|
||
,stor_rec_virt_fin.DATA_I_O as tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt_ini.DATA_I_O+2 AS dataAttesaEventoFin
|
||
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) as meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_ini,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_fin
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt_ini.ID_RICHIESTA
|
||
AND rich_rec_virt.ID_RICHIESTA = stor_rec_virt_fin.ID_RICHIESTA
|
||
AND stor_rec_virt_ini.STATO_A = 6 ----VALIDAZIONE OK
|
||
AND stor_rec_virt_fin.STATO_A =10 ----CESSATA
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING = 'TIMG'
|
||
AND stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc( rec.tIniziale)) -1 >2
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
-- giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA2_REC_VIRT;
|
||
|
||
|
||
procedure CARICAMENTO_SLA3_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS -- DA MODIFICARE!!!
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_REC_VIRT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,xml_in.MITTENTE AS donorEffettivo -- forzatura terzaParte nel donating EFFETTIVO (al posto di rich_rec_virt.CODICE_OPERATORE_DONATING) per dbcgo
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) as dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'D' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,ack_out.NOME_FILE as nomeFile
|
||
,stor_rec_virt.DATA_I_O as tIniziale
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt.DATA_I_O+2 as dataAttesaEventoFin
|
||
,TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) as dataRicIn
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt.ID_RICHIESTA
|
||
AND stor_rec_virt.STATO_A = 13 ----ACCETTATA
|
||
AND xml_in.TIPO_FILE = 6 -- ESPLETAMENTO
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND rich_in.ID_RICHIESTA = rich_rec_virt.ID_RICHIESTA
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING = 'TIMG'
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( rec.tIniziale)) -1 >2
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
-- giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *10;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA3_REC_VIRT;
|
||
|
||
|
||
procedure CARICAMENTO_SLA1_REC_VIRT_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_REC_VIRT_M2M';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA1' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,stor_rec_virt_fin.DATA_I_O as dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'V' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,NULL as nomeFile
|
||
,stor_rec_virt_ini.DATA_I_O as tIniziale
|
||
,stor_rec_virt_fin.DATA_I_O as tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt_ini.DATA_I_O+1 as dataAttesaEventoFin
|
||
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_ini,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_fin
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt_ini.ID_RICHIESTA
|
||
AND rich_rec_virt.ID_RICHIESTA = stor_rec_virt_fin.ID_RICHIESTA
|
||
AND stor_rec_virt_ini.STATO_A = 2 ----LAVORABILE
|
||
AND stor_rec_virt_fin.STATO_A IN (6,7) ----VALIDAZIONE OK/KO
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING <> 'TIMG'
|
||
AND stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc( rec.tIniziale)) -1 >1
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,1);
|
||
-- giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,1) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA1_REC_VIRT_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA1_REC_VIRT_M2M;
|
||
|
||
|
||
procedure CARICAMENTO_SLA2_REC_VIRT_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_REC_VIRT_M2M';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA2' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,stor_rec_virt_fin.DATA_I_O as dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,NULL as terzaParte
|
||
,'V' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,NULL as nomeFile
|
||
,stor_rec_virt_ini.DATA_I_O as tIniziale
|
||
,stor_rec_virt_fin.DATA_I_O as tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt_ini.DATA_I_O+2 as dataAttesaEventoFin
|
||
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_ini,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt_fin
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt_ini.ID_RICHIESTA
|
||
AND rich_rec_virt.ID_RICHIESTA = stor_rec_virt_fin.ID_RICHIESTA
|
||
AND stor_rec_virt_ini.STATO_A = 6 ----VALIDAZIONE OK
|
||
AND stor_rec_virt_fin.STATO_A =10 ----CESSATA
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING <> 'TIMG'
|
||
AND stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
||
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
|
||
BEGIN
|
||
cod_errore := 0;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(rec.tFinale) , trunc( rec.tIniziale)) -1 >2
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
--giorni_ritardo := TRUNC(rec.tFinale- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(rec.tFinale) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *50;
|
||
numero_sim:=0;
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,rec.tFinale
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT_VIRT_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA2_REC_VIRT_M2M;
|
||
|
||
|
||
procedure CARICAMENTO_SLA3_REC_VIRT_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_REC_VIRT_M2M';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
dataFinale DATE;
|
||
penale NUMBER;
|
||
giorni_ritardo NUMBER;
|
||
numero_sim NUMBER;
|
||
|
||
CURSOR record_sla is
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,xml_in.MITTENTE as donorEffettivo --forzatura terzaParte per dbcgo al posto di rich_rec_virt.CODICE_OPERATORE_DONATING
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,'TIMG' AS donorRete
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'V' as processo
|
||
,0 as richiestaAdHocAom
|
||
,NULL as codiceGruppo
|
||
,ack_out.NOME_FILE as nomeFile
|
||
,stor_rec_virt.DATA_I_O as tIniziale
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS tFinale
|
||
,rich_rec_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,NULL as ackIniziale
|
||
,NULL as ackFinale
|
||
--,stor_rec_virt.DATA_I_O+2 as dataAttesaEventoFin
|
||
, TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,NULL AS nomeFileFinale
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) AS dataRicIn
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_STORICO_RICH_REC_VIRT stor_rec_virt,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in
|
||
WHERE rich_rec_virt.ID_RICHIESTA = stor_rec_virt.ID_RICHIESTA
|
||
AND stor_rec_virt.STATO_A = 13 ----ACCETTATA
|
||
AND xml_in.TIPO_FILE = 6 -- ESPLETAMENTO
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND xml_in.NOME_FILE = rich_in.NOME_FILE
|
||
AND rich_in.ID_RICHIESTA = rich_rec_virt.ID_RICHIESTA
|
||
AND rich_rec_virt.CODICE_OPERATORE_DONATING <> 'TIMG'
|
||
AND to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
||
BEGIN
|
||
cod_errore := 0;
|
||
ora_fin_ftemp1 := null;
|
||
min_fin_ftemp1 := null;
|
||
sec_fin_ftemp1 := null;
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftemp1,min_fin_ftemp1,sec_fin_ftemp1
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 6;
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp1 ||min_fin_ftemp1||sec_fin_ftemp1),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := rec.dataRicIn;
|
||
ELSE
|
||
temp_data_fin := rec.tFinale;
|
||
END IF;
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( rec.tIniziale)) -1 >2
|
||
then begin
|
||
dataFinale:=fun_giorni_piu(rec.tIniziale,2);
|
||
-- giorni_ritardo := TRUNC(temp_data_fin- fun_giorni_piu(rec.tIniziale,2) );
|
||
giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
penale:= giorni_ritardo *10;
|
||
numero_sim:=0;
|
||
|
||
INSERT INTO MNP_DW_SLA_3GG_OUT (
|
||
ID_RICHIESTA, TIPO_MESSAGGIO, DONOR_EFFETTIVO,
|
||
RECIPIENT_EFFETTIVO, DATA_MESSAGGIO, DONOR_RETE,
|
||
RECIPIENT_RETE, TERZA_PARTE, PROCESSO,
|
||
FLAG_CALCOLO_NUMSIM, NOME_FILE, T_INIZIALE,
|
||
T_FINALE, DATA_CUT_OVER, MSISDN,
|
||
ACK_INIZIALE, ACK_FINALE, DATA_ATTESA_EVENTO_FIN,
|
||
MESE_COMP_FINALE, NOME_FILE_INIZIALE, NOME_FILE_FINALE,NUMERO_GIORNI_RITARDO,PENALE,NUMERO_SIM,PROC_NAME)
|
||
VALUES (
|
||
rec.idRichiesta
|
||
,rec.tipoMessaggio
|
||
,rec.donorEffettivo
|
||
,rec.recipientEffettivo
|
||
,rec.dataMessaggio
|
||
,rec.donorRete
|
||
,rec.recipientRete
|
||
,rec.terzaParte
|
||
,rec.processo
|
||
,0 --flagCalcoloNumSim
|
||
,rec.nomeFile
|
||
,rec.tIniziale
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,giorni_ritardo
|
||
,penale
|
||
,numero_sim ,proc_name
|
||
);
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440)||' - RECORDS TRATTATI: '||N_REC);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
if record_sla%ISOPEN then CLOSE record_sla;
|
||
end if;
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore in DWH.CARICAMENTO_SLA2_RECIPIENT_VIRT_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CARICAMENTO_SLA3_REC_VIRT_M2M;
|
||
|
||
procedure CALCOLO_SLA_PENALI(dataRif IN Date) IS
|
||
|
||
cod_errore NUMBER (1);
|
||
|
||
cod_errore_sla0_don NUMBER (1);
|
||
cod_errore_sla1_don NUMBER (1);
|
||
cod_errore_sla2_don NUMBER (1);
|
||
cod_errore_sla3_don NUMBER (1);
|
||
|
||
cod_errore_sla0_rec NUMBER (1);
|
||
cod_errore_sla1_rec NUMBER (1);
|
||
cod_errore_sla2_rec NUMBER (1);
|
||
cod_errore_sla3_rec NUMBER (1);
|
||
|
||
cod_errore_sla1_don_virt NUMBER (1);
|
||
cod_errore_sla2_don_virt NUMBER (1);
|
||
cod_errore_sla3_don_virt NUMBER (1);
|
||
|
||
cod_errore_sla1_rec_virt NUMBER (1);
|
||
cod_errore_sla2_rec_virt NUMBER (1);
|
||
cod_errore_sla3_rec_virt NUMBER (1);
|
||
|
||
cod_errore_sla1_rec_virt_M2M NUMBER (1);
|
||
cod_errore_sla2_rec_virt_M2M NUMBER (1);
|
||
cod_errore_sla3_rec_virt_M2M NUMBER (1);
|
||
|
||
errore_calcolo_sla0 NUMBER (1);
|
||
errore_calcolo_sla1 NUMBER (1);
|
||
errore_calcolo_sla2 NUMBER (1);
|
||
errore_calcolo_sla3 NUMBER (1);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CALCOLO_SLA_PENALI';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
|
||
|
||
|
||
BEGIN
|
||
dbms_output.enable(9999999);
|
||
D_ini:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: INIZIO PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
||
-----------------------------------------------------
|
||
-- DELETE PREVENTIVA DELLE TABELLA PENALI
|
||
-----------------------------------------------------
|
||
DELETE MNP_DW_SLA_3GG_OUT WHERE TO_CHAR(DATA_MESSAGGIO,'mm/yyyy')=TO_CHAR(ADD_MONTHS(dataRif,-1),'mm/yyyy');
|
||
|
||
cod_errore := 0;
|
||
|
||
|
||
-- caricamento dati per il processo donor nella tabella MNP_DW_SLA_3GG_OUT
|
||
caricamento_sla0_donor(dataRif,cod_errore_sla0_don);
|
||
caricamento_sla1_donor(dataRif,cod_errore_sla1_don);
|
||
caricamento_sla2_donor(dataRif,cod_errore_sla2_don);
|
||
caricamento_sla3_donor(dataRif,cod_errore_sla3_don);
|
||
|
||
-- caricamento dati per il processo recipient nella tabella MNP_DW_SLA_3GG_OUT
|
||
caricamento_sla0_recipient(dataRif,cod_errore_sla0_rec);
|
||
caricamento_sla1_recipient(dataRif,cod_errore_sla1_rec);
|
||
caricamento_sla2_recipient(dataRif,cod_errore_sla2_rec);
|
||
caricamento_sla3_recipient(dataRif,cod_errore_sla3_rec);
|
||
|
||
-- caricamento dati per il processo donor virtuale nella tabella MNP_DW_SLA_3GG_OUT
|
||
caricamento_sla1_donor_virt(dataRif,cod_errore_sla1_don_virt);
|
||
caricamento_sla2_donor_virt(dataRif,cod_errore_sla2_don_virt);
|
||
caricamento_sla3_donor_virt(dataRif,cod_errore_sla3_don_virt);
|
||
|
||
-- caricamento dati per il processo recipient virtuale nella tabella MNP_DW_SLA_3GG_OUT
|
||
caricamento_sla1_rec_virt(dataRif,cod_errore_sla1_rec_virt);
|
||
caricamento_sla2_rec_virt(dataRif,cod_errore_sla2_rec_virt);
|
||
caricamento_sla3_rec_virt(dataRif,cod_errore_sla3_rec_virt);
|
||
|
||
-- caricamento dati per il processo recipient virtuale nella tabella MNP_DW_SLA_3GG_OUT
|
||
caricamento_sla1_rec_virt_M2M(dataRif,cod_errore_sla1_rec_virt_M2M);
|
||
caricamento_sla2_rec_virt_M2M(dataRif,cod_errore_sla2_rec_virt_M2M);
|
||
caricamento_sla3_rec_virt_M2M(dataRif,cod_errore_sla3_rec_virt_M2M);
|
||
|
||
|
||
cod_errore := cod_errore_sla0_don + cod_errore_sla1_don+cod_errore_sla2_don +cod_errore_sla3_don +
|
||
cod_errore_sla0_rec + cod_errore_sla1_rec + cod_errore_sla2_rec + cod_errore_sla3_rec +
|
||
cod_errore_sla1_rec_virt + cod_errore_sla2_rec_virt + cod_errore_sla3_rec_virt +
|
||
cod_errore_sla1_rec_virt_M2M + cod_errore_sla2_rec_virt_M2M + cod_errore_sla3_rec_virt_M2M +
|
||
cod_errore_sla1_don_virt + cod_errore_sla2_don_virt + cod_errore_sla3_don_virt +
|
||
errore_calcolo_sla0 +errore_calcolo_sla1 +errore_calcolo_sla2 + errore_calcolo_sla3 ;
|
||
|
||
|
||
|
||
IF cod_errore = 0
|
||
THEN
|
||
-- tutto a posto
|
||
DBMS_OUTPUT.put_line ('Caricamento dati e calcolo SLA avvenuto.');
|
||
ELSE
|
||
-- tutto na sola
|
||
DBMS_OUTPUT.put_line ('CARICAMENTO DATI E CALCOLO SLA PARZIALE: PROCESSO TERMINATO CON ERRORI VERIFICARE LOG!');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
D_fine:=sysdate;
|
||
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_PENALI_3GG: FINE PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_FINE,'YYYY-MM-DD HH24:MI:SS')||' - DURATA IN MINUTI:'||TRUNC((D_fine-D_ini)*1440));
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
cod_errore := 1;
|
||
DBMS_OUTPUT.put_line ('Errore nel caricamento dati e calcolo Sla ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
||
RETURN;
|
||
END CALCOLO_SLA_PENALI;
|
||
|
||
|
||
END PKG_CALCOLO_SLA_PENALI_3GG;
|
||
/
|
||
-- INIZIO SLA T.C.
|
||
ALTER TABLE MNP_DW_SLA_TC_OUT
|
||
ADD (DONOR_RETE VARCHAR2(4 BYTE));
|
||
ALTER TABLE MNP_DW_SLA_TC_OUT
|
||
ADD (RECIPIENT_RETE VARCHAR2(4 BYTE));
|
||
ALTER TABLE MNP_DW_SLA_TC_OUT DROP COLUMN DONOR_OSPITATO;
|
||
ALTER TABLE MNP_DW_SLA_TC_OUT DROP COLUMN REC_OSPITATO; |