Está en la página 1de 16

CENTRO UNIVERSITARIO DE OCCIDENTE

DIVISIÓN DE CIENCIAS DE LA INGENIERÍA


INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Objetivos generales
● Aplicar conceptos de bases de datos
● Aplicar conceptos sobre aplicaciones web
● Aplicar conceptos recibidos en clase magistral y laboratorio
● Elaborar la lógica para la solución del problema planteado.

Objectivos específicos
● Modelar información usando diagramas E/R
● Crear un esquema de bases de datos a partir de un diagrama E/R
● Construcción de aplicaciones web usando JSP.
● Recepción de datos del usuario usando ventanas de formularios amigables.
● Validación de la información ingresada por el usuario.
● Manejar buenas prácticas de programación.
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Descripción
La empresa de desarrollo de software “Niko Niko Code” se especializa en desarrollar sistemas a la
medida, y tomando el cuenta el buen trabajo realizado por usted en sus proyectos anteriores, ha sido
asignado a un nuevo proyecto.
Uno de los clientes actuales posee una empresa que cuenta con varias tiendas de conveniencia
distribuidas en distintos puntos del país y desea tener un sitio web dedicado al control de los suministros
solicitados por las tiendas a las bodegas centrales. La idea general es gestionar los pedidos, incidencias
y devoluciones que realiza la tienda y los envíos generados desde las bodegas centrales.
Debido a su experiencia en el análisis orientado a objetos, se le solicita que documente todos los
requerimientos usando la técnica de casos de uso, por lo que debe generar artefactos de análisis como
glosario, casos de uso de alto nivel, casos de uso expandidos, diagrama de casos de uso y diagrama de
clases.

Requerimientos
La empresa cuenta con un catálogo general de productos en el cual por cada producto se guarda la
siguiente información: código, nombre del producto, costo, precio, existencias. Cada tienda cuenta con
su propio catálogo de productos. (Los catálogos de tienda dependen del general)
Los pedidos son generados por los usuarios de tiendas hacia las bodegas centrales solicitando x
cantidad de uno o más productos.
Existen dos tipos de tiendas, tienda normal y tienda supervisada. Los pedidos de las tiendas normales
pasan directamente a bodegas centrales, mientras que los pedidos de las tiendas supervisadas deben
ser aprobados por el supervisor de tiendas antes de pasar a las bodegas centrales. Sí un pedido es
rechazado la tienda puede editar el pedido rechazado para agregar las correcciones solicitadas y
guardarlo nuevamente en espera de la autorización.
Los usuarios de bodegas centrales se encargan de generar envíos a las tiendas a partir de los pedidos
que realizan. Cada usuario de bodega central tiene a su cargo una o varias tiendas que son asignadas
por un usuario administrador. Cada tienda solo puede estar asignada a un usuario de bodega.
Los envíos generados no siempre cumpliran con la cantidad y productos solicitados, tampoco están
limitados a estos, esto quiere decir que en el envío pueden ir productos que no fueron solicitados por la
tienda.
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Los usuarios de tiendas pueden visualizar los envíos que se han generado desde las bodegas centrales,
los envíos deben marcarse como recibidos para que las existencias de la tienda sean actualizadas.
Cuando se recibe un envío el pedido se marca como completado.
A los envíos recibidos se les pueden crear incidencias y devoluciones, siempre y cuando no haya
pasado más de una semana de que se recibió en tienda.
Las incidencias se generan cuando existe un problema con x cantidad de uno o más productos del
envío, cada producto agregado a la incidencia debe contar con un motivo, los motivos disponibles son
los siguientes: producto equivocado, producto dañado, producto no solicitado, faltante de producto,
sobrante de producto.
Las incidencias son visualizadas por los usuarios de bodegas centrales, los cuales revisan los datos de
la incidencia e indican a la tienda como proceder. El usuario selecciona una incidencia y para resolverla
debe llenar un campo con la solución, dicha solución podrá ser visualizada por tienda.
Las devoluciones son generadas cuando la tienda desea devolver cierta cantidad de uno o más
productos a bodegas centrales, estas deben ser revisadas y aprobadas por un usuario de bodega. Cada
producto en la devolución al igual que la incidencia debe tener un motivo. Los motivos disponibles son
los siguientes: producto equivocado, producto dañado, producto no solicitado, sobrante de producto.
Al momento de ser aprobada una devolución las cantidades de los productos de dicha devolución se
restan de las existencias de tienda y son sumadas a las existencias de la bodega solamente cuando el
motivo de devolución no es por producto dañádo. Los productos devueltos que están dañados deben
guardarse en un catálogo distinto.
Las devoluciones no dependen de las incidencias, se puede generar una devolución sin una incidencia
pero esta siempre tiene que ser aceptada o rechazada por un usuario de bodega, las incidencias son
registros que realiza la tienda para indicar que hubo un error con el envío recibido.
Se deben enviar notificaciones a través de correo electrónico.

