160 lines
5.3 KiB
SQL
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;
|