3705 lines
151 KiB
SQL
3705 lines
151 KiB
SQL
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_ftempH CHAR(2);
|
||
min_fin_ftempH CHAR(2);
|
||
sec_fin_ftempH 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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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 IN( 1, 9 ) ----ATTIVAZIONE progetti STD e HOC
|
||
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 9 ATTIVAZIONE P.HOC
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 9;
|
||
|
||
-- 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;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >0)
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
if flagCalcoloNumSim=0 then
|
||
BEGIN
|
||
-- 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 := dwh.FUN_DATE_FESTIVE_SUCC (rec.tIniziale);
|
||
END IF;
|
||
END;
|
||
ELSE
|
||
BEGIN
|
||
-- SE IL FILE '9' 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_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC (rec.tIniziale);
|
||
END IF;
|
||
END;
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE E LA CHIUSURA E' ALLE 24.00, SIAMO GIA' AL GIORNO SUCCESSIVO.
|
||
-- NON E' NECESSARIO PERTANTO AGGIUNGERE GIORNATE. IL PRIMO CONTROLLO VERRA' ADOPERATO SOLO IN CASO DI VARIAZIONE DI FINESTRA TEMPORALE
|
||
|
||
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
|
||
-- FORSE IL FILE E' ARRIVATO A MEZZANOTTE E 20 DEL GIORNO DOPO..... MA FORSE IL GIORNO DOPO E' SABATO! CHE SFIGA!
|
||
temp_data_fin := FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
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 */
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta_rec c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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 AND DONOR_RETE=rec.donorRete;
|
||
|
||
-- 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=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
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;
|
||
ackFinaleLetto VARCHAR2(27);
|
||
fileFinaleLetto 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);
|
||
ora_fin_ftempH CHAR(2);
|
||
min_fin_ftempH CHAR(2);
|
||
sec_fin_ftempH CHAR(2);
|
||
n_rec integer := 0;
|
||
flagStop integer :=0;
|
||
num_validazioni NUMBER(1):=0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
|
||
-- @FATTO AGGIUNGERE UNA SOTTOQUERY CHE, PER XML_IN (FILE DI VALIDAZIONE) ESTRAGGA LA MAX SULLA DATA DEL NOME FILE
|
||
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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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 IN (1,9) ---ATTIVAZIONE progetti STD e HOC
|
||
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));
|
||
--and xml_in.NOME_FILE = (select MAX(X.NOME_FILE)
|
||
-- FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
||
-- WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
||
-- AND x.TIPO_FILE=2 --validazione
|
||
-- AND y.NOME_FILE = x.NOME_FILE
|
||
-- );
|
||
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;
|
||
|
||
-- @todoPROBABILMENTE NON E' IL MODO GIUSTO PER CALCOLARE LA FINESTRA CHE DOVREBBE ESSERE 04.00->10.00 (INFASAMENTO TABELLA?)
|
||
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 9 ATTIVAZIONE P.HOC
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 9;
|
||
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 AND TIPO_OPERATORE= 'AOM';
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
flagStop:=0;
|
||
n_rec := n_rec +1;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >0)
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
|
||
if flagCalcoloNumSim=0 then
|
||
begin
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
end;
|
||
else
|
||
begin
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC (rec.tIniziale);
|
||
END IF;
|
||
end;
|
||
end if;
|
||
|
||
-- SE TFINALE FUORI FINESTRA USA LA DATA DEL FILE DI VALIDAZIONE
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
END IF;
|
||
|
||
if FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc(temp_data_in)) -1 >1
|
||
then
|
||
begin
|
||
IF (rec.richiestaadhocaom > 0 OR rec.richiestaadhoc > 0)
|
||
THEN
|
||
BEGIN
|
||
|
||
SELECT COUNT (*)
|
||
INTO num_validazioni
|
||
FROM mnp.mnp_xml_in xml,
|
||
mnp.mnp_xml_richiesta_in richin
|
||
WHERE richin.id_richiesta = rec.idrichiesta
|
||
AND xml.tipo_file = 2
|
||
AND xml.nome_file = richin.nome_file
|
||
AND xml.nome_file < rec.nomefilefinale;
|
||
|
||
IF num_validazioni > 0
|
||
THEN
|
||
BEGIN
|
||
flagstop := 1;
|
||
END;
|
||
END IF;
|
||
END;
|
||
END IF;
|
||
|
||
|
||
IF FLAgstop = 0 then
|
||
BEGIN --iniZXIA QUI
|
||
dataFinale:=fun_giorni_piu(temp_data_in,1); /*data attesa evento finale*/
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN
|
||
-- begin
|
||
-- SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta_rec c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- end;
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_numero_sim ,proc_name
|
||
);
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT ACK_FINALE,NOME_FILE_FINALE
|
||
INTO ackFinaleLetto, fileFinaleLetto
|
||
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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
|
||
-- gestisco la data di prima validazione
|
||
IF (to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
OR
|
||
(to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) = to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AND to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
|
||
THEN
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( temp_data_in)) -1 >1
|
||
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=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE = rec.donorRete;
|
||
|
||
ELSE
|
||
|
||
DELETE 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
|
||
AND DONOR_RETE = rec.donorRete;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END; --FINISCE QUI
|
||
END IF;
|
||
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_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp CHAR(2);
|
||
min_fin_ftemp CHAR(2);
|
||
sec_fin_ftemp 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_RECIPIENT';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
-- @FATTO deve fare la max sul nome del file di xml_in (QUINDI LA MAX SU RICH_IN NOME FILE)
|
||
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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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 xml_in.TIPO_FILE =2----VALIDAZIONE
|
||
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
||
AND ack_out.NOME_FILE = xml_out.nome_file
|
||
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))
|
||
and xml_in.NOME_FILE = (select MAX(X.NOME_FILE)
|
||
FROM mnp.MNP_XML_IN x, mnp.MNP_XML_RICHIESTA_IN y
|
||
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
||
AND x.TIPO_FILE=2 --validazione
|
||
AND y.NOME_FILE = x.NOME_FILE
|
||
);
|
||
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;
|
||
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_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE= 'AOM';
|
||
|
||
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.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp ||min_fin_ftemp||sec_fin_ftemp),'YYYYMMDDHH24MISS') --data file espletamento
|
||
THEN
|
||
temp_data_fin := dwh.FUN_GIORNI_PIU(rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
|
||
END IF;
|
||
|
||
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >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);
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta_rec c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND c.RICHIESTAADHOCAOM > 0;
|
||
-- ELSE
|
||
l_numero_sim := 0;
|
||
-- END IF;
|
||
-- @FATTO deve gestire la chiave duplicata ed aggiornare quando la data dell'ack_in <20> minore della data dell'ack_in letto (primo ack)
|
||
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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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 AND DONOR_RETE=rec.donorRete;
|
||
-- 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=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
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_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_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
-- @FATTO su xml_out eliminare destinatario NPTS
|
||
CURSOR record_sla is
|
||
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo -- rif. email Letizia 29/9/10 era null
|
||
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era rich_rec.CODICE_OPERATORE_DONOR
|
||
,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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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_out.DESTINATARIO <> 'NPTS'
|
||
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 xml_out.destinatario = xml_in.mittente
|
||
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'));
|
||
|
||
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_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
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_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.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftemp2 ||min_fin_ftemp2||sec_fin_ftemp2),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := dwh.FUN_GIORNI_PIU(rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
IF rec.tFinale > TO_DATE ((TO_CHAR (rec.tFinale, 'YYYYMMDD')||ora_fin_ftemp ||min_fin_ftemp||sec_fin_ftemp),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_fin := dwh.FUN_GIORNI_PIU(rec.tFinale, 1);
|
||
ELSE
|
||
temp_data_fin := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *10;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta_rec c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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 AND DONOR_RETE=rec.donorRete;
|
||
|
||
-- 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=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
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
|
||
fileInizialeLetto VARCHAR2(27);
|
||
fileFinaleLetto VARCHAR2(27);
|
||
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_ftempH CHAR(2);
|
||
min_fin_ftempH CHAR(2);
|
||
sec_fin_ftempH 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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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 IN(1,9) --ATTIVAZIONE progetti STD e HOC
|
||
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;
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 9;
|
||
|
||
-- per pic presa dal nome file out non sono previsti i 15 minuti
|
||
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 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;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >0)
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
if flagCalcoloNumSim=0 then
|
||
BEGIN
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
|
||
END IF;
|
||
END;
|
||
ELSE
|
||
BEGIN
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
|
||
END IF;
|
||
END;
|
||
end if;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE E LA CHIUSURA E' ALLE 24.00, SIAMO GIA' AL GIORNO SUCCESSIVO.
|
||
-- NON E' NECESSARIO PERTANTO AGGIUNGERE GIORNATE. IL PRIMO CONTROLLO VERRA' ADOPERATO SOLO IN CASO DI VARIAZIONE DI FINESTRA TEMPORALE
|
||
|
||
|
||
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
|
||
-- FORSE IL FILE E' ARRIVATO A MEZZANOTTE E 20 DEL GIORNO DOPO..... MA FORSE IL GIORNO DOPO E' SABATO! CHE SFIGA!
|
||
temp_data_fin := FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
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);
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_numero_sim ,proc_name
|
||
);
|
||
|
||
--@@@ gestione del doppio invio di presa in carico e doppia ricezione dell'attivazione: in entrambi i casi si considera il primo invio/ricezione
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT NOME_FILE_INIZIALE, ACK_INIZIALE, NOME_FILE_FINALE
|
||
INTO fileInizialeLetto, ackInizialeLetto, fileFinaleLetto
|
||
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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
-- se data del file iniziale della nuova riga < data del file iniziale preesistente oppure se la data del file <20> la stessa e la data dell'ack della
|
||
-- nuova riga < data ack preesistente devo aggiornare
|
||
-- oppure se data del file finale della nuova riga < data del file finale preesistente, devo aggiornare
|
||
|
||
--2
|
||
IF (to_date( SUBSTR( rec.nomeFileIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(fileInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
OR
|
||
(to_date( SUBSTR( rec.nomeFileIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) = to_date( SUBSTR(fileInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AND to_date( SUBSTR( rec.ackIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
OR (to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
|
||
THEN
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( temp_data_in)) -1 >0 --1
|
||
THEN
|
||
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_FINALE=temp_data_fin
|
||
,ACK_INIZIALE=rec.ackIniziale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NOME_FILE_INIZIALE=rec.nomeFileIniziale
|
||
,NUMERO_GIORNI_RITARDO=l_giorni_ritardo
|
||
,PENALE=l_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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
ELSE
|
||
|
||
DELETE 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
|
||
AND DONOR_RETE='TIMG';
|
||
END IF; --1
|
||
END IF; --2
|
||
|
||
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_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
|
||
ackFinaleLetto VARCHAR2(27);
|
||
fileFinaleLetto 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_ftempH CHAR(2);
|
||
min_fin_ftempH CHAR(2);
|
||
sec_fin_ftempH CHAR(2);
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
n_rec integer := 0;
|
||
flagStop integer := 0;
|
||
num_validazioni NUMBER(1):=0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA1_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
-- @TODO BY ALE AGGIUNGERE UNA SOTTOQUERY CHE, PER XML_OUT (FILE DI VALIDAZIONE) ESTRAGGA LA MAX SULLA DATA DEL NOME FILE?
|
||
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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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_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 IN(1,9) --ATTIVAZIONE progetti STD e HOC
|
||
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));
|
||
/*and xml_out.NOME_FILE = (select MAX(X.NOME_FILE)
|
||
FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
||
WHERE y.ID_RICHIESTA= rich_in.ID_RICHIESTA
|
||
AND x.TIPO_FILE=2 --validazione
|
||
AND y.NOME_FILE = x.NOME_FILE
|
||
); */
|
||
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;
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE 9 ATTIVAZIONE P.HOC
|
||
SELECT SUBSTR(T_FINALE_ACK, 1,2), SUBSTR(T_FINALE_ACK, 4,2), SUBSTR(T_FINALE_ACK, 7,2)
|
||
INTO ora_fin_ftempH,min_fin_ftempH,sec_fin_ftempH
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 9;
|
||
|
||
-- per validazione presa dal nome file out non sono previsti i 15 minuti
|
||
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 7,2)
|
||
INTO ora_fin_ftemp2,min_fin_ftemp2,sec_fin_ftemp2
|
||
FROM mnp.MNP_ANAG_FINESTRE_TEMPORALI
|
||
WHERE TIPO_FILE = 2 AND TIPO_OPERATORE= 'AOM';
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
flagStop:=0;
|
||
n_rec := n_rec +1;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >0)
|
||
THEN
|
||
flagCalcoloNumSim:=1;
|
||
ELSE
|
||
flagCalcoloNumSim:=0;
|
||
END IF;
|
||
if flagCalcoloNumSim = 0 then
|
||
begin
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
|
||
END IF;
|
||
end;
|
||
else
|
||
begin
|
||
IF rec.tIniziale > TO_DATE ((TO_CHAR (rec.tIniziale, 'YYYYMMDD')||ora_fin_ftempH ||min_fin_ftempH||sec_fin_ftempH),'YYYYMMDDHH24MISS')
|
||
THEN
|
||
temp_data_in := DWH.FUN_GIORNI_PIU (rec.tIniziale, 1);
|
||
ELSE
|
||
temp_data_in := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
|
||
END IF;
|
||
end;
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
END IF;
|
||
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( temp_data_in)) -1 >1
|
||
THEN
|
||
BEGIN
|
||
IF (rec.richiestaadhocaom > 0 OR rec.richiestaadhoc > 0)
|
||
THEN
|
||
BEGIN
|
||
|
||
SELECT count(*)
|
||
INTO num_validazioni
|
||
FROM mnp.MNP_XML_OUT xml, mnp.MNP_XML_RICHIESTA_OUT richOut
|
||
WHERE richOut.ID_RICHIESTA = rec.idRichiesta AND
|
||
xml.TIPO_FILE = 2 AND
|
||
xml.NOME_FILE = richOut.NOME_FILE AND
|
||
xml.NOME_FILE < rec.nomeFileFinale;
|
||
|
||
IF num_validazioni > 0
|
||
THEN
|
||
BEGIN
|
||
flagstop := 1;
|
||
END;
|
||
END IF;
|
||
END;
|
||
END IF;
|
||
|
||
IF flagStop = 0 THEN
|
||
BEGIN
|
||
dataFinale:=fun_giorni_piu( temp_data_in,1);
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_numero_sim ,proc_name
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT NOME_FILE_FINALE, ACK_FINALE
|
||
INTO fileFinaleLetto, ackFinaleLetto
|
||
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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
-- se data del file della nuova riga < data del file preesistente oppure se la data del file <20> la stessa e la data dell'ack della
|
||
-- nuova riga < data ack preesistente devo aggiornare
|
||
|
||
IF (to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
OR
|
||
(to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) = to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AND to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
|
||
THEN
|
||
IF FUN_GIORNI_LAVORATIVI (trunc(temp_data_fin) , trunc( temp_data_in)) -1 >1
|
||
THEN
|
||
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET DATA_MESSAGGIO = rec.dataMessaggio
|
||
,FLAG_CALCOLO_NUMSIM = flagCalcoloNumSim
|
||
,NOME_FILE = rec.nomeFile
|
||
,T_FINALE=temp_data_fin
|
||
,DATA_CUT_OVER=rec.dataCutOver
|
||
,ACK_FINALE=rec.ackFinale
|
||
,DATA_ATTESA_EVENTO_FIN=dataFinale
|
||
,MESE_COMP_FINALE=rec.meseCompFinale
|
||
,NOME_FILE_FINALE=rec.nomeFileFinale
|
||
,NUMERO_GIORNI_RITARDO=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
ELSE
|
||
|
||
DELETE 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
|
||
AND DONOR_RETE='TIMG';
|
||
END IF;
|
||
END IF;
|
||
|
||
END;
|
||
END; --qui finisce il fuori sl
|
||
END IF; --qui finisce se flag stop = 0
|
||
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);
|
||
fileInizialeLetto 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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
--@TODO BY ALE AGGIUNGERE UNA SOTTOQUERY CHE, PER XML_OUT (FILE DI VALIDAZIONE) ESTRAGGA LA MAX SULLA DATA DEL NOME FILE?
|
||
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.RICHIESTAADHOC AS richiestaAdHoc
|
||
,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
|
||
,ack_in_fin.NOME_FILE AS ackFinale
|
||
,TO_CHAR ( TO_DATE( SUBSTR( xml_out_fin.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
||
,ack_in.NOME_FILE_RIFERITO 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));
|
||
-- and xml_out.NOME_FILE = (select MAX(X.NOME_FILE)
|
||
-- FROM mnp.MNP_XML_OUT x, mnp.MNP_XML_RICHIESTA_OUT y
|
||
-- WHERE y.ID_RICHIESTA= rich_out.ID_RICHIESTA
|
||
-- AND x.TIPO_FILE=2 --validazione
|
||
-- AND y.NOME_FILE = x.NOME_FILE
|
||
-- );
|
||
|
||
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 AND TIPO_OPERATORE='AOM';
|
||
-- per espletamento preso dal nome file out non sono previsti i 15 minuti
|
||
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 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 := dwh.FUN_DATE_FESTIVE_SUCC(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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
END IF;
|
||
-- VALORIZZAZIONE richiestaAdHocAom IN FUNZIONE DEL CODICE GRUPPO
|
||
IF TRIM(rec.codiceGruppo) IS NOT NULL AND (rec.richiestaAdHocAom > 0 or rec.richiestaAdHoc >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);
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:=l_giorni_ritardo*50;
|
||
-- if flagCalcoloNumSim = 1
|
||
-- THEN SELECT COUNT(*)
|
||
-- INTO l_numero_sim
|
||
-- FROM mnp.mnp_gestione_richiesta c
|
||
-- WHERE c.CODICE_GRUPPO=rec.codiceGruppo
|
||
-- AND (c.RICHIESTAADHOCAOM > 0 or c.RICHIESTAADHOC >0);
|
||
-- ELSE
|
||
l_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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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, NOME_FILE_INIZIALE
|
||
INTO ackInizialeLetto, fileInizialeLetto
|
||
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 AND DONOR_RETE=rec.donorRete;
|
||
|
||
-- 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??
|
||
|
||
-- gestisco la data di secoda validazione
|
||
IF (to_date( SUBSTR( rec.nomeFileIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) > to_date( SUBSTR(fileInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
OR
|
||
(to_date( SUBSTR( rec.nomeFileIniziale, 5 , 14) ,'YYYYMMDDHH24MISS' ) = to_date( SUBSTR(fileInizialeLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
||
AND 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=l_giorni_ritardo
|
||
,PENALE=l_penale
|
||
,NUMERO_SIM=l_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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
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
|
||
AND DONOR_RETE=rec.donorRete;
|
||
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);
|
||
fileFinaleLetto VARCHAR2(27);
|
||
n_rec integer := 0;
|
||
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_DONOR';
|
||
D_ini DATE;
|
||
D_fine DATE;
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
--@FATTO FILTRATI I FLES DI NPTS. SUL TIPO 6 ESPLETAMENTO
|
||
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
|
||
,'TIMG' as donorRete -- rif. email Letizia 27/9 era porting.CODICE_OPERATORE_DONATING AS donorRete
|
||
,porting.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
||
,'TIMG' AS terzaParte -- rif. email Letizia 29/9/10 era null
|
||
,'D' as processo --,xml_out.TIPO_PROCESSO AS processo
|
||
,0 AS richiestaAdHocAom --, 0 as richiestaAdHoc
|
||
,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_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 xml_out.DESTINATARIO <> 'NPTS' --email Letizia 27/9
|
||
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;
|
||
-- per espletamento preso dal nome file out non sono previsti i 15 minuti
|
||
SELECT SUBSTR(T_FINALE, 1,2), SUBSTR(T_FINALE, 4,2), SUBSTR(T_FINALE, 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 := dwh.FUN_DATE_FESTIVE_SUCC(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 := dwh.FUN_DATE_FESTIVE_SUCC(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);
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *10;
|
||
l_numero_sim:=0;
|
||
--@TODO BY ALE SLA3_RECIPIENT GESTISCE IL DUP_VAL_ON_INDEX SLA3_DONOR NO E' CORRETTO?
|
||
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
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_numero_sim ,proc_name
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN dup_val_on_index
|
||
THEN BEGIN
|
||
-- lettura dati preesistenti
|
||
SELECT NOME_FILE_FINALE
|
||
INTO fileFinaleLetto
|
||
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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
-- se data del file della nuova riga > data del file preesistente
|
||
|
||
IF (to_date( SUBSTR( rec.nomeFileFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) > to_date( SUBSTR(fileFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' ))
|
||
|
||
THEN
|
||
|
||
UPDATE MNP_DW_SLA_3GG_OUT
|
||
SET ID_RICHIESTA = rec.idRichiesta
|
||
,TIPO_MESSAGGIO = rec.tipoMessaggio
|
||
,DONOR_EFFETTIVO = rec.donorEffettivo
|
||
,RECIPIENT_EFFETTIVO = rec.recipientEffettivo
|
||
,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 = l_giorni_ritardo
|
||
,PENALE = l_penale
|
||
,NUMERO_SIM = l_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
|
||
AND DONOR_RETE='TIMG';
|
||
|
||
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_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
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);
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
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
|
||
,'V' as processo
|
||
, 0 as richiestaAdHocAom --, 0 as richiestaAdHoc
|
||
, 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
|
||
,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
|
||
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;
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
|
||
cod_errore := 0;
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '?' 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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '?' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
dataFinale 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);
|
||
temp_data_in DATE;
|
||
temp_data_fin 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
|
||
,'V' as processo
|
||
,0 as richiestaAdHocAom --, 0 as richiestaAdHoc
|
||
,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
|
||
,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
|
||
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;
|
||
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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;
|
||
|
||
cod_errore := 0;
|
||
FOR rec IN record_sla LOOP
|
||
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '?' 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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '?' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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_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);
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
dataFinale DATE;
|
||
|
||
|
||
--@TODO BY ALE FORSE ANDRANNO FILTRATI I FLES DI NPTS. SUL TIPO 6 ESPLETAMENTO O SUL TIPO 3 PORTING ?? O FORSE NO?
|
||
CURSOR record_sla is
|
||
/* vecchia query
|
||
SELECT rich_don_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_don_virt.CODICE_OPERATORE_DONATING AS donorEffettivo -- rif. email Letizia 29/9/10 era XML_IN.MITTENTE
|
||
,rich_don_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG'
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE AS terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --, 0 as richiestaAdHoc
|
||
,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
|
||
,ack_out.nome_file as ackFinale
|
||
,TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) as meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,xml_in.NOME_FILE 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));
|
||
*/
|
||
SELECT rich_don_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_don_virt.CODICE_OPERATORE_DONATING AS donorEffettivo -- rif. email Letizia 29/9/10 era XML_IN.MITTENTE
|
||
,rich_don_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( rich_in.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG'
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE AS terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --, 0 as richiestaAdHoc
|
||
,NULL 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_don_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_don_virt.MSISDN AS msIsdn
|
||
,ack_in.NOME_FILE as ackIniziale
|
||
,ack_out.nome_file as ackFinale
|
||
,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
|
||
FROM mnp.MNP_GEST_RICH_DONOR_VIRT rich_don_virt ,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out,
|
||
mnp.MNP_XML_OUT xml_out
|
||
where rich_out.id_richiesta = rich_in.id_richiesta
|
||
AND ack_in.nome_file_riferito=rich_out.nome_file
|
||
and rich_out.nome_file = xml_out.nome_file
|
||
and xml_out.tipo_file = 3 --porting
|
||
and xml_out.destinatario <> 'NPTS'
|
||
and xml_out.destinatario = xml_in.mittente
|
||
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;
|
||
temp_data_in := NULL;
|
||
temp_data_fin := 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;
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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;
|
||
|
||
cod_errore := 0;
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '?' 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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *10;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
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);
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
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 --,0 as richiestaAdHoc
|
||
,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
|
||
,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
|
||
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;
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
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);
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
|
||
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 --,0 as richiestaAdHoc
|
||
,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
|
||
,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
|
||
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;
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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;
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
CURSOR record_sla is
|
||
/* vecchia query
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING AS donorEffettivo -- rif. email Letizia 29/9/10 era xml_in.MITTENTE
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) as dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG''
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --,0 as richiestaAdHoc
|
||
,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
|
||
,ack_out.nome_file as ackFinale
|
||
,TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,xml_in.NOME_FILE 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));
|
||
*/
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING AS donorEffettivo -- rif. email Letizia 29/9/10 era xml_in.MITTENTE
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT AS recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) as dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG''
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --,0 as richiestaAdHoc
|
||
,NULL 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_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,ack_in.NOME_FILE as ackIniziale
|
||
,ack_out.nome_file as ackFinale
|
||
,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 , 8) ,'YYYYMMDDHH24MISS' ) as dataRicIn
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out,
|
||
mnp.MNP_XML_OUT xml_out
|
||
WHERE rich_out.id_richiesta = rich_in.id_richiesta
|
||
AND ack_in.nome_file_riferito=rich_out.nome_file
|
||
and rich_out.nome_file = xml_out.nome_file
|
||
and xml_out.tipo_file = 3 --porting
|
||
and xml_out.destinatario <> 'NPTS'
|
||
and xml_out.destinatario = xml_in.mittente
|
||
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;
|
||
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;
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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;
|
||
cod_errore := 0;
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '?' 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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *10;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
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);
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
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 --,0 as richiestaAdHoc
|
||
,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
|
||
,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
|
||
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;
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tFinale);
|
||
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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
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);
|
||
temp_data_in DATE;
|
||
temp_data_fin DATE;
|
||
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 --,0 as richiestaAdHoc
|
||
,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
|
||
,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
|
||
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;
|
||
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'));
|
||
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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 AND TIPO_OPERATORE = 'MVNO';
|
||
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
||
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;
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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); --qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) ); --qui
|
||
l_penale:= l_giorni_ritardo *50;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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_in DATE;
|
||
temp_data_fin DATE;
|
||
ora_fin_ftemp1 CHAR(2);
|
||
min_fin_ftemp1 CHAR(2);
|
||
sec_fin_ftemp1 CHAR(2);
|
||
dataFinale DATE;
|
||
l_penale NUMBER;
|
||
l_giorni_ritardo NUMBER;
|
||
l_numero_sim NUMBER;
|
||
ora_fin_ftemp2 CHAR(2);
|
||
min_fin_ftemp2 CHAR(2);
|
||
sec_fin_ftemp2 CHAR(2);
|
||
CURSOR record_sla is
|
||
/*
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo -- rif. email Letizia 29/9/10 era xml_in.MITTENTE
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG''
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --,0 as richiestaAdHoc
|
||
,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
|
||
,ack_out.nome_file as ackFinale
|
||
, TO_CHAR( to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) ,'MM/YYYY' ) AS meseCompFinale
|
||
,NULL AS nomeFileIniziale
|
||
,xml_in.NOME_FILE 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));
|
||
*/
|
||
SELECT rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
||
,'SLA3' as tipoMessaggio
|
||
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo -- rif. email Letizia 29/9/10 era xml_in.MITTENTE
|
||
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
||
,to_date( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ) AS dataMessaggio
|
||
,xml_in.MITTENTE AS donorRete -- rif. email Letizia 29/9/10 era 'TIMG''
|
||
,'TIMG' AS recipientRete
|
||
,xml_in.MITTENTE as terzaParte
|
||
,'R' as processo
|
||
,0 as richiestaAdHocAom --,0 as richiestaAdHoc
|
||
,NULL 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_virt.DATA_CUT_OVER_CALC as dataCutOver
|
||
,rich_rec_virt.MSISDN as msIsdn
|
||
,ack_in.NOME_FILE as ackIniziale
|
||
,ack_out.nome_file as ackFinale
|
||
, 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 , 8) ,'YYYYMMDDHH24MISS' ) AS dataRicIn
|
||
FROM mnp.MNP_GEST_RICH_REC_VIRT rich_rec_virt ,
|
||
mnp.MNP_XML_ACK_OUT ack_out ,
|
||
mnp.MNP_XML_IN xml_in ,
|
||
mnp.MNP_XML_RICHIESTA_IN rich_in,
|
||
mnp.MNP_XML_ACK_IN ack_in ,
|
||
mnp.MNP_XML_RICHIESTA_OUT rich_out,
|
||
mnp.MNP_XML_OUT xml_out
|
||
WHERE rich_out.id_richiesta = rich_in.id_richiesta
|
||
AND ack_in.nome_file_riferito=rich_out.nome_file
|
||
and rich_out.nome_file = xml_out.nome_file
|
||
and xml_out.tipo_file = 3 --porting
|
||
and xml_out.destinatario <> 'NPTS'
|
||
and xml_out.destinatario = xml_in.mittente
|
||
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;
|
||
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 ?
|
||
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;
|
||
cod_errore := 0;
|
||
|
||
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;
|
||
|
||
|
||
|
||
FOR rec IN record_sla LOOP
|
||
n_rec := n_rec +1;
|
||
-- SE IL FILE '?' 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 := dwh.FUN_DATE_FESTIVE_SUCC(rec.tIniziale);
|
||
END IF;
|
||
|
||
-- SE IL FILE '5' E' ARRIVATO OLTRE L'ORA DI FINE FINESTRA TEMPORALE, IMPOSTA T_FINALE ALLA DATA DEL FILE TIPO '5'
|
||
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 := dwh.FUN_DATE_FESTIVE_SUCC(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);--qui
|
||
l_giorni_ritardo := TRUNC( trunc(temp_data_fin) - trunc(dataFinale) );
|
||
l_penale:= l_giorni_ritardo *10;
|
||
l_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
|
||
,temp_data_in
|
||
,temp_data_fin
|
||
,rec.dataCutOver
|
||
,rec.msIsdn
|
||
,rec.ackIniziale
|
||
,rec.ackFinale
|
||
,dataFinale
|
||
,rec.meseCompFinale
|
||
,rec.nomeFileIniziale
|
||
,rec.nomeFileFinale
|
||
,l_giorni_ritardo
|
||
,l_penale
|
||
,l_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):=0;
|
||
cod_errore_sla1_don NUMBER (1):=0;
|
||
cod_errore_sla2_don NUMBER (1):=0;
|
||
cod_errore_sla3_don NUMBER (1):=0;
|
||
|
||
cod_errore_sla0_rec NUMBER (1):=0;
|
||
cod_errore_sla1_rec NUMBER (1):=0;
|
||
cod_errore_sla2_rec NUMBER (1):=0;
|
||
cod_errore_sla3_rec NUMBER (1):=0;
|
||
|
||
cod_errore_sla1_don_virt NUMBER (1):=0;
|
||
cod_errore_sla2_don_virt NUMBER (1):=0;
|
||
cod_errore_sla3_don_virt NUMBER (1):=0;
|
||
|
||
cod_errore_sla1_rec_virt NUMBER (1):=0;
|
||
cod_errore_sla2_rec_virt NUMBER (1):=0;
|
||
cod_errore_sla3_rec_virt NUMBER (1):=0;
|
||
|
||
cod_errore_sla1_rec_virt_M2M NUMBER (1):=0;
|
||
cod_errore_sla2_rec_virt_M2M NUMBER (1):=0;
|
||
cod_errore_sla3_rec_virt_M2M NUMBER (1):=0;
|
||
|
||
|
||
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;
|
||
|
||
|
||
|
||
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;
|
||
/
|