First Commit - Source Code from Reply

This commit is contained in:
vincenzofariello
2024-05-13 12:54:14 +02:00
parent 73e32a5020
commit a15aee1f08
11184 changed files with 1065913 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
CREATE TABLE MNP_APPO_TIPO_CLIENTI_DBSS
(msisdn VARCHAR2(15) NOT NULL,
sottomarcaggio VARCHAR2(1),
marcaggio VARCHAR2(2) NOT NULL,
tipo_utenza VARCHAR2(1) NOT NULL,
nome_ot VARCHAR2(5) NOT NULL,
sistema_competenza VARCHAR2(5),
utenza_dual VARCHAR2(15),
cf VARCHAR2(16),
iccid VARCHAR2(20),
stato VARCHAR2(7))
TABLESPACE TAB_BIG
/
ALTER TABLE MNP_APPO_TIPO_CLIENTI_DBSS
ADD CONSTRAINT pk_appo_tipo_clienti_dbss PRIMARY KEY (msisdn)
USING INDEX
TABLESPACE TAB_IDX_MEDIUM
/

View File

@@ -0,0 +1 @@
DROP TABLE MNP_APPO_TIPO_CLIENTI_DBSS CASCADE CONSTRAINTS;

View File

@@ -0,0 +1,2 @@
update MNP_APPO_TIPO_CLIENTI_DBSS set utenza_dual='39'||utenza_dual where utenza_dual is not null
/

View File

@@ -0,0 +1,15 @@
DROP table MNP_TIPO_CLIENTI_DBSS CASCADE CONSTRAINTS;
ALTER TABLE mnp_appo_tipo_clienti_dbss DROP PRIMARY KEY;
ALTER table mnp_appo_tipo_clienti_dbss rename to MNP_TIPO_CLIENTI_DBSS;
ALTER TABLE MNP_TIPO_CLIENTI_DBSS
ADD CONSTRAINT pk_tipo_clienti_dbss PRIMARY KEY (msisdn)
USING INDEX
TABLESPACE TAB_IDX_MEDIUM
/
CREATE INDEX IDX_TIPO_CLIENTI_DBSS_01 ON MNP_TIPO_CLIENTI_DBSS(UTENZA_DUAL) TABLESPACE TAB_IDX_MEDIUM
/

View File

@@ -0,0 +1,2 @@
update mnp.mnp_gisp_notifica_in set da_scodare=1 where da_scodare=4 and tipo_evento='082';
commit;

View File

@@ -0,0 +1,2 @@
update mnp.mnp_gisp_notifica_in set da_scodare=1 where da_scodare=4 and tipo_evento='083';
commit;

View File

@@ -0,0 +1,49 @@
--Script per la creazione dei file
--contenenti le notifiche di espletamento SCIVOLO per
--l'Infasamento di CIRCE
declare
linea varchar2(255);
file1 UTL_FILE.file_type;
file2 UTL_FILE.file_type;
nome_file varchar2(80);
cursor cur_rec is
select rpad(nvl(msisdn,' '),15) || rpad(nvl(addizionale1,' '),15) || rpad(nvl(addizionale2,' '),15) || rpad(nvl(imsi,' '),15) ||
rpad(nvl(codice_operatore_donating,' '),4) || rpad(nvl(codice_operatore_recipient,' '),4) ||
rpad(nvl(codice_analogico_digitale,' '),1) || rpad('05',2) || rpad(nvl(to_char(data_cut_over,'yyyy-mm-dd'),' '),10) ||
rpad(nvl(to_char(data_cut_over,'yyyy-mm-dd'),' '),10) ||
rpad(nvl(id_richiesta,' '),23)
from mnp_richiesta_beolo
where stato in ('4','32','44','49')
and processo='SCIVOLO'
union
select rpad(nvl(msisdn_a,' '),15) || rpad(nvl(msisdn_b,' '),15) || rpad(nvl(msisdn_c,' '),15) || rpad(nvl(imsi,' '),15) ||
rpad(nvl(codice_operatore_donating,' '),4) || rpad(nvl(codice_operatore_recipient,' '),4) ||
rpad(nvl(tecnologia,' '),1) || rpad(nvl(stato,' '),2) || rpad(nvl(data_validazione_richiesta,' '),10) ||
rpad(nvl(data_cut_over,' '),10) ||
rpad(nvl(id_richiesta,' '),23)
from mnp_circe_out_rec
where stato='05';
begin
nome_file:='MNP_CIRCE_ATT_RECIPIENT_' || TO_CHAR(sysdate,'yyyymmddhh24miss');
file1:=UTL_FILE.fopen('&1', nome_file || '.TXT','w');
open cur_rec;
loop
fetch cur_rec into linea;
exit when cur_rec%notfound;
UTL_FILE.put_line(file1,linea);
UTL_FILE.fflush(file1);
dbms_lock.sleep(1);
end loop;
UTL_FILE.fflush(file1);
UTL_FILE.fclose(file1);
file2:=UTL_FILE.fopen('&1', nome_file || '.CTR','w');
UTL_FILE.fflush(file2);
UTL_FILE.fclose(file2);
close cur_rec;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
exit;

