Hoy vengo a presentar un sistema gratuito y open source para el control de pagos y cooperaciones creado con PHP, MySQL, Twig, Bootstrap y Vue

Este sistema de pagos está creado con PHP para el lenguaje del servidor, utiliza Twig para renderizar las plantillas, mismas que tienen un diseño usando Bootstrap. La persistencia de datos es gracias a MySQL.

Del lado del cliente se utiliza Vue para consumir la API y traer los datos.

Entre sus características encontramos:

  • Software para el control de pagos de personas
  • Registro de personas
  • Posibilidad de registrar usuarios para iniciar sesión
  • Impresión de comprobantes de pago en impresora térmica
  • Reporte de totales abonados por personas
  • Responsivo y accesible desde teléfono, tableta o computadora

Con algunas modificaciones, este software podría controlar el sistema de abonos de ventas de productos, cooperaciones de personas, pagos, etcétera.

Puede servir para estudiar un proyecto de PHP o para usarlo directamente en producción (de hecho yo lo estoy usando)

A continuación voy a explicar cómo funciona, además de mostrar el código fuente y otras cosas más.

Código fuente, demostración y descargas

El código fuente está en GitHub, eres libre de clonarlo y modificarlo. Una demostración está en este enlace.

El usuario y la contraseña para probarlo son:

test@gmail.com

123

Si quieres puedes descargarlo; comienza instalando XAMPP en Windows o LAMP en Linux y más tarde instala las dependencias instalando Composer en Windows o Linux y ejecutando:

composer install

En caso de que no uses composer, existe un release que ya tiene todas las dependencias. Simplemente debes descargarlo y extraerlo en la carpeta pública.

Relacionado:  Capturar pantalla completa en Google Chrome

Personas y pagos

Básicamente el software registra personas y pagos. Una persona puede tener múltiples pagos.

Registro de pagos de personas

El pago se puede editar y eliminar; registra la fecha, el monto y la persona.

Además, se genera un hash único que en teoría sirve para que los tickets no se puedan falsificar, pues aunque alguien pueda imprimir un ticket, necesitaría calcular un hash, ponerlo en nuestro servidor y ponerlo en el ticket.

Comprobantes de pagos

Los comprobantes son una forma de comprobar que las personas han hecho los pagos.

Un comprobante lleva la fecha, el nombre de la persona, el hash que mencioné anteriormente y algunos totales.

Lleva el total de lo que han cooperado todos, y el total que ha dado la persona:

Comprobante de pago

Este comprobante puede ser impreso las veces que sea necesario.

Usuarios

El sistema tiene usuarios con cosas básicas. Permite el registro de los mismos:

Y el cambio de contraseña:

Las contraseñas son hasheadas con bcrypt.

El index y las rutas

Todo se encuentra en el archivo index.php; que define las rutas de las vistas y las rutas de la API.

He usado Phroute pues es ligero y cumple su función. Dentro del archivo de rutas encontramos un filtro que simplemente verifica que el usuario esté logueado.

El manejador de sesiones es uno propio con MySQL.

Las vistas

Como lo dije, las vistas son archivos de Twig. No tienen mucho que hacer, pues el renderizado de los datos se hace con Vue.

La impresión del ticket

Utilizo la misma librería que presenté hace algún tiempo. El controlador del ticket se ve así:

Relacionado:  Sistema de ventas con Laravel, Bootstrap y MySQL - Open source

Para deshabilitar la impresora simplemente hay que evitar poner la línea que indica su nombre.

El archivo env y htaccess

Las credenciales y algunos ajustes están dentro del archivo env.php; solo hay que tomar de ejemplo el env.ejemplo.php

En este archivo también se puede deshabilitar la creación, eliminación y edición de usuarios; útil por ejemplo en ambientes de prueba o demostración en donde los usuarios no deben modificar, valga la redundancia, a los usuarios.

Utilizo el archivo .htaccess para rescribir las URLs y hacer que las mismas se vean más limpias.

Instalación

Si tienes dudas de cómo instalarlo, por favor mira la guía de instalación.

Conclusión

Como lo dije, a partir de este sistema se pueden crear otros; o tomarlo de ejemplo para crear uno mejor.

La plantilla ya está creada y solo hay que añadir más código; se utiliza un paradigma similar a MVC y es como tener una caja de herramientas en lugar de un framework complejo.

Si te gusta este sistema, probablemente también te guste uno de cotizaciones.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 704 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

4 Comments

German · febrero 28, 2020 a las 12:40 pm

Hola buen dia modifique el archivo env.php y me da el mismo error Error: Ruta [ ] no ssssncontrada no importa que ingrese. Desde ya gracias por el esfuerzo y compartir.

    parzibyte · febrero 29, 2020 a las 5:30 pm

    Hola, buen día. Por favor verifique la BASE_URL y el OFFSET. Si quiere puede enviarme su archivo env por privado para que lo revise
    Saludos

jose · enero 18, 2020 a las 10:05 pm

Hola amigo buenas tardes, felicitaciones por tu sitio y ejemplos que tienes en tu blog, estuve revisando y se ve interesante yo baje los ejemplos pero imposible ponerlo a funcionar yo soy nuevo en este mundo de php y todo eso, el caso es que yo solo tengo xampp y mysql no se usar composer nada de eso, cuando lo ejecuto en mi localhost me sale este mensaje.

Error: Ruta [ ] no ssssncontrada

No se cual es el motivo yo solo modifique según lo que tu dices en el ejemplo el archivo
env.php

Gracias y nuevamente mis felicitaciones

    parzibyte · enero 19, 2020 a las 4:19 pm

    Hola, buen día. Debe modificar en el archivo env.php basándose en el ejemplo provisto. Los comentarios indican qué hacer.
    En este caso supongo que no ha configurado la ruta local en donde está el programa, o que no ha calculado el offset de las rutas.
    Saludos 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: