ImaCash es un software que actúa entre el cajón de efectivo y el software de punto de venta, de forma que, consultamos los datos en el origen de las ventas, las analizamos, mostramos su venta para efectuar su pago y almacenamos su resultado.

Hay que hacer hincapié que ImaCash no solo es una solución de integración entre las diferentes máquinas de control de efectivo y el control de ventas del establecimiento, ImaCash pretende mediante diversos mecanismos, detener el fraude en los establecimientos.

ImaCash puede integrarse por diferentes métodos. Cada uno de ellos es completamente válido para una integración pura, pero hay que tener presente que, dependiendo del método usado, perderemos robustez, siendo la lectura de la base de datos la mejor de todas.

Nuestro software recoge las ventas realizadas cada 3 segundos (configurable), comparando las diferencias y recogiendo solamente las ventas que no se han recogido anteriormente.

Disponemos de varios métodos para realizar las integraciones:

  • Lectura de la base de datos
  • Escritura en nuestra base de datos
  • Ficheros
  • Socket TCP/IP

Lectura de la base de datos

El cliente deberá crear un usuario de la base de datos del POS que solo tenga permiso de lectura y que nos enseñe cuales son las tablas de ventas, vendedores, mostradores y empresas. Con ese usuario, nosotros realizaremos la integración. También damos la opción de que el cliente cree unas vistas de la base de datos del POS con las tablas citadas anteriormente. El desarrollador del POS nos debe especificar qué tipo de motor de base de datos se está utilizando (MySQL, SQLServer, Access…), así como el protocolo de conexión (TCP/IP, ODBC…) y cualquier parámetro necesario fuera de lo standard para su conexión.

Los datos que necesitamos leer de la base de datos son:

  • Número de ticket
  • Fecha y hora
  • Total
  • Usuario
  • Mostrador
  • Efectivo o tarjeta
  • Empresa o actividad (no necesariamente estricto)

Es el método que más recomendamos, al cedernos la lectura de la base de datos, podemos garantizar el funcionamiento completo de ImaCash, haciendo una integración rápida, sencilla y segura.

Escritura en nuestra base de datos

En nuestro motor de base de datos, el POS puede escribir o hacer copia de todas las transacciones de venta del POS. Esta opción es válida si el desarrollador no quiere facilitar datos de su conexión o el motor de base de datos que utiliza no es standard y prefiere escribir estos datos en nuestro motor SGBD.

En este caso puede configurar nuestra base de datos para su acceso total y crear una base de datos en nuestro MySQL parecido a este, aunque también puede utilizar SQLServer o Access.

TABLA DE VENTAS

  • Id varchar (30) PK [code]
  • Fecha timestamp – con precisión hasta segundos [datetime_totalized]
  • Empresa integer (11) [fk_pos]
  • Vendedor integer (11) [fk_cashier]
  • Mostrador integer (11) [fk_company]
  • Importe integer (11) – [amount] lo que se cobra en efectivo (preferiblemente en céntimos)
  • Tipo integer (1) – [sale_type] 0 si es tarjeta, 1 si es efectivo

TABLA DE VENDEDORES

  • Id integer (11) PK [id_cashier]
  • Nombre varchar (250) [cashier]

TABLA DE MOSTRADORES

  • Id integer (11) PK [id_pos]
  • Nombre varchar (250) [pos]

TABLA DE EMPRESAS

  • Id integer (11) PK [id_company]
  • Nombre varchar (250) [company]

Ficheros

El cliente es quien nos escribe a nosotros y nos envía ficheros de cualquier formato (txt, xml, json…) usando opcionalmente el cifrado AES 256.

Para este método, es necesario una carpeta compartida en la red, que tenga permisos completos tanto ImaCash como el POS, en cuanto a creación, modificación y eliminación.

Si los ficheros son txt, en el que habrá una sola línea indicando la operación en cuestión con el siguiente formato (separado por «;»).

(Importación); (NºTPV/CAJA); (Número de Factura/Ticket); (Número/Nombre de Usuario); (Fecha y hora); ((0 si el pago ha sido realizado con tarjeta)/(1 si el pago ha sido realizado con efectivo)).

