Hoy traigo al blog otro punto de venta gratuito y open source, pero este es especial pues fue el primer programa que hice y que fue usado por varias personas.
El punto de venta que presento es un POS web, totalmente open source y gratuito, además de simple y bonito.
Está hecho con PHP y JavaScript con jQuery (era el año 2016), usa MySQL/MariaDB como motor de base de datos y Bootstrap para los estilos, con varios temas.
Como ya dije anteriormente, este fue mi primer punto de venta oficial que comencé como por el 2015 (apenas iniciaba la universidad, qué tiempos) y luego terminé en el 2016.
Aunque parezca antiguo sigue funcionando como un encanto incluso con PHP 8.
En este post te mostraré los módulos del sistema y cómo puedes descargarlo e instalarlo en tu computadora o en tu hosting compartido.
El programa es totalmente responsivo y permite la impresión de tickets de manera local.
Como cualquier PDV que se respeta, éste tiene el manejo del inventario en donde se registran los productos.
Podemos registrar el precio de compra, precio de venta, código de barras, nombre, existencia actual, cantidad mínima y proveedor o familia.
También podemos dar de baja al producto, eliminarlo, editarlo y agregar piezas.
Además del dinero ingresado por las ventas, podemos registrar ingresos y gastos que modifican a la caja del día.
Tenemos el módulo de caja en donde agregamos ingresos, y los gastos en donde registramos salidas de dinero:
En este sistema también podemos registrar compras o alta de inventarios cuando un proveedor viene a surtir. Es parecido al módulo de ventas pero en lugar de restar existencia la aumenta:
Este sistema genera varios reportes. Entre ellos:
Los reportes se pueden filtrar por fecha. Aquí vemos uno de ventas:
Podemos ver que se puede filtrar por fecha desde un inicio hasta un final, y también se puede filtrar por familia.
El sistema necesita autenticación para entrar. Por defecto ya existe el usuario parzibyte
con la contraseña parzibyte
.
También podemos agregar más usuarios, ya sean usuarios normales o usuarios administradores.
Finalmente veamos los ajustes. Aquí podemos configurar la impresora térmica, cambiar el tema (una de mis partes favoritas) y configurar los datos de la empresa.
Esta captura fue tomada con las dimensiones de un iPhone 12 Pro (usando las herramientas de desarrollo de Chrome; no crean que yo poseo ese dispositivo).
Aquí se puede apreciar también que el sistema es responsivo.
Vamos a lo interesante. Este programa es de código abierto, y puedes descargarlo aquí (sigue las instrucciones que aparecen en ese enlace).
Vas a necesitar con PHP, MySQL y Apache. Si estás en Windows de manera local puedes usar XAMPP.
Una vez que lo hayas descargado colócalo en la carpeta pública, que si es XAMPP será C:\xampp\htdocs\
.
Ahora ve a phpmyadmin o abre el gestor de MySQL de la manera que tú sepas, y crea una base de datos llamada okventa_by_parzibyte
.
Una vez que hayas creado la base de datos, importa los datos usando el archivo esquema.sql
. Ese archivo lo encuentras junto con el código fuente.
El esquema ya lleva un usuario por defecto que es parzibyte
con la contraseña parzibyte
. Y eso es todo, así puedes instalar el sistema de ventas gratuito.
Este sistema soporta las impresoras térmicas. Solo hay que instalar y compartir la impresora térmica, descargar la herramienta de impresión y luego elegir la impresora en los ajustes del punto de venta. Voy a dejar los puntos a continuación.
También debes marcar el checkbox de impresión de tickets al momento de vender, ya sea manualmente o modificando el código fuente para que tenga el atributo checked
.
Si ya has instalado tu impresora térmica previamente, debes desinstalarla. No necesitas los controladores para este caso.
Luego debes ir al panel de control, seleccionar el apartado de impresoras. Una vez ahí, elegir Agregar una impresora, esperar a que aparezca “La impresora deseada no está en la lista“, elegir Agregar una impresora local o de red con configuración manual.
En la siguiente ventana elegir el puerto USB00X donde la X es un número, elegir Generic y Generic Text Only en el controlador, dar un nombre sin espacios ni tildes para la impresora y compartirla (si no te da la opción de compartirla, termina la instalación y luego compártela en las propiedades).
Imprime una página de prueba y si la misma es correcta, ya puedes dar por finalizada esta sección. De lo contrario desinstala la impresora y vuelve a instalarla cambiando el puerto. También puedes cambiar el puerto desde las propiedades.
Hay un tutorial extenso y con imágenes en: https://parzibyte.me/blog/2017/12/11/instalar-impresora-termica-generica/
Es obligatorio que la impresora esté instalada como genérica, no tenga espacios o tildes en su nombre y que esté compartida.
Si usas Linux o Raspberry Pi: https://parzibyte.me/blog/2021/07/22/instalar-impresora-termica-linux-imprimir/
Tu impresora ya está lista para recibir comandos ESC POS. Ahora falta descargar la herramienta para impresoras térmicas que sirve como puente entre cualquier lenguaje de programación y tu impresora de calor.
Descarga:
plugin_v3.2.1.zip
o plugin_v3.2.1_si.zip
, extrae el zip descargado y ejecuta plugin_v3.2.1_prod_64.exe
o plugin_v3.2.1_si_prod_32.exe
. Vas a encontrar el zip en los Assets: https://github.com/parzibyte/plugin-impresora-termica-v3/releases/tag/3.2.1. Si viene con una DLL, deja dicha DLL en la misma ubicación del pluginNota: ninguna de las herramientas contiene malware, aunque los antivirus o sistemas lo detecten como tal. Es tu responsabilidad obligar al sistema a confiar en los programas y de ser necesario agregarlos a las excepciones.
También he notado que en ocasiones el navegador bloquea la descarga; de nuevo, es tu responsabilidad forzarla.
Una vez descargado, ejecuta plugin_v3.2.1_prod_64.exe
o plugin_v3.2.1_si_prod_32.exe
.
Ahora, dentro del sistema de ventas, ve a Ajustes y elige Generales. La lista de Impresora para tickets debería contener todas las impresoras en las que puedes imprimir.
Si la lista de impresoras no carga es porque no estás ejecutando el plugin. Si no aparece ninguna impresora es porque no la has compartido.
Selecciona la impresora de la lista y después, cuando hagas una venta, marca la casilla para imprimir el recibo. Dicha impresora debe aparecer en los ajustes en el apartado donde dice Nombre de la impresora actualmente seleccionada.
Te invito y casi obligo a que repliques, modifiques, compartas, vendas y distribuyas este sistema. Haz lo que quieras con él.
Fue uno de mis primeros sistemas y nada me haría más feliz que ayudar a personas con uno de los primeros puntos de venta que he creado.
Antes de crear este sistema le temía a las impresoras térmicas pues no había mucha información al respecto, pero en este sistema pude implementarlo gracias a la librería de mike42.
Años después desarrollé un plugin y luego su versión 3 para imprimir en impresoras térmicas, pero si no hubiera sido por este sistema tal vez nunca lo habría hecho.
Por aquí te dejo más sistemas que he programado.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
excelente trabajo no me registra ningún otro usuario que puede estar pasando?
Gracias por sus comentarios.
Probablemente no ha adecuado el entorno correctamente, pues yo he probado y el código funciona perfectamente. Como el programa es open source usted puede revisar el código y revisar si hay algún problema en su entorno, o si lo prefiere, puede contratarme para revisar su problema en https://parzibyte.me/#contacto
muy agradecido por este POS podria decirme como hacerlo funcionar en linux ubuntu o mint. por favor
Hola. Gracias por sus comentarios. Claro que sí, se instala igual que cualquier otro programa que necesita Apache, PHP y MySQL
Buenos días, estoy utilizando su código para mi proyecto de base de datos pero no sé como realizar el diagrama relacional, ya que en la base de datos no estan relacionadas las entidades... me podria ayudar con eso, por favor.
Por supuesto, estaré encantado de ayudarle más a fondo. Ofrezco servicios de consultoría personalizados para resolver problemas específicos. Si está interesado, envíeme un mensaje a https://parzibyte.me/#contacto y podemos conversar sobre cómo puedo ayudarle.
super excelente.
Una pregunta: y como se puede hacer para vender por internet con este mismo sistema.
Ósea que se pueda sincronizar las mercancías en e stock con lo de la web al mismo tiempo.
Esto se puede?. gracias, un abrazo.
Hola. Claro que es posible, solo es cuestión de modificar el sistema para ajustarlo a los requerimientos. Si necesita ayuda estaré encantado de ayudarle en https://parzibyte.me/#contacto
Como podria poner el campo de cliente, en la venta, gracias.
Por supuesto, estaré encantado de ayudarle más a fondo. Ofrezco servicios de consultoría personalizados para resolver problemas específicos. Si está interesado, envíeme un mensaje a https://parzibyte.me/#contacto y podemos conversar sobre cómo puedo ayudarle.
Hola, me gusto tu proyecto, soy profesor, me gustaria implementarlo en clase con mis estudiantes de sistemas e informatica, podrias guiarme sobre como implementar tu sistema en un MVC?, osea dividir el proyecto en las tres capas sin alterar su funcionamiento.
Hola. Gracias por sus comentarios.
Claro que sí, para modificaciones y consultas le atiendo en https://parzibyte.me/#contacto
Buen dia quisiera saber si me pueden guiar para cambiar el simbolo monetario
Buen día. Claro que sí, envíeme un mensaje en https://parzibyte.me/#contacto
Muchas gracias por compartir el código fuente, Disculpa que te pregunte : ¿ Cuánto tiempo usaste para desarrollas el sistema ? Saludos desde Mexico
Hola. La verdad no lo recuerdo, ya tiene bastante tiempo que lo hice (fue uno de los primeros "serios" que hice) pero me imagino que aproximadamente 4 meses. Como le decía, fue mucho tiempo porque era principiante
gran proyecto amigo, he estado buscando un proyecto como el tuyo, OSPOS etc.., mi pregunta es si con una asesoría tuya pagada claro; podría instalar localmente tu software pero encriptado para que no se una persona maliciosa pueda replicarlo quedo atento
Siguiendo el tutorial para imprimir el ticket este se me queda colgado cargando y no me imprime slds
Hola. Gracias por sus comentarios. Si tiene alguna consulta o duda, solicitud de creación de un programa, solicitud de vídeo o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!