Modulos
El sistema requiere de tres módulos para su funcionamiento:
● Administrador
● Bodega Central
● Tienda
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Modulo de tienda

Crear pedido:
Permite crear un nuevo pedido, cada producto en el pedido debe tener código, costoUnitario, costoTotal
y cantidad solicitada. Se debe tener un método de búsqueda para no tener que ingresar los datos del
producto manualmente.

Recibir envío:
Debe permitir visualizar un listado con todos los envíos pendientes de recibir o filtrarlos por el id del
envío. Al seleccionar un envío se debe mostrar el detalle de los productos enviados junto con la opción
para poder recibirlo.

Crear incidencia:
Permite crear una incidencia a un envío recibido, es necesario ingresar el id de envío y la fecha de
incidencia. Para cada producto en la incidencia se debe ingresar código, cantidad afectada, motivo de
incidencia. Se debe tener un método de búsqueda para no tener que ingresar los datos del producto
manualmente, pero este debe estar limitado a los productos del envío. El estado por defecto para una
incidencia nueva es "Activa".

Crear devolucion:
Permite crear una devolución a un envío recibido, es necesario ingresar el id de envío, fecha de
devolución. Para cada producto en la devolución se debe ingresar código, cantidad afectada y motivo de
devolución, adicional debe llevar costoUnitario y costoTotal pero estos datos no los ingresa el usuario.
Se debe tener un método de búsqueda para no tener que ingresar los datos del producto manualmente,
pero este debe estar limitado a los productos del envío.

Editar pedido (tienda supervisada):


Muestra el mensaje de porque fue rechazado y el detalle del pedido, debe permitir eliminar un producto,
editar la cantidad solicitada o agregar más productos al pedido.

Pedidos pendientes (usuario supervisor)


Permite listar todos los pedidos pendientes de aprobación, se pueden filtrar por tienda. Al seleccionar un
pedido debe mostrar su información y el detalle de los productos solicitados. Se tendrá la opción de
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

aprobar o rechazar el pedido. Si se rechaza debe llenar un campo especificando porque se está
rechazando el pedido.

Modulo de bodega central

Crear envío:
Permite visualizar los pedidos de las tiendas asignadas, estos se pueden filtrar por tienda. Al seleccionar
un pedido se debe mostrar el detalle de los productos pedidos, debe permitir modificar las cantidades a
enviar, eliminar productos y agregar nuevos.

Solucionar incidencia:
Se deben listar las incidencias de las tiendas asignadas, estas se pueden filtrar por tienda. Al
seleccionar una incidencia se debe mostrar su información incluyendo el detalle de los productos,
adicional debe aparecer un campo donde se pueda ingresar la solución a dicha incidencia.

Aceptar o rechazar devoluciones:


Se deben listar las devoluciones de las tiendas asignadas, estas se pueden filtrar por tienda. Al
seleccionar una devolución se debe mostrar su información incluyendo el detalle de los productos. Debe
dar opción a aceptar o rechazar la devolución.