View File

@@ -0,0 +1,48 @@
--Script per la creazione dei file
--contenenti le notifiche di espletamento DONOR per
--l'Infasamento di CIRCE
declare
linea varchar2(255);
file1 UTL_FILE.file_type;
file2 UTL_FILE.file_type;
nome_file varchar2(40);
cursor cur_rec is
--Circe ATTIVAZIONE SCIVOLO
select rpad(nvl(msisdn,' '),15) || rpad(nvl(addizionale1,' '),15) || rpad(nvl(addizionale2,' '),15) ||
rpad(nvl(imsi,' '),15) || rpad(nvl(codice_operatore_donating,' '),4) || rpad(nvl(codice_operatore_recipient,' '),4) ||
rpad(nvl(codice_analogico_digitale,' '),1) || rpad('05',2) || rpad(nvl(to_char(data_cut_over,'yyyy-mm-dd'),' '),10) ||
rpad(nvl(to_char(data_cut_over,'yyyy-mm-dd'),' '),10) ||
rpad(nvl(id_richiesta,' '),23)
from mnp_richiesta_beolo
where stato='4'
and processo='DONOR'
union
select rpad(nvl(msisdn_a,' '),15) || rpad(nvl(msisdn_b,' '),15) || rpad(nvl(msisdn_c,' '),15) ||
rpad(nvl(imsi,' '),15) || rpad(nvl(codice_operatore_donating,' '),4) || rpad(nvl(codice_operatore_recipient,' '),4) ||
rpad(nvl(tecnologia,' '),1) || rpad(nvl(stato,' '),2) || rpad(nvl(data_validazione_richiesta,' '),10) ||
rpad(nvl(data_cut_over,' '),10) ||
rpad(nvl(id_richiesta,' '),23)
from mnp_circe_out
where stato='05';
begin
dbms_output.put_line('start sql scipt');
nome_file:='MNP_CIRCE_DONOR_' || TO_CHAR(sysdate,'yyyymmddhh24miss');
file1:=UTL_FILE.fopen('&1', nome_file || '.TXT','w');
open cur_rec;
loop
fetch cur_rec into linea;
exit when cur_rec%notfound;
UTL_FILE.put_line(file1,linea);
end loop;
UTL_FILE.fflush(file1);
UTL_FILE.fclose(file1);
file2:=UTL_FILE.fopen('&1', nome_file || '.CTR','w');
UTL_FILE.fflush(file2);
UTL_FILE.fclose(file2);
close cur_rec;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
exit;

View File

@@ -0,0 +1,19 @@
CREATE TABLE mnp_appo_tipo_clienti
(msisdn VARCHAR2(15) NOT NULL,
sottomarcaggio VARCHAR2(1),
marcaggio VARCHAR2(2) NOT NULL,
tipo_utenza VARCHAR2(1) NOT NULL,
nome_ot VARCHAR2(5) NOT NULL,
sistema_competenza VARCHAR2(5),
utenza_dual VARCHAR2(15),
cf VARCHAR2(16),
iccid VARCHAR2(20),
stato VARCHAR2(7))
TABLESPACE TAB_BIG
/
ALTER TABLE mnp_appo_tipo_clienti
ADD CONSTRAINT pk_appo_tipo_clienti PRIMARY KEY (msisdn)
USING INDEX
TABLESPACE TAB_IDX_MEDIUM
/

