Sistema web de pagos y cooperaciones open source con PHP

Publicado por parzibyte en

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.

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í:

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.

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.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: