2042 lines
78 KiB
MySQL
2042 lines
78 KiB
MySQL
CREATE OR REPLACE PACKAGE PKG_CALCOLO_SLA_MVNO AS
|
|
/******************************************************************************
|
|
NAME: PKG_CALCOLO_SLA_MVNO
|
|
PURPOSE:
|
|
|
|
REVISIONS:
|
|
Ver Date Author Description
|
|
--------- ---------- --------------- ------------------------------------
|
|
1.0 11/03/2010 NTT DATA 1. Created this package.
|
|
2.0 04/04/2017 NTT DATA 2. Improve CARICAMENTO_SLA3_RECIPIENT
|
|
separate UPSERT for PORTING and ESPLETA
|
|
3. Improve CARICAMENTO_SLA3_RECIPIENT
|
|
read oldest only into ackInizialeLetto
|
|
or proc will crash on resubmitted files.
|
|
3.0 04/05/2017 NTT DATA 4. Improve CARICAMENTO_SLAX_RECIPIENT
|
|
5. Improve CARICAMENTO_SLAY_RECIPIENT
|
|
6. Improve CARICAMENTO_SLAZ_RECIPIENT
|
|
prevent ACCESS FULL TABLE MNP.MNP_XML_ACK_OUT
|
|
causing [ORA-01555: snapshot too old:
|
|
rollback segment too small]
|
|
add function-based (trunc 'MM')
|
|
index on column
|
|
MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
4.0 05/05/2017 NTT DATA 7. Improve CALCOLO_SLA_MVNO prevent
|
|
GoldenGate (to DBCBIESE) error
|
|
"Discarding record on action DISCARD
|
|
on error 1400 - Mapping problem with
|
|
delete record (target format)"
|
|
Add COMMIT after delete of earlier
|
|
records from month under processing
|
|
******************************************************************************/
|
|
|
|
|
|
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_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_SLAX_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CARICAMENTO_SLAY_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CARICAMENTO_SLAZ_RECIPIENT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
|
|
PROCEDURE CARICAMENTO_SLAX_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CARICAMENTO_SLAZ_REC_VIRT (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
|
|
PROCEDURE CARICAMENTO_SLAX_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CARICAMENTO_SLAY_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
PROCEDURE CARICAMENTO_SLAZ_M2M (dataRif IN DATE,cod_errore OUT NUMBER);
|
|
|
|
PROCEDURE CALCOLO_SLA_MVNO(dataRif IN DATE);
|
|
|
|
|
|
END PKG_CALCOLO_SLA_MVNO;
|
|
/
|
|
CREATE OR REPLACE package body PKG_CALCOLO_SLA_MVNO as
|
|
|
|
procedure CARICAMENTO_SLA0_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
|
|
ackInizialeLetto VARCHAR2(27);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLA0_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla
|
|
IS
|
|
SELECT rich_out.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
|
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
|
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
|
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,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
|
|
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.CODICE_OPERATORE_REC_EFF <> '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
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
BEGIN
|
|
-- ATTIVAZIONE
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID, MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ATTIVAZ'
|
|
,rec.nomeFileIniziale
|
|
,rec.ackIniziale
|
|
,sysdate
|
|
);
|
|
|
|
|
|
-- PRESA IN CARICO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'PRESAIN'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackInizialeLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'ATTIVAZ'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_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_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackIniziale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'ATTIVAZ';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_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
|
|
ackFinaleLetto VARCHAR2(27);
|
|
fileFinaleLetto VARCHAR2(27);
|
|
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;
|
|
|
|
CURSOR record_sla is
|
|
SELECT rich_in.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
|
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
|
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
|
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,rich_rec.MSISDN AS msIsdn
|
|
,ack_out.NOME_FILE AS ackFinale
|
|
,TO_CHAR ( TO_DATE( SUBSTR( ack_out.NOME_FILE, 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY')
|
|
AS meseCompFinale
|
|
,xml_in.NOME_FILE AS nomeFileFinale
|
|
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
|
,rich_rec.RICHIESTAADHOC AS richiestaAdHoc
|
|
FROM
|
|
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 xml_in.NOME_FILE =RICH_in.NOME_FILE
|
|
AND ack_out.NOME_FILE_RIFERITO = rich_in.NOME_FILE
|
|
AND xml_in.TIPO_FILE =2 ----validazione
|
|
AND rich_rec.ID_RICHIESTA = rich_in.ID_RICHIESTA
|
|
AND rich_rec.CODICE_OPERATORE_REC_EFF <> '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;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
|
|
FOR rec IN record_sla LOOP
|
|
flagStop:=0;
|
|
n_rec := n_rec +1;
|
|
|
|
--verifico se esiste una validazione antecedente. In caso affermativo neanche inserisco.
|
|
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
|
|
-- VALIDAZIONE
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
, rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'VALIDAZ'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
SELECT FILE_ACK,FILE_XML
|
|
INTO ackFinaleLetto, fileFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'VALIDAZ'
|
|
AND FLAG_VALIDAZIONE = '1'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_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
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale,
|
|
FILE_XML = rec.nomeFileFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'VALIDAZ'
|
|
AND FLAG_VALIDAZIONE = '1';
|
|
END IF;
|
|
END;
|
|
END; --FINISCE QUI
|
|
END IF;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_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);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLA2_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
|
|
-- @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
|
|
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
|
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
|
,rich_rec.CODICE_OPERATORE_DONATING AS donorRete
|
|
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,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
|
|
,rich_rec.RICHIESTAADHOCAOM AS richiestaAdHocAom
|
|
,rich_rec.RICHIESTAADHOC AS richiestaAdHoc
|
|
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 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 rich_rec.CODICE_OPERATORE_REC_EFF <> 'TIMG'
|
|
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 (per selezionare la seconda)
|
|
AND y.NOME_FILE = x.NOME_FILE
|
|
);
|
|
BEGIN
|
|
cod_errore := 0;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_ini,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
BEGIN
|
|
|
|
-- ESPLETAMENTO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
, rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ESPLETA'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
|
|
--VALIDAZIONE ( deve essere gestita solo la seconda validazione per i phoc))
|
|
IF (rec.richiestaadhocaom > 0 OR rec.richiestaadhoc > 0)
|
|
THEN
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,FLAG_VALIDAZIONE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'VALIDAZ'
|
|
,'2'
|
|
,rec.nomeFileIniziale
|
|
,rec.ackIniziale
|
|
,sysdate
|
|
);
|
|
END IF;
|
|
-- deve gestire la chiave duplicata ed aggiornare quando la data dell'ack_in minore della data dell'ack_in letto (primo ack della seconda validazione)
|
|
EXCEPTION WHEN dup_val_on_index THEN
|
|
begin
|
|
IF (rec.richiestaadhocaom > 0 OR rec.richiestaadhoc > 0)
|
|
THEN
|
|
BEGIN-- lettura dati preesistenti
|
|
SELECT FILE_ACK
|
|
INTO ackInizialeLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE='VALIDAZ'
|
|
AND FLAG_VALIDAZIONE = '2'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo AND DON_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_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackIniziale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'VALIDAZ'
|
|
AND FLAG_VALIDAZIONE='2';
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
END;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLA2_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CARICAMENTO_SLA2_RECIPIENT;
|
|
|
|
|
|
-- v. 2.0 | 2. separate UPSERT for PORTING and ESPLETA
|
|
-- v. 2.0 | 3. read oldest only into ackInizialeLetto
|
|
procedure CARICAMENTO_SLA3_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
ackInizialeLetto VARCHAR2(27);
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
|
|
|
|
CURSOR record_sla is
|
|
SELECT
|
|
rich_out.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec.CODICE_OPERATORE_DON_EFF AS donorEffettivo
|
|
,rich_rec.CODICE_OPERATORE_REC_EFF AS recipientEffettivo
|
|
,xml_in.MITTENTE AS terzaParte
|
|
,rich_rec.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,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
|
|
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' -- filtrare espletamento da 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 rich_rec.CODICE_OPERATORE_DON_EFF <> '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;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
-- RICHIESTA PORTING TP
|
|
-- v. 2.0 | 2. separate UPSERT for PORTING and ESPLETA
|
|
BEGIN
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID, MESE, DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.terzaParte -- Forzo la terza parte nel Donating di Rete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'PORTING'
|
|
,rec.nomeFileIniziale
|
|
,rec.ackIniziale
|
|
,sysdate
|
|
);
|
|
EXCEPTION
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
-- v. 2.0 | 3. read oldest only into ackInizialeLetto
|
|
SELECT FILE_ACK
|
|
INTO ackInizialeLetto
|
|
FROM (
|
|
SELECT FILE_ACK, DATA_AGG
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'PORTING'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte
|
|
ORDER BY DATA_AGG
|
|
) WHERE ROWNUM = 1;
|
|
|
|
-- se data dell'ack iniziale 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_MVNO_OUT
|
|
SET FILE_ACK = rec.ackIniziale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte
|
|
AND TIPO_FILE = 'PORTING';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
-- ESPLETAMENTO TP
|
|
-- v. 2.0 | 2. separate UPSERT for PORTING and ESPLETA
|
|
BEGIN
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE, DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.terzaParte
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ESPLETA'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION
|
|
WHEN dup_val_on_index
|
|
THEN BEGIN
|
|
-- lettura dati preesistenti
|
|
-- v. 2.0 | 3. read oldest only into ackInizialeLetto
|
|
SELECT FILE_ACK
|
|
INTO ackInizialeLetto
|
|
FROM (
|
|
SELECT FILE_ACK, DATA_AGG
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'ESPLETA'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte
|
|
ORDER BY DATA_AGG
|
|
) WHERE ROWNUM = 1;
|
|
|
|
-- se data dell'ack iniziale 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_MVNO_OUT
|
|
SET FILE_ACK = rec.ackIniziale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte
|
|
AND TIPO_FILE = 'ESPLETA';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLA3_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
|
|
END CARICAMENTO_SLA3_RECIPIENT;
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
CURSOR record_sla is
|
|
SELECT
|
|
rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,rich_rec_virt.MSISDN AS msIsdn
|
|
,stor_rec_virt_ini.DATA_I_O as ackIniziale
|
|
,stor_rec_virt_fin.DATA_I_O as ackFinale
|
|
,stor_rec_virt_ini.DATA_I_O as nomeFileIniziale
|
|
,stor_rec_virt_fin.DATA_I_O as nomeFileFinale
|
|
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) as meseCompFinale
|
|
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 stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
|
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
|
|
|
BEGIN
|
|
cod_errore := 0;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
-- RICAVA FINESTRE TEMPORALI PER TIPO FILE ?
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
|
|
--ATTIVAZIONE
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ATTIVAZ'
|
|
,TO_CHAR(rec.nomeFileIniziale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,TO_CHAR(rec.ackIniziale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,sysdate
|
|
);
|
|
|
|
--validazione
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'VALIDAZ'
|
|
,TO_CHAR(rec.nomeFileFinale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,TO_CHAR(rec.ackFinale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,sysdate
|
|
);
|
|
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_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;
|
|
|
|
CURSOR record_sla is
|
|
SELECT
|
|
rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,rich_rec_virt.MSISDN AS msIsdn
|
|
,stor_rec_virt_ini.DATA_I_O as ackIniziale
|
|
,stor_rec_virt_fin.DATA_I_O as ackFinale
|
|
,stor_rec_virt_ini.DATA_I_O as nomeFileIniziale
|
|
,stor_rec_virt_fin.DATA_I_O as nomeFileFinale
|
|
,TO_CHAR( stor_rec_virt_fin.DATA_I_O ,'MM/YYYY' ) as meseCompFinale
|
|
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 stor_rec_virt_fin.DATA_I_O ---PRENDO TUTTE LE TRANSIZIONI DEL 1-30 DEL MESE PRECEDENTE
|
|
BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
|
BEGIN
|
|
cod_errore := 0;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
|
|
--ESPLETAMENTO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
, rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ESPLETA'
|
|
,TO_CHAR(rec.nomeFileFinale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,TO_CHAR(rec.ackFinale, 'dd/mm/yyyy') -- valorizzo con la data di transizione di stato
|
|
,sysdate
|
|
);
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_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
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLA3_REC_VIRT';
|
|
ackInizialeLetto VARCHAR2(27);
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
|
|
CURSOR record_sla is
|
|
|
|
SELECT
|
|
rich_rec_virt.ID_RICHIESTA AS idRichiesta
|
|
,rich_rec_virt.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,rich_rec_virt.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,xml_in.MITTENTE AS terzaParte
|
|
,'TIMG' AS recipientRete
|
|
,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
|
|
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 to_date( SUBSTR( ack_out.NOME_FILE, 5 , 8) ,'YYYYMMDDHH24MISS' ) BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1));
|
|
BEGIN
|
|
|
|
cod_errore := 0;
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
|
|
BEGIN
|
|
-- RICHIESTA PORTING TP
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.terzaParte -- Forzo la terza parte nel Donating di Rete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'PORTING'
|
|
,rec.nomeFileIniziale
|
|
,rec.ackIniziale
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackInizialeLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'PORTING'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte;
|
|
|
|
-- 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_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackIniziale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.terzaParte
|
|
AND TIPO_FILE = 'PORTING';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
BEGIN
|
|
-- ESPLETAMENTO TP
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.terzaParte -- Forzo la terza parte nel Donating di Rete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'ESPLETA'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'ESPLETA'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.terzaParte;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.terzaParte
|
|
AND TIPO_FILE = 'ESPLETA';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
D_fine:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLA3_RECIPIENT_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLA3_REC_VIRT;
|
|
|
|
|
|
-- 3.0 | 4. Improve CARICAMENTO_SLAX_RECIPIENT
|
|
-- prevent ACCESS FULL TABLE MNP.MNP_XML_ACK_OUT
|
|
-- causing [ORA-01555: snapshot too old: rollback segment too small]
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
procedure CARICAMENTO_SLAX_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Trasferimento Credito RECIPIENT
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAX_RECIPIENT';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,gr.CODICE_OPERATORE_REC_EFF as recipientEffettivo
|
|
,gr.CODICE_OPERATORE_DONATING AS donorRete
|
|
,gr.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN(espAckOut.NOME_FILE) as ackIniziale
|
|
,MIN(trasAckOut.NOME_FILE) as ackFinale
|
|
,TO_CHAR ( TO_DATE( SUBSTR( MIN(trasAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
|
,MIN(espXml.NOME_FILE) AS nomeFileIniziale
|
|
,MIN(trasXml.NOME_FILE) AS nomeFileFinale
|
|
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
|
|
, mnp.mnp_xml_ack_out@MNP espAckOut
|
|
, mnp.mnp_xml_in@MNP trasXml
|
|
, mnp.mnp_xml_in@MNP espXml
|
|
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
|
|
, mnp.mnp_xml_richiesta_in@MNP rEspIn
|
|
, mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE trasAckOut.risultato = 'OK'
|
|
AND espXml.MITTENTE = gr.codice_operatore_donating
|
|
AND trasAckOut.nome_file_riferito = trasXml.nome_file
|
|
AND trasXml.nome_file = rTrasIn.nome_file
|
|
AND rTrasin.id_richiesta = gr.id_richiesta
|
|
AND trasXml.tipo_file = 10
|
|
AND espAckOut.nome_file_riferito = espXml.nome_file
|
|
AND espXml.nome_file =rEspIn.nome_file
|
|
AND rEspIn.id_richiesta = gr.id_richiesta
|
|
AND espXml.tipo_file = 6
|
|
-- 3.0 | 4. Improve CARICAMENTO_SLAX_RECIPIENT
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
AND TRUNC(trasAckOut.data_inserimento, 'MM') = TRUNC(ADD_MONTHS( dataRif, -1 ), 'MM')
|
|
--AND trasAckOut.data_inserimento BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
, gr.codice_operatore_donating
|
|
, gr.codice_operatore_recipient
|
|
, gr.codice_operatore_don_eff
|
|
, gr.codice_operatore_rec_eff
|
|
, gr.msisdn;
|
|
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
n_rec := n_rec +1;
|
|
BEGIN
|
|
-- TRASFERIMENTO CREDITO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'TRASFER'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'TRASFER'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'TRASFER';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAX_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAX_RECIPIENT;
|
|
|
|
|
|
|
|
-- 3.0 | 5. Improve CARICAMENTO_SLAY_RECIPIENT
|
|
-- prevent ACCESS FULL TABLE MNP.MNP_XML_ACK_OUT
|
|
-- causing [ORA-01555: snapshot too old: rollback segment too small]
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
procedure CARICAMENTO_SLAY_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Sblocco credito RECIPIENT
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAY_RECIPIENT';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,gr.CODICE_OPERATORE_REC_EFF as recipientEffettivo
|
|
,gr.CODICE_OPERATORE_DONATING AS donorRete
|
|
,gr.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN(trasAckOut.nome_file) as ackIniziale
|
|
,MIN(sblCrAckOut.nome_file) as ackFinale
|
|
,TO_CHAR ( TO_DATE( SUBSTR( MIN(sblCrAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
|
,MIN(trasXml.nome_file) AS nomeFileIniziale
|
|
,MIN(sblCrXml.nome_file) AS nomeFileFinale
|
|
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
|
|
, mnp.mnp_xml_ack_out@MNP sblCrAckOut
|
|
, mnp.mnp_xml_in@MNP trasXml
|
|
, mnp.mnp_xml_in@MNP sblCrXml
|
|
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
|
|
, mnp.mnp_xml_richiesta_in@MNP rSblCrIn
|
|
, mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE trasAckOut.risultato = 'OK'
|
|
AND trasAckOut.nome_file_riferito = trasXml.nome_file
|
|
AND trasXml.nome_file = rTrasIn.nome_file
|
|
AND rTrasin.id_richiesta = gr.id_richiesta
|
|
AND trasXml.tipo_file = 10
|
|
AND sblCrAckOut.nome_file_riferito = sblCrXml.nome_file
|
|
AND sblCrXml.nome_file =rSblCrIn.nome_file
|
|
AND rSblCrIn.id_richiesta = gr.id_richiesta
|
|
and sblCrXml.tipo_file = 11
|
|
-- 3.0 | 5. Improve CARICAMENTO_SLAY_RECIPIENT
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
AND TRUNC(sblCrAckOut.data_inserimento, 'MM') = TRUNC(ADD_MONTHS( dataRif, -1 ), 'MM')
|
|
--AND sblCrAckOut.data_inserimento BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
, gr.codice_operatore_donating
|
|
, gr.codice_operatore_recipient
|
|
, gr.codice_operatore_don_eff
|
|
, GR.CODICE_OPERATORE_REC_EFF
|
|
, gr.msisdn;
|
|
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
cod_errore := 0;
|
|
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- SBLOCCO CREDITO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'SBLOCCC'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'SBLOCCC'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'SBLOCCC';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAY_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAY_RECIPIENT;
|
|
|
|
----------------------------------------------------
|
|
-- 3.0 | 6. Improve CARICAMENTO_SLAZ_RECIPIENT
|
|
-- prevent ACCESS FULL TABLE MNP.MNP_XML_ACK_OUT
|
|
-- causing [ORA-01555: snapshot too old: rollback segment too small]
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
procedure CARICAMENTO_SLAZ_RECIPIENT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Sblocco Importo RECIPIENT
|
|
n_rec integer := 0;
|
|
ackFinaleLetto VARCHAR2(27);
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAZ_RECIPIENT';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DON_EFF as donorEffettivo
|
|
,gr.CODICE_OPERATORE_REC_EFF as recipientEffettivo
|
|
,gr.CODICE_OPERATORE_DONATING AS donorRete
|
|
,gr.CODICE_OPERATORE_RECIPIENT AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN(trasAckOut.nome_file) as ackIniziale
|
|
,MIN(sblImAckOut.nome_file) as ackFinale
|
|
,TO_CHAR ( TO_DATE( SUBSTR( MIN(sblImAckOut.NOME_FILE), 5 , 14) ,'YYYYMMDDHH24MISS' ), 'MM/YYYY') AS meseCompFinale
|
|
,MIN(trasXml.nome_file) AS nomeFileIniziale
|
|
,MIN(sblImXml.nome_file) AS nomeFileFinale
|
|
FROM mnp.mnp_xml_ack_out@MNP trasAckOut
|
|
, mnp.mnp_xml_ack_out@MNP sblImAckOut
|
|
, mnp.mnp_xml_in@MNP trasXml
|
|
, mnp.mnp_xml_in@MNP sblImXml
|
|
, mnp.mnp_xml_richiesta_in@MNP rTrasIn
|
|
, mnp.mnp_xml_richiesta_in@MNP rSblImIn
|
|
, mnp.mnp_gestione_richiesta_rec@MNP gr
|
|
WHERE trasAckOut.risultato = 'OK'
|
|
AND trasAckOut.nome_file_riferito = trasXml.nome_file
|
|
AND trasXml.nome_file = rTrasIn.nome_file
|
|
AND rTrasin.id_richiesta = gr.id_richiesta
|
|
AND trasXml.tipo_file = 10
|
|
AND sblImAckOut.nome_file_riferito = sblImXml.nome_file
|
|
AND sblImXml.nome_file =rSblImIn.nome_file
|
|
AND rSblImIn.id_richiesta = gr.id_richiesta
|
|
AND sblImXml.tipo_file = 12
|
|
-- 3.0 | 6. Improve CARICAMENTO_SLAZ_RECIPIENT
|
|
-- add function-based (trunc 'MM') index on MNP.MNP_XML_ACK_OUT.data_inserimento
|
|
AND TRUNC(sblImAckOut.data_inserimento, 'MM') = TRUNC(ADD_MONTHS( dataRif, -1 ), 'MM')
|
|
--AND sblImAckOut.data_inserimento BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
, gr.codice_operatore_donating
|
|
, gr.codice_operatore_recipient
|
|
, gr.codice_operatore_don_eff
|
|
, GR.CODICE_OPERATORE_REC_EFF
|
|
, gr.msisdn;
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- SBLOCCO IMPORTO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'SBLOCCI'
|
|
,rec.nomeFileFinale
|
|
,rec.ackFinale
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'SBLOCCI'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'SBLOCCI';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAZ_RECIPIENT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAZ_RECIPIENT;
|
|
|
|
|
|
|
|
procedure CARICAMENTO_SLAX_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Trasferimento Credito RECIPIENT VIRTUALE
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAX_REC_VIRT';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,gr.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,gr.data_cut_over_eff as ackIniziale
|
|
,MIN (tcin.data_ricezione) as ackFinale
|
|
,TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY') AS meseCompFinale
|
|
,gr.data_cut_over_eff AS nomeFileIniziale
|
|
,MIN (tcin.data_ricezione) AS nomeFileFinale
|
|
FROM mnp.mnp_msp_tc_in@MNP tcin
|
|
, mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '01'
|
|
--AND gr.flag_esp = 0
|
|
AND tcin.data_ricezione BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
,gr.data_cut_over_eff
|
|
,gr.codice_operatore_donating
|
|
,gr.codice_operatore_recipient
|
|
,gr.msisdn;
|
|
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- TRASFERIMENTO CREDITO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'TRASFER'
|
|
,TO_CHAR(rec.nomeFileFinale,'dd/mm/yyyy')
|
|
,TO_CHAR(rec.ackFinale,'dd/mm/yyyy')
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'TRASFER'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'TRASFER';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAX_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAX_REC_VIRT;
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
procedure CARICAMENTO_SLAZ_REC_VIRT(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Sblocco Importo RECIPIENT VIRTUALE
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAZ_REC_VIRT';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,gr.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN (tcinNtCr.data_ricezione) as ackIniziale
|
|
,MIN (tcinSblIm.data_ricezione) as ackFinale
|
|
,TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY') AS meseCompFinale
|
|
,MIN (tcinNtCr.data_ricezione) AS nomeFileIniziale
|
|
,MIN (tcinSblIm.data_ricezione) AS nomeFileFinale
|
|
FROM mnp.mnp_msp_tc_in@MNP tcinSblIm
|
|
, mnp.mnp_msp_tc_in@MNP tcinNtCr
|
|
, mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
|
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinNtCr.tipo_evento = '01'
|
|
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinSblIm.tipo_evento = '03'
|
|
--AND gr.flag_esp = 0
|
|
AND tcinSblIm.data_ricezione BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
,gr.codice_operatore_donating
|
|
,gr.codice_operatore_recipient
|
|
,gr.msisdn;
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- SBLOCCO IMPORTO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'SBLOCCI'
|
|
,TO_CHAR(rec.nomeFileFinale, 'dd/mm/yyyy')
|
|
,TO_CHAR(rec.ackFinale, 'dd/mm/yyyy')
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'SBLOCCI'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'SBLOCCI';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAZ_REC_VIRT ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAZ_REC_VIRT;
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
procedure CARICAMENTO_SLAX_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Trasferimento Credito RECIPIENT M2M
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAX_M2M';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,gr.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,gr.data_cut_over_eff as ackIniziale
|
|
,MIN (tcin.data_ricezione) as ackFinale
|
|
,TO_CHAR(MIN(tcin.data_ricezione),'MM/YYYY') AS meseCompFinale
|
|
,gr.data_cut_over_eff AS nomeFileIniziale
|
|
,MIN (tcin.data_ricezione) AS nomeFileFinale
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcin
|
|
, mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcin.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcin.id_richiesta_dbc,0,2)='RV'
|
|
AND tcin.tipo_evento = '01'
|
|
--AND gr.flag_esp = 0
|
|
AND tcin.data_ricezione BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
,gr.data_cut_over_eff
|
|
,gr.codice_operatore_donating
|
|
,gr.codice_operatore_recipient
|
|
,gr.msisdn;
|
|
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- TRASFERIMENTO CREDITO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'TRASFER'
|
|
,TO_CHAR(rec.nomeFileFinale,'dd/mm/yyyy')
|
|
,TO_CHAR(rec.ackFinale,'dd/mm/yyyy')
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'TRASFER'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'TRASFER';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAX_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAX_M2M;
|
|
|
|
---------------------------------------------
|
|
procedure CARICAMENTO_SLAZ_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Sblocco Importo RECIPIENT M2M
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAZ_M2M';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,gr.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN (tcinNtCr.data_ricezione) as ackIniziale
|
|
,MIN (tcinSblIm.data_ricezione) as ackFinale
|
|
,TO_CHAR(MIN(tcinSblIm.data_ricezione),'MM/YYYY') AS meseCompFinale
|
|
,MIN (tcinNtCr.data_ricezione) AS nomeFileIniziale
|
|
,MIN (tcinSblIm.data_ricezione) AS nomeFileFinale
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcinSblIm
|
|
, mnp.mnp_mvno_tc_in@MNP tcinNtCr
|
|
, mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
|
AND tcinSblIm.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinNtCr.tipo_evento = '01'
|
|
AND SUBSTR(tcinSblIm.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinSblIm.tipo_evento = '03'
|
|
--AND gr.flag_esp = 0
|
|
AND tcinSblIm.data_ricezione BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
,gr.codice_operatore_donating
|
|
,gr.codice_operatore_recipient
|
|
,gr.msisdn;
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- SBLOCCO IMPORTO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'SBLOCCI'
|
|
,TO_CHAR(rec.nomeFileFinale, 'dd/mm/yyyy')
|
|
,TO_CHAR(rec.ackFinale, 'dd/mm/yyyy')
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'SBLOCCI'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'SBLOCCI';
|
|
END IF;
|
|
END;
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAZ_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAZ_M2M;
|
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
procedure CARICAMENTO_SLAY_M2M(dataRif IN DATE,cod_errore OUT NUMBER) IS
|
|
-- Caricamento SLA Sblocco Credito RECIPIENT M2M)
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CARICAMENTO_SLAY_M2M';
|
|
ackFinaleLetto VARCHAR2(27);
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
dataFinale DATE;
|
|
|
|
CURSOR record_sla is
|
|
SELECT UNIQUE
|
|
gr.ID_RICHIESTA AS idRichiesta
|
|
,gr.CODICE_OPERATORE_DONATING as donorEffettivo
|
|
,gr.CODICE_OPERATORE_RECIPIENT as recipientEffettivo
|
|
,'TIMG' AS donorRete
|
|
,'TIMG' AS recipientRete
|
|
,gr.MSISDN AS msIsdn
|
|
,MIN (tcinNtCr.data_ricezione) as ackIniziale
|
|
,MIN (tcinSblCr.data_ricezione) as ackFinale
|
|
,TO_CHAR(MIN(tcinSblCr.data_ricezione),'MM/YYYY') AS meseCompFinale
|
|
,MIN (tcinNtCr.data_ricezione) AS nomeFileIniziale
|
|
,MIN (tcinSblCr.data_ricezione) AS nomeFileFinale
|
|
FROM mnp.mnp_mvno_tc_in@MNP tcinNtCr
|
|
, mnp.mnp_mvno_tc_in@MNP tcinSblCr
|
|
, mnp.mnp_gest_rich_rec_virt@MNP gr
|
|
WHERE tcinNtCr.id_richiesta_dbc = gr.id_richiesta
|
|
AND tcinSblCr.id_richiesta_dbc = gr.id_richiesta
|
|
AND SUBSTR(tcinNtCr.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinNtCr.tipo_evento = '01'
|
|
AND SUBSTR(tcinSblCr.id_richiesta_dbc,0,2)='RV'
|
|
AND tcinSblCr.tipo_evento = '02'
|
|
AND tcinSblCr.data_ricezione BETWEEN Last_Day(ADD_MONTHS(dataRif,-2))+1 AND Last_Day(ADD_MONTHS( dataRif,-1))
|
|
GROUP BY gr.id_richiesta
|
|
, gr.codice_operatore_donating
|
|
, gr.codice_operatore_recipient
|
|
, gr.msisdn;
|
|
|
|
BEGIN
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCEDURA '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
|
|
cod_errore := 0;
|
|
FOR rec IN record_sla LOOP
|
|
BEGIN
|
|
n_rec := n_rec +1;
|
|
|
|
-- SBLOCCO CREDITO
|
|
INSERT INTO MNP_DW_SLA_MVNO_OUT (
|
|
UNIQUE_ID,MESE,DON_OSPITATO, REC_OSPITATO, DON_RETE, REC_RETE, MSISDN, ID_RICHIESTA, TIPO_FILE,
|
|
FILE_XML, FILE_ACK, DATA_AGG)
|
|
VALUES (
|
|
seq_DW_SLA_MVNO_OUT.nextval
|
|
,rec.meseCompFinale
|
|
,rec.donorEffettivo
|
|
,rec.recipientEffettivo
|
|
,rec.donorRete
|
|
,rec.recipientRete
|
|
,rec.msIsdn
|
|
,rec.idRichiesta
|
|
,'SBLOCCC'
|
|
,TO_CHAR(rec.nomeFileFinale,'dd/mm/yyyy')
|
|
,TO_CHAR(rec.ackFinale,'dd/mm/yyyy')
|
|
,sysdate
|
|
);
|
|
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
|
|
BEGIN
|
|
-- lettura dati preesistenti per gestione ack multipli sull'attivazione
|
|
SELECT FILE_ACK
|
|
INTO ackFinaleLetto
|
|
FROM MNP_DW_SLA_MVNO_OUT
|
|
WHERE MESE = rec.meseCompFinale
|
|
AND ID_RICHIESTA = rec.idRichiesta
|
|
AND TIPO_FILE = 'SBLOCCC'
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE = rec.donorRete;
|
|
|
|
-- se data dell'ack della nuova riga < data ack preesistente aggiorna i dati altrimenti scarta
|
|
IF to_date( SUBSTR( rec.ackFinale, 5 , 14) ,'YYYYMMDDHH24MISS' ) < to_date( SUBSTR(ackFinaleLetto, 5 , 14) ,'YYYYMMDDHH24MISS' )
|
|
THEN
|
|
UPDATE MNP_DW_SLA_MVNO_OUT
|
|
SET
|
|
FILE_ACK = rec.ackFinale
|
|
WHERE ID_RICHIESTA = rec.idRichiesta
|
|
AND MESE = rec.meseCompFinale
|
|
AND DON_OSPITATO = rec.donorEffettivo
|
|
AND REC_OSPITATO = rec.recipientEffettivo
|
|
AND DON_RETE=rec.donorRete
|
|
AND TIPO_FILE = 'SBLOCCC';
|
|
END IF;
|
|
END;
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
D_finE:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: 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_SLAY_M2M ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CARICAMENTO_SLAY_M2M;
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
-- 4.0 | 7. Improve CALCOLO_SLA_MVNO prevent GoldenGate (to DBCBIESE) error
|
|
-- "Discarding record on action DISCARD on error 1400 - Mapping problem
|
|
-- with delete record (target format)"
|
|
-- Add COMMIT after delete of earlier records from month under processing
|
|
procedure CALCOLO_SLA_MVNO(dataRif IN Date) IS
|
|
|
|
cod_errore NUMBER (1);
|
|
|
|
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_slaX_rec NUMBER (1):=0;
|
|
cod_errore_slaY_rec NUMBER (1):=0;
|
|
cod_errore_slaZ_rec 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_slaX_rec_virt NUMBER (1):=0;
|
|
cod_errore_slaZ_rec_virt NUMBER (1):=0;
|
|
cod_errore_slaX_M2M NUMBER (1):=0;
|
|
cod_errore_slaY_M2M NUMBER (1):=0;
|
|
cod_errore_slaZ_M2M NUMBER (1):=0;
|
|
|
|
|
|
n_rec integer := 0;
|
|
proc_name constant varchar2(30) := 'CALCOLO_SLA_MVNO';
|
|
D_ini DATE;
|
|
D_fine DATE;
|
|
|
|
|
|
|
|
BEGIN
|
|
dbms_output.enable(9999999);
|
|
D_ini:=sysdate;
|
|
DBMS_OUTPUT.put_line ('PKG_CALCOLO_SLA_MVNO: INIZIO PROCESSO '||PROC_NAME||' - '||TO_CHAR(D_INI,'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
-----------------------------------------------------
|
|
-- DELETE PREVENTIVA DELLE TABELLA PER IL REPORTING MVNO
|
|
-----------------------------------------------------
|
|
DELETE MNP_DW_SLA_MVNO_OUT WHERE MESE=TO_CHAR(ADD_MONTHS(dataRif,-1),'mm/yyyy');
|
|
-- 4.0 | 7. Improve CALCOLO_SLA_MVNO prevent GoldenGate (to DBCBIESE) error
|
|
-- Add COMMIT after delete of earlier records from month under processing
|
|
-- ATTENTION: NO code allowed between the COMMIT above and the IF below (only comments)
|
|
IF 0 < SQL%ROWCOUNT THEN
|
|
COMMIT;
|
|
END IF;
|
|
|
|
cod_errore := 0;
|
|
|
|
|
|
|
|
-- caricamento dati per il processo recipient nella tabella MNP_DW_SLA_MVNO_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_slaX_recipient(dataRif,cod_errore_slaX_rec);
|
|
caricamento_slaY_recipient(dataRif,cod_errore_slaY_rec);
|
|
caricamento_slaZ_recipient(dataRif,cod_errore_slaZ_rec);
|
|
|
|
-- caricamento dati per il processo recipient virtuale nella tabella MNP_DW_SLA_MVNO_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_slaX_rec_virt(dataRif,cod_errore_slaX_rec_virt);
|
|
caricamento_slaZ_rec_virt(dataRif,cod_errore_slaZ_rec_virt);
|
|
caricamento_slaX_M2M(dataRif,cod_errore_slaX_M2M);
|
|
caricamento_slaY_M2M(dataRif,cod_errore_slaY_M2M);
|
|
caricamento_slaZ_M2M(dataRif,cod_errore_slaZ_M2M);
|
|
|
|
|
|
|
|
|
|
cod_errore := 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_slaX_rec + cod_errore_slaY_rec + cod_errore_slaZ_rec +
|
|
cod_errore_slaX_rec_virt + cod_errore_slaZ_rec_virt +
|
|
cod_errore_slaX_M2M + cod_errore_slaY_M2M + cod_errore_slaZ_M2M;
|
|
|
|
|
|
|
|
IF cod_errore = 0
|
|
THEN
|
|
-- OK
|
|
DBMS_OUTPUT.put_line ('Caricamento dati SLA avvenuto.');
|
|
ELSE
|
|
-- KO
|
|
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_MVNO: 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 Sla ' || SQLERRM||' - '||to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'));
|
|
RETURN;
|
|
END CALCOLO_SLA_MVNO;
|
|
|
|
|
|
END PKG_CALCOLO_SLA_MVNO;
|
|
/
|