Descarga CDRs fijas desde el sFPT de MásMóvil para añadirlos a los sistemas de Rentel.
## Introducción
### Funcionalidad
Se ejecuta de forma periodica para conectarse a dos sFTP diferentes desde donde extrae el consumo de las líneas fijas (de clientes con fibra indirecta).
Se ejecuta de forma periodica para conectarse al sFTP desde donde extrae el consumo de las líneas fijas
### Lenguajes de Programación
Le herramienta está desarrollada con Python. Se utilizan librerías de python para el acceso a los servidores SFTP.
...
...
@@ -12,15 +11,13 @@ Le herramienta está desarrollada con Python. Se utilizan librerías de python p
### Credenciales
| Servicio | Descripción | Producción | Dirección | Base de datos | Usuario | Contraseña |
| CDR Fijos y móviles | Servidor FTP de CableMóvil con los CDR de los consumos de las líneas Fijos y móviles | Si | sftp.xtratelecom.es | | cF33028 | 9BRW78sf |
| SQL Server | Servidor Principal SQL Server | Si | 10.58.4.5 / 192.168.2.200 | bdd_wifi | apicdr | cdr5485 |
| CDR Fijos | Servidor FTP de CableMóvil con los CDR de los consumos de las líneas Fijos y móviles | No | sftp.xtratelecom.es | | cF33028 | 9BRW78sf |
| SQL Server | Servidor Principal SQL Server | Si | 192.168.2.200 | bdd_wifi | apicdr | cdr5485 |
### Importador MásMóvil
Está compuesto de un script, `setup.py`, se encarga de conectarse al sFTP de MásMóvil, y descargar los archivos de CDRs nuevos.
Posteriormente procederemos al procesado de dichos ficheros, guardando cada línea de estos archivos previamente descargados en las tablas `TB_Cdr`, y `TB_Cdr_Fijos`.
Está compuesto de un script, `main.py`, se encarga de conectarse al sFTP de MásMóvil, y descargar los archivos de CDRs nuevos y guarda un registro en TB_CDR_Ficheros (tipo = 2) .
Posteriormente procederemos al procesado de dichos ficheros, guardando cada línea de estos archivos previamente descargados en las tablas `TB_Cdr_Fijos`.
En cada línea aparece la información de cada llamada, el teléfono que realiza la llamada, destino de llamada, duración, entre otros.
El script se encuentra alojado en la máquina `debian.utils` con la IP `192.168.2.63`.
Dicho script se ejecutará según la configuración de un crontab.
Inserto o actualizo en la tabla TB_Cdr_fijos los registros de fijos.
Args:
files:list -> Lista de rutas absolutas de los ficheros de fijos para procesar
cursor:cursor -> cursor de conexión a la base de datos ddd_wifi
"""
print(files)
forcdr_fileinfiles:
# En caso de que se halla producido un error en el procesado de un fichero
# tendremos el num de registros procesados por el que se ha quedado guardado en la bd TB_CDR_ficheros
# con este proceso empezariamos desde el registro donde se quedo
print(f'llega')
nombre_fichero=os.path.basename(cdr_file)
print(nombre_fichero)
cursor.execute("SELECT Num_Reg_Pro, Num_Reg_Dup FROM TB_CDR_Ficheros WHERE filename = ?",
nombre_fichero,
)
Num_Reg_Pro_d=cursor.fetchone()
print('pasa')
Num_Reg_Pro_db=int(Num_Reg_Pro_d[0])+int(Num_Reg_Pro_d[1])# Total de registros procesados de un fichero por si hay una excepción partir el procesado desde ese registro
time_init=datetime.now()
print(cdr_file)
if"mvno_"notincdr_file:
logging.info(f'Inicio procesado del fichero {cdr_file}')
logging.info(f'Número de registros procesados de ese fichero en la base de datos {Num_Reg_Pro_db}')
Num_Reg_Pro_file=0
cdr_fijos_update_count=int(Num_Reg_Pro_d[1])#Contador de registros actualizados
cdr_fijos_insert_count=int(Num_Reg_Pro_d[0])#Contador de registros insertados
cdr_observaciones_duplicados=''
line_process_actual=0
try:
forcsv_lineinread_file(cdr_file):
line_process_actual+=1
ifNum_Reg_Pro_db==Num_Reg_Pro_file:# En caso de que antes alla surgido una excepción empezaremos a partir de la linea donde causo la excepción
fijo_ddi=csv_line[0]
fijo_tarifa=csv_line[1]
fijo_destino=str(csv_line[2])
fijo_fecha=datetime.strptime(
csv_line[3]+" "+csv_line[4],'%d-%m-%Y %H:%M:%S')
fijo_duracion=csv_line[5]
fijo_desc_destino=csv_line[6]
fijo_coste=csv_line[7]
fijo_info=csv_line[8]
fijo_fichero=os.path.basename(cdr_file)
cursor.execute("SELECT count(*) FROM TB_Cdr_Fijos WHERE ddi = ? AND fecha = ?",fijo_ddi,fijo_fecha,)
fetch=cursor.fetchone()
iffetch[0]!=0:
id=str(fetch[0])
cursor.execute("""UPDATE TB_Cdr_Fijos SET ddi = ?, tarifa = ?, destino = ?, fecha = ?, duracion = ?, desc_destino = ?, coste = ?, info = ? WHERE id = ?""",(