View File

@@ -0,0 +1,16 @@
set head off
set pages 0
set feedback off
SET linesize 68
SPOOL /mnpapp/gwmnp/FTPOUT/DBC_VAR_OLO_REC_20130408.txt
SELECT TIPO_RECORD || ';' || RPAD(NUM_TEL,15) || ';' || TO_CHAR(DATA, 'yyyy-mm-dd hh24:mi:ss') || ';' || RPAD(RECIPIENT_NEW,30) FROM MNP_DBC_VARIAZIONE_OLO;
SET linesize 38
SPOOL /mnpapp/gwmnp/FTPOUT/DBC_CES_DEF_20130408.txt
SELECT TIPO_RECORD || ';' || RPAD(NUM_TEL,15) || ';' || TO_CHAR(DATA, 'yyyy-mm-dd hh24:mi:ss') || ';' FROM MNP_DBC_CESSAZIONE_OLO;
SPOOL off;

View File

@@ -0,0 +1,10 @@
set head off
set pages 0
set feedback off
SET linesize 47
SPOOL /mnpapp/gwmnp/FTPOUT/UTENZE_CESSATE_MNP.CSV
SELECT NUM_TEL || '$' || TO_CHAR(DATA_ATTIVAZIONE, 'yyyymmdd') || '$' || TO_CHAR(DATA_CESSAZIONE, 'yyyymmdd') || '$' || RPAD(RECIPIENT_NEW,4) || '$' || TO_CHAR(DATA_CESSAZIONE_DEF, 'yyyymmdd') FROM MNP_PCCOM_VARIAZIONI WHERE LAVORATO = 1;
SPOOL off;

View File

@@ -0,0 +1,45 @@
DECLARE
RetVal number;
V_DATA_CURR DATE;
V_DATA_CUT_OVER date;
V_RECIPIENT_NEW varchar2(4);
V_ID_RICHIESTA varchar2(15);
V_PROCESSO varchar2(1);
BEGIN
DBMS_OUTPUT.put_line ('START DATE: '||sysdate);
-- AGGIORNAMENTO DEI CAMPI RECIPIENT_NEW E DATA_CESSAZIONE_DEF VERIFICANDO LA PRESENZA DI CESSAZIONE
FOR R_VAR_MSISDN IN
( SELECT * FROM MNP_PCCOM_VARIAZIONI WHERE LAVORATO IS NULL )
LOOP
BEGIN
V_ID_RICHIESTA := NULL;
V_DATA_CUT_OVER := NULL;
V_PROCESSO := NULL;
V_RECIPIENT_NEW := NULL;
RetVal := MNP.F_TROVA_ULTIMO_PROC_PCCOM ( '39'||R_VAR_MSISDN.NUM_TEL, V_ID_RICHIESTA, V_DATA_CURR, V_DATA_CUT_OVER, V_PROCESSO, V_RECIPIENT_NEW );
UPDATE MNP_PCCOM_VARIAZIONI
SET DATA_CESSAZIONE_DEF = V_DATA_CUT_OVER,
RECIPIENT_NEW = V_RECIPIENT_NEW,
LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND THEN
V_DATA_CUT_OVER := NULL;
V_RECIPIENT_NEW := NULL;
--
UPDATE MNP_PCCOM_VARIAZIONI
SET LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
END;
END LOOP;
DBMS_OUTPUT.put_line ('END DATE: '||sysdate);
END;
/

View File

@@ -0,0 +1 @@
DROP TABLE MNP_APPO_TIPO_CLIENTI CASCADE CONSTRAINTS;

View File

