Podría decirse que al fin estoy en la recta final.
Hace un año que vengo desarrollando un sistema comercial multirol y genérico. Proyecto que llamé 432.
Se trata de una base de datos que permite contener los datos relacionados para al menos tres tipos de comercios, tres rubros mejor dicho, claro que por separado (en diferentes instancias).
El programa de aplicación que se conecta a esta base de datos fue llamado dbCalc, pero en realidad es el nombre de una idea muy inferior que no funcionó. Pues empecé con la idea de hacer algo extremadamente puntual y económico para solucionar el problema de pequeños comercios minoristas que tienen una sola PC para controlar todo. De ahí fueron surgiendo los desafíos y dado que no fue bien recibido tuvo que crecer, la base de datos en cinsecuencia, también. Parece extraño, pero lo primero que desarrollé fue la caja registradora (que no tenía capacidad de imprimir, esa era la idea).
Aún no tengo la ayuda escrita y faltan muchas pruebas por realizar, el programa tiene las bases de mecanismos como el cambio de interfaz desde un archivo de control. Digo las bases porque hasta ahora solo reconoce la "personalidad" y muestra u oculta botones, pero en este 2016 pienso cambiar mucho esto.
El archivo de control puede "decirle" al programa donde está situado, ya que es POS, Gestor, etc. siempre en distintas instancias.
Me encuentro desarrollando el control de tiempo de uso, tengo ideas, pero nada cerrado ni programado, aunque con lo que tengo hasta ahora ya basta.
La interfaz es de aspecto pobre, ya que utiliza los botones más comunes. Eso sí, no hay menús descolgables y en la mayoría de las veces el programa se muestra inteligente al permitir o no una acción cuando esta puede o no llevarse a cabo. Es uno de los lineamientos de mi programa de aplicación: no mostrar mensajes que corten la operación.
¿motor? Firebird.
Solo 25 tablas, hasta ahora diez procedimientos y varias vistas. Nada muy corpulento.
Se inicia sesión con un usuario que tiene diferentes permisos no gestionados por la base de datos. Eso es tarea pendiente. Cada usuario vé partes de la aplicación según su función, pero se supone que en cada instancia siempre entrará el mismo usuario.
Posee el típico mecanismo de creación de instancias de entidad en cascada. Es decir que desde una compra puedo dar de alta un artículo y un detalle del mismo, volver atrás y continuar con la compra de ese elemento nuevo. Son tres transacciones independientes en este caso.
Y la vedette del programa es lo que llamé SmartBox (en inglés, ya que son boxes). Permite interpretar entradas redirigiendo a diversas partes del programa: ingresar, consultar artículos, multiplicar (o premultiplicar como le llamé para diferenciar la operación del fraccionamiento), buscar un artículo, seleccionar un cliente, buscar un cliente, ingresar monto en efectivo. No todo es reconocible por la caja inteligente, ya que hay que pulsar <F5> para alternar consulta e inserción y <F4> para alternar cliente y artículo.
Entre los informes se encuentra uno muy cómodo de ventas en el que se detalla el total, máximo y mínimo (con sus respectivos días), desde la grilla al momento de la selección de un elemento se accede al día de venta donde se puede ver en detalle las ventas y desde la grilla del día se accede a una venta en particular donde se puede ver el detalle de la factura y los artículos vendidos. Todo disparado por eventos encadenados a partir de la primer selección o la selección intermedia o final en las diferentes grillas. Para esto usé un procedimiento almacenado, ya que de otra manera se me complicaban demasiado las sentencias y el acceso a los datos desde la aplicación.
Este pequeño sistema reconoce TPV y Sucursal, pero los tiene cerrados en un principio y solo son para dar en detalle algo que más adelante será necesario.
Luego de esto, tendré que ampliar el proyecto al uso en redes con un servidor central, pero eso solo tomará del sistema algunas ideas, ya que pienso reescribir casi todo el código y recrear la base de datos. Este segundo proyecto comencé creo que en tres oportunidades pero por la forma de abordarlo no llegué a buen puerto, le día la vuelta y algo salió.
Saludos.