--Eseguire come utente DWH


-- GESTIONE DEI REPORT
-- CREA dwh.MNP_DWH_DON

DROP MATERIALIZED VIEW dwh.MNP_DWH_DON;

CREATE  MATERIALIZED VIEW dwh.MNP_DWH_DON
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
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 (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(+)
        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,
                 a.codice_operatore_recipient,
                 a.codice_operatore_donating,
                 NULL AS recipient_effettivo,
                 NULL 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_gest_rich_rec_virt a,
                 mnp.mnp_storico_rich_rec_virt b,
                 mnp.mnp_stato_rec c,
                 mnp.mnp_stato_rec ca,
                 mnp.mnp_causale_rifiuto r
           WHERE (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 (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(+)
        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, 10, a.codicerifiutovalidazione, NULL),
                 DECODE (a.stato, 10, r.causale, NULL)) r;

--CREA INDICE SU dwh.MNP_DWH_DON

CREATE INDEX IDX_MNP_DWH_DON_1 ON dwh.MNP_DWH_DON
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_MNP_DWH_DON_2 ON dwh.MNP_DWH_DON
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;

--------------------------------------------------------------------------------
----------------------------------------------------------------
--CREA dwh.mnp_dwh_rec_push

DROP MATERIALIZED VIEW dwh.MNP_DWH_REC_PUSH
/ 

CREATE MATERIALIZED VIEW dwh.MNP_DWH_REC_PUSH
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento,
                 DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt AS tipo_servizio,
                 a.codice_operatore_donating AS 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,
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ) AS descr_stato_evento,
                 s.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato, 5, 'Scartata', 'Pic') AS pic_scarto,
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato,
                         7, r.causale,
                         9, r.causale,
                         NULL
                        ) AS causale_rifiuto,
                 COUNT (*) AS richieste, 
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione
            FROM mnp.mnp_gestione_richiesta_rec a,
                 mnp.mnp_storico_richiesta_rec b,
                 mnp.mnp_stato_rec c,
                 mnp.mnp_stato_rec s,
                 mnp.mnp_causale_rifiuto r,
                 mnp.mnp_gestione_richiesta_rec_ext t,
                 dbcgo_sap_anag_fv
           WHERE TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 397)
                                        AND TRUNC (SYSDATE)
             AND a.id_richiesta = b.id_richiesta
             AND a.id_richiesta = t.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 = s.id_stato
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
             AND t.codice_dealer = dbcgo_sap_anag_fv.cod_id(+)
        GROUP BY DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ),
                 s.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 5, 'Scartata', 'Pic'),
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ),
                 DECODE (a.stato, 7, r.causale, 9, r.causale, NULL),
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione,
                 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 ( a.richiestaadhoc,
                         '0', 'Standard',
                         'PHoc'
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                a.codice_dealer,
                 a.tipo_servizio_sistema_mitt AS tipo_servizio,
                 a.codice_operatore_donating AS donating,
                 NULL AS recipient_effettivo,
                 NULL 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,
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ) AS descr_stato_evento,
                 s.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato, 5, 'Scartata', 'Pic') AS pic_scarto,
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato,
                         7, r.causale,
                         9, r.causale,
                         NULL
                        ) AS causale_rifiuto,
                 COUNT (*) AS richieste, 
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione
            FROM mnp.mnp_gest_rich_donor_virt a,
                 mnp.mnp_storico_rich_don_virt b,
                 mnp.mnp_stato c,
                 mnp.mnp_stato s,
                 mnp.mnp_causale_rifiuto r,
                 dbcgo_sap_anag_fv
           WHERE 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 = s.id_stato
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
             AND a.codice_dealer = dbcgo_sap_anag_fv.cod_id(+)
        GROUP BY DECODE (a.richiestaadhoc,
                         '0', 'Standard',
                         'PHoc'
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 a.codice_dealer,
                 a.tipo_servizio_sistema_mitt,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ),
                 s.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 5, 'Scartata', 'Pic'),
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ),
                 DECODE (a.stato, 7, r.causale, 9, r.causale, NULL),
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione) r;

--CREA INDICE SU dwh.mnp_dwh_rec_push

CREATE INDEX IDX_MNP_DWH_REC_1 ON dwh.MNP_DWH_REC_PUSH
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_MNP_DWH_REC_2 ON dwh.MNP_DWH_REC_PUSH
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;

----------------------------------------------------------------------------
----------------------------------------------------------------------------
DROP MATERIALIZED VIEW dwh.MNP_DWH_POR 
/

CREATE MATERIALIZED VIEW dwh.MNP_DWH_POR
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento, COUNT (*) AS richieste,
                 a.codice_operatore_donating AS donating,
                 a.codice_operatore_recipient AS recipient,
                 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 stato_evento,
                 s.descr_stato AS stato_attuale,
                 a.codice_operatore_don_eff AS donor_effettivo,
                 a.codice_operatore_rec_eff AS recipient_effettivo
            FROM mnp.mnp_gestione_richiesta_porting a,
                 mnp.mnp_storico_porting b,
                 mnp.mnp_stato_porting c,
                 mnp.mnp_stato_porting s
           WHERE b.data_i_o BETWEEN TO_DATE (SYSDATE - 397) AND TRUNC (SYSDATE)
             AND a.id_richiesta = b.id_richiesta
             AND b.stato_a = c.id_stato
             AND a.stato = s.id_stato
        GROUP BY a.codice_operatore_donating,
                 a.codice_operatore_recipient,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 c.descr_stato,
                 s.descr_stato,
                 a.codice_operatore_rec_eff,
                 a.codice_operatore_don_eff) r;

