El módulo de proveedores permite administrar el directorio de empresas o personas que abastecen el inventario de Tienda MiCholo. Cada producto del catálogo está vinculado a exactamente un proveedor mediante la clave foráneaDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/proyecto-dise-o/llms.txt
Use this file to discover all available pages before exploring further.
Proveedor_ID. El módulo completo está protegido por el atributo [Authorize(Roles = "Admin")] a nivel de controlador, por lo que únicamente los usuarios con rol Admin pueden acceder a cualquiera de sus vistas o acciones.
Campos del proveedor
El modeloProveedor define los siguientes campos con sus validaciones:
| Campo | Tipo C# | Obligatorio | Validaciones |
|---|---|---|---|
IdProveedor | int | — | Clave primaria, generada automáticamente por la base de datos. |
RazonSocial | string | ✅ Sí | Longitud máxima: 100 caracteres. No puede contener dígitos — regex: ^[^0-9]+$. Mensaje de error: "El nombre de la empresa no admite números." |
Ruc | string | ✅ Sí | Longitud máxima y mínima: exactamente 11 caracteres. Solo dígitos numéricos — regex: ^\d{11}$. Debe ser único en todo el sistema (validado en el controlador). |
Telefono | string | ❌ No | Longitud máxima: 50 caracteres. Si se proporciona, debe tener 9 dígitos, comenzar con 9 y no tener todos los dígitos iguales — regex: ^9(?!(\d)\1{7})\d{8}$. |
El campo
Telefono es opcional. Sin embargo, si se proporciona, debe cumplir estrictamente el formato de número celular peruano: 9 dígitos, comenzar en 9 y no ser una secuencia de dígitos repetidos (por ejemplo, 999999999 es rechazado).Crear proveedor
Validar el modelo
El servidor verifica el
ModelState. Si alguna anotación de validación falla (formato de RazonSocial, formato de Ruc, formato de Telefono), se recarga el formulario con los errores correspondientes.Verificar unicidad del RUC
Antes de insertar el registro, el controlador consulta si ya existe otro proveedor con el mismo RUC:Si el RUC ya está en uso, se muestra el error en el campo
Ruc y no se guarda el registro.Editar proveedor
IdProveedor, para permitir guardar sin cambiar el RUC:
FindAsync retorna null), el servidor devuelve un NotFound (HTTP 404).
Eliminar proveedor
Proveedor_ID:
¿Qué ocurre si el proveedor no se encuentra?
¿Qué ocurre si el proveedor no se encuentra?
Si el
IdProveedor proporcionado no corresponde a ningún registro, el controlador redirige al listado con el mensaje "Proveedor no encontrado." en TempData["Error"]. No se produce ningún error HTTP no controlado.Acceso restringido
El controladorProveedorController aplica el atributo [Authorize(Roles = "Admin")] a nivel de clase, lo que significa que todas sus rutas están restringidas al rol Admin:
| Ruta | Método | Descripción |
|---|---|---|
/Proveedor/Listar | GET | Lista todos los proveedores ordenados por razón social. |
/Proveedor/Nuevo | GET / POST | Formulario de alta y creación. |
/Proveedor/Editar/{id} | GET / POST | Formulario de edición y actualización. |
/Proveedor/Eliminar/{id} | GET | Eliminación con verificación de dependencias. |
Los usuarios con rol Vendedor no tienen acceso a ninguna ruta del módulo de proveedores. Cualquier intento de acceso directo a estas URLs resultará en una redirección a la página de acceso denegado configurada en la aplicación.