--da eseguire come utente DBCGO

-------------------------------------------------------------------------
--TABLES

CREATE TABLE DBCGO_PROFILO_TARIFFARIO (
	   SISTEMA_MITTENTE			VARCHAR2(4),
	   COD_PROFILO_TARIFFARIO	VARCHAR2(10),
	   DESC_PROFILO_TARIFFARIO	VARCHAR2(50) NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL;

ALTER TABLE DBCGO_PROFILO_TARIFFARIO ADD
CONSTRAINT DBCGO_PROFILO_TARIFFARIO_PK
PRIMARY KEY(SISTEMA_MITTENTE, COD_PROFILO_TARIFFARIO)
USING INDEX 
TABLESPACE DBCGO_IDX_SMALL
ENABLE
VALIDATE;

------------------------------------------------------------
CREATE TABLE DBCGO_OFFERTA (
	   SISTEMA_MITTENTE	VARCHAR2(4),
	   COD_OFFERTA		VARCHAR2(5),
	   DESC_OFFERTA		VARCHAR2(50) NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL;

ALTER TABLE DBCGO_OFFERTA ADD
CONSTRAINT DBCGO_OFFERTA_PK
PRIMARY KEY(SISTEMA_MITTENTE, COD_OFFERTA)
USING INDEX 
TABLESPACE DBCGO_IDX_SMALL
ENABLE
VALIDATE;

------------------------------------------------------------
CREATE TABLE DBCGO_ACCORDO (
	   SISTEMA_MITTENTE	VARCHAR2(4),
	   COD_ACCORDO		VARCHAR2(10),
	   DESC_ACCORDO		VARCHAR2(150) NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL;

ALTER TABLE DBCGO_ACCORDO ADD
CONSTRAINT DBCGO_ACCORDO_PK
PRIMARY KEY(SISTEMA_MITTENTE, COD_ACCORDO)
USING INDEX 
TABLESPACE DBCGO_IDX_SMALL
ENABLE
VALIDATE;

-------------------------------------------------------------


ALTER TABLE DBCGO_GESTIONE_RICHIESTA_REC add(
    SISTEMA_MITTENTE VARCHAR2(4),
    COD_PROFILO_TARIFFARIO	VARCHAR2(10),
	  COD_OFFERTA				VARCHAR2(5),
	  COD_ACCORDO				VARCHAR2(10)
);
-------------------------------------------------------------------------
-- RU_191_192
ALTER TABLE DBCGO_GESTIONE_RICHIESTA_REC RENAME COLUMN VALORE_CLIENTE TO CAR1;
ALTER TABLE DBCGO_GESTIONE_RICHIESTA_REC RENAME COLUMN VALORE_SPESA TO CAR2;
-------------------------------------------------------------------------
--MVIEW

CREATE MATERIALIZED VIEW LOG ON DBCGO_PP TABLESPACE DBCGO_DATA_BIG WITH SEQUENCE, ROWID,(msisdn,terminato) INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW DBCGO_PP_MV00 
TABLESPACE DBCGO_DATA_BIG
NOLOGGING
REFRESH FAST ON COMMIT WITH ROWID
AS 
SELECT msisdn,count(*) pp_num 
FROM dbcgo_pp pp 
WHERE terminato = 1 
group by msisdn;


CREATE UNIQUE INDEX DBCGO_PP_MV00_PK ON DBCGO_PP_MV00
(MSISDN)
TABLESPACE DBCGO_IDX_BIG
NOLOGGING;

CREATE INDEX DBCGO_PP_MV00_IDX01 ON DBCGO_PP_MV00
(pp_num)
TABLESPACE DBCGO_IDX_BIG
NOLOGGING;

-------------------------------------------------------------------------
--VIEW
CREATE OR REPLACE VIEW DBCGO_GESTIONE_RIC_REC_V00
(ID_RICHIESTA, STATO, TIPO_CLIENTE, DATA_CUT_OVER_CALC, DATA_VALIDAZIONE_MAX, 
 DATARICEZIONERICHIESTA, DATA_CUT_OVER, CODICE_OPERATORE_DONATING, MSISDN, CODICE_FISCALE_PARTITA_IVA, 
 CODICE_PRE_POST_PAGATO, NOME_CLIENTE, COGNOME_CLIENTE, RAGIONE_SOCIALE, CAUSALE_ACCODAMENTO, 
 RICHIESTAADHOC, RICHIESTAADHOCAOM, ID_PRIORITA, INSERT_DATE, UPDATE_DATE, 
 ICCD_SERIAL_NUMBER, IMSI, NOME_OT, NUMERO_DOCUMENTO, TIPO_DOCUMENTO, 
 NUMERO_INVII, TIMESTAMP, DATA_TRANSIZIONE_STATO, ID_PRIORITA_MNP, DATA_TRANSIZIONE_STATO_GRP, 
 CODICE_DEALER, CAR1, CAR2, CODICE_OPERATORE_RECIPIENT, CODICE_GRUPPO, 
 SISTEMA_MITTENTE, COD_PROFILO_TARIFFARIO, COD_OFFERTA, COD_ACCORDO, DESCR_STATO, 
 VIS_DAY_NUM, ID_STATO_GRP, PRIORITY_TYPE, PRIORITA, PRIORITA_MNP, 
 NOME_OT_DESC, NOME_OT_ORDER_BY, TIPO_CLIENTE_DESC, CODICE_PRE_POST_PAGATO_DESC, CAR1_DESC, 
 CAR2_DESC, SISTEMA_MITTENTE_DESC, DESC_PROFILO_TARIFFARIO, DESC_OFFERTA, DESC_ACCORDO,
 PP_NUM)
AS 
(SELECT 
			a.ID_RICHIESTA,
			a.STATO,
			a.TIPO_CLIENTE,
			a.DATA_CUT_OVER_CALC,
			a.DATA_VALIDAZIONE_MAX,
			a.DATARICEZIONERICHIESTA,
			a.DATA_CUT_OVER,
			a.CODICE_OPERATORE_DONATING,
			a.MSISDN,
			a.CODICE_FISCALE_PARTITA_IVA,
			a.CODICE_PRE_POST_PAGATO,
			a.NOME_CLIENTE,
			a.COGNOME_CLIENTE,
			a.RAGIONE_SOCIALE,
			a.CAUSALE_ACCODAMENTO,
			a.RICHIESTAADHOC,
			a.RICHIESTAADHOCAOM,
			a.ID_PRIORITA,
			a.INSERT_DATE,
			a.UPDATE_DATE,
			a.ICCD_SERIAL_NUMBER,
			a.IMSI,
			a.NOME_OT,
			a.NUMERO_DOCUMENTO,
			a.TIPO_DOCUMENTO,
			a.NUMERO_INVII,
			a.TIMESTAMP,
			a.DATA_TRANSIZIONE_STATO,
			a.ID_PRIORITA_MNP,
			a.DATA_TRANSIZIONE_STATO_GRP,
			a.CODICE_DEALER,
			a.CAR1,
			a.CAR2,
			a.CODICE_OPERATORE_RECIPIENT,
			a.CODICE_GRUPPO,
			a.SISTEMA_MITTENTE,
			a.COD_PROFILO_TARIFFARIO,
			a.COD_OFFERTA,
			a.COD_ACCORDO,
			d.descr AS descr_stato,
			d.vis_day_num AS vis_day_num,
			d.id_stato_grp AS id_stato_grp,
			b.priority_type AS priority_type,
			c.descr AS priorita,
			e.descr AS priorita_mnp,
			f.descr AS nome_ot_desc,
			f.order_by AS nome_ot_order_by,
			g.descr AS tipo_cliente_desc,
			h.descr AS codice_pre_post_pagato_desc,
			i.descr AS car1_desc,
			l.descr AS car2_desc,
			n.descr AS sistema_mittente_desc,
			PTP.DESC_PROFILO_TARIFFARIO,
			PTO.DESC_OFFERTA,
			PTA.DESC_ACCORDO,
			pp.pp_num AS pp_num
	FROM 
		dbcgo_gestione_richiesta_rec a,
		dbcgo_pp_mv00 pp,
		dbcgo_stato_rec b,
		dbcgo_stato_rec_grp d,
		dbcgo_priorita_rec c,
		dbcgo_priorita_rec e,
		dbcgo_lov f,
		dbcgo_lov g,
		dbcgo_lov h,
		dbcgo_lov i,
		dbcgo_lov l,
		dbcgo_lov n,		
		dbcgo_profilo_tariffario PTP,
		dbcgo_offerta	PTO,
		dbcgo_accordo	PTA		
	WHERE a.msisdn=pp.msisdn(+)			
		AND a.stato = b.id_stato
		AND b.id_stato_grp = d.id_stato
		AND a.id_priorita = c.id_priorita
		AND a.id_priorita_mnp = e.id_priorita
		AND a.nome_ot = f.NAME(+)
		AND f.lov_name(+) = 'OT_REC'
		AND a.tipo_cliente = g.NAME
		AND g.lov_name = 'CUST_TYPE'
		AND a.codice_pre_post_pagato = h.NAME
		AND h.lov_name = 'TIPO_CONTRATTO'
		AND a.car1 = i.NAME
		AND i.lov_name = 'VALORE_CLIENTE'
		AND a.car2 = l.NAME
		AND l.lov_name = 'VALORE_SPESA'
		AND a.sistema_mittente = n.NAME(+)
		AND n.lov_name(+) = 'SIST_MITTENTE'		
		AND a.SISTEMA_MITTENTE = PTP.SISTEMA_MITTENTE(+) 
		AND a.COD_PROFILO_TARIFFARIO = PTP.COD_PROFILO_TARIFFARIO(+)
		AND a.SISTEMA_MITTENTE = PTO.SISTEMA_MITTENTE(+)
		AND a.COD_OFFERTA = PTO.COD_OFFERTA(+)
		AND a.SISTEMA_MITTENTE = PTA.SISTEMA_MITTENTE(+)
		AND a.COD_ACCORDO = PTA.COD_ACCORDO(+)		
);

comment on table dbcgo_gestione_ric_rec_v00 is 'Vista con decodifica dei campi id e con numero Ping Pong per la pagina di ricerca';

-------------------------------------------------------------------------
CREATE OR REPLACE VIEW dbcgo_gestione_ric_v00(
		ID_RICHIESTA, STATO, TIPO_CLIENTE, DATA_CUT_OVER_CALC, DATA_VALIDAZIONE_MAX, DATARICEZIONERICHIESTA, 
		DATA_CUT_OVER, CODICERIFIUTOVALIDAZIONE, CODICE_OPERATORE_RECIPIENT, MSISDN, CODICE_FISCALE_PARTITA_IVA, 
		CODICE_PRE_POST_PAGATO, NOME_CLIENTE, COGNOME_CLIENTE, RAGIONE_SOCIALE, RICHIESTAADHOCAOM, RICHIESTAADHOC, 
		MARCAGGIO, SOTTOMARCAGGIO, ID_PRIORITA, INSERT_DATE, UPDATE_DATE, CODICE_GRUPPO, ICCD_SERIAL_NUMBER, IMSI, 
		IPOTESI_RIFIUTO, NUMERO_DOCUMENTO, TIPO_DOCUMENTO, TIMESTAMP, DATA_TRANSIZIONE_STATO, NOME_OT_GEO, NOME_OT_LEG, 
		ID_PRIORITA_MNP, DATA_TRANSIZIONE_STATO_GRP, CODICE_OPERATORE_DONATING,
		descr_stato,
		vis_day_num,
		id_stato_grp,
		priority_type,
		priorita,
		priorita_mnp,
		marcaggio_desc,
		sottomarcaggio_desc,
		nome_ot_geo_desc,
		nome_ot_leg_desc,
		nome_ot_leg_order_by,
		tipo_cliente_desc,
		codice_pre_post_pagato_desc,
		pp_num
) AS
   (SELECT 
				a.ID_RICHIESTA, a.STATO, a.TIPO_CLIENTE, a.DATA_CUT_OVER_CALC, a.DATA_VALIDAZIONE_MAX, a.DATARICEZIONERICHIESTA,
				a.DATA_CUT_OVER, a.CODICERIFIUTOVALIDAZIONE, a.CODICE_OPERATORE_RECIPIENT, a.MSISDN, a.CODICE_FISCALE_PARTITA_IVA,
				a.CODICE_PRE_POST_PAGATO, a.NOME_CLIENTE, a.COGNOME_CLIENTE, a.RAGIONE_SOCIALE, a.RICHIESTAADHOCAOM, a.RICHIESTAADHOC,
				a.MARCAGGIO, a.SOTTOMARCAGGIO, a.ID_PRIORITA, a.INSERT_DATE, a.UPDATE_DATE, a.CODICE_GRUPPO, a.ICCD_SERIAL_NUMBER, a.IMSI,
				a.IPOTESI_RIFIUTO, a.NUMERO_DOCUMENTO, a.TIPO_DOCUMENTO, a.TIMESTAMP, a.DATA_TRANSIZIONE_STATO, a.NOME_OT_GEO, a.NOME_OT_LEG,
				a.ID_PRIORITA_MNP, a.DATA_TRANSIZIONE_STATO_GRP, a.CODICE_OPERATORE_DONATING,
				d.descr AS descr_stato,
				d.vis_day_num AS vis_day_num,
				d.id_stato_grp AS id_stato_grp,
				b.priority_type AS priority_type,
				c.descr AS priorita,
				e.descr AS priorita_mnp,
				f.desc_mar AS marcaggio_desc,
				g.desc_clu AS sottomarcaggio_desc,
				h.descr AS nome_ot_geo_desc,
				i.descr AS nome_ot_leg_desc,
				i.order_by AS nome_ot_leg_order_by,
				j.descr AS tipo_cliente_desc,
				k.descr AS codice_pre_post_pagato_desc,
				l.pp_num AS pp_num
      FROM dbcgo_gestione_richiesta a, 
      		 dbcgo_pp_mv00 l,
			     dbcgo_stato b, 
					 dbcgo_stato_grp d, 
					 dbcgo_priorita c, 
					 dbcgo_priorita e, 
					 dbm_anag_mar f, 
					 dbm_anag_clu g, 
					 dbcgo_lov h, 
					 dbcgo_lov i, 
					 dbcgo_lov j, 
					 dbcgo_lov k					 
     WHERE a.msisdn = l.msisdn(+)
       AND a.stato = b.id_stato
       AND b.id_stato_grp = d.id_stato
       AND a.id_priorita = c.id_priorita
       AND a.id_priorita_mnp = e.id_priorita
       AND a.marcaggio = f.cod_mar(+)
       AND a.sottomarcaggio = g.cod_clu(+)
       AND a.nome_ot_geo = h.NAME(+)
       AND h.lov_name(+) = 'OT'
       AND a.nome_ot_leg = i.NAME(+)
       AND i.lov_name(+) = 'OT'
       AND a.tipo_cliente = j.NAME
       AND j.lov_name = 'CUST_TYPE'
       AND a.codice_pre_post_pagato = k.NAME
       AND k.lov_name = 'TIPO_CONTRATTO'       
);



comment on table dbcgo_gestione_ric_v00 is 'Vista con decodifica dei campi id e con numero Ping Pong per la pagina di ricerca';


------------------------------------------------------------
CREATE OR REPLACE VIEW DBCGO_PROFILO_TARIFFARIO_V AS 
SELECT 
	LOV.NAME AS TIPO_CLIENTE,
	PROF_TAR.*
FROM 
	DBCGO_LOV LOV,
	DBCGO_PROFILO_TARIFFARIO PROF_TAR 
WHERE 
		LOV.LOV_ID IN (
			SELECT 
				LOV_ID_REF 
			FROM 
				DBCGO_LOV_REF lRef,
				DBCGO_LOV l 
			WHERE 
					l.LOV_NAME = 'SIST_MITTENTE'
				AND PROF_TAR.SISTEMA_MITTENTE = l.NAME
				AND lRef.LOV_ID = l.LOV_ID
		)
ORDER BY NAME, SISTEMA_MITTENTE;
------------------------------------------------------------
CREATE OR REPLACE VIEW DBCGO_OFFERTA_V AS
SELECT 
	LOV.NAME AS TIPO_CLIENTE,
	offerta.*
FROM 
	DBCGO_LOV LOV,
	DBCGO_OFFERTA offerta 
WHERE 
		LOV.LOV_ID IN (
			SELECT 
				LOV_ID_REF 
			FROM 
				DBCGO_LOV_REF lRef,
				DBCGO_LOV l 
			WHERE 
					l.LOV_NAME = 'SIST_MITTENTE'
				AND offerta.SISTEMA_MITTENTE = l.NAME
				AND lRef.LOV_ID = l.LOV_ID
		)
ORDER BY NAME, SISTEMA_MITTENTE;
----------------------------------------------------------------
CREATE OR REPLACE VIEW DBCGO_ACCORDO_V AS
SELECT 
	LOV.NAME AS TIPO_CLIENTE,
	accordo.*
FROM 
	DBCGO_LOV LOV,
	DBCGO_ACCORDO accordo 
WHERE 
		LOV.LOV_ID IN (
			SELECT 
				LOV_ID_REF 
			FROM 
				DBCGO_LOV_REF lRef,
				DBCGO_LOV l 
			WHERE 
					l.LOV_NAME = 'SIST_MITTENTE'
				AND accordo.SISTEMA_MITTENTE = l.NAME
				AND lRef.LOV_ID = l.LOV_ID
		)
ORDER BY NAME, SISTEMA_MITTENTE;
------------------------------------------------------------
-- INDEX

CREATE INDEX IDX17_DBCGO_GESTIONE_RIC_REC 
ON DBCGO_GESTIONE_RICHIESTA_REC (SISTEMA_MITTENTE)
TABLESPACE DBCGO_IDX_BIG;

CREATE INDEX IDX18_DBCGO_GESTIONE_RIC_REC 
ON DBCGO_GESTIONE_RICHIESTA_REC (COD_PROFILO_TARIFFARIO)
TABLESPACE DBCGO_IDX_BIG;

CREATE INDEX IDX19_DBCGO_GESTIONE_RIC_REC 
ON DBCGO_GESTIONE_RICHIESTA_REC (COD_ACCORDO)
TABLESPACE DBCGO_IDX_BIG;

CREATE INDEX IDX20_DBCGO_GESTIONE_RIC_REC 
ON DBCGO_GESTIONE_RICHIESTA_REC (COD_OFFERTA)
TABLESPACE DBCGO_IDX_BIG;

---------------------------------------------------------------------------
ALTER TABLE DBM_LT_INF0 DROP (
								COD_MAR_OLD, 
								DT_LAST_AGG_MAR, 
								COD_CLU_OLD, 
								DT_LAST_AGG_CLU, 
								FAM_LINEA, 
								FAM_LINEA_OLD, 
								DT_LAST_AGG_FAM, 
								COD_FISCALE, 
								COD_AGENT_TEAM
);

ALTER TABLE DBM_LT_INF1 DROP (
								COD_MAR_OLD, 
								DT_LAST_AGG_MAR, 
								COD_CLU_OLD, 
								DT_LAST_AGG_CLU, 
								FAM_LINEA, 
								FAM_LINEA_OLD, 
								DT_LAST_AGG_FAM, 
								COD_FISCALE, 
								COD_AGENT_TEAM
);