--CREA INDICE SU dwh.mnp_dwh_por

CREATE INDEX IDX_MNP_DWH_POR_1 ON dwh.MNP_DWH_POR
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;
----------------------------------------------------------------------------
----------------------------------------------------------------------------
DROP MATERIALIZED VIEW DWH.MNP_DWH_CESS_IN;

CREATE MATERIALIZED VIEW DWH.MNP_DWH_CESS_IN
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS ID_PROG, r.*
FROM
(SELECT
SYSDATE AS data_aggiornamento,
COUNT(*) AS richieste,
codice_operatore_recipient AS operatore_donating,
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,
s.descr_stato AS descr_stato_attuale,
b.stato_a AS stato_evento,
a.stato AS stato_attuale
FROM mnp.mnp_gestione_richiesta_cess a,
mnp.mnp_storico_cess b,
mnp.mnp_stato_cess c,
mnp.mnp_stato_cess s
WHERE TRUNC(b.data_i_o) BETWEEN TO_DATE(SYSDATE - 397)AND TRUNC(SYSDATE)
AND a.id_richiesta= b.id_richiesta
AND b.stato_a = c.id_stato
AND a.stato = s.id_stato
AND a.tim_donor = 1
GROUP BY codice_operatore_recipient,
TRUNC(b.data_i_o),
TO_CHAR(b.data_i_o,'yy-iw'),
TO_CHAR(b.data_i_o,'mm'),
c.descr_stato,
s.descr_stato,
b.stato_a,
a.stato) r;

----------------------------------------------------------------------------
----------------------------------------------------------------------------
DROP MATERIALIZED VIEW DWH.MNP_DWH_CESS_OUT;

CREATE MATERIALIZED VIEW DWH.MNP_DWH_CESS_OUT
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS ID_PROG, r.*
FROM
(SELECT
SYSDATE AS data_aggiornamento,
COUNT(*) AS richieste,
DECODE(SUBSTR(msisdn,1,4),'3932','WIND','3934','OPIV','3933','TIMG','3936','TIMG','3938','WIND','3939','H3GI',SUBSTR(msisdn,1,4)) AS operatore_recipient,
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,
s.descr_stato AS descr_stato_attuale,
b.stato_a AS stato_evento,
a.stato AS stato_attuale
FROM mnp.mnp_gestione_rich_cess_port a,
mnp.mnp_storico_cess_porting b,
mnp.mnp_stato_cess_porting c,
mnp.mnp_stato_cess_porting s
WHERE TRUNC(b.data_i_o) BETWEEN TO_DATE(SYSDATE - 397) AND TRUNC(SYSDATE)
AND a.id_richiesta= b.id_richiesta
AND b.stato_a = c.id_stato
AND a.stato = s.id_stato
AND SUBSTR(msisdn,1,4) <> '3933'
AND SUBSTR(msisdn,1,4) <> '3936'
GROUP BY DECODE(SUBSTR(msisdn,1,4),'3932','WIND','3934','OPIV','3933','TIMG','3936','TIMG','3938','WIND','3939','H3GI', SUBSTR(msisdn,1,4)),
TRUNC(b.data_i_o),
TO_CHAR(b.data_i_o,'yy-iw'),
TO_CHAR(b.data_i_o,'mm'),
c.descr_stato,
s.descr_stato,
b.stato_a,
a.stato) r;

----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- CREA dwh.MNP_DWH_DON_VIRT

DROP MATERIALIZED VIEW dwh.MNP_DWH_DON_VIRT;