@@ -0,0 +1,169 @@
DROP MATERIALIZED VIEW DWH.MNP_DWH_DON;
CREATE MATERIALIZED VIEW DWH.MNP_DWH_DON
TABLESPACE TAB_DWH
PCTUSED 0
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
/* Formatted on 2015/02/19 16:35 (Formatter Plus v4.8.8) */
SELECT ROWNUM AS id_prog, r.*
FROM (SELECT SYSDATE AS data_aggiornamento,
DECODE (SUBSTR (codice_gruppo, 1, 3),
'BKL', 'BKL',
DECODE (a.richiestaadhocaom || a.richiestaadhoc,
'00', 'Standard',
'PHoc'
)
) AS tipo_richiesta,
a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
a.marcaggio, a.sottomarcaggio, a.codice_operatore_recipient,
a.codice_operatore_donating,
a.codice_operatore_rec_eff AS recipient_effettivo,
a.codice_operatore_don_eff AS donor_effettivo,
TRUNC (b.data_i_o) AS data_evento,
TO_CHAR (b.data_i_o, 'yy-iw') AS settimana_evento,
TO_CHAR (b.data_i_o, 'mm') AS mese_evento,
c.descr_stato AS descr_stato_evento,
ca.descr_stato AS descr_stato_attuale,
b.stato_a AS stato_evento, a.stato AS stato_attuale,
DECODE (a.stato,
10, a.codicerifiutovalidazione,
NULL
) AS cod_rifiuto,
DECODE (a.stato, 10, r.causale, NULL) AS causale_rifiuto,
COUNT (*) AS richieste
FROM mnp.mnp_gestione_richiesta a,
mnp.mnp_storico_richiesta b,
mnp.mnp_stato c,
mnp.mnp_stato ca,
mnp.mnp_causale_rifiuto r
WHERE ( a.codice_operatore_don_eff = 'TIMG'
OR a.codice_operatore_don_eff = 'TIMT'
)
AND (TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 397)
AND TRUNC (SYSDATE)
)
AND (a.id_richiesta = b.id_richiesta)
AND (b.stato_a IN (1, 3, 4, 9, 10, 12, 16))
AND (b.stato_a = c.id_stato)
AND (a.stato = ca.id_stato)
AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
-- prendere ultime tre partizioni che sono su base semestrale
--AND trunc(a.dataricezionerichiesta) BETWEEN TO_DATE (SYSDATE - 730) AND TRUNC (SYSDATE)
AND TRUNC (b.dataricezionerichiesta) BETWEEN TO_DATE ( SYSDATE
- 730
)
AND TRUNC (SYSDATE)
GROUP BY DECODE (SUBSTR (codice_gruppo, 1, 3),
'BKL', 'BKL',
DECODE (a.richiestaadhocaom || a.richiestaadhoc,
'00', 'Standard',
'PHoc'
)
),
a.tipo_cliente,
a.nome_ot,
a.codice_pre_post_pagato,
a.marcaggio,
a.sottomarcaggio,
a.codice_operatore_recipient,
a.codice_operatore_donating,
TRUNC (b.data_i_o),
TO_CHAR (b.data_i_o, 'yy-iw'),
TO_CHAR (b.data_i_o, 'mm'),
c.descr_stato,
ca.descr_stato,
b.stato_a,
a.stato,
DECODE (a.stato, 10, a.codicerifiutovalidazione, NULL),
DECODE (a.stato, 10, r.causale, NULL),
a.codice_operatore_rec_eff,
a.codice_operatore_don_eff) r
UNION
SELECT ROWNUM AS id_prog, r.*
FROM (SELECT SYSDATE AS data_aggiornamento,
DECODE (SUBSTR (codice_gruppo, 1, 3),
'BKL', 'BKL',
DECODE (a.richiestaadhoc, '0', 'Standard', 'PHoc')
) AS tipo_richiesta,
a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
a.marcaggio, a.sottomarcaggio,
'TIMG' AS codice_operatore_recipient,
--a.codice_operatore_recipient,
a.codice_operatore_donating,
a.codice_operatore_recipient AS recipient_effettivo,
a.codice_operatore_donating AS donor_effettivo,
TRUNC (b.data_i_o) AS data_evento,
TO_CHAR (b.data_i_o, 'yy-iw') AS settimana_evento,
TO_CHAR (b.data_i_o, 'mm') AS mese_evento,
c.descr_stato AS descr_stato_evento,
ca.descr_stato AS descr_stato_attuale,
b.stato_a AS stato_evento, a.stato AS stato_attuale,
DECODE (a.stato,
7, a.codicerifiutovalidazione,
NULL
) AS cod_rifiuto,
DECODE (a.stato, 7, r.causale, NULL) AS causale_rifiuto,
COUNT (*) AS richieste
FROM mnp.mnp_gest_rich_rec_virt a,
mnp.mnp_storico_rich_rec_virt b,
mnp.mnp_stato_rec_virt c,
mnp.mnp_stato_rec_virt ca,
mnp.mnp_causale_rifiuto r
WHERE (TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 397)
AND TRUNC (SYSDATE)
)
AND ( a.codice_operatore_donating = 'TIMG'
OR a.codice_operatore_donating = 'TIMT'
)
AND (a.id_richiesta = b.id_richiesta)
AND ( b.stato_a IN (2, 4, 6, 7, 8, 9, 12)
OR (b.stato_da = -1 AND b.stato_a = 3 AND a.stato <> 5)
)
AND (b.stato_a = c.id_stato)
AND (a.stato = ca.id_stato)
AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
-- prendere ultime tre partizioni che sono su base semestrale
AND TRUNC (b.dataricezionerichiesta) BETWEEN TO_DATE ( SYSDATE
- 730
)
AND TRUNC (SYSDATE)
AND TRUNC (a.dataricezionerichiesta) BETWEEN TO_DATE ( SYSDATE
- 730
)
AND TRUNC (SYSDATE)
GROUP BY DECODE (SUBSTR (codice_gruppo, 1, 3),
'BKL', 'BKL',
DECODE (a.richiestaadhoc, '0', 'Standard', 'PHoc')
),
a.tipo_cliente,
a.nome_ot,
a.codice_pre_post_pagato,
a.marcaggio,
a.sottomarcaggio,
a.codice_operatore_recipient,
a.codice_operatore_donating,
TRUNC (b.data_i_o),
TO_CHAR (b.data_i_o, 'yy-iw'),
TO_CHAR (b.data_i_o, 'mm'),
c.descr_stato,
ca.descr_stato,
b.stato_a,
a.stato,
DECODE (a.stato, 7, a.codicerifiutovalidazione, NULL),
DECODE (a.stato, 7, r.causale, NULL)) r;

