Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/procedure/dwh/DWH.UPDATE_DONOR_DELTA.prc
2024-05-13 12:54:14 +02:00

116 lines
5.0 KiB
SQL

CREATE OR REPLACE PROCEDURE UPDATE_DONOR_DELTA (
mese_in IN NUMBER,
anno_in IN NUMBER,
cod_errore IN OUT NUMBER
)
IS
-- Purpose: Inserimento dei dati aggiornati al mese di riferimento nella
-- tabella mnp_dw_donor_delta
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- L.Marcucci 16/08/2004 -------------------------------------------
primo_giorno_mese DATE;
-- Primo giorno lavorativo del mese di riferiemnto
ultimo_giorno_mese DATE;
-- Ultimo giorno lavorativo del mese di riferiemnto
errore NUMBER (1);
BEGIN
cod_errore := 0;
primo_giorno_mese := dwh.fun_primo_giorno_lavorativo (mese_in, anno_in);
ultimo_giorno_mese := dwh.fun_ultimo_giorno_lavorativo (mese_in, anno_in);
DELETE FROM dwh.mnp_dw_donor_delta;
COMMIT;
-- Inserimento di tutte le richieste donor standard
-- che ancora non hanno raggiunto uno stato finale o lo hanno raggiunto nel
-- mese di riferimento
INSERT INTO dwh.mnp_dw_donor_delta
(id_richiesta, aom_recipient, msisdn, tipo_linea,
codice_fiscale_partita_iva, data_ricezione_richiesta,
data_validazione_max, data_cut_over_calc, presaincarico_ko, marcaggio)
SELECT gr.id_richiesta, gr.codice_operatore_recipient, gr.msisdn,
gr.tipo_cliente, gr.codice_fiscale_partita_iva,
gr.dataricezionerichiesta, gr.data_validazione_max,
gr.data_cut_over_calc,
DECODE (gr.cod_controllo_presaincarico, -1, 1, 6, 0, 1), marcaggio
FROM mnp.mnp_gestione_richiesta gr
WHERE gr.richiestaadhoc = '0'
AND gr.richiestaadhocaom = '0'
AND gr.dataricezionerichiesta >= to_date('26-APR-2004','dd-MON-YYYY')
AND gr.dataricezionerichiesta <= ultimo_giorno_mese
AND ( gr.data_fine_processo IS NULL
OR (gr.data_fine_processo >= primo_giorno_mese)
);
COMMIT;
-- aggiornamento del campo marcaggio delle richieste consumenr con il valore 'C'
UPDATE dwh.mnp_dw_donor_delta dw
SET marcaggio = 'C'
WHERE dw.tipo_linea = 'CO';
COMMIT;
-- aggiornamento dei campi non presenti nella tabella di gestione richiesta
dwh.update_donor_delta_2 (ultimo_giorno_mese, errore);
IF errore = 0
THEN
-- merge della tabella mnp_dw_donor_delta nella tabella mnp_dw_donor
MERGE INTO dwh.mnp_dw_donor t
USING dwh.mnp_dw_donor_delta s
ON (t.id_richiesta = s.id_richiesta)
WHEN MATCHED THEN
UPDATE
SET t.aom_recipient = s.aom_recipient, t.msisdn = s.msisdn,
t.tipo_linea = s.tipo_linea, t.marcaggio = s.marcaggio,
t.codice_fiscale_partita_iva =
s.codice_fiscale_partita_iva,
t.data_ricezione_richiesta = s.data_ricezione_richiesta,
t.data_presa_in_carico = s.data_presa_in_carico,
t.data_invio_ai_sistemi_commer =
s.data_invio_ai_sistemi_commer,
t.data_validazione_max = s.data_validazione_max,
t.data_validazione = s.data_validazione,
t.data_ricezione_da_ccrmbit = s.data_ricezione_da_ccrmbit,
t.data_cut_over_calc = s.data_cut_over_calc,
t.data_cut_over_eff = s.data_cut_over_eff,
t.causale_rifiuto = s.causale_rifiuto,
t.data_espletamento = s.data_espletamento,
t.stato = s.stato,
t.data_stato_finale = s.data_stato_finale,
t.presaincarico_ko = s.presaincarico_ko
WHEN NOT MATCHED THEN
INSERT (id_richiesta, aom_recipient, msisdn, tipo_linea,
marcaggio, codice_fiscale_partita_iva,
data_ricezione_richiesta, data_presa_in_carico,
data_invio_ai_sistemi_commer, data_validazione_max,
data_validazione, data_ricezione_da_ccrmbit,
data_cut_over_calc, data_cut_over_eff, causale_rifiuto,
data_espletamento, stato, data_stato_finale,
presaincarico_ko)
VALUES (s.id_richiesta, s.aom_recipient, s.msisdn, s.tipo_linea,
s.marcaggio, s.codice_fiscale_partita_iva,
s.data_ricezione_richiesta, s.data_presa_in_carico,
s.data_invio_ai_sistemi_commer, s.data_validazione_max,
s.data_validazione, s.data_ricezione_da_ccrmbit,
s.data_cut_over_calc, s.data_cut_over_eff,
s.causale_rifiuto, s.data_espletamento, s.stato,
s.data_stato_finale, s.presaincarico_ko);
COMMIT;
ELSE
cod_errore := 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
cod_errore := 1;
DBMS_OUTPUT.put_line ('Errore in UPDATE_DONOR_DELTA ' || SQLERRM);
RETURN;
END; -- Procedure
/