CREATE  MATERIALIZED VIEW dwh.MNP_DWH_DON_VIRT
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 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 (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(+)
	     AND (a.codice_operatore_don_eff  <>'TIMG' AND a.codice_operatore_don_eff  <>'TIMT') 
        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,
                 a.codice_operatore_recipient,
                 a.codice_operatore_donating,
                 NULL AS recipient_effettivo,
                 NULL 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_gest_rich_rec_virt a,
                 mnp.mnp_storico_rich_rec_virt b,
                 mnp.mnp_stato_rec c,
                 mnp.mnp_stato_rec ca,
                 mnp.mnp_causale_rifiuto r
           WHERE (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 (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(+)
        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, 10, a.codicerifiutovalidazione, NULL),
                 DECODE (a.stato, 10, r.causale, NULL)) r;

--CREA INDICE SU dwh.MNP_DWH_DON_VIRT

CREATE INDEX IDX_MNP_DWH_DON_VIRT_1 ON dwh.MNP_DWH_DON_VIRT
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_MNP_DWH_DON_VIRT_2 ON dwh.MNP_DWH_DON_VIRT
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;

----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- CREA dwh.mnp_dwh_rec_push_VIRT

DROP MATERIALIZED VIEW dwh.MNP_DWH_REC_PUSH_VIRT;

CREATE MATERIALIZED VIEW dwh.MNP_DWH_REC_PUSH_VIRT
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT   SYSDATE AS data_aggiornamento,
                 DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt AS tipo_servizio,
                 a.codice_operatore_donating AS 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,
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ) AS descr_stato_evento,
                 s.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato, 5, 'Scartata', 'Pic') AS pic_scarto,
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato,
                         7, r.causale,
                         9, r.causale,
                         NULL
                        ) AS causale_rifiuto,
                 COUNT (*) AS richieste, 
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione
            FROM mnp.mnp_gestione_richiesta_rec a,
                 mnp.mnp_storico_richiesta_rec b,
                 mnp.mnp_stato_rec c,
                 mnp.mnp_stato_rec s,
                 mnp.mnp_causale_rifiuto r,
                 mnp.mnp_gestione_richiesta_rec_ext t,
                 dbcgo_sap_anag_fv
           WHERE TRUNC (b.data_i_o) BETWEEN TO_DATE (SYSDATE - 397)
                                        AND TRUNC (SYSDATE)
             AND a.id_richiesta = b.id_richiesta
             AND a.id_richiesta = t.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 = s.id_stato
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
             AND t.codice_dealer = dbcgo_sap_anag_fv.cod_id(+)
	     AND (a.codice_operatore_rec_eff  <>'TIMG' AND a.codice_operatore_rec_eff  <>'TIMT') 
        GROUP BY DECODE (a.richiestaadhocaom || a.richiestaadhoc,
                         '00', 'Standard',
                         'PHoc'
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 t.codice_dealer,
                 a.tipo_servizio_sistema_mitt,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ),
                 s.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 5, 'Scartata', 'Pic'),
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ),
                 DECODE (a.stato, 7, r.causale, 9, r.causale, NULL),
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione,
                 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 ( a.richiestaadhoc,
                         '0', 'Standard',
                         'PHoc'
                        ) AS tipo_richiesta,
                 a.tipo_cliente, a.nome_ot, a.codice_pre_post_pagato,
                a.codice_dealer,
                 a.tipo_servizio_sistema_mitt AS tipo_servizio,
                 a.codice_operatore_donating AS donating,
                 NULL AS recipient_effettivo,
                 NULL 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,
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ) AS descr_stato_evento,
                 s.descr_stato AS descr_stato_attuale,
                 b.stato_a AS stato_evento, a.stato AS stato_attuale,
                 DECODE (a.stato, 5, 'Scartata', 'Pic') AS pic_scarto,
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ) AS cod_rifiuto,
                 DECODE (a.stato,
                         7, r.causale,
                         9, r.causale,
                         NULL
                        ) AS causale_rifiuto,
                 COUNT (*) AS richieste, 
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione
            FROM mnp.mnp_gest_rich_donor_virt a,
                 mnp.mnp_storico_rich_don_virt b,
                 mnp.mnp_stato c,
                 mnp.mnp_stato s,
                 mnp.mnp_causale_rifiuto r,
                 dbcgo_sap_anag_fv
           WHERE 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 = s.id_stato
             AND a.codicerifiutovalidazione = r.cod_causale_rifiuto(+)
             AND a.codice_dealer = dbcgo_sap_anag_fv.cod_id(+)
        GROUP BY DECODE (a.richiestaadhoc,
                         '0', 'Standard',
                         'PHoc'
                        ),
                 a.tipo_cliente,
                 a.nome_ot,
                 a.codice_pre_post_pagato,
                 a.codice_dealer,
                 a.tipo_servizio_sistema_mitt,
                 a.codice_operatore_donating,
                 TRUNC (b.data_i_o),
                 TO_CHAR (b.data_i_o, 'yy-iw'),
                 TO_CHAR (b.data_i_o, 'mm'),
                 DECODE (b.stato_da || b.stato_a,
                         '-13', 'RIGENERATA',
                         c.descr_stato
                        ),
                 s.descr_stato,
                 b.stato_a,
                 a.stato,
                 DECODE (a.stato, 5, 'Scartata', 'Pic'),
                 DECODE (a.stato,
                         7, a.codicerifiutovalidazione,
                         9, a.codicerifiutovalidazione,
                         NULL
                        ),
                 DECODE (a.stato, 7, r.causale, 9, r.causale, NULL),
                 dbcgo_sap_anag_fv.canale_acquisizione,
                 dbcgo_sap_anag_fv.sottocanale_acquisizione) r;

--CREA INDICE SU dwh.mnp_dwh_rec_push_VIRT

CREATE INDEX IDX_mnp_dwh_rec_push_VIRT_1 ON dwh.MNP_DWH_REC_PUSH_VIRT
(DATA_EVENTO)
TABLESPACE TAB_IDX_BIG;

CREATE INDEX IDX_mnp_dwh_rec_push_VIRT_2 ON dwh.MNP_DWH_REC_PUSH_VIRT
(STATO_ATTUALE)
TABLESPACE TAB_IDX_BIG;


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