Módulo de administración

Gestión de usuarios de tienda:


Los administradores deben tener acceso a crear, editar y desactivar usuarios de tienda. Se debe tomar
en cuenta que a cada usuario de tienda se le asigna una tienda.

Gestión de usuarios de bodega:


Los administradores deben tener acceso a crear, editar y desactivar usuarios de bodega. Se debe tomar
en cuenta que a cada usuario de bodega se le asigna una o varias tiendas.

Gestión de usuarios supervisor


Los administradores deben tener acceso a crear, editar y desactivar usuarios supervisores.
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Datos a guardar

Tienda
Cada tienda debe contar con la siguiente información:
● Código
● Nombre
● Dirección
● Catálogo de productos
● Tipo de tienda

Usuarios
Cada usuario solo debe tener acceso a funcionalidades relacionadas a su tipo de usuario. Las
contraseñas no deben guardarse como texto plano en la base de datos.

Usuario de tienda
Este tipo de usuario es el encargado de crear pedidos, recibir envíos, generar incidencias y
devoluciones.
Los datos a almacenar son:
❖ Código
❖ Nombre
❖ Tienda a la que pertenece
❖ Nombre de usuario (usuario con el que ingresa al sistema)
❖ Contraseña
❖ Correo electrónico
Cada usuario de tienda tiene acceso a los siguientes reportes:
● Reporte de productos de tienda con existencias menores a x cantidad.
● Reporte de pedidos realizados en un intervalo de tiempo por estado.
● Reporte de envíos recibidos en un intervalo de tiempo (indicando la cantidad de incidencias y
devoluciones activas).
● Reporte de incidencias generadas en un intervalo de tiempo por estado.
● Reporte de devoluciones generadas en un intervalo de tiempo por estado.
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Usuario supervisor tienda


Este tipo de usuario se encarga de aprobar o rechazar los pedidos realizados por las tiendas
supervisadas. Este no pertenece a una tienda en específico ya que supervisa todos los pedidos de las
tiendas supervisadas.
Los datos a almacenar son:
❖ Código
❖ Nombre
❖ Nombre de usuario (usuario con el que ingresa al sistema)
❖ Contraseña
❖ Correo electrónico
Este usuario tiene acceso a los siguientes reportes:
● Reporte de pedidos filtrado por intervalo de fecha y/o estado y/o tienda

Usuario bodega central


Este tipo de usuario se encarga de generar envíos, solucionar incidencias y aceptar o rechazar
devoluciones de las tiendas a las que está a cargo.
Los datos a almacenar son:
❖ Código
❖ Nombre
❖ Nombre de usuario (usuario con el que ingresa al sistema)
❖ Contraseña
❖ Listado de tiendas que tiene a cargo
❖ Correo electrónico
Cada usuario de bodega central tiene acceso a los siguientes reportes:
● Reporte de envíos generados a una tienda en específico en un intervalo de tiempo.
● Reporte de incidencias solucionadas de una tienda en específico en un intervalo de tiempo.
● Reporte de devoluciones de una tienda en específico en un intervalo de tiempo por estado.

Usuario administrador
Este tipo de usuario se encarga de administrar los otros tipos de usuarios (creación y edición).
Los datos a almacenar son:
❖ Código
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

❖ Nombre
❖ Nombre de usuario (usuario con el que ingresa al sistema)
❖ Contraseña
Cada usuario administrador tiene acceso a los siguientes reportes:
● Reporte de las 5 tiendas con más pedidos en un intervalo de tiempo por estado.
● Reporte de los 5 usuarios con más envíos generados en un intervalo de tiempo.
● Reporte de los 5 usuarios con más pedidos generados en un intervalo de tiempo.
● Reporte de productos más solicitados por las tiendas en un intervalo de tiempo.
● Reporte de productos dañados por tienda en un intervalo de tiempo, se debe mostrar el total de
costo por productos dañados