Según el tipo de transacción que sea, el nombre del fichero cambiará.

Ejemplo:

Venta realizada por Carlos de 1€, en el mostrador MOST2 a las 12:12:25 del 1 de enero de 2017. El número de ticket es 12345 y se ha pagado con efectivo:

– V12345.txt>>1, 00; MOST2; V12345; CARLOS; 2017-01-01 12:12:25; 1

Devolución (o abono) realizada por Javier de -1€, en el mostrador MOST1 a las 15:15:25 del 1 de enero de 2017. El número de ticket es 12346 y se ha pagado con tarjeta:

– V12346.txt>>-1, 00; MOST1; V12346; JAVIER; 2017-01-01 15:15:25; 0

Cuando se inicie ImaCash, leerá los ficheros pendientes y los cargará. Cuando las ventas se hayan pagado, eliminará los ficheros y creará otro con la respuesta de la transacción (si se ha realizado con éxito o no).

Ejemplo:

Transacción realizada con éxito:

– V12345.txt>>OK

Transacción realizada sin éxito:

– V12345.txt>>KO

Socket TCP/IP

ImaCash funcionará como servidor y recibirá los pagos de los diferentes POS que haya en el establecimiento. En caso de que ImaCash esté apagado, la transacción realizada no constará en ningún sitio, y por lo tanto, se perderá.

De todas formas, para realizar este tipo de integración el cliente nos enviará un Socket con una sola línea igual que a la de los ficheros txt.

Es el método que menos recomendamos.

Para enviar una transacción a ImaCash se enviará esta cadena:

NEW TRANSACTION

-DATOS; {ID_TRANSACTION}; {VENDEDOR}; {POS}; {CANTIDAD}; {TIPO}

  • ID_TRANSACTION
    • Es el identificador de la transacción.
  • SALESMAN
    • Es el nombre del vendedor.
  • POS
    • Es el nombre del Punto de Venta (Terminal).
  • AMOUNT
    • Es la cantidad de transacción (enteros).
  • TYPE
    • Es el tipo de transacción.
      • 0 = Tarjeta
      • 1 = Efectivo
  • Examples
    • DATOS; V000001; CARLOS; P1;120;1
      • Transacción V000001 creada por Carlos en TPV P1, importe 1,20€ en efectivo
    • DATOS; V000002; JAVIER; P2;565;0
      • La transacción V000002 creada por Javier en TPV P2, importe 5,65€ en tarjeta

CANCEL: (POS-side)

-DATOS; {ID_TRANSACTION}; {CANCELAR}

RESPUESTA: (ImaCash-side)

-DATOS; {ID_TRANSACTION}; {CÓDIGO}

  • ID_TRANSACTION
    • Es el identificador de la transacción.
  • CODE
    • El código de la respuesta (ver tabla de códigos):
    • Si el código es [000] la transacción está bien, de lo contrario, hay un error.
NOMBRE CÓDIGO DESCRIPCIÓN
ÉXITO000La operación se realizó con éxito.
PAGADO001Se paga la operación.
ERROR_UKNOWN999La operación falló por una razón que no se
especificó anteriormente.
El campo de mensajes de error se puede

comprobar para obtener más información.
ERROR_TICKET_ID101El número de entradas está vacío o
tiene caracteres especiales.
ERROR_TICKET_TYPE104El tipo de ticket es diferente de 0 o 1.
ERROR_TICKET_CASHIER105El nombre del cajero está vacío o
tiene caracteres especiales.
ERROR_TICKET_POS106El nombre del cajero del dispositivo está vacío o
tiene caracteres especiales.
ERROR_TICKET_AMOUNT107La cantidad total está vacía o
no es un número.
ERROR_TICKET_DUPLICATED108Esta operación ya está en la base de datos del
IC en ejecución o finalizada.
ERROR_TICKET_NOT_EXISTS109El Boleto Solicitado no existe.

Scroll al inicio