CREATE OR REPLACE FORCE VIEW MNP_DELIBERA_DON_VIRT_VIEW
(ID_PROG, OLO, RIC_RICEVUTE, RIC_PIC, DATA_EVENTO, 
 RECIPIENT_EFFETTIVO)
AS 
((SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee
    FROM (SELECT desc_olo aa, NVL (rric, 0) bb, NVL (rpic, 0) cc,
                 NVL (data_evento, fun_giorni_meno (TRUNC (SYSDATE), 1)) dd,
                 recipient_effettivo ee
            FROM (SELECT   data_evento, codice_operatore_recipient,
                           SUM (richieste) AS rric
                      FROM MNP_DWH_DON_VIRT
                     WHERE data_evento = fun_giorni_meno (TRUNC (SYSDATE), 1)
                       AND stato_evento = 1
                       AND tipo_richiesta = 'Standard'
                  GROUP BY data_evento, codice_operatore_recipient) riric,
                 (SELECT   codice_operatore_recipient, SUM (richieste)
                                                                      AS rpic,
                           recipient_effettivo
                      FROM MNP_DWH_DON_VIRT
                     WHERE data_evento = fun_giorni_meno (TRUNC (SYSDATE), 1)
                       AND stato_evento = 1
                       AND stato_attuale <> 4
                       AND tipo_richiesta = 'Standard'
                  GROUP BY codice_operatore_recipient, recipient_effettivo) ripic,
                 (SELECT desc_olo
                    FROM mnp.mnp_olo
                   WHERE flag_terze_parti = 1) olo
           WHERE desc_olo = ripic.codice_operatore_recipient(+)
                 AND desc_olo = riric.codice_operatore_recipient(+)) r)); 


CREATE OR REPLACE FORCE VIEW MNP_DWH_DON_DATI_RIF_VIRT_VIEW
(ID_PROG, COUNT, CLIENTE, OT, "STANDARD/HOC", 
 MARCAGGIO, RECIPIENT, DATA_EVENTO, SETTIMANA_EVENTO, MESE_EVENTO, 
 STATO_EVENTO, COD_RIFIUTO, CAUSALE, CAUSALE_AGGREGATA, SOTTOMARCAGGIO, 
 "CODICE_POP-PRP", DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO)
AS 
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.qq, r.ss, r.tt
   FROM (SELECT   SUM (MNP_DWH_DON_VIRT.richieste) aa, MNP_DWH_DON_VIRT.tipo_cliente bb,
                  MNP_DWH_DON_VIRT.nome_ot cc, MNP_DWH_DON_VIRT.tipo_richiesta dd,
                  MNP_DWH_DON_VIRT.marcaggio ee,
                  MNP_DWH_DON_VIRT.codice_operatore_recipient ff,
                  MNP_DWH_DON_VIRT.data_evento gg, MNP_DWH_DON_VIRT.settimana_evento hh,
                  TO_CHAR (MNP_DWH_DON_VIRT.data_evento, 'YY-MM') ii,
                  MNP_DWH_DON_VIRT.descr_stato_evento ll,
                  MNP_DWH_DON_VIRT.cod_rifiuto mm, MNP_DWH_DON_VIRT.causale_rifiuto nn,
                  DECODE (cod_rifiuto,
                          12, 'ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                          'ALTRO'
                         ) oo,
                  MNP_DWH_DON_VIRT.sottomarcaggio pp,
                  MNP_DWH_DON_VIRT.codice_pre_post_pagato qq,
                  MNP_DWH_DON_VIRT.donor_effettivo ss,
                  MNP_DWH_DON_VIRT.recipient_effettivo tt
             FROM MNP_DWH_DON_VIRT
            WHERE MNP_DWH_DON_VIRT.stato_attuale = 10
         GROUP BY MNP_DWH_DON_VIRT.tipo_cliente,
                  MNP_DWH_DON_VIRT.nome_ot,
                  MNP_DWH_DON_VIRT.tipo_richiesta,
                  MNP_DWH_DON_VIRT.marcaggio,
                  MNP_DWH_DON_VIRT.codice_operatore_recipient,
                  MNP_DWH_DON_VIRT.data_evento,
                  MNP_DWH_DON_VIRT.settimana_evento,
                  TO_CHAR (MNP_DWH_DON_VIRT.data_evento, 'YY-MM'),
                  MNP_DWH_DON_VIRT.descr_stato_evento,
                  MNP_DWH_DON_VIRT.cod_rifiuto,
                  MNP_DWH_DON_VIRT.causale_rifiuto,
                  DECODE (cod_rifiuto,
                          12, 'ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                          'ALTRO'
                         ),
                  MNP_DWH_DON_VIRT.sottomarcaggio,
                  MNP_DWH_DON_VIRT.codice_pre_post_pagato,
                  MNP_DWH_DON_VIRT.donor_effettivo,
                  MNP_DWH_DON_VIRT.recipient_effettivo) r); 