View File

@@ -0,0 +1,159 @@
DECLARE
V_DATA_CURR DATE;
V_DATA_MAX date;
V_RECIPIENT_NEW varchar2(10);
BEGIN
-- INTEGRAZIONE CON I DONOR E I REC_VIRT TRA OTTOBRE ED APRILE
FOR R_INTEGRAZIONE_VAR IN
( SELECT 'V' TIPO_RECORDO, SUBSTR(R.MSISDN, 3) MSISDN, R.DATA_CUT_OVER_EFF, R.CODICE_OPERATORE_REC_EFF RECIPIENT_NEW
FROM MNP_GESTIONE_RICHIESTA R
WHERE (R.MSISDN, R.DATA_CUT_OVER_EFF) IN
( SELECT R1.MSISDN, MAX(R1.DATA_CUT_OVER_EFF)
FROM MNP_GESTIONE_RICHIESTA R1
WHERE R1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND R1.STATO NOT IN (22,12,10,4)
AND R1.TIPO_CLIENTE = 'CO'
GROUP BY R1.MSISDN
)
UNION
SELECT 'V' TIPO_RECORDO, SUBSTR(RV.MSISDN, 3) MSISDN, RV.DATA_CUT_OVER_EFF, RV.CODICE_OPERATORE_RECIPIENT RECIPIENT_NEW
FROM MNP_GEST_RICH_REC_VIRT RV
WHERE (RV.MSISDN, RV.DATA_CUT_OVER_EFF) IN
( SELECT RV1.MSISDN, MAX(RV1.DATA_CUT_OVER_EFF)
FROM MNP_GEST_RICH_REC_VIRT RV1
WHERE RV1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND RV1.STATO NOT IN (7,9)
AND RV1.TIPO_CLIENTE = 'CO'
GROUP BY RV1.MSISDN
)
)
LOOP
-- INSERIMENTO IN TABELLA
BEGIN
INSERT INTO MNP_DBC_VARIAZIONE_OLO (tipo_record, num_tel, data, recipient_new)
VALUES
(R_INTEGRAZIONE_VAR.TIPO_RECORDO, R_INTEGRAZIONE_VAR.MSISDN,
R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF,R_INTEGRAZIONE_VAR.RECIPIENT_NEW);
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
SELECT DATA
INTO V_DATA_CURR
FROM MNP_DBC_VARIAZIONE_OLO
WHERE NUM_TEL = R_INTEGRAZIONE_VAR.MSISDN;
IF V_DATA_CURR < R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF THEN
UPDATE MNP_DBC_VARIAZIONE_OLO
SET DATA = R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF,
RECIPIENT_NEW = R_INTEGRAZIONE_VAR.RECIPIENT_NEW
WHERE NUM_TEL = R_INTEGRAZIONE_VAR.MSISDN;
END IF;
END;
COMMIT;
END LOOP;
--
-- AGGIORNAMENTO DEI CAMPI DATA E RECIPIENT_NEW VERIFICANDO LA PRESENZA DI PORTING TERZE PARTI O RECIPIENT TIM
FOR R_VAR_MSISDN IN
( SELECT * FROM MNP_DBC_VARIAZIONE_OLO WHERE LAVORATO IS NULL )
LOOP
BEGIN
SELECT *
INTO V_DATA_MAX, V_RECIPIENT_NEW
FROM
( SELECT q.*
FROM
( SELECT P.DATA_CUT_OVER DATA, P.CODICE_OPERATORE_RECIPIENT REC_NEW
FROM MNP_GESTIONE_RICHIESTA_PORTING P
WHERE (P.MSISDN, P.DATA_CUT_OVER) IN
( SELECT MSISDN, MAX(P1.DATA_CUT_OVER)
FROM MNP_GESTIONE_RICHIESTA_PORTING P1
WHERE P1.STATO = 6
AND P1.DATA_CUT_OVER BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND P1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY P1.MSISDN
)
UNION
SELECT R.DATA_CUT_OVER_EFF DATA, R.CODICE_OPERATORE_REC_EFF REC_NEW
FROM MNP_GESTIONE_RICHIESTA_REC R
WHERE (R.MSISDN, R.DATA_CUT_OVER_EFF) IN
( SELECT R1.MSISDN, MAX(R1.DATA_CUT_OVER_EFF)
FROM MNP_GESTIONE_RICHIESTA_REC R1
WHERE R1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND R1.STATO = 12
AND R1.TIPO_CLIENTE = 'CO'
AND R1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY R1.MSISDN
)
UNION
SELECT DV.DATA_CUT_OVER_EFF DATA, DV.CODICE_OPERATORE_RECIPIENT REC_NEW
FROM MNP_GEST_RICH_DONOR_VIRT DV
WHERE (DV.MSISDN, DV.DATA_CUT_OVER_EFF) IN
( SELECT DV1.MSISDN, MAX(DV1.DATA_CUT_OVER_EFF)
FROM MNP_GEST_RICH_DONOR_VIRT DV1
WHERE DV1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND DV1.STATO = 11
AND DV1.TIPO_CLIENTE = 'CO'
AND DV1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY DV1.MSISDN
)
) q
ORDER BY q.data desc)
WHERE rownum <2;
UPDATE MNP_DBC_VARIAZIONE_OLO
SET DATA = V_DATA_MAX,
RECIPIENT_NEW = V_RECIPIENT_NEW,
LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND THEN
V_DATA_MAX := NULL;
V_RECIPIENT_NEW := NULL;
--
UPDATE MNP_DBC_VARIAZIONE_OLO
SET LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
END;
END LOOP;
END;
/
TRUNCATE TABLE MNP_DBC_CESSAZIONE_OLO;
INSERT INTO MNP_DBC_CESSAZIONE_OLO
SELECT 'C', SUBSTR(CP.MSISDN, 3), CP.DATA_CUT_OVER
FROM MNP_GESTIONE_RICH_CESS_PORT CP, MNP_STORICO_CESS_PORTING SCP
WHERE CP.ID_RICHIESTA = SCP.ID_RICHIESTA
AND SCP.STATO_A = 2
AND SCP.DATA_LAVORAZIONE BETWEEN TO_DATE('01102012', 'DDMMYYYY') AND TO_DATE('12042013', 'DDMMYYYY')
UNION
SELECT 'C', SUBSTR(C.MSISDN, 3), C.DATA_CUT_OVER
FROM MNP_GESTIONE_RICHIESTA_CESS C, MNP_STORICO_CESS SC
WHERE C.ID_RICHIESTA = SC.ID_RICHIESTA
AND SC.STATO_A = 3
AND SC.DATA_LAVORAZIONE BETWEEN TO_DATE('01102012', 'DDMMYYYY') AND TO_DATE('12042013', 'DDMMYYYY');
COMMIT;
DELETE MNP_DBC_VARIAZIONE_OLO
WHERE NUM_TEL IN
( SELECT NUM_TEL
FROM MNP_DBC_CESSAZIONE_OLO
);
COMMIT;

