CREATE TABLE DBCGO_GEST_RICH_REC_VIRT
(
  ID_RICHIESTA                  VARCHAR2(23) NOT NULL,
  DATA_ORA_MODIFICA             TIMESTAMP(6)    NOT NULL,
  DATA_INSERIMENTO              DATE DEFAULT SYSDATE,
  DATA_TRANSIZIONE_STATO        DATE            NOT NULL,
  STATO                         NUMBER(2)       NOT NULL,
  TIPO_CLIENTE                  VARCHAR2(2),
  DATA_CUT_OVER_CALC            DATE            NOT NULL,
  DATA_VALIDAZIONE_MAX          DATE            NOT NULL,
  DATARICEZIONERICHIESTA        DATE            NOT NULL,
  DATA_CUT_OVER                 DATE,
  CODICERIFIUTOVALIDAZIONE      VARCHAR2(100),
  CODICE_OPERATORE_RECIPIENT    VARCHAR2(4) NOT NULL,
  MSISDN                        VARCHAR2(15) NOT NULL,
  CODICE_FISCALE_PARTITA_IVA    VARCHAR2(16),
  CODICE_PRE_POST_PAGATO        VARCHAR2(3) NOT NULL,
  NOME_CLIENTE                  VARCHAR2(30),
  COGNOME_CLIENTE               VARCHAR2(50),
  RAGIONE_SOCIALE               VARCHAR2(80),
  MARCAGGIO                     VARCHAR2(2),
  SOTTOMARCAGGIO                VARCHAR2(2),
  ICCD_SERIAL_NUMBER            VARCHAR2(30),
  NUMERO_DOCUMENTO              VARCHAR2(30) NOT NULL,
  TIPO_DOCUMENTO                VARCHAR2(3) NOT NULL,
  NOME_OT_GEO                   VARCHAR2(5),
  NOME_OT_LEG                   VARCHAR2(5),
  CODICE_OPERATORE_DONATING     VARCHAR2(4) NOT NULL,
  FLAG_TC                       VARCHAR2(1) NOT NULL,
  PREVALIDAZIONE                VARCHAR2(100),
  DATA_VALIDAZIONE_EFF					DATE,
  BUSINESS_ID_REC								VARCHAR2(36),
  FLAG_ESP											NUMBER(1) NOT NULL
)
  TABLESPACE DBCGO_DATA_BIG
/

ALTER TABLE DBCGO_GEST_RICH_REC_VIRT ADD (
  CONSTRAINT PK_DBCGO_GEST_RICH_REC_VIRT
 PRIMARY KEY
 (ID_RICHIESTA))
/


CREATE TABLE DBCGO_GEST_RICH_REC_VIRT_M2M
(
  ID_RICHIESTA                  VARCHAR2(23) NOT NULL,
  DATA_ORA_MODIFICA             TIMESTAMP(6)    NOT NULL,
  DATA_INSERIMENTO              DATE DEFAULT SYSDATE,
  DATA_TRANSIZIONE_STATO        DATE            NOT NULL,
  STATO                         NUMBER(2)       NOT NULL,
  TIPO_CLIENTE                  VARCHAR2(2),
  DATA_CUT_OVER_CALC            DATE            NOT NULL,
  DATA_VALIDAZIONE_MAX          DATE            NOT NULL,
  DATARICEZIONERICHIESTA        DATE            NOT NULL,
  DATA_CUT_OVER                 DATE,
  CODICERIFIUTOVALIDAZIONE      VARCHAR2(100),
  CODICE_OPERATORE_RECIPIENT    VARCHAR2(4) NOT NULL,
  MSISDN                        VARCHAR2(15) NOT NULL,
  CODICE_FISCALE_PARTITA_IVA    VARCHAR2(16),
  CODICE_PRE_POST_PAGATO        VARCHAR2(3) NOT NULL,
  NOME_CLIENTE                  VARCHAR2(30),
  COGNOME_CLIENTE               VARCHAR2(50),
  RAGIONE_SOCIALE               VARCHAR2(80),
  ICCD_SERIAL_NUMBER            VARCHAR2(30),
  NUMERO_DOCUMENTO              VARCHAR2(30) NOT NULL,
  TIPO_DOCUMENTO                VARCHAR2(3) NOT NULL,
  CODICE_OPERATORE_DONATING     VARCHAR2(4) NOT NULL,
  FLAG_TC                       VARCHAR2(1) NOT NULL,
  PREVALIDAZIONE                VARCHAR2(100),
  DATA_VALIDAZIONE_EFF					DATE,
  BUSINESS_ID_REC								VARCHAR2(36) NOT NULL,
  BUSINESS_ID_DON								VARCHAR2(36) NOT NULL
)
  TABLESPACE DBCGO_DATA_BIG