CREATE OR REPLACE FORCE VIEW MNP_DWH_DON_DATI_VIRT_VIEW
(ID_PROG, COUNT, CLIENTE, OT, "STANDARD/HOC", 
 MARCAGGIO, RECIPIENT, DATA_EVENTO, SETTIMANA_EVENTO, MESE_EVENTO, 
 STATO_EVENTO, STATO_ATTUALE, SOTTOMARCAGGIO, "CODICE_POP-PRP", DONOR_EFFETTIVO, 
 RECIPIENT_EFFETTIVO)
AS 
(
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.ss
   FROM (SELECT   SUM (MNP_DWH_DON_VIRT.richieste) aa, MNP_DWH_DON_VIRT.tipo_cliente bb,
                  MNP_DWH_DON_VIRT.nome_ot cc, MNP_DWH_DON_VIRT.tipo_richiesta dd,
                  MNP_DWH_DON_VIRT.marcaggio ee,
                  MNP_DWH_DON_VIRT.codice_operatore_recipient ff,
                  MNP_DWH_DON_VIRT.data_evento gg, MNP_DWH_DON_VIRT.settimana_evento hh,
                  TO_CHAR (MNP_DWH_DON_VIRT.data_evento, 'YY-MM') ii,
                  MNP_DWH_DON_VIRT.descr_stato_evento ll,
                  MNP_DWH_DON_VIRT.descr_stato_attuale mm,
                  MNP_DWH_DON_VIRT.sottomarcaggio nn,
                  MNP_DWH_DON_VIRT.codice_pre_post_pagato oo,
                  MNP_DWH_DON_VIRT.donor_effettivo pp,
                  MNP_DWH_DON_VIRT.recipient_effettivo ss
             FROM MNP_DWH_DON_VIRT
         GROUP BY MNP_DWH_DON_VIRT.tipo_cliente,
                  MNP_DWH_DON_VIRT.nome_ot,
                  MNP_DWH_DON_VIRT.tipo_richiesta,
                  MNP_DWH_DON_VIRT.marcaggio,
                  MNP_DWH_DON_VIRT.codice_operatore_recipient,
                  MNP_DWH_DON_VIRT.data_evento,
                  MNP_DWH_DON_VIRT.settimana_evento,
                  TO_CHAR (MNP_DWH_DON_VIRT.data_evento, 'YY-MM'),
                  MNP_DWH_DON_VIRT.descr_stato_evento,
                  MNP_DWH_DON_VIRT.descr_stato_attuale,
                  MNP_DWH_DON_VIRT.sottomarcaggio,
                  MNP_DWH_DON_VIRT.codice_pre_post_pagato,
                  MNP_DWH_DON_VIRT.donor_effettivo,
                  MNP_DWH_DON_VIRT.recipient_effettivo) r)); 


CREATE OR REPLACE FORCE VIEW MNP_DWH_REC_DATI_RIF_VIRT_VIEW
(ID_PROG, COUNT, CLIENTE, OT, "STANDARD/HOC", 
 DONATING, DATA_EVENTO, SETTIMANA_EVENTO, STATO_EVENTO, CAUSALE, 
 COD_RIFIUTO, "CODICE_POP-PRP", STATO_ATTUALE, CAUSALE_AGGREGATA, MESE_EVENTO, 
 DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO)
AS 
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
           r.mm, r.nn, r.pp, r.ss, donor_effettivo, recipient_effettivo
      FROM (SELECT   SUM (MNP_DWH_REC_PUSH_VIRT.richieste) aa,
                     MNP_DWH_REC_PUSH_VIRT.tipo_cliente bb,
                     MNP_DWH_REC_PUSH_VIRT.nome_ot cc,
                     MNP_DWH_REC_PUSH_VIRT.tipo_richiesta dd,
                     MNP_DWH_REC_PUSH_VIRT.donating ee,
                     MNP_DWH_REC_PUSH_VIRT.data_evento ff,
                     MNP_DWH_REC_PUSH_VIRT.settimana_evento gg,
                     MNP_DWH_REC_PUSH_VIRT.descr_stato_evento hh,
                     MNP_DWH_REC_PUSH_VIRT.causale_rifiuto ii,
                     MNP_DWH_REC_PUSH_VIRT.cod_rifiuto ll,
                     MNP_DWH_REC_PUSH_VIRT.codice_pre_post_pagato mm,
                     MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale nn,
                     DECODE
                        (cod_rifiuto,
                         12, ' ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                         'ALTRO'
                        ) pp,
                     TO_CHAR (MNP_DWH_REC_PUSH_VIRT.data_evento, 'YY-MM') ss,
                     MNP_DWH_REC_PUSH_VIRT.donor_effettivo,
                     MNP_DWH_REC_PUSH_VIRT.recipient_effettivo
                FROM MNP_DWH_REC_PUSH_VIRT
               WHERE (MNP_DWH_REC_PUSH_VIRT.stato_attuale IN (7, 9))
            GROUP BY MNP_DWH_REC_PUSH_VIRT.tipo_cliente,
                     MNP_DWH_REC_PUSH_VIRT.nome_ot,
                     MNP_DWH_REC_PUSH_VIRT.tipo_richiesta,
                     MNP_DWH_REC_PUSH_VIRT.donating,
                     MNP_DWH_REC_PUSH_VIRT.data_evento,
                     MNP_DWH_REC_PUSH_VIRT.settimana_evento,
                     MNP_DWH_REC_PUSH_VIRT.descr_stato_evento,
                     MNP_DWH_REC_PUSH_VIRT.causale_rifiuto,
                     MNP_DWH_REC_PUSH_VIRT.cod_rifiuto,
                     MNP_DWH_REC_PUSH_VIRT.codice_pre_post_pagato,
                     MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale,
                     DECODE (cod_rifiuto,
                             12, ' ANNULLAMENTO PER RICHIESTE DA ALTRO RECIPIENT',
                             'ALTRO'
                            ),
                     TO_CHAR (MNP_DWH_REC_PUSH_VIRT.data_evento, 'YY-MM'),
                     MNP_DWH_REC_PUSH_VIRT.donor_effettivo,
                     MNP_DWH_REC_PUSH_VIRT.recipient_effettivo
                     ) r); 


