domingo 23 de octubre de 2011

PITUSMart Software Punto de Venta en PHP


Hace como un mes uno de los socios de la empresa me pidió asesoría para implementar una solución de punto de venta en el super que acababa de abrir, así que busqué en mercadolibre y había paquetes con impresora de tickets, lector de código de barras, cajón de dinero y software, todo en orden, salvo que la impresora requería de un puerto paralelo con un conector DB25 en uno de los extremos y centronics en otro, la PC solo tenia puertos USB, así que tuve que instalar una tarjeta PCI de puerto paralelo y listo, imprimía sin problemas. Todo parecía estar en orden hasta que (maldita la hora) instalé el software que venia en el paquete, se trata del MyBusiness POS 2011, al que cariñosamente Tania y yo llamamos "My Business Sucks".




Se trata de un software que pretende ser universal para tiendas, restaurantes, bodegas y virtualmente cualquier negocio, lo cual obviamente resulta en una aberración, pero dejando eso de lado, me dio problemas en todo momento, para registrarlo, para hacer el inventario inicial, para cambiar precios  y es que inmediatamente después de instalarlo notas que es ridiculamente complejo, nada intuitivo y está repleto de errores pero no me creas a mi, revisa los foros de esta "solución", muchisima gente tiene problemas, muchísima.

esto es un software intuitivo y amigable ! jajaja

Los puntos en contra son:
  • Al momento de vender un artìculo le aumenta el iva al precio que pusiste, osea que debes calcular el precio del artículo sin iva y registrarlo así para que el programa muestre el iva adecuadamente, osea aumenta el iva, no lo desglosa, que estupidez.
  • Si vendes producto a granel como en el caso del queso oaxaca especificas el precio por gramo de tal suerte que si un kilo cuesta 94 pesos, entonces el gramo se vende a 0.094 pesos, pero My Business Sucks no admite este precio y te lo redondeaba a 0.1, y eso ya es otro precio por kilo, incorrecto obviamente y además en el ticket le aumenta el iva jaja
  • Lo reinstale varias veces y para no perder la información que ya habían metido, intenté exportar el inventario, pues resulta que tan mierda está el software que lo exportas con su herramienta, luego lo quieres importar con su misma herramienta y las columnas no coinciden, osea no acepta la base de datos que el mismo programa genera, plop !
  • Al intentar crear el inventario inicial me dio muchísimos errores, tantos que volví a instalar el software, está vez después de manipular la base de datos a mano para que el estúpido programa pudiera leerla, ya pude meter el inventario inicial, y cuando lo hice, todos los iconos de los botones se habían perdido, todas las opciones y todos los botones tenían el mismo icono del caballito, no se solucionó con reiniciar.
En este punto decidí probar con Codeka, un software libre que prometia ser la solución, pero no, resulta que tan pronto lo instale me sacó muchas advertencias y errores, porque los desarrolladores utilizaron etiquetas abreviadas para el código PHP y solo funciona en APPSERV, no en XAMPP, en fin, instale el APPSERV y funcionó, pero es igualmente complejo, antes de registrar un producto hay que definir familias, tipos de empaques e impuestos, incluso una localidad obligatoria, que por supuesto es con ciudades de España, una tontería realmente, incluso al especificar un código para los artículos (el código de barras) Codeka se lo pasa por los cojones y te genera su propio código de barras que es el que reconoce, así que de nada sirve que todos los artículos ya tengan su código, los desarrolladores de Codeka piensan que es mejor usar los que genera el sistema aunque eso implique que tengas que ponérselo a cada uno de los artículos... en fin en resumen lejos de ser la solución fue un tremendo dolor de cabeza, por supuesto que podría haber modificado el código, pero si iba a escribir código mejor hacerlo bien desde el principio y entonces fastidiado decidí que tenia que hacer el software yo mismo.

Fue un reto muy interesante pues generalmente asociamos los punto de venta con hardware y software de código nativo, entonces el reto era hacer una aplicación web que fuera sencilla, intuitiva y que pudiera cumplir cabalmente con todo lo que un punto de venta exige, así que gracias a Google Chrome, XAMPP, PHP, MySQL y jQuery lo he logrado,  una aplicación web que parece de escritorio y que le ha encantado a la persona que me lo pidió, te das cuenta que lo haz hecho bien cuando el cliente sonrie satisfecho.

Este es el lector de códigos de barras, la marca y modelo realmente no importa
ya que son una belleza y funcionan como si fuera un teclado, no importa si son USB
o PS2, no requieren drivers y puedes utilizar el evento onkeyup de las cajas de texto

Esta es la impresora de tickets, una chulada pues son libres de mantenimiento
ya que son térmicas y no usan toner, al calentar el papel este se pone negro
así que no hay tinta ni esponjitas, además el papel es baratisimo, algo así como
8 pesos el rollo que alcanza para unos 300 tickets como el que muestro adelante.
Configurarla es muy sencillo, en el panel de control se especifica si queremos que corte
el ticket, parcialmente o que no lo corte, incluso si se va a usar cajón de dinero

El cajón de dinero, su funcionamiento es muy sencillo, se conecta a la impresora
y listo, cuando imprime se abre el cajón, esto se puede configurar desde
el panel de control, ya sea para ignorarlo cuando no se tiene, o si queremos
que se abra antes o después de imprimir el ticket.  El software punto de venta
ha quedado desmitificado, la aplicación no se comunica directamente con los dispositivos
el lector es como un teclado cualquiera, la impresora es como una impresora cualquiera y el
funcionamiento del cajón va de la mano con el funcionamiento de la impresora
una excelente noticia para los programadores Web

