administracion de materiales - ManuelJDonoso/Proyecto_daw GitHub Wiki
Administración de Materiales
Propósito y Alcance
Este documento detalla las funciones de administración para agregar nuevos materiales al inventario y eliminar materiales existentes del sistema. La administración de materiales es accesible para usuarios con privilegios de administrador y proporciona un proceso simplificado para mantener el catálogo de materiales.
Para información sobre el proceso de préstamo de materiales, consulta Préstamos de Materiales. Para detalles sobre cómo se categorizan y muestran los materiales, consulta Inventario de Materiales.
Visión General de la Administración de Materiales
El sistema de Administración de Materiales consta de dos funciones principales:
- Agregar nuevos materiales: Crear nuevas entradas de materiales y unidades en el inventario.
- Eliminar materiales: Marcar unidades de materiales existentes como no disponibles.
Estructura de la Base de Datos
La administración de materiales interactúa con varias tablas clave en la base de datos:
material
: Contiene definiciones de materiales (por ejemplo, "Juego de Mesa Catan").tipo_material
: Contiene categorías de tipos de materiales.unidad_material
: Rastrea unidades individuales de materiales con su estado actual.
Agregar Nuevos Materiales
Los administradores pueden agregar nuevos materiales a través de una interfaz de formulario. El sistema primero verifica si el material ya existe en el catálogo y, si no es así, crea una nueva entrada. Luego, crea una nueva unidad para ese material con un estado de "disponible".
Flujo del Proceso
- Verificación de existencia: El sistema comprueba si el material ya existe.
- Creación de entrada: Si no existe, se crea una nueva entrada en la tabla
material
. - Creación de unidad: Se añade una nueva unidad en la tabla
unidad_material
con estado "disponible".
Componentes de la Interfaz de Usuario
La interfaz para agregar materiales consta de un formulario y una tabla de materiales existentes:
-
Formulario de Entrada de Material:
- Campo de nombre: Obligatorio, identifica el material.
- Selección de tipo: Menú desplegable de la tabla
tipo_material
. - Descripción: Área de texto para una descripción detallada.
- Comentarios: Notas adicionales sobre la unidad específica.
- Edad recomendada: Clasificación de edad para el material.
- Botón de envío: Procesa el formulario.
-
Tabla de Materiales:
- Muestra materiales existentes para referencia.
- Al hacer clic en una fila, se completa el formulario con los datos de ese material.
- La tabla se muestra solo cuando se está completando el campo de nombre y existen coincidencias.
Eliminar Materiales del Inventario
El sistema de eliminación de materiales no elimina permanentemente los materiales de la base de datos. En su lugar, marca las unidades como "No disponible" y registra la fecha de eliminación.
Flujo del Proceso
- Selección de unidad: El administrador selecciona la unidad de material a eliminar.
- Confirmación: Se muestra un diálogo de confirmación antes de proceder.
- Actualización de estado: El estado de la unidad se cambia a "No disponible" y se registra la fecha de eliminación.
Componentes de la Interfaz de Usuario
La interfaz para eliminar materiales incluye opciones de filtrado y una tabla de materiales disponibles:
-
Sección de Filtro:
- Filtro por ID: Buscar material por ID.
- Filtro por nombre: Buscar material por nombre.
- Filtro por tipo: Filtrar por tipo de material.
-
Tabla de Materiales:
- Muestra todos los materiales disponibles con sus detalles.
- Cada fila incluye:
- ID
- Nombre
- Estado
- Tipo de material
- Comentarios
- Fecha de creación
- Botón "Baja" (Eliminar)
-
Diálogo de Confirmación:
- Aparece cuando se hace clic en el botón de eliminación.
- Requiere confirmación antes de proceder con la eliminación.
Implementación del Código
Estructura del Controlador
Ambos controladores de administración siguen un patrón similar:
- Manejar envíos de formularios (solicitudes POST).
- Realizar operaciones en la base de datos.
- Obtener los datos necesarios para la vista.
- Incluir JavaScript para mejorar la funcionalidad del frontend.