Pedidos
Los datos a guardar de los pedidos son los siguientes:
❖ Id pedido
❖ Tienda
❖ Usuario
❖ Fecha de pedido
❖ Listado de productos solicitados
❖ Total del pedido
❖ Estado
Un pedido tiene los siguientes estados:
1. Rechazado: Cuando el supervisor rechazó el pedido.
2. Pendiente: Cuando está pendiente de revisión con el supervisor.
3. Solicitado: Cuando el pedido ya está en las bodegas centrales.
4. Enviado: Cuando las bodegas centrales generan el envío.
5. Completado: Cuando se recibió el envío en la tienda.
Nota: El estado 1 y 2 solamente aplica para las tiendas supervisadas.

Envíos
Los datos a guardar de los envíos son los siguientes:
❖ Id envio
❖ Tienda
❖ Usuario
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

❖ Fecha en que salió de la bodega central


❖ Fecha en que se recibió en la tienda
❖ Listado de productos enviados
❖ Total de envio
❖ Estado
Un envío tiene los siguientes estados:
1. Despachado: Cuando el envío fue generado de la bodega central.
2. Recibido: Cuando la tienda recibió el envío.

Incidencias
Los datos a guardar de las incidencias son los siguientes:
❖ Id incidencia
❖ Tienda
❖ Usuario
❖ Fecha de la incidencia
❖ Listado de productos
❖ Estado
Cada producto en una incidencia tiene la siguiente información:
❖ Código de producto
❖ Cantidad afectada
❖ Motivo de incidencia
Una incidencia tiene los siguientes estados:
1. Activa: Cuando la tienda crea la incidencia pero no ha sido resuelta por bodegas centrales.
2. Solucionada: Cuando la incidencia fue solucionada desde bodegas centrales.

Devoluciones
Los datos a guardar de las devoluciones son los siguientes:
❖ Id de devolución
❖ Tienda
❖ Usuario
❖ Fecha de la devolución
❖ Listado de productos
❖ Total
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

❖ Estado
Cada producto en una devolución tiene la siguiente información:
❖ Código de producto
❖ CostoUnitario
❖ CostoTotal
❖ Cantidad afectada
❖ Motivo de devolución
Una devolución tiene los siguientes estados:
1. Activa: Cuando la tienda crea la devolución pero no ha sido procesada por bodegas centrales.
2. Rechazada: Cuando la devolución fue rechazada desde bodegas centrales.
3. Aceptada: Cuando la devolución fue aceptada desde bodegas centrales.

Carga de Datos
Para la carga de datos se recibirá un archivo JSON con la siguiente estructura:

Administradores
"admins" : [
{
"codigo" : 123,
"nombre" : "Administrador 1",
"username" : "admin1",
"password" : "password1"
},
{

}
]

Usuarios tienda
"usuariostienda" : [
{
"codigo" : 123,
"nombre" : "Usuario Tienda 1",
"tienda" : 12,
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

"username" : "uTienda1",
"password" : "password1",
"email" : "aaa@bbb.ccc"
},
{

}
]

Usuarios supervisor tienda


"supervisores" : [
{
"codigo" : 123,
"nombre" : "Supervisor 1",
"username" : "super1",
"password" : "password1",
"email" : "aaa@bbb.ccc"
},
{

}
]

Usuarios bodega central


"encargadosBodega" : [
{
"codigo" : 123,
"nombre" : "Encargado bodega 1",
"username" : "bodega1",
"password" : "password1",
"email" : "aaa@bbb.ccc",
"tiendas" : [2,4,6,12]
},
{

}
]
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Catálogo
"productos" : [
{
"codigo" : 123,
"nombre" : "Producto 1",
"costo" : 13.44,
"precio" : 18.5,
"existencias" : 400
},
{
"codigo" : 124,
"nombre" : "Producto 2",
"costo" : 5.20,
"precio" : 7.5,
"existencias" : 150
}
]

