Coordinación de Requerimientos Tarea 5241: “ARCHIVO DE CONCILIACION DE TRANSACCIONES DE TARJETAS DIGITEL” Solicitado por: Marco Baptista Fecha: 21-06-2012 ESPECIFICACIONES DE LA TAREA: Con la finalidad de conciliar todas las transacciones de Tarjetas Digitel con las procesadas por Inter, se debe diseñar y desarrollar una aplicación para realizar de manera automática la conciliación diaria de las transacciones de Digitel derivadas de las recargas del servicio inter satelital hechas a través de tarjetas prepago Digitel. Esta aplicación debe funcionar de manera similar al proceso de lectura de OM (CVS); es decir, estar activa permanentemente, leer archivos desde una ruta indicada según validación establecida, realizar el proceso de conciliación, guardar el archivo original en una carpeta de respaldo (BackUP en ruta indicada), generar un archivo de retorno que contenga la palabra out en su nombre y guardarlo en ruta indicada. El proceso de conciliación lo que hace es tomar las transacciones reportadas por Digitel, compara contra las registradas en nuestra plataforma, marca conciliadas las que coinciden entre ambas plataformas, si alguna que envíe Digitel exitosa y no existe en nuestra plataforma le da de alta y si alguna está en nuestra plataforma y no en la de Digitel; es decir, no nos la enviaron en archivo in, se lo reportamos en el archivo out. Se menciona ejemplo considerando la imagen de Proceso de Lectura de OM (CSV): Carpeta Proceso (IN) = C:\Conciliaciondigitel\IN Archivos = IN (esta sería la validación, leer sólo archivos que su nombre contengan la palabra in) Último archivo procesado = nombre completo del último archivo procesado (91019072012_in.txt) Archivo en Proceso = nombre completo del archivo en proceso en ese momento (91020072012_in.txt) o en blanco si no está procesando en ese momento Procesar cada = tiempo configurable para que el demonio busque archivos y los procese Botón Iniciar/Detener = para iniciar/detener el demonio Carpeta de Respaldo = C:\Conciliaciondigitel\BackUp Carpeta de Resultado = C:\Conciliaciondigitel\OUT Información Importante: 1.- En el caso de la conciliación de Digitel, los archivos se depositan en un servidor FTP (Linux), por lo que no es en principio sencillo mapear como una unidad de “Windows”; en este caso les sugerimos a los desarrolladores halar u obtener los archivos Linux y colocarlos en una ruta que se pueda leer en Windows. A continuación se describe el proceso que actualmente se realiza de manera manual para el envío y recepción de archivos desde el FTP: Vía línea de comandos se ejecuta el archivo recibir.bat ; este archivo lo que hace es ejecutar las líneas contenidas en el archivo ftp_recibir.txt para halar el archivo in a conciliar; se ubica en la máquina según la IP, se dirige a la máquina local (carpeta c:\digitel\in) tomando como usuario y password los indicados en la segunda y tercera línea, allí ejecuta el comando mget, el cual toma todo lo que está en esa carpeta (in) indistintamente del nombre; en el caso de usar el comando get se tiene que indicar el nombre exacto del archivo con el que se va a trabajar. Luego vía línea de comando se ejecuta el archivo enviar.bat ; este archivo lo que hace es ejecutar las líneas contenidas en el archivo ftp_enviar.txt para subir al FTP el archivo out resultante del proceso de conciliación; se ubica en la máquina según la IP, se dirige a la máquina local (carpeta c:\digitel\out) tomando como usuario y password los indicados en la segunda y tercera línea, allí ejecuta el comando put, el cual sube todo lo contenido en la carpeta local out. Por lo tanto el proceso de la conciliación tendría que invocar los archivos .bat (recibir y enviar) y esos .bat trabajaran con los archivos .txt (ftp_recibir y ftp_enviar) como se mencionó anteriormente. Se requiere de un proceso automático que simule este mecanismo, si existe un método en Genexus que haga la conexión al FTP de manera más optima sería lo ideal ya que el proceso sería más eficiente ó si se considera que es mejor programar una tarea en la máquina de Windows donde se ejecutará la conciliación entonces se obvia el desarrollo de la conexión FTP. 2.- También se debe incorporar la funcionalidad de Nagios sobre este proceso; es decir, poder monitorear desde el nagios esta actividad e informar cuando exista algún error en el proceso o falla la conexión. Notas: El nombre del archivo recibido de parte de digitel corresponde a la siguiente estructura: 91019072012_in.txt Donde: 910 = Código fijo (IdInstitución) 19072012 = Fecha del día en formato ddmmyyyy _in = indica que es un archivo recibido de parte de Digitel por conciliar .txt = extensión del archivo El contenido del archivo corresponde a la siguiente estructura 91020072012_in.txt 19072012150458;0100144540;19072012150458506882000;910;2260000042;I VR;20;0;0100144540;2;19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 19072012145948;0100144463;19072012145948889619000;910;2259000047;I VR;15;0;0100144463;2;19/07/2012 14:59:48;Beneficio Generico;201207191503280100144463 Donde: 19072012150458;0100144540;19072012150458506882000;910; = OrderId de Digitel 2260000042 = serial de la tarjeta digitel IVR = canal por donde se realizó la recarga, para este ejemplo: IVR. 20 = importe de la tarjeta 0 = puede tomar cero(0) ó distinto de cero y denota el éxito o falla de la transacción en la plataforma de Digitel (0 = transacción exitosa, distinto de cero = transacción fallida) 0100144540 = id del abonado 2 = puede tomar 1 ó 2 y denota el mensaje resultado de la transacción en Digitel (1 = Recarga exitosa, saldo suficiente, 2 = Recarga exitosa, saldo insuficiente) 19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 = Información de Digitel El nombre del archivo enviado a digitel luego del proceso de conciliación corresponde a la siguiente estructura 91019072012_out.txt, donde: en relación al archivo recibido se cambia la palabra in por out. El contenido del archivo 91019072012_out.txt corresponde a la siguiente estructura: 19072012150458;0100144540;19072012150458506882000;910;2260000042;I VR;20;0;0100144540;4;19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 19072012145948;0100144463;19072012145948889619000;910;2259000047;I VR;15;0;0100144463;4;19/07/2012 14:59:48;Beneficio Generico;201207191503280100144463 19072012145948;0100144463;19072012145948889619;910;0047;IVR;15;0;01 00144463;6;19/07/2012 15:00:02;; 19072012150458;0100144540;19072012150458506882;910;0042;IVR;20;0;01 00144540;6;19/07/2012 15:05:12;; El cambio con respecto al _in.txt es el código ubicado para este ejemplo en la columna 87 que puede tomar los siguientes valores: 4 = CONCILIADO, 5 = NO CONCILIADO, 6 = NO CONCILIADO porque no la recibimos de parte de Digitel; es decir, está en nuestra plataforma pero Digitel no nos la reportó 19072012150458;0100144540;19072012150458506882000;910;2260000042;I VR;20;0;0100144540;4;19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 ****Se anexa a la tarea archivos _in.txt y _out.txt como referencia. El proceso de conciliación debe realizar las siguientes funciones. Con el TraceId de la Transacción Digitel que viene en el archivo de entrada, se busca en la tabla TRNDIGITEL (transacciones digitel) y pueden ocurrir los siguientes escenarios: Si existe en TRNDIGITEL y el Código de estado de la Recarga Digitel que viene en el archivo de entrada es exitoso y en la TRNDIGITEL también se encuentra en status exitoso, se marca como conciliado en la Tabla TRNDIGITEL y se envía el status de notificación 4 en el archivo de salida. Si existe en TRNDIGITEL y el Código de estado de la Recarga Digitel que viene en el archivo de entrada es exitoso y en la TRNDIGITEL se encuentra en status fallido, se procede a ejecutar en línea la recarga y de ser exitoso, se marca en la TRNDIGITEL como exitoso y también como conciliado. Si existe en TRNDIGITEL y el Código de estado de la Recarga Digitel que viene en el archivo de entrada es exitoso y en la TRNDIGITEL se encuentra en status fallido, se procede a ejecutar en línea la recarga y de ser fallido, se envía el status de notificación 5 en el archivo de salida. Si existe en TRNDIGITEL y el Código de estado de la Recarga Digitel que viene en el archivo de entrada es fallido y en la TRNDIGITEL se encuentra en status fallido, se marca como conciliado en la Tabla TRNDIGITEL y se envía el status de notificación 4 en el archivo de salida. Si existe en TRNDIGITEL y el Código de estado de la Recarga Digitel que viene en el archivo de entrada es fallido y en la TRNDIGITEL se encuentra en status exitoso, se envía el status de notificación 5 en el archivo de salida. Luego se procede a Buscar las TRNDIGITEL que no están conciliadas ya que no fueron enviadas por Digitel y se envían en el archivo de salida con el estado de notificación 6. OBSERVACION Debido a que se están anexando nuevos proveedores aparte de Digitel, es necesario que este proceso verifique o permita configurar las rutas de las carpetas donde debe ubicar y colocar los archivos tanto de entrada como de salida del proceso de conciliación. Por ejemplo, actualmente en el FTP además de la carpeta Digitel existe también la carpeta SMOL para las transacciones generadas por el proveedor SELCO