A continuación unas capturas de pantalla del software y al final un vídeo que me ayudó a hacer una amiga del trabajo, se trata de una versión beta, era funcional pero no definitiva ya que tenia algunos aspectos que mejorar en cuanto a la usabilidad.

Inicio de Sesión
pantalla de inicio de sesión, los datos se pueden cambiar después

Panel Principal
Pantalla inicial con solo 6 opciones, sumamente intuitivas
totalmente enfocado en supermercados y tiendas de autoservicio

Opción 1: Configuración del Sistema
Aqui se puede cambiar el tamaño del papel y otros datos del ticket como la 
razón social, RFC, domicilio, moneda, usuario, clave y por supuesto esto se ve
 reflejado en el ticket de forma inmediata, en el MyBusiness sucks debías reiniciar pff


Opción 2: Panel de Artículos
Este panel cuenta con 3 secciones, la primera es para registrar nuevos artículos y
en caso de ya estar registrado el sistema nos avisa para evitar que haya registros duplicados
la segunda sección es para eliminar artículos, se pone la clave del producto y listo
la tercera sección es para actualizar los datos de un artículo, al escribir la clave se cargan
los datos que se tengan disponibles de ese artículo y con un clic quedan guardados los nuevos


Opción 3: Panel Punto de Venta
después de leer el código de barras basta con apretar ta tecla [tabulador] 
para que se agregue al ticket y se actualice la sumatoria, al mismo tiempo se registra
la salida de almacén reduciendo la existencia de ese artículo
si queremos quitar un artículo del ticket se hace click en el tachesito y se cancela
también esa salida de almacén, de esta forma nuestro inventario siempre está actualizado
cabe mencionar que una vez impreso el ticket no se pueden eliminar
artículos ni cancelar ventas, esto es para evitar abusos por parte del cajero
finalmente la cereza del pastel es que calcula el cambio en función del dinero recibido


Creación del Ticket
Al hacer clic en el botón de crear ticket, se nos presenta el ticket en PDF
y lo bonito es que realmente toma en cuenta el tamaño del papel, incluso
redimensiona el texto y la imagen a las dimensiones del papel


Impresión del Ticket
Aquí un ticket impreso de la versión beta del sistema


Opción 4: Panel de Almacén
En esta pantalla también tenemos 3 secciones, la primera es para actualizar la existencia
esto  para los casos en los que se incrementa o se disminuye la existencia sin que se hagan
compras o ventas, por ejemplo en caso de robo o cuando los familiares toman producto
La segunda sección es para realizar entradas de almacén, esto nos permite llevar un registro
de las compras y además podemos registrar los pagos de la luz, teléfono, gas, y otros como si fueran
artículos para llevar un control unificado de los gastos, compras y entradas de almacén
Cuando se registra una entrada, se actualiza el listado de la tercera sección, ahí se detalla las
entradas del día, pero podemos revisar otros días al cambiar la fecha de la caja de texto, también si nos
hemos equivocado podemos cancelar esa entrada al hacer clic en el tachesito, con lo cual también
se actualiza la existencia del almacén para ese artículo en particular


Opción 5: Panel de Reportes
Aquí la cosa es sencilla, el primer botón lleva al reporte de artículos, precios y existencias
el segundo reporte es de compras, gastos y entradas de almacén, especificamos la fecha y hacemos clic
el tercer reporte es de salidas de almacén y ventas, funciona de forma similar
La segunda sección son los mismos reportes pero considerando 2 fechas, así podemos ver las ventas
de la semana pasada, de los ultimos 3 días, el mes pasado, el ultimo cuatrimestre, el año pasado etc.


Reporte de Artículos, Precios y Existencias
Este es el reporte de artículos, aquí se detalla el código de barras, la descripción
la existencia, el costo y el precio de venta, la ganancia y si tenemos varios proveedores
para ese artículo, el sistema nos dice cual es el mejor proveedor y la ganancia


Reporte de Ventas
este reporte es el mismo para un día o para el rango de fechas que se haya
especificado, abajo se muestra por separado el monto por linea o familia de productos
en este caso solo 4 porque así lo especificó el cliente.

Opción 6: Respaldar el Sistema
aquí solo hay que indicar la unidad en la que se encuentra una memoria usb y al hacer clic
el sistema copia la carpeta htdocs y la carpeta de la base de datos dentro de MySQL
así en caso de desastre informático, se puede restaurar el sistema en cualquier
otra computadora conservando la configuración,  los artículos registrados, precios y existencias
en la imagen vemos que se ha indicado una ruta inexistente pero cuando se elije una ruta
valida y se ha terminado de copiar el respaldo, nos dice que ya se puede retirar la memoria usb

Carpetas de Respaldo en la Memoria USB
Este es el resultado en la memoria usb, vemos 2 carpetas que indican la
fecha del respaldo y corresponden a los archivos del sistema y la base de datos

PITUSMart en Acción

Este vídeo lo grabé en el trabajo con ayuda de una amiga llamada Samantha
se trata de una versión anterior, ya que requiere muchos clics para imprimir el ticket
pues anteriormente lo generaba en html y lo imprimía con el navegador, pero ahora
lo genero en PDF y se imprime con menos clics, también para agregar el artículo al
ticket basta con apretar tabulador y en la versión del vídeo era necesario hacer clic en el 
botón que dice "agregar al ticket", por lo que ahora es mucho más rápido