Como vendedor quiero gestionar la información de un cliente para dar de alta a un cliente cuando realiza una compra o alquiler y modificar los datos de un cliente existente si es necesario.
DICCIONARIO DE DATOS
Nombre: Cadena(30)
Apellido: Cadena(30)
Documentación: Entero
Tipo de Documentación: Enumerado {DNI, CUIT, CUIL}
E-Mail: correo@dominio
Teléfono: Cadena (30)
Dirección: Cadena(50)
Puntos acumulados: Entero
Alquiler: Referencia a Alquiler [0..N]
Localidad: Referencia a Localidad
Criterios de aceptación
Alta
Dado que existan campos incompletos cuando se intenta dar de alta un cliente, entonces el sistema debe mostrar un mensaje de error.
Dado un tipo y número de CUIT/CUIL existente cuando se intenta dar de alta un cliente, entonces el sistema debe mostrar un mensaje de error, indicando que el cliente ya existe.
Solo se podrá dar de alta un cliente, cuando este realice una compra (Alquiler de habitación, Paquete turístico)
Solo el vendedor podrá dar de alta un cliente
Modificar
No se podrá realizar la modificación de Tipo documento y número documento.
No se podrá modificar la cantidad de puntos acumulados del cliente.
Solo el vendedor podrá modificar los datos un cliente
Baja
Solo el administrador puede dar de baja un cliente
Tareas
Frontend (React)
Crear una pagina para agregar clientes
Capturar la información relevante del nombre, apellido, DNI, localidad, dirección, teléfono, e-mail.
Validar y enviar los datos del formulario al backend para el registro
Mostrar una lista de clientes
Mostrar las compras realizadas por un cliente
Backend (Django)
Crear el Modelo de Clientes.
Procesar la solicitud del formulario y crear un nuevo registro de cliente en la base de datos.
Implementar función que permita mostrar los puntos disponibles de un cliente
Dado que existan campos incompletos cuando se intenta dar de alta una temporada, entonces el sistema debe mostrar un mensaje de error.
Dado el intento de crear una nueva temporada, se debe indicar error si ya existe una temporada en las fechas dadas.
Eliminación
Dado el intento de eliminación de una temporada, se debe indicar error si está vinculada a un hotel.
Modificación
Dado el intento de modificar una temporada ya vinculada a un hotel, se debe indicar error si el intervalo de fechas coincide con otra temporada vinculada al hotel. consultar
Tareas
Frontend (React)
Crear una pagina de registro de temporadas
Capturar la información relevante de la temporada, porcentaje, fecha (inicio y fin), tipo de temporada (ALTA o BAJA).
Validar y enviar los datos del formulario al backend para el registro
Backend (Django)
Crear el Modelo de Temporada
Procesar la solicitud del formulario y crear un nuevo registro de temporada en la base de datos
Como vendedor quiero gestionar la venta de un paquete turístico para que un cliente tenga estadía en el hotel, comprendida dentro del paquete.
Diccionario de datos
Criterios de aceptación
Dada una habitación, una fecha inicio y una fecha fin, el sistema debe indicar error si la habitación no se encuentra disponible dentro del intervalo de fechas.
Dado que existan campos incompletos cuando se intenta dar de alta un vendedor, entonces el sistema debe mostrar un mensaje de error.
Dado un documento existente cuando se intenta dar de alta un vendedor, entonces el sistema debe mostrar un mensaje de error, indicando que el vendedor ya existe.
Modificar
No se puede modificar un vendedor que no exista
No se puede modificar el DNI
Eliminar
No se puede eliminar un vendedor que no exista
No se puede eliminar un vendedor que tenga comisiones sin liquidar
No se puede eliminar un vendedor si es el único asignado a un hotel
Tareas
Frontend
Crear una pagina de registro de vendedores
Capturar la información relevante del vendedor, nombre, apellido, DNI, localidad, dirección, teléfono, correo.
Validar y enviar los datos del formulario al backend para el registro
Mostar una lista de liquidaciones pagadas del vendedor
Mostar una lista de las ventas realizadas por el vendedor en un determinado tiempo
Mostrar una lista de las liquidaciones pendientes del vendedor
Backend
Crear el Modelo de Vendedor
Procesar la solicitud del formulario y crear un nuevo registro de vendedor en la base de datos
Como administrador quiero desasignar servicios a una categoría
Criterios de aceptación
Dado el intento de desasignar un servicio a una nueva categoría, se debe mostrar error debido a que no pueden existir dos categorías con los mismos servicios.
Como administrador quiero poder agregar, editar y eliminar localidades en el sistema para que los hoteles, vendedores y clientes puedan especificar sus ubicaciones con precisión.
Diccionario de datos
ABM Ciudad
Código postal: Entero > 0
Nombre Ciudad: Cadena(30)
ABM Provincia
Nombre Provincia: Cadena(30)
ABM País
Nombre País: Cadena(30)
Criterios de aceptación
Dado que existan campos incompletos cuando se intenta agregar la ubicación, entonces el sistema este debe mostrar un mensaje de error.
Dado un código postal ya existente cuando se intenta agregar la localidad, entonces el sistema debe mostrar un mensaje de error.
Tareas
Frontend (React)
Crear una pagina para agregar ubicaciones
Capturar la información relevante de la Ciudad, nombre, codigo postal.
Capturar la información relevante de la Provincia, nombre.
Capturar la información relevante del País, nombre
Validar y enviar los datos del formulario al backend para el registro
Backend (Django)
Crear el Modelo de Ciudad
Crear el Modelo de Provincia
Crear el Modelo de País
Procesar la solicitud del formulario y crear un nuevo registro de Ciudad, Provincia, País en la base de datos
Como vendedor quiero gestionar el alquiler de una habitación para que un cliente tenga estadía en un hotel.
Diccionario de datos
Cliente: Referencia a Cliente
Vendedor: Referencia a Vendedor
Habitacion: Referencia a Habitación [1..N]
Fecha inicio: {dd/mm/aaaa}
Fecha fin: {dd/mm/aaaa} > Fecha Inicio
Cantidad huéspedes: Entero
Paquete: Referencia a Paquete Promocional [0..1]
Importe: Real
Criterios de aceptación
Dada una cantidad de huéspedes y un tipo de habitación, el sistema debe indicar error si la cantidad de pasajeros excede la capacidad máxima de la habitación.
Si la cantidad de habitaciones es mayor o igual a la cantidad indicada por el hotel, se aplicará un descuento en el importe total.
No se podrá cancelar el alquiler de una habitación.
Se debe generar una factura asociada al alquiler con los detalles correspondientes
Tareas
Frontend (React)
Crear una interfaz de búsqueda de habitaciones disponibles en una localidad
Crear un formulario de registro de alquileres
Capturar la información relevante del alquiler, cliente, vendedor, habitación, fecha (inicio y fin), cantidad de huéspedes, importe.
Validar y enviar los datos del formulario al backend para el registro
Backend (Django)
Crear el Modelo de Alquiler
Procesar la solicitud del formulario y crear un nuevo registro de alquiler en la base de datos
Implementar función para verificar la disponibilidad de la habitación dada una fecha
Generar una factura asociada al alquiler y crear un registro en la base de datos.
Implementar función que permita listar los alquileres por filtro (Fecha, Cliente, Vendedor, Hotel, Habitación)
Crear objetos en el contexto, crear una habitación en un hotel
Validaciones en general
El diseño no pareciera demostrar una "unicidad" dentro del sistema, mejoren la coherencia visual.
Trabajar sobre la UI, mas detalles de los objetos y sus contextos, (Hotel con descuentos, paquetes, temporadas, habitaciones, Clientes con sus alquileres, Vendedores con sus ventas, Alquileres y sus detalles, etc) Falta bastante en esto.
Finalizar alquiler, dar opciones de selección de descuentos,
Navegar cuando los objetos se crean o modifican, salir del contexto de edición o creación.... navegar
Falta mucho "detail view" de las cosas que creo que se podría explotar mas. Por ejemplo, los alquileres que realiza un vendedor actualmente muestran fechas y montos pero no a qué cliente pertenecen o sobre que hotel, habitación (o tipo de), si se trata de un paquete turístico.
Todo lo referido a facturación, pagos y la aplicación de descuentos no se vió.
Como administrador quiero desasignar un tipo de habitación a un hotel para dejar de ofrecer sus habitaciones.
Diccionario de datos
Tipo de habitación: Referencia a Tipo Habitación
Hotel: Referencia a Hotel
Criterios de aceptación
Dado el intento de desvinculación de un tipo de habitación, el mismo debe estar asignado al hotel.
Dado el intento de desvinculación de un tipo de habitación, el mismo no debe estar vinculado a una habitación que esté dentro de un paquete promocional activo.
Tareas
Frontend (React)
Implementar interacción con el usuario que permita desvincular el tipo de habitación con el hotel
Validar datos y enviar la solicitud al backend
Mostrar los tipos de habitaciones de un hotel
Backend (Django)
Crear función que permita desvincular un tipo habitación asignado a un hotel
Procesar la solicitud y desvincular el tipo de habitación del hotel en la base de datos