/

ALTER TABLE DBCGO_GEST_RICH_REC_VIRT_M2M ADD (
  CONSTRAINT PK_DBCGO_GEST_RICH_RV_M2M
 PRIMARY KEY
 (ID_RICHIESTA))
/



CREATE TABLE DBCGO_GEST_RICH_DON_VIRT
(
	ID_RICHIESTA                  VARCHAR2(23) NOT NULL,
	DATA_INSERIMENTO              DATE DEFAULT SYSDATE,
  DATA_ORA_MODIFICA             TIMESTAMP(6)    NOT NULL,
  DATA_TRANSIZIONE_STATO        DATE            NOT NULL,
  STATO                         NUMBER(2)       NOT NULL,
  TIPO_CLIENTE                  VARCHAR2(2) NOT NULL,
  DATA_CUT_OVER_CALC            DATE            NOT NULL,
  DATA_VALIDAZIONE_MAX          DATE,
  DATARICEZIONERICHIESTA        DATE            NOT NULL,
  DATA_CUT_OVER                 DATE,
  CODICE_OPERATORE_DONATING     VARCHAR2(4) NOT NULL,
  CODICE_OPERATORE_RECIPIENT     VARCHAR2(4) NOT NULL,
  MSISDN                        VARCHAR2(15) NOT NULL,
  CODICE_FISCALE_PARTITA_IVA    VARCHAR2(16),
  CODICE_PRE_POST_PAGATO        VARCHAR2(3) NOT NULL,
  NOME_CLIENTE                  VARCHAR2(30),
  COGNOME_CLIENTE               VARCHAR2(50),
  RAGIONE_SOCIALE               VARCHAR2(80),
  ICCD_SERIAL_NUMBER            VARCHAR2(30),
  NOME_OT                       VARCHAR2(5) DEFAULT NULL,
  NUMERO_DOCUMENTO              VARCHAR2(30) NOT NULL,
  TIPO_DOCUMENTO                VARCHAR2(3) NOT NULL,
  FLAG_TC                       VARCHAR2(1) NOT NULL,
  CODICERIFIUTOVALIDAZIONE      VARCHAR2(100),
  BUSINESS_ID_DON								VARCHAR2(36) ,
  FLAG_FURTO										VARCHAR2(1) NOT NULL,
  FLAG_PREVALIDAZIONE						VARCHAR2(1) NOT NULL,
  PREVALIDAZIONE                VARCHAR2(100),
  FLAG_ESP											NUMBER(1) NOT NULL,
  DATA_VALIDAZIONE_EFF					DATE,
  SISTEMA_MITT									VARCHAR2(10),
  CODICE_DEALER									VARCHAR2(10)
)
  TABLESPACE DBCGO_DATA_BIG
/

ALTER TABLE DBCGO_GEST_RICH_DON_VIRT ADD (
  CONSTRAINT PK_DBCGO_GEST_RICH_DON_VIRT
 PRIMARY KEY
 (ID_RICHIESTA))
/

