First Commit - Source Code from Reply

This commit is contained in:
vincenzofariello
2024-05-13 12:54:14 +02:00
parent 73e32a5020
commit a15aee1f08
11184 changed files with 1065913 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
LOCALDIR_DA_INVIARE=file_da_inviare
LOCALDIR_INVIATI=file_inviati
LOCALDIR_FALLITI=file_falliti
MESI_INTERVALLO_INFASAMENTO=12
DATA_INIZIO_INFASAMENTO=19900101
NUMERO_RIGHE_FILE=1000000
INVIO_FILE_SFTP=YES

View File

@@ -0,0 +1,106 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
. $THIS_PATH/export_coop.properties
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] ; then
echo "Utilizzo: ${0} modalità infasamento"
echo "i valori ammessi sono FULL o DELTA"
exit -1
fi
if [ -f "$THIS_PATH/date_infasamento.txt" ] ; then
rm "$THIS_PATH/date_infasamento.txt"
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento dati per export COOP" >> $THIS_PATH/infasamentoExportCOOP.log
if [ "$1" = "FULL" ] ; then
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/infasamentoExportCOOPInitialize.sql $DATA_INIZIO_INFASAMENTO $MESI_INTERVALLO_INFASAMENTO $THIS_PATH>>$THIS_PATH/infasamentoExportCOOPSQL.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento dati per export COOP" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
else
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/infasamentoExportCOOPGetDate.sql $THIS_PATH>>$THIS_PATH/infasamentoExportCOOPSQL.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento dati per export COOP" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
fi
START_DATE=$(awk -F";" '{print $1}' < $THIS_PATH/date_infasamento.txt)
END_DATE=$(awk -F";" '{print $2}' < $THIS_PATH/date_infasamento.txt)
FINAL_DATE=$(awk -F";" '{print $3}' < $THIS_PATH/date_infasamento.txt)
while [ $START_DATE -le $FINAL_DATE ] ;
do
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE dello script runRichiesta_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
$THIS_PATH/runRichiesta_Portati_COOP.sh $START_DATE $END_DATE
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento da $START_DATE a $END_DATE dello script runRichiesta_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE dello script runRichiesta_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE dello script runRichiestaRec_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
$THIS_PATH/runRichiestaRec_Portati_COOP.sh $START_DATE $END_DATE
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento da $START_DATE a $END_DATE dello script runRichiestaRec_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE dello script runRichiestaRec_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE dello script runRichiestaPorting_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
$THIS_PATH/runRichiestaPorting_Portati_COOP.sh $START_DATE $END_DATE
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento da $START_DATE a $END_DATE dello script runRichiestaPorting_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE dello script runRichiestaPorting_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE dello script runRichiestaCess_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
$THIS_PATH/runRichiestaCess_Portati_COOP.sh $START_DATE $END_DATE
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento da $START_DATE a $END_DATE dello script runRichiestaCess_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE dello script runRichiestaCess_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio infasamento da $START_DATE a $END_DATE dello script runRichiestaCessPort_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
$THIS_PATH/runRichiestaCessPort_Portati_COOP.sh $START_DATE $END_DATE
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore infasamento da $START_DATE a $END_DATE dello script runRichiestaCessPort_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE dello script runRichiestaCessPort_Portati_COOP.sh" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento da $START_DATE a $END_DATE" >> $THIS_PATH/infasamentoExportCOOP.log
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/infasamentoExportCOOPUpdateDate.sql $MESI_INTERVALLO_INFASAMENTO $THIS_PATH>>$THIS_PATH/infasamentoExportCOOPSQL.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore aggiornamento date per export COOP" >> $THIS_PATH/infasamentoExportCOOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/infasamentoExportCOOP.log" >> $THIS_PATH/infasamentoExportCOOP.log
exit -1
fi
START_DATE=$(awk -F";" '{print $1}' < $THIS_PATH/date_infasamento.txt)
END_DATE=$(awk -F";" '{print $2}' < $THIS_PATH/date_infasamento.txt)
done
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine infasamento dati per export COOP" >> $THIS_PATH/infasamentoExportCOOP.log
if [ -f "$THIS_PATH/date_infasamento.txt" ] ; then
rm "$THIS_PATH/date_infasamento.txt"
fi
fi

