INFORME DE PRUEBA Usuario Quality: Ing. María Silva. “NUEVA FUNCIONALIDAD” TAREA: 5241 – CONCILIACION DE TRANSACCIONES DIGITEL/INTER DESARROLLADOR: Ing. Ennodio Marín REQUERIMIENTO 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 óptima 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;IVR; 20;0;0100144540;2;19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 19072012145948;0100144463;19072012145948889619000;910;2259000047;IVR; 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 corresponde a la siguiente estructura: 91019072012_out.txt 19072012150458;0100144540;19072012150458506882000;910;2260000042;IVR; 20;0;0100144540;4;19/07/2012 15:04:58;Beneficio Generico;201207191509050100144540 19072012145948;0100144463;19072012145948889619000;910;2259000047;IVR; 15;0;0100144463;4;19/07/2012 14:59:48;Beneficio Generico;201207191503280100144463 19072012145948;0100144463;19072012145948889619;910;0047;IVR;15;0;01001 44463;6;19/07/2012 15:00:02;; 19072012150458;0100144540;19072012150458506882;910;0042;IVR;20;0;01001 44540;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;IVR; 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 DESCRIPCIÓN DE LA NUEVA FUNCIONALIDAD Se realizaron los siguientes cambios: Se creó un nuevo módulo Nodo Demonio en el sistema GxVision K2B para registrar por demonio la IP del nodo autorizado. Solo se permite una IP por demonio. Se agregaron dos campos ruta y programa de conciliación en la configuración de Proveedor Boca Pago del sistema GxVision K2B. Estos campos son necesarios para el funcionamiento del Demonio de Conciliación de Recarga. La ruta a configurar es el servidor de Linux mapeado, además en ésta se debe tener la siguiente estructura: cuatro carpetas denominadas BACKUP, IN, OUT y SUSPEND. Se créo un demonio de conciliación el cual al ser encendido, estará verificando constantemente en la carpeta IN de la rutas configuradas a los proveedores si existen archivos por procesar para la conciliación; dependiendo del programa de conciliación configurado para cada proveedor el demonio ejecutará la conciliación Boca Pago o la conciliación TuVes (programas ya existentes en el sistema). 1.-Notas del Desarrollador. No tiene notas del desarrollador 2.- Notas de Configuración. 2.1.- Queries insert into gx.cfgconstantes values('FDCR', 'Frecuencia Demonio Conciliacion Recarga', 1,'Numeric', 3, 0); 2.2.- Creación de Opciones y Menús Se debe crear la siguiente opción de menú. 2.3.- Configuraciones Iniciales Asociar las siguientes actividades a los roles correspondientes. Se debe configurar la IP de nodo donde se ejecutará el demonio en la siguiente ruta: GxVision > Conf. Operativa > Conf. Comercial > Nodo Demonios. Nota: para el demonio de conciliación recarga el código a utilizar debe ser el siguiente DemonioConciliaRecarga (Obligatorio), el sistema solo permite autorizar una IP para dicho demonio. Se debe mapear el servidor de Linux y luego configurar las rutas por proveedor, se debe tener una carpeta por proveedor. Para configurar la ruta y programa de conciliación del proveedor boca pago se debe realizar a través de la siguiente ruta: GxVision > Conf. Operativa > Conf. Comercial > Proveedor Boca Pago. Nota: la ruta a configurar debe terminar en ‘\’, y debe ser diferente para cada proveedor. Además, es necesario crear las siguientes carpetas en la ruta configurada. Carpeta IN: desde ésta se leerán los archivos que envía el proveedor. Carpeta OUT: en ésta carpeta se guardará el resultado. Carpeta BACKUP: contendrá una copia de los archivos procesados en IN. Carpeta SUSPEND: por ahora almacenará los archivos de texto que no reconozca. 2.4.- Versiones de Navegador y Java Navegador: Firefox 27.0.1. Versión de Java: 7, Actualización 51. PRUEBAS REALIZADAS Configuración Nodos Demonio A través del siguiente módulo se deben registrar las direcciones IP del nodo donde se ejecutará el Demonio de Conciliación. Ruta: GxVision Conf. Operativa Conf. Comercial Nodo Demonios. Alta Para dar de alta un nodo se debe hacer click sobre el icono del símbolo ‘+’ ubicado en la parte superior derecha del grid. El sistema solicita los datos. Al aceptar se visualiza el registro en la lista. Validaciones El código no puede ser nulo ni estar registrado. La dirección IP debe poseer un formato válido. Modificar Para modificar un nodo se debe seleccionar el registro y la operación Modificar. El sistema permite modificar los campos descripción e IP Nodo solamente. Al confirmar se visualizan los cambios en la lista de Nodo Demonios. Visualizar Para visualizar el detalle de un nodo se debe hacer click sobre la descripción de éste. Eliminar Para eliminar un nodo se debe seleccionar el registro y la operación Eliminar. El sistema solicita la confirmación, luego de aceptar el registro no se visualiza en la lista. Configuración Ruta y Programa Conciliación Proveedor Boca Pago En la entidad ya existente Proveedor Boca Pago se agregaron dos campos denominados Ruta Conciliación y Programa Conciliación, se debe asociar la ubicación donde se montarán los archivos recibidos para la conciliación y se debe seleccionar el programa a utilizar al conciliar (por ahora solo existen dos: Conciliación Boca Pago y Conciliación Tu Ves). Ruta: GxVision Conf. Operativa Conf. Comercial Proveedor Boca Pago. A continuación se indican los nuevos campos a configurar. Luego de modificar el registro, se visualizan los cambios. Por otra parte, es importante resaltar que la carpeta configurada debe contener la siguiente estructura. Carpeta IN: desde ésta se leerán los archivos que envía el proveedor. Carpeta OUT: en ésta carpeta se guardará el resultado. Carpeta BACKUP: contendrá una copia de los archivos procesados en IN. Carpeta SUSPEND: por ahora almacenará los archivos de texto que no reconozca. Demonio Conciliación Recarga Al ejecutar el demonio de conciliación de recarga el sistema busca en la configuración de cada proveedor de boca de pago, la ruta y programa de conciliación asociado. Busca el archivo IN en la ruta, y ejecuta el programa de conciliación que le corresponda. Conciliación Boca Pago Para el caso de conciliación de Boca Pago, se tiene la siguiente configuración del proveedor. En la carpeta IN dentro de la ruta configurada al proveedor se tiene el archivo a procesar. Data del archivo. Información en la base de datos de las transacciones del archivo IN. select trndigcod, trndigsts, trndigorderid,trndigcode from trndigitel where trndigorderid in ( '26112013160223;0100146155;000000006;910', '26112013160223;0100146155;000000007;910', '09122013102929;0100146014;09122013102929619995005;501', '10122013102929;0100147135;10122013102929619995036;501', '11122013102929;0100147148;11122013102929619992726;501', '05122013082929;0100146465;04122013082929617534321;910', '05122013082929;0100146465;04122013082929617531234;910'); Transacciones solo Inter. select trndigcod, trndigsts, trndigorderid,trndigcode from trndigitel where trndigfchhor < '02/10/2013' and trndigsts not in ('C','X','N'); Se activa el demonio y se procesa el archivo. El archivo IN procesado se mueve a la carpeta BACKUP, y el archivo con los resultados de la conciliación para cada transacción se guarda en la carpeta OUT. Por otra parte, el demonio crea el siguiente archivo y registra según la frecuencia configurada la fecha y hora en ejecución. Contenido del archivo. Resultado de la conciliación. Justo antes de la fecha y luego del ID del abonado se imprime el estatus de conciliación de la transacción variable entre 4 (Conciliado), 5 (No Conciliado) y 6 (No Conciliado, no se encontraban en el archivo). En caso que se imprima un * se debe a que la transacción en el archivo proviene con estatus de notificación fallido. Caso I: Transacción Conciliada Orden 11122013102929;0100147148;11122013102929619992726;501 estatus exitoso tanto en el archivo como en la tabla. con Caso II: Transacción No Conciliada Ordenes 10122013102929;0100147135;10122013102929619995036;501 y 26112013160223;0100146155;000000007;910 con estatus exitoso en el archivo y fallido en la tabla. Al ejecutar la recarga se obtuvo un error por ello se marcan como No Conciliadas con estatus de notificación 5; si la recarga es exitosa se marcarían Conciliadas. Caso III: Transacción en Archivo y no en Base de Datos Orden 05122013082929;0100146465;04122013082929617531234;910 como no se encuentra en la tabla de la base de datos el sistema la crea y ejecuta la recarga, en este caso quedo fallida la aplicación de la recarga por lo cual se marca como No Conciliada con estatus de notificación 5; si la recarga es exitosa se macaría como Conciliada. Caso IV: Transacción en la Base de Datos y no en el Archivo Orden 09122013102929;0100145403;09122013102929619995001;501, las ordenes que no se concilian por no estar en el archivo se marcan no conciliadas pero con estatus de notificación 6. Caso V: Transacción en Archivo con Estatus de Notificación Fallido Ordenes 09122013102929;0100146014;09122013102929619995005;501 y 26112013160223;0100146155;000000006;910, no se modifica su estatus estas permaneces pendientes sin embargo su estatus de notificación queda con el valor *. Conciliación TuVes Para el caso de conciliación de Boca Pago, se tiene la siguiente configuración del proveedor. En la carpeta IN dentro de la ruta configurada al proveedor se tiene el archivo a procesar. Data del archivo. Información en la base de datos de las transacciones del archivo IN. select trndigcod, trndigsts, trndigorderid,trndigcode, trndigconres from trndigitel where trndigorderid in ( '05122013082929;0100146467;04122013082929617535006;501', '11122013102929;0100147128;10122013102929619995044;501', '15032014153246;1400019834;03219350315147520001000;501', '11122013102929;0100147142;10122013102929619992659;501', '26112013160223;0100146155;000000006;501', '09122013102929;0100146014;09122013102929619995005;501'); Transacciones solo Inter. select trndigcod, trndigsts, trndigorderid,trndigcode from trndigitel where trndigfchhor < '16/03/2014' and trndigsts not in ('C','X','N'); Se activa el demonio y se procesa el archivo. El archivo IN procesado se mueve a la carpeta BACKUP, y el archivo con los resultados de la conciliación para cada transacción se guarda en la carpeta OUT. Por otra parte, el demonio modifica el siguiente archivo y registra según la frecuencia configurada la fecha y hora en ejecución. Contenido del Archivo. Resultado de la conciliación. Como último carácter de cada línea se imprime el estatus de conciliación de la transacción, el cual varía entre 4 (Conciliado), 5 (No Conciliado) y 6 (No Conciliado, no se encontraban en el archivo). En caso que se imprima un * se debe a que la transacción en el archivo proviene con estatus de notificación fallido. Caso I: Transacción Conciliada Orden 05122013082929;0100146467;04122013082929617535006;501 estatus exitoso tanto en el archivo como en la tabla. con Caso II: Transacción No Conciliada Ordenes 11122013102929;0100147128;10122013102929619995044;501 y 15032014153246;1400019834;03219350315147520001000;501 con estatus exitoso en el archivo y fallido en la tabla. Al ejecutar la recarga se obtuvo un error por ello se marcan como No Conciliadas con estatus de notificación 5; si la recarga es exitosa se marcarían Conciliadas. Caso III: Transacción en Archivo y no en Base de Datos Ordenes 15032014153246;1400019834;03219350315147520001002;501 y 15032014153246;1400019834;03219350315147520001003;501 como no se encuentran en la tabla de la base de datos el sistema las crea y ejecuta la recarga. Una de las recargas falló por lo cual la transacción se marca como No Conciliada con estatus de notificación 5; y la otra recarga fue exitosa por ello la transacción se marcó como Conciliada. Caso IV: Transacción en la Base de Datos y no en el Archivo Orden 05122013082929;0100146465;04122013082929617535002;501, las ordenes que no se concilian por no estar en el archivo se marcan no conciliadas pero con estatus de notificación 6. Caso V: Transacción en Archivo con Estatus de Notificación Fallido Orden 11122013102929;0100147142;10122013102929619992659;501 modifica su estatus, sin embargo su estatus de notificación queda con el valor *. no se Caso VI: Transacción para Anulación Ordenes 26112013160223;0100146155;000000006;501 y 09122013102929;0100146014;09122013102929619995005;501 con estatus por anular en el archivo y fallido en la tabla. Al ejecutar la anulación se obtuvo un error por ello se marcan como No Conciliadas con estatus de notificación 5; si la anulación es exitosa se marcarían Conciliadas. APROBADA EN BETA