CREATE OR REPLACE FORCE VIEW MNP_DWH_REC_DATI_VIRT_VIEW
(ID_PROG, COUNT, CLIENTE, OT, DONATING, 
 "STANDARD/HOC", DATA_EVENTO, SETTIMANA_EVENTO, STATO_EVENTO, STATO_ATTUALE, 
 SCARTATA_PIC, "CODICE_POP-PRP", MESE_EVENTO, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO)
AS 
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.oo,r.donor_effettivo, r.recipient_effettivo
   FROM (SELECT   SUM (MNP_DWH_REC_PUSH_VIRT.richieste) aa,
                  MNP_DWH_REC_PUSH_VIRT.tipo_cliente bb,
                  MNP_DWH_REC_PUSH_VIRT.nome_ot cc, MNP_DWH_REC_PUSH_VIRT.donating dd,
                  MNP_DWH_REC_PUSH_VIRT.tipo_richiesta ee,
                  MNP_DWH_REC_PUSH_VIRT.data_evento ff,
                  MNP_DWH_REC_PUSH_VIRT.settimana_evento gg,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_evento hh,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale ii,
                  MNP_DWH_REC_PUSH_VIRT.pic_scarto ll,
                  MNP_DWH_REC_PUSH_VIRT.codice_pre_post_pagato mm,
                  MNP_DWH_REC_PUSH_VIRT.donor_effettivo ,
                  MNP_DWH_REC_PUSH_VIRT.recipient_effettivo ,
                  TO_CHAR (MNP_DWH_REC_PUSH_VIRT.data_evento, 'YY-MM') oo
             FROM MNP_DWH_REC_PUSH_VIRT
            WHERE (MNP_DWH_REC_PUSH_VIRT.donating <> 'TIMT')
         GROUP BY MNP_DWH_REC_PUSH_VIRT.tipo_cliente,
                  MNP_DWH_REC_PUSH_VIRT.nome_ot,
                  MNP_DWH_REC_PUSH_VIRT.tipo_richiesta,
                  MNP_DWH_REC_PUSH_VIRT.donating,
                  MNP_DWH_REC_PUSH_VIRT.data_evento,
                  MNP_DWH_REC_PUSH_VIRT.settimana_evento,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_evento,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale,
                  MNP_DWH_REC_PUSH_VIRT.pic_scarto,
                  MNP_DWH_REC_PUSH_VIRT.codice_pre_post_pagato,
                  MNP_DWH_REC_PUSH_VIRT.recipient_effettivo,
                  MNP_DWH_REC_PUSH_VIRT.donor_effettivo,
                  TO_CHAR (MNP_DWH_REC_PUSH_VIRT.data_evento, 'YY-MM')) r); 


CREATE OR REPLACE FORCE VIEW MNP_RECIPIENT_CANALE_VIRT_VIEW
(ID_PROG, DATA_AGGIORNAMENTO, TIPO_RICHIESTA, TIPO_CLIENTE, NOME_OT, 
 CODICE_DEALER, TIPO_SERVIZIO, DONATING, DATA_EVENTO, SETTIMANA_EVENTO, 
 MESE_EVENTO, DESCR_STATO_EVENTO, DESC_STATO_ATTUALE, STATO_EVENTO, STATO_ATTUALE, 
 COD_RIFIUTO, CAUSALE_RIFIUTO, CANALE_ACQUISIZIONE, SOTTOCANALE_ACQUISIZIONE, RIGA, 
 DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO)