CREATE TABLE dbcgo_stato_don_virt
(
  ID_STATO       NUMBER(5)                      NOT NULL,
  DESCR_STATO    VARCHAR2(40 BYTE)              NOT NULL,
  FINALE         NUMBER(1)                      DEFAULT 0,
  VIS_DAY_NUM    NUMBER(4)                      DEFAULT 0                     NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL
/


ALTER TABLE dbcgo_stato_don_virt ADD (
  CONSTRAINT PK_STATO_DON_VIRT
 PRIMARY KEY
 (ID_STATO)
    USING INDEX 
    TABLESPACE DBCGO_IDX_SMALL
)
/


CREATE TABLE dbcgo_gest_ric_don_virt_tc
(
  ID_RICHIESTA            VARCHAR2(23 BYTE)     NOT NULL,
  DATA_NOTIFICA_CREDITO   DATE,
  ORA_NOTIFICA_CREDITO    VARCHAR2(5 BYTE),
  STATO                   NUMBER(2),
  IMPORTO                 NUMBER(7,2),
  DATA_TRANSIZIONE_STATO  DATE,
  DATA_ORA_MODIFICA       TIMESTAMP(6)
)
TABLESPACE DBCGO_DATA_BIG
/



ALTER TABLE dbcgo_gest_ric_don_virt_tc ADD (
  CONSTRAINT dbcgo_gest_ric_d_v_r_tc_fk
 FOREIGN KEY (id_richiesta)
 REFERENCES dbcgo_gest_rich_don_virt (id_richiesta))
/

CREATE OR REPLACE VIEW DBCGO_GEST_RIC_DON_VIRT_VIEW
(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, 
 ICCD_SERIAL_NUMBER, NOME_OT, NUMERO_DOCUMENTO, TIPO_DOCUMENTO, 
 DATA_TRANSIZIONE_STATO, CODICE_OPERATORE_RECIPIENT,
 SISTEMA_MITT,FLAG_TC,FLAG_ESP, DATA_VALIDAZIONE_EFF, CODICERIFIUTOVALIDAZIONE,
 FLAG_FURTO, FLA_PREVALIDAZIONE, PREVALIDAZIONE, BUSINESS_ID,
 DESCR_STATO, VIS_DAY_NUM, NOME_OT_DESC, NOME_OT_ORDER_BY, TIPO_CLIENTE_DESC, CODICE_PRE_POST_PAGATO_DESC, 
 SISTEMA_MITTENTE_DESC,TC_STATO, IMPORTO)
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.ICCD_SERIAL_NUMBER, 
   a.NOME_OT, 
   a.NUMERO_DOCUMENTO, 
   a.TIPO_DOCUMENTO, 
   a.DATA_TRANSIZIONE_STATO, 
   a.CODICE_OPERATORE_RECIPIENT, 
   a.SISTEMA_MITT,
   a.FLAG_TC,
   DECODE(a.FLAG_ESP,1,'Y','N') as FLAG_ESP,
   a.DATA_VALIDAZIONE_EFF, 
   a.CODICERIFIUTOVALIDAZIONE,
   a.FLAG_FURTO, 
   a.FLAG_PREVALIDAZIONE, 
   a.PREVALIDAZIONE, 
   a.BUSINESS_ID_DON AS BUSINESS_ID,
   statoDV.descr_stato AS descr_stato, 
   statoDV.vis_day_num AS vis_day_num, 
   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, 
   n.descr AS sistema_mittente_desc,
   decode(tc.stato,1,'TRASFERITO',0,'IN TRASFERIMENTO') as tc_stato,
   tc.importo
   FROM 
  DBCGO_GEST_RICH_DON_VIRT a, 
  dbcgo_gest_ric_don_virt_tc tc,
  dbcgo_stato_don_virt statoDV,
  dbcgo_lov f, 
  dbcgo_lov g, 
  dbcgo_lov h, 
  dbcgo_lov n
  WHERE a.stato = statoDV.id_stato 
  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.sistema_mitt = n.NAME(+) 
  AND n.lov_name(+) = 'SIST_MITTENTE' 
  AND a.id_richiesta = tc.id_richiesta(+)
)
/

