Skip to content

Gestión de Usuarios: SpringSecurity, JWT. Gestión de Inventario: Compra a Proveedores, Recepción de Productos y Ventas

Notifications You must be signed in to change notification settings

CarlosPuent/PROYECTO_K

Repository files navigation

Sistema Gestor de Inventario

Descripción del Proyecto

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.

Saber más sobre el proyecto

Para obtener más información detallada sobre el proyecto, puedes consultar nuestros documentos de proyecto:

Características

Gestión de Productos, Categorías, Marcas y Modelos

  • Operaciones CRUD completas para productos, categorías, marcas y modelos
  • Relaciones de muchos a muchos entre productos y categorías, productos y marcas

API

  • API RESTful con endpoints detallados para cada operación

Manejo de Errores

  • Excepciones personalizadas y manejo global de excepciones

Validación de Datos

  • Validación de datos utilizando Hibernate Validator

Documentación

  • Documentación Swagger para fácil prueba e interacción con la API

Technologías Usadas

Stack

  • 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

Marco

Requisitos Previos

JDK 21 Maven Base de datos MySQL

Instalación

Clona el repositorio:

  1. Clone the repository:

    git clone https://github.com/CarlosPuent/PROYECTO_KODIGO.git
    cd PROYECTO_KODIGO
  2. Configure the MySQL database in application.yml:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/your_database_name
        username: your_username
        password: your_password
  3. Build and run the application:

    mvn clean install
    mvn spring-boot:run

Documentación de la API

Swagger UI está disponible para facilitar la prueba e interacción con la API.

Ejemplos de Uso

Crear una Compra

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"
        }
    ]
}

Actualizar una Compra

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"
        }
    ]
}

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

Contacto

Para cualquier consulta o comentario, por favor contactame.

Lista de Endpoints Disponibles

Gestión de Compras (Purchase)

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

Gestión de Recepciones (Receive)

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

Gestión de Ventas (Sale)

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

Gestión de Productos, Categorías, Marcas y Modelos

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

Pruebas

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.

Ejemplos de Casos de Prueba

Crear una Categoría

Endpoint: POST /api/categories URL: http://localhost:8080/api/categories

Ejemplo de Cuerpo de Solicitud:

{
    "name": "Lubricantes"
}

Actualizar una Marca:

Endpoint: PUT /api/brands/{codeBrand} URL: http://localhost:8080/api/brands/BRN0003

Ejemplo de Cuerpo de Solicitud:

{
    "name": "Honda"
}

Posibles Mejoras Futuras

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.

Releases

No releases published

Packages

No packages published

Languages