El Sistema Gestor de Inventario es una aplicación integral diseñada para gestionar productos, categorías, marcas y modelos en tiendas. Permite realizar compras a proveedores, recibir productos en tiendas y realizar ventas. El sistema está estructurado siguiendo las mejores prácticas y patrones de diseño, garantizando una implementación robusta y mantenible.
Para obtener más información detallada sobre el proyecto, puedes consultar nuestros documentos de proyecto:
- Pasos para ejecutar el proyecto
- Documentación Esquema 1
- Documentación Esquema 2
- Diagrama Entidad Relación Base De Datos
- Vídeo Resumen
- Operaciones CRUD completas para productos, categorías, marcas y modelos
- Relaciones de muchos a muchos entre productos y categorías, productos y marcas
- API RESTful con endpoints detallados para cada operación
- Excepciones personalizadas y manejo global de excepciones
- Validación de datos utilizando Hibernate Validator
- Documentación Swagger para fácil prueba e interacción con la API
- Language: Java 21
- Frameworks:
- Spring Boot 3.3.0
- Spring Data JPA
- Spring Security
- ORM:
- Hibernate
- Database:
- MySQL
- Utilities:
- MapStruct
- Lombok
- API Documentation:
- Swagger
- Build Tool:
- Maven
- Authentication:
- Jwt
JDK 21 Maven Base de datos MySQL
Clona el repositorio:
-
Clone the repository:
git clone https://github.com/CarlosPuent/PROYECTO_KODIGO.git cd PROYECTO_KODIGO
-
Configure the MySQL database in
application.yml
:spring: datasource: url: jdbc:mysql://localhost:3306/your_database_name username: your_username password: your_password
-
Build and run the application:
mvn clean install mvn spring-boot:run
Swagger UI está disponible para facilitar la prueba e interacción con la API.
Endpoint: 'POST /api/v1/purchases'
Ejemplo de URL de Solicitud:
http://localhost:8080/api/v1/purchases
Ejemplo de Cuerpo de Solicitud:
json
Copiar código
{
"supplier_id": 1,
"details": [
{
"name": "Martillo",
"description": "Descripción para Martillo",
"price": 25,
"category_ids": [1],
"brand_ids": [1],
"models": [
{
"name": "Modelo A"
},
{
"name": "Modelo B"
},
{
"name": "Modelo C"
}
],
"quantity": 30,
"status": "ACTIVO"
}
]
}
Endpoint: 'PUT /api/v1/purchases/{id}'
Ejemplo de URL de Solicitud:
http://localhost:8080/api/v1/purchases/12
Ejemplo de Cuerpo de Solicitud:
json
Copiar código
{
"supplier_id": 2,
"details": [
{
"name": "Bujías",
"description": "Descripción para Bujías",
"price": 150,
"category_ids": [2],
"brand_ids": [1, 2],
"models": [
{
"name": "Modelo SA"
},
{
"name": "Modelo SB"
},
{
"name": "Modelo SC"
}
],
"quantity": 40,
"status": "ACTIVO"
}
]
}
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
Para cualquier consulta o comentario, por favor contactame.
Método | Endpoint | Descripción |
---|---|---|
POST |
/api/v1/purchases |
Crear una Compra |
PUT |
/api/v1/purchases/{id} |
Actualizar una Compra |
DELETE |
/api/v1/purchases/{id} |
Eliminar una Compra |
Método | Endpoint | Descripción |
---|---|---|
POST |
/api/v1/receive/store/{storeId}/supplier/{supplierId} |
Recepción de Productos en Tienda |
PUT |
/api/v1/receive/store/{storeId}/supplier/{supplierId}/movement/{movementId} |
Actualizar Recepción de Productos |
DELETE |
/api/v1/receive/store/{storeId}/supplier/{supplierId}/movement/{movementId} |
Eliminar Recepción de Productos |
Método | Endpoint | Descripción |
---|---|---|
POST |
/api/v1/sales |
Crear una Venta |
PUT |
/api/v1/sales/{id} |
Actualizar una Venta |
DELETE |
/api/v1/sales/{id} |
Eliminar una Venta |
Método | Endpoint | Descripción |
---|---|---|
POST |
/api/products |
Crear Producto |
PUT |
/api/products/{id} |
Actualizar Producto |
DELETE |
/api/products/{id} |
Eliminar Producto |
POST |
/api/categories |
Crear Categoría |
PUT |
/api/categories/{id} |
Actualizar Categoría |
DELETE |
/api/categories/{id} |
Eliminar Categoría |
POST |
/api/brands |
Crear Marca |
PUT |
/api/brands/{id} |
Actualizar Marca |
DELETE |
/api/brands/{id} |
Eliminar Marca |
POST |
/api/models |
Crear Modelo |
PUT |
/api/models/{id} |
Actualizar Modelo |
DELETE |
/api/models/{id} |
Eliminar Modelo |
Descripción de las Pruebas Realizadas Se realizaron pruebas exhaustivas de cada endpoint utilizando Postman para verificar la funcionalidad de CRUD en productos, categorías, marcas y modelos, así como las operaciones de compra, recepción y venta.
Endpoint: POST /api/categories
URL: http://localhost:8080/api/categories
Ejemplo de Cuerpo de Solicitud:
{
"name": "Lubricantes"
}
Endpoint: PUT /api/brands/{codeBrand}
URL: http://localhost:8080/api/brands/BRN0003
Ejemplo de Cuerpo de Solicitud:
{
"name": "Honda"
}
Implementación de un sistema de notificaciones para alertar sobre niveles bajos de inventario. Integración con servicios externos para actualización automática de precios. Mejora de la interfaz de usuario para una mejor experiencia de usuario. Optimización de consultas y rendimiento del sistema para manejar grandes volúmenes de datos.