View File

@@ -0,0 +1,5 @@
set serveroutput on;
execute DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => 'MNP', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, CASCADE => TRUE);
execute DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'MNP', TABNAME =>'MNP_GESTIONE_RICHIESTA_REC', METHOD_OPT =>'FOR COLUMNS STATO SIZE 20');
execute DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'MNP', TABNAME =>'HZ_GESTIONE_RICHIESTA', METHOD_OPT =>'FOR COLUMNS STATO SIZE 20');
exit;

View File

@@ -0,0 +1,15 @@
DROP table mnp_tipo_clienti CASCADE CONSTRAINTS;
ALTER TABLE mnp_appo_tipo_clienti DROP PRIMARY KEY;
ALTER table mnp_appo_tipo_clienti rename to mnp_tipo_clienti;
ALTER TABLE mnp_tipo_clienti
ADD CONSTRAINT pk_tipo_clienti PRIMARY KEY (msisdn)
USING INDEX
TABLESPACE TAB_IDX_MEDIUM
/
CREATE INDEX IDX_TIPO_CLIENTI_01 ON MNP_TIPO_CLIENTI(UTENZA_DUAL) TABLESPACE TAB_IDX_MEDIUM
/

View File

@@ -0,0 +1,36 @@
-- EXEC AS USER MNP - DML file
-- AUTHOR : NTT DATA
-- CREATED : 20180502
-- PURPOSE : 2018 C5 MNP_SM_2353 MNP_RU_522
-- PROCESS : Donor Virtuale MVNO e MVNO2MVNO
-- TARGET : Table MNP.MNP_GEST_RICH_DONOR_VIRT
-- PURPOSE : Aggiornamento giornaliero campo DATA_CUT_OVER_CALC per i record con
-- - stato di elaborazione ACQUISITA (1) oppure ACCODATA (3);
-- - DATA_CUT_OVER_CALC antecedente a DATA_CUT_OVER oppure
-- - DATA_CUT_OVER_CALC dichiarata come data di manutenzione;
-- valorizzare al secondo giorno lavorativo dopo il giorno corrente di esecuzione
-- NOTA1 : necessario ulteriore filtro su CARATTERIZZAZIONE = 1
-- - valori -1 e 0 indicano che la richiesta deve ancora essere prevalidata
-- - valori > 1 indicano che la richiesta non e' lavorabile per problemi
-- in entrambi i casi non deve avanzare la lavorazione (e' incongruente);
-- NOTA2 : per congruenza, contestualmente alla DATA_CUT_OVER_CALC si deve
-- aggiornare anche DATA_VALIDAZIONE_MAX (sysdate + 1 g.lav);
-- NOTA3 : non verifica se la DCO stessa sia festiva o manutenzione (spetta al codice);
-- ALERT : deve poter eseguire la funzione
-- - DWH.FUN_GIORNI_PIU(DataIniziale, NumGiorniLavorativi)
-- questa modalita' di invocazione verso schema DWH
-- e' stata convalidata nel DB di ESERCIZIO.
-- Collaudo potrebbe essere configurato diverso (dblink alias o che) ma
-- la priorita' e' evitare rifiuto installazione ESE (cfr estate 2017)
UPDATE MNP_GEST_RICH_DONOR_VIRT grdv
SET grdv.DATA_VALIDAZIONE_MAX = DWH.FUN_GIORNI_PIU(TRUNC(SYSDATE), 1)
, grdv.DATA_CUT_OVER_CALC = DWH.FUN_GIORNI_PIU(TRUNC(SYSDATE), 2)
WHERE grdv.STATO IN (1, 3)
AND grdv.CARATTERIZZAZIONE = 1
AND (
TRUNC(grdv.DATA_CUT_OVER_CALC) < TRUNC(grdv.DATA_CUT_OVER)
OR 0 < ( SELECT COUNT(*) FROM MNP_DATA_MANUTENZIONE mdm WHERE TRUNC(MDM.DATA_MANUTENZIONE) = TRUNC(grdv.DATA_CUT_OVER_CALC) )
)
;
COMMIT;
-- NON mettere la / finale altrimenti fa un secondo commit

View File

@@ -0,0 +1,36 @@
-- EXEC AS USER MNP - DML file
-- AUTHOR : NTT DATA
-- CREATED : 20180502
-- PURPOSE : 2018 C5 MNP_SM_2353 MNP_RU_522
-- PROCESS : Recipient Virtuale MVNO e MVNO2MVNO
-- TARGET : Table MNP.MNP_GEST_RICH_REC_VIRT
-- PURPOSE : Aggiornamento giornaliero campo DATA_CUT_OVER_CALC per i record con
-- - stato di elaborazione ACQUISITA (1) oppure ACCODATA (3);
-- - DATA_CUT_OVER_CALC antecedente a DATA_CUT_OVER oppure
-- - DATA_CUT_OVER_CALC dichiarata come data di manutenzione;
-- valorizzare al secondo giorno lavorativo dopo il giorno corrente di esecuzione
-- NOTA1 : necessario ulteriore filtro su CARATTERIZZAZIONE = 1
-- - valori -1 e 0 indicano che la richiesta deve ancora essere prevalidata
-- - valori > 1 indicano che la richiesta non e' lavorabile per problemi
-- in entrambi i casi non deve avanzare la lavorazione (e' incongruente);
-- NOTA2 : per congruenza, contestualmente alla DATA_CUT_OVER_CALC si deve
-- aggiornare anche DATA_VALIDAZIONE_MAX (sysdate + 1 g.lav);
-- NOTA3 : non verifica se la DCO stessa sia festiva o manutenzione (spetta al codice);
-- ALERT : deve poter eseguire la funzione
-- - DWH.FUN_GIORNI_PIU(DataIniziale, NumGiorniLavorativi)
-- questa modalita' di invocazione verso schema DWH
-- e' stata convalidata nel DB di ESERCIZIO.
-- Collaudo potrebbe essere configurato diverso (dblink alias o che) ma
-- la priorita' e' evitare rifiuto installazione ESE (cfr estate 2017)
UPDATE MNP_GEST_RICH_REC_VIRT grrv
SET grrv.DATA_VALIDAZIONE_MAX = DWH.FUN_GIORNI_PIU(TRUNC(SYSDATE), 1)
, grrv.DATA_CUT_OVER_CALC = DWH.FUN_GIORNI_PIU(TRUNC(SYSDATE), 2)
WHERE grrv.STATO IN (1, 3)
AND grrv.CARATTERIZZAZIONE = 1
AND (
TRUNC(grrv.DATA_CUT_OVER_CALC) < TRUNC(grrv.DATA_CUT_OVER)
OR 0 < ( SELECT COUNT(*) FROM MNP_DATA_MANUTENZIONE mdm WHERE TRUNC(MDM.DATA_MANUTENZIONE) = TRUNC(grrv.DATA_CUT_OVER_CALC) )
)
;
COMMIT;
-- NON mettere la / finale altrimenti fa un secondo commit

View File

@@ -0,0 +1,7 @@
DELETE FROM mnp_message_id
where trunc(data)<trunc(sysdate-7)
/
COMMIT
/
EXIT

View File

@@ -0,0 +1,18 @@
set serveroutput on
declare
modalita varchar2(2):='&1';
operatore varchar2(2):='&2';
begin
DBMS_OUTPUT.PUT_LINE('modalita ' || modalita);
DBMS_OUTPUT.PUT_LINE('operatore ' || operatore);
if (operatore<>'-1') then
DBMS_OUTPUT.PUT_LINE('updating operator ' || operatore);
update MNP_EVASIONE SET FIFO_DISATTIVO = modalita where COD_OLO = operatore;
else
DBMS_OUTPUT.PUT_LINE('updating all operators');
update MNP_EVASIONE SET FIFO_DISATTIVO = modalita;
end if;
end;
/
exit;

View File

@@ -0,0 +1,2 @@
update MNP_APPO_TIPO_CLIENTI set utenza_dual='39'||utenza_dual where utenza_dual is not null
/