AS 
(
(SELECT ROWNUM, r.aa, r.bb, r.cc, r.dd, r.ee, r.ff, r.gg, r.hh, r.ii, r.ll,
        r.mm, r.nn, r.oo, r.pp, r.qq, r.rr, r.ss, r.tt, r.uu, donor_effettivo, recipient_effettivo
   FROM (SELECT   MNP_DWH_REC_PUSH_VIRT.data_aggiornamento aa,
                  MNP_DWH_REC_PUSH_VIRT.tipo_richiesta bb,
                  MNP_DWH_REC_PUSH_VIRT.tipo_cliente cc,
                  MNP_DWH_REC_PUSH_VIRT.nome_ot dd,
                  MNP_DWH_REC_PUSH_VIRT.codice_dealer ee,
                  MNP_DWH_REC_PUSH_VIRT.tipo_servizio ff,
                  MNP_DWH_REC_PUSH_VIRT.donating gg,
                  MNP_DWH_REC_PUSH_VIRT.data_evento hh,
                  MNP_DWH_REC_PUSH_VIRT.settimana_evento ii,
                  MNP_DWH_REC_PUSH_VIRT.mese_evento ll,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_evento mm,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale nn,
                  MNP_DWH_REC_PUSH_VIRT.stato_evento oo,
                  MNP_DWH_REC_PUSH_VIRT.stato_attuale pp,
                  MNP_DWH_REC_PUSH_VIRT.cod_rifiuto qq,
                  MNP_DWH_REC_PUSH_VIRT.causale_rifiuto rr,
                  MNP_DWH_REC_PUSH_VIRT.canale_acquisizione ss,
                  MNP_DWH_REC_PUSH_VIRT.sottocanale_acquisizione tt,
                  SUM (MNP_DWH_REC_PUSH_VIRT.richieste) uu,
                  MNP_DWH_REC_PUSH_VIRT.donor_effettivo,
                  MNP_DWH_REC_PUSH_VIRT.recipient_effettivo
             FROM MNP_DWH_REC_PUSH_VIRT
         GROUP BY MNP_DWH_REC_PUSH_VIRT.data_aggiornamento,
                  MNP_DWH_REC_PUSH_VIRT.tipo_richiesta,
                  MNP_DWH_REC_PUSH_VIRT.tipo_cliente,
                  MNP_DWH_REC_PUSH_VIRT.nome_ot,
                  MNP_DWH_REC_PUSH_VIRT.codice_dealer,
                  MNP_DWH_REC_PUSH_VIRT.tipo_servizio,
                  MNP_DWH_REC_PUSH_VIRT.donating,
                  MNP_DWH_REC_PUSH_VIRT.data_evento,
                  MNP_DWH_REC_PUSH_VIRT.settimana_evento,
                  MNP_DWH_REC_PUSH_VIRT.mese_evento,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_evento,
                  MNP_DWH_REC_PUSH_VIRT.descr_stato_attuale,
                  MNP_DWH_REC_PUSH_VIRT.stato_evento,
                  MNP_DWH_REC_PUSH_VIRT.stato_attuale,
                  MNP_DWH_REC_PUSH_VIRT.cod_rifiuto,
                  MNP_DWH_REC_PUSH_VIRT.causale_rifiuto,
                  MNP_DWH_REC_PUSH_VIRT.canale_acquisizione,
                  MNP_DWH_REC_PUSH_VIRT.donor_effettivo,
                  MNP_DWH_REC_PUSH_VIRT.recipient_effettivo,
                  MNP_DWH_REC_PUSH_VIRT.sottocanale_acquisizione) r)); 


CREATE OR REPLACE FORCE VIEW MNP_MOB_INT_VIRT_VIEW
(ID_PROG, DATA_AGGIORNAMENTO, TIPO_RICHIESTA, TIPO_CLIENTE, CODICE_OPERATORE_DONATING, 
 CODICE_OPERATORE_RECIPIENT, DATA_EVENTO, SETTIMANA_EVENTO, ANNO_MESE_EVENTO, CODICE_PRE_POST_PAGATO, 
 RICHIESTE, DONOR_EFFETTIVO, RECIPIENT_EFFETTIVO)
AS 
(SELECT ROWNUM, r."DATA_AGGIORNAMENTO",r."TIPO_RICHIESTA",r."TIPO_CLIENTE",r."CODICE_OPERATORE_DONATING",r."CODICE_OPERATORE_RECIPIENT",r."DATA_EVENTO",r."SETTIMANA_EVENTO",r."TO_CHAR(A.DATA_EVENTO,'YY-MM')",r."CODICE_PRE_POST_PAGATO",r."SUM(A.RICHIESTE)",r."DONOR_EFFETTIVO",r."RECIPIENT_EFFETTIVO" 
   FROM (SELECT   a.data_aggiornamento, a.tipo_richiesta, a.tipo_cliente, 
                  a.codice_operatore_donating, a.codice_operatore_recipient, 
                  a.data_evento, a.settimana_evento, 
                  TO_CHAR (a.data_evento, 'YY-MM'), a.codice_pre_post_pagato, 
                  SUM (a.richieste),a.donor_effettivo,a.recipient_effettivo 
             FROM MNP_DWH_DON_VIRT a 
            WHERE a.descr_stato_evento = 'ESPLETATA' 
              AND a.data_evento >= (SYSDATE - 397) 
         GROUP BY a.data_aggiornamento, 
                  a.tipo_richiesta, 
                  a.tipo_cliente, 
                  a.codice_operatore_donating, 
                  a.codice_operatore_recipient, 
                  a.data_evento, 
                  a.settimana_evento, 
                  TO_CHAR (a.data_evento, 'YY-MM'), 
                  a.codice_pre_post_pagato, 
                  a.donor_effettivo,a.recipient_effettivo 
         UNION 
         SELECT   b.data_aggiornamento, b.tipo_richiesta, b.tipo_cliente, 
                  b.donating, 'TIMG', b.data_evento, b.settimana_evento, 
                  TO_CHAR (b.data_evento, 'YY-MM'), b.codice_pre_post_pagato, 
                  SUM (b.richieste), b.donor_effettivo,b.recipient_effettivo 
             FROM MNP_DWH_REC_PUSH_VIRT b 
            WHERE b.descr_stato_evento = 'EVASA' 
              AND b.data_evento >= (SYSDATE - 397) 
         GROUP BY b.data_aggiornamento, 
                  b.tipo_richiesta, 
                  b.tipo_cliente, 
                  b.donating, 
                  'TIMG', 
                  b.data_evento, 
                  b.settimana_evento, 
                  TO_CHAR (b.data_evento, 'YY-MM'), 
                  b.codice_pre_post_pagato, 
                  b.donor_effettivo,b.recipient_effettivo) r);



