Endpoints / Proveedores

PATCH

Actualizar Proveedor

Actualiza parcialmente los datos editables de un proveedor, dentro de la empresa del usuario autenticado, incluyendo sus relaciones de categoría y marca.

PATCH/proveedores/:id

Caso de Uso

Se usa cuando la aplicación necesita modificar el nombre, teléfono, correo, categoría, marca o estado de un proveedor existente. Al usarlo, el usuario obtiene los datos completos del proveedor actualizado con las relaciones resueltas.

Autenticación

Requiere token JWT en el header `Authorization: Bearer <token>`. Permite acceso a usuarios con rol jefe o empleado. La empresa y el usuario autenticado deben estar activos.

Parámetros de ruta

idstringobligatorio

Identificador del proveedor.

Body

provctgriaidstring | null opcional

Nuevo identificador de la categoría asociada; puede enviarse como null para desasignarla.

provmrcidstring | null opcional

Nuevo identificador de la marca asociada; puede enviarse como null para desasignarla.

provnombrestring opcional

Nuevo nombre del proveedor; debe ser único dentro de la empresa.

provtelefonostring | null opcional

Nuevo teléfono móvil de 10 dígitos; puede enviarse como null.

provcorreostring | null opcional

Nuevo correo electrónico; puede enviarse como null.

provestadostring opcional

Nuevo estado del proveedor; acepta activo, inactivo o eliminado.

Reglas de negocio

1

Solo un usuario con rol jefe o empleado puede actualizar proveedores.

2

Solo permite actualizar proveedores de la empresa del usuario autenticado.

3

La empresa del usuario autenticado debe estar activa.

4

El usuario autenticado debe estar activo.

5

El proveedor debe existir dentro de la empresa autenticada.

6

Un proveedor con estado eliminado no puede actualizarse.

7

Debe enviarse al menos un campo editable con un valor diferente al actual.

8

Si se envía provnombre, no puede estar vacío ni repetirse.

9

Si se envía provtelefono como texto, debe ser un número móvil válido de 10 dígitos.

10

Si se envía provcorreo como texto, debe tener formato de correo válido.

11

Si se envía provctgriaid como texto, la categoría debe existir y estar activa.

12

Si se envía provmrcid como texto, la marca debe existir y estar activa.

13

Si se envía provestado, solo puede ser activo, inactivo o eliminado.

Errores esperados

401Token inválido o ausente
400Proveedor id is required

id inválido o ausente

500At least one field is required to update proveedor

Body vacío o sin cambios aplicables

500Proveedor name is required

provnombre vacío

500Proveedor phone is required

provtelefono vacío

500Proveedor phone must be valid

provtelefono inválido

500Proveedor email must be valid

provcorreo inválido

500Proveedor category id is required

provctgriaid vacío

500Proveedor brand id is required

provmrcid vacío

500Proveedor status must be activo, inactivo or eliminado

provestado inválido

500Proveedor already exists with that name

Proveedor duplicado por nombre en la misma empresa

500Proveedor category does not exist

Categoría inexistente

500Proveedor category is not active

Categoría inactiva o eliminada

500Proveedor brand does not exist

Marca inexistente

500Proveedor brand is not active

Marca inactiva o eliminada

500Deleted proveedor cannot be updated

Proveedor en estado eliminado

500User is not jefe or empleado

Usuario sin rol permitido

500User is not active

Usuario inactivo

500Company is not active

Empresa inactiva

500Proveedor not found

Proveedor no encontrado

400Invalid request body format

El cuerpo de la solicitud no es un JSON válido

400No changes detected in the request

Ningún campo tiene un valor diferente al actual

500Proveedor category does not belong to the company

La categoría no pertenece a la empresa autenticada

500Proveedor brand does not belong to the company

La marca no pertenece a la empresa autenticada

401Token expirado

El token ha expirado, inicie sesión nuevamente

400Invalid UUID format

El formato del id del proveedor no es válido

500Internal server error

Error interno del servidor

Notas de uso

1

Este endpoint no recibe query params.

2

Envía solo los campos que deseas actualizar.

3

provctgriaid, provmrcid, provtelefono y provcorreo pueden enviarse como null para limpiar sus valores.

4

provestado permite el valor eliminado para eliminación lógica del proveedor.

5

Las relaciones categoria y marca pueden devolverse como null en la respuesta.