Nueva funcionalidad para guardar movimientos hechos con tarjetas de crédito a partir de un fichero con formato FB 500.

1 Introducción

El objetivo de nuestra nueva funcionalidad es explotar estos ficheros para guardar en nuestro sistema las operaciones que contienen, empezando por la cabecera de los movimientos (que se guarda en texttpvh), después con el detalles de las operaciones (cada línea en texttpvl) y por último registrando los totales (que también se guardan en texttpvh).

2 Menú

El menú para acceder a estas opciones se encuentra en el siguiente directorio: Finanzas > Tesorería > Extractos bancarios > Movimientos tarjetas de crédito

Como se observa en la imagen, se dispone de 5 accesos en este directorio, el primero nos sirve para cargar los ficheros FB500, después existen enlaces al almacén de archivos guardados y a los extractos de movimientos (cabecera y líneas), y por último existe el enlace para acceder al informe.

3 Guardar ficheros FB 500

Para guardar archivos en Axional se hará uso del objeto texttpvl_file.

El objeto contiene las siguientes columnas:

Columna Tipo
file_seqno Int
file_format Char(5)
file_name Varchar(80)
file_data Blob
file_dcrc Char(8)
file_type Varchar(40)
file_size Int
file_rows Int
file_estado Smallint
user_created Char(20)
date_created Date

Todos los campos son requeridos, aunque algunos se generan automáticamente. Para guardar un fichero se tiene que seleccionar el fichero a guardar (file_data), dar también el formato (file_format), indicar un nombre (file_name) y por último indicar también el estado (file_estado). Los demás datos se generan a partir de los anteriores.

En nuestro caso, se tiene que dar el valor 'CAIXA' a file_format para los archivos que se guarden en formato FB 500. Así cuando se quiera procesarlos se localizarán a partir de esa condición.

Una vez guardado el fichero se puede procesar desde el objeto texttpvl_file_load. De hecho, una vez procesado el fichero se nos mostrará la cabecera del objeto generado en el formulario de nuestro fichero. Se puede ver un ejemplo a continuación.

4 Cargar ficheros FB 500

Una vez guardado el fichero en formato FB 500 que queremos procesar, vamos a cargar este archivo para crear sus correspondientes cabeceras e líneas. Para ello haremos uso del proceso texttpvl_file_load.

Para procesar el fichero es tan fácil como indicar el número de file_seqno del fichero que queramos procesar, y si todo va bien se nos mostrará el mensaje 'INCORPORACIÓN REALIZADA'.

4.1 Posibles excepciones

Hay algunos casos controlados en el código en los que se generará una excepción y no se va a ejecutar el proceso, son los siguientes:

  • No existe el archivo: Si al hacer la consulta no se encuentra ningún archivo con el file_seqno indicado se genera una excepción y se cancela el proceso.
  • El archivo ya ha sido procesado: Si encontramos el archivo pero ese ha sido procesado anteriormente (file_estado == 1) también se genera una excepción y se cancela el proceso.

5 Registro de cabecera y totales

La cabecera que se obtiene del fichero, juntamente con los totales, se guardarán en el objeto texttpvh.

La tabla de equivalencias entre los datos del fichero y los del objeto es la siguiente:

Cabecera/Totales Formato FB 500 Formato texttpvh
Cabecera Código del comercio store
Cabecera Fecha Inicio Consulta strdate
Cabecera Fecha Fin Consulta enddate
Cabecera Código Cuenta Cliente custacc
Cabecera Reservado nothead
Totales Total Importe Operaciones totamoun
Totales Total Descuento Aplicado totdisc
Totales Total Importe Abono totcred

6 Detalle de operaciones

El detalle de operaciones que se obtiene del fichero se guardará en el objeto texttpvl.

La tabla de equivalencias entre los datos del fichero y los del objeto es la siguiente:

Formato FB 500 Formato texttpvl
Tipo de Captura srctype
Sesión session
Fecha Captura srcdate
Terminal terminal
Fecha Operación opedate
Hora Operación opehour
Tipo Operación opetype
Num Autorización numaut
Pan pan
Importe Operación amount
Descuento Aplicado discount
Tipo Descuento disctype
Importe Descuento Aplicado discamo
Operación abonada por la oficina officeop
Importe del Abono credamo
Código Moneda de abono al comercio currency
Referencia Operación operef
Crédito/Débito position
Pendiente de Liquidar pendset
Servicuenta Caixarapida caixafst
Reservado coment
Red de liquidación network
Ind. Tipo de aplicación pacto contratado typecom
Cod. Ruta del coste de la Entidad Emisora entcosr
Coste de la Entidad Emisora entcost
Cod. Ruta del Coste de la Marca de Tarjeta brdcosr
Valor del Coste de la Marca de Tarjeta brdcost
Valor del pacto contratado valuecon
Reservado notline

7 Informe de extractos

ESTE INFORME AÚN ESTÁ EN CONSTRUCCIÓN

Para obtener una visión global de todos los extractos de tarjetas procesados y guardados podemos generar el informe textpv_report. En él se muestran todos los movimientos de tarjetas de crédito/débito obtenidos.

Se pueden indicar algunos valores para filtrar el informe tal como queramos, estas son las variables por las que se puede filtrar:

  • Código de comercio
  • Código de cuenta
  • Fecha Inicial Consulta
  • Fecha Final Consulta

Respecto a los códigos de comercio y cuenta podemos añadir los que queramos, o bien poner un asterisco para no filtrar por este campo. Las fechas nos servirán para determinar si el inicio y/o el fin de la consulta entran en nuestro filtro.

8 Ejemplo con fichero FB 500

A continuación se explica un ejemplo de procesamiento de un fichero FB 500, y se muestran los objetos creados a partir de este.

8.1 Fichero FB 500

Para la realización de este ejemplo se usará un fichero con los datos que se muestran a continuación:

Copy
10LACAIXAES0101201701072018ES00111112222333344445555*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
201SES240418TERMINAL45615021815000101234561234567890123456789012+1003450000000%+000000000S+100345000978Ref*pedido**CNN*******************************************************************************************************************************************************************************006P *****+000000000*****+000000000+0000000********************************************************************************************************************************************************************
201SES250418TERMINAL78915021815000101234561234567890123456789012+1003450000000%+000000000S+100345000978Ref*pedido**CNN*******************************************************************************************************************************************************************************006P *****+000000000*****+000000000+0000000********************************************************************************************************************************************************************
90LACAIXAES0101201801072018+100345000+000000000+100345000***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

Se observa que este archivo contiene una cabecera, dos líneas y por último el registro de totales.

8.2 Resultado

Después de guardar este archivo y procesarlo obtendremos los siguientes objetos:

8.2.1 Cabecera - texttpvh

Como se observa a continuación, esta es la cabecera del objeto que se ha generado automáticamente a partir del fichero con formato FB 500:

8.2.2 Detalle - texttpvl

Por último, a continuación se muestra el detalle de las líneas contenidas en la cabecera anterior, también generadas automáticamente a partir del fichero FB 500: