VanguardAI/README.md
2024-10-27 12:50:51 -06:00

145 lines
5.7 KiB
Markdown

# 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](https://medoo.in/)**: ORM ligero para la interacción con la base de datos.
- **[PHPMailer](https://github.com/PHPMailer/PHPMailer)**: Para el envío de correos electrónicos.
- **[Monolog](https://github.com/Seldaek/monolog)**: Para el registro y manejo de logs.
- **[phpdotenv](https://github.com/vlucas/phpdotenv)**: Para la gestión de variables de entorno.
- **[AltoRouter](https://github.com/dannyvankooten/AltoRouter)**: Router simple y rápido para la gestión de rutas.
- **[Symfony HttpFoundation](https://github.com/symfony/http-foundation)**: Para manejar las peticiones y respuestas HTTP.
- **[DOMPDF](https://github.com/dompdf/dompdf)**: Para generar reportes y documentos en formato PDF.
- **[PhpSpreadsheet](https://phpspreadsheet.readthedocs.io/en/latest/)**: Para la generación y manejo de archivos Excel.
- **[MoneyPHP](https://github.com/moneyphp/money)**: Para manejar transacciones monetarias de manera segura.
- **[Firebase JWT](https://github.com/firebase/php-jwt)**: Para la autenticación con JWT (JSON Web Tokens).
## Instalación
### 1. Clona el repositorio
```bash
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:
```bash
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:
```dotenv
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`.
```bash
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:
```bash
php -S localhost:8000 -t public
```
Luego, abre el navegador y ve a `http://localhost:8000`.
## Estructura del Proyecto
```plaintext
.
├── 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.