--da eseguire come utente DBCGO

-----------------------------------------------------------
--DB LINK

CREATE DATABASE LINK mnp
CONNECT TO mnp
IDENTIFIED BY "MNP"
USING 'MNP';

-----------------------------------------------------------
--DIRECTORY

CREATE OR REPLACE DIRECTORY dbcgo_dwht_path AS '/mnpapp/dbcgo/flussi/dwht';

-----------------------------------------------------------
--TABLE 

ALTER TABLE dbcgo_gestione_richiesta
ADD (data_transizione_stato_grp DATE,
     codice_operatore_donating VARCHAR2(4));

CREATE BITMAP INDEX idx14_dbcgo_gestione_ric
ON dbcgo_gestione_richiesta(codice_pre_post_pagato)
TABLESPACE dbcgo_idx_big;

-----------------------------------------------------------
ALTER TABLE dbcgo_gestione_richiesta_rec
ADD (data_transizione_stato_grp DATE,
     codice_dealer VARCHAR2(10),
     valore_cliente VARCHAR2(40) DEFAULT 'ND' NOT NULL,
     valore_spesa VARCHAR2(40) DEFAULT 'ND' NOT NULL,
     codice_operatore_recipient VARCHAR2(4),
     codice_gruppo VARCHAR2(12));

CREATE BITMAP INDEX idx12_dbcgo_gestione_ric_rec
ON dbcgo_gestione_richiesta_rec(valore_cliente)
TABLESPACE dbcgo_idx_big;

CREATE BITMAP INDEX idx13_dbcgo_gestione_ric_rec
ON dbcgo_gestione_richiesta_rec(valore_spesa)
TABLESPACE dbcgo_idx_big;

CREATE BITMAP INDEX idx14_dbcgo_gestione_ric_rec
ON dbcgo_gestione_richiesta_rec(codice_pre_post_pagato)
TABLESPACE dbcgo_idx_big;

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

ALTER TABLE dbcgo_stato
ADD (stato_type NUMBER(1,0) DEFAULT 0  NOT NULL);

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

ALTER TABLE dbcgo_stato_rec
ADD (stato_type NUMBER(1,0) DEFAULT 0  NOT NULL);

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

CREATE TABLE dbcgo_gestione_richiesta_por
(
  id_richiesta                VARCHAR2(23 BYTE) NOT NULL,
  stato                       NUMBER(2)         NOT NULL,
  dataricezionerichiesta      DATE              NOT NULL,
  data_cut_over               DATE,
  codice_operatore_donating   VARCHAR2(4 BYTE)  NOT NULL,
  codice_operatore_recipient  VARCHAR2(4 BYTE)  NOT NULL,
  msisdn                      VARCHAR2(15 BYTE) NOT NULL,
  insert_date                 DATE,
  update_date                 DATE,
  TIMESTAMP                   TIMESTAMP(6)      NOT NULL,
  data_transizione_stato      DATE              NOT NULL
)
TABLESPACE dbcgo_data_big;

CREATE UNIQUE INDEX pk_dbcgo_gest_rich_por 
ON dbcgo_gestione_richiesta_por (id_richiesta)
TABLESPACE dbcgo_idx_big;

ALTER TABLE dbcgo_gestione_richiesta_por 
ADD CONSTRAINT pk_dbcgo_gest_rich_por PRIMARY KEY (id_richiesta)
USING INDEX
TABLESPACE dbcgo_idx_big;

CREATE INDEX idx01_dbcgo_gestione_ric_por 
ON dbcgo_gestione_richiesta_por (msisdn)
TABLESPACE dbcgo_idx_big;

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

CREATE TABLE SAP_ANAG_FV
(
	COD_ID						VARCHAR2(10) NOT NULL,
	COD_ID_PADRE			VARCHAR2(10) NOT NULL,
	MERCATO						VARCHAR2(4) NOT NULL,
	DISLOCAZIONE_TERR	VARCHAR2(4),
	STATO							NUMBER(1) NOT NULL,
	DEALER_TYPE				NUMBER(1) DEFAULT 0 NOT NULL
)
TABLESPACE DBCGO_DATA_BIG;

ALTER TABLE SAP_ANAG_FV 
ADD CONSTRAINT SAP_ANAG_FV_PK
PRIMARY KEY (COD_ID)
USING INDEX 
TABLESPACE DBCGO_IDX_BIG;

COMMENT ON COLUMN SAP_ANAG_FV.STATO IS '1 = dealer attivo, 0 = dealer non attivo';
COMMENT ON COLUMN SAP_ANAG_FV.DEALER_TYPE IS '1 = dealer fittizio, 0 = dealer non fittizio';

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

CREATE TABLE DBCGO_LOV_REF
(
  LOV_ID    NUMBER NOT NULL,
  LOV_ID_REF NUMBER NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL;

ALTER TABLE DBCGO_LOV_REF ADD 
CONSTRAINT PK_DBCGO_LOV_REF
 PRIMARY KEY (LOV_ID,LOV_ID_REF)
 USING INDEX 
 TABLESPACE DBCGO_IDX_SMALL
 ENABLE
 VALIDATE;

ALTER TABLE DBCGO_LOV_REF
ADD CONSTRAINT FK0_DBCGO_LOV_REF
FOREIGN KEY (LOV_ID)
REFERENCES DBCGO_LOV (LOV_ID)
ENABLE
VALIDATE;

ALTER TABLE DBCGO_LOV_REF
ADD CONSTRAINT FK1_DBCGO_LOV_REF
FOREIGN KEY (LOV_ID_REF)
REFERENCES DBCGO_LOV (LOV_ID)
ENABLE
VALIDATE;

-------------------------------------------------------------------------
CREATE TABLE DWHT_VOLUMI_AOM0
(
	MSISDN VARCHAR(40) NOT NULL,
	CODICE_OPERATORE VARCHAR(6) NOT NULL,
	NC NUMBER NOT NULL,
	DC NUMBER NOT NULL
)
TABLESPACE DBCGO_DATA_BIG;

ALTER TABLE DWHT_VOLUMI_AOM0 ADD 
CONSTRAINT DWHT_VOLUMI_AOM0_PK
 PRIMARY KEY (MSISDN)
 USING INDEX 
 TABLESPACE DBCGO_IDX_BIG;

-------------------------------------------------------------------------
CREATE TABLE DWHT_VOLUMI_AOM1
(
	MSISDN VARCHAR(40) NOT NULL,
	CODICE_OPERATORE VARCHAR(6) NOT NULL,
	NC NUMBER NOT NULL,
	DC NUMBER NOT NULL
)
TABLESPACE DBCGO_DATA_BIG;

ALTER TABLE DWHT_VOLUMI_AOM1 ADD 
CONSTRAINT DWHT_VOLUMI_AOM1_PK
 PRIMARY KEY (MSISDN)
 USING INDEX 
 TABLESPACE DBCGO_IDX_BIG;

-------------------------------------------------------------------------
CREATE TABLE EXT_DWHT_VOLUMI_AOM
(
	MSISDN VARCHAR(40),
	CODICE_OPERATORE VARCHAR(6),
	NC NUMBER,
	DC NUMBER
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY DBCGO_DWHT_PATH
     ACCESS PARAMETERS 
      ( RECORDS DELIMITED BY NEWLINE        
        BADFILE 'ext_dwht_volumi_aom.bad'
        LOGFILE 'ext_dwht_volumi_aom.log'
        FIELDS TERMINATED BY ';'
      )
     LOCATION (DBCGO_DWHT_PATH:'DWHT_VOLUMI_AOM.DAT')
  )
REJECT LIMIT UNLIMITED
NOLOGGING 
NOCACHE
NOPARALLEL;

-------------------------------------------------------------------------
CREATE TABLE DBCGO_STATO_POR
(
  ID_STATO       NUMBER(5)                      NOT NULL,
  DESCR_STATO    VARCHAR2(40 BYTE)              NOT NULL,
  ID_STATO_GRP   NUMBER(5),
  DESCR          VARCHAR2(40 BYTE),
  STATO_TYPE NUMBER(1,0) DEFAULT 0  NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL;

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

CREATE TABLE dbcgo_pp
(
	 id_richiesta                   VARCHAR2(23) NOT NULL,
    data_operazione                DATE,
    codice_operatore_donating      VARCHAR2(4) NOT NULL,
    codice_operatore_recipient     VARCHAR2(4) NOT NULL,
    msisdn                         VARCHAR2(15) NOT NULL,
    processo                       VARCHAR2(1) NOT NULL,
    terminato                      NUMBER(1,0) NOT NULL
)
TABLESPACE DBCGO_DATA_BIG;

ALTER TABLE dbcgo_pp
ADD CONSTRAINT pk_dbcgo_ping_pong PRIMARY KEY (id_richiesta,processo)
USING INDEX
TABLESPACE  DBCGO_IDX_BIG;

CREATE INDEX idx01_dbcgo_ping_pong 
ON dbcgo_pp (MSISDN)
TABLESPACE DBCGO_IDX_BIG;

CREATE INDEX idx02_dbcgo_ping_pong 
ON dbcgo_pp (id_richiesta)
TABLESPACE DBCGO_IDX_BIG;

-------------------------------------------------------------------------
--VIEW

CREATE OR REPLACE VIEW DBCGO_PP_VIEW (
   id_richiesta,msisdn,processo,codice_operatore_donating,codice_operatore_recipient,data_operazione )
AS
	( 
	select id_richiesta,msisdn,'D' as processo,codice_operatore_donating,codice_operatore_recipient,data_transizione_stato as data_operazione
	from DBCGO_GESTIONE_RICHIESTA
	where stato=16 -- stato finale
	UNION
	select id_richiesta,msisdn,'R' as processo,codice_operatore_donating,codice_operatore_recipient,data_transizione_stato as data_operazione
	from DBCGO_GESTIONE_RICHIESTA_REC
	where stato=12 -- stato finale
	UNION
	select id_richiesta,msisdn,'P' as processo,codice_operatore_donating,codice_operatore_recipient,data_transizione_stato as data_operazione
	from DBCGO_GESTIONE_RICHIESTA_POR
	where stato=6 -- stato finale
	);

-------------------------------------------------------------------------
--SYNONYM

CREATE SYNONYM DWHT_VOLUMI_AOM FOR DWHT_VOLUMI_AOM0;

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