CREATE TABLE dbcgo_stato_rec_virt
(
  ID_STATO       NUMBER(5)                      NOT NULL,
  DESCR_STATO    VARCHAR2(40 BYTE)              NOT NULL,
  FINALE         NUMBER(1)                      DEFAULT 0,
  VIS_DAY_NUM    NUMBER(4)                      DEFAULT 0                     NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL
/


ALTER TABLE dbcgo_stato_rec_virt ADD (
  CONSTRAINT PK_STATO_REC_VIRT
 PRIMARY KEY
 (ID_STATO)
    USING INDEX 
    TABLESPACE DBCGO_IDX_SMALL
)
/


CREATE TABLE dbcgo_gest_ric_rec_virt_tc
(
  ID_RICHIESTA            VARCHAR2(23 BYTE)     NOT NULL,
  DATA_NOTIFICA_CREDITO   DATE,
  ORA_NOTIFICA_CREDITO    VARCHAR2(5 BYTE),
  STATO                   NUMBER(2),
  IMPORTO                 NUMBER(7,2),
  DATA_TRANSIZIONE_STATO  DATE,
  DATA_ORA_MODIFICA       TIMESTAMP(6)
)
TABLESPACE DBCGO_DATA_BIG
/



ALTER TABLE dbcgo_gest_ric_rec_virt_tc ADD (
  CONSTRAINT dbcgo_gest_ric_rv_tc_fk
 FOREIGN KEY (id_richiesta)
 REFERENCES dbcgo_gest_rich_rec_virt (id_richiesta))
/

CREATE OR REPLACE VIEW dbcgo_gest_ric_rec_virt_view 
						(id_richiesta,
						 data_inserimento,
						 data_transizione_stato,
						 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,
						 marcaggio,
						 sottomarcaggio,
						 iccd_serial_number,
						 numero_documento,
						 tipo_documento,
						 nome_ot_geo,
						 nome_ot_leg,
						 codice_operatore_donating,
						 flag_tc,
						 prevalidazione,
						 data_validazione_eff,
						 business_id_rec,
						 flag_esp,
						 tc_stato,
						 importo,
						 descr_stato,
						 vis_day_num,
						 tipo_cliente_desc,
						 codice_pre_post_pagato_desc,
						 marcaggio_desc,
						 sottomarcaggio_desc,
						 nome_ot_geo_desc,
						 nome_ot_leg_desc,
						 nome_ot_leg_order_by
						)
AS
   (SELECT a.id_richiesta, a.data_inserimento, a.data_transizione_stato,
           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.marcaggio,
           a.sottomarcaggio, a.iccd_serial_number, a.numero_documento,
           a.tipo_documento, a.nome_ot_geo, a.nome_ot_leg,
           a.codice_operatore_donating, a.flag_tc, a.prevalidazione,
           a.data_validazione_eff, a.business_id_rec,
           DECODE (a.flag_esp, 1, 'Y', 'N') AS flag_esp,
           DECODE (tc.stato,
                   1, 'TRASFERITO',
                   0, 'IN TRASFERIMENTO'
                  ) AS tc_stato,
           tc.importo, statorv.descr_stato AS descr_stato,
           statorv.vis_day_num AS vis_day_num, j.descr AS tipo_cliente_desc,
           k.descr AS codice_pre_post_pagato_desc,
           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
      FROM dbcgo_gest_rich_rec_virt a,
           dbcgo_stato_rec_virt statorv,
           dbm_anag_mar f,
           dbm_anag_clu g,
           dbcgo_lov h,
           dbcgo_lov i,
           dbcgo_lov j,
           dbcgo_lov k,
           dbcgo_gest_ric_rec_virt_tc tc
     WHERE a.stato = statorv.id_stato
       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'
       AND a.id_richiesta = tc.id_richiesta(+))
/


CREATE TABLE dbcgo_stato_rec_virt_m2m
(
  ID_STATO       NUMBER(5)                      NOT NULL,
  DESCR_STATO    VARCHAR2(40 BYTE)              NOT NULL,
  FINALE         NUMBER(1)                      DEFAULT 0,
  VIS_DAY_NUM    NUMBER(4)                      DEFAULT 0                     NOT NULL
)
TABLESPACE DBCGO_DATA_SMALL
/


ALTER TABLE dbcgo_stato_rec_virt_m2m ADD (
  CONSTRAINT PK_STATO_REC_VIRT_M2M
  PRIMARY KEY
 (ID_STATO)
    USING INDEX 
    TABLESPACE DBCGO_IDX_SMALL
)
/

CREATE TABLE dbcgo_gest_ric_rv_m2m_tc
(
  ID_RICHIESTA            VARCHAR2(23 BYTE)     NOT NULL,
  DATA_NOTIFICA_CREDITO   DATE,
  ORA_NOTIFICA_CREDITO    VARCHAR2(5 BYTE),
  STATO                   NUMBER(2),
  IMPORTO                 NUMBER(7,2),
  DATA_TRANSIZIONE_STATO  DATE,
  DATA_ORA_MODIFICA       TIMESTAMP(6)
)
TABLESPACE DBCGO_DATA_BIG
/



ALTER TABLE dbcgo_gest_ric_rv_m2m_tc ADD (
  CONSTRAINT dbcgo_gest_ric_rv_m2m_tc_fk
 FOREIGN KEY (id_richiesta)
 REFERENCES dbcgo_gest_rich_rec_virt_m2m (id_richiesta))
/
 
 
CREATE OR REPLACE VIEW DBCGO_GEST_RIC_RV_M2M_VIEW
( 
ID_RICHIESTA, DATA_INSERIMENTO, 
   DATA_TRANSIZIONE_STATO, 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, 
   ICCD_SERIAL_NUMBER, NUMERO_DOCUMENTO, TIPO_DOCUMENTO, 
   CODICE_OPERATORE_DONATING, FLAG_TC, PREVALIDAZIONE, 
   DATA_VALIDAZIONE_EFF, BUSINESS_ID_REC, BUSINESS_ID_DON, DESCR_STATO,VIS_DAY_NUM,
   TIPO_CLIENTE_DESC,CODICE_PRE_POST_PAGATO_DESC,TC_STATO, IMPORTO
   )
AS 
(SELECT
   a.ID_RICHIESTA, 
   a.DATA_INSERIMENTO, 
   a.DATA_TRANSIZIONE_STATO, 
   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.ICCD_SERIAL_NUMBER, 
   a.NUMERO_DOCUMENTO, 
   a.TIPO_DOCUMENTO, 
   a.CODICE_OPERATORE_DONATING, 
   a.FLAG_TC, 
   a.PREVALIDAZIONE, 
   a.DATA_VALIDAZIONE_EFF, 
   a.BUSINESS_ID_REC, 
   a.BUSINESS_ID_DON, 
   statoM2M.descr_stato AS descr_stato, 
   statoM2M.vis_day_num AS vis_day_num,
   j.descr AS tipo_cliente_desc,
   k.descr AS codice_pre_post_pagato_desc,
   decode(tc.stato,1,'TRASFERITO',0,'IN TRASFERIMENTO') as tc_stato,
   tc.importo 
    FROM 
   DBCGO_GEST_RICH_REC_VIRT_M2M a,
   dbcgo_stato_rec_virt_m2m statoM2M,
   dbcgo_gest_ric_rv_m2m_tc tc,
   dbcgo_lov j,
   dbcgo_lov k
   WHERE a.stato = statoM2M.id_stato
    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'
    AND a.id_richiesta = tc.id_richiesta(+)
)
/
