Definición, análisis y diseño de un sistema de intranet para una empresa productora de bienes y servicios para el sector eléctrico colombiano
Autor: Moreno Ruiz, Zuleima Marcela
Asesor: Correa Espinal, Alexander Alberto (Thesis advisor)
Fecha: 2009
Programa: Bogotá - Medicina -Fisioterapia
Facultad: Facultad de Medicina

Resumen: El siguiente trabajo tiene como objetivo principal construir la base documental necesaria para lograr que un producto de software cumpla con todos sus objetivos funcionales, además de contar con suficiente información que permita el desarrollo de futuras versiones; para esto se han empleado distintos métodos aplicados al desarrollo de software, aplicados a un caso particular, en este caso a una aplicación web denominada intranet para una empresa del sector industrial colombiano. La cual permite mantener un acceso constante a la información de la compañía, controlar los diferentes procesos que en esta se desarrollan además de unificar la información suministrada por las diversas sedes que la componen. / Abstract: The following work has as main objective to build documentary base needed for make that software product meets all its functional objectives, besides to have enought information to let development future versions; for this have been used distint methods applied to development software, applied to a particular case, an application web called intranet for a industrial colombian company, which allows a constant access to company information, controlling the different processes that take place in and stay together the information supplied by distincts offices.

UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MEDELLÍN
FACULTAD DE MINAS
EESSCCUUEELLAA DDEE SSIISSTTEEMMAASS EE IINNFFOORRMMÁÁTTIICCAA
TRABAJO DE GRADO
DEFINICION, ANALISIS Y DISEÑO DE UN SISTEMA DE
INTRANET PARA UNA EMPRESA PRODUCTORA DE
BIENES Y SERVICIOS PARA EL SECTOR ELECTRICO
COLOMBIANO
Ingeniería de Sistemas
Presentado por:
Zuleima Marcela Moreno Ruiz
Dirigido por:
Gloria Lucia Giraldo
Medellín
Semestre 01/2009TABLA DE CONTENIDO
TEMA PÁGINA
TABLA DE CONTENIDO ...................................................................................................................... 2
TABLA DE ILUSTRACIONES .............................................................................................................. 3
INDICE DE TABLAS ............................................................................................................................. 4
ENTREGABLE 1: CONTEXTO DEL SOFTWARE ............................................................................. 5
1.1. ACTORES ................................................................................................................................ 5
1.1.1. Estructura de la Organización ...................................................................................... 5
1.1.1.1. Organigrama ................................................................................................................. 5
1.1.1.2. Responsabilidades Generales de las Áreas ................................................................... 6
1.1.2. Área del Problema ........................................................................................................ 6
1.1.2.1. Objetivos y Responsabilidades Propias del Área ......................................................... 6
1.1.2.2. Organigrama del Área .................................................................................................. 6
1.1.2.3. Responsabilidades de las Diferentes Componentes del Área ....................................... 7
1.1.3. Actores y Roles ............................................................................................................ 7
1.2. ESQUEMA PRECONCEPTUAL ............................................................................................ 7
1.2.1. Discurso en UN-Lencep ............................................................................................... 7
1.2.2. Esquema Preconceptual. ............................................................................................. 10
1.3. MODELO DEL DOMINIO ................................................................................................... 11
ENTREGABLE 2: ANALISIS DEL PROBLEMA .............................................................................. 12
2.1. PROCESOS DEL AREA ....................................................................................................... 12
2.1.1. Diagrama de Procesos. ............................................................................................... 12
2.1.2. Tabla Explicativa de Procesos .................................................................................... 13
2.1.3. Reglas del Negocio ..................................................................................................... 17
2.1.4. Diccionario de Datos .................................................................................................. 19
2.2. OBJETIVOS DEL AREA ...................................................................................................... 22
2.3. PROBLEMAS Y CAUSAS ................................................................................................... 23
ENTREGABLE 3: PROPUESTA DE SOLUCION ............................................................................. 24
3.1. NUEVO ORGANIGRAMA .................................................................................................. 24
3.1.1. Organigrama de la Solución ....................................................................................... 24
3.2. CAMBIOS EN LOS ACTORES ............................................................................................ 24
3.3. NUEVO DIAGRAMA DE PROCESOS ............................................................................... 25
3.3.1. Diagrama de Procesos de la Solución ........................................................................ 25
3.3.1.1. Tabla Explicativa de Procesos de la Solución ............................................................ 26
3.3.1.2. Nuevas Reglas del Negocio ........................................................................................ 34
3.3.1.3. Nuevo Diccionario de Datos ...................................................................................... 36
3.4. CASOS DE USO .................................................................................................................... 40
3.5. CARTA DE NAVEGACION ................................................................................................ 46
3.6. VALORACION DE LA PROPUESTA DE SOLUCION...................................................... 46
3.7. COSTEO DE LA PROPUESTA DE SOLUCION ................................................................ 47
ENTREGABLE 4. ESQUEMA CONCEPTUAL ................................................................................. 50
4.1. CONSULTAS Y TRANSACCIONES .................................................................................. 50
4.1.1. Consultas .................................................................................................................... 50
4.1.2. Transacciones ............................................................................................................. 514.2. DIAGRAMA DE CLASES .................................................................................................... 52
4.3. DERIVACIONES Y RESTRICCIONES ............................................................................... 53
4.3.1. Derivaciones ............................................................................................................... 53
4.3.2. Restricciones .............................................................................................................. 53
4.4. DIAGRAMA DE COMUNICACIÓN ................................................................................... 54
ENTREGABLE 5. DISEÑO DE LOS DATOS ..................................................................................... 55
5.1. CONVERSION MODELO CONCEPTUAL AL RELACIONAL ........................................ 55
5.1.1. Diagrama de Clases .................................................................................................... 55
5.1.2. Diagrama Entidad – Asociación ................................................................................. 56
5.1.3. Modelo Relacional ..................................................................................................... 56
5.2. PLAN DE CAPACIDAD ....................................................................................................... 59
5.3. PREDISEÑO ARQUITECTONICO ...................................................................................... 60
5.3.1. Identificación de clases según estereotipos ................................................................ 60
5.3.2. Diagramas de secuencia ............................................................................................. 62
ENTREGABLE 6. DISEÑO DEL COMPORTAMIENTO .................................................................. 65
6.1. CASOS DE USO INSERTANDO SECUENCIAS EN LOS FLUJOS Y SUBFLUJOS ....... 65
6.2. CHEQUEO DE CONSISTENCIA ENTRE LOS CASOS DE USO Y EL MODELO DE
CLASES............................................................................................................................................. 69
6.3. DIAGRAMA UML DE DESPLIEGUE................................................................................. 74
6.4. DIAGRAMA UML DE PAQUETES .................................................................................... 74
6.5. ESQUEMA DE AUTORIZACION ....................................................................................... 74
ENTREGABLE 7. DISEÑO DE LA APLICACIÓN ............................................................................ 76
7.1. INCORPORACION DE CODIGO EN LOS CASOS DE USO ............................................ 76
7.2. CREACION DEL SCRIPT DE LA BASE DE DATOS ........................................................ 81
7.2.1. Creación de Tablespaces ............................................................................................ 81
7.2.2. Creación de Tablas ..................................................................................................... 81
7.2.3. Creación de índices .................................................................................................... 85
7.2.4. Inserción de datos ....................................................................................................... 85
ENTREGABLE 8. DOCUMENTACION ............................................................................................. 87
8.1. MANUAL DE USUARIO ..................................................................................................... 87
PROTOTIPO ........................................................................................................................................ 105
ANEXOS.............................................................................................................................................. 105
TABLA DE ILUSTRACIONES
TEMA PÁGINA
Figura 1. Organigrama de la Organización .............................................................................................. 5
Figura 2. Organigramas del Área ............................................................................................................. 6
Figura 3. Esquema Preconceptual. ......................................................................................................... 10
Figura 4. Modelo del Dominio ............................................................................................................... 11
Figura 5. Diagrama de Procesos. ............................................................................................................ 12
Figura 6. Diagrama de Objetivos ........................................................................................................... 22
Figura 7. Diagrama Causa - Efecto ........................................................................................................ 23Figura 8. Nuevo Organigrama de la Organización ................................................................................. 24
Figura 9. Diagrama de Procesos de la Solución. .................................................................................... 25
Figura 10. Carta de Navegación de la Solución ..................................................................................... 46
Figura 11. Diagrama de Clases .............................................................................................................. 52
Figura 12. Diagramas de Comunicacion ................................................................................................ 54
Figura 13. Diagrama de Clases – Diseño ............................................................................................... 55
Figura 14. Modelo Entidad - Relacion ................................................................................................... 56
Figura 15. Modelo Relacional ................................................................................................................ 59
Figura 16. Diagrama de Secuencia: Ingresar COtizacion. ..................................................................... 62
Figura 17. Diagrama de Secuencia: Generar Informes – Estado del Proyecto....................................... 63
Figura 18. Diagrama de Secuencia: Generar Informes – Cotizaciones .................................................. 63
Figura 19. Diagrama de Secuencia: Generar Informes - Ordenes de Produccion .................................. 64
Figura 20. Chequeo de Consistencia: Ingresar Cotización ..................................................................... 70
Figura 21. Chequeo de Consistencia: Generar Informes ........................................................................ 72
Figura 22. Diagrama UML de Despliegue ............................................................................................. 74
Figura 23. Diagrama de Paquetes ........................................................................................................... 74
INDICE DE TABLAS
TEMA PÁGINA
Tabla 1. Tabla Explicativa de Procesos.................................................................................................. 16
Tabla 2. Reglas del Negocio .................................................................................................................. 19
Tabla 3. Diccionario de Datos ................................................................................................................ 21
Tabla 4. Tabla Explicativa de Procesos de la Solución ......................................................................... 33
Tabla 5. Nuevas Reglas del Negocio ..................................................................................................... 36
Tabla 6. Nuevo Diccionario de Datos. ................................................................................................... 39
Tabla 7. Caso de Uso: Ingresar Cotización ............................................................................................ 41
Tabla 8. Caso de Uso: Generar Informes ............................................................................................... 43
Tabla 10. Valoración de la Propuesta de Solución ................................................................................. 47
Tabla 11. Factor de Complejidad Técnica de la Solución ...................................................................... 48
Tabla 12. Factor de Complejidad del Entorno ....................................................................................... 49
Tabla 12. Concurrencia .......................................................................................................................... 59
Tabla 13. Requisitos de las Transacciones ............................................................................................. 60
Tabla 14. Dimensionamiento de los objetos de datos ............................................................................ 60
Tabla 16. Flujos y SubFlujos: Ingresar Cotización ................................................................................ 66
Tabla 16. Flujos y SubFlujos: Generar Informes ................................................................................... 69
Tabla 17. Chequeo de Consistencia: Ingresar Cotización ...................................................................... 69
Tabla 18. Operaciones: Ingresar Cotización .......................................................................................... 71
Tabla 19. Chequeo de Consistencia: Generar Informes ......................................................................... 72
Tabla 20. Operaciones: Generar Informes ............................................................................................. 73
Tabla 22. Esquema de Autorización ...................................................................................................... 75
Tabla 92. Código Fuente: Ingresar Cotización ....................................................................................... 77
Tabla 23. Código Fuente: Informe Estado del Proyecto ........................................................................ 81ENTREGABLE 1:
CONTEXTO DEL SOFTWARE
1.1. ACTORES
1.1.1. Estructura de la Organización
1.1.1.1. Organigrama
Figura 1. Organigrama de la Organización1.1.1.2. Responsabilidades Generales de las Áreas
Se busca ser una empresa líder en procesos de automatización y en la fabricación de subestaciones
eléctricas, tablero de control y potencia, a partir del conocimiento y desarrollo de las necesidades de
los clientes y del mercado colombiano, brindado soluciones de calor agregado con un nivel de
excelencia que lleve sus expectativas y de esta manera se garantice la lealtad de los clientes y la
difusión de los productos.
• Cumplir con los objetivos rentables de nuestra organización, haciendo un buen uso de los recursos
disponibles
• Proporcionar adecuadas respuestas tecnológicas a la creciente industria colombiana.
• Participar activamente para lograr una meta común en un equipo de trabajo
• Conocer y entender las necesidades de nuestros clientes actuales y potenciales, superar sus
expectativas y lograr su lealtad
1.1.2. Área del Problema
1.1.2.1. Objetivos y Responsabilidades Propias del Área
• Brindar un servicio integral de mantenimiento correctivo y preventivo de los equipos
electromecánicos asociados a la instalación eléctrica.
• Asignar las responsabilidades, los recursos y la autoridad a uno o a varios miembros del equipo de
trabajo para que cumplan con los objetivos laborales, en el tiempo requerido, con los costos
estimados y con la calidad esperada.
• Prestar un servicio de implementación industrial logrando participar en los más importantes
proyectos desarrollados para clientes de diversos sectores.
1.1.2.2. Organigrama del Área
Área de Ingeniería Área de Automatización
Area Administrativa
Figura 2. Organigramas del Área1.1.2.3. Responsabilidades de las Diferentes Componentes del Área
• Diseño, fabricación, instalación y puesta en marcha de tableros de potencia y de control, centros de
control de motores y subestaciones eléctricas y automatización de procesos.
• Proporcionar servicios integrales que van desde el asesoramiento inicial, pasando por el diseño de
la procesos inteligentes, desarrollo de sistemas de control, hasta la puesta en marcha, capacitación,
mantenimiento y soporte pos venta.
• Prestar el servicio técnico puntual y presencial para las aplicaciones que así lo requieran como
también asistencia y soporte a través de las redes telefónicas y/o remotas
1.1.3. Actores y Roles
SECRETARIA DE PERSONAL
• Administrar lo sistemas en la empresa que tienen relación con el manejo del personal
• Registrar la información relacionada con cada empleado en el momento de su ingreso a la empresa
• Actualizar la información del empleado cuando este reporte algún cambio
PERSONAL ADMINISTRATIVO
• Registrar las cotizaciones solicitadas por los clientes
• Asignar un consecutivo a la cotización registrada
• Registrar las ordenes de producción solicitadas por los clientes
• Asignar consecutivo y responsable a la orden de producción
• Dar inicio a la producción a partir de las ordenes de producción registradas
INGENIEROS
• Realizar un reporte de cada visita realizada al cliente, especificando la información sobre el trabajo
realizado
DIRECTOR DE INGENIERIA
• Revisar el reporte de las visitas realizado por los ingenieros
• Generar un informe de las visitas realizadas, calculando el costo de estas según el número de horas
y el cliente.
1.2. ESQUEMA PRECONCEPTUAL
1.2.1. Discurso en UN-Lencep
Departamento tiene Indicativo Departamento
Departamento tiene Nombre Departamento
Departamento tiene Ciudad
Ciudad tiene Indicativo Ciudad
Ciudad tiene Nombre Ciudad
Ciudad tiene EmpleadoÁrea tiene Código de Área
Área tiene Nombre del Área
Área tiene Empleado
Empleado tiene Cedula
Empleado tiene Nombre Empleado
Empleado tiene Apellido Empleado
Empleado tiene Fecha de Nacimiento
Empleado tiene Dirección de Empleado
Empleado tiene Teléfono de Empleado
Empleado tiene Email Empleado
Empleado tiene Cargo
Empleado tiene Fecha de Ingreso
Empleado tiene Fecha de Retiro
Empleado tiene Foto
Empleado tiene Cotización
Empleado tiene Orden de Producción
Empleado tiene Cita
Empleado tiene Reporte de Visita
Cita tiene Consecutivo cita
Cita tiene Cliente Cita
Cita tiene Contacto Cita
Cita tiene Teléfono Contacto
Cita tiene Fecha Cita
Cita tiene Dirección Cita
Cita tiene Hora Cita
Cita tiene Observaciones
Cita tiene Propósito
Secretaria de Personal es Empleado
Secretaria de Personal ingresa Empleado
Secretaria de Personal modifica Empleado
Cotización tiene Consecutivo Cotización
Cotización tiene Fecha Cotización
Cotización tiene Cliente Cotización
Cotización tiene Descripción Cotización
Cotización tiene Empleado
Cotización tiene Orden de Producción
Orden de Producción tiene Consecutivo OP
Orden de Producción tiene Fecha Inicio
Orden de Producción tiene Fecha Entrega
Orden de Producción tiene Cliente OP
Orden de Producción tiene Nombre OP
Orden de Producción tiene Descripción OP
Orden de Producción tiene Observaciones OP
Orden de Producción tiene Estado OP
Orden de Producción tiene Tipo
Personal Administrativo es EmpleadoPersonal Administrativo registra Orden de Producción
Personal Administrativo consulta Orden de Producción
Personal Administrativo modifica Orden de Producción
Personal Administrativo registra Cotización
Personal Administrativo consulta Cotización
Personal Administrativo modifica Cotización
Ingeniero es Empleado
Ingeniero escribe Reporte Visita
Ingeniero Reporta Cita
Ingeniero Asiste Cita
Cliente tiene Cita
Cliente tiene Cotización
Cliente tiene Orden de Producción
Cliente Solicita Cita
Cliente Solicita Cotización
Cliente Solicita Orden de Producción
Director de Ingeniería es Empleado
Director de Ingeniería consulta Reporte Visita, entonces Director de Ingeniería Ingresa Valor Hora,
entonces Director de Ingeniería Genera Reporte Visita
Reporte Visita tiene Consecutivo Visita
Reporte Visita tiene Contacto Visita
Reporte Visita tiene Cliente Visita
Reporte Visita tiene Fecha Visita
Reporte Visita tiene Hora Inicial
Reporte Visita tiene Hora Final
Reporte Visita tiene Trabajo Realizado
Reporte Visita tiene Trabajo Solicitado
Reporte Visita tiene Observaciones Visita
Reporte Visita tiene Valor Hora1.2.2. Esquema Preconceptual.
Figura 3. Esquema Preconceptual.1.3. MODELO DEL DOMINIO
Figura 4. Modelo del DominioENTREGABLE 2:
ANALISIS DEL PROBLEMA
2.1. PROCESOS DEL AREA
2.1.1. Diagrama de Procesos.
Figura 5. Diagrama de Procesos.2.1.2. Tabla Explicativa de Procesos
Reglas del Negocio
Nombre Objetivo Duración / Frecuencia Cómo / Dónde Problemas
Aplicadas
RN003. Usuarios
Duración: 20 minutos
O Promover un buen El empleado es ingresado RN005. Manejo de
7.
P . Ingresa la manejo de las órdenes de por la secretaria de SP4. Se presenta Empleados
1 Frecuencia: Cada que
información del producción. personal en las diferentes desequilibrio en la RN006. Cotizaciones
sea contratado nuevo
empleado R . Hacer que se ingrese bases de datos de la Carga Laboral RN007. Ordenes de
8 personal dentro de la
el empleado. empresa. Producción
empresa.
RN017. Personal
Duración: 10 minutos RN003. Usuarios
La modificación de la
O Promover un buen RN005. Manejo de
7. información del empleado
P Modifica la manejo de las órdenes de Frecuencia: Cuando se Empleados
2. es realizada por la
información del producción. presente alguna RN006. Cotizaciones
secretaria de personal en
empleado R . Hacer que se ingrese modificación en la RN007. Ordenes de
8 las bases de datos que se
el empleado. información del Producción
requiera.
empleado. RN017. Personal
RN006. Cotizaciones
RN008. Cotizaciones–
El personal administrativo
Duración: 5 minutos SP1. Se hace un mal Ordenes de Producción
P . Registra la registra las cotizaciones
3 R . Lograr que se registre manejo de las Órdenes RN013. Cotización
cotización hecha 9 solicitadas por los cliente
la cotización. Frecuencia: 8 veces al de Producción y Asociada
por el cliente en un archivo de Excel,
día Cotizaciones. RN015. Cotización Cita
mientras este disponible
RN016. Administración
RN012. Consecutivo
P Registra la O Garantizar que las Duración: 7 minutos El personal administrativo SP1. Se hace un mal RN007. Ordenes de
4. 6.
orden de ordenes de producción se registra las ordenes de manejo de las Ordenes Producción
producción hecha terminen a tiempo. Frecuencia: 4 veces al producción solicitadas de Producción y RN008. Cotizaciones–por el cliente O Promover un buen día por los cliente en un Cotizaciones Ordenes de Producción
7.
manejo de las órdenes de archivo de Excel, mientras RN009. Fechas
producción. este disponible SP2. No se cumple con RN016. Administración
R Lograr que se registre las fechas de entrega del RN012. Consecutivo
6.
orden de producción producto
RN006. Cotizaciones
El Personal encargado
RN008. Cotizaciones–
Duración: 2 a 5 minutos puede consultar las
P . Consulta Ordenes de Producción
5 R . Permitir que se cotizaciones realizadas
cotización del 10 RN013. Cotización
modifique la cotización. Frecuencia: 2 veces al por los cliente, desde el
cliente Asociada
día archivo de Excel, mientras
RN015. Cotización Cita
este disponible.
RN016. Administración
RN006. Cotizaciones
El personal administrativo
RN008. Cotizaciones–
realiza las modificación
P Modifica la Duración: 3 minutos Ordenes de Producción
6. R . Permitir que se en la cotización
cotización del 10 RN013. Cotización
modifique la cotización. solicitadas por el cliente,
cliente Frecuencia: 1 vez al día Asociada
en el archivo de Excel,
RN015. Cotización Cita
mientras este disponible.
RN016. Administración
O Promover un buen El Personal encargado RN007. Ordenes de
7.
manejo de las órdenes de Duración: 3 a 6 minutos puede consultar las Producción
P . Consulta orden
7 producción. ordenes de producción RN008. Cotizaciones–
de producción del
R Permitir que se Frecuencia: 2 veces al realizadas por los cliente, Ordenes de Producción
cliente 7.
modifique la orden de día desde el archivo de Excel, RN009. Fechas
producción. mientras este disponible. RN016. Administración
O Promover un buen El personal administrativo SP1. Se hace un mal RN007. Ordenes de
P Modifica orden 7. Duración: 4 minutos
8. manejo de las órdenes de realiza las modificación manejo de las Ordenes Producción
de producción del
producción. en las ordenes de de Producción y RN008. Cotizaciones–
cliente Frecuencia: 2 vez al día
R Permitir que se producción solicitadas Cotizaciones Ordenes de Producción
7.modifique la orden de por el cliente, en el RN009. Fechas
producción. archivo de Excel, mientras SP2. No se cumple con RN016. Administración
este disponible. las fechas de entrega del
producto
El director de ingeniería
O Brindar un servicio
2. recibe el reporte de visitas C9. El personal RN010. Reporte Visitas
P . Consulta integral de Mantenimiento Duración: 20 minutos
9 realizado por lo encargado de las RN011. Informe Visitas
Reporte de Visita de y soporte
ingenieros, cada uno de solicitudes no esta RN018. Informes
los Ingenieros R Hacer que se consulte Frecuencia: 1 vez al mes
4. forma individual y en capacitado en el tema Ingeniería
Reporte de Visita
diferente formato.
El director de ingeniería
O Brindar un servicio
2. debe calcular por cada RN010. Reporte Visitas
integral de Mantenimiento Duración: 15 minutos
P Ingresa Valor reporte de visita el RN011. Informe Visitas
10. y soporte
Hora de la Visita número de horas, y según RN018. Informes
R Hacer que se ingrese Frecuencia: 1 vez al mes
3. el cliente asignar valor de Ingeniería
Valor Hora
la hora.
El director de ingeniería
luego de revisados y RN010. Reporte Visitas
Duración: 1 hora
P . Genera Reporte R Lograr que se genere costeados los reportes de RN011. Informe Visitas
11 1.
de la Visita un reporte de visita las visitas, realiza un RN018. Informes
Frecuencia: 1 vez al mes
informe de estas, con su Ingeniería
costo total.
O Brindar un servicio
2. Duración: 20 minutos Los ingenieros escriben C9. El personal RN010. Reporte Visitas
integral de Mantenimiento
P Escribe Reporte un reporte de las visitas encargado de las RN011. Informe Visitas
12. y soporte
Visita Frecuencia: 3 veces por realizas, informando solicitudes no esta RN018. Informes
R5. Lograr que se realize
semana fecha, tiempo y motivo. capacitado en el tema Ingeniería
reporte de visitaEl ingeniero debe
O Garantizar que se Duración: 5 minutos
5. reportar cada cita de SP3. No se tienen claras
P . Reporta Cita asista a la cita
13 venta que tenga con un las necesidades del RN014. Cita
con el Cliente R2. Hacer que se reporte Frecuencia: 4 veces por
cliente, informando fecha Cliente
la Cita semana
y hora.
Duración: 2 horas
El ingeniero debe cumplir
P Asiste a la Cita O Garantizar que se
14. 5. las citas planeadas con RN014. Cita
con el Cliente asista a la cita Frecuencia: 4 veces por
los clientes.
semana
Se reporta una necesidad
Duración: 2 minutos en la empresa, el cliente
SP3. No se tienen claras
P Solicita Cita O Garantizar que se desde su oficina solicita
15. 5. las necesidades del RN014. Cita
con Empleado asista a la cita Frecuencia: 4 veces por una cita con un vendedor
Cliente
semana para resolver sus
necesidades.
Duración: 15 minutos El cliente plantea sus SP1. Se hace un mal
P Solicita R . Lograr que se registre necesidades y solicita que manejo de las Ordenes RN014. Cita
16. 9
Cotización la cotización. Frecuencia: 3 veces por se haga una cotización del de Producción y RN015. Cotización Cita
semana trabajo que requiere. Cotizaciones
Duración: 15 minutos El cliente plantea sus SP1. Se hace un mal
P Solicita Orden R Lograr que se registre necesidades, y solicita que manejo de las Ordenes
17. 6. RN014. Cita
de Producción orden de producción Frecuencia: 2 veces por se comience el trabajo que de Producción y
semana requiere. Cotizaciones
Tabla 1. Tabla Explicativa de Procesos2.1.3. Reglas del Negocio
Reglas del Negocio
Código Nombre Descripción Fórmula Fuente
Relacionadas
La solución al problema debe ser accesible
desde cualquier lugar, es por esto de dicha
RN001 Plataforma Compañía RN002
solución debe estar orientada a la Web con
acceso desde Internet.
En caso, que la solución del problema sea un
sistema informático. El sistema debe estar en
RN002 Interactividad capacidad de interactuar con otros sistemas Compañía RN001
como bases de datos, para la consulta y
verificación de información.
Solo tendrán acceso al sistema aquellos
RN003 Usuarios usuarios que tengan una cuenta de usuario, que Compañía RN002
se obtendrá con previa autorización.
En caso, que la solución del problema sea un
sistema informático. Este, debe tener campos
RN004 Contenido Compañía
obligatorios, campos de texto variable y
sugerencias.
La información de los empleados es registrada
en varias bases de datos dentro de la empresa,
RN005 Manejo de Empleados que se buscan unificar para que tengan Compañía RN003
relación con los procesos de cotización y
órdenes de producción.
Toda cotización realizada debe estar asociada
RN006 Cotizaciones a un cliente y un responsable, que se encargara Compañía RN003, RN005
de su desarrollo.
RN007 Ordenes de Producción Toda orden de producción debe estar asociada Compañía RN003, RN005a un cliente y un responsable.
Una orden de producción puede estar asociada
Cotización-Orden de
RN008 a una cotización realizada con anterioridad por Compañía RN006, RN007, RN013
Producción
el mismo cliente.
Toda orden de producción debe tener una fecha
RN009 Fechas de inicio y una fecha de entrega que se deben Compañía RN007
cumplir.
Cada ingeniero luego de realizadas las visitas
de soporte debe entregar un reporte del trabajo
RN010 Reporte Visitas Compañía RN005
realizado, especificando cliente, fecha, horas y
una descripción.
El director de ingeniería realiza un informe de
visitas a partir de los reportes presentados por
RN011 Informe de Visitas los ingenieros, informe que contiene la Compañía RN010
información de la visita y el valor hora a
cotizar por la misma.
Ninguna orden de producción o cotización
RN012 Consecutivo Compañía RN006, RN007
pueden tener el mismo consecutivo
La información de la cotización asociada a una
RN013 Cotización Asociada orden de producción debe ser la misma Compañía RN006, RN007, RN008
información de esta.
El cliente es quien solicita la cita con los
RN014 Cita Compañía
empleados de la compañía
De las citas realizadas con el cliente es posible
RN015 Cotización Cita que el empleado obtenga una cotización u Compañía RN006, RN007
orden de producción
Solamente el personal administrativo tiene
RN016 Administración Compañía RN006, RN007
permitido el manejo de las cotizaciones yordenes de producción dentro de la empresa.
La secretaria de personal es la única
RN017 Personal encargada del manejo de la información de los Compañía RN003, RN005
empleados.
El director de ingeniería, es el único con acceso
RN018 Informes Ingeniería Compañía RN011
al informe de visitas de los ingenieros.
Tabla 2. Reglas del Negocio
2.1.4. Diccionario de Datos
Nombre Alias Cómo/Dónde Descripción Componentes
Se encarga del manejo de la información de
cada uno de los empleados de la compañía, de
Secretaria de Personal Entidad Externa
su almacenamiento cuando son nuevos, y de su
modificación en el momento que sea necesario.
Se encarga de la administración (ingreso,
Personal Administrativo Entidad Externa consulta y modificación) de las cotizaciones y
ordenes de producción de la compañía.
Realiza el informe de las visitas realizadas por
Director de Ingeniería Entidad Externa los ingenieros a los clientes, haciendo una
cotización de estas.
Realiza las visitas a los clientes, y realiza un
Ingeniero Entidad Externa
reporte del trabajo realizado en esta.
Solicita las visitas por parte de la empresa,
Cliente Entidad Externa además de realizar las cotizaciones y ordenes
de producción según sus necesidades.
Empleado Almacén de entrada de Registra los empleados y toda la información de - Ceduladatos que se empleara para estos. - Nombre Empleado
almacenar toda la - Apellido Empleado
información relacionada - Fecha de Nacimiento
con los empleados de la - Dirección Empleado
compañía. - Teléfono Empleado
- Email Empleado
- Cargo
- Fecha de Retiro
- Fecha de Ingreso
- Foto
Almacén de Entrada de - Consecutivo Cotización
datos donde se hará un Registra la información relacionada con las - Cliente Cotización
Cotización COT
registro de las cotizaciones cotizaciones del cliente. - Fecha de Cotización
solicitadas por el cliente. - Descripción Cotización
- Consecutivo OP
- Fecha Inicio
Almacén de Entrada de - Fecha Entrega
datos donde se hará un Registra la información relacionada con las - Cliente OP
Orden de Producción OP registro de las ordenes de órdenes de producción solicitadas por los - Nombre OP
producción solicitadas por clientes. - Descripción OP
el cliente - Observaciones OP
- Estado OP
- Tipo
- Consecutivo Visita
Almacén de Entrada y
- Cliente Visita
Salida de Datos, en el cual
Registra la información de la visita realizada - Contacto Visita
Reporte Visita Visita se almacenara el reporte de
por el ingeniero al cliente. - Fecha Visita
las visitas realizadas por los
- Hora Inicial
ingenieros.
- Hora Final- Valor Hora
- Trabajo Solicitado
- Trabajo Realizado
- Observaciones Visita
- Consecutivo Cita
- Cliente Cita
Almacén de Entrada de
- Contacto Cita
datos donde se tendrá un
Registra la información de las citas con los - Teléfono Contacto
Cita Evento registro de las citas de los
clientes. - Hora Cita
ingenieros y vendedores con
- Dirección Cita
los clientes.
- Fecha Cita
- Propósito
Tabla 3. Diccionario de Datos2.2. OBJETIVOS DEL AREA
Figura 6. Diagrama de Objetivos2.3. PROBLEMAS Y CAUSAS
Figura 7. Diagrama Causa - EfectoENTREGABLE 3:
PROPUESTA DE SOLUCION
3.1. NUEVO ORGANIGRAMA
3.1.1. Organigrama de la Solución
Área de Ingeniería Área de Automatización
Area Administrativa
Figura 8. Nuevo Organigrama de la Organización
3.2. CAMBIOS EN LOS ACTORES
La solución planteada no presenta muchos cambios en los actores y actividades planeadas
inicialmente, ya que estos continuaran con sus labores solo que en una herramienta informática que les
agilizara sus actividades. Dentro de esta solución solo se agregaran dos nuevos usuarios con tareas
muy bien definidas como veremos a continuación:
• ADMINISTRADOR DEL SISTEMA
Sera el único usuario con acceso a cada uno de los componentes del aplicativo, es el usuario que tiene
todos los permisos para el manejo del sistema, será el encargado de asignar los permisos del usuario
según sea su labor dentro del sistema y de modificar los datos de usuario para los empleados.
• VISITANTE
Todo usuario una vez registrado en el sistema, tendrá por defecto permiso de visitante, que solo le
permitirá ver los diferentes elementos del sistema como son: clientes, empleados, y solicitudes de los
clientes, sin opción de modificar o registrar.3.3. NUEVO DIAGRAMA DE PROCESOS
3.3.1. Diagrama de Procesos de la Solución
Figura 9. Diagrama de Procesos de la Solución.3.3.1.1. Tabla Explicativa de Procesos de la Solución
Reglas del Negocio
Nombre Objetivo Duración / Frecuencia Cómo / Dónde Problemas
Aplicadas
Duración: 10 minutos
P Recibe la La secretaria de personal RN005. Manejo de
1. R . Hacer que se ingrese
información del 8 Frecuencia: Cada que sea recibe del empleado la Empleados
el empleado
Empleado contratado nuevo personal documentación solicitada RN017. Personal
dentro de la empresa
RN003. Usuarios
O Promover un buen Duración: 12 minutos El empleado es ingresado RN005. Manejo de
7.
P . Ingresa manejo de las órdenes de por la secretaria de SP4. Se presenta Empleados
2
información del producción. Frecuencia: Cada que sea personal en las diferentes desequilibrio en la RN006. Cotizaciones
empleado R . Hacer que se ingrese contratado nuevo personal bases de datos de la Carga Laboral RN007. Ordenes de
8
el empleado. dentro de la empresa. empresa. Producción
RN017. Personal
O Promover un buen Duración: 1 minuto La secretaria de personal
7.
P Selecciona manejo de las órdenes de debe indicar la ciudad RN005. Manejo de
3.
ciudad y área de producción. Frecuencia: Cada que sea donde trabajara el Empleados
trabajo R . Hacer que se ingrese contratado nuevo personal empleado y el área dentro RN017. Personal
8
el empleado. dentro de la empresa de la compañía
RN003. Usuarios
La Secretaria de personal
RN005. Manejo de
O Promover un buen Duración: 2 minutos da un nombre de usuario
7. Empleados
P Asigna Nombre manejo de las órdenes de al empleado para el
4. RN017. Personal
de Usuario y producción. Frecuencia: Cada que sea acceso al sistema, y una
RN019. Nombre de Usuario
Contraseña R . Hacer que se ingrese contratado nuevo personal contraseña el cual también
8 RN020. Rol por Defecto
el empleado. dentro de la empresa será la contraseña
RN023. Manejo de Usuarios
inicialmente.
RN024. RolesDuración: 1 minutos El sistema lista los
empleados registrados y la
RN005. Manejo de
P Busca empleado R . Hacer que se ingrese Frecuencia: Cuando se secretaria de personal
5. 8 Empleados
a modificar el empleado. presente alguna busca el empleado sobre
RN017. Personal
modificación en la el cual va a hacer
información del empleado. modificaciones...
Duración: 2 minutos
El sistema presenta una
RN005. Manejo de
P Ve información R . Hacer que se ingrese Frecuencia: Cuando se vista de la información del
6. 8 Empleados
del empleado el empleado. presente alguna empleado para luego dar
RN017. Personal
modificación en la la opción de modificar
información del empleado.
RN003. Usuarios
Duración: 2 minutos La modificación de la
O Promover un buen RN005. Manejo de
7. información del empleado
manejo de las órdenes de Empleados
P Modifica la Frecuencia: Cuando se es realizada por la
7. producción. RN006. Cotizaciones
información presente alguna secretaria de personal en
R . Hacer que se ingrese RN007. Ordenes de
8 modificación en la las bases de datos que se
el empleado. Producción
información del empleado. requiera.
RN017. Personal
Se reporta una necesidad
Duración: 2 minutos en la empresa, el cliente
SP3. No se tienen claras
P Solicita Cita O Garantizar que se desde su oficina solicita
8. 5. las necesidades del RN014. Cita
con Empleado asista a la cita Frecuencia: 6 veces por una cita con un vendedor
Cliente
semana para resolver sus
necesidades.
Duración: 12 minutos El cliente plantea sus SP1. Se hace un mal
P Solicita R . Lograr que se registre necesidades y solicita que manejo de las Ordenes RN014. Cita
9. 9
Cotización la cotización. Frecuencia: 5 veces por se haga una cotización del de Producción y RN015. Cotización Cita
semana trabajo que requiere. CotizacionesDuración: 12 minutos El cliente plantea sus SP1. Se hace un mal
P Solicita Orden R Lograr que se registre necesidades, y solicita que manejo de las Ordenes
10. 6. RN014. Cita
de Producción orden de producción Frecuencia: 4 veces por se comience el trabajo que de Producción y
semana requiere. Cotizaciones
SP1. Se hace un mal
Duración: 20 segundos Se selecciona el cliente RN006. Cotizaciones
P Selecciona R . Lograr que se registre manejo de las Órdenes
11. 9 que ha realizado la RN015. Cotización Cita
Cliente la cotización. de Producción y
Frecuencia: 8 veces al día solicitud de cotización RN016. Administración
Cotizaciones.
Se selecciona el personal
SP1. Se hace un mal
Duración: 15 segundos que estará encargado RN006. Cotizaciones
P Asigna R . Lograr que se registre manejo de las Órdenes
12. 9 principalmente del RN015. Cotización Cita
Responsable la cotización. de Producción y
Frecuencia: 8 veces al día desarrollo de esta RN016. Administración
Cotizaciones.
Cotización
El personal administrativo
SP1. Se hace un mal RN006. Cotizaciones
Duración: 3 minutos registra la cotización
P . Registra R . Lograr que se registre manejo de las Órdenes RN015. Cotización Cita
13 9 solicitada por lo cliente.
Cotización la cotización. de Producción y RN016. Administración
Frecuencia: 8 veces al día Ingresando la descripción
Cotizaciones. RN012. Consecutivo
de lo solicitado.
El Personal encargado
P . Selecciona Duración: 1 a 2 minutos
14 R . Permitir que se obtendrá una lista con las RN006. Cotizaciones
Cotización a 10
modifique la cotización. diferentes cotizaciones RN016. Administración
modificar Frecuencia: 2 veces al día
registradas en el sistema
El personal administrativo SP1. Se hace un mal
Duración: 1 minutos
P Modifica R . Permitir que se realiza las modificaciones manejo de las Órdenes RN006. Cotizaciones
15. 10
Cotización modifique la cotización. en la cotización de Producción y RN016. Administración
Frecuencia: 1 vez al día
solicitadas por el cliente. Cotizaciones.
P Selecciona O Promover un buen Duración: 20 segundos El encargado del registros SP1. Se hace un mal RN006. Cotizaciones
16. 7.
Cotización manejo de las órdenes de selecciona el código de manejo de las Órdenes RN007. Ordenes deproducción. Frecuencia: 5 veces al día una cotización si esta de Producción y Producción
R Lograr que se registre asociada a la orden de Cotizaciones. RN008. Cotizaciones–
6.
orden de producción producción. Ordenes de Producción
RN013. Cotización
Asociada
RN016. Administración
O Garantizar que las SP1. Se hace un mal
6.
ordenes de producción se manejo de las Ordenes
terminen a tiempo. de Producción y RN007. Ordenes de
P Asigna Fecha Duración: 1 minutos Selecciona el rango de
17. O Promover un buen Cotizaciones Producción
de Inicio y de 7. fechas para el desarrollo
manejo de las órdenes de RN009. Fechas
Entrega Frecuencia: 5 veces al día del proyecto.
producción. SP2. No se cumple con RN016. Administración
R Lograr que se registre las fechas de entrega del
6.
orden de producción producto
Duración: 20 segundos Se selecciona el cliente RN007. Ordenes de
P Selecciona R Lograr que se registre
18. 6. que ha realizado la Orden Producción
Cliente orden de producción
Frecuencia: 5 veces al día de Producción. RN016. Administración
SP1. Se hace un mal
manejo de las Ordenes RN003. Usuarios
O Promover un buen Se selecciona el personal
7. de Producción y RN005. Manejo de
manejo de las órdenes de Duración: 10 segundos que estará encargado
P Asigna Cotizaciones Empleados
19. producción. principalmente del
Responsable RN007. Ordenes de
R Lograr que se registre Frecuencia: 5 veces al día desarrollo de este
6. SP2. No se cumple con Producción
orden de producción proyecto
las fechas de entrega del RN016. Administración
producto
O Garantizar que las El personal administrativo SP1. Se hace un mal RN007. Ordenes de
6. Duración: 3 minutos
P Registra Orden ordenes de producción se registra las ordenes de manejo de las Ordenes Producción
20.
de Producción terminen a tiempo. producción solicitadas por de Producción y RN008. Cotizaciones–
Frecuencia: 5 veces al día
O Promover un buen los cliente en un archivo Cotizaciones Ordenes de Producción
7.manejo de las órdenes de de Excel, mientras este RN009. Fechas
producción. disponible SP2. No se cumple con RN016. Administración
R Lograr que se registre las fechas de entrega del RN012. Consecutivo
6.
orden de producción producto
O Promover un buen
7.
P . Selecciona manejo de las órdenes de El Personal encargado
21 Duración: 1 a 2 minutos RN007. Ordenes de
orden de producción. puede consultar las
Producción
producción a R Permitir que se órdenes de producción
7. Frecuencia: 2 veces al día RN016. Administración
modificar modifique la orden de realizadas por los clientes.
producción.
SP1. Se hace un mal
O Promover un buen manejo de las Ordenes
7.
manejo de las órdenes de El personal administrativo de Producción y
Duración: 1.5 minutos RN007. Ordenes de
P Modifica orden producción. realiza la modificación en Cotizaciones
22. Producción
de producción R Permitir que se las órdenes de producción
7. Frecuencia: 2 vez al día RN016. Administración
modifique la orden de solicitadas por el cliente. SP2. No se cumple con
producción. las fechas de entrega del
producto
Duración: 2 minutos RN006. Cotizaciones
P Registra O Promover un buen Se registra un nuevo
23. 7. RN007. Ordenes de
información del manejo de las órdenes de cliente, tomando toda su
Frecuencia: 2 veces por Producción
cliente producción. información de contacto
semana RN014. Cita
Duración: 30 segundos RN006. Cotizaciones
O Promover un buen Se busca para obtener la
P Busca Cliente 7. RN007. Ordenes de
24. manejo de las órdenes de información del cliente
a modificar Frecuencia: 1 vez cada 6 Producción
producción. para su contacto
meses RN014. Cita
O Promover un buen Duración: 1 minutos RN006. Cotizaciones
P Modifica 7. Actualización de la
25. manejo de las órdenes de RN007. Ordenes de
Cliente información del cliente
producción. Frecuencia: 1 vez cada 6 Producciónmeses RN014. Cita
O Brindar un servicio
2. C9. El personal
P Selecciona integral de Duración: 1 minutos Selecciona la fecha inicial
26. encargado de las RN011. Informe Visitas
Rango de Fechas Mantenimiento y soporte y final sobre al cual se
solicitudes no esta RN018. Informes Ingeniería
para el Informe R Hacer que se consulte Frecuencia: 1 vez al mes desea hacer el reporte.
4. capacitado en el tema
Reporte de Visita
O Brindar un servicio
2. El director de ingeniería C9. El personal
P . Consulta integral de Duración: 1 minutos RN010. Reporte Visitas
27 revisa el reporte de visitas encargado de las
Reporte de Visita Mantenimiento y soporte RN011. Informe Visitas
realizado por los solicitudes no esta
de los Ingenieros R Hacer que se consulte Frecuencia: 1 vez al mes RN018. Informes Ingeniería
4. ingenieros. capacitado en el tema
Reporte de Visita
O Brindar un servicio El director de ingeniería
2.
integral de Duración: 10 minutos debe asignar a cada RN010. Reporte Visitas
P Ingresa Valor
28. Mantenimiento y soporte reporte de visita el valor RN011. Informe Visitas
Hora de la Visita
R Hacer que se ingrese Frecuencia: 1 vez al mes de la hora, y poder RN018. Informes Ingeniería
3.
Valor Hora obtener un costo total.
El director de ingeniería
luego de revisados y
Duración: 2 minutos RN010. Reporte Visitas
P . Genera R Lograr que se genere costeados los reportes de
29 1. RN011. Informe Visitas
Reporte de la Visita un reporte de visita las visitas, realiza un
Frecuencia: 1 vez al mes RN018. Informes Ingeniería
informe de estas, con su
costo total.
O Brindar un servicio
2. Duración: 15 minutos Los ingenieros realizan un C9. El personal
integral de RN010. Reporte Visitas
P Escribe reporte de las visitas, encargado de las
30. Mantenimiento y soporte RN011. Informe Visitas
Reporte Visita Frecuencia: 4 veces por informando fecha, tiempo solicitudes no esta
R5. Lograr que se escriba RN018. Informes Ingeniería
semana y motivo. capacitado en el tema
reporte de visitaO Garantizar que se Duración: 2 minutos El ingeniero debe reportar
5. SP3. No se tienen claras
P . Reporta Cita asista a la cita cada cita de venta que
31 las necesidades del RN014. Cita
con el Cliente R2. Hacer que se reporte Frecuencia: 4 veces por tenga con un cliente,
Cliente
la Cita semana informando fecha y hora.
Duración: 2 horas
El ingeniero debe cumplir
P Asiste a la Cita O Garantizar que se
32. 5. las citas planeadas con los RN014. Cita
con el Cliente asista a la cita Frecuencia: 4 veces por
clientes.
semana
O Brindar un servicio
2.
integral de RN006. Cotizaciones
P Selecciona Duración: 1 minuto Selecciona la fecha inicial
33. Mantenimiento y soporte RN007. Ordenes de
Rango de Fechas y final sobre al cual se
O Promover un buen Producción
para los Reportes 7. Frecuencia: 1 vez al mes desea hacer el reporte
manejo de las órdenes de RN014. Cita
producción.
O Brindar un servicio
2. Según el reporte
integral de RN006. Cotizaciones
P Genera Duración: 1 minuto seleccionado el usuario
34. Mantenimiento y soporte RN007. Ordenes de
informes de tendrá un informe del
O Promover un buen Producción
producción 7. Frecuencia: 1 vez al mes estado de la producción en
manejo de las órdenes de RN014. Cita
estas fechas
producción.
Duración: 1 minuto El encargado del sistema
RN003. Usuarios
P Busca R . Hacer que se ingrese busca el empleado al cual
35. 8 RN019. Nombre de Usuario
Empleado el empleado. Frecuencia: 1 vez cada 6 le va a hacer cambio de
RN023. Manejo de Usuarios
meses Contraseña
Duración: 1 minuto El encargado ingresa la
RN003. Usuarios
P Ingresa nueva R . Hacer que se ingrese nueva contraseña para el
36. 8 RN019. Nombre de Usuario
Contraseña el empleado. Frecuencia: 1 vez cada 6 acceso del sistema del
RN023. Manejo de Usuarios
meses usuarioO Promover un buen
7. Duración: 1 minuto El encargado del sistema
manejo de las órdenes de RN020. Rol por Defecto
P Busca busca el empleado al cual
37. producción. RN023. Manejo de Usuarios
Empleado Frecuencia: 1 vez cada 6 le va a modificar el rol de
R . Hacer que se ingrese RN024. Roles
8 meses usuario
el empleado.
O Promover un buen
7. Duración: 1 minuto
manejo de las órdenes de Se selecciona el nuevo rol RN020. Rol por Defecto
P Asigna nuevo
38. producción. que tendrá al usuario RN023. Manejo de Usuarios
Rol Frecuencia: 1 vez cada 6
R . Hacer que se ingrese seleccionado. RN024. Roles
8 meses
el empleado.
El director de ingeniería
O Brindar un servicio
2. encuentra errores en el C9. El personal
integral de Duración: 8 minutos RN010. Reporte Visitas
P Modifica reporte de visitas encargado de las
39. Mantenimiento y soporte RN011. Informe Visitas
Reporte de Visita realizado por los solicitudes no esta
R Hacer que se consulte Frecuencia: 1 vez al mes RN018. Informes Ingeniería
4. ingenieros, realiza las capacitado en el tema
Reporte de Visita
modificaciones
El ingeniero luego de
O Garantizar que se Duración: 2 minutos realizada la cita con el
P . Reporta 5. SP3. No se tienen claras
40 asista a la cita cliente, registra las
Observaciones de las necesidades del RN014. Cita
R2. Hacer que se reporte Frecuencia: 4 veces por observaciones o
la Cita Cliente
la Cita semana conclusiones sobre la
misma
O Garantizar que se El usuario consulta las
5. Duración: 1 minuto
P Consulta asista a la cita citas que tiene pendientes
41. RN014. Cita
Eventos Pendientes R2. Hacer que se reporte o que ya han sido
Frecuencia: 2 veces al día
la Cita realizadas
Tabla 4. Tabla Explicativa de Procesos de la Solución3.3.1.2. Nuevas Reglas del Negocio
Reglas del Negocio
Código Nombre Descripción Fórmula Fuente
Relacionadas
La solución al problema debe ser accesible desde
RN001 Plataforma cualquier lugar, es por esto de dicha solución debe Compañía RN002
estar orientada a la Web con acceso desde Internet.
En caso, que la solución del problema sea un
sistema informático. El sistema debe estar en
RN002 Interactividad capacidad de interactuar con otros sistemas como Compañía RN001
bases de datos, para la consulta y verificación de
información.
Solo tendrán acceso al sistema aquellos usuarios
RN003 Usuarios que tengan una cuenta de usuario, que se obtendrá Compañía RN002, RN023, RN024
con previa autorización.
En caso, que la solución del problema sea un
sistema informático. Este, debe tener campos
RN004 Contenido Compañía
obligatorios, campos de texto variable y
sugerencias.
La información de los empleados es registrada en
varias bases de datos dentro de la empresa, que se
RN005 Manejo de Empleados Compañía RN003, RN023, RN024
buscan unificar para que tengan relación con los
procesos de cotización y órdenes de producción.
Toda cotización realizada debe estar asociada a un
RN006 Cotizaciones cliente y un responsable, que se encargara de su Compañía RN003, RN005
desarrollo.
Toda orden de producción debe estar asociada a un
RN007 Ordenes de Producción Compañía RN003, RN005
cliente y un responsable.
RN008 Cotización-Orden de Una orden de producción puede estar asociada a Compañía RN006, RN007, RN013Producción una cotización realizada con anterioridad por el
mismo cliente.
Toda orden de producción debe tener una fecha de
RN009 Fechas Compañía RN007
inicio y una fecha de entrega que se deben cumplir.
Cada ingeniero luego de realizadas las visitas de
soporte debe entregar un reporte del trabajo
RN010 Reporte Visitas Compañía RN005
realizado, especificando cliente, fecha, horas y una
descripción.
El director de ingeniería realiza un informe de
visitas a partir de los reportes presentados por los
RN011 Informe de Visitas Compañía RN010
ingenieros, informe que contiene la información de
la visita y el valor hora a cotizar por la misma.
Ninguna orden de producción o cotización pueden
RN012 Consecutivo Compañía RN006, RN007
tener el mismo consecutivo
La información de la cotización asociada a una
RN013 Cotización Asociada orden de producción debe ser la misma Compañía RN006, RN007, RN008
información de esta.
El cliente es quien solicita la cita con los
RN014 Cita Compañía
empleados de la compañía
De las citas realizadas con el cliente es posible que
RN015 Cotización Cita el empleado obtenga una cotización u orden de Compañía RN006, RN007
producción
Solamente el personal administrativo tiene
RN006, RN007, RN023,
RN016 Administración permitido el manejo de las cotizaciones y ordenes Compañía
RN024
de producción dentro de la empresa.
La secretaria de personal es la única encargada del RN003, RN005, RN023,
RN017 Personal Compañía
manejo de la información de los empleados. RN024
RN018 Informes Ingeniería El director de ingeniería, es el único con acceso al Compañía RN011informe de visitas de los ingenieros.
El nombre de usuario será asignado a los
empleados por la secretaria de personal, y esta
RN019 Nombre de Usuario formado por las iníciales de los nombres del Compañía RN002, RN003, RN023
empleado, y su primer apellido, en caso de existir,
se agrega la inicial del segundo apellido
Al ser registro un nuevo usuario este tendrá dentro
RN020 Rol por Defecto del sistema un rol de Consulta por defecto, el cual Compañía RN003, RN023
será modificado según indicaciones.
El usuario de consulta tendrá acceso a las listas
RN021 Consulta básicas de cada elemento y a los diferentes reportes Compañía RN023, RN024
del sistema.
El administrador del sistema será el único con
RN022 Mantenimiento acceso a cada uno de los componentes de la Compañía RN023, RN024
Solución.
El administrador del sistema será el único que
RN023 Manejo de Usuarios puede modificar contraseñas, y asignar roles a los Compañía RN003, RN024
usuarios del sistema.
Cada usuario del sistema puede tener asignado uno
RN024 Roles o varios roles, solo tendrá uno cuando este sea de Compañía RN003, RN023
Administrador del Sistema
Tabla 5. Nuevas Reglas del Negocio
3.3.1.3. Nuevo Diccionario de Datos
Nombre Alias Cómo/Dónde Descripción Componentes
Se encarga del manejo de la información de cada uno
Secretaria de Personal Entidad Externa
de los empleados de la compañía, de sualmacenamiento cuando son nuevos, y de su
modificación en el momento que sea necesario.
Se encarga de la administración (ingreso, consulta y
Personal Administrativo Entidad Externa modificación) de las cotizaciones y ordenes de
producción de la compañía.
Realiza el informe de las visitas realizadas por los
Director de Ingeniería Entidad Externa ingenieros a los clientes, haciendo una cotización de
estas.
Realiza las visitas a los clientes, y realiza un reporte
Ingeniero Entidad Externa
del trabajo realizado en esta.
Solicita las visitas por parte de la empresa, además de
Cliente Entidad Externa realizar las cotizaciones y ordenes de producción
según sus necesidades.
Tiene acceso a la lista de cada uno de los componentes
Consulta Entidad Externa
del sistema (Empleados, Clientes, Agenda)
Administrador del Se encarga cada uno de los elementos del sistema,
Entidad Externa
Sistema además del manejo de Usuarios.
- Cedula
- Nombre Empleado
- Apellido Empleado
Almacén de entrada y salida - Fecha de Nacimiento
de datos que se empleara - Dirección Empleado
Empleado para almacenar toda la Registra los empleados y toda la información de estos. - Teléfono Empleado
información relacionada con - Email Empleado
los empleados de la compañía. - Cargo
- Fecha de Retiro
- Fecha de Ingreso
- FotoAlmacén de Entrada y salida - Consecutivo Cotización
de datos donde se hará un Registra la información relacionada con las - Cliente Cotización
Cotización COT
registro de las cotizaciones cotizaciones del cliente. - Fecha de Cotización
solicitadas por el cliente. - Descripción Cotización
- Consecutivo OP
- Fecha Inicio
Almacén de Entrada y salida - Fecha Entrega
de datos donde se hará un - Cliente OP
Registra la información relacionada con las órdenes
Orden de Producción OP registro de las ordenes de - Nombre OP
de producción solicitadas por los clientes.
producción solicitadas por el - Descripción OP
cliente - Observaciones OP
- Estado OP
- Tipo
- Consecutivo Visita
- Cliente Visita
- Contacto Visita
Almacén de Entrada y Salida
- Fecha Visita
de Datos, en el cual se
Registra la información de la visita realizada por el - Hora Inicial
Reporte Visita Visita almacenara el reporte de las
ingeniero al cliente. - Hora Final
visitas realizadas por los
- Valor Hora
ingenieros.
- Trabajo Solicitado
- Trabajo Realizado
- Observaciones Visita
- Consecutivo Cita
Almacén de Entrada y salida
- Cliente Cita
de datos donde se tendrá un
- Contacto Cita
Cita Evento registro de las citas de los Registra la información de las citas con los clientes.
- Teléfono Contacto
ingenieros y vendedores con
- Hora Cita
los clientes.
- Dirección Cita- Fecha Cita
- Propósito
- Nit del Cliente
Almacén de Entrada y salida - Nombre del Cliente
de datos, donde se registrara - Teléfono del Cliente
Cliente Registra la información de Contacto del Cliente.
la principal información de - Fax
contacto del cliente. - Email del Cliente
- Contacto del cliente
Tabla 6. Nuevo Diccionario de Datos.3.4. CASOS DE USO
CU1. Ingresar Cotización
Caso de Uso Ingresar Cotización
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Tener un registro de cada una de las cotizaciones realizadas para los clientes.
Objetivo Este caso de uso se asocia con el requisito R . Lograr que se registre la cotización.
9
Resumen En este caso de uso el usuario podrá registrar las cotizaciones solicitadas por
los clientes, en este indicaran el cliente, asignaran un responsable y darán
una descripción a la solicitud del cliente
Actores Personal Administrativo, Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara dos opciones mas
2 “Cotizaciones” en el menú Ingresar Cotización, Editar
Cotización
Selecciona la opción “Ingresar El sistema presenta un formulario con
Cotización” los campos necesarios para registrar la
3 cotización en el sistema, calcula el
consecutivo que identificara la cotización
en el sistema.
Selecciona el Cliente que solicito la
4
cotización
5 Selecciona el responsable de la cotización
6 Ingresa la descripción de la cotización
Presiona el botón “Aceptar” El sistema registra en el sistema la
cotización del Cliente, y asignara la
7
fecha del sistema como la fecha de la
cotización.
Demora Si el registro de la cotización se desarrollo de manera óptima no debe demorar más
de 3.5 minutos, en promedio puede demorarse 4 minutos, como tiempo máximo se
espera que se demore en ingresar la solicitud 5 minutos.
Frecuencia 8 veces al día
Tipo Primario
PostCondiciones Registro de una cotización en el sistemaGráfico
Pantalla
Tabla 7. Caso de Uso: Ingresar Cotización
CU2. Generar Informes
Caso de Uso Generar Informes
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Realizar un seguimiento a los diferentes elementos de la compañía, cotizaciones,
ordenes de producción, citas y visitas
Objetivo Este caso de uso se encuentra asociado a los objetivos O Brindar un servicio
2.
integral de Mantenimiento y soporte, y O Promover un buen manejo de las órdenes
7.
de producción
Resumen El usuario selecciona el tipo de reporte a generar, selecciona el rango de
fechas y genera el reporte.
Actores Visitante
Precondición Iniciar Sesión
Secuencia normal
USUARIO SISTEMA
de interaccionesSelecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras los tipos de
2
“Informes” reporte generar
El usuario selecciona el reporte que El sistema presentara un formulario con
3 desea consultar los campos para seleccionar el rango de
fechas para el informe
El usuario selecciona el campo “Fecha El sistema despliega un calendario
4
Inicial”
Selecciona la fecha inicial para el
5
reporte
El usuario selecciona el campo “Fecha El sistema despliega un calendario
6
Final”
7 Selección al fecha final para el informe
Presiona el botón “Buscar” Busca la información para el reporte que
8 cumple con el rango de fechas
determinado por el usuario
9 Genera el Informe
Demora El desarrollo de este caso de uso puede demorarse 2 minutos, en su desarrollo
optimo, en promedio puede tardarse 3 minutos, como máximo se puede demorar 5
minutos.
Frecuencia 1 vez al mes
Tipo Primario
Postcondiciones Informe Generado
Gráfico
PantallaTabla 8. Caso de Uso: Generar Informes
La descripción de los siguientes casos de uso, se puede encontrar en el Anexo 1.
CU3. Ingresar OP
CU4. Editar OP
CU5. Reportar Visita
CU6. Cambiar ContraseñaCU7. Editar Reporte de Visita
Reportar Visita
<<include>>
Editar Reporte de
<<include>> Registrar Cliente
Visita
<<include>>
Registrar Cliente
Director de Ingenieria
CU8. Generar Informe de Visitas
CU9. Asignar Permisos
CU10. Editar Cotización
CU11. Registrar EmpleadoCU12. Consultar Empleados
CU13. Editar Empleados
CU14. Crear Evento
CU15. Consultar Eventos
CU16. Editar Evento
CU17. Consultar Clientes
CU18. Registrar ClienteCU19. Editar Cliente
3.5. CARTA DE NAVEGACION
Figura 10. Carta de Navegación de la Solución
3.6. VALORACION DE LA PROPUESTA DE SOLUCION
Caso de Uso Causas Justificación Pij Qij Aij ACU
Mantener un registro de las
Ingresar
SP1 cotizaciones permite realizar un mejor 100% 38.7% 42% 0.164
Cotización
manejo de las mismas
Mantener actualizadas las
Editar
SP1 cotizaciones permite realizar un mejor 100% 38.7% 9% 0.035
Cotización
manejo de las mismas
Mantener un registro de las Ordenes
Ingresar OP SP1 de Producción permite realizar un 100% 38.7% 65% 0.252
mejor manejo de las mismas
Permite mantener un control sobre el
Ingresar OP SP2 100% 29.4% 24% 0.071
desarrollo del proyecto
Mantener actualizada la información
sobre las Ordenes de Producción,
Editar OP SP1 100% 38.7% 19.4% 0.075
permite realizar un mejor manejo de
las mismas
Permite mantener un control sobre el
Editar OP SP2 100% 29.4% 4% 0.012
desarrollo del proyectoSe puede garantizar que el personal
Reportar
C enviado cumple con las características 70.2% 20.5% 2.8% 0.004
Visita 9
requeridas por los clientes
Editar Se puede garantizar que el personal
Reporte de C enviado cumple con las características 70.2% 20.5% 1% 0.001
9
Visita requeridas por los clientes
Generar
Permite hacer seguimiento al trabajo
Informe de C 70.2% 20.5% 7% 0.010
9 realizado con el cliente
Visita
Brinda mejor manejo de los
Registrar
SP4 empleados, y por tanto nivelar las 100% 11.4% 6% 0.068
Empleado
cargas de trabajo
Crear Evento SP3 Brinda mejor contacto con el cliente 100% 20.5% 18% 0.037
Permite manejar las necesidades del
Editar Evento SP3 100% 20.5% 22% 0.0451
cliente
TOTAL 72.84%
Tabla 9. Valoración de la Propuesta de Solución
3.7. COSTEO DE LA PROPUESTA DE SOLUCION
UAW – Unadjusted Actor Weight
En la propuesta solución existen 5 actores (secretaria de personal, personal administrativo, director
de ingeniería, ingeniero, y administrador del sistema), los cuales se clasifican como usuarios
complejos, ya que interactúan con el sistema a través de sus interfaces de usuario, por lo tanto
UAW=3
UUCW – Unadjusted Use Case Weight
En el desarrollo de esta solución, se cuenta con 19 casos de uso, con varias transacciones
aproximadamente 10 transacciones diferentes, y aproximadamente 7 escenarios distintos para estos
casos de uso.
UUCW=15
UUCP – Unadjusted Use Case Point
UUCP = UAW + UUCW = 3 + 15 = 18
Factor de Complejidad Técnica
Código
Técnico Peso Valor Subtotal Explicación
Factor
Se elige una estructura centralizada en un
Sistema
t1 2 0 0 servidor Web, desde el cual es accedida la
Distribuido
aplicación.
Tiempo de El sistema es sencillo por lo tanto su
t2 1 4 4
Respuesta velocidad de respuesta es mayor.
Eficiencia del Se presume que los actores involucrados
t3 1 3 3
usuario final son buenos usando el sistema ya que tienenexperiencia usando otros herramientas
informáticas
El sistema funciona internamente
realizando consultas sobre la base de datos,
Procesamiento
t4 1 3 3 ingresando nuevos registro y efectuando
interno complejo
procedimientos determinados por la
información suministrada.
Código
t5 1 0 0 El código no se considera reutilizable
reutilizable
La instalación deberá ser supremamente
Facilidad de
t6 0.5 4 2 simple y en un servidor desde donde será
instalación
accedida vía Web.
El sistema será completamente amigable al
t7 Uso fácil 0.5 3 1.5
usuario e intuitivo.
Por ser orientado a la Web el sistema será
t8 Portabilidad 2 3 6
altamente portable
El sistema se adaptara a todo tipo de
t9 Fácil de cambiar 1 4 4 cambios que se presenten con los procesos
de la oficina de personal.
A pesar de tratarse de una aplicación
orientada a la Web no creemos que el
t10 Concurrente 1 1 1 número de usuarios que se conecten al
mismo tiempo para hacer uso de la misma
sea significativo o afecte esté factor.
El sistema manejara claves de acceso,
Objetivos de
t11 1 3 3 además de permisos para la utilización de la
seguridad
información del sistema.
Acceso directo a
t12 1 0 0 No se requiere acceso de terceras partes.
terceras partes
Facilidades de Por tratarse de una herramienta sencilla se
t13 entrenamiento de 1 4 4 espera que la curva de aprendizaje sea
usuarios. rápida.
Tabla 10. Factor de Complejidad Técnica de la Solución
De la tabla anterior podemos decir que Tfactor = 31.5
Por lo tanto, tenemos que:
TCF - Factor Técnico:
TCF = 0.6 + (0.01 * Tfactor) = 0.6 + (0.01 * 31.5) = 0.915
Factor de Complejidad del Entorno
Código
Factor Ambiental Peso Valor Subtotal Descripción
Factor
e1 Familiaridad con 1.5 3 4.5 La familiarización con el proyecto fueel proyecto rápida por ser un proyecto sencillo y fácil
de interpretar
Experiencia en la Para la solución se requiere destreza en el
e2 0.5 3 1.5
aplicación manejo de bases de datos.
Experiencia El método aplicado para la licitación de
e3 1 2 2
orientada a objetos requisitos garantiza la orientación a objetos.
Se requiere de algunas habilidades de
Capacidad del
e4 0.5 3 1.5 análisis para deducir que es lo que
analista líder.
realmente necesita el interesado.
Existe suficiente motivación por las partes
e5 Motivación 1 4 4
involucradas en el proyecto.
Requisitos Desde el principio los requisitos planteados
e6 2 6 6
estables por el interesado estuvieron claros.
Personal de
e7 -1 0 0 No existen personas de tiempo parcial.
Tiempo parcial
Se seleccionó lenguajes orientados a la
Lenguaje de
Web como PHP y MySQL para el manejo
e8 Programación -1 2 -2
de las bases de datos, para los que existe
difícil
suficiente documentación.
Tabla 11. Factor de Complejidad del Entorno
De la tabla anterior tenemos que Efactor = 17.5
Por lo tanto, tenemos que:
EF - Factor del Entorno:
EF = 1.4 + (-0.03 * Efactor) = 1.4 + (-0.03 * 17.5) = 0.875
AUCP - Adjusted Use Case Point:
AUCP = UUCP * TCF * EF = 18 * 0.915 * 0.875 = 19.79
Esfuerzo:
ESFUERZO = 19.79 * 20 = 395.8 Horas / Hombre
En promedio la hora/hombre tiene un valor de $30000, por lo tanto al costo total de la solución
mínima seria de: $11’874.000ENTREGABLE 4.
ESQUEMA CONCEPTUAL
4.1. CONSULTAS Y TRANSACCIONES
4.1.1. Consultas
Caso de Uso: Ingresar Cotización
(1) {c.intConsecutivo / c Є Cotización Λ c.intConsecutivo = Max (intConsecutivo)+1}
(2) {c.strNombre / c Є Cliente}
(3) {e.strNombre Λ e.strApellido / e Є Empleado}
(4) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.strUsuario=validarEmpleado().usuario Λ
e.strPassword= validarEmpleado ().password}
Caso de Uso: Generar Informes
• Informe de Ordenes de Producción
(1) {fini.calendario}
(2) {ffin.calendario}
(3) {c.strNombre / c Є Cliente Λ c.intNit = o.intIDCliente Λ o.dtFechaInicio >=
cargarInformeOP().FechaIni Λ o.dtFechaEntrega <= cargarInformeOP ().FechaFin}
(4) {o.intConsecutivo / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin }
(5) {o.intIDCotizacion / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin }
(6) {o.strNombre / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin}
(7) {o.txtDescripcion / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin}
(8) {o.dtFechaInicio / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin }
(9) {o.dtFechaEntrega / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin }
(10) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.intCedula = o.intIDResponsable Λ
o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ o.dtFechaEntrega <= cargarInformeOP
().FechaFin }
(11) {o.strEstado / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeOP ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeOP ().FechaFin }
• Informe Estado del Proyecto
(12) {o.strNombre / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto”}
(13) {o.txtDescripcion / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado ().FechaIni
Λ o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto”}(14) {c.strNombre / c Є Cliente Λ c.intNit = o.intIDCliente Λ o.dtFechaInicio >= cargarInformeEstado
().FechaIni Λ o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto”}
(15) {o.dtFechaInicio / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado ().FechaIni
Λ o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto” }
(16) {o.dtFechaEntrega / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado ().FechaIni
Λ o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto” }
(17) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.intCedula = o.intIDResponsable Λ
o.dtFechaInicio >= cargarInformeEstado ().FechaIni Λ o.dtFechaEntrega <= cargarInformeEstado
().FechaFin Λ o.strTipo=”Proyecto” }
(18) {o.txtObservaciones / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado
().FechaIni Λ o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto” }
(19) {o.strEstado / o Є OrdenProduccion Λ o.dtFechaInicio >= cargarInformeEstado ().FechaIni Λ
o.dtFechaEntrega <= cargarInformeEstado ().FechaFin Λ o.strTipo=”Proyecto”}
• Informe de Cotizaciones
(20) {c.strNombre / c Є Cliente Λ c.intNit = c.intIDCliente Λ c.dtFecha >= cargarInformeCotizaciones
().FechaIni Λ c.dtFecha <= cargarInformeCotizaciones ().FechaFin
(21) {c.intConsecutivo / c Є Cotización Λ c.dtFechaInicio >= cargarInformeCotizaciones ().FechaIni
Λ c.dtFechaEntrega <= cargarInformeCotizaciones ().FechaFin}
(22) {c.dtFecha / c Є Cotización Λ c.dtFechaInicio >= cargarInformeCotizaciones ().FechaIni Λ
c.dtFechaEntrega <= cargarInformeCotizaciones ().FechaFin}
(23) {c.txtDescripcion / c Є Cotización Λ c.dtFechaInicio >= cargarInformeCotizaciones ().FechaIni
Λ c.dtFechaEntrega <= cargarInformeCotizaciones ().FechaFin}
(24) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.intCedula = c.intIDResponsable Λ c.dtFecha
>= cargarInformeCotizaciones ().FechaIni Λ c.dtFecha <= cargarInformeCotizaciones ().FechaFin}
La descripción de consultas para los casos de uso restantes se encuentra en el Anexo 2.
4.1.2. Transacciones
Caso de Uso: Ingresar Cotización
insertarCotizacion(idCliente,idResponsable,Descripcion)
Sea
C={c Є Cotización / c.intConsecutivo=Max(intConsecutivo)+1}
Pre
|C|=0
Post
|C|=1
c.intConsecutivo= Max(intConsecutivo)+1
c.intIDCliente=insertarCotizacion().idCliente
c.intIDResponsable=insertarCotizacion().idResponsable
c.dtFecha=Fecha del Sistema
c.txtDescripcion=insertarCotizacion().Descripción
La descripción de las transacciones de los casos de uso faltantes se encuentra especificada en el Anexo
34.2. DIAGRAMA DE CLASES
Figura 11. Diagrama de Clases4.3. DERIVACIONES Y RESTRICCIONES
4.3.1. Derivaciones
• Consecutivo Cotización
"
Cotizacion.intConsectivo = MAX( Cotizacion.intConsecutivo)+1
• Consecutivo Orden de Producción
"
OrdenProduccion.intConsecutivo=MAX( OrdenProduccion.intConsecutivo)+1
• Costo Total Visita
CostoTotalVisita = (InformeVisita.dtHoraFinal – InformeVisita.dtHoraInicial) * intValorHora
4.3.2. Restricciones
• Una orden de producción puede estar asignada a una o ninguna cotización
∀o ∈ OrdenProduccion ( |o.intIDCotizacion| <= 1 )
• Una orden de producción debe estar asociada a un empleado responsable
∀o ∈ OrdenProduccion ( |o.intIDResponsable| = 1 )
• Una orden de producción debe estar asociada a un solo cliente
∀o ∈ OrdenProduccion ( |o.intIDCliente| = 1 )
• Una cotización debe estar asociada a un empleado responsables
∀c ∈ Cotización ( |c.intIDResponsable| = 1 )
• Una cotización debe estar asociada a un cliente
∀c ∈ Cotización ( |c.intIDCliente| = 1 )
• Si una orden de producción esta asociada a una cotización el cliente y responsable de la cotización
debe ser el mismo de la orden de Producción
∀o ∈ OrdenProduccion Λ ∀c ∈ Cotización (IF o.intIDCotizacion=c.intConsecutivo, entonces
o.intIDCliente=c.intIDCliente Λ o.intIDResponsable=c.intIDResponsable)
• Todo usuario debe pertenecer a la compañía y tener un nombre de Usuario y contraseña para al
acceso
∀e ∈ Empleado (e.validarEmpleado() / e.strUsuario=e.validarEmpleado().nomUsuario Λ
e.strPassword=e.validarEmpleado().pass)
• Solo el personal con rol de Mantenimiento dentro del sistema tiene acceso a los procesos “Cambiar
Contraseña” y a “Asignar Permisos”
∀e ∈ empleado (e.cambiarDatosUsuario() V e.asignarPermisos() / e.intCedula = r.intIDUsuario Λ
r.intIDRol=3 / r ∈ Rol)
• Solo el personal con rol de Administrativo dentro del sistema tiene acceso al registro y
modificaciones de Cotizaciones y Ordenes de Producción
∀e ∈ empleado (e.insertarCotizacion() V e.editarCotizacion() V e.insertarOrdenProduccion() V
e.editarOrdenProduccion() / e.intCedula = r.intIDUsuario Λ r.intIDRol=2 / r ∈ Rol)
• Solo el personal con rol de Consulta no tiene acceso a los procesos de registro y modificación de la
información de los clientes
∀e ∈ empleado (e.insertarCliente() V e.editarCliente() / e.intCedula = r.intIDUsuario Λ r.intIDRol<
>1 / r ∈ Rol)
• Solo el personal con rol de control es el encargado del ingreso y modificación de la información de
los empleado
∀e ∈ empleado (e.insertarEmpleado() V e.editarEmpleado() / e.intCedula = r.intIDUsuario Λ
r.intIDRol=4 / r ∈ Rol)• Solo el personal con rol de AdminIngenieria tiene acceso a generar el informe de visitas, y a
modificar el reporte de las mismas
∀e ∈ empleado (e.cargarReporteVisitas() / e.intCedula = r.intIDUsuario Λ r.intIDRol=6 / r ∈ Rol)
• El reporte de visitas puede ser realizado por el personal con rol de Ingeniero o de AdminIngenieria
∀e ∈ empleado (e.reporteVisitas() / e.intCedula = r.intIDUsuario Λ r.intIDRol=5 / r ∈ Rol)
4.4. DIAGRAMA DE COMUNICACIÓN
Ingresar Cotización
Generar Informes
Figura 12. Diagramas de ComunicacionENTREGABLE 5.
DISEÑO DE LOS DATOS
5.1. CONVERSION MODELO CONCEPTUAL AL RELACIONAL
5.1.1. Diagrama de Clases
Figura 13. Diagrama de Clases – Diseño5.1.2. Diagrama Entidad – Asociación
Figura 14. Modelo Entidad - Relación
5.1.3. Modelo Relacional
Área
strCodArea strNombreArea
(CP) (NN)
I ingeniería
A Administración
P ProducciónProe Proelectrico
D Dibujo
Cita
intIDCita intIDCliente intIDEmpleado strContacto strTelefono dtFechaCita dtHoraCita
(CP) (CF) (CF) (NN) (NN) (NN)
1 16 1036601627 Ángela Ospina 514 66 55 2009-05-05 11:00:00
2 40 1036601627 Carlos Orozco 285 66 00 2009-05-15 14:30:00
strDirCita intIDCiudad strProposito strObservaciones strEstadoCita intIDCotizacion
(NN) (CF) (NN) (CF)
Oficina Bancolombia 2 Tomar requisitos NULL Si NULL
Planta Colcafe 2 Conocer Necesidades NULL No NULL
Ciudad
intIndicativo intIndDepto strNombre
(CP) (CF) (NN)
1 1 Leticia
2 2 Medellín
3 3 Arauca
4 4 Barranquilla
5 5 Cartagena
Cliente
intNit strNombre strTelefono strDireccion strFax intIDCiudad strEmail strContacto
(CP) (NN) (NN) (CF) (NN)
15 Bancolombia 514 66 55 NULL NULL 2 NULL Rubén Domínguez
185 Suin 4441190 Cll 32 # 41 – 28 NULL 2 NULL Diana Moreno
Cotización
intConsecutivo intIDCliente intIDResponsable dtFecha txtDescripcion
(CP) (CF) (CF) (NN) (NN)
1 174 71778315 2009-05-30 Automatización Maquina de Ensacado
2 40 98647963 2009-05-20 Automatización Maquina de Llenado
Departamento
intIndicativo strNombre
(CP) (NN)
1 Amazonas
2 Antioquia
3 Arauca
4 Atlántico
5 BolívarEmpleado
intCedula strNombre strApellido dtFechaNac strDireccion strTelefono strEmail
(CP) (NN) (NN) (NN)
1036601627 Zuleima Moreno Ruiz 1986-07-23 Calle 22 #54-06 2652225 marce@gmail.com
43259985 Paula Isaza 1984-06-01 NULL NULL NULL
strCargo strCodArea intIDCiudad dtFechaIngreso dtFechaRetiro strUsuario strPassword strFoto
(NN) (CF) (CF) (NN) (NN) (NN)
Auxiliar I 2 2009-01-12 0000-00-00 zmmoreno zmmoreno NULL
Sistemas
Comercial Proe 2 2007-05-16 0000-00-00 paisaza paisaza NULL
InformeVisitas
intConsecutivo intIDEmpleado intIDCliente strContacto dtFecha dtHoraInici dtHoraFinal
(CP) (CF) (CF) (NN) (NN) al (NN)
(NN)
1 71778315 174 Hernán Toro 2009-04-29 08:00:00 10:00:00
2 98647963 40 Carlos Orozco 2009-05-19 10:00:00 15:30:00
intValorHora txtTrabajoSolicitado txtTrabajoRealizado txtObservaciones
0 Pruebas a la información Pruebas en la base de datos a la El sistema esta funcionando
suministrada por el sistema de información suministradas por correctamente no se ha
automatización de la la ensacadora presentado perdida de la
ensacadora. información
0 Mantenimiento a PLC Mantenimiento
OrdenProduccion
intConsecutivo intIDCotizacion dtFechaInicio dtFechaEntrega intIDCliente intIDResponsable
(CP) (CF) (NN) (CF) (CF)
1 1 2009-05-01 2009-05-30 174 71778315
2 0 2009-06-01 2009-07-15 169 98712098
strNombre txtDescripcion txtObservaciones strEstado strTipo
(NN) (NN)
AdminEnsacadora Automatización Maquina de Ensacado Aplicar en Todas las Plantas En Progreso Proyecto
PanelRegistro Conteo de producción Pendiente Tablero
Rol
intCodigo strNombre txtDescripcion
(CP) (NN) (NN)
2 Administración Permite al usuario manejar elementos como las cotizaciones y las
ordenes de producción, su registro, edición y reportes.
4 AdminPersonal Permite al usuario realizar todo la administración que tiene que ver con
el personal de la empresa, el registro de los Empleados, las
modificaciones sobre su información y sus datos de usuarioRolXUsuario
intIDRol intIDUsuario
(CP) (CF) (CP) (CF)
1 98703300
3 1128270388
Figura 15. Modelo Relacional
5.2. PLAN DE CAPACIDAD
CONCURRENCIA
Número de usuarios Número de usuarios
Localización concurrentes en concurrentes en Total de usuarios
horas pico horas normales
Ipower 10 20 30
Tabla 12. Concurrencia
REQUISITOS DE LAS TRANSACCIONES
Duración Actividad en
Transacción Tipo Frecuencia Prioridad Complejidad
Máxima Base de Datos
En
insertarCotizacion 8 veces al día Alta Alta 5 minutos Inserción
línea
En Consulta,
editarCotizacion 2 veces al dia Baja Simple 4 minutos
línea Actualización
En
insertarOrdenProduccion 4 veces al dia Alta Alta 6 minutos Inserción
línea
En Consulta,
editarOrdenProduccion 2 veces al dia Baja Simple 5 minutos
línea Actualizacion
En 4 veces por
reporteVisitas Media Promedio 20 minutos Inserción
línea semana
En Consulta,
editarReporte 1 vez al mes Baja Simple 12 minutos
línea Actualizacion
En Consulta,
CalcularCostoVisita 1 vez al mes Alta Alta 2 minutos
línea Actualizacion
En 1 vez cada 6 3,5 Consulta,
cambiarDatosUsuario Alta Promedio
línea meses minutos Actualizacion
En 1 vez cada 6 Consulta,
asignarPermisos Alta Promedio 5 minutos
línea meses Actualizacion
En Nueva
registrarEmpleado Alta Alta 20 minutos Inserción
línea Contratación
En Presentan Consulta,
editarEmpleado Baja Simple 8 minutos
línea Cambios Actualizacion
nuevoEvento En 4 veces por Media Promedio 5 minutos Inserciónlínea semana
En 4 veces por Consulta,
editarEvento Media Promedio 5 minutos
línea semana Actualizacion
En 2 veces por
insertarCliente Alta Promedio 4 minutos Inserción
línea semana
En 1 vez cada 6 Consulta,
editarCliente Baja Simple 3 minutos
línea meses Actualizacion
Tabla 13. Requisitos de las Transacciones
DIMENSIONAMIENTO DE LOS OBJETOS DE DATOS
% DE
#FILAS ACTUALIZACIONES
TIPO
#FILAS QUE LONGITUD POR MES
OBJETO (I)NDICE
INICIALES CRECE REGISTRO UPDATE INSERT
(T)ABLA
POR MES DELETE
Área T 5 0 450 bytes 0% 0% 0%
Cita T 0 15 200 bytes 50% 50% 0%
Ciudad T 35 0 250 bytes 0% 0% 0%
Cliente T 0 3 300 bytes 15% 8% 0%
Cotización T 0 40 300 bytes 25% 45% 0%
Departamento T 32 0 250 bytes 0% 0% 0%
Empleado T 1 1 130 bytes 30% 50% 0%
InformeVisita T 0 40 120 bytes 10% 45% 0%
OrdenProduccion T 0 25 400 bytes 30% 50% 0%
Rol T 6 0 130 bytes 0% 0% 0%
RolXUsuario T 1 1 100 bytes 30% 50% 0%
Tabla 14. Dimensionamiento de los objetos de datos
5.3. PREDISEÑO ARQUITECTONICO
5.3.1. Identificación de clases según estereotipos
Caso de Uso: Ingresar Cotización
• Bordes
InterfazPersonalAdministrativo InterfazBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaPersonalAdministrativo PantallaIngresarCotizacion MensajeExito• Entidades
Cotización Cliente Empleado
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorEmpleado ManejadorIngresarCotizacion
Caso de Uso: Generar Informes
• Bordes
InterfazVisitante InterfazBaseDatosIntranet PantallaPrincipal PantallaVisitante
PantallaFechas PantallaInformeEstadoOP PantallaCompañia PantallaInformeOP
PantallaInformeCotizaciones
• Entidades
Empleado Cliente Cotización OrdenProduccion Cita
• Controladores
ManejadorPrincipal ManejadorOrdenProduccion ManejadorEmpleado ManejadorGenerarInforme
ManejadorCotizacion ManejadorCita
La definición de Entidades, Bordes y Controles de los demás casos de uso se encuentran en el Anexo 45.3.2. Diagramas de secuencia
Caso de Uso: Ingresar Cotización
Figura 16. Diagrama de Secuencia: Ingresar COtizacion.Caso de Uso: Generar Informes
Figura 17. Diagrama de Secuencia: Generar Informes – Estado del Proyecto
Figura 18. Diagrama de Secuencia: Generar Informes – CotizacionesFigura 19. Diagrama de Secuencia: Generar Informes - Ordenes de Produccion
Los diagramas de secuencia para los casos de uso restantes se encuentran en el Anexo 5ENTREGABLE 6.
DISEÑO DEL COMPORTAMIENTO
6.1. CASOS DE USO INSERTANDO SECUENCIAS EN LOS FLUJOS Y SUBFLUJOS
Caso de Uso: Ingresar Cotización
Caso de uso Ingresar Cotizacion
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro de las cotizaciones solicitadas por
los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitira hacer el registro de las
cotizaciones solicitadas por los clientes
Precondiciones Iniciar sesión Administrativo
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaPrincipal.
El Usuario tiene la opción “Acceder”, si elige está opción, se valida el registro de
usuario mediante un nombre_usuario y una contraseña insertados por el Usuario
en la PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet (E-1). La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaPersonalAdministrativo a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario da click en la opción “Compañia”. La PantallaPersonalAdministrativo
envía el evento “Compañia” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Compañia” al
ManejadorPrincipal. El ManejardorPrincipal solicita Desplegar
PantallaCompañia a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario presiona la opcion “IngresarCotizacion”. La
PantallaPersonalAdministrativo envia el evento “Ingresar Cotizacion” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envia el
evento “Ingresar Cotizacion” al ManejadorIngresarCotizacion. El
ManejadorIngresarCotizacion solicita obtenerClientes al ManejadorCliente. El
ManejadorCliente solicita obtenerClientes a la InterfazBaseDatosIntranet. LaInterfazBaseDatosIntranet solicita obtenerClientes a la BaseDatosIntranet. La
BaseDatosIntranet busca los Datos del Cliente y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCliente. El ManejadorCliente devuelve OK al
ManejadorIngresarCotizacion. El ManejadorIngresarCotizacion solicita
obtenerEmpleados al ManejadorEmpleado. El ManejadorEmpleado solicita
obtenerEmpleados a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerEmpleados a la BaseDatosIntranet. La BaseDatosIntranet busca
los empleados registrados en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorIngresarCotizacion. El ManejadorIngresarCotizacion solicita
DesplegarPantallaIngresarCotizacion a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaIngresarCotizacion. Esta
pantalla contiene los campos necesario para regitrar la cotizacion, la lista de
clientes, y la lista de empleados, una vez llenada la cotizacion el usuario da click
en “Aceptar”. La PantallaIngresarCotizacion envía el evento “Aceptar” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Aceptar” al ManejadorIngresarCotizacion (E-2). El
ManejadorIngresarCotizacion solicita insertarCotizacion a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
insertarCotizacion a la BaseDatosIntranet. La BaseDatosIntranet inserta la
información de la cotizacion y luego devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorIngresarCotizacion. El
ManejadorIngresarCotizacion solicita DesplegarMensajeExito a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega
MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo
envía el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdmistrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesion.
E-2: Información no valida: La información suministrada por el usuario para
registrar la cotizacion no es correcta
Tabla 15. Flujos y SubFlujos: Ingresar Cotización
Caso de Uso: Generar Informes
Caso de uso Generar Informes
Actores Visitante, Base de Datos Intranet
Propósito Permitir que la compañía obtener un informe de las solicitudes de los clientesResumen Este caso de uso es iniciado por el usuario y le permitira generar un informe de las
solicitudes realizadas a los clientes.
Precondiciones Iniciar sesión
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la InterfazVisitante.
La InterfazVisitante despliega la PantallaPrincipal. El Usuario tiene la opción
“Acceder”, si elige está opción, se valida el registro de usuario mediante un
nombre_usuario y una contraseña insertados por el Usuario en la
PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazVisitante. La InterfazVisitante envía el evento “Acceder” al
ManejadorPrincipal. El ManejadorPrincipal solicita validarEmpleado al
ManejadorEmpleado. El ManejadorEmpleado solicita validarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar PantallaVisitante a la
InterfazVisitante. La InterfazVisitante despliega la PantallaVisitante. El Usuario
da click en la opción “Compañia”. La PantallaVisitante envía el evento
“Compañia” a la InterfazVisitante. La InterfazVisitante envía el evento
“Compañia” al ManejadorPrincipal. El ManejardorPrincipal solicita
DesplegarPantallaCompañia a la InterfazVisitante. La InterfazVisitante despliega
la PantallaCompañia. El Usuario presiona la opcion “Estado del Proyecto”. La
PantallaCompañia envia el evento “Estado del Proyecto” a la InterfazVisitante. La
InterfazVisitante envia el evento “Estado del Proyecto” al ManejadorPrincipal. El
ManejadorPrincipal solicita DesplegarPantallaFechas a la InterfazVisitante. La
InterfazVisitante despliega la PantallaFechas. El Usuario presiona la opcion
“Buscar”. La PantallaFechas envia el evento “Buscar” a la InterfazVisitante. La
InterfazVisitante envia el evento “Buscar” al ManejadorGenerarInforme. El
ManejadorGenerarInforme solicita cargarInformeEstado al
ManejadorOrdenProduccion. El ManejadorOrdenProduccion solicita
cargarInformeEstado a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarInformeEstado a la BaseDatosIntranet.
La BaseDatosIntranet busca las ordenes de producción de tipo proyecto
registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorOrdenProduccion. El
ManejadorOrdenProduccion devuelve OK al ManejadorGenerarInforme . El
ManejadorGenerarInforme solicita DesplegarPantallaInformeEstadoOP a la
InterfazVisitante. La InterfazVisitante despliega la PantallaInformeEstadoOP.
Esta pantalla presenta el reporte de las ordenes de producción de tipo proyecto,
especificando su estado.
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento
“Cerrar Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento
“Cerrar Sesión” al ManejadorPrincipal. El ManejadorPrincipal sale del sistemaSubflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
El subflujo Informe Cotizaciones (S-1) se muestra a continuación
Subflujos Después de ser validado el usuario y desplegada la PantallaCompañia; si el usuario
escoge la opción “Cotizaciones”. La PantallaCompañia envía el evento “Cotizaciones”
a la InterfazVisitante. La InterfazVisitante envía el evento “Cotizaciones” al
ManejadorPrincipal. El ManejadorPrincipal solicita DesplegarPantallaFechas a la
InterfazVisitante. La InterfazVisitante despliega la PantallaFechas. El Usuario presiona
la opcion “Buscar”. La PantallaFechas envia el evento “Buscar” a la InterfazVisitante.
La InterfazVisitante envia el evento “Buscar” al ManejadorGenerarInforme. El
ManejadorGenerarInforme solicita cargarInformeCotizaciones al
ManejadorCotizacion. El ManejadorCotizacion solicita cargarInformeCotizaciones a
la ManejadorOrdenProduccion. La ManejadorOrdenProduccion solicita
cargarInformeEstado a la BaseDatosIntranet. La BaseDatosIntranet busca las
cotizaciones registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCotizacion. El
ManejadorCotizacion devuelve OK al ManejadorGenerarInforme . El
ManejadorGenerarInforme solicita DesplegarPantallaInformeCotizaciones a la
InterfazVisitante. La InterfazVisitante despliega la PantallaInformeCotizaciones. Esta
pantalla presenta el reporte de las cotizaciones registradas en el sistema en un periodo
de tiempo.
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento “Cerrar
Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
El subflujo Informe Ordenes de Produccion (S-2) se muestra a continuación
Subflujos Después de ser validado el usuario y desplegada la PantallaCompañia; si el usuario
escoge la opción “Cotizaciones”. La PantallaCompañia envía el evento “Ordenes de
Produccion” a la InterfazVisitante. La InterfazVisitante envía el evento “Ordenes de
Produccion” al ManejadorPrincipal. El ManejadorPrincipal solicita
DesplegarPantallaFechas a la InterfazVisitante. La InterfazVisitante despliega la
PantallaFechas. El Usuario presiona la opcion “Buscar”. La PantallaFechas envia el
evento “Buscar” a la InterfazVisitante. La InterfazVisitante envia el evento “Buscar” al
ManejadorGenerarInforme. El ManejadorGenerarInforme solicita cargarInformeOP
al ManejadorOrdenProduccion. El ManejadorOrdenProduccion solicita
cargarInformeOP a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita cargarInformeOP a la BaseDatosIntranet. La BaseDatosIntranet busca las
cotizaciones registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorOrdenProduccion. El
ManejadorOrdenProduccion devuelve OK al ManejadorGenerarInforme . El
ManejadorGenerarInforme solicita DesplegarPantallaInformeOP a la
InterfazVisitante. La InterfazVisitante despliega la PantallaInformeOP. Esta pantalla
presenta el reporte de las ordenes de produccion registradas en el sistema en un periodode tiempo.
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento “Cerrar
Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Tabla 16. Flujos y SubFlujos: Generar Informes
La descripción de Flujos y SubFlujos de los casos de uso restantes se definen en el Anexo 6.
6.2. CHEQUEO DE CONSISTENCIA ENTRE LOS CASOS DE USO Y EL MODELO DE
CLASES
Caso de Uso: Ingresar Cotización
Escenario: Ingresar Cotizacion Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administrativo
Iniciado por: Solicitud de Cotizacion por el Cliente
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”2” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Personal Administrativo}; muestra datos del usuario
2. El usuario selecciona “Compañia”
El sistema despliega pantalla “Compañia”, con las opciones de menú para la opcion compañia
3. El usuario selecciona “Ingresar Cotizacion”
El sistema despliega pantalla “Ingresar Cotizacion”; muestra los campos a llenar para el registro de la
cotizacion; los clientes registrados en el sistema { Cliente.obtenerClientes()}; y los empleados
registrados en el sistema { Empleado.obtenerEmpleados()}
4. El usuario ingresa los datos de la cotizacion, selecciona “Cliente” y empleado “Responsable”
(delivers idCliente, idResponsable, descripcion ); y presiona el botón “Aceptar”
El sistema registra la cotizacion { Cotizacion.insertarCotizacion (in idCliente, in idResponsable, in
descripcion); despliega mensaje de éxito en el registro de la cotizacion}
Tabla 17. Chequeo de Consistencia: Ingresar Cotización<<uses>>
<<uses>> validarEmpleado()
obtenerClientes() obtenerEmpleados()
<<escenario>>
Ingresar Cotizacion
Cliente Empleado
-intNit : int -intCedula : int
-strNombre : string -strNombre : string
-strTelefono : string <<uses>> -strApellido : string
-strDireccion : string insertarCotizacion() -dtFechaNac : Date
-strFax : string -strDireccion : string
-strEmail : string -strtelefono : string
-strContacto : string -strEmail : string
+insertarCliente() -strCargo : string
+editarCliente() -dtFechaIngreso : Date
+cargarClientes() -dtFechaRetiro : Date
+obtenerClientes() Cotizacion -strUsuario : string
+cargarInfoCliente() -strPaswword : string
-intConsecutivo : int -strFoto : string
-dtFecha : Date
+insertarEmpleado()
-txtDescripcion : string
+editarEmpleado()
+insertarCotizacion() +obtenerDatosUsuario()
+editarCotizacion() +cambiarDatosUsuario()
+cargarCotizacion() +validarEmpleado()
+cargarInformeCotizaciones() +cargarEmpleados()
+listarCotizaciones() +obtenerEmpleados()
+obtenerCotizaciones() +cargarInfoEmpleado()
Figura 20. Chequeo de Consistencia: Ingresar Cotización
Operaciones
validarEmpleado (in nom_usuario, in pass_usuario, out iden_usuario)
PRE: El usuario no debe estar logueado
POST:
if (exist e in Empleado.strUsuario=nom_usuario AND Empleado.strPassword=pass_usuario)
iden_usuario = e.intCedula;
else
print(“Nombre de Usuario y Contraseña no coinciden. Por Favor intente de Nuevo”);
endif
end
obtenerClientes ()
PRE: Existan Clientes registrados en el sistema
POST:
if (exist c in Cliente)
Listar c.strNombre;
else
Listar “ “;
endif
end
obtenerEmpleados ()
PRE: Existan Empleados registrados en el sistema
POST:
if (exist e in Empleado)
Listar e.strNombre + “ “ + e.strNombre;
elseListar “ “;
endif
end
insertarCotizacion (in idCliente,in idResponsable,in descripcion)
PRE: Empleado con rol de Administracion
POST:
Insertar un registro en la tabla Cotizacion
Cotizacion.intConsecutivo=MAX(Cotizacion.intConsecutivo)+1
Cotizacion.intIDCliente=idCliente
Cotizacion.intIDResponsable=idResponsable
Cotizacion.dtFecha=”Fecha Sistema”
Cotizacion.txtDescripcion=descripcion
end
Tabla 18. Operaciones: Ingresar Cotización
Caso de Uso: Generar Informes
Escenario: Generar Informes Versión: 2.0
Actor: Visitante
Precondición: Iniciar sesión
Iniciado por: Necesidad de generar informes
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”1” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Visitante}; muestra datos del usuario
2. El usuario selecciona “Compañia”
El sistema despliega pantalla “Compañia”, con las opciones de menú para la opcion compañía
3. El usuario selecciona “ Estado del Proyecto”
El sistema despliega pantalla “Fechas”; que despliega los calendarios para la selección del rango de fechas
del reporte
4. El usuario presiona “Buscar” (delivers fechaIni, fechaFin)
El sistema realiza el reporte del estado del proyecto en las fechas seleccionadas
{ OrdenProduccion.cargarInformeEstado (in fechaIni, fechaFin)}
Flujo Alternativo
3. El usuario selección “Cotizaciones”
El sistema despliega pantalla “Fechas”; que despliega los calendarios para la selección del rango de fechas
del reporte
4. El usuario presiona “Buscar” (delivers fechaIni, fechaFin)
El sistema realiza el reporte de cotizaciones en las fechas seleccionadas
{ Cotizacion.cargarInformeCotizaciones (in fechaIni, fechaFin)}Flujo Alternativo
2. El usuario selección “Ordenes de Produccion”
El sistema despliega pantalla “Fechas”; que despliega los calendarios para la selección del rango de fechas
del reporte
3. El usuario presiona “Buscar” (delivers fechaIni, fechaFin)
El sistema realiza el reporte de cotizaciones en las fechas seleccionadas
{ OrdenProduccion.cargarInformeOP (in fechaIni, fechaFin)}
Tabla 19. Chequeo de Consistencia: Generar Informes
Figura 21. Chequeo de Consistencia: Generar Informes
Operaciones
La operacion validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotizacion”
cargarInformeEstado (in fechaIni, in fechaFin)
PRE: Existen OP tipo proyecto
POST:
If (exist o in OrdenProduccion / o.dtFechaInicio>=fechaIni AND o.dtFechaEntrega<=fechaFin AND
o.strTipo=”Proyecto”)
Print(o.strNombre)
Print(o.txtDescripcion)
Print(Cliente.strNombre / Cliente.intNit= o.intIDCliente)
Print(o.dtFechaInicio)Print(o.dtFechaEntrega)
Print(Empleado.strNombre+” “+Empleado.strApellido / Empleado.intCedula=
o.intIDResponsable)
Print(o.txtObservaciones)
Print(o.strEstado)
endif
end
cargarInformeCotizaciones (in fechaIni, in fechaFin)
PRE: Existen cotizaciones registradas en el sistema
POST:
If (exist c in Cotizacion / c.dtFecha>=fechaIni AND c.dtFecha<=fechaFin)
Print(Cliente.strNombre / Cliente.intNit= c.intIDCliente)
Print(c.intConsecutivo)
Print(c.dtFecha)
Print(c.txtDescripcion)
Print(Empleado.strNombre+” “+Empleado.strApellido / Empleado.intCedula=
c.intIDResponsable)
endif
end
cargarInformeOP (in fechaIni, in fechaFin)
PRE: Existen empleado registrado en el sistema
POST:
If (exist o in OrdenProduccion / o.dtFechaInicio>=fechaIni AND o.dtFechaEntrega<=fechaFin)
Print(Cliente.strNombre / Cliente.intNit= o.intIDCliente)
Print(o.intConsecutivo)
Print(o.intIDCotizacion)
Print(o.strNombre)
Print(o.txtDescripcion)
Print(o.dtFechaInicio)
Print(o.dtFechaEntrega)
Print(Empleado.strNombre+” “+Empleado.strApellido / Empleado.intCedula=
o.intIDResponsable)
Print(o.strEstado)
endif
end
Tabla 20. Operaciones: Generar Informes
El chequeo de consistenacia para los casos de uso restantes se define en el Anexo 76.3. DIAGRAMA UML DE DESPLIEGUE
Figura 22. Diagrama UML de Despliegue
6.4. DIAGRAMA UML DE PAQUETES
Figura 23. Diagrama de Paquetes
6.5. ESQUEMA DE AUTORIZACION
Secretaria Personal Director de Ingeniero Administrador Visitante
de Administrativo Ingeniería del Sistema
Personal
Tablas
tblArea
tblCita C R UtblCiudad C R U R
tblCliente R U R U C R
tblCotizacion C R U
tblDepartamento C R U C R U C R U C
tblEmpleado R
tblInformeVisitas C R
tblOrdenProduccion C R U C R U C R U
tblRoles
tblRolXUsuario
Procedimientos
insertarCliente x x
editarCliente x x
asignarPermisos x
insertarEmpleado x x
editarEmpleado x x
cambiarDatosUsuario x
insertarCotizacion x x
editarCotizacion x x
cargarInformeCotizaciones x x
nuevoEvento x x x x x X
editarEvento x x x x x x
reportarVisita x x
editarReporte x x
cargarReporteVisitas x x
calcularCostoVisita x x
insertarOrdenProduccion x x
editarOrdenProduccion x x
cargarInformeOP x x x x x x
cargarInformeEstado x x x x x x
Tabla 21. Esquema de AutorizaciónENTREGABLE 7.
DISEÑO DE LA APLICACIÓN
7.1. INCORPORACION DE CODIGO EN LOS CASOS DE USO
Ingresar Cotización
Caso de Uso Ingresar Cotización
Versión 1.1 Fecha 18/05/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Tener un registro de cada una de las cotizaciones realizadas para los clientes.
Resumen En este caso de uso el usuario podrá registrar las cotizaciones solicitadas por
los clientes, en este indicaran el cliente, asignaran un responsable y darán una
descripción a la solicitud del cliente
Código Fuente function validarEmpleado($user,$pass) {
if(isset($user) && isset($pass)) {
$consulta=mysql_query("SELECT strUsuario,intCedula FROM Empleado
WHERE (strUsuario='$user') AND strPassword = MD5('$pass')");
if(mysql_num_rows($consulta)>0) {
$datos=mysql_fetch_array($consulta);
$_SESSION["usuario_actual"]=$datos["strUsuario"];
$_SESSION["identificacion_actual"]=$datos["intCedula"];
$_SESSION["consulta"]="";
$_SESSION["administracion"]="";
$_SESSION["mantenimiento"]="";
$_SESSION["control"]="";
$_SESSION["Ingenieria"]="";
$_SESSION["AdminIngenieria"]="";
$sql=mysql_query("SELECT intIDRol FROM RolXUsuario WHERE
intIDUsuario='".$_SESSION["identificacion_actual"]."'");
while($row=mysql_fetch_array($sql)) {
if($row["intIDRol"]==1){ $_SESSION["consulta"]="SI";}
elseif($row["intIDRol"]==2){$_SESSION["administracion"]="SI";}
elseif($row["intIDRol"]==3){$_SESSION["mantenimiento"]="SI";}
elseif($row["intIDRol"]==4){ $_SESSION["control"]="SI"; }
elseif($row["intIDRol"]==5){ $_SESSION["Ingenieria"]="SI";}
elseif($row["intIDRol"]==6){$_SESSION["AdminIngenieria"]="SI";}
}
return true;
} else {return false;}
}
}
function obtenerClientes() {?><select name="cliente">
<option></option>
<?php
$clientes=mysql_query("SELECT intNit,strNombre FROM Cliente");
while($info=mysql_fetch_array($clientes)) {
echo "<option value='".$info["intNit"]."'>
".$info["strNombre"]."</option>";
}
?>
</select>
<?}
function obtenerEmpleados() {?>
<select name="responsable">
<option></option>
<?php
$empleados=mysql_query("SELECT intCedula,strNombre,strApellido FROM
Empleado");
while($info=mysql_fetch_array($empleados)) {
echo "<option value='".$info["intCedula"]."'> ".$info["strNombre"]."
".$info["strApellido"]."</option>";
}
?>
</select>
<?}
function insertarCotizacion ($cliente,$responsable,$descripcion) {
if(isset($cliente) && isset($descripcion) && isset($responsable)) {
mysql_query("INSERT INTO Cotizacion
(intIDCliente,intIDResponsable,dtFecha,txtDescripcion) VALUES
('$cliente','$responsable',SYSDATE(),'$descripcion')");
?>
<script>
var msg='La cotizacion a sido ingresada exitosamente en el sistema';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 22. Código Fuente: Ingresar CotizaciónGenerar Informes
Caso de Uso Generar Informes
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Realizar un seguimiento a los diferentes elementos de la compañía, cotizaciones,
ordenes de producción, citas y visitas
Resumen El usuario selecciona el tipo de reporte a generar, selecciona el rango de
fechas y genera el reporte.
Código Fuente function cargarInformeEstado($fechaIni,$fechaFin) {
$informes=mysql_query("SELECT OrdenProduccion.strNombre strNombre,
OrdenProduccion.txtDescripcion txtDescripcion, Cliente.strNombre cliente,
OrdenProduccion.dtFechaInicio fechaIni, OrdenProduccion.dtFechaEntrega
fechaFin, CONCAT(Empleado.strNombre,' ',Empleado.strApellido) responsable,
OrdenProduccion.txtObservaciones observaciobes, OrdenProduccion.strEstado
estado FROM OrdenProduccion INNER JOIN Empleado ON
(Empleado.intCedula=OrdenProduccion.intIDResponsable) INNER JOIN Cliente
ON (Cliente.intNit=OrdenProduccion.intIDCliente) WHERE
dtFechaInicio>='$fechaIni' AND dtFechaEntrega<='$fechaFin'");
if(mysql_num_rows($informes)>0) {?>
<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr class="font_1">
<td width="122">Nombre</td>
<td width="198">Descripcion</td>
<td width="175">Cliente</td>
<td width="100" align="center">Fecha de Inicio</td>
<td width="102" align="center">Fecha de Entrega</td>
<td width="193">Responsable</td>
<td width="230">Observaciones</td>
<td width="90" align="center">Estado</td>
</tr>
<?php
while($info=mysql_fetch_array($informes)) {?>
<tr>
<td><? echo $info["strNombre"]?></td>
<td><? echo $info["txtDescripcion"]?></td>
<td><? echo $info["cliente"]?></td>
<td align="center"><? echo $info["fechaIni"]?></td>
<td align="center"><? echo $info["fechaFin"]?></td>
<td><? echo $info["responsable"]?></td>
<td><? echo $info["observaciobes"]?></td>
<td align="center"><? echo $info["estado"]?></td>
</tr>
<?}
?></table>
<?} else { echo "No se encuentran datos para el informe entre estas fechas";}
}
function cargarInformeCotizaciones($fechaIni,$fechaFin) {
$cliente=mysql_query("SELECT DISTINCT Cotizacion.intIDCliente
intIDCliente,Cliente.strNombre Nombre FROM Cotizacion INNER JOIN Cliente
ON (Cliente.intNit=Cotizacion.intIDCliente) WHERE
Cotizacion.dtFecha>='$fechaIni' AND Cotizacion.dtFecha<='$fechaFin'");
if (mysql_num_rows($cliente)>0) {?>
<table cellpadding="3" align="center">
<tr class="font_1">
<td width="120"></td>
<td width="130" align="center">Consecutivo</td>
<td width="140" align="center">Fecha</td>
<td width="380">Descripcion</td>
<td width="300">Responsable</td>
</tr>
<tr><td colspan="5"><hr align="center" size="3" align="left"
color="#343a3d"/></td></tr>
<?php
while($infoCliente=mysql_fetch_array($cliente)) {
$informes = mysql_query("SELECT Cotizacion.intConsecutivo id,
Cotizacion.dtFecha fecha, Cotizacion.txtDescripcion descripcion,
CONCAT(Empleado.strNombre,' ',Empleado.strApellido) responsable
FROM Cotizacion INNER JOIN Empleado ON
(Empleado.intCedula=Cotizacion.intIDResponsable) WHERE
intIDCliente='".$infoCliente["intIDCliente"]."' AND
Cotizacion.dtFecha>='$fechaIni' AND
Cotizacion.dtFecha<='$fechaFin'");
echo "<tr><td colspan='5'><b>Cliente:
</b>".$infoCliente["Nombre"]."</td></tr>";
while($info=mysql_fetch_array($informes)) {?>
<tr>
<td></td>
<td align="center"><? echo $info["id"]?></td>
<td align="center"><? echo $info["fecha"]?></td>
<td><? echo $info["descripcion"]?></td>
<td><? echo $info["responsable"]?></td>
</tr>
<?}
echo "<tr height='25'><td colspan='5'></td></tr>";
}?>
</table>
<?} else {echo "No se encuentran datos para el informe entre estas fechas";}}
function cargarInformeOP ($fechaIni,$fechaFin) {
$cliente=mysql_query("SELECT DISTINCT OrdenProduccion.intIDCliente
intIDCliente, Cliente.strNombre Nombre FROM OrdenProduccion INNER JOIN
Cliente ON (Cliente.intNit=OrdenProduccion.intIDCliente) WHERE
OrdenProduccion.dtFechaInicio>='$fechaIni' AND
OrdenProduccion.dtFechaEntrega<='$fechaFin'");
if (mysql_num_rows($cliente)>0) {?>
<table border="0" cellspacing="0" cellpadding="3" align="center">
<tr class="font_1">
<td width="85"></td>
<td width="118" align="center">Consecutivo</td>
<td width="117" align="center">Cotizacion</td>
<td width="143">Nombre</td>
<td width="228">Descripcion</td>
<td width="111" align="center">Fecha de Inicio</td>
<td width="111" align="center">Fecha de Entrega</td>
<td width="230">Responsable</td>
<td width="90" align="center">Estado</td>
</tr>
<tr><td colspan="9"><hr align="center" size="3" align="left"
color="#343a3d"/></td></tr>
<?php
while($infoCliente=mysql_fetch_array($cliente)) {
$informes = mysql_query("SELECT OrdenProduccion.intConsecutivo id,
OrdenProduccion.intIDCotizacion cotizacion,
OrdenProduccion.strNombre nombre, OrdenProduccion.txtDescripcion
descripcion, OrdenProduccion.dtFechaInicio fechaIni,
OrdenProduccion.dtFechaEntrega fechaFin,
CONCAT(Empleado.strNombre,' ',Empleado.strApellido) responsable,
OrdenProduccion.strEstado estado FROM OrdenProduccion INNER
JOIN Empleado ON
(Empleado.intCedula=OrdenProduccion.intIDResponsable) WHERE
intIDCliente='".$infoCliente["intIDCliente"]."' AND
OrdenProduccion.dtFechaInicio>='$fechaIni' AND
OrdenProduccion.dtFechaEntrega<='$fechaFin'");
echo "<tr><td colspan='9'><b>Cliente:
</b>".$infoCliente["Nombre"]."</td></tr>";
while($info=mysql_fetch_array($informes)) {?>
<tr>
<td></td>
<td align="center"><? echo $info["id"]?></td><td align="center"><? echo $info["cotizacion"]?></td>
<td><? echo $info["nombre"]?></td>
<td><? echo $info["descripcion"]?></td>
<td align="center"><? echo $info["fechaIni"]?></td>
<td align="center"><? echo $info["fechaFin"]?></td>
<td><? echo $info["responsable"]?></td>
<td align="center"><? echo $info["estado"]?></td>
</tr>
<?}
echo "<tr height='25'><td colspan='9'></td></tr>";
}?>
</table>
<?} else { echo "No se encuentran datos para el informe entre estas fechas";}
}
Tabla 23. Código Fuente: Informe Estado del Proyecto
La incorporación de código en los casos de uso restantes se encuentra descrita en el Anexo 8
7.2. CREACION DEL SCRIPT DE LA BASE DE DATOS
7.2.1. Creación de Tablespaces
CREATE TABLESPACE empleados
ADD DATAFILE = 'empleados'
ENGINE = InnoDB;
CREATE TABLESPACE solicitudes
ADD DATAFILE = 'solicitudes'
ENGINE = InnoDB;
CREATE TABLESPACE visitas
ADD DATAFILE = 'visitas'
ENGINE = InnoDB;
CREATE TABLESPACE citas
ADD DATAFILE = 'citas'
ENGINE = InnoDB;
7.2.2. Creación de Tablas
CREATE TABLE IF NOT EXISTS Area (
strCodArea varchar (6) NOT NULL,
strNombreArea varchar (20) NOT NULL,PRIMARY KEY (strCodArea)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
TABLESPACE empleados;
CREATE TABLE IF NOT EXISTS Cita (
intIDCita int (4) NOT NULL AUTO_INCREMENT,
intIDCliente int (15) NOT NULL,
intIDEmpleado int (15) NOT NULL,
strContacto varchar (100) NOT NULL,
strTelefono varchar (12) DEFAULT NULL,
dtFechaCita date NOT NULL,
dtHoraCita time NOT NULL,
strDirCita varchar (255) NOT NULL,
intIDCiudad int (4) NOT NULL,
strProposito text,
strObservaciones text,
strEstadoCita varchar (3) NOT NULL,
intIDCotizacion int (5) DEFAULT NULL,
PRIMARY KEY (intIDCita),
KEY FK_Cita_intIDCliente (intIDCliente),
KEY FK_Cita_intIDtblEmpleado (intIDEmpleado),
KEY FK_Cita_intIDCotizacion (intIDCotizacion)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
TABLESPACE citas;
CREATE TABLE IF NOT EXISTS Ciudad (
intIndicativo int (4) NOT NULL AUTO_INCREMENT,
intIndDepto int (4) NOT NULL,
strNombre varchar (30) DEFAULT NULL,
PRIMARY KEY (intIndicativo),
KEY FK_Ciudad_intIndDepto (intIndDepto)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=36;
TABLESPACE citas;
CREATE TABLE IF NOT EXISTS Cliente (
intNit int (15) NOT NULL,
strNombre varchar (50) NOT NULL,
strTelefono varchar (15) NOT NULL,
strDireccion varchar (100) DEFAULT NULL,
strFax varchar(15) DEFAULT NULL,
intIDCiudad int(4) NOT NULL,
strEmail varchar(250) DEFAULT NULL,
strContacto varchar(100) NOT NULL,
PRIMARY KEY (intNit),
KEY FK_Cliente_intIDCiudad (intIDCiudad)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;TABLESPACE solicitudes;
CREATE TABLE IF NOT EXISTS Cotizacion (
intConsecutivo int(5) NOT NULL AUTO_INCREMENT,
intIDCliente int(15) NOT NULL,
intIDResponsable int(15) NOT NULL,
dtFecha date NOT NULL,
txtDescripcion text NOT NULL,
PRIMARY KEY (intConsecutivo),
KEY FK_Cotizacion_intIDCliente (intIDCliente),
KEY FK_Cotizacion_intIDResponsable (intIDResponsable)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
TABLESPACE solicitudes;
CREATE TABLE IF NOT EXISTS Departamento (
intIndicativo int(4) NOT NULL AUTO_INCREMENT,
strNombre varchar(50) NOT NULL,
PRIMARY KEY (intIndicativo)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;
TABLESPACE citas;
CREATE TABLE IF NOT EXISTS Empleado (
intCedula int(15) NOT NULL,
strNombre varchar(50) NOT NULL,
strApellido varchar(50) NOT NULL,
dtFechaNac date NOT NULL,
strDireccion varchar(150) DEFAULT NULL,
strTelefono varchar(15) DEFAULT NULL,
strEmail varchar(255) DEFAULT NULL,
strCargo varchar(100) NOT NULL,
strCodArea varchar(6) NOT NULL,
intIDCiudad int(4) NOT NULL,
dtFechaIngreso date NOT NULL,
dtFechaRetiro date DEFAULT NULL,
strUsuario varchar(50) NOT NULL,
strPassword varchar(255) NOT NULL,
strFoto varchar(255) DEFAULT NULL,
PRIMARY KEY (intCedula),
UNIQUE KEY strUsuario (strUsuario),
UNIQUE KEY strUsuario_2 (strUsuario),
KEY FK_Empleado_intIDCiudad (intIDCiudad),
KEY FK_Empleado_strCodArea (strCodArea)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
TABLESPACE empleados;
CREATE TABLE IF NOT EXISTS InformeVisitas (intConsecutivo int(4) NOT NULL AUTO_INCREMENT,
intIDEmpleado int(15) NOT NULL,
intIDCliente int(15) NOT NULL,
strContacto varchar(100) NOT NULL,
dtFecha date NOT NULL,
dtHoraInicial time NOT NULL,
dtHoraFinal time NOT NULL,
intValorHora int(11) NOT NULL,
txtTrabajoSolicitado text,
txtTrabajoRealizado text,
txtObservaciones text,
PRIMARY KEY (intConsecutivo),
KEY FK_InformeVisitas_intIDCliente (intIDCliente),
KEY FK_InformeVisitas_intIDtblEmpleado (intIDEmpleado)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
TABLESPACE visitas;
CREATE TABLE IF NOT EXISTS OrdenProduccion (
intConsecutivo int(5) NOT NULL AUTO_INCREMENT,
intIDCotizacion int(5) DEFAULT NULL,
dtFechaInicio date NOT NULL,
dtFechaEntrega date DEFAULT NULL,
intIDCliente int(15) NOT NULL,
intIDResponsable int(15) NOT NULL,
strNombre varchar(50) DEFAULT NULL,
txtDescripcion text,
txtObservaciones text,
strEstado varchar(12) NOT NULL,
strTipo varchar(10) NOT NULL,
PRIMARY KEY (intConsecutivo),
KEY FK_OrdenProduccion_intIDCliente (intIDCliente),
KEY FK_OrdenProduccion_intIDResponsable (intIDResponsable),
KEY FK_OrdenProduccion_intIDCotizacion (intIDCotizacion)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
TABLESPACE solicitudes;
CREATE TABLE IF NOT EXISTS Roles (
intCodigo int(2) NOT NULL AUTO_INCREMENT,
strNombre varchar(15) NOT NULL,
txtDescripcion text NOT NULL,
PRIMARY KEY (intCodigo)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
TABLESPACE empleados;
CREATE TABLE IF NOT EXISTS RolXUsuario (
intIDRol int(2) NOT NULL,intIDUsuario int(15) NOT NULL,
PRIMARY KEY (intIDRol,intIDUsuario),
KEY FK_RolXUsuario_intIDUsuario (intIDUsuario)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
TABLESPACE empleados;
7.2.3. Creación de índices
El SGBD escogido para montar el aplicativo (Mysql 5.1.) y utilizando el motor de mysql InnoDB, crea
un índice por cada atributo que creado como clave foránea de otra tabla, por tanto, no consideramos
necesarios crear más índices que colaboren con la búsqueda dentro de la base de datos.
7.2.4. Inserción de datos
INSERT INTO Area (strCodArea, strNombreArea) VALUES
('I', 'ingeniería'), ('A', 'Administración'), ('P', 'Producción'), ('Proe', 'Proelectrico'), ('D', 'Dibujo');
INSERT INTO cita (intIDCita, intIDCliente, intIDEmpleado, strContacto, strTelefono, dtFechaCita,
dtHoraCita, strDirCita, intIDCiudad, strProposito, strObservaciones, strEstadoCita, intIDCotizacion)
VALUES
(1, 16, 1036601627, 'Ángela Maria Ospina', '514 66 55', '2009-05-05', '11:00:00', 'Oficina
Bancolombia', 2, 'Tomar requisitos para la automarizacion de los procesos', NULL, 'No', NULL), (2,
40, 1036601627, 'Carlos Andres Orozco', '285 66 00', '2009-05-15', '14:30:00', 'Planta Colcafe', 2,
'Conocer Necesidades del Cliente', NULL, 'No', NULL);
INSERT INTO Ciudad (intIndicativo, intIndDepto, strNombre) VALUES
(1, 1, 'Leticia'), (2, 2, 'Medellín'), (3, 3, 'Arauca'), (4, 4, 'Barranquilla'), (5, 5, 'Cartagena'), (6, 6,
'Tunja'), (7, 7, 'Manizales'), (8, 8, 'Florencia'), (9, 9, 'Yopal'), (10, 10, 'Popayan');
INSERT INTO Cliente (intNit, strNombre, strTelefono, strDireccion, strFax, intIDCiudad, strEmail,
strContacto) VALUES
(1, 'Alberto Arango', '268 68 68', 'Cll 62 sur No. 44 – 85', '', 2, '', 'Alberto Arango'), (2, 'ALICO ', '360
00 30', 'CALLE 10SUR No 50FF- 63', '', 2, '', 'EDWIN CIRO BERMUDEZ'), (6, 'Almacenes exito',
'3396565', 'Cr 48 No. 32B sur 139 ', '', 2, '', 'Jaime Bustamante'), (7, 'ANDERCOL', '470 07 00', 'Cr
64C No. 95 – 94 ', '', 2, '', 'Jhon Henry Mesa'), (16, 'BANCOLOMBIA', '514 66 55', '', '', 2, '', 'Ángela
María Ospina');
INSERT INTO Cotizacion (intConsecutivo, intIDCliente, intIDResponsable, dtFecha, txtDescripcion)
VALUES
(1, 174, 71778315, '2009-05-30', 'automatización Maquina de Ensacado'), (2, 40, 98647963, '2009-05-
20', 'automatización Maquina de Llenado');
INSERT INTO Departamento (intIndicativo, strNombre) VALUES
(1, 'Amazonas'), (2, 'Antioquia'), (3, 'Arauca'), (4, 'Atlantico'), (5, 'Bolivar'), (6, 'Boyaca'), (7, 'Caldas'),
(8, 'Caqueta'), (9, 'Casanare'), (10, 'Cauca');INSERT INTO Empleado (intCedula, strNombre, strApellido, dtFechaNac, strDireccion, strTelefono,
strEmail, strCargo, strCodArea, intIDCiudad, dtFechaIngreso, dtFechaRetiro, strUsuario, strPassword,
strFoto) VALUES
(43259985, 'Paula Andrea', 'Isaza', '1900-01-01', '', '', '', 'COMERCIAL', 'Proe', 2, '1990-01-01', '0000-
00-00', 'paisaza', '8cbc35e5475bac5cc286ff46d446a942', ''), (71778315, 'Juan David', 'Arango
Morales', '1900-01-02', '', '', '', 'INGENIERÍA', 'I', 2, '1990-01-02', '0000-00-00', 'jdarango',
'3e3dc45ecd4594d21d6a9335a17b2c7f', ''), (71212871, 'Hermes', 'Calle Orozco', '1900-01-03', '', '', '',
'INGENIERÍA', 'I', 2, '1990-01-03', '0000-00-00', 'hcalle', 'cb0cb600bbcbc778489d307c7fedec41', ''),
(70568892, 'German Esteban', 'Cardona Lopez', '1900-01-04', '', '', '', 'PRODUCCIÓN', 'P', 2, '1990-01-
04', '0000-00-00', 'gecardona', 'f87e931d93984d495ecc72877db46c6e', '');
INSERT INTO informevisitas (intConsecutivo, intIDEmpleado, intIDCliente, strContacto, dtFecha,
dtHoraInicial, dtHoraFinal, intValorHora, txtTrabajoSolicitado, txtTrabajoRealizado,
txtObservaciones) VALUES
(1, 71778315, 174, 'Hernan Toro', '2009-04-29', '08:00:00', '10:00:00', 0, 'Pruebas a la información
suministrada por el sistema de automatización de la ensacadora.', 'Pruebas en la base de datos a la
información suministradas por la ensacadora', 'El sistema esta funcionando correctamente no se ha
presentado perdida de la información'), (2, 98647963, 40, 'Carlos Andres Orozco', '2009-05-19',
'10:00:00', '15:30:00', 0, 'Mantenimiento a PLC', 'Mantenimiento', '');
INSERT INTO OrdenProduccion (intConsecutivo, intIDCotizacion, dtFechaInicio, dtFechaEntrega,
intIDCliente, intIDResponsable, strNombre, txtDescripcion, txtObservaciones, strEstado, strTipo)
VALUES
(1, 1, '2009-05-01', '2009-05-30', 174, 71778315, 'AdminEnsacadora', 'automatización Maquina de
Ensacado', 'Aplicar en Todas las Plantas', 'En Progreso', 'Proyecto'), (2, 0, '2009-06-01', '2009-07-15',
169, 98712098, 'PanelRegistro', 'Conteo de producción', '', 'Pendiente', 'Tablero');
INSERT INTO Roles (intCodigo, strNombre, txtDescripcion) VALUES
(1, 'Consulta', 'Permite el usuario ver información basica de la empresa, conocer algunos reportes, ver
los tblEmpleados, clientes y proveedores, acceder a recursos como la agenda y las descargas.'), (2,
'Administración', 'Permite al usuario manejar elementos como las cotizaciones y las ordenes de
producción, su registro, edición y reportes.'), (3, 'Mantenimiento', 'Acceso completo a todo el
aplicativo'), (4, 'AdminPersonal', 'Permite al usuario realizar todo la administración que tiene que ver
con el personal de la empresa, el registro de los tblEmpleados, las modificaciones sobre su
información y sus datos de usuario'), (5, 'ingeniería', 'Permitira al usuario acceder al formulario para el
reporte de las visitas.'), (6, 'AdminIngenieria', 'Permitira acceder al usuario a los direferentes informes
del sistema, y al formulario para reporte de visitas');
INSERT INTO RolXUsuario (intIDRol, intIDUsuario) VALUES
(1, 7551507), (1, 8102764), (1, 32107439), (1, 32466195), (1, 42827757), (1, 43021510), (1,
43057429), (1, 43207887), (1, 43252784);ENTREGABLE 8.
DOCUMENTACION
8.1. MANUAL DE USUARIO
DESCRIPCION GENERAL DEL SISTEMA: INTRANET
Aplicación Web que permite a los empleados de la compañía relacionados con el desarrollo de las
solicitudes de los clientes manejarlas adecuadamente. El sistema fue pensado con el fin de facilitar la
consulta, ingreso y modificación de la información brindada por el cliente en sus cotizaciones u
ordenes de producción, manejar las actividades realizadas por los empleados en función de sus
reuniones y visitas a los clientes, pudiendo así conocer mejor las necesidades de nuestros clientes y las
mejores opciones de solución. También el sistema brinda para su mejor funcionamiento un registro de
cliente y empleado, facilitando la consulta de información de los mismos.
El manejo de sistema se encuentra determinado por el rol del usuario, ya que este cuenta con 6 rol con
diferentes permisos para trabajar en el sistema. Inicialmente se tiene un usuario por defecto que es un
usuario de consulta con el cual se puede consultar la información pero no ingresarla o modificarla. Los
demás roles dependen de sus cargos dentro de la compañía, solo el rol de mantenimiento tiene acceso
completo a todas las funcionalidades del sistema además de que es el encargado del manejo de los
usuarios.
PREFACIO
El manual que se presenta a continuación es una herramienta sencilla y fácil de entender, que tiene
como objetivo orientar al usuario sobre el funcionamiento del sistema de Intranet para el manejo de las
solicitudes realizadas por el cliente, y se encuentra dividida en varias partes:
La primera parte está orientada al funcionamiento de la herramienta, en esta se describen las
actividades disponibles para cada uno de los roles de acceso y la forma en que estos acceden al
sistema. La segunda parte está orientada a la resolución de problemas, se hace alusión a los posibles
problemas que puede presentar el sistema y sus posibles soluciones. En la tercera parte se enumeran
las preguntas mas frecuentes sobre el sistema y su respuesta; y una ultima parte donde se encuentra un
glosario sobre términos desconocidos para el usuario.
INDICE
1. Guía sobre como usar las funciones del sistema
1.1. Acceso al Sistema
1.2. Funcionalidades Asociadas al Personal Administrativo
1.2.1. Ingresar Cotización
1.2.2. Editar Cotización
1.2.3. Ingresar Orden de Producción
1.2.4. Editar Orden de Producción
1.2.5. Registrar Cliente
1.2.6. Editar Cliente
1.3. Funcionalidades Asociadas a los Ingenieros1.3.1. Realizar Reporte de Visitas
1.4. Funcionalidades Asociadas al Director de Ingeniería
1.4.1. Generar Informe de Visitas
1.4.2. Editar Reporte de Visitas
1.5. Funcionalidades Asociadas a la Secretaria de Personal
1.5.1. Registrar Empleado
1.5.2. Editar Empleado
1.6. Funcionalidades asociadas al usuario Visitante
1.6.1. Generar Informes de la Compañía
1.6.2. Crear Evento
1.6.3. Editar Evento
1.7. Funcionalidades Asociadas al Administrador del Sistema
1.7.1. Cambiar Contraseña
1.7.2. Asignar Permisos
2. FAQ
3. Información de Contacto
4. Glosario
1. GUIA SOBRE COMO USAR LAS OPCIONES DEL SISTEMA
1.1. ACCESO AL SISTEMA
El acceso al sistema se hará al ingresar siguiente dirección Web en la barra de direcciones del
navegador del usuario:
http://www.metalandes.net/Archivos/Intranet_TDG/principal.phpUna vez cargado el aplicativo el
usuario tendrá acceso a la pantalla de inicio de sesión, en la cual se le presentara un formulario con los
campos a llenar y el botón “Acceder” que dará el acceso al sistema.
Ilustración 1. Pantalla de Inicio de Sesión
Si los datos de acceso ingresados por el usuario son incorrectos, este recibirá un mensaje de alerta
donde se le indicara que verifique sus datos de usuario para poder acceder al sistema, o en caso de no
tenerlos deberá comunicarse con el Administrador del Sistema. Si los datos si están registrados en el
sistema, el usuario ingresara al aplicativo y podrá acceder a las diferentes funciones según su perfil.1.2. FUNCIONALIDADES ASOCIADAS AL PERSONAL ADMINISTRATIVO
Si el usuario que ingresa al sistema tiene rol de Personal Administrativo (Administración), el sistema
le presentara la pantalla principal con un menú y sus opciones sobre el sistema. Donde sus funciones
principales se encuentran en el menú “Compañía” y “Directorio”, los cuales le permitirán dar un
manejo adecuado a las solicitudes de los clientes como se describe a continuación:
1.2.1. Ingresar Cotización
En la Pantalla “Compañía”, se le presenta al usuario las opciones para el manejo de las solicitudes
hechas por el cliente, entre ellas las cotizaciones, para lo cual se tiene la opción “Ingresar Cotización”,
que permitirá hacer un registro de las cotizaciones realizadas a los clientes.
Esta pantalla contiene el formulario de registro para las cotizaciones, donde se asigna un consecutivo a
la cotización, se presentara la lista de clientes registrados en el sistema, la lista de empleados, y un
campo para describir la cotizaciones.
Ilustración 2. Pantalla Ingresar Cotización
Luego de ingresados los datos, de seleccionado el cliente, y asignado el responsable, el usuario debe
presionar el botón “Aceptar”, para realizar el registro de la cotización en el sistema. El usuario recibirá
un mensaje de confirmación del registro.
1.2.2. Editar Cotización
Para el manejo de las Cotizaciones, en la pantalla “Compañía”, se le presenta al usuario la opción
“Editar Cotización”, la cual le permitirá ver un listado de las cotizaciones registradas en el sistema,
para su previa selección y modificación.
Ilustración 3. Pantalla Listado de CotizacionesPara la selección de las cotizaciones el usuario deberá presionar el vinculo “Editar”, que le desplegara
un formulario con los datos editables de la cotización seleccionada. Una vez el usuario haya realizado
las modificaciones, y presionado el botón “Aceptar”, el sistema guardara las modificaciones realizadas
y despliega un mensaje para informar que las modificaciones han sido realizadas.
Ilustración 4. Pantalla Editar Cotización
1.2.3. Ingresar Orden de Producción
La opción “Compañía” del menú principal también le permite al usuario de Personal Administrativo
realizar un manejo de las Ordenes de producción hechas por los cliente, para esto tiene la opción
“Ingresar OP” que le permitirá hacer un registro de la información de la orden de producción para su
previo seguimiento.
El sistema le brinda al usuario un formulario, donde encontrara los datos necesario de la Orden de
Producción, se le dará un consecutivo a la misma, se podrá seleccionar el rango de fechas para su
realización, se hará la asignación de una cotización de ser necesario, se podrá seleccionar el cliente y
asignar tanto un responsable como un estado para su previo seguimiento.
Ilustración 5. Pantalla Ingresar OP
Al terminar de ingresar los datos para el registro de la Orden de Producción, el usuario deberá
presionar el botón “Aceptar”, y el sistema ingresara la información de la Orden de Producción, y
mostrara un mensaje del éxito del registro.1.2.4. Editar Orden de Producción
“Editar OP” es la otra opción presentada al usuario para el manejo de las Ordenes de Producción, y
consta básicamente de una pantalla inicial donde se listan las ordenes de producción registradas en e
sistema, donde se selecciona aquella que se desea consultar o modificar al presionar el vinculo
“Editar”.
Ilustración 6. Pantalla Lista Ordenes de Producción
Una vez presionado “Editar” se desplegara un formulario con la información de la Orden de
Producción seleccionara y los posibles campos a modificar, al ingresar los nuevos datos, el usuario
deberá presionar el botón “Aceptar” para que sean guardados los cambios en el sistema. El usuario
recibirá un mensaje de éxito en el registro de las modificaciones.
Ilustración 7. Pantalla Editar OP
1.2.5. Registrar Cliente
El Personal Administrativo dentro del sistema también tiene la función de registrar la información de
los clientes de la compañía, y para esto se le presenta la opción “Directorio” en el menú principal, en
la cual encontrara la función “Registrar Cliente”, la cual le permitirá ingresar la información del
cliente, para así tener un registro del mismo.
Al presionar esta opción se desplegara una ventana con un formulario donde se deberá ingresar el nit,
nombre, teléfono, fax, dirección, y correo electrónico del cliente si tiene, se seleccionara la ciudad de
ubicación y además de que se debe ingresar el nombre del contacto dentro de la compañía (Cliente).Ilustración 8. Pantalla Registrar Cliente
Luego de ingresados los datos del cliente y presionado el botón “Aceptar” el sistema guardara el
registro del cliente, y mostrara al usuario un mensaje indicando el éxito del registro.
1.2.6. Editar Cliente
La otra función para el manejo de los clientes a la que tiene acceso el personal administrativo es
“Editar Cliente”, la cual le permitirá mantener actualizada la información de contacto del cliente. Si el
usuario selecciona esta opción se le presentara una lista de los clientes registrados en el sistema con la
posibilidad de realizar una búsqueda por nombre de aquel cliente que va a modificar. Una vez
encontrado el cliente se le dará al usuario la opción “Ver” donde podrá ver la información del usuario,
y acceder a la opción editar.
Ilustración 9. Pantalla Consultar Clientes
Ilustración 10. Pantalla Información del ClienteAl presionar “Editar” se presentara un formulario con los posibles campos a modificar del cliente, se
realizan los cambios, se presiona “Aceptar”, y el sistema registra la información modificada, y luego
despliega un mensaje informando el registro exitoso.
Ilustración 11. Pantalla Editar Cliente
Las demás opciones a las que tiene acceso este usuario son las mismas descritas para el usuario de
Visitante, en el numeral 1.6 de este manual.
1.3. FUNCIONALIDADES ASOCIADAS A LOS INGENIEROS
El empleado con rol de ingeniero dentro del sistema solo tendrá acceso al proceso de reporte de las
visitas realizadas a los clientes, al cual se tiene acceso a través del menú “Compañía”.
1.3.1. Realizar Reporte de Visitas
La opción “Reportar Visita” le permite al ingeniero hacer el registro de las actividades realizadas en la
visita al cliente, a través del formulario presentado donde podrá seleccionar el cliente visitado, indicar
el contacto, la fecha de la visita, indicar la fecha de llegada a la visita y la hora de salida de la visita,
además de reportar lo requerido por el cliente en la visita, lo realizado en la visita y las observaciones
que se puedan presentar.Ilustración 12. Pantalla Reportar Visita
Al terminar de ingresar los datos del reporte, se debe presionar el botón “Aceptar”, y el sistema
guardara el registro de la visita con el fin de que sea consultado posteriormente por el director de
ingeniería en el informe.
Las demás opciones a las que tiene acceso este usuario son las mismas descritas para el usuario de
Visitante, en el numeral 1.6 de este manual.
1.4. FUNCIONALIDADES ASOCIADAS AL DIRECTOR DE INGENIERIA
El director de ingeniería dentro del sistema es el encargado de la elaboración del informe de visitas, en
el cual debe reportar las visitas realizadas por los ingenieros y el costo de estas, y para lo cual cuenta
con las funciones descritas a continuación:
1.4.1. Generar Informe de Visitas
La generación de informe de vistas se encuentra en el menú “Compañía”, y le permitirá al usuario
obtener el informe de las visitas de los ingenieros, además de asignar un valor hora, y así calcular el
costo de la visita. En esta opción el sistema le presentara al usuario una ventana con los campo para
seleccionar las fecha de generación del reporte, y el botón “Generar” que permitirá ver el informe.
Ilustración 13. Selección de Fechas para el InformeAl presionar el botón “Generar”, el sistema presenta el informe con cada una de las visitas reportadas
en estas fechas, además de un espacio en blanco para que el usuario pueda ingresar el valor de la hora,
según el cliente visitado, y posteriormente obtener el costo total de la visita según el numero de horas.
Ilustración 14. Pantalla Informe de Visitas
El sistema también le permite al usuario imprimir el reporte además de guardar el valor de la hora
ingresado para usos posteriores al presionar el botón “Guardar e Imprimir”, el cual almacenara el valor
de la hora para cada visita, y desplegara una pantalla con el formato de impresión del reporte.
1.4.2. Editar Reporte de Visitas
Al generar el informe el Usuario también tiene la posibilidad de modificar los reportes de visita
realizados por los ingenieros, según sea su criterio, accediendo al vínculo “Editar” en la última
columna del informe. Este evento desplegara una ventana emergente con los posibles campos editable
del reporte. Una vez hechas las modificaciones y presionado el botón “Aceptar” el sistema guardara
las modificaciones y presentara un mensaje de éxito.Ilustración 15. Pantalla Editar Reporte de Visita
Las demás opciones a las que tiene acceso este usuario son las mismas descritas para el usuario de
Visitante, en el numeral 1.6 de este manual.
1.5. FUNCIONALIDADES ASOCIADAS A LA SECRETARIA DE PERSONAL
La secretaria de personal es la única encargada del manejo de los empleados de la compañía, y el
sistema busca brindarle una herramienta que le facilite dicha función, brindándole las siguientes
opciones:
1.5.1. Registrar Empleado
Dentro de las funciones de la Secretaria de Personal en el sistema esta el registro de cada uno de los
empleados que laboran en la compañía, con el fin de que se tenga un acceso permanente a la
información de estos, además de que estos puedan hacer uso del sistema según sean sus funciones.
Para esto se le brinda al usuario la opción “Registrar Empleado”, la cual se encuentra en el menú
“Empleado”, donde tendrá acceso a un formulario, con los campos requeridos para registrar la
información básica de cada uno, en ella deberá ingresar Nombres y Apellidos, Cedula, Fecha de
Nacimiento, Cargo, Área en la que trabajara, sus datos de ubicación: teléfono, dirección y correo
electrónico, además de asignar un nombre de usuario para el acceso a la Intranet.Ilustración 16. Pantalla Registro de Empleados
Una vez ingresada la información del Empleado, y presionado el botón “Aceptar”, el sistema registrara
al empleado, y le asignara una contraseña de acceso y un rol de Consulta por defecto, luego presentara
un mensaje informando el registro exitoso del empleado.
1.5.2. Editar Empleado
La secretaria de personal también tendrá entre sus funciones dentro del sistema “Editar Empleado”,
función que le permitirá modificar y mantener actualizada la información de los empleados de la
compañía. Para acceder a esta función el usuario debe ingresar al menú “Empleados”, donde
encontrara una lista con la información básica de los empleados, y una opción de búsqueda por Área,
Ciudad o Ambas.
Ilustración 17. Pantalla Consultar Empleados
Al encontrar el empleado que desea modificar el usuario deberá acceder al vinculo “Ver mas”, el cual
desplegara una ventana con la información del empleado y la opción “Editar”, la cual le permitirá
acceder a los campos editables de la información del usuario y realizar las modificaciones, luego de
presionado el botón “Aceptar”, el sistema registrara los cambios y desplegara el mensaje de éxito.Ilustración 18. Pantalla Información del Usuario
Ilustración 19. Pantalla Editar Empleado
Las demás opciones a las que tiene acceso este usuario son las mismas descritas para el usuario de
Visitante, en el numeral 1.6 de este manual.
1.6. FUNCIONALIDADES ASOCIADAS AL USUARIO VISITANTE
El usuario visitante es aquel que entra al sistema con rol de consulta, y solo tiene acceso al listado de
la información y a la agenda para la programación y reporte de citas.
1.6.1. Generar Informes de la Compañía
La opción “Informes”, definida en el menú “Compañía”, le permite al usuario acceder a los diferentes
reportes de las solicitudes del cliente y de las citas programadas por el usuario. Si se selecciona
cualquiera de estos reportes el sistema le presentara al usuario la pantalla para seleccionar las fechas
de generación del informe, y el botón “Generar” para desplegar el informe seleccionado. El sistema
busca y despliega la información relacionada con el tipo de informe según las fechas indicadas.Ilustración 20. Ejemplo Informes de la Compañía
1.6.2. Crear Evento
El reporte de las citas planeadas con los clientes, es una función a la cual tienen acceso, todos los
usuarios dentro del sistema, y les permitirá tener un registro de las citas que tiene pendientes o que ya
a realizado.
Para esta función se presenta al usuario la opción “Crear Evento”, la cual le desplegara un formulario
donde se especifican los datos de la cita como: El Cliente, la Fecha y Hora de la Cita, la Dirección, y
el propósito del encuentro con el Cliente.
Ilustración 21. Pantalla Crear Evento
Una vez se han ingresado los datos y se presiona el botón “Aceptar”, la cita es registrada en el sistema
y se puede consultar como pendiente en el calendario brindado por el aplicativo.
1.6.3. Editar Evento
Poder modificar la información registrada para las citas, es otra de las funciones que pueden realizar
los usuarios dentro del sistema, esto le permitirá modificar los datos de encuentro de la cita, o en caso
de ya haberse realizado realizar el reporte de esta, reportando su estado (Realizada o no Realizada),
haciendo algunas observaciones o asignando un código de cotización si esta se solicito a partir de la
Cita. El sistema presenta un formulario con a información de la cita y los espacios para las
modificaciones u observaciones.Ilustración 22. Pantalla Consultar Eventos
Ilustración 23. Pantalla Editar Evento
1.7. FUNCIONALIDADES ASOCIADAS AL ADMINISTRADOR DEL SISTEMA
El administrador del sistema será la persona encargada de la administración de los usuarios del
sistema, además de ser la única con un acceso completo a todas las funcionalidades del sistema
descritas en los numerales anteriores.
1.7.1. Cambiar Contraseña
Para el manejo de los usuarios, el administrador del sistema tendrá acceso a la función “Cambiar
Contraseña”, que se encuentra en el menú “Compañía”, la cual le permitirá controlar el acceso al
sistema, determinar datos de usuario, y modificarlos según sea necesario.
Al seleccionar esta opción el sistema desplegara un ventana con la opción de búsqueda de los usuarios
del sistema, se debe seleccionar aquel que se desee modificar, y presionar el botón buscar.Ilustración 24. Pantalla Cambiar Contraseña
El sistema cargara y mostrara al usuario los datos definidos para el empleado seleccionado, con la
opción de modificación (Si no se desea realizar ningún cambio debe presionar aceptar sin escribir nada
en el campo contraseña). En caso contrario se ingresan los nuevos datos y se presiona aceptar
1.7.2. Asignar Permisos
La función Asignar Permisos se encuentra en el menú “Compañía”, en la opción Usuarios-Asignar
Permisos. Esta opción le permitirá al usuario modificar los permisos de acceso al sistema de cada uno
de los empleados registrados.
Al usuario se le presentara una pantalla con la lista de empleados registrados, y un botón que le
permitirá buscar los permisos del usuario seleccionado. Al buscar los permisos del empleado, el
sistema despliega al usuario el empleado seleccionado y una tabla con los posibles permisos a asignar,
donde se encontraran seleccionados aquellos que ya tiene asignados.
Ilustración 25. Pantalla Asignar Permisos
Para la selección de los permisos, el usuario tendrá dos opciones, el rol de Mantenimiento, que le da
acceso a todo y por tanto bloquea la asignación de los demás permisos, o el usuario podrá seleccionar
varios de los roles presentados en el sistema. Una vez seleccionados los permisos el usuario debe
presionar el botón “Guardar” para asignar los permisos al usuario, el sistema presentara un mensaje de
asignación exitosa.
Las demás opciones a las que tiene acceso este usuario son las mismas descritas para el usuario de
Visitante, en el numeral 1.6 de este manual.2. FAQ
¿Cómo acceder al Sistema?
Para el acceso al sistema el usuario deberá ingresar la siguiente dirección en su navegador:
http://www.metalandes.net/Archivos/Intranet_TDG/
Se presentara la ventana principal del aplicativo con los campos de Usuario y Contraseña para el inicio
de sesión
¿Qué tipo de actividades permite hacer el sistema?
El sistema de Intranet permite al usuario hacer un manejo general de las solicitudes del cliente a partir
de Cotizaciones y Órdenes de Producción, realizando su registro, su consulta y con posibilidad de
modificación para su futuro seguimiento.
También se tiene un manejo de la información del empleado, permitiendo así hacer seguimiento de sus
responsabilidades, de sus actividades. Se brinda una lista para información de los Clientes, y una
agenda para el manejo de citas y actividades.
¿Cómo es el proceso de instalación y configuración del sistema?
El sistema no requiere de un proceso de instalación en cada uno de los equipos de la compañía, cada
uno de estos solo requiere tener un acceso a Internet.
La instalación del Sitio se realiza en un servidor con las siguientes características: Reconocimiento de
PHP, y MySQL como base de datos; y su configuración constara únicamente de modificar los datos de
conexión a la BD encontrados en el archivo conexión.php dentro de la carpeta “Intranet”
¿Cuáles son los requisitos de hardware para el sistema?
El sistema no requiere de ningún hardware específico para su funcionamiento, el usuario solo deberá
tener una conexión a Internet
¿Qué software necesito para ejecutar el sistema?
El único requerimiento de software para la utilización del sistema es el navegador web.
¿Cuáles son los requisitos mínimos de velocidad de conexión a Internet?
No hay ningún requisito mínimo, de la velocidad de la conexión depende el rendimiento del sistema.
¿Puedo ingresar al sistema sin estar registrado?
No es posible, al sistema solamente pueden ingresar los usuarios registrados por el administrador.
¿El sistema puede utilizarlo más de una persona a la vez?
Este es un sistema multiusuario que puede ser accedido a través de Internet, por tanto, varias personas
pueden estar trabajando en el al mismo tiempo.
¿Qué pasa si olvido mi clave o no funciona?
Contacte al Administrador del Sistema, ya que es la única persona que puede realizar estas
modificaciones.¿Cómo es el proceso de registro para utilizar el sistema?
Un usuario para ser registrado en el sistema principalmente debe ser empleado de la compañía, su
registro lo hará la persona encargada del personal al momento de recibir la documentación, esta le dará
su nombre de usuario y contraseña, y un rol de Consulta dentro del sistema.
¿Si mi rol en la organización a cambiado que debo hacer para recibir los permisos
correspondientes a mi nuevo rol?
Se debe contactar al administrador del Sistema es la única persona con la capacidad de realizar las
modificaciones de permisos de usuario.
3. INFORMACION DE CONTACTO
Zuleima Marcela Moreno Ruiz
mmarcez723@gmail.com
zmmoreno@unalmed.edu.co
4. GLOSARIO
• Orden de Producción: Solicitud realizada por el cliente para que la compañía desarrolle la
solución planteada a sus necesidades.
• Cotización: Solicitud realizada por el cliente para que se realice un costeo de la solución que
satisfaga sus necesidades.
• Cliente: Empresa o Particular que ha realizado algún tipo de solicitud dentro de la compañía.
• Responsable: Personal encargado de realizar el seguimiento al desarrollo de los proyectos a su
cargo.
• Cita: Reunión acordada por el cliente para escuchar sus necesidades y ofrecerle soluciones.
• Visita: Reunión realizada por el cliente para realizar un instalación, mantenimiento, o actualización
de las ordenes de producción entregadas
• Reporte: es el formulario llenado por los ingenieros al realizar sus visitas a los clientes, con el fin
de hacer un seguimiento al proceso.
• Informe: Consolidación de la información del sistema con el fin de realizar un mejor seguimiento a
su desarrollo.
• Permisos: Roles asignados a los usuarios para el acceso al sistema.
1. Mantenimiento: Rol obtenido por el administrador del sistema, es el único permiso que le da
al usuario acceso completo a todo el aplicativo, además de ser el único con la opción de
Administrar las cuentas de usuarios como Claves y Permisos.
2. Administrativo: Rol que permite al usuario solamente el manejo de las solicitudes del cliente,
como es ingreso y actualización de Cotizaciones y Ordenes de Producción, además del registro y
actualización de Clientes.
3. Control: Rol de usuario que se encarga del manejo de los empleados de la compañía, su
registro y modificación; además del registro y actualización de la información de los Clientes.
4. Ingeniero: Rol con acceso únicamente al Reporte de Visitas, labor realizada únicamente por
los empleados del área de Ingeniería.5. AdminIngenieria: Rol que brinda al usuario todo el manejo sobre los reportes de visitas
realizados por los ingenieros, tiene acceso al informe de las visitas, y la modificación del reporte
de los mismos.
6. Consulta: Rol de usuario con acceso básico dentro del sistema, solo tiene permitida la
visualización de la información.PROTOTIPO
http://www.metalandes.net/Archivos/Intranet_TDG/principal.php
Usuario: zmmoreno
Password: zmmoreno
ANEXOS
Archivos ubicados en la carpeta Anexos
Anexo 1. Descripción de los Casos de Uso
Anexo 2. Consultas
Anexo 3. Transacciones
Anexo 4. Prediseño Arquitectónico
Anexo 5. Carpeta Diagramas de Secuencia
Anexo 6. Casos de Uso insertando Secuencias en los Flujos y SubFlujos
Anexo 7. Chequeo de Consistencia entre los Casos de Uso y el Modelo de Clases
Anexo 8. Incorporacion de Código en los Casos de UsoDESCRIPCION DE LOS CASOS DE USO
CU2. Editar Cotización
Caso de Uso Editar Cotización
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Permitir realizar cambios en las cotizaciones solicitadas por los clientes
Objetivo Este caso de uso esta asociado al requisito R . Permitir que se modifique la
10
cotización
Resumen El usuario obtiene una lista con las cotizaciones registradas, selecciona
aquella que estaba buscando y realiza las modificaciones sugeridas por el
cliente.
Actores Personal Administrativo, Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara dos opciones mas en
2 “Cotizaciones” el menú Ingresar Cotización, Editar
Cotización
Selecciona la opción “Editar El sistema presenta un formulario con la
Cotización” información de la cotización seleccionada
3
y con la opción de modificar cualquiera de
sus datos, incluyendo la fecha.
Ingresa la información que desea El sistema registra en el sistema las
4 modificar, y presiona el botón “Aceptar” modificaciones hechas por el usuario a la
cotización.
Demora Si la modificación de la cotización se desarrolla de manera óptima no debe demorar
más de 2 minutos, en promedio puede demorarse 3 minutos, como tiempo máximo se
espera que se demore modificar la cotización 4 minutos.
Frecuencia 2 veces al día
Tipo Primario
Postcondiciones Modificación en la información de la Cotización
GráficoPantalla
Tabla 1. Caso de Uso: Editar Cotizaciones
CU3. Ingresar OP
Caso de Uso Ingresar OP (Orden de Producción)
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Mantener un registro de las órdenes de producción solicitadas por los clientes a la
compañía.
Objetivo Este caso de uso, esta asociado a los objetivos O Garantizar que las órdenes de
6.
producción se terminen a tiempo y O Promover un buen manejo de las órdenes de
7.
producción, y el requisito R Lograr que se registre orden de producción
6.
Resumen El usuario podrá registrar las ordenes de producción solicitadas por el
cliente, registrando el cliente, asignando un responsable, cargando la
cotización si se encuentra asociado a una, permitiendo asignar fecha de inicio
y entrega, además de un nombre y la descripción del proyecto.
Actores Personal Administrativo, Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menúEn el segundo menú selecciona la opción El sistema desplegara otras dos
2 “Ordenes de Producción” opciones del menú Ingresar OP, Editar
OP
Selecciona la opción “Ingresar OP” El sistema presenta un formulario
donde el usuario podrá ingresar la
3 información relacionada con la orden
de producción, y calcula el consecutivo
que la identificara.
El usuario selecciona una cotización si se El sistema carga la información de la
4 tiene asociada. cotización como es cliente, responsable
y descripción.
El usuario selecciona la fecha de inicio y de
5
entrega para la orden de producción.
El usuario pone un nombre que identifique
6 el proyecto, e ingresa observaciones de ser
necesario.
Despliega la lista con los estado de la OP El sistema muestra una lista
desplegable con los estados del
7
proyecto: Pendiente, En Progreso,
Finalizado y Cancelado
8 Selecciona estado de la OP
Despliega la lista con los tipos de OP El sistema muestra una lista
9 desplegable con los tipos de OP:
Tablero y Proyecto
10 Selecciona el tipo de OP
Presiona el botón “Aceptar” El sistema registra la orden de
11
producción.
Secuencia
alternativa de USUARIO SISTEMA
interacciones
La OP no tiene cotización asociada, el
4 usuario selecciona la fecha de inicio y
entrega de la OP.
Despliega la lista con los Clientes El sistema presenta una lista
5 desplegable con el nombre de los
clientes registrados en el sistema
6 Selecciona el cliente
Despliega la lista con los empleados El sistema presenta una lista
7 desplegable con lo nombre de los
empleados registrados en el sistema
8 Selecciona el responsable de la OP
El usuario pone un nombre que identifique
el proyecto, hace una descripción de la
9
solicitud del cliente, e ingresa
observaciones de ser necesario.
Despliega la lista con los estado de la OP El sistema muestra una lista
10
desplegable con los estados delproyecto: Pendiente, En Progreso,
Finalizado y Cancelado
11 Selecciona estado de la OP
Despliega la lista con los tipos de OP El sistema muestra una lista
12 desplegable con los tipos de OP:
Tablero y Proyecto
13 Selecciona el tipo de OP
Presiona el botón “Aceptar” El sistema registra la orden de
14
producción.
Demora Este caso de uso en su desarrollo óptimo puede tardar 4 minutos, en promedio puede
tardar 5 minutos, y como máximo puede demorarse 6 minutos.
Frecuencia 4 veces al día
Tipo Primario
Postcondiciones Orden de producción registrada en el sistema.
Gráfico
Pantalla
Tabla 2. Caso de Uso: Ingresar OP
CU4. Editar OP
Caso de Uso Editar OP (Orden de Producción)
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente CompañíaPropósito Permitir dar un mejor manejo a las órdenes de producción y hacerles el seguimiento
adecuado.
Objetivo Este caso de uso esta asociado al objetivo O Promover un buen manejo de las
7.
órdenes de producción y el requisito R Permitir que se modifique la orden de
7.
producción.
Resumen El usuario busca y selecciona la orden de producción que desea modificar,
ingresa los datos a modificar y modifica la orden de producción
Actores Personal Administrativo o Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos opciones
2
“Ordenes de Producción” del menú Ingresar OP, Editar OP
El Usuario selecciona la opción “Editar El sistema mostrara una lista con las
3 OP” ordenes de producción del sistema, y la
opción de editarlas
El usuario busca la OP a modificar y Despliega una pantalla con el formulario
presiona “Editar” con los datos de la Orden de producción
4
seleccionada y la opción para
modificarlos, excepto el consecutivo.
5 El usuario realiza las modificaciones
6 El usuario presiona el botón “Aceptar” El sistema guarda las modificaciones
Demora En un desarrollo optimo modificar una orden de producción puede tardar mas o
menos 3 minutos, en promedio se puede demorar 4 minutos y como máximo 5 minutos
Frecuencia 2 veces al día
Tipo Primario
Postcondiciones Modificaciones a la orden de producción registradas en el sistema
GráficoPantalla
Tabla 3. Caso de Uso: Editar OP
CU5. Reportar Visita
Caso de Uso Reportar Visita
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Permitir a los ingenieros hacer un reporte de las visitas que realizan a los clientes.
Objetivo Esta caso de uso esta asociado al objetivo O Brindar un servicio integral de
2.
Mantenimiento y soporte, además de que esta asociado al requisito R . Lograr que se
5
escriba reporte de visita
Resumen El ingeniero luego de realizada la visita al cliente debe reportar en el sistema
la información acerca de la visita realizada, la fecha y hora de realización,
los motivos de esta y la solución prestada al cliente.
Actores Ingeniero, Director de Ingeniería, Administrador del Sistema
Precondición Iniciar sesión con rol de Ingeniero, Director de Ingeniería o Administrador del
Sistema
Secuencia normal
USUARIO SISTEMA
de interaccionesSelecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos opciones
2 “Ingeniería” del menú Reporte de Visitas, Informe de
Visitas
El Usuario selecciona la opción “Reporte El sistema presentara un formulario con
3 de Visitas” la información necesaria para registrar
la visita
Despliega lista de Empleados El sistema presenta una lista con los
4
empleados registrados en el sistema
Selecciona el empleado que realizo la
5
visita
Despliega lista de Clientes El sistema presenta una lista con los
6
clientes registrados en el sistema
7 Selección el cliente que fue visitado
8 Ingresa el nombre del contacto del cliente
9 Selecciona el campo fecha El sistema despliega un calendario
Selecciona la fecha en que se realizo la
10
visita
11 Ingresa la hora inicial y final de la visita
Registra el trabajo solicitado, el realizado
12
y las observaciones
Presiona el botón “Aceptar” El reporte de visita es registrado en el
13
sistema
Demora El desarrollo de este caso de uso en un caso mas óptimo puede tardarse alrededor de
15 minutos, en promedio se puede tardar 17 minutos, como máximo este caso de uso
se puede demorar 20 minutos.
Frecuencia 4 veces por semana
Tipo Primario
Postcondiciones Reporte de visita registrado en el sistema
GráficoPantalla
Tabla 4. Caso de Uso: Reporte de Visitas
CU6. Editar Reporte de Visita
Caso de Uso Editar Reporte de Visita
Versión 1.0 Fecha 15/05/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Corregir posibles errores presentados en el reporte de la visita, para mejor
presentación del informe
Objetivo Este caso de uso se encuentra asociado al objetivo O Brindar un servicio integral de
2.
Mantenimiento y soporte, y el requisito R Hacer que se consulte Reporte de Visita
4.
Resumen El usuario selecciona un rango de fechas, genera al informe de visitas,
selecciona el reporte a modificar.
Actores Director de Ingeniería, Administrador del Sistema
Precondición Iniciar sesión con rol de Director de Ingeniería o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos opciones
2 “Ingeniería” del menú Reporte de Visitas, Informe de
Visitas
El Usuario selecciona la opción “Informe El sistema presentara un formulario con
3 de Visitas” los campos para seleccionar el rango de
fechas para el informe
El usuario selecciona el campo “Fecha El sistema despliega un calendario
4
Inicial”5 Selecciona la fecha inicial para el reporte
El usuario selecciona el campo “Fecha El sistema despliega un calendario
6
Final”
7 Selección al fecha final para el informe
Presiona el botón “Buscar” Busca los reportes de visitas realizados
8 en esta fecha y carga la información de
cada uno en el informe
Busca reporte a modificar y presiona Presenta una ventana emergente con la
9 “Editar” información de la visita, y los campos
para modificar.
Realizar las modificaciones al reporte de
10
visita
Presiona el botón “Aceptar” Actualiza la información del reporte de
11
visita
Demora El desarrollo de este caso de uso puede tardarse en un desarrollo optimo 8 minutos,
como tiempo promedio puede demorarse 10 minutos, y máximo puede tardarse 12
minutos
Frecuencia 1 vez al mes
Tipo Primario
Postcondiciones Actualización de los reportes de visitas.
Gráfico
Reportar Visita
<<include>>
Editar Reporte de
<<include>> Registrar Cliente
Visita
<<include>>
Registrar Cliente
Director de Ingenieria
Pantalla
Tabla 5. Caso de Uso: Editar Reporte de VisitasCU7. Generar Informe de Visitas
Caso de Uso Generar Informe de Visitas
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Obtener un informe de las visitas realizadas por los ingenieros a los clientes
Objetivo Este caso de uso se encuentra asociado al objetivo O Brindar un servicio integral de
2.
Mantenimiento y soporte, y a los requisitos R Hacer que se consulte Reporte de
4.
Visita, R Hacer que se ingrese Valor Hora y R Lograr que se genere un reporte de
3. 1.
visita
Resumen El usuario selecciona un rango de fechas y genera el informe de las visitas
realizadas en este, ingresando valor de la hora y calculando el costo total.
Actores Director de Ingeniería, Administrador del sistema
Precondición Iniciar sesión como Director de Ingeniería o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos
2
“Ingeniería” opciones del menú
El Usuario selecciona la opción “Informe El sistema presentara un formulario con
3 de Visitas” los campos para seleccionar el rango
de fechas para el informe
El usuario selecciona el campo “Fecha El sistema despliega un calendario
4
Inicial”
5 Selecciona la fecha inicial para el reporte
El usuario selecciona el campo “Fecha El sistema despliega un calendario
6
Final”
7 Selección al fecha final para el informe
Presiona el botón “Buscar” Busca los reportes de visitas realizados
8 en esta fecha y carga la información de
cada uno en el informe
Ingresa el valor de la Hora para cada visita Calcula el costo total de la visita
9
del informe
Presiona el botón “Versión de Impresión” El sistema muestra el reporte
nuevamente con el costo total y un
10
botón para imprimirlo, registra en el
sistema el valor hora.
Demora En su desarrollo optimo este caso de uso puede tardarse 14 minutos, en promedio se
llevaría 16 minutos, y como máximo 20 minutos
Frecuencia 1 vez al mes
Tipo Primario
Postcondiciones Registro de valor hora a la visita.Gráfico
Pantalla
Tabla 6. Caso de uso: Informe Visitas
CU9. Cambiar Contraseña
Caso de Uso Cambiar Contraseña
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Cambiar la contraseña de acceso al sistema si esta fue olvidada por el usuario, o por
cuestiones de seguridad.
Objetivo Este caso de uso esta asociado al requisito R . Hacer que se ingrese el empleado.
8
Resumen El usuario selecciona el empleado a modificar sus datos de usuarios, se cargan los
datos del usuario, se modifica la contraseña
Actores Administrador del Sistema
Precondición Iniciar sesión como Administrador del sistema, Empleado registrado en el sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos
2 “Usuarios” opciones del menú Cambiar contraseña,
Asignar Permisos
El Usuario selecciona la opción “Cambiar El sistema presentara un formulario con
3 Contraseña” una lista desplegable que permitirá
seleccionar el usuario a modificar
Selecciona el empleado al cual se le van a
4
modificar sus datos de usuario
Presiona el botón “Buscar” Busca al empleado seleccionado, carga
5 un formulario con los datos de usuario
del mismo
6 Ingresa nueva contraseña
Presiona el botón “Aceptar” Guarda para el empleado seleccionado
7
la nueva contraseñaDemora Modificar la contraseña de un usuario puede tardar un su desarrollo optimo
aproximadamente 2 minutos, en promedio se puede tardar 2 minutos y 30 segundos,
como máximo modificar la contraseña de usuario puede tardarse 3 minutos y medio.
Frecuencia 1 vez cada 6 meses
Tipo Primario
Postcondiciones Nueva contraseña de usuario para el empleado seleccionado
Gráfico
Pantalla
Tabla 7. Caso de Uso: Cambiar Contraseña
CU10. Asignar Permisos
Caso de Uso Asignar Permisos
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Modificar los permisos de usuario que tienen los empleados del sistema según sus
actividades.
Objetivo Este caso de uso se encuentra asociado al objetivo O Promover un buen manejo de
7.
las órdenes de producción, y al requisito R . Hacer que se ingrese el empleado.
8
Resumen El usuario selecciona el empleado para asignarle los permisos, selecciona los
permisos a asignar, asigna permisos de usuario.
Actores Administrador del Sistema
Precondición Iniciar sesión como Administrador del Sistema, Empleado registrado en el sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción El sistema presentara un pantalla
1
“Compañía” principal con otro menú
En el segundo menú selecciona la opción El sistema desplegara otras dos opciones
2 “Usuarios” del menú Cambiar Contraseña, Asignar
PermisosEl Usuario selecciona la opción El sistema presentara un formulario con
3 “Asignar Permisos” una lista desplegable que permitirá
seleccionar el usuario a modificar
Selecciona el empleado al cual se le va a
4
asignar nuevos permisos
5 Presiona el botón “Buscar” Busca al empleado seleccionado
Carga los permisos disponibles para el
6 sistema con el permiso que tiene el
empleado seleccionado por defecto.
Selecciona el o los nuevos permisos a
7
asignar al empleado.
Presiona el botón “Guardar” El sistema guarda los nuevo permisos
8
asignados para el empleado
Demora Este caso de uso, en su desarrollo optimo puede tardarse 2 minutos, en promedio
puede demorarse 3 minutos, como máximo puede tardarse 5 minutos.
Frecuencia 1 vez cada 6 meses
Tipo Primario
Postcondiciones Nuevo permisos asignados al empleado
Gráfico
Pantalla
Tabla 8. Caso de Uso: Asignar Permisos
CU11. Registrar Empleado
Caso de Uso Registrar Empleado
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro de cada uno de los empleados activos dentro de la compañíaObjetivo Este caso de uso se encuentra asociado al objetivo O Promover un buen manejo de
7.
las órdenes de producción, y al requisito R . Hacer que se ingrese el empleado.
8
Resumen El usuario selecciona la opción Registrar empleado, ingresa los datos
personales del mismo, registra el empleado en el sistema,
Actores Secretaria de Personal, Administrador del Sistema
Precondición Iniciar Sesión como Secretaria de Personal o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú la opción Presenta una pantalla principal con la
“Empleados” información principal de los empleados, y
1
un formulario de búsqueda por Área o
Ciudad
Presiona “Registrar Empleado” Despliega un formulario con los datos
2 requeridos en el sistema para cada
empleado
Ingresa la información personal del
3
empleado
4 Presiona campo fecha de Nacimiento Despliega Calendario
5 Selecciona fecha de nacimiento
Selecciona Lista de Áreas Despliega una lista con los nombre de las
6
diversas áreas de la compañía
7 Selecciona un área
Selecciona lista de Ciudades Despliega una lista con los nombres de las
8
ciudades
9 Selecciona ciudad
10 Presiona campo fecha de Ingreso Despliega Calendario
11 Selecciona fecha de Ingreso
12 Presiona campo fecha de Retiro Despliega Calendario
13 Selecciona fecha de Retiro
Ingresa la demás información sobre el
14
empleado
15 Presiona el botón “Aceptar” Registra en el sistema el nuevo empleado
Demora Este caso de uso en su desarrollo optimo puede tardarse 15 minutos, en promedio se
demoraría 18 minutos, como máximo puede demorarse 20 minutos
Frecuencia Cada que se contrate un nuevo empleado
Tipo Primario
Postcondiciones Nuevo empleado registrado en el sistemaGráfico
Pantalla
Tabla 9. Caso de Uso: Registrar Empleados
CU12. Consultar Empleados
Caso de Uso Consultar Empleados
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Tener acceso a la información de cada uno de los empleados de la compañía
Objetivo Este caso de uso esta asociado al requisito R . Hacer que se ingrese el empleado.
8
Resumen El usuario puede ver la información básica de cada uno de los empleados de
la compañía, o buscar según Área o Cuidad a uno en especifico.
Actores Secretaria de Personal o Administrador del Sistema
Precondición Iniciar sesión como Secretaria de Personal o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
1 Selecciona en el menú principal la Presenta una pantalla principal con laopción “Empleados” información principal de los empleados, y
un formulario de búsqueda por Área o
Ciudad
Presiona la lista de áreas de la compañía Despliega una lista con el nombre de las
2
áreas
Presiona la lista de las ciudades Despliega una lista con los nombres de las
3
ciudades
Presiona el botón “Buscar” El sistema presenta una lista con los
4 empleados que cumplen con estas
características.
Presiona “Ver mas” Presenta información mas especifica del
5
empleado seleccionado
Demora El desarrollo de este caso de uso puede tardarse en su desarrollo optimo 1 minuto, en
promedio 2 minutos, como máximo 3 minutos
Frecuencia 3 veces al día
Tipo Primario
Postcondiciones Ninguna
Gráfico
Pantalla
Tabla 10. Caso de Uso: Consultar Empleados
CU13. Editar Empleados
Caso de Uso Editar Empleados
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Mantener actualizada la información sobre los empleados de la compañía
Objetivo Este caso de uso se encuentra asociado al objetivo O Promover un buen manejo de
7.las órdenes de producción, y al requisito R . Hacer que se ingrese el empleado.
8
Resumen Se selecciona el usuario a modificar y se ingresan los nuevos datos, que son
guardados en el sistema.
Actores Secretaria de Personal o Administrador del Sistema
Precondición Iniciar sesión como Secretaria de Personal o Administrador del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla principal con la
opción “Empleados” información principal de los empleados, y
1
un formulario de búsqueda por Área o
Ciudad
Presiona la lista de áreas de la compañía Despliega una lista con el nombre de las
2
áreas
Presiona la lista de las ciudades Despliega una lista con los nombres de las
3
ciudades
Presiona el botón “Buscar” El sistema presenta una lista con los
4 empleados que cumplen con estas
características.
5 Busca el usuario a modificar
Presiona “Ver mas” El sistema presenta una ventana
6 emergente con la información del
empleado
Presiona “Editar” Presenta un formulario con la información
7
del empleado y los campos editables
Ingresa la nueva información del
8
empleado
Presiona el botón “Aceptar” Actualiza los datos modificados para el
9
empleado
Demora Este caso de uso se puede demorar en su optimo desarrollo 4 minutos, en promedio
puede tardarse 6 minutos, máximo 8 minutos.
Frecuencia Cuando se presentan modificaciones en la información del empleado
Tipo Primario
Postcondiciones Actualización de la información del empleado
GráficoPantalla
Tabla 11. Caso de Uso: Editar Empleado
CU14. Crear Evento
Caso de Uso Crear Evento
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro de las citas acordadas con los clientes.
Objetivo Este caso de uso esta asociado al objetivo O . Garantizar que se asista a la cita, y
5
asociado al requisito R . Hacer que se reporte la cita
2
Resumen El usuario selecciona Crear Evento, ingresa la información básica de la cita,
y selecciona la fecha de realización, realiza el registro de la cita.
Actores Todos
Precondición Iniciar sesión
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla principal con los
opción “Agenda” eventos para la fecha actual y un
1
calendario con acceso a los demás
eventos.
2 Presiona “Crear Evento” Muestra un formulario con los campospara la información de la Cita
Despliega la lista de clientes Presenta una lista con los clientes
3
registrados en el sistema
4 Selecciona cliente
Ingresa información de contacto con el
5
cliente
6 Presiona el campo fecha Despliega calendario
7 Selecciona fecha de la cita
8 Selecciona hora de la cita
9 Completa información de la cita
10 Presiona el botón “Aceptar” Registra la cita en el sistema
Demora El desarrollo de este caso de uso puede tardarse en su desarrollo optimo 2 minutos,
en promedio puede demorarse 4 minutos, como máximo se demorara 5 minutos
Frecuencia 4 veces cada semana
Tipo Primario
Postcondiciones Nuevo Evento en el sistema
Gráfico
Pantalla
Tabla 12. Caso de Uso: Crear Evento
CU15. Consultar Eventos
Caso de Uso Consultar Eventos
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Conocer la agenda diariamente, especialmente las citas con los clientes
Objetivo Este caso de uso esta asociado al objetivo O . Garantizar que se asista a la cita, y
5
asociado al requisito R . Hacer que se reporte la cita
2Resumen El usuario selecciona la fecha de la cual quiere ver los eventos o citas, el
sistema muestras las citas o eventos planeados para este día
Actores Todos
Precondición Iniciar Sesión
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la opción Presenta una pantalla principal con los
“Agenda” eventos para la fecha actual y un
1
calendario con acceso a los demás
eventos.
Selecciona la fecha del evento a editar Muestra los eventos de la fecha
2
seleccionada
Demora En un desarrollo óptimo este caso de uso puede demorarse 1 minutos, como máximo
puede tardarse 2 minutos, en promedio 1.5 minutos.
Frecuencia 2 veces al día
Tipo Primario
Postcondiciones Ninguna
Gráfico
Pantalla
Tabla 13. Caso de Uso: Consultar Eventos
CU16. Editar Evento
Caso de Uso Editar Evento
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Actualizar y hacer seguimiento a las citas de los ingenieros vendedores con los
clientes.
Objetivo Este caso de uso esta asociado al objetivo O . Garantizar que se asista a la cita, y
5
asociado al requisito R . Hacer que se reporte la cita
2
Resumen El usuario selección la fecha del evento, lo busca y modifica según como seanecesario.
Actores Todos
Precondición Iniciar Sesión
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla principal con los
opción “Agenda” eventos para la fecha actual y un
1
calendario con acceso a los demás
eventos.
Selecciona la fecha del evento a editar Muestra los eventos de la fecha
2
seleccionada
Busca el evento a modificar, presiona Presenta una ventana emergente con la
3
“Ver” información del evento
Presiona “Editar” Presenta un formulario con la información
4
del evento y los campos editables.
Ingresa las modificaciones, presiona el Guarda las modificaciones realizadas al
5
botón “Aceptar” evento
Demora El desarrollo de este caso de uso, en un desarrollo óptimo puede tardarse 2 minutos,
en promedio puede demorarse 3 minutos, máximo 5 minutos.
Frecuencia 4 veces por semana
Tipo Primario
Postcondiciones Evento Actualizado
Gráfico
Crear Evento
<<include>>
Editar Evento
<<include>>
Registrar Cliente
Visitante
PantallaTabla 14. Caso de Uso: Editar Evento
CU17. Consultar Clientes
Caso de Uso Consultar Clientes
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Acceder a la información de contacto de los clientes registrados en el sistema.
Objetivo Este caso de uso se encuentra asociado al objetivo O Promover un buen manejo de
7.
las órdenes de producción.
Resumen El usuario visualiza la información del cliente, realizando una búsqueda por
nombre.
Actores Todos
Precondición Iniciar Sesión
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla inicial con la lista
1 opción “Directorio” de clientes del sistema y la opción de
registrar clientes, además de un submenú.
Selecciona en el submenú la opción Presenta una pantalla inicial con la lista
2
“Clientes” de clientes del sistema.
Ingresa el nombre del cliente que sea Muestra los clientes que tengan ese
3
buscar nombre.
Demora Este caso de uso en su desarrollo óptimo puede demorarse 30 segundos, como en
promedio se tardaría 45 segundos, como máximo podría demorarse 1 minuto.
Frecuencia 1 vez cada 6 meses
Tipo Primario
Postcondiciones NingunaGráfico
Pantalla
Tabla 15. Caso de Uso: Consultar Cliente
CU18. Registrar Cliente
Caso de Uso Registrar Cliente
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro actualizado de los clientes de la compañía
Objetivo El caso de uso se encuentra asociado al objetivo O Promover un buen manejo de las
7.
órdenes de producción.
Resumen El usuario ingresa los datos relevantes del empleado y los registra en el
sistema
Actores Personal Administrativo, Secretaria de Personal y Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo, Secretaria de Personal o Administrador
del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla inicial con la lista
1 opción “Directorio” de clientes del sistema y la opción de
registrar clientes, además de un submenú.
Selecciona en el submenú la opción Presenta una pantalla inicial con la lista
2 “Clientes” de clientes del sistema y la opción de
registrar clientes
Presiona “Registrar Cliente” Despliega un formulario con la
3 información requerida para registrar al
cliente en el sistema4 Ingresa los datos de contacto del cliente
5 Presiona el botón “Aceptar” Registre el nuevo cliente en el sistema
6 Presenta un mensaje de éxito del registro
Demora El desarrollo de este caso de uso puede demorarse en su caso óptimo 2 minutos, en
promedio se demora 3 minutos, como máximo puede tardarse 4 minutos.
Frecuencia 2 veces por semana
Tipo Primario
Postcondiciones Registro de un nuevo cliente en el sistema
Gráfico
Pantalla
Tabla 16. Caso de Uso: Registrar Cliente
CU19. Editar Cliente
Caso de Uso Editar Cliente
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro actualizado de los clientes de la compañía
Objetivo El caso de uso se encuentra asociado al objetivo O Promover un buen manejo de las
7.
órdenes de producción.
Resumen El usuario selecciona el cliente que desean modificar, ingresa la nueva
información, modifica el empleado.
Actores Personal Administrativo, Secretaria de Personal y Administrador del Sistema
Precondición Iniciar sesión como Personal Administrativo, Secretaria de Personal o Administrador
del Sistema
Secuencia normal
USUARIO SISTEMA
de interacciones
Selecciona en el menú principal la Presenta una pantalla inicial con la lista
1 opción “Directorio” de clientes del sistema y la opción de
registrar clientes, además de un submenú.Selecciona en el submenú la opción Presenta una pantalla inicial con la lista
2 “Clientes” de clientes del sistema y la opción de
registrar clientes
Buscar el cliente a modificar, presiona Despliega un formulario con la
3 “Ver” información del cliente seleccionado, y los
campo a modificar
4 Ingresa los nuevos datos del cliente
Presiona el botón “Aceptar” Registre los nuevos datos del cliente en el
5
sistema
6 Presenta un mensaje de éxito del registro
Demora El desarrollo de este caso de uso puede demorarse en su caso óptimo 1 minuto y
medio, en promedio se demora 2 minutos, como máximo puede tardarse 3 minutos.
Frecuencia 1 vez cada 6 meses
Tipo Primario
Postcondiciones Modificación datos del cliente en el sistema
Gráfico
Pantalla
Tabla 17. Caso de Uso: Editar ClienteCONSULTAS
Caso de Uso: Editar Cotización
• Pantalla Listar Cotizaciones
(1) {c.intConsecutivo / c Є Cotización}
(2) {l.strNombre / l Є Cliente Λ l.intNit=c.intIDCliente / c Є Cotización}
(3) {c.txtDescripcion / c Є Cotización}
• Pantalla Editar Cotización
(1) {c.intConsecutivo / c Є Cotización Λ c.intConsecutivo = editarCotizacion().consecutivo}
(2) {c.dtFecha / c Є Cotización Λ c.intConsecutivo = editarCotizacion().consecutivo }
(3) {l.strNombre / l Є Cliente Λ c.intConsecutivo = editarCotizacion().consecutivo Λ
c.intIDCliente=l.intNit} Λ {c.strNombre / c Є Cliente}
(4) {e.strNombre Λ e.strApellido / e Є Empleado Λ c.intConsecutivo =
editarCotizacion().consecutivo Λ c.intIDResponsable=e.intCedula} Λ {e.strNombre Λ
e.strApellido / e Є Empleado}
(5) { c.txtDescripcion / c Є Cotización Λ c.intConsecutivo = editarCotizacion().consecutivo }
Caso de Uso: Ingresar OP
(1) {o.intConsecutivo / o Є OrdenProduccion Λ o.intConsecutivo = Max(intConsecutivo)+1}
(2) {c.intConsecutivo / c Є Cotización}
(3) {f1.calendario}
(4) {f2.calendario}
(5) {l.strNombre / l Є Cliente Λ l.intNit=cargarCotizacion().intIDCliente Λ cargarCotizacion
().intConsecutivo≠0} V {l.strNombre / l Є Cliente }
(6) {e.strNombre Λ e.strApellido / e Є Empleado Λ
e.intCedula=cargarCotizacion().intIDResponsable Λ cargarCotizacion().intConsecutivo≠0} V
{e.strNombre Λ e.strApellido / e Є Empleado }
(7) {c.txtDescripcion / c Є Cotización Λ c.txtDescripcion=cargarCotizacion().txtDescripcion Λ
cargarCotizacion().intConsecutivo≠0}
(8) {‘Pendiente’, ‘En Progreso’, ‘Finalizado’, ‘Cancelado’}
(9) {‘Proyecto’, ’Tablero’}Caso de Uso: Editar OP
• Pantalla Listar Ordenes de Produccion
(1) {o.intConsecutivo / o Є OrdenProducciom}
(2) {l.strNombre / l Є Cliente Λ l.intNit=o.intIDCliente / o Є OrdenProduccion}
(3) {o.txtDescripcion / o Є OrdenProduccion}
(4) {o.strEstado / o Є OrdenProduccion}
• Pantalla Editar Orden Produccion
(1) {o.intConsecutivo / o Є OrdenProduccion Λ o.intConsecutivo =
editarOrdenProduccion().consecutivo}
(2) {o.intIDCotizacion Λ c.intConsecutivo / o Є OrdenProduccion Λ c Є Cotización}
(3) {o.dtFechaInicio / o Є OrdenProduccion Λ o.intConsecutivo = editarOrdenProduccion
().consecutivo}
(4) {o.dtFechaEntrega / o Є OrdenProduccion Λ o.intConsecutivo = editarOrdenProduccion
().consecutivo}
(5) {l.strNombre / l Є Cliente Λ o.intConsecutivo = editarOrdenProduccion ().consecutivo Λ
o.intIDCliente=l.intNit} Λ {c.strNombre / c Є Cliente}
(6) {e.strNombre Λ e.strApellido / e Є Empleado Λ o.intConsecutivo =
editarOrdenProduccion ().consecutivo Λ o.intIDResponsable=e.intCedula} Λ {e.strNombre Λ
e.strApellido / e Є Empleado}
(7) {o.strNombre / o Є OrdenProduccion}
(8) {o.txtDescripcion / o Є OrdenProduccion Λ o.intConsecutivo = editarOrdenProduccion
().consecutivo }
(9) {o.txtObservaciones / o Є OrdenProduccion Λ o.intConsecutivo = editarOrdenProduccion
().consecutivo }
(10) {o.strEstado Λ {‘Pendiente’, ‘En Progreso’, ‘Finalizado’, ‘Cancelado’} / o Є
OrdenProduccion Λ o.intConsecutivo = editarOrdenProduccion ().consecutivo }
(11) {o.strTipo Λ {‘Tablero’,’Proyecto’} / o Є OrdenProduccion Λ o.intConsecutivo =
editarOrdenProduccion ().consecutivo }
Caso de Uso: Reportar Visita
(1) {e.strNombre Λ e.strApellido / e Є Empleado}
(2) {c.strNombre / c Є Cliente}
(3) {f.calendario}Caso de Uso: Editar Reporte de Visita
(1) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.intCedula=r.intIDEmpleado Λ
r.intConsecutivo = editarReporte().consecutivo} Λ {e.strNombre Λ e.strApellido / e Є
Empleado}
(2) {c.strNombre / c Є Cliente Λ c.intNit=r.intIDCliente Λ r.intConsecutivo =
editarReporte().consecutivo } Λ {c.strNombre / c Є Cliente}
(3) {r.strContacto / r Є InformeVisita Λ r.intConsecutivo = editarReporte().consecutivo}
(4) {r.dtFecha / r Є InformeVisita Λ r.intConsecutivo = editarReporte().consecutivo} Λ
{f.calendario}
(5) {r.dtHoraInicial / r Є InformeVisita Λ r.intConsecutivo = editarReporte().consecutivo}
(6) {r.dtHoraFinal / r Є InformeVisita Λ r.intConsecutivo = editarReporte().consecutivo}
(7) {r.txtTrabajoSolicitado / r Є InformeVisita Λ r.intConsecutivo =
editarReporte().consecutivo}
(8) {r.txtTrabajoRealizado / r Є InformeVisita Λ r.intConsecutivo =
editarReporte().consecutivo}
(9) {r.txtObservaciones / r Є InformeVisita Λ r.intConsecutivo = editarReporte().consecutivo}
Caso de Uso: Generar Informe de Visitas
(1) {e.strNombre Λ e.strApellido / e Є Empleado Λ e.intCedula=r.intIDEmpleado Λ
(r.dtFecha>=cargarReporteVisitas().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)}
(2) {c.strNombre / c Є Cliente Λ c.intNit=r.intIDCliente (r.dtFecha>= cargarReporteVisitas
().FechaIni Λ r.dtFecha<= cargarReporteVisitas ().FechaFin)}
(3) {r.strContacto / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)}
(4) {r.dtFecha / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)}
(5) {r.dtHoraInicial / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)}
(6) {r.dtHoraFinal / r Є InformeVisita(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)}
(7) {r.txtTrabajoSolicitado / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)
(8) {r.txtTrabajoRealizado / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)
(9) {r.txtObservaciones / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)
(10) {r.dtHoraFinal – r.dtHoraInicial / r Є InformeVisita Λ
(r.dtFecha>= cargarReporteVisitas ().FechaIni Λ r.dtFecha<= cargarReporteVisitas
().FechaFin)
(11) {r.CalcularCostoTotal}
Caso de Uso: Cambiar Contraseña
(1) {e.strNombre Λ e.strApellido / e Є Empleado}
(2) {e.strUsuario / e Є Empleado Λ e.intCedula=obtenerDatosUsuario().cedula}
(3) {e.strPassword/ e Є Empleado Λ e.intCedula= obtenerDatosUsuario ().cedula}
Caso de Uso: Asignar Permisos
(1) {e.strNombre Λ e.strApellido / e Є Empleado}
(2) {‘Mantenimiento’,’Administracion’,’Ingenieria’,’Cosulta’,’Administracion del
Personal’,’Administracion de Ingenieria’}
Caso de Uso: Registrar Empleado
(1) {f.calendario}
(2) {a.strNombreArea / a Є Area}
(3) {c.strNombre / c Є Ciudad}
(4) {f1.calendario}
(5) {f2.calendario}
Caso de Uso: Consultar Empleado
(1) {a.strNombreArea / a Є Area}
(2) {c.strNombre / c Є Ciudad}(3) <img src=”{e.strFoto / e Є Empleado}”>
(4) {e.strNombre Λ e.strApellido}
(5) {e.strDireccion / e Є Empleado}
(6) {e.strTelefono / e Є Empleado}
(7) {e.dtFechaIngreso / e Є Empleado}
(8) {a.strNombreArea / a Є Area Λ a.strCodArea=e.strCodArea}
Caso de Uso: Editar Empleado
(1) {e.intCedula / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula}
(2) {e.strNombre / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula }
(3) {e.strApellido / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula }
(4) {e.dtFechaNac / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula } Λ {f.calendario}
(5) {e.strDireccion / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula}
(6) {e.strTelefono / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula}
(7) {e.strEmail / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula}
(8) {e.strCargo / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula}
(9) {a.strNombreArea / a Є Area Λ a.strCodArea=e.strCodArea Λ
e.intCedula=editarEmpleado().Cedula} Λ {a.strNombreArea / a Є Area}
(10) {c.strNombre / c Є Ciudad Λ c.intIndicativo=e.intIDCiudad Λ
e.intCedula=editarEmpleado().Cedula} Λ {c.strNombre / c Є Ciudad}
(11) {e.dtFechaIngreso / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula } Λ
{f.calendario}
(12) {e.dtFechaRetiro / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula } Λ
{f.calendario}
(13) {e.strUsuario / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula }
(14) {e.strFoto / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula }
(15) <img src=”{e.strFoto / e Є Empleado Λ e.intCedula=editarEmpleado().Cedula }”>
Caso de Uso: Crear Evento
(1) {c.strNombre / c Є Cliente}
(2) {‘00’, ’01’, ’02’, ’03’, ’04’, ’05’, ’06’, ’07’, ’08’, ’09’, ’10’, ’11’, ’12’, ’13’, ’14’, ’15’, ’16’,
’17’, ’18’, ’19’, ’20’, ’22’, ’23’} Λ {‘00’,’10’,’20’,’30’,’40’,’50’}
(3) {c.strNombre / c Є Ciudad}Caso de Uso: Consultar Evento
(1) {e.dtHoraCita / e Є Cita Λ e.dtFechaCita=cargarEventos().Fecha}
(2) {c.strNombre / c Є Cliente Λ e.intIDCliente=c.intNit Λ e.dtFechaCita= cargarEventos
().Fecha}
(3) {e.strDirCita / e Є Cita Λ e.dtFechaCita= cargarEventos ().Fecha}
(4) {e.strEstadoCita / e Є Cita Λ e.dtFechaCita= cargarEventos ().Fecha }
Caso de Uso: Editar Evento
(1) {c.strNombre / c Є Cliente Λ c.intNit = e.intIDCliente Λ e.intConsecutivo =
editarEvento().consecutivo } Λ {c.strNombre / c Є Cliente}
(2) {e.strContacto / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(3) {e.strTelefono / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(4) {e.dtFechaCita / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo} Λ
{f.calendario}
(5) {e.dtHoraCita / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo} Λ ({‘00’, ’01’,
’02’, ’03’, ’04’, ’05’, ’06’, ’07’, ’08’, ’09’, ’10’, ’11’, ’12’, ’13’, ’14’, ’15’, ’16’, ’17’, ’18’,
’19’, ’20’, ’22’, ’23’} Λ {‘00’,’10’,’20’,’30’,’40’,’50’})
(6) {e.strDirCita / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(7) {c.strNombre / c Є Ciudad Λ c.intIndicativo=e.intIDCiudad Λ e.intConsecutivo =
editarEvento().consecutivo} Λ {c.strNombre / c Є Ciudad}
(8) {e.strProposito / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(9) {e.strEstadoCita / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(10) {e.strObservaciones / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo}
(11) {e.intIDCotizacion / e Є Cita Λ e.intConsecutivo = editarEvento().consecutivo} Λ
{c.intConsecutivo / c Є Cotización}
Caso de Uso: Consultar Clientes
(1) {c.strNombre / c Є Cliente}
(2) {c.strContacto / c Є Cliente}
(3) { c.strNombre / c Є Ciudad Λ c.intIndicativo=l.intIDCiudad }
Caso de Uso: Registrar Clientes
(1) {c.strNombre / c Є Ciudad}Caso de Uso: Editar Cliente
(1) {c.intNit / c Є Cliente Λ c.intNit = editarCliente().Nit}
(2) {c.strNombre / c Є Cliente Λ c.intNit = editarCliente().Nit}
(3) {c.strTelefono / c Є Cliente Λ c.intNit = editarCliente().Nit}
(4) {c.strFax / c Є Cliente Λ c.intNit = editarCliente().Nit}
(5) {c.strDireccion / c Є Cliente Λ c.intNit = editarCliente().Nit}
(6) {c.strEmail / c Є Cliente Λ c.intNit = editarCliente().Nit}
(7) {c.strContacto / c Є Cliente Λ c.intNit = editarCliente().Nit}
(8) {i.strNombre / i Є Ciudad Λ i.intIndicativo = c.intIDCiudad Λ c.intNit =
editarCliente().Nit}TRANSACCIONES
Caso de Uso: Editar Cotización
editarCotizacion(id,fecha,idCliente,idResponsable,Descripcion)
Sea
C={c Є Cotización / c.intConsecutivo=editarCotizacion().id}
Pre
|C|=1
|C|={ c Є Cotización / c.intConsecutivo=editarCotizacion().id }
Post
|C|=1
c.intIDCliente=editarCotizacion().idCliente
c.intIDResponsable=editarCotizacion().idResponsable
c.dtFecha=editarCotizacion().fecha
c.txtDescripcion=editarCotizacion().Descripción
Caso de Uso: Ingresar OP
insertarOrdenProduccion(idCotizacion,FechaIni,FechaFin,idCliente,idResponsable,Descripción,
Observaciones, Estado, Tipo)
Sea
O={o Є OrdenProduccion / o.intConsecutivo=MAX(intConsecutivo)+1}
Pre
|O|=0
Post
|O|=1
o.intConsecutivo= MAX(intConsecutivo)+1
o.intIDCotizacion=insertarOrdenProduccion().idCotizacion
o.dtFechaInicio=insertarOrdenProduccion().FechaIni
o.dtFechaEntrega=insertarOrdenProduccion().FechaFin
o.intIDCliente=insertarOrdenProduccion().idCliente
o.intIDResponsable=insertarOrdenProduccion().idResponsable
o.txtDescripcion=insertarOrdenProduccion().Descripcion
o.txtObservaciones=insertarOrdenProduccion().Observaciones
o.strEstado=insertarOrdenProduccion().Estado
o.strTipo=insertarOrdenProduccion().Tipo
Caso de Uso: Editar OP
editarOrdenProduccion(idOP,idCotizacion,FechaIni,FechaFin,idCliente,idResponsable,Descripc
ión, Observaciones, Estado, Tipo)
Sea
O={o Є OrdenProduccion / o.intConsecutivo=editarOrdenProduccion().idOP}
Pre
|O|=0
|O|={o Є OrdenProduccion / o.intConsecutivo=editarOrdenProduccion().idOP }
Post
|O|=1
o.intIDCotizacion=editarOrdenProduccion().idCotizacion
o.dtFechaInicio=editarOrdenProduccion().FechaInio.dtFechaEntrega=editarOrdenProduccion().FechaFin
o.intIDCliente=editarOrdenProduccion().idCliente
o.intIDResponsable=editarOrdenProduccion().idResponsable
o.txtDescripcion=editarOrdenProduccion().Descripcion
o.txtObservaciones=editarOrdenProduccion().Observaciones
o.strEstado=editarOrdenProduccion().Estado
o.strTipo=editarOrdenProduccion().Tipo
Caso de Uso: Reportar Visita
reporteVisitas(idCliente,contacto,fecha,HoraIni,HoraFin,trabSolicitado,trabRealizado,Observaci
ones,idResponsable)
Sea
R={r Є InformeVisitas / r.intConsecutivo=MAX(intConsecutivo)+1}
Pre
|R|=0
Post
|R|=1
r.intConsecutivo= MAX(intConsecutivo)+1
r.intIDCliente=reporteVisitas().idCliente
r.intIDEmpleado=reporteVisitas().idResponsable
r.strContaccto=reporteVisitas().contacto
r.dtFecha=reporteVisitas().fecha
r.dtHoraInicial=reporteVisitas().HoraIni
r.dtHoraFinal=reporteVisitas().HoraFin
r.txtTrabajoSolicitado=reporteVisitas().trabSolicitado
r.txtTrabajoRealizado=reporteVisitas().trabRealizado
r.txtObservaciones=reporteVisitas().Observaciones
Caso de Uso: Editar Reporte de Visita
editarReporte(id,idCliente,Contacto,fecha,horaIni,horaFin,trabSolicitado,trabRealizado,Observa
ciones,idEmpleado)
Sea
R={r Є InformeVisitas / r.intConsecutivo=editarReporte().id}
Pre
|R|=1
|R|={ r Є InformeVisitas / r.intConsecutivo=editarReporte().id}
Post
|R|=1
r.intIDCliente= editarReporte().idCliente
r.intIDEmpleado= editarReporte().idResponsable
r.strContaccto= editarReporte().contacto
r.dtFecha= editarReporte().fecha
r.dtHoraInicial= editarReporte().HoraIni
r.dtHoraFinal= editarReporte().HoraFin
r.txtTrabajoSolicitado= editarReporte().trabSolicitado
r.txtTrabajoRealizado= editarReporte().trabRealizado
r.txtObservaciones= editarReporte().ObservacionesCaso de Uso: Generar Informe de Visitas
calcularCostoVisita(valorHora,idOrden)
Sea
I={i Є InformeVisitas / i.intConsecutivo = calcularCostoVisita().idOrden}
Pre
|I|=1
|I|={i Є InformeVisitas / i.intConsecutivo = calcularCostoVisita().idOrden}
Post
i.intValorHora=calcularCostoVisita().valorHora
Caso de Uso: Cambiar Contraseña
cambiarDatosUsuario(nomUsuario,Password,idEmpleado)
Sea
E={e Є Empleado / e.intCedula=cambiarDatosUsuario().idEmpleado}
Pre
|E|=1
|E|={e Є Empleado / e.intCedula=cambiarDatosUsuario().idEmpleado}
Post
|E|=1
e.strUsuario=cambiarDatosUsuario().nomUsuario
e.strPassword=cambiarDatosUsuario().Password
Caso de Uso: Asignar Permisos
asignarPermisos(rolConsulta,rolAdministracion,rolMantenimiento,rolControl,rolIngenieria,rolA
dminIngenieria,idEmpleado)
Sea
E={e Є Empleado / e.intCedula=asignarPermisos().idEmpleado}
R={r Є Rol / r.intCodigo=asignarPermisos().rolConsulta Λ
r.intCodigo = asignarPermisos().rolAdministracion Λ
r.intCodigo = asignarPermisos().rolMantenimiento Λ
r.intCodigo = asignarPermisos().rolControl Λ
r.intCodigo = asignarPermisos().rolIngenieria Λ
r.intCodigo = asignarPermisos().rolAdminIngenieria}
RXU={rxu(i) Є RolXUsuario / Para todo i =(1,2,3,4,5,6) }
Pre
|R|>=1
|E|={e Є Empleado / e.intCedula=asignarPermisos().idEmpleado}
Post
|RXU|>=1
rxu1.intIDRol=asignarPermisos().rolConsulta
rxu1.intIDUsuario = asignarPermisos ().idEmpleado
rxu2.intIDRol=asignarPermisos().rolAdministracion
rxu2.intIDUsuario = asignarPermisos ().idEmpleado
rxu3.intIDRol=asignarPermisos().rolMantenimiento
rxu3.intIDUsuario = asignarPermisos ().idEmpleado
rxu4.intIDRol=asignarPermisos().rolControl
rxu4.intIDUsuario = asignarPermisos ().idEmpleadorxu5.intIDRol=asignarPermisos().rolIngenieria
rxu5.intIDUsuario = asignarPermisos ().idEmpleado
rxu6.intIDRol=asignarPermisos().rolAdminIngenieria
rxu6.intIDUsuario = asignarPermisos ().idEmpleado
Caso de Uso: Registrar Empleado
insertarEmpleado(foto,cedula,nombre,apellido,fechaNac,direccion,telefono,email,cargo,area,
ciudad,fechaIng,fechaRet,nomUsuario)
Sea
E={e Є Empleado / e.intCedula= insertarEmpleado ().idEmpleado}
Pre
|E|=0
Post
|E|=1
e.intCedula=insertarEmpleado().cedula
e.strNombre=insertarEmpleado().nombre
e.strApellido=insertarEmpleado().apellido
e.dtFechaNac=insertarEmpleado().fechaNac
e.strDireccion=insertarEmpleado().direccion
e.strTelefono=insertarEmpleado().telefono
e.strEmail=insertarEmpleado().email
e.strCargo=insertarEmpleado().cargo
e.strCodArea=insertarEmpleado().area
e.intIDCiudad=insertarEmpleado().ciudad
e.dtFechaIngreso=insertarEmpleado().fechaIng
e.dtFechaRetiro=insertarEmpleado().fechaRet
e.strUsuario=insertarEmpleado().nomUsuario
e.strFoto=insertarEmpleado().foto
Caso de Uso: Editar Empleados
editarEmpleado(foto,cedula,nombre,apellido,fechaNac,direccion,telefono,email,cargo,area,
ciudad,fechaIng,fechaRet,nomUsuario)
Sea
E={e Є Empleado / e.intCedula=asignarPermisos().idEmpleado}
Pre
|E|=1
|E|={e Є Empleado / e.intCedula=asignarPermisos().idEmpleado}
Post
|E|=1
e.strNombre= editarEmpleado().nombre
e.strApellido= editarEmpleado().apellido
e.dtFechaNac= editarEmpleado().fechaNac
e.strDireccion= editarEmpleado().direccion
e.strTelefono= editarEmpleado().telefono
e.strEmail= editarEmpleado().email
e.strCargo= editarEmpleado().cargo
e.strCodArea= editarEmpleado().area
e.intIDCiudad= editarEmpleado().ciudade.dtFechaIngreso= editarEmpleado().fechaIng
e.dtFechaRetiro= editarEmpleado().fechaRet
e.strUsuario= editarEmpleado().nomUsuario
e.strFoto= editarEmpleado().foto
Caso de Uso: Crear Evento
nuevoEvento(idEmpleado,idCliente,fecha,contacto,telefono,hora direccion,ciudad,proposito)
Sea
E={e Є Cita / e.intIDCita=MAX(intIDCita)+1}
Pre
|E|=0
Post
|E|=1
e.intIDCita=MAX(intIDCita)+1
e.intIDCliente=nuevoEvento().idCliente
e.intIDResponsable=nuevoEvento().idEmpleado
e.strContacto=nuevoEvento().contacto
e.strTelefono=nuevoEvento().telefono
e.dtFechaCita=nuevoEvento().fecha
e.dtHoraCita=nuevoEvento().hora
e.strDirCita=nuevoEvento().direccion
e.intIDCiudad=nuevoEvento().ciudad
e.strProposito=nuevoEvento().proposito
e.strEstadoCita=”No”
Caso de Uso: Editar Evento
editarEvento(idEmpleado,idCliente,fecha,contacto,telefono,hora,direccion,ciudad,proposito,
observaciones,idCotizacion,estado,id)
Sea
E={e Є Cita / e.intIDCita=editarEvento().id}
Pre
|E|=1
|E|={e Є Cita / e.intIDCita=editarEvento().id}
Post
|E|=1
e.intIDCliente= editarEvento ().idCliente
e.intIDResponsable= editarEvento ().idEmpleado
e.strContacto= editarEvento ().contacto
e.strTelefono= editarEvento ().telefono
e.dtFechaCita= editarEvento ().fecha
e.dtHoraCita= editarEvento ().hora
e.strDirCita= editarEvento ().direccion
e.intIDCiudad= editarEvento ().ciudad
e.strProposito= editarEvento ().proposito
e.strObservaciones= editarEvento ().observaciones
e.intIDCotizacion= editarEvento ().idCotizacion
e.strEstadoCita= editarEvento ().estadoCaso de Uso: Registrar Cliente
insertarCliente(nit,nombre,telefono,fax,direccion,email,contacto,ciudad)
Sea
C={c Є Cliente / c.intNit=insertarCliente().nit}
Pre
|C|=0
Post
|C|=1
c.intNit=insertarCliente().nit
c.strNombre=insertarCliente().nombre
c.strTelefono=insertarCliente().telefono
c.strFax=insertarCliente().fax
c.strDireccion=insertarCliente().direccion
c.strEmail=insertarCliente().email
c.strContacto=insertarCliente().contacto
c.intIDCiudad=insertarCliente().ciudad
Caso de Uso: Editar Cliente
editarCliente(nit,nombre,telefono,fax,direccion,email,contacto,ciudad)
Sea
C={c Є Cliente / c.intNit=insertarCliente().nit}
Pre
|C|=1
|C|={c Є Cliente / c.intNit=insertarCliente().nit}
Post
|C|=1
c.strNombre= editarCliente ().nombre
c.strTelefono= editarCliente ().telefono
c.strFax= editarCliente ().fax
c.strDireccion= editarCliente ().direccion
c.strEmail= editarCliente ().email
c.strContacto= editarCliente ().contacto
c.intIDCiudad= editarCliente ().ciudadPREDISEÑO ARQUITECTONICO
Caso de Uso: Editar Cotización
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaPersonalAdministrativo PantallaEditarCotizacion PantallaListarCotizacion MensajeExito
• Entidades
Cotización Empleado Cliente
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorEmpleado ManejadorCotizacion
ManejadorEditarCotizacion
Caso de Uso: Ingresar OP
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaPersonalAdministrativo PantallaIngresarOP MensajeExito
• Entidades
OrdenProduccion Empleado Cliente Cotización
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorEmpleado ManejadorCotizacionManejadorIngresarOP
Caso de Uso: Editar OP
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaPersonalAdministrativo PantallaListarOP PantallaEditarOP MensajeExito
• Entidades
OrdenProduccion Empleado Cliente Cotización
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorEmpleado ManejadorOrdenProduccion
ManejadorCotizacion ManejadorIngresarOP
Caso de Uso: Reportar Visita
• Bordes
InterfaceIngeniero InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaIngeniero PantallaReportarVisita MensajeExito
• Entidades
InformeVisita Empleado Cliente• Controladores
ManejadorPrincipal ManejadorCliente ManejadorEmpleado ManejadorReportarVisita
Caso de Uso: Editar Reporte de Visita
• Bordes
InterfaceDirectorIngenieria InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaDirectorIngenieria PantallaFechas PantallaInformeVisitas MensajeExito
PantallaEditarReporte
• Entidades
Cliente InformeVisita Empleado
• Controladores
ManejadorPrincipal ManejadorInformeVisitas ManejadorEmpleado ManejadorEditarReporte
ManejadorGenerarInformeVisita
Caso de Uso: Generar Informe de Visitas
• Bordes
InterfaceDirectorIngenieria InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaDirectorIngenieria PantallaInformeVisitas PantallaVersionImpresion PantallaFechas• Entidades
InformeVisita Cliente Empleado
• Controladores
ManejadorPrincipal ManejadorInformeVisitas ManejadorEmpleado ManejadorGenerarInformeVisita
Caso de Uso: Cambiar Contraseña
• Bordes
InterfaceAdministradorSistema InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaAdministradorSistema PantallaCambiarContraseña PantallaBusqueda MensajeExito
• Entidades
Empleado
• Controladores
ManejadorPrincipal ManejadorCambiarContraseña ManejadorEmpleado
Caso de Uso: Asignar Permisos
• Bordes
InterfaceAdministradorSistema InterfaceBaseDatosIntranet PantallaPrincipal PantallaCompañia
PantallaAdministradorSistema PantallaAsignarPermisos PantallaBusqueda MensajeExito
• Entidades
Empleado Rol RolXUsuario• Controladores
ManejadorPrincipal ManejadorAsignarPermisos ManejadorEmpleado ManejadorRolXUsuario
Caso de Uso: Registrar Empleado
• Bordes
InterfaceSecretariaPersonal InterfaceBaseDatosIntranet PantallaPrincipal PantallaEmpleados
PantallaSecretariaPersonal PantallaConsultarEmpleado PantallaRegistrarEmpleado MensajeExito
• Entidades
Empleado Area Ciudad
• Controladores
ManejadorPrincipal ManejadorArea ManejadorCiudad ManejadorEmpleado
ManejadorConsultarEmpleados ManejadorRegistrarEmpleado
Caso de Uso: Consultar Empleados
• Bordes
InterfaceSecretariaPersonal InterfaceBaseDatosIntranet PantallaPrincipal PantallaEmpleados
PantallaSecretariaPersonal PantallaConsultarEmpleado
• Entidades
Empleado Area Ciudad• Controladores
ManejadorPrincipal ManejadorArea ManejadorCiudad ManejadorEmpleado
ManejadorConsultarEmpleados
Caso de Uso: Editar Empleados
• Bordes
InterfaceSecretariaPersonal InterfaceBaseDatosIntranet PantallaPrincipal PantallaEmpleados
PantallaSecretariaPersonal PantallaConsultarEmpleado PantallaInfoEmpleado MensajeExito
PantallaEditarEmpleado
• Entidades
Empleado Area Ciudad
• Controladores
ManejadorPrincipal ManejadorArea ManejadorCiudad ManejadorEmpleado
ManejadorConsultarEmpleados ManejadorEditarEmpleado
Caso de Uso: Crear Evento
• Bordes
InterfaceVisitante InterfaceBaseDatosIntranet PantallaPrincipal PantallaVisitante
PantallaAgenda PantallaCrearEvento MensajeExito• Entidades
Cita Empleado Cliente Ciudad
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorCiudad ManejadorEmpleado
ManejadorCrearEvento ManejadorConsultarEvento
Caso de Uso: Consultar Evento
• Bordes
InterfaceVisitante InterfaceBaseDatosIntranet PantallaPrincipal PantallaVisitante
PantallaAgenda PantallaConsultarEventos
• Entidades
Cita Cliente Empleado
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorCiudad ManejadorEmpleado
ManejadorConsultarEvento
Caso de Uso: Editar Evento
• Bordes
InterfaceVisitante InterfaceBaseDatosIntranet PantallaPrincipal PantallaVisitantePantallaAgenda PantallaConsultarEventos PantallaInfoEvento PantallaEditarEvento
MensajeExito
• Entidades
Cita Empleado Cliente Ciudad
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorCiudad ManejadorEmpleado
ManejadorCrearEvento ManejadorEditarEvento ManejadorCita
Caso de Uso: Consultar Clientes
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaConsultarClientes
PantallaPersonalAdministrativo
• Entidades
Cliente Ciudad
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorConsultarClientes ManejadorEmpleadoCaso de Uso: Registrar Cliente
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaConsultarClientes
PantallaPersonalAdministrativo PantallaRegistrarCliente MensajeExito
• Entidades
Cliente Ciudad
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorConsultarClientes ManejadorEmpleado
ManejadorRegistrarCliente ManejadorCiudad
Caso de Uso: Editar Cliente
• Bordes
InterfacePersonalAdministrativo InterfaceBaseDatosIntranet PantallaPrincipal PantallaConsultarClientes
PantallaPersonalAdministrativo PantallaInfoCliente MensajeExito PantallaEditarCliente
• Entidades
Cliente Ciudad
• Controladores
ManejadorPrincipal ManejadorCliente ManejadorConsultarClientes ManejadorEmpleado
ManejadorEditarCliente ManejadorCiudadCASOS DE USO INSERTANDO SECUENCIAS EN LOS FLUJOS Y SUBFLUJOS
Tabla 1. Flujos y SubFlujos: Editar Cotización ............................................................................ 3
Tabla 2. Flujos y SubFlujos: Ingresar Op ..................................................................................... 5
Tabla 3. Flujos y SubFlujos: Editar Op ......................................................................................... 7
Tabla 4. Flujos y SubFlujos: Reportar Visita ................................................................................ 8
Tabla 5. Flujos y SubFlujos: Editar Reporte de Visita ................................................................ 10
Tabla 6. Flujos y SubFlujos: Generar Informe de Visitas ........................................................... 11
Tabla 7. Flujos y SubFlujos: Cambiar Contraseña ...................................................................... 13
Tabla 8. Flujos y SubFlujos: Asignar Permisos .......................................................................... 15
Tabla 9. Flujos y SubFlujos: Registrar Empleado ....................................................................... 16
Tabla 10. Flujos y SubFlujos: Consultar Empleados .................................................................. 17
Tabla 11. Flujos y SubFlujos: Editar Empleados ........................................................................ 19
Tabla 12. Flujos y SubFlujos: Crear Evento ............................................................................... 20
Tabla 13. Flujos y SubFlujos: Consultar Eventos ....................................................................... 21
Tabla 14. Flujos y SubFlujos: Editar Evento .............................................................................. 23
Tabla 15. Flujos y SubFlujos: Consultar Clientes ....................................................................... 24
Tabla 16. Flujos y SubFlujos: Registrar Cliente ......................................................................... 25
Tabla 17. Flujos y SubFlujos: Editar Cliente .............................................................................. 26
Caso de Uso: Editar Cotización
Caso de uso Editar Cotización
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro actualizado de las cotizaciones
solicitadas por los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá actualizar el registro de
las cotizaciones solicitadas por los clientes
Precondiciones Iniciar sesión Administrativo
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaPrincipal.
El Usuario tiene la opción “Acceder”, si elige está opción, se valida el registro de
usuario mediante un nombre_usuario y una contraseña insertados por el Usuario en
la PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el evento
“Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita validarEmpleado
al ManejadorEmpleado. El ManejadorEmpleado solicita validarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita validarEmpleado
a la BaseDatosIntranet. La BaseDatosIntranet valida al empleado y devuelve el OK
a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve el OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve el OK al
ManejadorPrincipal (esta validación será utilizada en los próximos casos de uso ya
que lo único que varia es el Usuario por otro actor que será mencionado en cada
caso de uso). Una vez validado el empleado (E-1), el ManejadorPrincipal solicita
Desplegar PantallaPersonalAdministrativo a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. ElUsuario da click en la opción “Compañía”. La PantallaPersonalAdministrativo
envía el evento “Compañía” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Compañía” al
ManejadorPrincipal. El ManejardorPrincipal solicita Desplegar PantallaCompañia
a la InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega
la PantallaPersonalAdministrativo. El Usuario presiona la opción “Editar
Cotización”. La PantallaPersonalAdministrativo envía el evento “Editar
Cotización” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Editar Cotización” al
ManejadorEditarCotizacion. El ManejadoEditarCotizacion solicita
listarCotizaciones al ManejadorCotizacion. El ManejadorCotizacion solicita
listarCotizaciones a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita listarCotizaciones a la BaseDatosIntranet. La BaseDatosIntranet busca la
lista de Cotizaciones y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCotizacion. El
ManejadorCotizacion devuelve OK al ManejadorEditarCotizacion. El
ManejadorEditarCotizacion solicita DesplegarPantallaListarCotizacion a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaListarCotizacion.
El usuario tiene la opción “Editar”, si elige esta opción, la PantallaListarCotizacion
envía el evento “Editar” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Editar” al
ManejadorEditarCotizacion. El ManejadorEditarCotizacion solicita
obtenerClientes al ManejadorCliente. El ManejadorCliente solicita obtenerClientes
a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
obtenerClientes a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes
registrados en el sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El ManejadorCliente
devuelve OK al ManejadorEditarCotizacion. El ManejadorEditarCotizacion
solicita obtenerEmpleados al ManejadorEmpleado. El ManejadorEmpleado
solicita obtenerEmpleados a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerEmpleados a la BaseDatosIntranet. La
BaseDatosIntranet busca los empleados registrados en el sistema y devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorEditarCotizacion. El ManejadorEditarCotizacion solicita
cargarCotizacion al ManejadorCotizacion. El ManejadorCotizacion solicita
cargarCotizacion a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita cargarCotizacion a la BaseDatosIntranet. La BaseDatosIntranet busca la
información de la cotización seleccionada y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCotizacion. El ManejadorCotizacion devuelve OK al
ManejadorEditarCotizacion. El ManejadorEditarCotizacion solicita
DesplegarPantallaEditarCotizacion a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaEditarCotizacion. Esta
pantalla carga la información de la cotización y contiene los posibles campos a
modificar, la lista de clientes, y la lista de empleados, una vez realizadas las
modificaciones, el usuario presiona el botón “Aceptar”. LaPantallaEditarCotizacion envía el evento “Aceptar” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el evento
“Aceptar” al ManejadorEditarCotizacion (E-2). El ManejadorEditarCotizacion
solicita editarCotizacion a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita editarCotizacion a la BaseDatosIntranet. La
BaseDatosIntranet actualiza la información de la cotización y luego devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEditarCotizacion. El ManejadorEditarCotizacion solicita
DesplegarMensajeExito a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo envía
el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdmistrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para la actualización de
la cotización no es correcta
Tabla 1. Flujos y SubFlujos: Editar Cotización
Caso de Uso: Ingresar OP
Caso de uso Ingresar OP
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantener un registro de las ordenes de producción
solicitadas por los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá registrar las ordenes de
producción solicitadas por los clientes
Precondiciones Iniciar sesión Administrativo
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaPrincipal.
El Usuario tiene la opción “Acceder”, si elige está opción, se valida el registro de
usuario mediante un nombre_usuario y una contraseña insertados por el Usuario
en la PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado elempleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaPersonalAdministrativo a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario da click en la opción “Compañía”. La PantallaPersonalAdministrativo
envía el evento “Compañía” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Compañía” al
ManejadorPrincipal. El ManejardorPrincipal solicita Desplegar
PantallaCompañia a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario presiona la opción “Ingresar OP”. La PantallaPersonalAdministrativo
envía el evento “Ingresar OP” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Ingresar OP” al
ManejadorIngresarOP. El ManejadoIngresarOP solicita obtenerCotizaciones al
ManejadorCotizacion. El ManejadorCotizacion solicita obtenerCotizaciones a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
obtenerCotizaciones a la BaseDatosIntranet. La BaseDatosIntranet busca las
Cotizaciones registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCotizacion. El ManejadorCotizacion devuelve OK al
ManejadorIngresarOP. El ManejadorIngresarOP solicita obtenerClientes al
ManejadorCliente. El ManejadorCliente solicita obtenerClientes a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita obtenerClientes
a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorIngresarOP. El
ManejadorIngresarOP solicita obtenerEmpleados al ManejadorEmpleado. El
ManejadorEmpleado solicita obtenerEmpleados a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet solicita obtenerEmpleados a la BaseDatosIntranet.
La BaseDatosIntranet busca los empleados registrados en el sistema y devuelve
OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorIngresarOP. El ManejadorIngresarOP solicita
DesplegarPantallaIngresarOP a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaIngresarOP. Esta pantalla
contiene los campos a ingresar de la orden de producción, la lista de cotizaciones,
la lista de clientes, y la lista de empleados, una vez ingresada la información de la
orden de producción, el usuario presiona el botón “Aceptar”. La
PantallaIngresarOP envía el evento “Aceptar” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Aceptar” al ManejadorIngresarOP (E-2). El ManejadorIngresarOP
solicita insertarOrdenProduccion a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita insertarOrdenProduccion a la
BaseDatosIntranet. La BaseDatosIntranet registra la información de la orden de
producción y luego devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorIngresarOP. El
ManejadorIngresarOP solicita DesplegarMensajeExito a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliegaMensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo
envía el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdmistrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para el registro de la
orden de producción no es correcta
Tabla 2. Flujos y SubFlujos: Ingresar OP
Caso de Uso: Editar OP
Caso de uso Editar OP
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantener un registro actualizado de las ordenes de
producción solicitadas por los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá actualizar el registro de
las ordenes de producción solicitadas por los clientes
Precondiciones Iniciar sesión Administrativo
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaPrincipal.
El Usuario tiene la opción “Acceder”, si elige está opción, se valida el registro de
usuario mediante un nombre_usuario y una contraseña insertados por el Usuario
en la PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaPersonalAdministrativo a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario da click en la opción “Compañía”. La PantallaPersonalAdministrativo
envía el evento “Compañía” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Compañía” al
ManejadorPrincipal. El ManejardorPrincipal solicita Desplegar
PantallaCompañia a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. ElUsuario presiona la opción “Editar OP”. La PantallaPersonalAdministrativo envía
el evento “Editar OP” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Editar OP” al
ManejadorEditarOP. El ManejadorEditarOP solicita listarOrdenesProduccion al
ManejadorOrdenProduccion. El ManejadorOrdenProduccion solicita
listarOrdenesProduccion a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita listarOrdenesProduccion a la
BaseDatosIntranet. La BaseDatosIntranet busca la lista de Ordenes de Produccion
y devuelve OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
devuelve OK al ManejadorOrdenProduccion. El ManejadorOrdenProduccion
devuelve OK al ManejadorEditarOP. El ManejadorEditarOP solicita
DesplegarPantallaListaOP a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaListarOP. El usuario tiene la
opción “Editar”, si elige esta opción, la PantallaListarOP envía el evento “Editar”
a la InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Editar” al ManejadorEditarOP.
El ManejadorEditarOP solicita obtenerCotizaciones al ManejadorCotizacion. El
ManejadorCotizacion solicita obtenerCotizaciones a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet solicita obtenerCotizaciones a la BaseDatosIntranet.
La BaseDatosIntranet busca las Cotizaciones registradas en el sistema y devuelve
OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCotizacion. El ManejadorCotizacion devuelve OK al
ManejadorEditarOP. El ManejadorEditarOP solicita obtenerClientes al
ManejadorCliente. El ManejadorCliente solicita obtenerClientes a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita obtenerClientes
a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorEditarOP. El ManejadorEditarOP
solicita obtenerEmpleados al ManejadorEmpleado. El ManejadorEmpleado
solicita obtenerEmpleados a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerEmpleados a la BaseDatosIntranet. La
BaseDatosIntranet busca los empleados registrados en el sistema y devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorEditarOP. El ManejadorEditarOP solicita cargarOrdenProduccion al
ManejadorOrdenProduccion. El ManejadorOrdenProduccion solicita
cargarOrdenProduccion a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarOrdenProduccion a la
BaseDatosIntranet. La BaseDatosIntranet busca la información de la orden de
producción seleccionada y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorOrdenProduccion. El
ManejadorOrdenProduccion devuelve OK al ManejadorEditarOP. El
ManejadorEditarOP solicita DesplegarPantallaEditarOP a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaEditarOP. Esta pantalla contiene la información de Orden de Producción
seleccionada, los posibles campos a modificar, la lista de cotizaciones, la lista de
clientes, y la lista de empleados, una vez ingresada la información a modificar dela orden de producción, el usuario presiona el botón “Aceptar”. La
PantallaEditarOP envía el evento “Aceptar” a la InterfazPersonalAdministrativo.
La InterfazPersonalAdministrativo envía el evento “Aceptar” al
ManejadorEditarOP (E-2). El ManejadorEditarOP editarOrdenProduccion a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
editarOrdenProduccion a la BaseDatosIntranet. La BaseDatosIntranet actualiza la
información de la orden de producción y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEditarOP. El ManejadorEditarOP solicita DesplegarMensajeExito a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega
MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo
envía el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdmistrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para la actualización de
la orden de producción no es correcta
Tabla 3. Flujos y SubFlujos: Editar OP
Caso de Uso: Reportar Visita
Caso de uso Reportar Visita
Actores Ingeniero, Base de Datos Intranet
Propósito Permitir que la compañía mantener un registro de las visitas realizadas a los
clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá registrar la información
referente a las visitas realizadas a los clientes
Precondiciones Iniciar sesión Ingeniero
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazIngeniero. La InterfazIngeniero despliega la PantallaPrincipal.
El Usuario tiene la opción “Acceder”, si elige está opción, se valida el registro de
usuario mediante un nombre_usuario y una contraseña insertados por el Usuario
en la PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazIngeniero. La InterfazIngeniero envía el evento “Acceder” al
ManejadorPrincipal. El ManejadorPrincipal solicita validarEmpleado al
ManejadorEmpleado. El ManejadorEmpleado solicita validarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado elempleado (E-1), el ManejadorPrincipal solicita Desplegar PantallaIngeniero a la
InterfazIngeniero. La InterfazIngeniero despliega la PantallaIngeniero. El Usuario
da click en la opción “Compañía”. La PantallaIngeniero envía el evento
“Compañía” a la InterfazIngeniero. La InterfazIngeniero envía el evento
“Compañía” al ManejadorPrincipal. El ManejardorPrincipal solicita Desplegar
PantallaCompañia a la InterfazIngeniero. La InterfazIngeniero despliega la
PantallaIngeniero. El Usuario presiona la opción “Reporte de Visitas”. La
PantallaIngeniero envía el evento “Reporte de Visitas” a la InterfazIngeniero. La
InterfazIngeniero envía el evento “Reporte de Visitas” al
ManejadorReportarVisita. El ManejadoReportarVisita solicita obtenerClientes al
ManejadorCliente. El ManejadorCliente solicita obtenerClientes a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita obtenerClientes
a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorReportarVisita. El
ManejadorReportarVisita solicita obtenerEmpleados al ManejadorEmpleado. El
ManejadorEmpleado solicita obtenerEmpleados a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet solicita obtenerEmpleados a la BaseDatosIntranet.
La BaseDatosIntranet busca los empleados registrados en el sistema y devuelve
OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorReportarVisita. El ManejadorReportarVisita solicita
DesplegarPantallaReportarVisita a la InterfazIngeniero. La InterfazIngeniero
despliega la PantallaReportarVisita. Esta pantalla contiene los campos para los
datos a registrar de la Visita al Cliente, la lista de clientes, y la lista de empleados,
una vez ingresada la información de la visita, el usuario presiona el botón
“Aceptar”. La PantallaReportarVisita envía el evento “Aceptar” a la
InterfazIngeniero. La InterfazIngeniero envía el evento “Aceptar” al
ManejadorReportarVisita (E-2). El ManejadorReportarVisita solicita
reporteVisitas a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita reporteVisitas a la BaseDatosIntranet. La BaseDatosIntranet registra la
información de la visita y luego devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorReportarVisita. El
ManejadorReportarVisita solicita DesplegarMensajeExito a la InterfazIngeniero.
La InterfazIngeniero despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaIngeniero envía el evento
“Cerrar Sesión” a la InterfazIngeniero. La InterfazIngeniero envía el evento
“Cerrar Sesión” al ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para el reporte de la
visita al cliente no es correcta
Tabla 4. Flujos y SubFlujos: Reportar VisitaCaso de Uso: Editar Reporte de Visita
Caso de uso Editar Reporte de Visita
Actores Director de Ingeniería, Base de Datos Intranet
Propósito Permitir que la compañía mantener un realizar las modificaciones necesarias
sobre el reporte de visitas realizado por los ingenieros
Resumen Este caso de uso es iniciado por el usuario y le permitirá modificar la información
contenida en los reportes de visita de los ingenieros
Precondiciones Iniciar sesión AdminIngenieria
Flujo Principal Después de validada la información de inicio de sesión del Empleado, y generado
el informe de visitas, como se describe el en caso de uso Generar Informe de
Visita, y que la InterfazDirectorIngenieria despliegue la PantallaInformeVisitas, el
usuario tiene la opción “Editar”, si esta opción es seleccionada, La
PantallaInformeVisitas envía el evento “Editar” a la InterfazDirectorIngenieria.
La InterfazDirectorIngenieria envía el evento “Editar” al
ManejadorEditarReporte. El ManejadorEditarReporte solicita
obtenerReporteVisita al ManejadorInformeVisitas. El ManejadorInformeVisitas
solicita obtenerReporteVisita a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerReporteVisita a la BaseDatosIntranet.
La BaseDatosIntranet busca los reportes de visita registrados en el sistema y
devuelve OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
devuelve OK al ManejadorInformeVisitas. El ManejadorInformeVisitas devuelve
OK al ManejadorEditarReporte. El ManejadorEditarReporte solicita
DesplegarPantallaEditarReporte a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega la PantallaEditarReporte. Esta pantalla
contiene la información del reporte de visita, y los posibles campos a modificar, la
lista de clientes, y la lista de empleados, una vez modificada la información de la
visita, el usuario presiona el botón “Aceptar”. La PantallaEditarReporte envía el
evento “Aceptar” a la InterfazDirectorIngenieria. La InterfazDirectorIngenieria
envía el evento “Aceptar” al ManejadorEditarReporte (E-2). El
ManejadorEditarReporte solicita editarReporte a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita editarReporte a la BaseDatosIntranet. La
BaseDatosIntranet actualiza la información de la visita y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEditarReporte. El ManejadorEditarReporte solicita
DesplegarMensajeExito a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaDirectorIngenieria envía el
evento “Cerrar Sesión” a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para la actualización del
reporte de visita no es correctaTabla 5. Flujos y SubFlujos: Editar Reporte de Visita
Caso de Uso: Generar Informe de Visitas
Caso de uso Generar Informe de Visitas
Actores Director Ingeniería, Base de Datos Intranet
Propósito Permitir que la compañía obtener un informe de las visitas a los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá generar un informe de las
visitas realizadas a los clientes.
Precondiciones Iniciar sesión Director Ingeniería
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazDirectorIngenieria. La InterfazDirectorIngenieria despliega la
PantallaPrincipal. El Usuario tiene la opción “Acceder”, si elige está opción, se
valida el registro de usuario mediante un nombre_usuario y una contraseña
insertados por el Usuario en la PantallaPrincipal, la PantallaPrincipal envía el
evento “Acceder” a la InterfazDirectorIngenieria. La InterfazDirectorIngenieria
envía el evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaDirectorIngenieria a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega la PantallaDirectorIngenieria. El Usuario da
click en la opción “Compañía”. La PantallaDirectorIngenieria envía el evento
“Compañía” a la InterfazDirectorIngenieria. La InterfazDirectorIngenieria envía
el evento “Compañía” al ManejadorPrincipal. El ManejardorPrincipal solicita
DesplegarPantallaCompañia a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega la PantallaCompañia. El Usuario presiona la
opción “Informe de Visitas”. La PantallaCompañia envía el evento “Informe de
Visitas” a la InterfazDirectorIngenieria. La InterfazDirectorIngenieria envía el
evento “Informe de Visitas” al ManejadorPrincipal. El ManejadorPrincipal
solicita DesplegarPantallaFechas a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega la PantallaFechas. El Usuario presiona la
opción “Buscar”. La PantallaFechas envía el evento “Buscar” a la
InterfazDirectorIngenieria. La InterfazDirectorIngenieria envía el evento “Buscar”
al ManejadorGenerarInformeVisita. El ManejadorGenerarInformeVisita solicita
cargarReporteVisitas al ManejadorInformeVisitas. El ManejadorInformeVisitas
solicita cargarReporteVisitas a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarReporteVisitas a la BaseDatosIntranet.
La BaseDatosIntranet busca los reportes de visita registrados en el sistema y
devuelve OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
devuelve OK al ManejadorInformeVisitas. El ManejadorInformeVisitas devuelve
OK al ManejadorGenerarInformeVisita . El ManejadorGenerarInformeVisitasolicita DesplegarPantallaInformeVisitas a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria despliega la PantallaInformeVisitas. Esta pantalla
contiene presenta los reportes de visitas realizados por los ingenieros en un
periodo de tiempo, y contiene el campo para ingresar el valor de la hora,
calculando el costo de la visita, una vez ingresados estos datos el usuario presiona
el botón “Guardar e Imprimir”. La PantallaInformeVisitas envía el evento
“Guardar e Imprimir” a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria envía el evento “Guardar e Imprimir” al
ManejadorGenerarInformeVisita. El ManejadorGenerarInformeVisita solicita
calcularCostoVisita a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita calcularCostoVisita a la BaseDatosIntranet. La BaseDatosIntranet registra
la información de la visita y luego devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorGenerarInformeVisita .
El ManejadorGenerarInformeVisita solicita DesplegarPantallaVersionImpresion
a la InterfazDirectorIngenieria. La InterfazDirectorIngenieria despliega
PantallaVersionImpresion, el usuario puede seleccionar la opción “Imprimir”, la
PantallaVersionImpresion envía el evento “Imprimir” a la
InterfazDirectorIngenieria. La InterfazDirectorIngenieria envía el evento
“Imprimir”al ManejadorPrincipal, el ManejadorPrincipal imprime y devuelve OK
a la InterfazDirectorIngenieria.
Para salir esta la opción “Cerrar Sesión”. La PantallaDirectorIngenieria envía el
evento “Cerrar Sesión” a la InterfazDirectorIngenieria. La
InterfazDirectorIngenieria envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
Tabla 6. Flujos y SubFlujos: Generar Informe de Visitas
Caso de Uso: Cambiar Contraseña
Caso de uso Cambiar Contraseña
Actores Administrador del Sistema, Base de Datos Intranet
Propósito Permitir que la compañía mantener un registro de las visitas realizadas a los
clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá registrar la información
referente a las visitas realizadas a los clientes
Precondiciones Iniciar sesión Mantenimiento
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazAdministradorSistema. La InterfazAdministradorSistema despliega la
PantallaPrincipal. El Usuario tiene la opción “Acceder”, si elige está opción, se
valida el registro de usuario mediante un nombre_usuario y una contraseña
insertados por el Usuario en la PantallaPrincipal, la PantallaPrincipal envía el
evento “Acceder” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Acceder” al ManejadorPrincipal.
El ManejadorPrincipal solicita validarEmpleado al ManejadorEmpleado. ElManejadorEmpleado solicita validarEmpleado a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita validarEmpleado a la BaseDatosIntranet. La
BaseDatosIntranet valida al empleado y devuelve el OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve el OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve el OK al
ManejadorPrincipal (esta validación será utilizada en los próximos casos de uso
ya que lo único que varia es el Usuario por otro actor que será mencionado en
cada caso de uso). Una vez validado el empleado (E-1), el ManejadorPrincipal
solicita Desplegar PantallaAdministradorSistema a la
InterfazAdministradorSistema. La InterfazAdministradorSistema despliega la
PantallaAdministradorSistema. El Usuario da click en la opción “Compañía”. La
PantallaAdministradorSistema envía el evento “Compañía” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Compañía” al ManejadorPrincipal. El ManejardorPrincipal solicita
DesplegarPantallaCompañia a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega la PantallaCompañia. El Usuario
presiona la opción “Cambiar Contraseña”. La PantallaCompañia envía el evento
“Cambiar Contraseña” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Cambiar Contraseña” al
ManejadorCambiarContraseña. El ManejadorCambiarContraseña solicita
obtenerEmpleados al ManejadorEmpleado. El ManejadorEmpleado solicita
obtenerEmpleados a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerEmpleados a la BaseDatosIntranet. La BaseDatosIntranet busca
los empleados registrados en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorCambiarContraseña. El ManejadorCambiarContraseña solicita
DesplegarPantallaBusqueda a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega la PantallaBusqueda. El usuario
selección la opción “Buscar”. La PantallaBusqueda envía el evento “Buscar” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Buscar” al ManejadorCambiarContraseña. El ManejadorCambiarContraseña
solicita obtenerDatosUsuario al ManejadorEmpleado. El ManejadorEmpleado
solicita obtenerDatosUsuario a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerDatosUsuario a la BaseDatosIntranet.
La BaseDatosIntranet busca los datos del usuario seleccionado registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve OK al ManejadorCambiarContraseña. El
ManejadorCambiarContraseña solicita DesplegarPantallaCambiarContraseña a
la InterfazAdministradorSistema. La InterfazAdministradorSistema despliega la
PantallaCambiarContraseña. Esta pantalla contiene los datos de sesión del
usuario, y la posibilidad de modificar la contraseña, una vez modificada la
información del usuario, el usuario presiona el botón “Aceptar”. La
PantallaCambiarContraseña envía el evento “Aceptar” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Aceptar” al ManejadorCambiarContraseña (E-2). El
ManejadorCambiarContraseña solicita cambiarDatosUsuario a laInterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
cambiarDatosUsuario a la BaseDatosIntranet. La BaseDatosIntranet actualiza los
datos de usuario y luego devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCambiarContraseña. El
ManejadorCambiarContraseña solicita DesplegarMensajeExito a la
InterfazAdministradorSistema. La InterfazAdministradorSistema despliega
MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaAdministradorSistema envía
el evento “Cerrar Sesión” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para la contraseña del
usuario no es correcta
Tabla 7. Flujos y SubFlujos: Cambiar Contraseña
Caso de Uso: Asignar Permisos
Caso de uso AsignarPermisos
Actores Administrador del Sistema, Base de Datos Intranet
Propósito Permitir que la compañía manejar el acceso al sistema de la intranet según las
labores del empleado
Resumen Este caso de uso es iniciado por el usuario y le permitirá modificar los permisos
del usuario sobre el sistema
Precondiciones Iniciar sesión Mantenimiento
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazAdministradorSistema. La InterfazAdministradorSistema despliega la
PantallaPrincipal. El Usuario tiene la opción “Acceder”, si elige está opción, se
valida el registro de usuario mediante un nombre_usuario y una contraseña
insertados por el Usuario en la PantallaPrincipal, la PantallaPrincipal envía el
evento “Acceder” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Acceder” al ManejadorPrincipal.
El ManejadorPrincipal solicita validarEmpleado al ManejadorEmpleado. El
ManejadorEmpleado solicita validarEmpleado a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita validarEmpleado a la BaseDatosIntranet. La
BaseDatosIntranet valida al empleado y devuelve el OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve el OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve el OK al
ManejadorPrincipal (esta validación será utilizada en los próximos casos de uso
ya que lo único que varia es el Usuario por otro actor que será mencionado en
cada caso de uso). Una vez validado el empleado (E-1), el ManejadorPrincipal
solicita Desplegar PantallaAdministradorSistema a la
InterfazAdministradorSistema. La InterfazAdministradorSistema despliega la
PantallaAdministradorSistema. El Usuario da click en la opción “Compañía”. LaPantallaAdministradorSistema envía el evento “Compañía” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Compañía” al ManejadorPrincipal. El ManejardorPrincipal solicita
DesplegarPantallaCompañia a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega la PantallaCompañia. El Usuario
presiona la opción “Asignar Permisos”. La PantallaCompañia envía el evento
“Asignar Permisos” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Asignar Permisos” al
ManejadorAsignarPermisos. El ManejadorAsignarPermisos solicita
obtenerEmpleados al ManejadorEmpleado. El ManejadorEmpleado solicita
obtenerEmpleados a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerEmpleados a la BaseDatosIntranet. La BaseDatosIntranet busca
los empleados registrados en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorAsignarPermisos. El ManejadorAsignarPermisos solicita
DesplegarPantallaBusqueda a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega la PantallaBusqueda. El usuario
selección la opción “Buscar”. La PantallaBusqueda envía el evento “Buscar” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Buscar” al ManejadorAsignarPermisos. El ManejadorAsignarPermisos solicita
obtenerRolUsuario al ManejadorRolXUsuario. El ManejadorRolXUsuario
solicita obtenerRolUsuario a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerRolUsuario a la BaseDatosIntranet. La
BaseDatosIntranet busca los roles asociados al empleado en el sistema y devuelve
OK a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorRolXUsuario. El ManejadorRolXUsuario devuelve OK al
ManejadorAsignarPermisos. El ManejadorAsignarPermisos solicita
DesplegarPantallaAsignarPermisos a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega la PantallaAsignarPermisos. Esta
pantalla lo roles del usuario, y la posibilidad de modificar la asignación de estos,
una vez modificada la información del usuario, el usuario presiona el botón
“Aceptar”. La PantallaAsignarPermisos envía el evento “Aceptar” a la
InterfazAdministradorSistema. La InterfazAdministradorSistema envía el evento
“Aceptar” al ManejadorAsignarPermisos (E-2). El ManejadorAsignarPermisos
solicita asignarPermisos a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita asignarPermisos a la BaseDatosIntranet. La
BaseDatosIntranet actualiza los roles asignados al usuario y luego devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorAsignarPermisos. El ManejadorAsignarPermisos solicita
DesplegarMensajeExito a la InterfazAdministradorSistema. La
InterfazAdministradorSistema despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaAdministradorSistema envía
el evento “Cerrar Sesión” a la InterfazAdministradorSistema. La
InterfazAdministradorSistema envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos NingunoExcepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el login.
E-2: Información no valida: La información suministrada para la contraseña del
usuario no es correcta
Tabla 8. Flujos y SubFlujos: Asignar Permisos
Caso de Uso: Registrar Empleado
Caso de uso Registrar Empleado
Actores Secretaria Personal, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro de sus empleados
Resumen Este caso de uso es iniciado por el usuario y le permitirá hacer el registro de la
información de los empleados de la compañía
Precondiciones Iniciar sesión AdminPersonal
Flujo Principal Después de validar el usuario, y desplegar la PantallaEmpleados, como se
describe en el caso de uso “Consultar Empleados”, al usuario se le presentan
varias opciones. El Usuario presiona la opción “Registrar Empleado”. La
PantallaEmpleados envía el evento “Registrar Empleado” a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal envía el evento
“Registrar Empleado” al ManejadorRegistrarEmpleado. El
ManejadorRegistrarEmpleado solicita obtenerAreas al ManejadorArea. El
ManejadorArea solicita obtenerAreas a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerAreas a la BaseDatosIntranet. La
BaseDatosIntranet busca los areas registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorArea. El ManejadorArea devuelve OK al
ManejadorRegistrarEmpleado. El ManejadorRegistrarEmpleado solicita
obtenerCiudades al ManejadorCiudad. El ManejadorCiudad solicita
obtenerCiudades a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerCiudades a la BaseDatosIntranet. La BaseDatosIntranet busca las
ciudades registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCiudad. El
ManejadorCiudad devuelve OK al ManejadorRegistrarEmpleado. El
ManejadorRegistrarEmpleado solicita DesplegarPantallaRegistrarEmpleado a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega la
PantallaRegistrarEmpleado. Esta pantalla contiene los campos necesarios para
registrar un nuevo empleado en el sistema, la lista de areas, y la lista de ciudades,
una vez ingresada la información del empleado el usuario da click en “Aceptar”.
La PantallaRegistrarEmpleado envía el evento “Aceptar” a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal envía el evento
“Aceptar” al ManejadorRegistrarEmpleado (E-2). El
ManejadorRegistrarEmpleado solicita insertarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
insertarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet inserta la
información del empleado y luego devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorRegistrarEmpleado. El
ManejadorRegistrarEmpleado solicita DesplegarMensajeExito a laInterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaSecretariaPersonal envía el
evento “Cerrar Sesión” a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada por el usuario para
registrar al empleado no es correcta
Tabla 9. Flujos y SubFlujos: Registrar Empleado
Caso de Uso: Consultar Empleados
Caso de uso Consultar Empleados
Actores Secretaria Personal, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro de sus empleados
Resumen Este caso de uso es iniciado por el usuario y le permitirá hacer el registro de la
información de los empleados de la compañía
Precondiciones Iniciar sesión AdminPersonal
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega la
PantallaPrincipal. El Usuario tiene la opción “Acceder”, si elige está opción, se
valida el registro de usuario mediante un nombre_usuario y una contraseña
insertados por el Usuario en la PantallaPrincipal, la PantallaPrincipal envía el
evento “Acceder” a la InterfazSecretariaPersonal. La InterfazSecretariaPersonal
envía el evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaSecretariaPersonal a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal despliega la PantallaSecretariaPersonal. El Usuario da
click en la opción “Empleados”. La PantallaSecretariaPersonal envía el evento
“Empleados” a la InterfazSecretariaPersonal. La InterfazSecretariaPersonal envía
el evento “Empleados” al ManejadorConsultarEmpleados. El
ManejadorConsultarEmpleados solicita obtenerAreas al ManejadorArea. El
ManejadorArea solicita obtenerAreas a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerAreas a la BaseDatosIntranet. La
BaseDatosIntranet busca los areas registradas en el sistema y devuelve OK a laInterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorArea. El ManejadorArea devuelve OK al
ManejadorConsultarEmpleados. El ManejadorConsultarEmpleados solicita
obtenerCiudades al ManejadorCiudad. El ManejadorCiudad solicita
obtenerCiudades a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerCiudades a la BaseDatosIntranet. La BaseDatosIntranet busca las
ciudades registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCiudad. El
ManejadorCiudad devuelve OK al ManejadorConsultarEmpleados. El
ManejadorConsultarEmpleados solicita cargarEmpleados al
ManejadorEmpleado. El ManejadorEmpleado solicita cargarEmpleados a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
cargarEmpleados a la BaseDatosIntranet. La BaseDatosIntranet busca la
información de los empleados registrada en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEmpleado. El ManejadorEmpleado devuelve OK al
ManejadorConsultarEmpleados. El ManejadorConsultarEmpleados solicita
DesplegarPantallaEmpleados a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal despliega la PantallaEmpleado. El Usuario presiona la
opción “Buscar”. La PantallaEmpleado envía el evento “Buscar” a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal envía el evento
“Buscar” al ManejadorConsultarEmpleados. El ManejadorConsultarEmpleados
solicita buscarEmpleados a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita buscarEmpleados a la BaseDatosIntranet. La
BaseDatosIntranet busca los empleados según parámetros registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorConsultarEmpleados. El
ManejadorConsultarEmpleados solicita DesplegarPantallaConsultarEmpleado a
la InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega la
PantallaConsultarEmpleado. Esta pantalla contiene la información basica de cada
uno de los empleados que cumplen con las opciones de búsqueda
Para salir esta la opción “Cerrar Sesión”. La PantallaSecretariaPersonal envía el
evento “Cerrar Sesión” a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada para la búsqueda de los
usuarios no es correcta
Tabla 10. Flujos y SubFlujos: Consultar Empleados
Caso de Uso: Editar Empleados
Caso de uso Editar EmpleadoActores Secretaria Personal, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro actualizado de sus empleados
Resumen Este caso de uso es iniciado por el usuario y le permitirá actualizar el registro de
la información de los empleados de la compañía
Precondiciones Iniciar sesión AdminPersonal
Flujo Principal Después de validar el usuario, y desplegar la PantallaEmpleados, como se
describe en el caso de uso “Consultar Empleados”, al usuario se le presentan
varias opciones. El Usuario presiona la opción “Ver mas”. La PantallaEmpleados
envía el evento “Ver mas” a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal envía el evento “Ver mas” al ManejadorPrincipal. El
ManejadorPrincipal solicita cargarInfoEmpleado a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet solicita cargarInfoEmpleado a la
BaseDatosIntranet. La BaseDatosIntranet carga la información del Empleado
seleccionado y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorPrincipal. El
ManejadorPrincipal solicita DesplegarPantallaInfoEmpleado a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega
PantallaInfoEmpleado. El usuario selecciona la opción “Editar”. La
PantallaInfoEmpleado envía el evento “Editar” a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal envía el evento “Editar” al ManejadorEditarEmpleado.
El ManejadorEditarEmpleado solicita obtenerAreas al ManejadorArea. El
ManejadorArea solicita obtenerAreas a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerAreas a la BaseDatosIntranet. La
BaseDatosIntranet busca los areas registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorArea. El ManejadorArea devuelve OK al ManejadorEditarEmpleado.
El ManejadorEditarEmpleado solicita obtenerCiudades al ManejadorCiudad. El
ManejadorCiudad solicita obtenerCiudades a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerCiudades a la BaseDatosIntranet. La
BaseDatosIntranet busca las ciudades registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCiudad. El ManejadorCiudad devuelve OK al
ManejadorEditarEmpleado. El ManejadorEditarEmpleado solicita
cargarInfoEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
cargarInfoEmpleado a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarInfoEmpleado a la BaseDatosIntranet.
La BaseDatosIntranet busca información del usuario seleccionado registrada en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve OK al ManejadorEditarEmpleado. El
ManejadorEditarEmpleado solicita DesplegarPantallaEditarEmpleado a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega la
PantallaEditarEmpleado. Esta pantalla contiene la información del empleado y los
campos necesarios para modificar la información del empleado en el sistema, la
lista de areas, y la lista de ciudades, una vez ingresada la información del
empleado el usuario da click en “Aceptar”. La PantallaEditarEmpleado envía el
evento “Aceptar” a la InterfazSecretariaPersonal. La InterfazSecretariaPersonalenvía el evento “Aceptar” al ManejadorEditarEmpleado (E-2). El
ManejadorEditarEmpleado solicita editarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita editarEmpleado
a la BaseDatosIntranet. La BaseDatosIntranet actualiza la información del
empleado y luego devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorEditarEmpleado. El
ManejadorEditarEmpleado solicita DesplegarMensajeExito a la
InterfazSecretariaPersonal. La InterfazSecretariaPersonal despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaSecretariaPersonal envía el
evento “Cerrar Sesión” a la InterfazSecretariaPersonal. La
InterfazSecretariaPersonal envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
Tabla 11. Flujos y SubFlujos: Editar Empleados
Caso de Uso: Crear Evento
Caso de uso Crear Evento
Actores Visitante, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro de las citas programadas con los
clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá hacer el registro de las
citas programadas con los clientes
Precondiciones Iniciar sesión
Flujo Principal Después de validar el usuario, y desplegar la PantallaAgenda, como se describe en
el caso de uso “Consultar Eventos”, al usuario se le presentan varias opciones, si
el usuario presiona la opción “Crear Evento”. La PantallaAgenda envía el evento
“Crear Evento” a la InterfazVisitante. La InterfazVisitante envía el evento “Crear
Evento” al ManejadorCrearEvento. El ManejadorCrearEvento solicita
obtenerClientes al ManejadorCliente. El ManejadorCliente solicita
obtenerClientes a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerClientes a la BaseDatosIntranet. La BaseDatosIntranet busca los
clientes registrados en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorCrearEvento. El
ManejadorCrearEvento solicita obtenerCiudades al ManejadorCiudad. El
ManejadorCiudad solicita obtenerCiudades a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerCiudades a la BaseDatosIntranet. La
BaseDatosIntranet busca las ciudades registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCiudad. El ManejadorCiudad devuelve OK al ManejadorCrearEvento.
El ManejadorCrearEvento solicita DesplegarPantallaCrearEvento a la
InterfazVisitante. La InterfazVisitante despliega la PantallaCrearEvento. Estapantalla contiene los campos necesario para registrar un nuevo evento en el
sistema, la lista de clientes, y la lista de ciudades, una vez ingresada la
información de la cita el usuario da click en “Aceptar”. La PantallaCrearEvento
envía el evento “Aceptar” a la InterfazVisitante. La InterfazVisitante envía el
evento “Aceptar” al ManejadorCrearEvento (E-2). El ManejadorCrearEvento
solicita nuevoEvento a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita nuevoEvento a la BaseDatosIntranet. La
BaseDatosIntranet inserta la información del evento y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCrearEvento. El ManejadorCrearEvento solicita
DesplegarMensajeExito a la InterfazVisitante. La InterfazVisitante despliega
MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento
“Cerrar Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento
“Cerrar Sesión” al ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada para registrar el evento
no es correcta
Tabla 12. Flujos y SubFlujos: Crear Evento
Caso de Uso: Consultar Eventos
Caso de uso Consultar Eventos
Actores Visitante, Base de Datos Intranet
Propósito Permitir que los empleados de la compañía tener un manejo adecuando de las
citas programadas con los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá consultar las citas
pendientes o realizadas con los clientes
Precondiciones Iniciar sesión
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la InterfazVisitante.
La InterfazVisitante despliega la PantallaPrincipal. El Usuario tiene la opción
“Acceder”, si elige está opción, se valida el registro de usuario mediante un
nombre_usuario y una contraseña insertados por el Usuario en la
PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazVisitante. La InterfazVisitante envía el evento “Acceder” al
ManejadorPrincipal. El ManejadorPrincipal solicita validarEmpleado al
ManejadorEmpleado. El ManejadorEmpleado solicita validarEmpleado a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario porotro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar PantallaVisitante a la
InterfazVisitante. La InterfazVisitante despliega la PantallaVisitante. El Usuario
da click en la opción “Agenda”. La PantallaVisitante envía el evento “Agenda” a
la InterfazVisitante. La InterfazVisitante envía el evento “Agenda” al
ManejadorPrincipal. El ManejadorPrincipal solicita cargarEventos a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita cargarEventos a
la BaseDatosIntranet. La BaseDatosIntranet busca los eventos registrados en el
sistema para la fecha y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorPrincipal. El
ManejadorPrincipal solicita DesplegarPantallaAgenda a la InterfazVisitante. La
InterfazVisitante despliega la PantallaAgenda. El Usuario “Selecciona una fecha”.
La PantallaAgenda envía el evento “Selecciona una Fecha” a la InterfazVisitante.
La InterfazVisitante envía el evento “Selecciona una Fecha” al
ManejadorConsultarEventos. El ManejadorConsultarEventos solicita
cargarEventos a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita cargarEventos a la BaseDatosIntranet. La BaseDatosIntranet busca los
eventos registrados en el sistema para la fecha y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorConsultarEventos. El ManejadorConsultarEventos solicita
DesplegarPantallaConsultarEventos a la InterfazVisitante. La InterfazVisitante
despliega la PantallaConsultarEventos. Esta pantalla contiene la información
basica de las citas programadas para la fecha seleccionada
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento
“Cerrar Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento
“Cerrar Sesión” al ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
Tabla 13. Flujos y SubFlujos: Consultar Eventos
Caso de Uso: Editar Evento
Caso de uso Editar Evento
Actores Visitante, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro actualizado de las citas
programadas con los clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá actualizar el registro de
las citas programadas con los clientes
Precondiciones Iniciar sesión
Flujo Principal Después de validar el usuario, y desplegar la PantallaAgenda, como se describe en
el caso de uso “Consultar Eventos”, al usuario se le presentan varias opciones, si
el usuario presiona la opción “Ver”. La PantallaAgenda envía el evento “Ver” a la
InterfazVisitante. La InterfazVisitante envía el evento “Ver” al
ManejadorPrincipal. El ManejadorPrincipal solicita cargarInfoEvento a laInterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
cargarInfoEvento a la BaseDatosIntranet. La BaseDatosIntranet busca la
información del evento seleccionado y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorPrincipal. El ManejadorPrincipal solicita DesplegarPantallaInfoEvento
a la InterfazVisitante. La InterfazVisitante despliega PantallaInfoEvento.
El usuario selecciona la opción “Editar”. La PantallaInfoEvento envía el evento
“Editar” a la InterfazVisitante. La InterfazVisitante envía el evento “Editar”al
ManejadorEditarEvento. El ManejadorEditarEvento solicita obtenerClientes al
ManejadorCliente. El ManejadorCliente solicita obtenerClientes a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita obtenerClientes
a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes registrados en el
sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorEditarEvento. El
ManejadorEditarEvento solicita obtenerCiudades al ManejadorCiudad. El
ManejadorCiudad solicita obtenerCiudades a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita obtenerCiudades a la BaseDatosIntranet. La
BaseDatosIntranet busca las ciudades registradas en el sistema y devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCiudad. El ManejadorCiudad devuelve OK al ManejadorEditarEvento.
El ManejadorEditarEvento solicita cargarInfoEvento al ManejadorCita. El
ManejadorCita solicita cargarInfoEvento a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarInfoEvento a la BaseDatosIntranet. La
BaseDatosIntranet busca la información del evento seleccionado y devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCita. El ManejadorCita devuelve OK al ManejadorEditarEvento. El
ManejadorEditarEvento solicita DesplegarPantallaEditarEvento a la
InterfazVisitante. La InterfazVisitante despliega la PantallaEditarEvento. Esta
pantalla contiene la información del evento seleccionado y los campos posibles
para la modificacion, la lista de clientes, y la lista de ciudades, una vez ingresada
la información de la cita el usuario da click en “Aceptar”. La
PantallaEditarEvento envía el evento “Aceptar” a la InterfazVisitante. La
InterfazVisitante envía el evento “Aceptar” al ManejadorEditarEvento (E-2). El
ManejadorEditarEvento solicita editarEvento a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita editarEvento a la BaseDatosIntranet. La
BaseDatosIntranet inserta la información del evento y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEditarEvento. El ManejadorEditarEvento solicita
DesplegarMensajeExito a la InterfazVisitante. La InterfazVisitante despliega
MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaVisitante envía el evento
“Cerrar Sesión” a la InterfazVisitante. La InterfazVisitante envía el evento
“Cerrar Sesión” al ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaroncorrectamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada para actualizar el evento
no es correcta
Tabla 14. Flujos y SubFlujos: Editar Evento
Caso de Uso: Consultar Clientes
Caso de uso Consultar Clientes
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía consulte la información de sus clientes
Resumen Este caso de uso es iniciado por el usuario y consultar la información de sus
clientes
Precondiciones Iniciar sesión Administración
Flujo Principal El ManejadorPrincipal solicita DesplegarPantallaPrincipal a la InterfazVisitante.
La InterfazPersonalAdministrativo despliega la PantallaPrincipal. El Usuario tiene
la opción “Acceder”, si elige está opción, se valida el registro de usuario mediante
un nombre_usuario y una contraseña insertados por el Usuario en la
PantallaPrincipal, la PantallaPrincipal envía el evento “Acceder” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Acceder” al ManejadorPrincipal. El ManejadorPrincipal solicita
validarEmpleado al ManejadorEmpleado. El ManejadorEmpleado solicita
validarEmpleado a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita validarEmpleado a la BaseDatosIntranet. La BaseDatosIntranet valida al
empleado y devuelve el OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve el OK al ManejadorEmpleado. El
ManejadorEmpleado devuelve el OK al ManejadorPrincipal (esta validación será
utilizada en los próximos casos de uso ya que lo único que varia es el Usuario por
otro actor que será mencionado en cada caso de uso). Una vez validado el
empleado (E-1), el ManejadorPrincipal solicita Desplegar
PantallaPersonalAdministrativo a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega la PantallaPersonalAdministrativo. El
Usuario da click en la opción “Directorio”. La PantallaPersonalAdministrativo
envía el evento “Directorio” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Directorio” al
ManejadorConsultarClientes. El ManejadorConsultarClientes solicita
cargarClientes al ManejadorCliente. El ManejadorCliente solicita cargarClientes
a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet solicita
cargarClientes a la BaseDatosIntranet. La BaseDatosIntranet busca los clientes
registrados en el sistema y devuelve OK a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet devuelve OK al ManejadorCliente. El
ManejadorCliente devuelve OK al ManejadorConsultarClientes. El
ManejadorConsultarClientes solicita DesplegarPantallaConsultarClientes a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaConsultarClientes. Esta pantalla contiene la información basica de losclientes registrados en el sistema, con la opción de búsqueda por nombre.
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo
envía el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
Tabla 15. Flujos y SubFlujos: Consultar Clientes
Caso de Uso: Registrar Cliente
Caso de uso Registrar Cliente
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro de la información de sus clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá hacer el registro de la
información de los clientes
Precondiciones Iniciar sesión Administración
Flujo Principal Después de validar el usuario, y desplegar la PantallaConsultarClientes, como se
describe en el caso de uso “Consultar Clientes”, al usuario se le presentan varias
opciones, si el usuario presiona la opción “Registrar Cliente”. La
PantallaConsultarClientes envía el evento “Registrar Cliente” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Registrar Cliente” al ManejadorPrincipal. El ManejadorPrincipal solicita
obtenerCiudades al ManejadorCiudad. El ManejadorCiudad solicita
obtenerCiudades a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerCiudades a la BaseDatosIntranet. La BaseDatosIntranet busca las
ciudades registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCiudad. El
ManejadorCiudad devuelve OK al ManejadorPrincipal. El ManejadorPrincipal
solicita DesplegarPantallaRegistrarCliente a la InterfazPersonalAdministrativo.
La InterfazPersonalAdministrativo despliega la PantallaRegistrarCliente. Esta
pantalla contiene los campos necesario para registrar un cliente en el sistema, y la
lista de ciudades, una vez ingresada la información de la cliente el usuario da
click en “Aceptar”. La PantallaRegistrarCliente envía el evento “Aceptar” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Aceptar” al ManejadorRegistrarCliente (E-2). El
ManejadorRegistrarCliente solicita insertarCliente a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet solicita insertarCliente a la BaseDatosIntranet. La
BaseDatosIntranet inserta la información del cliente y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorRegistrarCliente. El ManejadorRegistrarCliente solicita
DesplegarMensajeExito a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativoenvía el evento “Cerrar Sesión” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Cerrar Sesión” al
ManejadorPrincipal. El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada para registrar el cliente
en el sistema no es correcta
Tabla 16. Flujos y SubFlujos: Registrar Cliente
Caso de Uso: Editar Cliente
Caso de uso Editar Cliente
Actores Personal Administrativo, Base de Datos Intranet
Propósito Permitir que la compañía mantenga un registro actualizado de la información de
sus clientes
Resumen Este caso de uso es iniciado por el usuario y le permitirá actualizar el registro de
sus clientes
Precondiciones Iniciar sesión
Flujo Principal Después de validar el usuario, y desplegar la PantallaConsultarClientes, como se
describe en el caso de uso “Consultar Clientes”, al usuario se le presentan varias
opciones, si el usuario presiona la opción “Ver”. La PantallaConsultarClientes
envía el evento “Ver” a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo envía el evento “Ver” al ManejadorPrincipal. El
ManejadorPrincipal solicita cargarInfoCliente a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarInfoCliente a la BaseDatosIntranet. La
BaseDatosIntranet busca la información del cliente seleccionado y devuelve OK
a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorPrincipal. El ManejadorPrincipal solicita
DesplegarPantallaInfoCliente a la InterfazPersonalAdministrativo. La
InterfazPersonalAdministrativo despliega PantallaInfoCliente.
El usuario selecciona la opción “Editar”. La PantallaInfoCliente envía el evento
“Editar” a la InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo
envía el evento “Editar”al ManejadorEditarCliente. El ManejadorEditarCliente
solicita obtenerCiudades al ManejadorCiudad. El ManejadorCiudad solicita
obtenerCiudades a la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet
solicita obtenerCiudades a la BaseDatosIntranet. La BaseDatosIntranet busca las
ciudades registradas en el sistema y devuelve OK a la InterfazBaseDatosIntranet.
La InterfazBaseDatosIntranet devuelve OK al ManejadorCiudad. El
ManejadorCiudad devuelve OK al ManejadorEditarCliente. El
ManejadorEditarCliente solicita cargarInfoCliente al ManejadorCliente. El
ManejadorCliente solicita cargarInfoCliente a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita cargarInfoCliente a la BaseDatosIntranet. La
BaseDatosIntranet busca la información del cliente seleccionado y devuelve OK a
la InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorCliente. El ManejadorCliente devuelve OK al ManejadorEditarCliente.El ManejadorEditarCliente solicita DesplegarPantallaEditarCliente a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo despliega la
PantallaEditarCliente. Esta pantalla contiene la información del cliente
seleccionado y los campos posibles para la modificacion, y la lista de ciudades,
una vez ingresada la información del cliente el usuario da click en “Aceptar”. La
PantallaEditarCliente envía el evento “Aceptar” a la
InterfazPersonalAdministrativo. La InterfazPersonalAdministrativo envía el
evento “Aceptar” al ManejadorEditarCliente (E-2). El ManejadorEditarCliente
solicita editarCliente a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet solicita editarCliente a la BaseDatosIntranet. La
BaseDatosIntranet inserta la información del cliente y luego devuelve OK a la
InterfazBaseDatosIntranet. La InterfazBaseDatosIntranet devuelve OK al
ManejadorEditarCliente. El ManejadorEditarCliente solicita
DesplegarMensajeExito a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet despliega MensajeExito
Para salir esta la opción “Cerrar Sesión”. La PantallaPersonalAdministrativo
envía el evento “Cerrar Sesión” a la InterfazBaseDatosIntranet. La
InterfazBaseDatosIntranet envía el evento “Cerrar Sesión” al ManejadorPrincipal.
El ManejadorPrincipal sale del sistema
Subflujos Ninguno
Excepciones E-1 no hubo validación: El nombre_usuario y la contraseña no se validaron
correctamente, por lo tanto se le pide al usuario que se vuelva a realizar el inicio
de sesión.
E-2: Información no valida: La información suministrada para actualizar la
información del cliente no es correcta
Tabla 17. Flujos y SubFlujos: Editar ClienteCHEQUEO DE CONSISTENCIA ENTRE LOS CASOS DE USO Y EL MODELO DE
CLASES
TABLAS
Tabla 1. Chequeo de Consistencia: Editar Cotización .................................................................. 2
Tabla 2. Operaciones: Editar Cotización ....................................................................................... 4
Tabla 3. Chequeo de Consistencia: Ingresar OP ........................................................................... 4
Tabla 4. Operaciones: Ingresar OP ............................................................................................... 6
Tabla 5. Chequeo de Consistencia: Editar OP .............................................................................. 6
Tabla 6. Operaciones: Editar OP ................................................................................................... 8
Tabla 7. Chequeo de Consistencia: Reportar Visita ...................................................................... 9
Tabla 8. Operaciones: Reportar Visita ........................................................................................ 10
Tabla 9. Chequeo de Consistencia: Editar Reporte de Visita ...................................................... 10
Tabla 10. Operaciones: Editar Reporte de Visitas ...................................................................... 12
Tabla 11. Chequeo de Consistencia: Generar Informe de Visitas ............................................... 12
Tabla 12. Operaciones: Generar Informe de Visitas ................................................................... 14
Tabla 13. Chequeo de Consistencia: Cambiar Contraseña .......................................................... 14
Tabla 14. Operaciones: Cambiar Contraseña .............................................................................. 15
Tabla 15. Chequeo de Consistencia: Asignar Permisos .............................................................. 16
Tabla 16. Operaciones: Asignar Permisos .................................................................................. 17
Tabla 17. Chequeo de Consistencia: Registrar Empleado .......................................................... 17
Tabla 18. Operaciones: Registrar Empleado ............................................................................... 19
Tabla 19. Chequeo de Consistencia: Consultar Empleados ........................................................ 19
Tabla 20. Operaciones: Consultar Empleados ............................................................................ 20
Tabla 21. Chequeo de Consistencia: Editar Empleado ............................................................... 21
Tabla 22. Operaciones: Editar Empleado .................................................................................... 22
Tabla 23. Chequeo de Consistencia: Crear Evento ..................................................................... 23
Tabla 24. Operaciones: Crear Evento ......................................................................................... 24
Tabla 25. Chequeo de Consistencia: Consultar Empleados ........................................................ 24
Tabla 26. Operaciones: Consultar Eventos ................................................................................. 25
Tabla 27. Chequeo de Consistencia: Editar Evento .................................................................... 26
Tabla 28. Operaciones: Editar Empleado .................................................................................... 27
Tabla 29. Chequeo de Consistencia: Consultar Empleados ........................................................ 28
Tabla 30. Operaciones: Consultar Clientes ................................................................................. 28
Tabla 31. Chequeo de Consistencia: Registrar Cliente ............................................................... 29
Tabla 32. Operaciones: Crear Evento ......................................................................................... 30
Tabla 33. Chequeo de Consistencia: Editar Cliente .................................................................... 30
Tabla 34. Operaciones: Editar Empleado .................................................................................... 32
FIGURAS
Figura 1. Chequeo de Consistencia: Editar Cotización ................................................................. 3
Figura 2. Chequeo de Consistencia: Ingresar OP .......................................................................... 5
Figura 3. Chequeo de Consistencia: Editar OP ............................................................................. 7
Figura 4. Chequeo de Consistencia: Reportar Visita .................................................................... 9
Figura 5. Chequeo de Consistencia: Editar Reporte de Visita .................................................... 11
Figura 6. Chequeo de Consistencia: Generar Informe de Visita ................................................. 13
Figura 7. Chequeo de Consistencia: Cambiar Contraseña .......................................................... 15
Figura 8. Chequeo de Consistencia: Asignar Permisos ............................................................... 16Figura 9. Chequeo de Consistencia: Registrar Empleado ........................................................... 18
Figura 10. Chequeo de Consistencia: Consultar Empleados ....................................................... 20
Figura 11. Chequeo de Consistencia: Editar Empleado .............................................................. 21
Figura 12. Chequeo de Consistencia: Crear Evento .................................................................... 23
Figura 13. Chequeo de Consistencia: Consultar Eventos ............................................................ 25
Figura 14. Chequeo de Consistencia: Editar Evento ................................................................... 26
Figura 15. Chequeo de Consistencia: Consultar Clientes ........................................................... 28
Figura 16. Chequeo de Consistencia: Registrar Cliente .............................................................. 29
Figura 17. Chequeo de Consistencia: Editar Cliente ................................................................... 31
Caso de Uso: Editar Cotización
Escenario: Editar Cotización Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administrativo
Iniciado por: Solicitud modificación de Cotización por el Cliente
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validación; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”2” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Personal Administrativo}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “Editar Cotización”
El sistema despliega pantalla “Listar Cotización”; muestra una lista de las cotizaciones registradas en el
sistema { Cotizacion.listarCotizaciones()}
4. El usuario selecciona “Editar”
El sistema despliega pantalla “Editar Cotización” (delivers idCotizacion); muestra la información de la
cotización seleccionada { Cotizacion.cargarCotizacion(in idCotizacion)}; las Clientes registrados en el
sistema { Cliente.obtenerClientes()}; y los Empleados registrados en el sistema
{ Empleado.obtenerEmpleados()}
5. El usuario ingresa los datos modificados de la cotización, (delivers idCotizacion, idCliente,
idResponsable, fecha, descripción ); y presiona el botón “Aceptar”
El sistema actualiza la cotización { Cotizacion.editarCotizacion (in idCotizacion, in idCliente, in
idResponsable, in fecha, in descripción); despliega mensaje de éxito en la actualización de la cotización}
Tabla 1. Chequeo de Consistencia: Editar CotizaciónFigura 1. Chequeo de Consistencia: Editar Cotización
Operaciones
Las operaciones validarEmpleado, obtenerClientes, y obtenerEmpleados, son las mismas
descritas en el caso de uso “Ingresar Cotización”
listarCotizaciones ()
PRE: Existen cotizaciones registradas en el sistema
POST:
if (exist c in Cotizacion)
For i=1 hasta TotalCotizaciones
print(c.intConsecutivo)
print(Cliente.strNombre / Cliente.intNit= c.intIDCliente)
print(c.txtDescripcion)
print(“Editar”)
endfor
else
print(“No existen cotizaciones registradas en el sistema”);
endif
end
cargarCotizacion (in idCotizacion)
PRE: Existen cotización registrada en el sistema
POST:
if (exist c in Cotización / c.intConsecutivo=idCotizacion)
print(idCotizacion)
print(Cliente.strNombre / Cliente.intNit= c.intIDCliente)
print(Empleado.strNombre+ “ “+Empleado.strApellido / Empleado.intcedula=
c.intIDResponsable)
print(c.dtFecha)
print(c.txtDescripcion)endif
end
editarCotizacion (in idCotizacion, in idCliente, in idResponsable, in fecha, in descripción)
PRE: Existen cotización registrada en el sistema
POST:
if (exist c in Cotización / c.intConsecutivo=idCotizacion)
c.intIDCliente=idCliente
c.intIDResponsable=idResponsable
c.dtFecha=fecha
c.txtDescripcion=descripción
endif
end
Tabla 2. Operaciones: Editar Cotización
Caso de Uso: Ingresar OP
Escenario: Ingresar OP Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administrativo
Iniciado por: Solicitud de Orden de Produccion por el Cliente
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”2” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Personal Administrativo}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “Ingresar OP”
El sistema despliega pantalla “Ingresar OP”; muestra los campos requeridos para el registro de la orden
de producción; las Cotizaciones registradas en el sistema { Cotizacion.obtenerCotizaciones}; las
Clientes registrados en el sistema { Cliente.obtenerClientes()}; y los Empleados registrados en el
sistema { Empleado.obtenerEmpleados()}
4. El usuario ingresa los datos de la orden de producción, (delivers idCotizacion, fechaIni, fechaFin,
idCliente, idResponsable, nombre, descripción, observaciones, estado, tipo); y presiona el botón
“Aceptar”
El sistema actualiza la cotización { OrdenProduccion.insertarOrdenProduccion (in idCotizacion, in
fechaIni, in fechaFin, in idCliente, in idResponsable, in nombre, in descripción, in observaciones, in
estado, in tipo); despliega mensaje de éxito en el registro de la Orden de Produccion}
Tabla 3. Chequeo de Consistencia: Ingresar OPFigura 2. Chequeo de Consistencia: Ingresar OP
Operaciones
Las operaciones validarEmpleado, obtenerClientes, y obtenerEmpleados, son las mismas
descritas en el caso de uso “Ingresar Cotización”
obtenerCotizaciones ()
PRE: Existan Cotizaciones registradas en el sistema
POST:
if (exist c in Cotizacion)
Listar c.intConsecutivo;
else
Listar “ “;
endif
end
insertarOrdenProduccion (in idCotizacion, in fechaIni, in fechaFin, in idCliente, in idResponsable, in
nombre, in descripción, in observaciones, in estado, in tipo)
PRE: Existen cotización registrada en el sistema
POST:
Insertar un registro en la tabla OrdenProduccion
OrdenProduccion.intConsecutivo=MAX(OrdenProduccion.intConsecutivo)+1
OrdenProduccion.intIDCotizacion=idCotizacion
OrdenProduccion.dtFechaInicio=fechaIni
OrdenProduccion.dtFechaEntrega=fechaFin
OrdenProduccion.intIDCliente=idCliente
OrdenProduccion.intIDResponsable=idResponsable
OrdenProduccion.strNombre=nombre
OrdenProduccion.txtDescripcion=descripción
OrdenProduccion.txtObservaciones=observacionesOrdenProduccion.strEstado=estado
OrdenProduccion.strTipo=tipo
end
Tabla 4. Operaciones: Ingresar OP
Caso de Uso: Editar OP
Escenario: Editar OP Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administrativo
Iniciado por: Solicitud modificación de la Orden de Produccion por el Cliente
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”2” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Personal Administrativo}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “Editar OP”
El sistema despliega pantalla “Listar Ordenes de Produccion”; muestra una lista de las ordenes de
producción registradas en el sistema { OrdenProduccion.listarOrdenesProduccion()}
4. El usuario selecciona “Editar”
El sistema despliega pantalla “Editar Orden Produccion” (delivers idOrdenProduccion); muestra la
información de la orden de producción seleccionada { OrdenProduccion.cargarOrdenProduccion(in
idOrdenProduccion)}; las cotizaciones registradas en el sistema { Cotizacion.obtenerCotizaciones}; los
Clientes registrados en el sistema { Cliente.obtenerClientes()}; y los Empleados registrados en el
sistema { Empleado.obtenerEmpleados()}
5. El usuario ingresa los nuevos datos de la Orden de Produccion (delivers idOrdenProduccion,
idCotizacion, fechaIni, fechaFin, idCliente, idResponsable, nombre, descripción, observaciones, estado,
tipo); y presiona el botón “Aceptar”
El sistema actualiza la cotización { OrdenProduccion.editarOrdenProduccion (in idOrdenProduccion, in
idCotizacion, in fechaIni, in fechaFin, in idCliente, in idResponsable, in nombre, in descripción, in
observaciones, in estado, in tipo); despliega mensaje de éxito en la actualización de la Orden de
Produccion}
Tabla 5. Chequeo de Consistencia: Editar OPFigura 3. Chequeo de Consistencia: Editar OP
Operaciones
Las operaciones validarEmpleado, obtenerClientes, y obtenerEmpleados, son las mismas
descritas en el caso de uso “Ingresar Cotización”, la operación obtenerCotizaciones es la misma
descrita en el caso de uso “Ingresar OP”
listarOrdenesProduccion ()
PRE: Existen ordenes de producción registradas en el sistema
POST:
if (exist o in OrdenProduccion)
For i=1 hasta TotalOrdenesProduccion
print(o.intConsecutivo)
print(Cliente.strNombre / Cliente.intNit= o.intIDCliente)
print(o.txtDescripcion)
print(o.strEstado)
print(“Editar”)
endfor
else
print(“No existen ordenes de producción registradas en el sistema”);
endif
end
cargarOrdenProduccion (in idOrdenProduccion)
PRE: Existen cotización registrada en el sistema
POST:
if (exist o in OrdenProduccion / o.intConsecutivo=idOrdenProduccion)
print(idOrdenProduccion)
print(o.intIDCotizacion)
print(o.dtFechaInicio)print(o.dtFechaEntrega)
print(Cliente.strNombre / Cliente.intNit= o.intIDCliente)
print(Empleado.strNombre+ “ “+Empleado.strApellido / Empleado.intcedula=
o.intIDResponsable)
print(o.strNombre)
print(o.txtDescripcion)
print(o.txtObservaciones)
print(o.strEstado)
print(o.strTipo)
endif
end
editarOrdenProduccion (in idOrdenProduccion, in idCotizacion, in fechaIni, in fechaFin, in idCliente, in
idResponsable, in nombre, in descripcion, in observaciones, in estado, in tipo)
PRE: Existen cotización registrada en el sistema
POST:
if (exist o in OrdenProduccion / o.intConsecutivo=idOrdenProduccion)
o.intIDCotizacion=idCotizacion
o.dtFechaInicio=fechaIni
o.dtFechaEntrega=fechaFin
o.intIDCliente=idCliente
o.intIDResponsable=idResponsable
o.strNombre=nombre
o.txtDescripcion=descripción
o.txtObservaciones=observaciones
o.strEstado=estado
o.strTipo=tipo
endif
end
Tabla 6. Operaciones: Editar OP
Caso de Uso: Reportar Visita
Escenario: Reportar Visita Versión: 2.0
Actor: Ingeniero
Precondición: Iniciar sesión con rol de Ingeniero
Iniciado por: Visita realizada al cliente
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”5” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Ingeniero}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “Reportar Visita”
El sistema despliega pantalla “Reportar Visita”; muestra los campos necesarios para reportar la visita alcliente; los Clientes registrados en el sistema { Cliente.obtenerClientes()}; y los Empleados registrados
en el sistema { Empleado.obtenerEmpleados()}
4. El usuario ingresa el reporte de la visita (delivers idCliente, contacto, fecha, horaIni, horaFin, tSolicitado,
tRealizado, observaciones, idEmpleado); y presiona el botón “Aceptar”
El sistema ingresa el reporte de visita { InformeVisita.reporteVisitas (in delivers idCliente, in contacto,
in fecha, in horaIni, in horaFin, in tSolicitado, in tRealizado, in observaciones, in idEmpleado); despliega
mensaje de éxito en reporte de Visitas}
Tabla 7. Chequeo de Consistencia: Reportar Visita
Figura 4. Chequeo de Consistencia: Reportar Visita
Operaciones
Las operaciones validarEmpleado, obtenerClientes, y obtenerEmpleados, son las mismas
descritas en el caso de uso “Ingresar Cotización”
reporteVisitas (in idCliente, in contacto, in fecha, in horaIni, in horaFin, in tSolicitado, in tRealizado, in
observaciones, in idEmpleado)
PRE: Existen clientes y empleados registrados en el sistema
POST:
Insertar registro en la tabla InformeVisita
InformeVisita.intIDEmpleado=idEmpleado
InformeVisita.intIDCliente=idCliente
InformeVisita.strContacto=contacto
InformeVisita.dtFecha=fecha
InformeVisita.dtHoraInicial=horaIniInformeVisita.dtHoraFinal=horaFin
InformeVisita.txtTrabajoSolicitado=tSolicitado
InformeVisita.txtTrabajoRealizado=tRealizado
InformeVisita.txtObservaciones=observaciones
InformeVisita.intValorHora=0
end
Tabla 8. Operaciones: Reportar Visita
Caso de Uso: Editar Reporte de Visita
Escenario: Editar Reporte Visita Versión: 2.0
Actor: Director de Ingeniería
Precondición: Iniciar sesión con rol de AdminIngenieria
Iniciado por: Visita realizada al cliente
Flujo Normal
El desarrollo de esta caso de uso, comienza con los primeros 4 pasos del caso de uso “Generar Informe de
Visitas”
5. El usuario selecciona “Editar”
El sistema despliega la pantalla “Editar Reporte de Visita”; la cual contiene la información del reporte de
visita seleccionado { InformeVisita.obtenerReporteVisita (in idReporte)}; y los posibles cambios para
la modificación.
6. El usuario realiza las modificaciones al reporte de la visita (delivers idReporte, idCliente, contacto,
fecha, horaIni, horaFin, tSolicitado, tRealizado, observaciones, idEmpleado) y presiona el botón
“Aceptar”
El sistema registra las modificaciones hechas al reporte de visita { InformeVisita.editarReporte (in
idReporte, in idCliente, in contacto, in fecha, in horaIni, in horaFin, in tSolicitado, in tRealizado, in
observaciones, in idEmpleado); despliega mensaje de éxito en la actualización del reporte de Visita}
Tabla 9. Chequeo de Consistencia: Editar Reporte de Visita<<uses>>
validarEmpleado()
obtenerEmpleados()
<<escenario>>
Editar Reporte de Visita
<<uses>>
obtenerClientes()
<<uses>>
obtenerReporteVisita() Empleado
Cliente editarReporte() -intCedula : int
-intNit : int -strNombre : string
-strNombre : string -strApellido : string
-strTelefono : string -dtFechaNac : Date
-strDireccion : string -strDireccion : string
-strFax : string -strtelefono : string
-strEmail : string InformeVisita -strEmail : string
-strContacto : string -intConsecutivo : int -strCargo : string
+insertarCliente() -strContacto : string -dtFechaIngreso : Date
+editarCliente() -dtFecha : Date -dtFechaRetiro : Date
+cargarClientes() -dtHoraInicial : Date -strUsuario : string
+obtenerClientes() -dtHoraFinal : Date -strPaswword : string
+cargarInfoCliente() -intValorHora : int -strFoto : string
-txtTrabajoSolicitado : string +insertarEmpleado()
-txtTrabajoRealizado : string +editarEmpleado()
-txtObservaciones : string +obtenerDatosUsuario()
+reporteVisitas() +cambiarDatosUsuario()
+editarReporte() +validarEmpleado()
+cargarReporteVisitas() +cargarEmpleados()
+calcularCostoVisita() +obtenerEmpleados()
+obtenerReporteVisita() +cargarInfoEmpleado()
Figura 5. Chequeo de Consistencia: Editar Reporte de Visita
Operaciones
Las operaciones validarEmpleado, obtenerClientes y obtenerEmpleados, son las mismas
descritas en el caso de uso “Ingresar Cotización”
obtenerReporteVisita (in idReporte)
PRE: Existe informe de visita registrada en el sistema
POST:
If (exist i in InformeVisita)
print(Empleado.strNombre+ “ “+Empleado.strApellido / Empleado.intcedula= i.intIDEmpleado)
print(Cliente.strNombre / Cliente.intNit= i.intIDCliente)
print(i.strContacto)
print(i.dtFecha)
print(i.dtHoraInicial)
print(i.dtHoraFinal)
print(i.txtTrabajoSolicitado)
print(i.txtTrabajoRealizado)
print(i.txtObservaciones)
print(i.intValorHora)
endif
end
editarReporte (in idReporte, in idCliente, in contacto, in fecha, in horaIni, in horaFin, in tSolicitado, in
tRealizado, in observaciones, in idEmpleado)
PRE: Existe informe de visita registrada en el sistema
POST:
If (exist i in InformeVisita / i.intConsecutivo=idReporte)i.intIDEmpleado=idEmpleado
i.intIDCliente=idCliente
i.strContacto=contacto
i.dtFecha=fecha
i.dtHoraInicial=horaIni
i.dtHoraFinal=horaFin
i.txtTrabajoSolicitado=tSolicitado
i.txtTrabajoRealizado=tRealizado
i.txtObservaciones=observaciones
endif
end
Tabla 10. Operaciones: Editar Reporte de Visitas
Caso de Uso: Generar Informe de Visitas
Escenario: Generar Informe de Visitas Versión: 2.0
Actor: Director de Ingeniería
Precondición: Iniciar sesión con rol de AdminIngenieria
Iniciado por: Llegada fin de mes
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”6” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Ingeniero}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “Informe de Visitas”
El sistema despliega pantalla “Fechas”; en la cual se muestran las campos de fechas para el rango de
generación del reporte
4. El usuario presiona “Buscar”
El sistema despliega la pantalla “Informe de Visitas”; presenta al usuario la información de los reportes
de visita realizados en estas fechas { InformeVisita.cargarReporteVisitas(in fechaIni, in fechaFin)}
5. El usuario ingresa el valor hora de la visita y presiona el botón “Guardar e Imprimir” (delivers idReporte,
valorHora).
El sistema ingresa el valor hora del reporte de visita { InformeVisita.calcularCostoVisita (in idReporte,
in valorHora); despliega pantalla “Versión de Impresión”}
Tabla 11. Chequeo de Consistencia: Generar Informe de VisitasFigura 6. Chequeo de Consistencia: Generar Informe de Visita
Operaciones
La operación validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”
cargarReporteVisitas (in fechaIni, in fechaFin)
PRE: Existen reporte de visita registrados en el sistema
POST:
If (exist i in InformeVisita)
For i=1 hasta TotalInformeVisita
print(Empleado.strNombre+ “ “+Empleado.strApellido / Empleado.intcedula= i.intIDEmpleado)
print(Cliente.strNombre / Cliente.intNit= i.intIDCliente)
print(i.strContacto)
print(i.dtFecha)
print(i.dtHoraInicial)
print(i.dtHoraFinal)
print(i.txtTrabajoSolicitado)
print(i.txtTrabajoRealizado)
print(i.txtObservaciones)
print(i.intValorHora)
endfor
endif
end
calcularCostoVisita (in idReporte, in valorHora)
PRE: Existe informe de visita registrada en el sistema
POST:
If (exist i in InformeVisita / i.intConsecutivo=idReporte)
i.intValorHora=valorHoraendif
end
Tabla 12. Operaciones: Generar Informe de Visitas
Caso de Uso: Cambiar Contraseña
Escenario: Cambiar Contraseña Versión: 2.0
Actor: Administrador del Sistema
Precondición: Iniciar sesión con rol de Mantenimiento
Iniciado por: Solicitud de modificación de datos de usuario
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”3” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Administrador del Sistema}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “ Cambiar Contraseña”
El sistema despliega pantalla “Búsqueda”; muestra la lista de los empleados registrados en el sistema,
como parámetro de búsqueda { Empleado.obtenerEmpleados()}
4. El usuario selecciona “Buscar” (delivers idEmpleado)
El sistema realiza la búsqueda del empleado seleccionado; y muestra sus datos de usuario
{ Empleado.obtenerDatosUsuario(in idEmpleado)}
5. El usuario ingresa la nueva contraseña de usuario (delivers idEmpleado, contraseña); y presiona el botón
“Aceptar”
El sistema ingresa la nueva contraseña { Empleado.cambiarDatosUsuario (in idEmpleado, in usuario, in
contraseña); despliega mensaje de éxito modificación de contraseña}
Tabla 13. Chequeo de Consistencia: Cambiar ContraseñaFigura 7. Chequeo de Consistencia: Cambiar Contraseña
Operaciones
Las operaciones validarEmpleado y obtenerEmpleados, son las mismas descritas en el caso de
uso “Ingresar Cotización”
obtenerDatosUsuario (in idEmpleado)
PRE: Existen empleado registrado en el sistema
POST:
If (exist e in Empleado / Empleado.intCedula=idEmpleado)
Print(e.strUsuario)
Print(e.strPassword)
endif
end
cambiarDatosUsuario (in idEmpleado, in usuario, in contraseña)
PRE: Existen empleado registrado en el sistema
POST:
If (exist e in Empleado / Empleado.intCedula=idEmpleado)
e.strUsuario=usuario
e.strPassword=contraseña
endif
end
Tabla 14. Operaciones: Cambiar Contraseña
Caso de Uso: Asignar Permisos
Escenario: Asignar Permisos Versión: 2.0
Actor: Administrador del SistemaPrecondición: Iniciar sesión con rol de Mantenimiento
Iniciado por: Solicitud de modificación de permisos de usuario
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”3” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Ingeniero}; muestra datos del usuario
2. El usuario selecciona “Compañía”
El sistema despliega pantalla “Compañía”, con las opciones de menú para la opción compañía
3. El usuario selecciona “ Cambiar Contraseña”
El sistema despliega pantalla “Búsqueda”; muestra la lista de los empleados registrados en el sistema,
como parámetro de búsqueda { Empleado.obtenerEmpleados()}
4. El usuario selecciona “Buscar” (delivers idEmpleado)
El sistema realiza la búsqueda del empleado seleccionado; y muestra sus roles de usuario
{ RolXUsuario.obtenerRolUsuario(in idEmpleado)}
5. El usuario asigna nuevos permisos (delivers idEmpleado, rol); y presiona el botón “Aceptar”
El sistema asigna los nuevos permisos { RolXUsuario.asignarPermisos (in idEmpleado, in rol);
despliega mensaje de éxito modificación de permisos}
Tabla 15. Chequeo de Consistencia: Asignar Permisos
<<uses>>
validarEmpleado()
obtenerEmpleados()
<<escenario>>
Asignar Permisos
Empleado
-intCedula : int
<<uses>>
-strNombre : string
obtenerRolUsuario()
-strApellido : string
asignarPermisos()
-dtFechaNac : Date
-strDireccion : string
-strtelefono : string
-strEmail : string
-strCargo : string
RolXUsuario -dtFechaIngreso : Date
-dtFechaRetiro : Date
-intIDRol : int
-strUsuario : string
-intIDUsuario : int
-strPaswword : string
+obtenerRolUsuario() -strFoto : string
+asignarPermisos()
+insertarEmpleado()
+editarEmpleado()
+obtenerDatosUsuario()
+cambiarDatosUsuario()
+validarEmpleado()
+cargarEmpleados()
+obtenerEmpleados()
+cargarInfoEmpleado()
Figura 8. Chequeo de Consistencia: Asignar Permisos
Operaciones
Las operaciones validarEmpleado y obtenerEmpleados, son las mismas descritas en el caso de
uso “Ingresar Cotización”obtenerRolUsuario (in idEmpleado)
PRE: Existen empleado registrado en el sistema
POST:
If (exist r in RolXUsuario / RolXUsuario.intIDUsuario=idEmpleado)
For i=1 hasta NumRoles
Checked(r.inIDRol)
endfor
endif
end
asignarPermisos (in idEmpleado, in rol)
PRE: Existen empleado registrado en el sistema
POST:
If (exist e in Empleado / e.intCedula=idEmpleado)
RolXUsuario.intIDUsuario=idEmpleado
RolXUsuario.intIDRol=rol
endif
end
Tabla 16. Operaciones: Asignar Permisos
Caso de Uso: Registrar Empleado
Escenario: Registrar Empleado Versión: 2.0
Actor: Secretaria de Personal
Precondición: Iniciar sesión con rol de AdminPersonal
Iniciado por: Nuevo Personal
Flujo Normal
El desarrollo de este caso de uso comienza con los dos primeros pasos del flujo normal del caso de uso
“Consultar Empleados”
1. El usuario selecciona “Registrar Empleado”
El sistema despliega pantalla “Registrar Empleado”; muestra los campos necesarios para registrar el
empleado en el sistema; los areas registradas en el sistema { Area.obtenerAreas()}; y las Ciudades
registradas en el sistema { Ciudades.obtenerCiudades()}
2. El usuario ingresa la información del empleado (delivers idEmpleado, nombre, apellido, f_nac,
direccion, telefono, email, cargo, area, ciudad, f_ing, f_ret, nomUsuario, foto); y presiona el botón
“Aceptar”
El sistema ingresa el empleado al sistema { Empleado.insertarEmpleado (in idEmpleado, in nombre, in
apellido, in f_nac, in direccion, in telefono, in email, in cargo, in area, in ciudad, in f_ing, in f_ret, in
nomUsuario, in foto); despliega mensaje de éxito en el registro de empleados}
Tabla 17. Chequeo de Consistencia: Registrar Empleado<<uses>>
validarEmpleado()
insertarEmpleado()
<<escenario>>
Registrar Empleado
<<uses>>
obtenerCiudades()
Empleado
-intCedula : int
-strNombre : string
Ciudad
<<uses>> -strApellido : string
-intIndicativo : int obtenerAreas() -dtFechaNac : Date
-intIndDepto : int -strDireccion : string
-strNombre : string -strtelefono : string
+obtenerCiudades() -strEmail : string
-strCargo : string
-dtFechaIngreso : Date
-dtFechaRetiro : Date
Area
-strUsuario : string
-strCodArea : string -strPaswword : string
-strNombreArea : string -strFoto : string
+obtenerAreas() +insertarEmpleado()
+editarEmpleado()
+obtenerDatosUsuario()
+cambiarDatosUsuario()
+validarEmpleado()
+cargarEmpleados()
+obtenerEmpleados()
+cargarInfoEmpleado()
Figura 9. Chequeo de Consistencia: Registrar Empleado
Operaciones
La operación validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”
obtenerCiudades ()
PRE: Existan Ciudades registradas en el sistema
POST:
if (exist c in Ciudad)
Listar c.strNombre;
else
Listar “ “;
endif
end
obtenerAreas ()
PRE: Existan Areas registradas en el sistema
POST:
if (exist a in Area)
Listar a.strNombreArea;
else
Listar “ “;
endif
end
insertarEmpleado (in idEmpleado, in nombre, in apellido, in f_nac, in direccion, in telefono, in email, in
cargo, in area, in ciudad, in f_ing, in f_ret, in nomUsuario, in foto)
PRE: Rol de usuario AdminPersonal
POST:
Insertar registro en la tabla EmpleadoEmpleado.intCedula=idEmpleado
Empleado.strNombre=nombre
Empleado.strApellido=apellido
Empleado.dtFechaNac=f_nac
Empleado.strDireccion=direccion
Empleado.strTelefono=telefono
Empleado.strEmail=email
Empleado.strCargu=cargo
Empleado.strCodArea=area
Empleado.intIDCiudad=ciudad
Empleado.dtFechaIngreso=f_ing
Empleado.dtFechaRrtiro=f_ret
Empleado.strUsuario=nomUsuario
Empleado.strFoto=foto
end
Tabla 18. Operaciones: Registrar Empleado
Caso de Uso: Consultar Empleados
Escenario: Consultar Empleados Versión: 2.0
Actor: Secretaria de Personal
Precondición: Iniciar sesión con rol de AdminPersonal
Iniciado por: Consultar información de los empleados
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”4” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Secretaria de Personal}; muestra datos del usuario
2. El usuario selecciona “Empleados”
El sistema despliega pantalla “Empleados”, con la información basica de los empleados registrados en el
sistema { Empleado.cargarEmpleados(in idArea, in idCiudad)}; y las opciones de busqueda: la lista de
areas { Area.obtenerAreas()} y la lista de ciudades { Ciudad.obtenerCiudades}
3. El usuario selecciona “Buscar”
El sistema despliega pantalla “Consultar Empleados”; con la información de los empleados con cumplen
con las opciones de busqueda registrados en el sistema { Empleado.cargarEmpleados(in idArea, in
idCiudad)}
Tabla 19. Chequeo de Consistencia: Consultar Empleados<<uses>>
validarEmpleado()
cargarEmpleados()
<<escenario>>
Consultar Empleados
<<uses>>
obtenerCiudades()
Empleado
-intCedula : int
-strNombre : string
Ciudad
<<uses>> -strApellido : string
-intIndicativo : int obtenerAreas() -dtFechaNac : Date
-intIndDepto : int -strDireccion : string
-strNombre : string -strtelefono : string
+obtenerCiudades() -strEmail : string
-strCargo : string
-dtFechaIngreso : Date
-dtFechaRetiro : Date
Area
-strUsuario : string
-strCodArea : string -strPaswword : string
-strNombreArea : string -strFoto : string
+obtenerAreas() +insertarEmpleado()
+editarEmpleado()
+obtenerDatosUsuario()
+cambiarDatosUsuario()
+validarEmpleado()
+cargarEmpleados()
+obtenerEmpleados()
+cargarInfoEmpleado()
Figura 10. Chequeo de Consistencia: Consultar Empleados
Operaciones
La operación validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”, y
las operaciones obtenerCiudades y obtenerAreas son las descritas en el caso de uso “Registrar
Empleado”
cargarEmpleados (in idArea, in idCiudad)
PRE: Existen empleados registrados en el sistema
POST:
If (exist e in Empleado / e.strCodArea=idArea AND e.intIDCiudad=idCiudad )
print(e.strNombre + “ “ + e.strApellido)
print(“Direccion: “+e.strDireccion+” Telefono: “+e.strTelefono)
print(“Fecha de Ingreso: ”+ e.dtFechaIngreso)
print(“Area: “+Area.strNombreArea / e.strCodArea=Area.strCodArea)
endif
end
Tabla 20. Operaciones: Consultar Empleados
Caso de Uso: Editar Empleado
Escenario: Editar Empleado Versión: 2.0
Actor: Secretaria de Personal
Precondición: Iniciar sesión con rol de AdminPersonal
Iniciado por: Modificaciones información de Personal
Flujo Normal
El desarrollo de este caso de uso comienza con los dos primeros pasos del flujo normal del caso de uso
“Consultar Empleados”
4. El usuario selecciona “Ver mas” (delivers idEmpleado)
El sistema despliega pantalla “Información del Empleado”; presenta la información registrada en el
sistema del empleado seleccionado { Empleado.cargarInfoEmpleado(in idEmpleado)}5. El usuario selecciona “Editar”
El sistema despliega la pantalla “Editar Empleado”; carga la información del empleado seleccionado
{ Empleado.cargarInfoEmpleado(in idEmpleado)}; la lista de Areas { Area.obtenerAreas()} y la lista
de ciudades { Ciudad.obtenerCiudades()}
6. El usuario ingresa los nuevos datos del empleado, presiona el botón “Aceptar”
El sistema registra las modificaciones a la información del empleado{ Empleado.editarEmpleado (in
idEmpleado, in nombre, in apellido, in f_nac, in direccion, in telefono, in email, in cargo, in area, in
ciudad, in f_ing, in f_ret, in nomUsuario, in foto); despliega mensaje de éxito en la actualización de los
empleados}
Tabla 21. Chequeo de Consistencia: Editar Empleado
<<uses>>
validarEmpleado()
cargarInfoEmpleados()
editarEmpleado()
<<escenario>>
Editar Empleado
<<uses>>
obtenerCiudades()
Empleado
-intCedula : int
-strNombre : string
Ciudad
<<uses>> -strApellido : string
-intIndicativo : int obtenerAreas() -dtFechaNac : Date
-intIndDepto : int -strDireccion : string
-strNombre : string -strtelefono : string
+obtenerCiudades() -strEmail : string
-strCargo : string
-dtFechaIngreso : Date
-dtFechaRetiro : Date
Area
-strUsuario : string
-strCodArea : string -strPaswword : string
-strNombreArea : string -strFoto : string
+obtenerAreas() +insertarEmpleado()
+editarEmpleado()
+obtenerDatosUsuario()
+cambiarDatosUsuario()
+validarEmpleado()
+cargarEmpleados()
+obtenerEmpleados()
+cargarInfoEmpleado()
Figura 11. Chequeo de Consistencia: Editar Empleado
Operaciones
La operación validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización” y
las operaciones obtenerCiudades y obtenerAreas son las descritas en el caso de uso “Registrar
Empleado”
cargarInfoEmpleado (in idEmpleado)
PRE: Exista empleado registrado en el sistema
POST:
if (exist e in Empleado / Empleado.intCedula=idEmpleado)
print(e.intCedula)
print(e.strNombre)
print(e.strApellido)
print(e.dtFechaNac)
print(e.strDireccion)
print(e.strTelefono)print(e.strEmail)
print(e.strCargo)
print(e.strCodArea)
print(e.intIDCiudad)
print(e.dtFechaIngreso)
print(e.dtFechaRrtiro)
print(e.strUsuario)
print(e.strFoto)
endif
end
editarEmpleado (in idEmpleado, in nombre, in apellido, in f_nac, in direccion, in telefono, in email, in cargo,
in area, in ciudad, in f_ing, in f_ret, in nomUsuario, in foto)
PRE: Rol de usuario AdminPersonal
POST:
if (exist e in Empleado / e.intCedula=idEmpleado)
e.strNombre=nombre
e.strApellido=apellido
e.dtFechaNac=f_nac
e.strDireccion=direccion
e.strTelefono=telefono
e.strEmail=email
e.strCargu=cargo
e.strCodArea=area
e.intIDCiudad=ciudad
e.dtFechaIngreso=f_ing
e.dtFechaRrtiro=f_ret
e.strUsuario=nomUsuario
e.strFoto=foto
endif
end
Tabla 22. Operaciones: Editar Empleado
Caso de Uso: Crear Evento
Escenario: Crear Evento Versión: 2.0
Actor: Visitante
Precondición: Iniciar sesión
Iniciado por: Cita programada con el cliente
Flujo Normal
El desarrollo de este caso de uso comienza con los dos primeros pasos del flujo normal del caso de uso
“Consultar Eventos”
3. El usuario selecciona “Crear Evento”
El sistema despliega pantalla “Crear Evento”; muestra los campos necesarios para registrar de la cita en
el sistema; la lista de clientes registrados en el sistema { Cliente.obtenerClientes()}; y las Ciudades
registradas en el sistema { Ciudades.obtenerCiudades()}4. El usuario ingresa la información del evento (delivers idEmpleado, idCliente, contacto, fecha, telefono,
hora, direccion, ciudad, proposito); y presiona el botón “Aceptar”
El sistema ingresa la información del evento al sistema { Cita.nuevoEvento (in idEmpleado, in
idCliente, in contacto, in fecha, in telefono, in hora, in direccion, in ciudad, in proposito); despliega
mensaje de éxito en el registro de de la cita}
Tabla 23. Chequeo de Consistencia: Crear Evento
Figura 12. Chequeo de Consistencia: Crear Evento
Operaciones
Las operaciones validarEmpleado y obtenerClientes son las mismas descritas en el caso de uso
“Ingresar Cotización”, y la operación obtenerCiudades, es la misma descrita en el caso de uso
“Registrar Empleado”
nuevoEvento (in idEmpleado, in idCliente, in contacto, in fecha, in telefono, in hora, in direccion, in ciudad,
in proposito)
PRE: Rol de usuario AdminPersonal
POST:
Insertar registro en la tabla Cita
Cita.intIDCita=MAX(Cita.intIDCita)+1
Cita.intIDCliente=idCliente
Cita.intIDEmpleado=idEmpleado
Cita.strContacto=contacto
Cita.strTelefono=telefono
Cita.dtFechaCita=fechaCita.dtHoraCita=hora
Cita.strDirCita=direccion
Cita.intIDCiudad=ciudad
Cita.strProposito=proposito
end
Tabla 24. Operaciones: Crear Evento
Caso de Uso: Consultar Eventos
Escenario: Consultar Eventos Versión: 2.0
Actor: Visitante
Precondición: Iniciar sesión
Iniciado por: Consultar información de Citas
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, out
iden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”1” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Visitante}; muestra datos del usuario
2. El usuario selecciona “Agenda”
El sistema despliega pantalla “Agenda”, con la información basica de los eventos para la fecha actual
{ Cita.cargarEventos(in fecha)}
3. El usuario selecciona fecha de Busqueda
El sistema despliega pantalla “Consultar Eventos”; con la información de los eventos que cumplen con la
fecha seleccionada { Cita.cargarEventos(in fecha)}
Tabla 25. Chequeo de Consistencia: Consultar EmpleadosFigura 13. Chequeo de Consistencia: Consultar Eventos
Operaciones
La operacion validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”
cargarEventos (in fecha)
PRE: Existen empleados registrados en el sistema
POST:
If (exist c in Cita / c.dtFechaCita=fecha )
print(c.dtHoraCita)
print(Cliente.strNombre / Cliente.intNit=c.intIDCliente)
print(c.strDirCita)
print(c.strEstadoCita)
print(“Editar”)
endif
end
Tabla 26. Operaciones: Consultar Eventos
Caso de Uso: Editar Evento
Escenario: Editar Evento Versión: 2.0
Actor: Visitante
Precondición: Iniciar sesion
Iniciado por: Modificaciones a las citas
Flujo Normal
El desarrollo de este caso de uso comienza con los tres primeros pasos del flujo normal del caso de uso“Consultar Eventos”
4. El usuario selecciona “Ver” (delivers idEvento)
El sistema despliega pantalla “Información del Evento”; presenta la información registrada en el sistema
de la cita seleccionada { Cita.cargarInfoEvento(in idEvento)}
5. El usuario selecciona “Editar”
El sistema despliega la pantalla “Editar Evento”; carga la información del Evento seleccionado {
Cita.cargarInfoEvento(in idEvento)}}; la lista de Clientes { Cliente.obtenerClientes()} y la lista de
ciudades { Ciudad.obtenerCiudades()}
6. El usuario ingresa los nuevos datos del evento, presiona el boton “Aceptar”
El sistema registra las modificaciones a la información del event{ Cita.editarEvento (in idCliente,in
contacto, in telefono, in hora, in direccion, in idCiudad, in proposito, in observaciones, in idCotizacion,
in estado, in fecha, in codigo); despliega mensaje de éxito en la actualización del evento}
Tabla 27. Chequeo de Consistencia: Editar Evento
Figura 14. Chequeo de Consistencia: Editar Evento
Operaciones
Las operaciones validarEmpleado, y obtenerClientes, son las mismas descritas en el caso de uso
“Ingresar Cotización”, la operación obtenerCiudades es la misma descrita en el caso de uso
“Registrar Empleado”, y la operación cargarEventos es la misma descrita en el caso de uso
“Consultar Eventos”
cargarInfoEvento (in idEvento)
PRE: Exista evento registrado en el sistema
POST:if (exist c in Cita / Cita.intIDCita=idEvento)
print(Cliente.strNombre / Cliente.intNit=c.intIDCliente)
print(Empleado.strNombre + “ “ + Empleado.strApellido /
Empleado.intCedula=c.intIDEmpleado)
print(c.strContacto)
print(c.strTelefono)
print(c.dtFechaCita)
print(c.dtHoraCita)
print(c.strDirCita)
print(c.intIDCiudad)
print(c.strProposito)
print(c.strObservaciones)
print(c.strEstadoCita)
print(c.intIDCotizacion)
endif
end
editarEvento (in idCliente,in contacto, in telefono, in hora, in direccion, in idCiudad, in proposito, in
observaciones, in idCotizacion, in estado, in fecha, in codigo)
PRE: Rol de usuario AdminPersonal
POST:
if (exist c in Cita / c.intIDCita=codigo)
c.intIDCliente=idCliente
c.strContacto=contacto
c.strTelefono=telefono
c.dtFechaCita=fecha
c.dtHoraCita=hora
c.strDirCita=direccion
c.intIDCiudad=idCiudad
c.strProposito=proposito
c.strObservaciones=observaciones
c.strEstadoCita=estado
c.intIDCotizacion=idCotizacion
endif
end
Tabla 28. Operaciones: Editar Empleado
Caso de Uso: Consultar Clientes
Escenario: Consultar Clientes Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administracion
Iniciado por: Consultar información de Clientes
Flujo Normal
1. El usuario inicia sesión (delivers nom_usuario, pass_usuario)
El sistema valida el usuario { Empleado.validarEmpleado (in nom_usuario, pass_usuario, outiden_usuario); verifica el validacion; {iden_usuario≠NULL}; verifica el rol de usuario
{ RolXUsuario.intIDRol=”2” Λ RolXUsuario.intIDUsuario=iden_usuario; despliega la interfaz de
Personal Administrativo}; muestra datos del usuario
2. El usuario selecciona “Directorio”
El sistema despliega pantalla “Directorio”, con la información basica de los eventos para la fecha actual
{ Cliente.cargarClientes()}
Tabla 29. Chequeo de Consistencia: Consultar Empleados
<<uses>>
validarEmpleado()
<<escenario>>
Consultar Clientes
Empleado
-intCedula : int
<<uses>> -strNombre : string
cargarClientes() -strApellido : string
-dtFechaNac : Date
-strDireccion : string
-strtelefono : string
-strEmail : string
Cliente -strCargo : string
-intNit : int -dtFechaIngreso : Date
-strNombre : string -dtFechaRetiro : Date
-strTelefono : string -strUsuario : string
-strDireccion : string -strPaswword : string
-strFax : string -strFoto : string
-strEmail : string +insertarEmpleado()
-strContacto : string +editarEmpleado()
+insertarCliente() +obtenerDatosUsuario()
+editarCliente() +cambiarDatosUsuario()
+cargarClientes() +validarEmpleado()
+obtenerClientes() +cargarEmpleados()
+cargarInfoCliente() +obtenerEmpleados()
+cargarInfoEmpleado()
Figura 15. Chequeo de Consistencia: Consultar Clientes
Operaciones
La operacion validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”
cargarClientes ()
PRE: Existen clientes registrados en el sistema
POST:
If (exist c in Cliente)
print(c.strNombre)
print(c.strContacto)
print(c.strTelefono)
print(c.strDireccion)
endif
end
Tabla 30. Operaciones: Consultar ClientesCaso de Uso: Registrar Cliente
Escenario: Registrar Cliente Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administraciones
Iniciado por: Nuevo Cliente
Flujo Normal
El desarrollo de este caso de uso comienza con los dos primeros pasos del flujo normal del caso de uso
“Consultar Clientes”
3. El usuario selecciona “Registrar Cliente”
El sistema despliega pantalla “Registrar Cliente”; muestra los campos necesarios para registrar un cliente
en el sistema; y las Ciudades registradas en el sistema { Ciudades.obtenerCiudades()}
4. El usuario ingresa la información del cliente (delivers nit, nombre, telefono, fax, direccion, email,
contacto, ciudad); y presiona el botón “Aceptar”
El sistema ingresa la información del cliente al sistema { Cliente.insertarCliente(in nit, in nombre, in
telefono, in fax, in direccion, in email, in contacto, in ciudad); despliega mensaje de éxito en el registro
del cliente}
Tabla 31. Chequeo de Consistencia: Registrar Cliente
<<uses>>
obtenerCiudades() <<uses>>
validarEmpleado()
<<escenario>>
Registrar Cliente
Empleado
Ciudad
-intCedula : int
-intIndicativo : int <<uses>> -strNombre : string
-intIndDepto : int insertarCliente() -strApellido : string
-strNombre : string -dtFechaNac : Date
+obtenerCiudades() -strDireccion : string
-strtelefono : string
-strEmail : string
Cliente -strCargo : string
-intNit : int -dtFechaIngreso : Date
-strNombre : string -dtFechaRetiro : Date
-strTelefono : string -strUsuario : string
-strDireccion : string -strPaswword : string
-strFax : string -strFoto : string
-strEmail : string +insertarEmpleado()
-strContacto : string +editarEmpleado()
+insertarCliente() +obtenerDatosUsuario()
+editarCliente() +cambiarDatosUsuario()
+cargarClientes() +validarEmpleado()
+obtenerClientes() +cargarEmpleados()
+cargarInfoCliente() +obtenerEmpleados()
+cargarInfoEmpleado()
Figura 16. Chequeo de Consistencia: Registrar Cliente
Operaciones
La operacione validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”
insertarCliente (in nit, in nombre, in telefono, in fax, in direccion, in email, in contacto, in ciudad)
PRE: Rol de usuario Administrativo
POST:
Insertar registro en la tabla ClienteCliente.intNit=nit
Cliente.strNombre=nombre
Cliente.strContacto=contacto
Cliente.strTelefono=telefono
Cliente.strDireccion=direccion
Cliente.fax=fax
Cliente.strEmail=email
Cliente.intIDCiudad=ciudad
end
Tabla 32. Operaciones: Crear Evento
Caso de Uso: Editar Cliente
Escenario: Editar Cliente Versión: 2.0
Actor: Personal Administrativo
Precondición: Iniciar sesión con rol de Administracion
Iniciado por: Modificaciones información de los Clientes
Flujo Normal
El desarrollo de este caso de uso comienza con los dos primeros pasos del flujo normal del caso de uso
“Consultar Clientes”
3. El usuario selecciona “Ver” (delivers idCliente)
El sistema despliega pantalla “Información del Cliente”; presenta la información registrada en el sistema
del cliente seleccionado { Cliente.cargarInfoCliente(in idCliente)}
4. El usuario selecciona “Editar”
El sistema despliega la pantalla “Editar Cliente”; carga la información del cliente seleccionado
{ Cliente.cargarInfoCliente(in idCliente)}; y la lista de ciudades { Ciudad.obtenerCiudades()}
5. El usuario ingresa los nuevos datos del cliente, presiona el boton “Aceptar”
El sistema registra las modificaciones a la información del cliente{ Cliente.editarCliente (in nit, in
nombre, in telefono, in fax, in direccion, in email, in ciudad, in contacto); despliega mensaje de éxito en
la actualización del cliente}
Tabla 33. Chequeo de Consistencia: Editar ClienteFigura 17. Chequeo de Consistencia: Editar Cliente
Operaciones
La operacion validarEmpleado es la misma descrita en el caso de uso “Ingresar Cotización”, la
operación obtenerCiudades es la misma descrita en el caso de uso “Registrar Empleado”, y la
funcion cargarClientes es la misma descrita en el caso de uso “Consultar Clientes”
cargarInfoCliente(in idCliente)
PRE: Exista empleado registrado en el sistema
POST:
if (exist c in Cliente / c.intNit=idCliente)
print(c.strNombre)
print(c.strContacto)
print(c.strTelefono)
print(c.strDireccion)
print(c.fax)
print(c.strEmail)
print(c.intIDCiudad)
endif
end
editarCliente (in nit, in nombre, in telefono, in fax, in direccion, in email, in ciudad, in contacto)
PRE: Exista Cliente registrado en el sistema
POST:
if (exist c in Cliente / c.intNit=nit)
c.strNombre=nombre
c.strContacto=contacto
c.strTelefono=telefono
c.strDireccion=direccion
c.fax=fax
c.strEmail=emailc.intIDCiudad=ciudad
endif
end
Tabla 34. Operaciones: Editar EmpleadoINCORPORACION DE CODIGO EN LOS CASOS DE USO
Editar Cotización
Caso de Uso Editar Cotización
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Permitir realizar cambios en las cotizaciones solicitadas por los clientes
Resumen El usuario obtiene una lista con las cotizaciones registradas, selecciona
aquella que estaba buscando y realiza las modificaciones sugeridas por el
cliente.
Código Fuente function listarCotizaciones() {
$cotizaciones=mysql_query("SELECT * FROM Cotizacion");
if(mysql_num_rows($cotizaciones)>0) {
$fila=1;
?>
<table align="center" cellpadding="2">
<tr class="par">
<td width="70" align="center"><b>C&#243;digo</b></td>
<td width="149"><b>Cliente</b></td>
<td width="258"><b>Descripci&#243;n</b></td>
<td width="45"></td>
</tr>
<?
while($cot=mysql_fetch_array($cotizaciones)) {
if(($fila%2)==0) {?>
<tr class="par"">
<td align="center"><?echo $cot["intConsecutivo"]?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strNombre
FROM Cliente WHERE intNit=$cot[intIDCliente]"));
echo $cliente["strNombre"];
?>
</td>
<td><?echo $cot["txtDescripcion"]?></td>
<td align="center"><a href="<? echo
"editarCOT.php?cot=$cot[intConsecutivo]"?>">Editar</a></td>
</tr>
<?} else {?>
<tr class="impar">
<td align="center"><?echo $cot["intConsecutivo"]?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strNombre
FROM Cliente WHERE intNit=$cot[intIDCliente]"));echo $cliente["strNombre"];
?>
</td>
<td><?echo $cot["txtDescripcion"]?></td>
<td align="center"><a href="<? echo
"editarCOT.php?cot=$cot[intConsecutivo]"?>">Editar</a></td>
</tr>
<?}
$fila = $fila + 1;
}?>
</table>
<?}
}
function cargarCotizacion
($idCotizacion,&$idCliente,&$idResponsable,&$fecha,&$descripcion) {
$cotizacion=mysql_fetch_array(mysql_query("SELECT * FROM Cotizacion
WHERE intConsecutivo=$idCotizacion"));
$idCliente=$cotizacion["intIDCliente"];
$idResponsable=$cotizacion["intIDResponsable"];
$fecha=$cotizacion["dtFecha"];
$descripcion=$cotizacion["txtDescripcion"];
}
function editarCotizacion ($numero,$fecha,$cliente,$responsable,$descripcion) {
if(isset($fecha) && isset($cliente) && isset($descripcion)) {
mysql_query("UPDATE Cotizacion SET
intIDCliente='$cliente',intIDResponsable='$responsable',dtFecha='$fecha',txtDesc
ripcion='$descripcion' WHERE intConsecutivo='$numero'");
?>
<script>
var msg='Las modificaciones hechas a la cotizacion fueron guardadas
exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 1. Código Fuente: Editar Cotizaciones
Ingresar OP
Caso de Uso Ingresar OP (Orden de Producción)
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente CompañíaPropósito Mantener un registro de las órdenes de producción solicitadas por los clientes a la
compañía.
Resumen El usuario podrá registrar las ordenes de producción solicitadas por el cliente,
registrando el cliente, asignando un responsable, cargando la cotización si se
encuentra asociado a una, permitiendo asignar fecha de inicio y entrega,
además de un nombre y la descripción del proyecto.
Código Fuente function obtenerCotizaciones() {?>
<select name="cotizacion" id="cotizacion" onChange="cargaContenido(this.id)">
<option value="0">Ninguna</option>
<?php
$cotizacion=mysql_query("SELECT intConsecutivo FROM Cotizacion");
while($info=mysql_fetch_array($cotizacion)) {
echo "<option value='".$info["intConsecutivo"]."'>
".$info["intConsecutivo"]."</option>";
}
?>
</select> <a href="ingresarCOT.php?opcion=1" style="color:#fff; font-
size:10px;">Ingresar Cotizaci&#243;n</a>
<?}
function insertarOrdenProduccion
($cotizacion,$fechaIni,$fechaFin,$cliente,$responsable,$nombre,$descripcion,$observa
ciones,$estado,$tipo) {
if(isset($fechaIni) && isset($cliente) && isset($responsable) && isset($nombre)
&& isset($descripcion) && isset($estado) && isset($tipo)) {
mysql_query("INSERT INTO OrdenProduccion
(intIDCotizacion,dtFechaInicio,dtFechaEntrega,intIDCliente,intIDResponsable,str
Nombre,txtDescripcion,txtObservaciones,strEstado,strTipo) VALUES
('$cotizacion','$fechaIni','$fechaFin','$cliente','$responsable','$nombre','$descripcio
n','$observaciones','$estado','$tipo')");
?>
<script>
var msg='La orden de produccion a sido ingresada exitosamente en el sistema';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 2. Código Fuente: Ingresar OP
Editar OP
Caso de Uso Editar OP (Orden de Producción)
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Permitir dar un mejor manejo a las órdenes de producción y hacerles el seguimientoadecuado.
Resumen El usuario busca y selecciona la orden de producción que desea modificar,
ingresa los datos a modificar y modifica la orden de producción
Código Fuente function listarOrdenesProduccion() {
$ordP=mysql_query("SELECT * FROM OrdenProduccion");
if(mysql_num_rows($ordP)>0) {
$fila=1;
?>
<table border="0" cellpadding="2" align="center">
<tr class="par" height="25">
<td width="70" align="center"><strong>C&#243;digo</strong></td>
<td width="150"><strong>Cliente</strong></td>
<td width="209"><strong>Descripcion</strong></td>
<td width="90" align="center"><strong>Estado</strong></td>
<td width="50"></td>
</tr>
<?
while($OP=mysql_fetch_array($ordP)) {
if(($fila%2)==0) {?>
<tr class="par" height="25">
<td align="center"><?echo $OP["intConsecutivo"]?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strnombre
FROM Cliente WHERE intNit=$OP[intIDCliente]"));
echo $cliente["strnombre"];
?>
</td>
<td><?echo $OP["txtDescripcion"]?></td>
<td align="center"><?echo $OP["strEstado"]?></td>
<td align="center"><a href="<? echo
"editarOP.php?op=$OP[intConsecutivo]";?>">Editar</a></td>
</tr>
<?} else {?>
<tr class="impar" height="25">
<td align="center"><?echo $OP["intConsecutivo"]?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strnombre
FROM Cliente WHERE intNit=$OP[intIDCliente]"));
echo $cliente["strnombre"];
?>
</td>
<td><?echo $OP["txtDescripcion"]?></td>
<td align="center"><?echo $OP["strEstado"]?></td>
<td align="center"><a href="<? echo"editarOP.php?op=$OP[intConsecutivo]";?>">Editar</a></td>
</tr>
<?}
$fila = $fila + 1;
}
?>
</table>
<?}
}
function cargarOrdenProduccion($idOrdenProduccion, &$idCotizacion, &$fechaIni,
&$fechaFin, &$idCliente, &$idResponsable, &$nombre, &$descripcion,
&$observaciones, &$estado, &$tipo) {
$ordenes=mysql_fetch_array(mysql_query("SELECT * FROM OrdenProduccion
WHERE intConsecutivo='$idOrdenProduccion'"));
$idCotizacion=$ordenes["intIDCotizacion"];
$fechaIni=$ordenes["dtFechaInicio"];
$fechaFin=$ordenes["dtFechaEntrega"];
$idCliente=$ordenes["intIDCliente"];
$idResponsable=$ordenes["intIDResponsable"];
$nombre=$ordenes["strNombre"];
$descripcion=$ordenes["txtDescripcion"];
$observaciones=$ordenes["txtObservaciones"];
$estado=$ordenes["strEstado"];
$tipo=$ordenes["strTipo"];
}
function editarOrdenProduccion
($numero,$cotizacion,$fechaIni,$fechaFin,$cliente,$responsable,$nombre,$descripcion,
$observaciones,$estado,$tipo) {
if(isset($numero) && isset($fechaIni) && isset($cliente) && isset($responsable)
&& isset($nombre) && isset($descripcion) && isset($estado) && isset($tipo)) {
mysql_query("UPDATE OrdenProduccion SET
intIDCotizacion='$cotizacion',dtFechaInicio='$fechaIni',dtFechaEntrega='$fechaF
in',intIDCliente='$cliente',intIDResponsable='$responsable',strNombre='$nombre',
txtDescripcion='$descripcion',txtObservaciones='$observaciones',strEstado='$esta
do',strTipo='$tipo' WHERE intConsecutivo='$numero'");
?>
<script>
var msg='Las modificaciones hechas a la orden de produccion fueron guardadas
Exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 3. Código Fuente: Editar OPReportar Visita
Caso de Uso Reportar Visita
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Permitir a los ingenieros hacer un reporte de las visitas que realizan a los clientes.
Resumen El ingeniero luego de realizada la visita al cliente debe reportar en el sistema
la información acerca de la visita realizada, la fecha y hora de realización, los
motivos de esta y la solución prestada al cliente.
Código Fuente function reporteVisitas
($cliente,$contacto,$fecha,$horaIni,$horaFin,$tSolicitado,$tRealizado,$observaciones,$
infoEmpleado) {
if(!isset($infoEmpleado)) {
$infoEmpleado=$_SESSION["identificacion_actual"];
}
if(isset($cliente) && isset($contacto) && isset($fecha) && isset($horaIni) &&
isset($horaFin) && isset($horaFin) && isset($tSolicitado) && isset($tRealizado)
&& isset($observaciones)) {
mysql_query("INSERT INTO InformeVisita
(intIDEmpleado,intIDCliente,strContacto,dtFecha,dtHoraInicial,dtHoraFinal,txtTr
abajoSolicitado,txtTrabajoRealizado,txtObservaciones,intValorHora) VALUES
('$infoEmpleado','$cliente','$contacto','$fecha','$horaIni','$horaFin','$tSolicitado','$
tRealizado','$observaciones',0)");
?>
<script>
var msg='El reporte ha sido guardado en el sistema exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?php
}
}
Tabla 4. Código Fuente: Reporte de Visitas
Editar Reporte de Visita
Caso de Uso Editar Reporte de Visita
Versión 1.0 Fecha 15/05/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Corregir posibles errores presentados en el reporte de la visita, para mejor
presentación del informe
Resumen El usuario selecciona un rango de fechas, genera al informe de visitas,
selecciona el reporte a modificar.
Código Fuente function obtenerReporteVisita
($reporte,&$idEmpleado,&$idCliente,&$contacto,&$fecha,&$horaIni,&$horaFin,&$tSolicitado,&$tRealizado,&$observaciones) {
$informes=mysql_fetch_array(mysql_query("SELECT * FROM InformeVisita
WHERE intConsecutivo='$reporte'"));
$idEmpleado=$informes["intIDEmpleado"];
$idCliente=$informes["intIDCliente"];
$contacto=$informes["strContacto"];
$fecha=$informes["dtFecha"];
$horaIni=$informes["dtHoraInicial"];
$horaFin=$informes["dtHoraFinal"];
$tSolicitado=$informes["txtTrabajoSolicitado"];
$tRealizado=$informes["txtTrabajoRealizado"];
$observaciones=$informes["txtObservaciones"];
}
function editarReporte
($consecutivo,$cliente,$contacto,$fecha,$horaIni,$horaFin,$tSolicitado,$tRealizado,$ob
servaciones,$infoEmpleado) {
if(isset($consecutivo) && isset($cliente) && isset($contacto) && isset($fecha) &&
isset($horaIni) && isset($horaFin) && isset($tSolicitado) && isset($tRealizado)) {
mysql_query("UPDATE InformeVisita SET
intIDEmpleado='$infoEmpleado',intIDCliente='$cliente', strContacto='$contacto',
dtFecha='$fecha', dtHoraInicial='$horaIni', dtHoraFinal='$horaFin',
txtTrabajoSolicitado='$tSolicitado',
txtTrabajoRealizado='$tRealizado',txtObservaciones='$observaciones' WHERE
intConsecutivo='$consecutivo'");
?>
<script>
var msg='Las modificaciones realizadas fueron guardadas exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?php}
}
Tabla 5. Código Fuente: Editar Reporte de Visitas
Generar Informe de Visitas
Caso de Uso Generar Informe de Visitas
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Obtener un informe de las visitas realizadas por los ingenieros a los clientes
Resumen El usuario selecciona un rango de fechas y genera el informe de las visitas
realizadas en este, ingresando valor de la hora y calculando el costo total.
Código Fuente function cargarReporteVisitas($fechaIni,$fechaFin) {
$informes=mysql_query("SELECT InformeVisita.intconsecutivo
id,CONCAT(Empleado.strNombre,Empleado.strApellido)empleado,Cliente.strNombre cliente,InformeVisita.strContacto
contacto,InformeVisita.dtFecha fecha,InformeVisita.dtHoraInicial
horaIni,InformeVisita.dtHoraFinal horaFin,InformeVisita.txtTrabajoSolicitado
solicitado,InformeVisita.txtTrabajoRealizado
realizado,InformeVisita.txtObservaciones observaciones,InformeVisita.intValorHora
valor FROM InformeVisita INNER JOIN Empleado ON
(Empleado.intCedula=InformeVisita.intIDEmpleado) INNER JOIN Cliente ON
(Cliente.intNit=InformeVisita.intIDCliente) WHERE
InformeVisita.dtFecha>='$fechaIni' AND InformeVisita.dtFecha<='$fechaFin'");
if(mysql_num_rows($informes)>0) {?>
<form method="POST" action="informe.php">
<input type="hidden" name="fechaIni" value="<?echo $fechaIni;?>">
<input type="hidden" name="fechaFin" value="<?echo $fechaFin;?>">
<input type="hidden" name="tipoInforme" value="1">
<table border="1" cellspacing="0" cellpadding="5">
<tr class="font_1">
<td width="370">Visita</td>
<td width="200">Trabajo Solicitado</td>
<td width="200">Trabajo Realizado</td>
<td width="200">Observaciones</td>
<td width="80" align="center">Total Horas</td>
<td width="170" align="center">Costo</td>
<td width="60" align="center"></td>
</tr>
<?php
while($info=mysql_fetch_array($informes)) {
if (isset($_POST[$info["id"]])) {
$valor=$_POST[$info["id"]];
} else {
$valor=$info["valor"];
}
mysql_query("UPDATE InformeVisita SET intValorHora=$valor
WHERE intConsecutivo=$info[id]");
?>
<tr>
<td>
<table>
<tr><td colspan="2" height="23"><b>Empleado: </b><? echo
$info["empleado"]?></td></tr>
<tr><td colspan="2" height="23"><b>Cliente: </b><? echo
$info["cliente"]?></td></tr>
<tr><td colspan="2" height="23"><b>Contacto: </b><? echo
$info["contacto"]?></td></tr>
<tr><td colspan="2" height="23"><b>Fecha: </b><? echo
$info["fecha"]?></td></tr>
<tr height="23"><td width="175" height="23"><b>Hora Inicial: </b><? echo
$info["horaIni"]?></td>
<td width="170"><b>Hora Final: </b><? echo
$info["horaFin"]?></td>
</tr>
</table>
</td>
<td><? echo $info["solicitado"]?></td>
<td><? echo $info["realizado"]?></td>
<td><? echo $info["observaciones"]?></td>
<td align="center">
<?php
$horas=(strtotime($info["horaFin"])-
strtotime($info["horaIni"]))/3600;
echo $horas
?>
</td>
<td><span><div><div> <span price="<?echo $horas;?>">Hora:
$<input type="text" size="8" name="<?echo $info["id"];?>" value="<?
echo $valor;?>">
Total: $<span></span></span></div>
</div><br></span></td>
<td align="center"><a href="javascript:editar(<? echo "'$info[id]'";
?>)">Editar</a></td>
</tr>
<?}
if (isset($_POST["imprimir"])) {?>
<script>
nueva=window.open("versionImpresion.php?FechaIni=<? echo
$fechaIni;?>&FechaFin=<?echo $fechaFin;?>
",'','width=1000,scrollbars=yes,height=800,resizable=no,toolbar=no,menu
bar=no,location=no,status=no')
</script>
<?}
?>
</table>
<br>
<div align="right"><input type="submit" name="imprimir" value="Version de
Impresión" target="_blank"></div>
</form>
<?} else {
echo "No se encuentran datos para el informe entre estas fechas";
}
}
Tabla 6. Código Fuente: Informe VisitasCU9. Cambiar Contraseña
Caso de Uso Cambiar Contraseña
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Cambiar la contraseña de acceso al sistema si esta fue olvidada por el usuario, o por
cuestiones de seguridad.
Resumen El usuario selecciona el empleado a modificar sus datos de usuarios, se cargan los
datos del usuario, se modifica la contraseña
Código Fuente function obtenerDatosUsuario($Empleado) {
$infoUsuario=mysql_query("SELECT strNombre,strApellido,strUsuario FROM
Empleado WHERE intCedula='$Empleado'");
if(mysql_num_rows($infoUsuario)>0) {
$datos=mysql_fetch_array($infoUsuario);
?>
<h2><? echo $datos["strNombre"]." ".$datos["strApellido"];?></h2>
<form name="datos" method="POST" action="cambiarContrasena.php">
<input type="hidden" name="responsable" value="<? echo $Empleado?>">
<table align="center">
<tr><td colspan="2"><font size="-4">Si no va a cambiar contraseña, dejar
espacio en blanco</font></td></tr>
<tr>
<td width="95">Usuario: </td>
<td width="193"><input type="text" name="usuario" size="25" value="<?
echo $datos["strUsuario"]?>"></td>
</tr>
<tr>
<td>Contraseña: </td>
<td>
<input type="password" name="pass" size="25"><br>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="aceptar" value="Aceptar"></td>
</tr>
</table>
</form>
<?}
}
function cambiarDatosUsuario($user,$pass,$Empleado) {
if(isset($user) && isset($Empleado)) {
if(isset($pass)) {
mysql_query("UPDATE Empleado SET strUsuario='$user',strPassword=MD5('$pass') WHERE intCedula='$Empleado'");
} else {
mysql_query("UPDATE Empleado SET strUsuario='$user' WHERE
intCedula='$Empleado'");
}
?>
<script>
var msg='Las modificaciones hechas a la cotizacion fueron guardadas
exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 7. Código Fuente: Cambiar Contraseña
Asignar Permisos
Caso de Uso Asignar Permisos
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Modificar los permisos de usuario que tienen los empleados del sistema según sus
actividades.
Resumen El usuario selecciona el empleado para asignarle los permisos, selecciona los
permisos a asignar, asigna permisos de usuario.
Código Fuente function obtenerRolUsuario ($Empleado) {
$infoUsuario=mysql_query("SELECT strNombre,strApellido FROM Empleado
WHERE intCedula='$Empleado'");
$rolUsuario=mysql_query("SELECT intIDRol FROM RolXUsuario WHERE
intIDUsuario='$Empleado'");
if(mysql_num_rows($infoUsuario)>0) {
$datos=mysql_fetch_array($infoUsuario);
$rol_1=0;$rol_2=0;$rol_3=0;$rol_4=0;
while($perfiles=mysql_fetch_array($rolUsuario)) {
if($perfiles["intIDRol"]==1) {$rol_1=1;}
elseif ($perfiles["intIDRol"]==2) {$rol_2=1;}
elseif ($perfiles["intIDRol"]==3) {$rol_3=1;}
elseif ($perfiles["intIDRol"]==4) {$rol_4=1;}
elseif ($perfiles["intIDRol"]==5) {$rol_5=1;}
elseif ($perfiles["intIDRol"]==6) {$rol_6=1;}
}
?>
<form name="permisos" onsubmit="return validar()"action="asignarPermisos.php" method="POST">
<input type="hidden" name="cedula" value="<? echo $Empleado?>">
<h2><? echo $datos["strNombre"]." ".$datos["strApellido"];?></h2>
<h5>Perfiles del Sistema:</h5>
<table align="center">
<tr><td width="474" colspan="3"><input type="checkbox"
name="mantenimiento" value="3" onClick="cambiar()" <?php
if($rol_3==1){?> checked <?php }?>>Mantenimiento</td></tr>
<tr><td colspan="3" height="14"><hr align="center" size="3" align="left"
color="#343a3d"/></td></tr>
</table>
<div id="habilitados">
<table align="center">
<tr>
<td width="140"><input type="checkbox" name="administracion"
value="2" onClick="cambiar()" <?php if($rol_2==1){?> checked<?php
}?>>Administracion</td>
<td width="140"><input type="checkbox" name="ingenieria"
value="5" onClick="cambiar()" <?php if($rol_5==1){?> checked
<?php }?>>Ingenieria</td>
<td width="140"><input type="checkbox" name="consulta" value="1"
onClick="cambiar()" <?php if($rol_1==1){?> checked <?php
}?>>Consulta</td>
</tr>
</table>
<br>
<table align="center">
<tr>
<td width="208" align="center"><input type="checkbox"
name="control" value="4" onClick="cambiar()" <?php
if($rol_4==1){?> checked <?php }?>>Administracion del
Personal</td>
<td width="212" align="center"><input type="checkbox"
name="adminIngenieria" value="6" onClick="cambiar()" <?php
if($rol_6==1){?> checked <?php }?>>Administracion de
Ingenieria</td>
</tr>
</table>
</div>
<div id="deshabilitados" style="display:none">
<table align="center">
<tr>
<td width="140"><input type="checkbox" name="admministracion"
disabled="disabled">Administracion</td>
<td width="140"><input type="checkbox" name="ingenieria"
disabled="disabled">Ingenieria</td><td width="140"><input type="checkbox" name="consulta"
disabled="disabled">Consulta</td>
</tr>
</table>
<br>
<table align="center">
<tr>
<td width="208" align="center"><input type="checkbox"
name="control" disabled="disabled">Administracion del Personal</td>
<td width="212" align="center"><input type="checkbox"
name="adminIngenieria" disabled="disabled">Administracion de
Ingenieria</td>
</tr>
</table>
</div>
<table align="center">
<tr><td colspan="3" height="14"></td></tr>
<tr>
<td></td>
<td><input type="submit" name="guardar" value="Guardar"></td>
<td></td>
</tr>
</table>
</form>
<?}
}
function asignarPermisos
($rolConsulta,$rolAdministracion,$rolMantenimiento,$rolControl,$rolIngenieria,$rolA
dminIngenieria,$Empleado) {
if(isset($rolMantenimiento)) {
mysql_query("DELETE FROM RolXUsuario WHERE
intIDUsuario='$Empleado'");
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolMantenimiento','$Empleado')");
} else {
mysql_query("DELETE FROM RolXUsuario WHERE
intIDUsuario='$Empleado'");
if(isset($rolConsulta)) {
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolConsulta','$Empleado')");
}
if(isset($rolAdministracion)) {
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolAdministracion','$Empleado')");
}if(isset($rolControl)) {
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolControl','$Empleado')");
}
if(isset($rolIngenieria)) { echo "entro Ingenieria";
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolIngenieria','$Empleado')");
}
if(isset($rolAdminIngenieria)) {
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES
('$rolAdminIngenieria','$Empleado')");
}
}
}
Tabla 8. Código Fuente: Asignar Permisos
Registrar Empleado
Caso de Uso Registrar Empleado
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro de cada uno de los empleados activos dentro de la compañía
Resumen El usuario selecciona la opción Registrar empleado, ingresa los datos
personales del mismo, registra el empleado en el sistema,
Código Fuente function obtenerAreas() {?>
<select name="area">
<option value="">Todos</option>
<?php
$areas=mysql_query("SELECT * FROM Area");
while($info=mysql_fetch_array($areas)) {
echo "<option value='".$info["strCodArea"]."'>
".$info["strNombreArea"]."</option>";
}
?>
</select>
<?}
function obtenerCiudades() {?>
<select name="ciudad">
<option value="">Todos</option>
<?php
$ciudades=mysql_query("SELECT intIndicativo,strNombre FROM Ciudad");while($info=mysql_fetch_array($ciudades)) {
echo "<option value='".$info["intIndicativo"]."'>
".$info["strNombre"]."</option>";
}
?>
</select>
<?}
function insertarEmpleado
($destino,$Cedula,$nombre,$apellido,$f_nac,$direccion,$telefono,$email,$cargo,$area,
$ciudad,$f_ing,$f_ret,$nomUsuario) {
$consulta=mysql_query("SELECT intCedula FROM Empleado WHERE
intCedula='$Cedula'");
if(mysql_num_rows($consulta)>0) {?>
<script>
var msg='El Empleado que desea ingresar ya existe en el sistema';
$.prompt(msg, {opacity: 0.8});
</script>
<?} else {
if ($destino!="") {
$foto=$destino;
if(isset($nombre) && isset($apellido) && isset($f_nac) && isset($direccion)
&& isset($telefono) && isset($f_ing) && isset($cargo) && isset($area) &&
isset($ciudad) && isset($foto) && isset($nomUsuario)) {
mysql_query("INSERT INTO Empleado
(intCedula,strNombre,strApellido,dtFechaNac,strDireccion,strTelefono,strE
mail,strCargo,strCodArea,intIDCiudad,dtFechaIngreso,dtFechaRetiro,strUsu
ario,strPassword,strFoto) VALUES
('$Cedula','$nombre','$apellido','$f_nac','$direccion','$telefono','$email','$car
go','$area','$ciudad','$f_ing','$f_ret','$nomUsuario',MD5('$nomUsuario'),'$fot
o')");
}
} else {
if(isset($nombre) && isset($apellido) && isset($f_nac) && isset($direccion)
&& isset($telefono) && isset($f_ing) && isset($cargo) && isset($area) &&
isset($ciudad) && isset($nomUsuario)) {
mysql_query("INSERT INTO Empleado
(intCedula,strNombre,strApellido,dtFechaNac,strDireccion,strTelefono,strE
mail,strCargo,strCodArea,intIDCiudad,dtFechaIngreso,dtFechaRetiro,strUsu
ario,strPassword) VALUES
('$Cedula','$nombre','$apellido','$f_nac','$direccion','$telefono','$email','$car
go','$area','$ciudad','$f_ing','$f_ret','$nomUsuario',MD5('$nomUsuario'))");
}
}
mysql_query("INSERT INTO RolXUsuario (intIDRol,intIDUsuario) VALUES(1,'$Cedula')");
?>
<script>
var msg='La informacion del Empleado a sido ingresada exitosamete';
$.prompt(msg, {opacity: 0.8});
</script>
<?php
}
}
Tabla 9. Código Fuente: Registrar Empleados
Consultar Empleados
Caso de Uso Consultar Empleados
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Tener acceso a la información de cada uno de los empleados de la compañía
Resumen El usuario puede ver la información básica de cada uno de los empleados de la
compañía, o buscar según Área o Cuidad a uno en especifico.
Código Fuente function cargarEmpleados($ciudad,$area) {
if($_GET['page']!="") { // Is page defined?
$page = $_GET['page']; // Set to the page defined
} else {
$page = 1; // Set to default page 1
}
$max = 6; // Set maximum to 10
$cur = (($page * $max) - $max);
if(!empty($area) && !empty($ciudad)) {
$empleados=mysql_query("SELECT * FROM Empleado WHERE
strCodArea='$area' AND intIDCiudad='$ciudad'");
$numEmpleados=mysql_num_rows($empleados);
$total_pages = ceil($numEmpleados / $max);
$empleados=mysql_query("SELECT * FROM Empleado WHERE
strCodArea='$area' AND intIDCiudad='$ciudad' LIMIT $cur,$max");
$nameArea=mysql_fetch_array(mysql_query("SELECT strNombreArea FROM
Area WHERE strCodArea='$area'"));
$nameCiudad=mysql_fetch_array(mysql_query("SELECT strNombre FROM
Ciudad WHERE intIndicativo='$ciudad'"));
echo "<h2>Empleados</h2><h3>$nameArea[strNombreArea] -
$nameCiudad[strNombre]</h3>";echo "<ul class='cards'>";
} elseif (!empty($area)) {
$empleados=mysql_query("SELECT * FROM Empleado WHERE
strCodArea='$area'");
$numEmpleados=mysql_num_rows($empleados);
$total_pages = ceil($numEmpleados / $max);
$empleados=mysql_query("SELECT * FROM Empleado WHERE
strCodArea='$area' LIMIT $cur,$max");
$nameArea=mysql_fetch_array(mysql_query("SELECT strNombreArea FROM
Area WHERE strCodArea='$area'"));
echo "<h2>Empleados</h2><h3>$nameArea[strNombreArea]</h3>";
echo "<ul class='cards'>";
} elseif (!empty($ciudad)) { // Consulta la informacion del usuario por ciudad
$empleados=mysql_query("SELECT * FROM Empleado WHERE
intIDCiudad=$ciudad");
$numEmpleados=mysql_num_rows($empleados);
$total_pages = ceil($numEmpleados / $max);
$empleados=mysql_query("SELECT * FROM Empleado WHERE
intIDCiudad=$ciudad LIMIT $cur,$max");
$nameCiudad=mysql_fetch_array(mysql_query("SELECT strNombre FROM
Ciudad WHERE intIndicativo='$ciudad'"));
echo "<h2>Empleados</h2><h3>$nameCiudad[strNombre]</h3>";
echo "<ul class='cards'>";
} else {
$empleados=mysql_query("SELECT * FROM Empleado");
$numEmpleados=mysql_num_rows($empleados);
$total_pages = ceil($numEmpleados / $max);
$empleados=mysql_query("SELECT * FROM Empleado LIMIT $cur,$max");
echo "<h2>Empleados</h2>";
echo "<ul class='cards'>";
}
if(mysql_num_rows($empleados)>0) {
while($emp=mysql_fetch_array($empleados)) {?>
<li>
<div id="foto" style="float: left; margin: 3px 8px; width:80;
height:106"><img src="<?echo $emp["strFoto"];?>" border="0" width="80"
height="106"></div>
<div id="info" style="float: left; margin: 2px 2px 2px 5px; text-align: left;
width:80%;"><font style="font-size:20px;"><? echo $emp["strNombre"]."
".$emp["strApellido"];?></font><br>
<table>
<tr>
<td width="318"><font color="#f93e3e">Cedula: </font><?echo
$emp["intCedula"];?></td>
<td></td>
</tr>
<tr>
<td><font color="#f93e3e">Fecha de Ingreso: </font><? echo
$emp["dtFechaIngreso"];?></td>
<td></td>
</tr>
<tr>
<td><font color="#f93e3e">Area: </font> <?php
$infoArea=mysql_fetch_array(mysql_query("SELECT
strNombreArea FROM Area WHERE
strCodArea='$emp[strCodArea]'"));
echo $infoArea["strNombreArea"];
?></td>
<td align="right"><?php
if(empty($_SESSION["control"])==false ||
empty($_SESSION["mantenimiento"])==false) {?>
<a href="javascript:infoEmpleados(<? echo "'$emp[intCedula]'";
?>)" style="font-size:10px;">ver mas>></a></td>
<?}?>
</tr>
</table>
</div>
</li>
<?}
} else {
echo "<br>No existen Empleados con estas caracteriticas";
}
echo "</ul>";
echo "<br><div style='text-align:center; float:center'>";
if($page > 1){
$prev = ($page - 1);
echo '<a
href="empleados.php?page='.$prev.'&area='.$area.'&ciudad='.$ciudad.'"><img
src="images/anterior.png" border="0" width="18" height="18"></a>';
}
if($page < $total_pages){
$next = ($page + 1); // if so, add 1 to the current
echo '<ahref="empleados.php?page='.$next.'&area='.$area.'&ciudad='.$ciudad.'"><img
src="images/siguiente.png" border="0" width="18" height="18"></a>';
}
echo "</div>";
}
Tabla 10. Código Fuente: Consultar Empleados
Editar Empleados
Caso de Uso Editar Empleados
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Mantener actualizada la información sobre los empleados de la compañía
Resumen Se selecciona el usuario a modificar y se ingresan los nuevos datos, que son
guardados en el sistema.
Código Fuente function cargarInfoEmpleado
($Cedula,&$nombre,&$apellido,&$f_nac,&$direccion,&$telefono,&$email,&$cargo,&
$area,&$ciudad,&$f_ing,&$f_ret,&$usuario,&$foto) {
$info=mysql_fetch_array(mysql_query("SELECT * FROM Empleado WHERE
intCedula='$Cedula'"));
$nombre=$info["strNombre"];
$apellido=$info["strApellido"];
$f_nac=$info["dtFechaNac"];
$direccion=$info["strDireccion"];
$telefono=$info["strTelefono"];
$email=$info["strEmail"];
$cargo=$info["strCargo"];
$area=$info["strCodArea"];
$ciudad=$info["intIDCiudad"];
$f_ing=$info["dtFechaIngreso"];
$f_ret=$info["dtFechaRetiro"];
$usuario=$info["strUsuario"];
$foto=$info["strFoto"];
}
function editarEmpleado
($destino,$Cedula,$nombre,$apellido,$f_nac,$direccion,$telefono,$email,$cargo,$area,
$ciudad,$f_ing,$f_ret,$usuario) {
if ($destino!="") {
$foto=$destino;
if(isset($nombre) && isset($apellido) && isset($f_nac) && isset($direccion) &&
isset($telefono) && isset($f_ing) && isset($cargo) && isset($area) &&
isset($ciudad) && isset($foto) && isset($usuario)) {
mysql_query("UPDATE Empleado SETstrNombre='$nombre',strApellido='$apellido',dtFechaNac='$f_nac',strDireccion
='$direccion',strTelefono='$telefono',strEmail='$email',strCargo='$cargo',strCo
dArea='$area',intIDCiudad='$ciudad',dtFechaIngreso='$f_ing',dtFechaRetiro='$
f_ret',strUsuario='$usuario',strFoto='$foto' WHERE intCedula='$Cedula'");
?>
<script>
var msg='Las modificaciones realizadas han sido guardadas exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
} else {
if(isset($nombre) && isset($apellido) && isset($f_nac) && isset($direccion) &&
isset($telefono) && isset($f_ing) && isset($cargo) && isset($area) &&
isset($ciudad) && isset($usuario)) {
mysql_query("UPDATE Empleado SET
strNombre='$nombre',strApellido='$apellido',dtFechaNac='$f_nac',strDireccion
='$direccion',strTelefono='$telefono',strEmail='$email',strCargo='$cargo',strCo
dArea='$area',intIDCiudad='$ciudad',dtFechaIngreso='$f_ing',dtFechaRetiro='$
f_ret',strUsuario='$usuario' WHERE intCedula='$Cedula'");
?>
<script>
var msg='Las modificaciones realizadas han sido guardadas exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?
}
}
}
Tabla 11. Código Fuente: Editar Empleado
Crear Evento
Caso de Uso Crear Evento
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro de las citas acordadas con los clientes.
Resumen El usuario selecciona Crear Evento, ingresa la información básica de la cita, y
selecciona la fecha de realización, realiza el registro de la cita.
Codigo Fuente function nuevoEvento
($Empleado,$cliente,$contacto,$fecha,$telefono,$hora,$direccion,$ciudad,$proposito) {
if(isset($Empleado) && isset($cliente) && isset($contacto) && isset($fecha) &&
isset($hora) && isset($direccion) && isset($ciudad)) {
mysql_query("INSERT INTO Cita
(intIDCliente,intIDEmpleado,strContacto,strTelefono,dtFechaCita,dtHoraCita,str
DirCita,intIDCiudad,strProposito,strEstadoCita) VALUES
('$cliente','$Empleado','$contacto','$telefono','$fecha','$hora','$direccion','$ciudad','
$proposito','No')");
?><script>
var msg='Se ha creado un nuevo evento';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
Tabla 12. Código Fuente: Crear Evento
Consultar Eventos
Caso de Uso Consultar Eventos
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Conocer la agenda diariamente, especialmente las citas con los clientes
Resumen El usuario selecciona la fecha de la cual quiere ver los eventos o citas, el
sistema muestras las citas o eventos planeados para este día
Código Fuente function cargarEventos($fecha,$idEmpleado) {
$citas=mysql_query("SELECT * FROM Cita WHERE dtFechaCita='$fecha' AND
intIDEmpleado='$idEmpleado'");
if(mysql_num_rows($citas)>0) {
$fila=1
?>
<table border="0">
<tr class="par" height="25">
<td width="85" align="center"><strong>Hora</strong></td>
<td width="200"><strong>Cliente</strong></td>
<td width="150"><strong>Lugar</strong></td>
<td width="80" align="center"><strong>Realizada</strong></td>
<td width="70"></td>
</tr>
<?php
while($info=mysql_fetch_array($citas)) {
if(($fila%2)==0) {?>
<tr class="par" height="25">
<td align="center"><? echo $info["dtHoraCita"];?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strNombre
FROM Cliente WHERE intNit=$info[intIDCliente]"));
echo $cliente["strNombre"];
?>
</td>
<td><?echo $info["strDirCita"]?></td>
<td align="center"><?echo $info["strEstadoCita"]?></td>
<td align="center"><a href="javascript:infoEvento(<? echo"'$info[intIDCita]'"; ?>)" style="font-size:11px">Ver</a></td>
</tr>
<?} else {?>
<tr class="impar" height="25">
<td align="center"><? echo $info["dtHoraCita"];?></td>
<td>
<?php
$cliente=mysql_fetch_array(mysql_query("SELECT strNombre
FROM Cliente WHERE intNit=$info[intIDCliente]"));
echo $cliente["strNombre"];
?>
</td>
<td><?echo $info["strDirCita"]?></td>
<td align="center"><?echo $info["strEstadoCita"]?></td>
<td align="center"><a href="javascript:infoEvento(<? echo
"'$info[intIDCita]'"; ?>)" style="font-size:11px">Ver</a></td>
</tr>
<?}
$fila = $fila + 1;
}
?>
</table>
<?} else {
echo "No tiene citas pendientes para esta fecha";
}
}
Tabla 13. Código Fuente: Consultar Eventos
Consultar Clientes
Caso de Uso Consultar Clientes
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Acceder a la información de contacto de los clientes registrados en el sistema.
Resumen El usuario visualiza la información del cliente, realizando una búsqueda por
nombre.
Código Fuente function cargarClientes() {
$clientes=mysql_query("SELECT * FROM Cliente ORDER BY strNombre");
if(mysql_num_rows($clientes)>0) {?>
<table width="30%" align="center" cellpadding="0" cellspacing="0"
id="clientes">
<thead>
<tr>
<th width="33%">Nombre</th>
<th width="33%">Contacto</th><th width="20%" align="center">Ciudad</th>
<th width="14%" align="center"></th>
</tr>
</thead>
<tfoot></tfoot>
<tbody>
<?php
while($info=mysql_fetch_array($clientes)) {?>
<tr>
<td><?php echo $info["strNombre"]?></td>
<td><?php echo $info["strContacto"]?></td>
<td align="center">
<?php
$ciudad=mysql_fetch_array(mysql_query("SELECT strNombre FROM
Ciudad WHERE intIndicativo='$info[intIDCiudad]'"));
echo $ciudad["strNombre"];
?>
</td>
<td align="center"><a href="javascript:infoCliente(<? echo
"'$info[intNit]'"; ?>)" style="font-size:10px">Ver</a></td>
</tr>
<?}
?>
</tbody>
</table>
<?} else {
echo "No hay clientes registrados en el sistema.";
}
}
Tabla 14. Código Fuente: Consultar Cliente
Registrar Cliente
Caso de Uso Registrar Cliente
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro actualizado de los clientes de la compañía
Resumen El usuario ingresa los datos relevantes del empleado y los registra en el
sistema
Código Fuente Function insertarCliente
($nit,$nombre,$telefono,$fax,$direccion,$email,$contacto,$ciudad) {
if(isset($nit) && isset($nombre) && isset($telefono) && isset($contacto) &&
isset($ciudad)) {
$existe=mysql_query("SELECT intNit FROM Cliente WHERE intNit=$nit");
if(mysql_num_rows($existe)>0) {?><script>
var msg='El cliente que desea registrar ya se encuentra en el sistema';
$.prompt(msg, {opacity: 0.8});
</script>
<?} else {
mysql_query("INSERT INTO Cliente
(intNit,strNombre,strTelefono,strDireccion,strFax,intIDCiudad,strEmail,strCont
acto) VALUES
('$nit','$nombre','$telefono','$direccion','$fax','$ciudad','$email','$contacto')");
?>
<script>
var msg='Se ha registrado un nuevo cliente en el sistema';
$.prompt(msg, {opacity: 0.8});
</script>
<?}
}
}
Tabla 15. Código Fuente: Registrar Cliente
Editar Cliente
Caso de Uso Editar Cliente
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Manejar un registro actualizado de los clientes de la compañía
Resumen El usuario selecciona el cliente que desean modificar, ingresa la nueva
información, modifica el empleado.
Código Fuente function cargarInfoCliente
($idCliente,&$nombre,&$telefono,&$fax,&$direccion,&$email,&$contacto,&$ciudad)
{
$cliente=mysql_fetch_array(mysql_query("SELECT * FROM Cliente WHERE
intNit='$idCliente'"));
$nombre=$cliente["strNombre"];
$telefono=$cliente["strTelefono"];
$fax=$cliente["strFax"];
$direccion=$cliente["strDireccion"];
$email=$cliente["strEmail"];
$contacto=$cliente["strContacto"];
$ciudad=$cliente["intIDCliente"];
}
function editarCliente
($nit,$nombre,$telefono,$fax,$direccion,$email,$contacto,$ciudad) {
if(isset($nit) && isset($nombre) && isset($telefono) && isset($contacto) &&
isset($ciudad)) {mysql_query("UPDATE Cliente SET
strNombre='$nombre',strTelefono='$telefono', strFax='$fax',
strDireccion='$direccion', strEmail='$email',
strContacto='$contacto',intIDCiudad='$ciudad' WHERE intNit='$nit'");
?>
<script>
var msg='Las modificaciones realizadas fueron guardadas exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?php
}
}
Tabla 16. Código Fuente: Editar Cliente
Editar Evento
Caso de Uso Editar Evento
Versión 1.0 Fecha 21/04/2009
Autor Zuleima Moreno
Fuente Compañía
Propósito Actualizar y hacer seguimiento a las citas de los ingenieros vendedores con los clientes.
Resumen El usuario selección la fecha del evento, lo busca y modifica según como sea
necesario.
Código Fuente function cargarInfoEvento
($codigo,&$cliente,&$contacto,&$fecha,&$telefono,&$hora,&$direccion,&$ciudad,&$
proposito,&$estado,&$observaciones,&$cotizacion) {
if(isset($codigo)) {
$evento=mysql_fetch_array(mysql_query("SELECT * FROM Cita WHERE
intIDCita='$codigo'"));
$Empleado=$evento["intIDEmpleado"];
$cliente=$evento["intIDCliente"];
$contacto=$evento["strContacto"];
$fecha=$evento["dtFechaCita"];
$telefono=$evento["strTelefono"];
$hora=$evento["dtHoraCita"];
$direccion=$evento["strDirCita"];
$ciudad=$evento["intIDCiudad"];
$proposito=$evento["strProposito"];
$estado=$evento["strEstadoCita"];
$observaciones=$evento["strObservaciones"];
$cotizacion=$evento["intIDCotizacion"];
}
}
function editarEvento
($cliente,$contacto,$telefono,$hora,$direccion,$ciudad,$proposito,$observaciones,$coti
zacion,$estado,$fecha,$codigo) {if(isset($cliente) && isset($contacto) && isset($fecha) && isset($hora) &&
isset($direccion) && isset($ciudad) && isset($codigo) && isset($estado)) {
mysql_query("UPDATE Cita SET
intIDCliente='$cliente',strContacto='$contacto',strTelefono='$telefono',dtFechaCit
a='$fecha',dtHoraCita='$hora',strDirCita='$direccion',strProposito='$proposito',str
Observaciones='$observaciones',intIDCiudad='$ciudad',strEstadoCita='$estado',in
tIDCotizacion='$cotizacion' WHERE intIDCita='$codigo'");
?>
<script>
var msg='Las modificaciones realizadas fueron guardadas exitosamente';
$.prompt(msg, {opacity: 0.8});
</script>
<?php
}
}
Tabla 17. Código Fuente: Editar Evento