Go to file
2024-10-27 12:50:51 -06:00
app first commit 2024-10-27 12:50:51 -06:00
bin first commit 2024-10-27 12:50:51 -06:00
docker/init_scripts first commit 2024-10-27 12:50:51 -06:00
public first commit 2024-10-27 12:50:51 -06:00
schema first commit 2024-10-27 12:50:51 -06:00
storage first commit 2024-10-27 12:50:51 -06:00
.dockerignore first commit 2024-10-27 12:50:51 -06:00
.env.example first commit 2024-10-27 12:50:51 -06:00
.gitignore first commit 2024-10-27 12:50:51 -06:00
000-default.conf first commit 2024-10-27 12:50:51 -06:00
composer.json first commit 2024-10-27 12:50:51 -06:00
crafter first commit 2024-10-27 12:50:51 -06:00
docker-compose.yml first commit 2024-10-27 12:50:51 -06:00
Dockerfile first commit 2024-10-27 12:50:51 -06:00
README.md first commit 2024-10-27 12:50:51 -06:00
xdebug.ini first commit 2024-10-27 12:50:51 -06:00

ERP System - FerreToolsApp

Este proyecto es un sistema ERP desarrollado con PHP 8, que sigue el patrón de diseño Adapters y está diseñado para ser modular y extensible. El sistema incluye módulos de gestión de clientes, productos, pedidos, facturación e inventario. El sistema está pensado para facilitar la gestión de las operaciones diarias en una ferretería o negocio similar, ofreciendo un panel administrativo y una estructura robusta para futuras expansiones.

Características Principales

  • Módulos de Ventas, Inventario, Facturación, Clientes, Pedidos.
  • Autenticación con inicio de sesión y registro de usuarios.
  • JWT para autenticación: Gestión de roles y sesiones de usuario.
  • Roles de Usuario para controlar el acceso a las diferentes secciones del sistema.
  • Rutas protegidas que permiten controlar qué usuarios pueden acceder a cada módulo.
  • Sistema de manejo de errores HTTP con respuestas claras y detalladas (404, 500, etc.).
  • Reportes en PDF y Excel para la gestión de informes de ventas, inventario y otros módulos.
  • Diseño limpio y responsive utilizando Bootstrap 5.
  • Manejo de formularios con sanitización de datos para evitar ataques de inyección.

Requisitos

  • PHP >= 8.3
  • Composer
  • Servidor web (Apache, Nginx)
  • MySQL (también puedes usar PostgreSQL, Oracle, SQL Server, etc.)
  • Extensiones PHP:
    • PDO
    • cURL
    • mbstring
    • openssl

Librerías Utilizadas

El proyecto se construyó utilizando las siguientes librerías:

  • Medoo: ORM ligero para la interacción con la base de datos.
  • PHPMailer: Para el envío de correos electrónicos.
  • Monolog: Para el registro y manejo de logs.
  • phpdotenv: Para la gestión de variables de entorno.
  • AltoRouter: Router simple y rápido para la gestión de rutas.
  • Symfony HttpFoundation: Para manejar las peticiones y respuestas HTTP.
  • DOMPDF: Para generar reportes y documentos en formato PDF.
  • PhpSpreadsheet: Para la generación y manejo de archivos Excel.
  • MoneyPHP: Para manejar transacciones monetarias de manera segura.
  • Firebase JWT: Para la autenticación con JWT (JSON Web Tokens).

Instalación

1. Clona el repositorio

git clone https://github.com/daviddevgt/proyecto-erp.git
cd proyecto-erp

2. Instala las dependencias de Composer

Asegúrate de que tienes Composer instalado. Luego, ejecuta el siguiente comando:

composer install

3. Configuración del entorno

Crea un archivo .env en la raíz del proyecto basado en el archivo .env.example. Actualiza las variables con la configuración de tu base de datos y otros ajustes:

DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_NAME=erp_database
DB_USER=root
DB_PASS=password
DB_CHARSET=utf8mb4

JWT_SECRET=tu_secreto_jwt

4. Configuración de la base de datos

Crea una base de datos para el sistema e importa el archivo schema.sql ubicado en la carpeta schema.

mysql -u root -p erp_database < schema/schema.sql

5. Iniciar el servidor

Puedes usar el servidor de desarrollo de PHP para correr la aplicación en local:

php -S localhost:8000 -t public

Luego, abre el navegador y ve a http://localhost:8000.

Estructura del Proyecto

.
├── app
│   ├── Config         # Configuraciones del sistema, rutas y módulos
│   ├── Controllers    # Controladores del sistema
│   ├── Core           # Clases de core (ej. conexión a la base de datos, helpers)
│   ├── Entities       # Entidades que representan las tablas de la BD
│   ├── Repositories   # Repositorios para la gestión de entidades
│   └── Views          # Vistas y componentes de la aplicación
├── public
│   ├── assets         # Archivos estáticos (CSS, JS, imágenes)
│   └── index.php      # Punto de entrada del sistema
├── schema
│   └── schema.sql     # Esquema de la base de datos
└── vendor             # Dependencias instaladas por Composer

Uso

1. Autenticación y Roles

El sistema cuenta con autenticación JWT. Los usuarios registrados pueden acceder a las diferentes secciones del ERP según el rol que se les haya asignado.

  • Roles soportados:
    • ADMIN
    • GERENCIA
    • VENTAS
    • BODEGA
    • INVITADO

2. Módulos

El sistema está estructurado en módulos, los cuales pueden ser gestionados desde la interfaz de administración. Algunos de los módulos principales son:

  • Clientes: Gestión de los datos de los clientes.
  • Pedidos: Gestión y seguimiento de los pedidos.
  • Facturación: Generación y gestión de facturas.
  • Productos: Gestión del inventario de productos.
  • Reportes PDF y Excel: Generación de reportes en PDF y Excel para el manejo de información de clientes, ventas e inventarios.

Desarrollo

1. Agregar Nuevas Rutas

Las rutas del sistema están gestionadas a través de AltoRouter. Puedes añadir nuevas rutas editando el archivo app/Config/Routes.php. Asegúrate de mapear correctamente los controladores y métodos para cada ruta.

2. Estructura de las Vistas

Las vistas están organizadas en la carpeta app/Views. Si deseas agregar nuevas vistas, simplemente crea los archivos correspondientes en esta carpeta y asegúrate de referenciarlos correctamente en los controladores.