View File

@@ -0,0 +1,16 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
spool &1/date_infasamento.txt;
select START_DATE ||';'|| least(END_DATE, FINAL_DATE) ||';'|| FINAL_DATE from MNP_DBP2COOP_DATE WHERE ROWNUM = 1;
spool off
/
EXIT

View File

@@ -0,0 +1,30 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
truncate table MNP_DBP2COOP_DATE;
truncate table MNP_DBP2COOP;
insert into MNP_DBP2COOP_DATE
select TO_CHAR(t1.START_DATE,'YYYYMMDD'), TO_CHAR(ADD_MONTHS(t1.START_DATE, &2),'YYYYMMDD'), TO_CHAR(SYSDATE, 'YYYYMMDD') from (
select min(t.MIN_DATE) as START_DATE from (
select min(MGR.DATA_CUT_OVER_CALC) AS MIN_DATE from MNP_GESTIONE_RICHIESTA MGR WHERE MGR.DATA_CUT_OVER_CALC >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATA_CUT_OVER_AOM) AS MIN_DATE from MNP_GESTIONE_RICHIESTA_REC MGR WHERE MGR.DATA_CUT_OVER_AOM >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATA_CUT_OVER) AS MIN_DATE from MNP_GESTIONE_RICHIESTA_PORTING MGR WHERE MGR.DATA_CUT_OVER >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATARICEZIONERICHIESTA) AS MIN_DATE from MNP_GESTIONE_RICH_CESS_PORT MGR WHERE MGR.DATARICEZIONERICHIESTA >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATARICEZIONERICHIESTA) AS MIN_DATE from MNP_GESTIONE_RICHIESTA_CESS MGR WHERE MGR.DATARICEZIONERICHIESTA >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATA_CUT_OVER_CALC) AS MIN_DATE from HIST_GESTIONE_RICHIESTA MGR WHERE MGR.DATA_CUT_OVER_CALC >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATA_CUT_OVER_AOM) AS MIN_DATE from HIST_GESTIONE_RICHIESTA_REC MGR WHERE MGR.DATA_CUT_OVER_AOM >= TO_DATE('&1','YYYYMMDD') UNION ALL
select min(MGR.DATA_CUT_OVER) AS MIN_DATE from HIST_GESTIONE_RICHIESTAPORTING MGR WHERE MGR.DATA_CUT_OVER >= TO_DATE('&1','YYYYMMDD')) t) t1;
COMMIT;
spool &3/date_infasamento.txt;
select START_DATE ||';'|| least(END_DATE, FINAL_DATE) ||';'|| FINAL_DATE from MNP_DBP2COOP_DATE WHERE ROWNUM = 1;
spool off
/
EXIT

View File

@@ -0,0 +1,18 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
update MNP_DBP2COOP_DATE m set m.START_DATE = TO_CHAR(TO_DATE(m.END_DATE,'YYYYMMDD') + 1,'YYYYMMDD'), m.END_DATE = TO_CHAR(ADD_MONTHS(TO_DATE(m.END_DATE,'YYYYMMDD'), &1),'YYYYMMDD') WHERE ROWNUM = 1;
COMMIT;
spool &2/date_infasamento.txt;
select START_DATE ||';'|| least(END_DATE, FINAL_DATE) ||';'|| FINAL_DATE from MNP_DBP2COOP_DATE WHERE ROWNUM = 1;
spool off
/
EXIT

View File

@@ -0,0 +1,99 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
. $THIS_PATH/export_coop.properties
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ -f "$THIS_PATH/iteration_number.txt" ] ; then
rm "$THIS_PATH/iteration_number.txt"
fi
if [ -f "$THIS_PATH/tmp_mnp_dbp2COOP.txt" ] ; then
rm "$THIS_PATH/tmp_mnp_dbp2COOP.txt"
fi
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio export dati per COOP" >> $THIS_PATH/runDbc2COOP.log
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runDbc2COOPInitialize.sql $NUMERO_RIGHE_FILE $THIS_PATH>>$THIS_PATH/runDbc2COOPSQL.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore inizializzazione export dati per COOP" >> $THIS_PATH/runDbc2COOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/runDbc2COOP.log" >> $THIS_PATH/runDbc2COOP.log
exit -1
fi
ITERATION_NUMBER=$(awk -F";" '{print $1}' < $THIS_PATH/iteration_number.txt)
ITERATION_NUMBER_TODO=$(awk -F";" '{print $2}' < $THIS_PATH/iteration_number.txt)
HOST_SE_NPG_GMNP=$(cat ${MNP_PROP_FILE} | grep HOST_SE_NPG_GMNP | awk -F"=" '{print $2}')
REMOTEDIR_SE_NPG_GMNP=$(cat ${MNP_PROP_FILE} | grep REMOTEDIR_SE_NPG_GMNP | awk -F"=" '{print $2}')
USER_SE_NPG_GMNP=$(cat ${MNP_PROP_FILE} | grep USER_SE_NPG_GMNP | awk -F"=" '{print $2}')
SFTP_PRIVATEKEY_PATH=$(cat ${MNP_PROP_FILE} | grep SFTP_PRIVATEKEY_PATH | awk -F"=" '{print $2}')
while [ $ITERATION_NUMBER_TODO -le $ITERATION_NUMBER ] ;
do
echo `date +"%Y-%m-%d %H:%M:%S"` "Inizio iterazione $ITERATION_NUMBER_TODO di $ITERATION_NUMBER" >> $THIS_PATH/runDbc2COOP.log
DATE=`echo $(date +%Y%m%d%H%M%S )`
FILENAME_TXT="MNP_${DATE}.txt"
FILENAME_CTR="MNP_${DATE}.ctr"
echo `date +"%Y-%m-%d %H:%M:%S"` "Iterazione $ITERATION_NUMBER_TODO di $ITERATION_NUMBER inizio scrittura file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runDbc2COOP.sql $NUMERO_RIGHE_FILE $THIS_PATH>>$THIS_PATH/runDbc2COOPSQL.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore scrittura file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/runDbc2COOP.log" >> $THIS_PATH/runDbc2COOP.log
exit -1
fi
mv $THIS_PATH/tmp_mnp_dbp2COOP.txt $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_TXT
touch $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_CTR
echo `date +"%Y-%m-%d %H:%M:%S"` "Iterazione $ITERATION_NUMBER_TODO di $ITERATION_NUMBER fine scrittura file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
echo `date +"%Y-%m-%d %H:%M:%S"` "Iterazione $ITERATION_NUMBER_TODO di $ITERATION_NUMBER inizio invio file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
if [ "$INVIO_FILE_SFTP" = "YES" ] ; then
OUT=$(sftp -oIdentityFile=${SFTP_PRIVATEKEY_PATH} ${USER_SE_NPG_GMNP}@${HOST_SE_NPG_GMNP} << \
!
cd ${REMOTEDIR_SE_NPG_GMNP}
put ${THIS_PATH}/${LOCALDIR_DA_INVIARE}/${FILENAME_TXT}
exit
!)
echo "$OUT" >>$THIS_PATH/runDbc2COOPSFTP.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore invio file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_TXT $THIS_PATH/$LOCALDIR_FALLITI/$FILENAME_TXT
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_CTR $THIS_PATH/$LOCALDIR_FALLITI/$FILENAME_CTR
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/runDbc2COOPSFTP.log" >> $THIS_PATH/runDbc2COOP.log
exit -1
fi
OUT=$(sftp -oIdentityFile=${SFTP_PRIVATEKEY_PATH} ${USER_SE_NPG_GMNP}@${HOST_SE_NPG_GMNP} << \
!
cd ${REMOTEDIR_SE_NPG_GMNP}
put ${THIS_PATH}/${LOCALDIR_DA_INVIARE}/${FILENAME_CTR}
exit
!)
echo "$OUT" >>$THIS_PATH/runDbc2COOPSFTP.log
if [ $? -ne 0 ]; then
echo `date +"%Y-%m-%d %H:%M:%S"` "Errore invio file $FILENAME_CTR" >> $THIS_PATH/runDbc2COOP.log
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_TXT $THIS_PATH/$LOCALDIR_FALLITI/$FILENAME_TXT
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_CTR $THIS_PATH/$LOCALDIR_FALLITI/$FILENAME_CTR
echo `date +"%Y-%m-%d %H:%M:%S"` "verificare errore in log $THIS_PATH/runDbc2COOPSFTP.log" >> $THIS_PATH/runDbc2COOP.log
exit -1
fi
fi
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_TXT $THIS_PATH/$LOCALDIR_INVIATI/$FILENAME_TXT
mv $THIS_PATH/$LOCALDIR_DA_INVIARE/$FILENAME_CTR $THIS_PATH/$LOCALDIR_INVIATI/$FILENAME_CTR
echo `date +"%Y-%m-%d %H:%M:%S"` "Iterazione $ITERATION_NUMBER_TODO di $ITERATION_NUMBER fine invio file $FILENAME_TXT" >> $THIS_PATH/runDbc2COOP.log
ITERATION_NUMBER_TODO=$(($ITERATION_NUMBER_TODO + 1))
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runDbc2COOPWorked.sql $THIS_PATH>>$THIS_PATH/runDbc2COOPSQL.log
done
echo `date +"%Y-%m-%d %H:%M:%S"` "Fine export dati per COOP" >> $THIS_PATH/runDbc2COOP.log
if [ -f "$THIS_PATH/iteration_number.txt" ] ; then
rm "$THIS_PATH/iteration_number.txt"
fi
if [ -f "$THIS_PATH/tmp_mnp_dbp2COOP.txt" ] ; then
rm "$THIS_PATH/tmp_mnp_dbp2COOP.txt"
fi
fi

View File

@@ -0,0 +1,31 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
UPDATE MNP_DBP2COOP D
SET D.FLAG_LAVORATO=2 --in lavorazione
WHERE D.FLAG_LAVORATO=0
and D.MSISDN in (
select MSISDN from (
SELECT C.MSISDN
, ROW_NUMBER() OVER (ORDER BY C.MSISDN) rno
FROM MNP_DBP2COOP C where C.FLAG_LAVORATO = 0)
WHERE rno <= &1);
--spool tmp_mnp_dbp2COOP.txt append; da usare se fare append
spool &2/tmp_mnp_dbp2COOP.txt;
SELECT 'telephone-number='''
||MSISDN
||''' result-info {routing-number='''||ROUTING_NUMBER
||'''};'
FROM MNP_DBP2COOP D
WHERE D.FLAG_LAVORATO=2 ORDER BY MSISDN;
spool off
/
EXIT

View File

@@ -0,0 +1,21 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
UPDATE MNP_DBP2COOP D
SET D.FLAG_LAVORATO=0 --da lavorare
WHERE D.FLAG_LAVORATO=2;
COMMIT;
spool &2/iteration_number.txt;
select ceil(count(l.MSISDN)/&1) || ';' || floor(((count(l.MSISDN) - t.WORKED)/&1) + 1) from MNP_DBP2COOP l,
(select count(*) as WORKED from MNP_DBP2COOP m where m.FLAG_LAVORATO = 0) t group by t.WORKED;
spool off
/
EXIT

View File

@@ -0,0 +1,17 @@
set heading off
set pagesize 0
set linesize 200
set trimspool on
set feedback off
set verify off
set echo off
set termout off
set time off
set timing off
alter session set nls_territory='italy';
UPDATE MNP_DBP2COOP D
SET D.FLAG_LAVORATO=1 --lavorati
WHERE D.FLAG_LAVORATO=2;
COMMIT;
/
EXIT

View File

@@ -0,0 +1,15 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo "Utilizzo: ${0} data_inizio data_fine "
echo " le date vanno passate in formato YYYYMMDD "
exit -1
fi
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runRichiestaCessPort_Portati_COOP.sql $1 $2 >$THIS_PATH/runRichiestaCessPort.log
fi

View File

@@ -0,0 +1,13 @@
DECLARE
DATA_INIZIO DATE;
DATA_FINE DATE;
BEGIN
DATA_INIZIO := TO_DATE('&1','YYYYMMDD');
DATA_FINE := TO_DATE('&2','YYYYMMDD');
PKG_DBP_COOP.ESTR_RICH_CESS_PORT ( DATA_INIZIO, DATA_FINE );
COMMIT;
END;
/
exit

View File

@@ -0,0 +1,15 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo "Utilizzo: ${0} data_inizio data_fine "
echo " le date vanno passate in formato YYYYMMDD "
exit -1
fi
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runRichiestaCess_Portati_COOP.sql $1 $2 >$THIS_PATH/runRichiestaCess.log
fi

View File

@@ -0,0 +1,13 @@
DECLARE
DATA_INIZIO DATE;
DATA_FINE DATE;
BEGIN
DATA_INIZIO := TO_DATE('&1','YYYYMMDD');
DATA_FINE := TO_DATE('&2','YYYYMMDD');
PKG_DBP_COOP.ESTR_RICHIESTA_CESS ( DATA_INIZIO, DATA_FINE );
COMMIT;
END;
/
exit

View File

@@ -0,0 +1,15 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo "Utilizzo: ${0} data_inizio data_fine "
echo " le date vanno passate in formato YYYYMMDD "
exit -1
fi
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runRichiestaPorting_Portati_COOP.sql $1 $2 >$THIS_PATH/runRichiestaPorting.log
fi

View File

@@ -0,0 +1,19 @@
-- 2022 C05 MNP_RU_XXX
-- full export of porting history to OLOs
-- CREATE PKG_DBP_COOP to export of porting history to OLOs
DECLARE
DATA_INIZIO DATE;
DATA_FINE DATE;
BEGIN
DATA_INIZIO := TO_DATE('&1','YYYYMMDD');
DATA_FINE := TO_DATE('&2','YYYYMMDD');
PKG_DBP_COOP.ESTR_RICHIESTA_PORTING_HIST ( DATA_INIZIO, DATA_FINE );
COMMIT;
PKG_DBP_COOP.ESTR_RICHIESTA_PORTING ( DATA_INIZIO, DATA_FINE );
COMMIT;
END;
/
exit

View File

@@ -0,0 +1,15 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo "Utilizzo: ${0} data_inizio data_fine "
echo " le date vanno passate in formato YYYYMMDD "
exit -1
fi
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runRichiestaRec_Portati_COOP.sql $1 $2 >$THIS_PATH/runRichiestaRec.log
fi

View File

@@ -0,0 +1,19 @@
-- 2022 C05 MNP_RU_XXX
-- full export of porting history to OLOs
-- CREATE PKG_DBP_COOP to export of porting history to OLOs
DECLARE
DATA_INIZIO DATE;
DATA_FINE DATE;
BEGIN
DATA_INIZIO := TO_DATE('&1','YYYYMMDD');
DATA_FINE := TO_DATE('&2','YYYYMMDD');
PKG_DBP_COOP.ESTR_RICHIESTA_REC_HIST ( DATA_INIZIO, DATA_FINE );
COMMIT;
PKG_DBP_COOP.ESTR_RICHIESTA_REC ( DATA_INIZIO, DATA_FINE );
COMMIT;
END;
/
exit

View File

@@ -0,0 +1,15 @@
#!/usr/bin/ksh
THIS_PATH=`dirname $0`
. $THIS_PATH/../setEnv.sh
$THIS_PATH/../TestNodo.sh
if [ $? -eq 0 ]
then
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo "Utilizzo: ${0} data_inizio data_fine "
echo " le date vanno passate in formato YYYYMMDD "
exit -1
fi
$MNP_SCRIPT_HOME/sqlExecutor.sh -sqlplus $THIS_PATH/runRichiesta_Portati_COOP.sql $1 $2 >$THIS_PATH/runRichiesta.log
fi

View File

@@ -0,0 +1,19 @@
-- 2022 C05 MNP_RU_XXX
-- full export of porting history to OLOs
-- CREATE PKG_DBP_COOP to export of porting history to OLOs
DECLARE
DATA_INIZIO DATE;
DATA_FINE DATE;
BEGIN
DATA_INIZIO := TO_DATE('&1','YYYYMMDD');
DATA_FINE := TO_DATE('&2','YYYYMMDD');
PKG_DBP_COOP.ESTR_RICHIESTA_HIST ( DATA_INIZIO, DATA_FINE );
COMMIT;
PKG_DBP_COOP.ESTR_RICHIESTA ( DATA_INIZIO, DATA_FINE );
COMMIT;
END;
/
exit

View File

@@ -0,0 +1,17 @@
CREATE TABLE MNP_DBP2COOP
(
MSISDN VARCHAR2(20 BYTE) NOT NULL,
CODICE_OPERATORE_RECIPIENT VARCHAR2(4 BYTE),
ROUTING_NUMBER VARCHAR2(10 BYTE) DEFAULT NULL,
DATA_CUT_OVER DATE,
DATA_ESTRAZIONE DATE NOT NULL,
FLAG_LAVORATO NUMBER(1) DEFAULT 0 NOT NULL
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
NOMONITORING;
ALTER TABLE MNP_DBP2COOP ADD CONSTRAINT PK_MNP_DBP2COOP PRIMARY KEY (MSISDN) USING INDEX TABLESPACE TAB_IDX_MEDIUM;

View File

@@ -0,0 +1,7 @@
CREATE TABLE MNP_DBP2COOP_DATE
(
START_DATE VARCHAR2(8 BYTE),
END_DATE VARCHAR2(8 BYTE),
FINAL_DATE VARCHAR2(8 BYTE)
);

View File

@@ -0,0 +1,142 @@
-- Execute as user MNP
-- 2022 C05 MNP_RU_XXX
-- full export of porting history to OLOs
-- Full extract for DNs in test set, with name of table of origin.
SELECT * FROM (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'MNP_GESTIONE_RICHIESTA' AS TABELLA_ORIGINE
FROM MNP_GESTIONE_RICHIESTA MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 16
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'MNP_GESTIONE_RICHIESTA_REC' AS TABELLA_ORIGINE
FROM MNP_GESTIONE_RICHIESTA_REC MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 12
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'MNP_GESTIONE_RICHIESTA_PORTING' AS TABELLA_ORIGINE
FROM MNP_GESTIONE_RICHIESTA_PORTING MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 6
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'MNP_GESTIONE_RICH_CESS_PORT' AS TABELLA_ORIGINE
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
FROM MNP_GESTIONE_RICH_CESS_PORT MGR, MNP_OLO O
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
WHERE MGR.MSISDN IN (:X)
AND ( MOP.PREFIX=SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX=SUBSTR(MGR.MSISDN,3,4) )
AND MGR.STATO = '2'
AND O.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'MNP_GESTIONE_RICHIESTA_CESS' AS TABELLA_ORIGINE
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
FROM
MNP_GESTIONE_RICHIESTA_CESS MGR, MNP_OLO O
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
WHERE MGR.MSISDN IN (:X)
AND (MOP.PREFIX = SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX = SUBSTR(MGR.MSISDN,3,4))
AND MGR.STATO = '3'
AND O.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'HIST_GESTIONE_RICHIESTA' AS TABELLA_ORIGINE
FROM HIST_GESTIONE_RICHIESTA MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 16
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'HIST_GESTIONE_RICHIESTA_REC' AS TABELLA_ORIGINE
FROM HIST_GESTIONE_RICHIESTA_REC MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 12
) m_cur_bulk
)
WHERE rnum = 1
UNION ALL
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, TABELLA_ORIGINE FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, (SELECT A.ROUTING_NUMBER FROM MNP_OLO A WHERE A.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT) AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 'HIST_GESTIONE_RICHIESTAPORTING' AS TABELLA_ORIGINE
FROM HIST_GESTIONE_RICHIESTAPORTING MGR
WHERE MGR.MSISDN IN (:X)
AND MGR.STATO = 6
) m_cur_bulk
)
WHERE rnum = 1
) ORDER BY MSISDN, DATA_CUT_OVER;

View File

@@ -0,0 +1,481 @@
-- Execute as user MNP
-- 2022 C05 MNP_RU_XXX
-- full export of porting history to OLOs
-- DDL 2/2
-- CREATE PKG_DBP_COOP to export of porting history to OLOs
-- Per le CESSAZIONI riportare come CODICE_OPERATORE_RECIPIENT
-- l'OLO proprietario originale del DN (come da prefisso)
CREATE OR REPLACE PACKAGE PKG_DBP_COOP AS
PROCEDURE ESTR_RICHIESTA (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_REC (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_PORTING (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICH_CESS_PORT (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_CESS (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_HIST (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_REC_HIST (in_data_inizio IN DATE, in_data_fine IN DATE);
PROCEDURE ESTR_RICHIESTA_PORTING_HIST(in_data_inizio IN DATE, in_data_fine IN DATE);
END PKG_DBP_COOP;
/
CREATE OR REPLACE PACKAGE BODY PKG_DBP_COOP AS
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #1/8
-- PROCESSO DONOR STANDARD/MVNO/PrjHoc
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM MNP_GESTIONE_RICHIESTA MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER_CALC BETWEEN in_data_inizio AND in_data_fine
AND STATO = 16 --ESPLETATA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #2/8
-- PROCESSO RECIPIENT STANDARD/MVNO/PrjHoc
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_REC(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT /*+ FULL(MGR) PARALLEL(5)*/ MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM MNP_GESTIONE_RICHIESTA_REC MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER_AOM BETWEEN in_data_inizio AND in_data_fine
AND STATO = 12 --EVASA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_REC;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #3/8
-- PROCESSO PORTING TERZE PARTI
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_PORTING(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM MNP_GESTIONE_RICHIESTA_PORTING MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER BETWEEN in_data_inizio AND in_data_fine
AND MGR.STATO = 6 -- ESPLETATA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_PORTING;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #4/8
-- PROCESSO CESSAZIONI PORTING
-- STATO 4 = CESSATA
-- Riportare come CODICE_OPERATORE_RECIPIENT l'OLO proprietario originale del DN
-- L'ultima condizione serve a estrarre OLO Cessatori (Donor) esistenti e validi
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICH_CESS_PORT(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
FROM MNP_GESTIONE_RICH_CESS_PORT MGR, MNP_OLO O
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
WHERE
MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATARICEZIONERICHIESTA BETWEEN in_data_inizio AND in_data_fine
AND ( MOP.PREFIX=SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX=SUBSTR(MGR.MSISDN,3,4) )
AND MGR.STATO='2' -- CESSATA
AND O.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICH_CESS_PORT;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #5/8
-- PROCESSO CESSAZIONI
-- Riportare come CODICE_OPERATORE_RECIPIENT l'OLO proprietario originale del DN
-- L'ultima condizione serve a estrarre OLO Cessatori (Donor) esistenti e validi
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_CESS(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, O.DESC_OLO AS CODICE_OPERATORE_CESSATORE
, O.ROUTING_NUMBER AS ROUTING_NUMBER_CESSATORE
, MGR.DATARICEZIONERICHIESTA AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
, MO.DESC_OLO AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
FROM
MNP_GESTIONE_RICHIESTA_CESS MGR, MNP_OLO O
, MNP_OLO_PREFISSI MOP INNER JOIN MNP_OLO MO ON MO.COD_OLO=MOP.COD_OLO
WHERE
MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATARICEZIONERICHIESTA BETWEEN in_data_inizio AND in_data_fine
AND (MOP.PREFIX = SUBSTR(MGR.MSISDN,3,3) OR MOP.PREFIX = SUBSTR(MGR.MSISDN,3,4))
AND MGR.STATO='3' -- CESSATA
AND O.DESC_OLO = MGR.CODICE_OPERATORE_RECIPIENT
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_CESS;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #6/8
-- PROCESSO DONOR STANDARD/MVNO/PrjHoc tabella storicizzata
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_CALC AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM HIST_GESTIONE_RICHIESTA MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER_CALC BETWEEN in_data_inizio AND in_data_fine
AND MGR.STATO = 16 --ESPLETATA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_HIST;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #7/8
-- PROCESSO RECIPIENT STANDARD/MVNO/PRJHOC tabella storicizzata
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_REC_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER_AOM AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM HIST_GESTIONE_RICHIESTA_REC MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER_AOM BETWEEN in_data_inizio AND in_data_fine
AND MGR.STATO = 12 --EVASA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_REC_HIST;
-- ===============================================================================
-- 2022 C05 MNP_RU_XXX Procedura #8/8
-- PROCESSO PORTING TERZE PARTI tabella storicizzata
-- Utilizza MERGE invece di LOOP on CURSOR
PROCEDURE ESTR_RICHIESTA_PORTING_HIST(in_data_inizio IN DATE, in_data_fine IN DATE) IS
BEGIN
MERGE INTO MNP_DBP2COOP m_tgt
USING (
SELECT MSISDN, CODICE_OPERATORE_RECIPIENT, ROUTING_NUMBER, DATA_CUT_OVER, DATA_ESTRAZIONE, FLAG_LAVORATO FROM (
SELECT m_cur_bulk.*, row_number() OVER (PARTITION BY MSISDN ORDER BY DATA_CUT_OVER DESC) rnum FROM (
SELECT
MGR.MSISDN AS MSISDN
, MGR.CODICE_OPERATORE_RECIPIENT AS CODICE_OPERATORE_RECIPIENT
, MO.ROUTING_NUMBER AS ROUTING_NUMBER
, MGR.DATA_CUT_OVER AS DATA_CUT_OVER
, SYSDATE AS DATA_ESTRAZIONE
, 0 AS FLAG_LAVORATO
FROM HIST_GESTIONE_RICHIESTAPORTING MGR INNER JOIN MNP_OLO MO ON MO.DESC_OLO=MGR.CODICE_OPERATORE_RECIPIENT
WHERE MGR.MSISDN IS NOT NULL AND MO.ROUTING_NUMBER IS NOT NULL
AND MGR.DATA_CUT_OVER BETWEEN in_data_inizio AND in_data_fine
AND MGR.STATO = 6 -- ESPLETATA
) m_cur_bulk
)
WHERE rnum = 1
) m_cur
ON (m_cur.MSISDN = m_tgt.MSISDN)
WHEN MATCHED THEN
UPDATE SET
CODICE_OPERATORE_RECIPIENT = m_cur.CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER = m_cur.ROUTING_NUMBER
, DATA_CUT_OVER = m_cur.DATA_CUT_OVER
, DATA_ESTRAZIONE = m_cur.DATA_ESTRAZIONE
, FLAG_LAVORATO = m_cur.FLAG_LAVORATO
WHERE m_cur.DATA_CUT_OVER > m_tgt.DATA_CUT_OVER
WHEN NOT MATCHED THEN
INSERT (
MSISDN
, CODICE_OPERATORE_RECIPIENT
, ROUTING_NUMBER
, DATA_CUT_OVER
, DATA_ESTRAZIONE
, FLAG_LAVORATO
) VALUES (
m_cur.MSISDN
, m_cur.CODICE_OPERATORE_RECIPIENT
, m_cur.ROUTING_NUMBER
, m_cur.DATA_CUT_OVER
, m_cur.DATA_ESTRAZIONE
, m_cur.FLAG_LAVORATO
);
COMMIT;
RETURN;
END ESTR_RICHIESTA_PORTING_HIST;
END PKG_DBP_COOP;
/

View File

@@ -0,0 +1,18 @@
-- 2022 C05 MNP_RU_XXX
--execute as MNP
--spool /mnpapp/log/script/dbc_export_coop.log;
-----------------------------
--CREATE/MODIFY OBJECT
@@DDL_mnp_dbp2coop.sql
@@DDL_mnp_dbp2coop_date.sql
@@MNP_DDL_PKG_DBP_COOP.sql
-----------------------------
--INSERT/UPDATE DATA
--@@dbcDML.sql
-----------------------------
commit;
spool off;