------------------ per recuperare credito anomalo e nome file ------------------------
DROP MATERIALIZED VIEW MNP_DWH_TC_ANOMALO;

CREATE MATERIALIZED VIEW MNP_DWH_TC_ANOMALO
AS 
SELECT r.id_richiesta, r.FLAG_VERIFICA_CREDITO_ANOMALO
FROM mnp.MNP_GEST_RICH_DON_TC r
UNION
SELECT r.id_richiesta, r.FLAG_VERIFICA_CREDITO_ANOMALO
FROM mnp.MNP_GEST_RICH_REC_VIRT_TC r
UNION
SELECT r.id_richiesta, r.FLAG_VERIFICA_CREDITO_ANOMALO
FROM mnp.MNP_GEST_RICH_REC_TC r
UNION
SELECT r.id_richiesta, 0 AS FLAG_VERIFICA_CREDITO_ANOMALO
FROM mnp.MNP_GEST_RICH_DON_VIRT_TC r ;

DROP MATERIALIZED VIEW MNP_DWH_XML_IN;

CREATE MATERIALIZED VIEW MNP_DWH_XML_IN
AS 
SELECT xr.id_richiesta, x.nome_file, tipo_file
FROM 
mnp.MNP_XML_IN x,
mnp.MNP_XML_RICHIESTA_IN xr
WHERE xr.nome_file=x.nome_file
AND tipo_file IN (6,11,12);


------------------ per recuperare data cessazione ricevuto da MSS
CREATE OR REPLACE VIEW MNP_DWH_MSS_CESS_IN_VIEW
AS SELECT id_richiesta, data_ora_cessazione FROM mnp.MNP_MSS_CESS_IN;

CREATE OR REPLACE VIEW MNP_DWH_MSS_ATT_IN_VIEW
AS SELECT id_richiesta, data_ora_cessazione FROM mnp.MNP_MSS_ATTIVAZIONE_IN_REC;





----------------------------------------------------------------------
-------------- nuova consegna kit di luglio ----------------------------

DROP MATERIALIZED VIEW DWH.MNP_DWH_RICH_REC_VIRT_EXT;

CREATE MATERIALIZED VIEW DWH.MNP_DWH_RICH_REC_VIRT_EXT
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT  g.id_richiesta, g.RICHIESTAADHOC, s.DATA_I_O AS DATA_PRESA_IN_CARICO,
  g.ABBONATO_PREPAGATO, g.FLAG_ESP, g.MARCAGGIO,  g.SOTTOMARCAGGIO, g.NOME_OT
            FROM mnp.MNP_GEST_RICH_REC_VIRT g, 
			MNP.MNP_STORICO_RICH_REC_VIRT s
           WHERE g.id_richiesta=s.id_richiesta(+)
		   AND s.stato_da=2 
		   AND s.stato_a=4
		    ) r;

----------------------------------------------------------------------
DROP MATERIALIZED VIEW DWH.MNP_DWH_RICH_DON_VIRT_EXT;

CREATE MATERIALIZED VIEW DWH.MNP_DWH_RICH_DON_VIRT_EXT
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ROWNUM AS id_prog, r.*
  FROM (SELECT  g.id_richiesta, g.RICHIESTAADHOC
            FROM mnp.MNP_GEST_RICH_DONOR_VIRT g
		    ) r;


----------------------------------------------------------------------
DROP MATERIALIZED VIEW dwh.MNP_DWH_gest_rich_rec_ext;
				 
CREATE MATERIALIZED VIEW dwh.MNP_DWH_gest_rich_rec_ext
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT
	id_richiesta,
	 DATA_VALIDAZIONE_EFF,
	BUSINESS_ID,
	FLAG_ESP
	FROM mnp.mnp_gestione_richiesta_rec;



----------------------------------------------------------------------
DROP MATERIALIZED VIEW dwh.MNP_DWH_gest_rich_don_ext;
				 
CREATE MATERIALIZED VIEW dwh.MNP_DWH_gest_rich_don_ext
TABLESPACE tab_dwh
NOCACHE
NOLOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT
	id_richiesta,
codice_rifiuto_validazione,
	 DATA_VALIDAZIONE_EFF,
	BUSINESS_ID,
	FLAG_ESP
	FROM mnp.mnp_gestione_richiesta;