Tiendas
"tiendas" : [
{
"codigo" : 11,
"Nombre" : "Tienda 11",
"direccion" : "Direccion 1",
"tipo" : "supervisada",
"productos" : [
{ "codigo" : 12365, "existencias" : 5 },
{ "codigo" : 35, "existencias" : 160 },
{ "codigo" : 673, "existencias" : 234 }
]
},
{

}
]
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Pedidos
"pedidos" : [
{
"id" : 1,
"tienda" : 3,
"usuario": 4,
"fecha" : "2023-02-13",
"productos" : [
{ "codigo" : 5, "costoU" : 5.00, "cantidad" : 4, "costoTotal" : 20},
{ "codigo" : 35, "costoU" : 7.00, "cantidad" : 3, "costoTotal" : 21}
],
"total" : 41,
"estado" : "SOLICITADO"
},
{

}
]

Envíos
"envios" : [
{
"id" : 44,
"tienda" : 6,
"usuario": 7,
"fechaSalida" : "2023-02-13",
"fechaRecibido" : "",
"productos" : [
{ "codigo" : 5, "costoU" : 5.00, "cantidad" : 4, "costoTotal" : 20 },
{ "codigo" : 35, "costoU" : 7.00, "cantidad" : 4, "costoTotal" : 28}
],
"total" : 48,
"estado" : "DESPACHADO"
},
{

}
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

Incidencias
"incidencias" : [
{
"id" : 1,
"tienda" : 3,
"usuario": 3,
"fecha" : "2023-02-13",
"productos" : [
{ "codigo" : 5, "cantidad" : 5 "motivo" : "SOBRANTE PRODUCTO" },
{ "codigo" : 35, "cantidad" : 7, "motivo" : "PRODUCTO DAÑÁDO"}
],
"solucion" :"",
"estado" : "ACTIVA"
},
{

}
]

Devoluciones
"devoluciones" : [
{
"id" : 4,
"tienda" : 3,
"usuario": 2,
"fecha" : "2023-02-15",
"productos" : [
{
"codigo" : 5,
"costo" : 4,
"cantidad" : 5,
"costoTotal" : 20,
"motivo" : "SOBRANTE PRODUCTO"
},
{
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

"codigo" : 35,
"costo" : 10
"cantidad" : 3,
"costoTotal" : 30,
"motivo" : "PRODUCTO DAÑÁDO"
}
],
"total" : 50,
"estado" : "ACTIVA"
},
{

}
]

Importante
● Programa 100% web.
● Se deben manejar todos los posibles errores.
● Cuando una consulta dependa de un intervalo de tiempo, este se puede dejar vacío para tomar
en cuenta todos los registros.
● El estudiante puede agregar las consultas, listados y funciones que considere necesarias
para que el programa esté completo.
● Es muy importante que la interfaz de usuario sea fácil de usar y cómoda para el usuario.
● Obligatorio para tener derecho al siguiente proyecto.
● Las copias obtendrán nota de cero y se notificará a coordinación.
● Obligatorio el uso de Maven para el desarrollo del proyecto.
● Las malas prácticas de desarrollo serán penalizadas.

Entrega
La fecha de entrega es el día martes 20 de marzo antes de las 14:30 horas. Los componentes a
entregar en repositorio de git son:
● Código fuente
● Manual técnico incluyendo (PDF):
○ Diagrama de clases
○ Diagrama E/R
○ Diagrama de tablas
○ Mapeo físico de la DB
CENTRO UNIVERSITARIO DE OCCIDENTE
DIVISIÓN DE CIENCIAS DE LA INGENIERÍA
INTRODUCCIÓN A LA PROGRAMACION Y COMPUTACION 2
PROYECTO 1
PRIMER SEMESTRE 2023

● Manual de usuario (PDF)

También podría gustarte