Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/sql/infasamento_var_cess_olo.sql
2024-05-13 12:54:14 +02:00

160 lines
5.3 KiB
SQL

DECLARE
V_DATA_CURR DATE;
V_DATA_MAX date;
V_RECIPIENT_NEW varchar2(10);
BEGIN
-- INTEGRAZIONE CON I DONOR E I REC_VIRT TRA OTTOBRE ED APRILE
FOR R_INTEGRAZIONE_VAR IN
( SELECT 'V' TIPO_RECORDO, SUBSTR(R.MSISDN, 3) MSISDN, R.DATA_CUT_OVER_EFF, R.CODICE_OPERATORE_REC_EFF RECIPIENT_NEW
FROM MNP_GESTIONE_RICHIESTA R
WHERE (R.MSISDN, R.DATA_CUT_OVER_EFF) IN
( SELECT R1.MSISDN, MAX(R1.DATA_CUT_OVER_EFF)
FROM MNP_GESTIONE_RICHIESTA R1
WHERE R1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND R1.STATO NOT IN (22,12,10,4)
AND R1.TIPO_CLIENTE = 'CO'
GROUP BY R1.MSISDN
)
UNION
SELECT 'V' TIPO_RECORDO, SUBSTR(RV.MSISDN, 3) MSISDN, RV.DATA_CUT_OVER_EFF, RV.CODICE_OPERATORE_RECIPIENT RECIPIENT_NEW
FROM MNP_GEST_RICH_REC_VIRT RV
WHERE (RV.MSISDN, RV.DATA_CUT_OVER_EFF) IN
( SELECT RV1.MSISDN, MAX(RV1.DATA_CUT_OVER_EFF)
FROM MNP_GEST_RICH_REC_VIRT RV1
WHERE RV1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND RV1.STATO NOT IN (7,9)
AND RV1.TIPO_CLIENTE = 'CO'
GROUP BY RV1.MSISDN
)
)
LOOP
-- INSERIMENTO IN TABELLA
BEGIN
INSERT INTO MNP_DBC_VARIAZIONE_OLO (tipo_record, num_tel, data, recipient_new)
VALUES
(R_INTEGRAZIONE_VAR.TIPO_RECORDO, R_INTEGRAZIONE_VAR.MSISDN,
R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF,R_INTEGRAZIONE_VAR.RECIPIENT_NEW);
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
SELECT DATA
INTO V_DATA_CURR
FROM MNP_DBC_VARIAZIONE_OLO
WHERE NUM_TEL = R_INTEGRAZIONE_VAR.MSISDN;
IF V_DATA_CURR < R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF THEN
UPDATE MNP_DBC_VARIAZIONE_OLO
SET DATA = R_INTEGRAZIONE_VAR.DATA_CUT_OVER_EFF,
RECIPIENT_NEW = R_INTEGRAZIONE_VAR.RECIPIENT_NEW
WHERE NUM_TEL = R_INTEGRAZIONE_VAR.MSISDN;
END IF;
END;
COMMIT;
END LOOP;
--
-- AGGIORNAMENTO DEI CAMPI DATA E RECIPIENT_NEW VERIFICANDO LA PRESENZA DI PORTING TERZE PARTI O RECIPIENT TIM
FOR R_VAR_MSISDN IN
( SELECT * FROM MNP_DBC_VARIAZIONE_OLO WHERE LAVORATO IS NULL )
LOOP
BEGIN
SELECT *
INTO V_DATA_MAX, V_RECIPIENT_NEW
FROM
( SELECT q.*
FROM
( SELECT P.DATA_CUT_OVER DATA, P.CODICE_OPERATORE_RECIPIENT REC_NEW
FROM MNP_GESTIONE_RICHIESTA_PORTING P
WHERE (P.MSISDN, P.DATA_CUT_OVER) IN
( SELECT MSISDN, MAX(P1.DATA_CUT_OVER)
FROM MNP_GESTIONE_RICHIESTA_PORTING P1
WHERE P1.STATO = 6
AND P1.DATA_CUT_OVER BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND P1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY P1.MSISDN
)
UNION
SELECT R.DATA_CUT_OVER_EFF DATA, R.CODICE_OPERATORE_REC_EFF REC_NEW
FROM MNP_GESTIONE_RICHIESTA_REC R
WHERE (R.MSISDN, R.DATA_CUT_OVER_EFF) IN
( SELECT R1.MSISDN, MAX(R1.DATA_CUT_OVER_EFF)
FROM MNP_GESTIONE_RICHIESTA_REC R1
WHERE R1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND R1.STATO = 12
AND R1.TIPO_CLIENTE = 'CO'
AND R1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY R1.MSISDN
)
UNION
SELECT DV.DATA_CUT_OVER_EFF DATA, DV.CODICE_OPERATORE_RECIPIENT REC_NEW
FROM MNP_GEST_RICH_DONOR_VIRT DV
WHERE (DV.MSISDN, DV.DATA_CUT_OVER_EFF) IN
( SELECT DV1.MSISDN, MAX(DV1.DATA_CUT_OVER_EFF)
FROM MNP_GEST_RICH_DONOR_VIRT DV1
WHERE DV1.DATA_CUT_OVER_EFF BETWEEN TO_DATE('01102012','DDMMYYYY') AND TO_DATE('12042013','DDMMYYYY')
AND DV1.STATO = 11
AND DV1.TIPO_CLIENTE = 'CO'
AND DV1.MSISDN = '39'||R_VAR_MSISDN.NUM_TEL
GROUP BY DV1.MSISDN
)
) q
ORDER BY q.data desc)
WHERE rownum <2;
UPDATE MNP_DBC_VARIAZIONE_OLO
SET DATA = V_DATA_MAX,
RECIPIENT_NEW = V_RECIPIENT_NEW,
LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND THEN
V_DATA_MAX := NULL;
V_RECIPIENT_NEW := NULL;
--
UPDATE MNP_DBC_VARIAZIONE_OLO
SET LAVORATO = 1
WHERE NUM_TEL = R_VAR_MSISDN.NUM_TEL;
COMMIT;
END;
END LOOP;
END;
/
TRUNCATE TABLE MNP_DBC_CESSAZIONE_OLO;
INSERT INTO MNP_DBC_CESSAZIONE_OLO
SELECT 'C', SUBSTR(CP.MSISDN, 3), CP.DATA_CUT_OVER
FROM MNP_GESTIONE_RICH_CESS_PORT CP, MNP_STORICO_CESS_PORTING SCP
WHERE CP.ID_RICHIESTA = SCP.ID_RICHIESTA
AND SCP.STATO_A = 2
AND SCP.DATA_LAVORAZIONE BETWEEN TO_DATE('01102012', 'DDMMYYYY') AND TO_DATE('12042013', 'DDMMYYYY')
UNION
SELECT 'C', SUBSTR(C.MSISDN, 3), C.DATA_CUT_OVER
FROM MNP_GESTIONE_RICHIESTA_CESS C, MNP_STORICO_CESS SC
WHERE C.ID_RICHIESTA = SC.ID_RICHIESTA
AND SC.STATO_A = 3
AND SC.DATA_LAVORAZIONE BETWEEN TO_DATE('01102012', 'DDMMYYYY') AND TO_DATE('12042013', 'DDMMYYYY');
COMMIT;
DELETE MNP_DBC_VARIAZIONE_OLO
WHERE NUM_TEL IN
( SELECT NUM_TEL
FROM MNP_DBC_CESSAZIONE_OLO
);
COMMIT;