Professional Documents
Culture Documents
46
proyecto.
47
Cliente Buscador web
Servidor de aplicaciones
ESFUERZO
Nº HISTORIAS DE USUARIO
(días)
4 Registrar el proyecto 2
48
12 Emitir reporte avance financiero en tiempo real 1
Historia de Usuario
Descripción:
Observaciones: Ninguno
Historia de Usuario
49
Nombre historia: Registrar designación del responsable del proyecto
Descripción:
Observaciones: Ninguno
Historia de Usuario
Descripción:
Observaciones: Ninguno
Historia de Usuario
50
Prioridad en negocio: Alta Riesgo en desarrollo: Medio
Descripción:
El usuario (responsable del proyecto), selecciona la opción “Registro proyecto”, del menú
principal “Proyecto”, donde el sistema muestra para ingresar el código del SNIP del
proyecto y campos para registro de datos generales del proyecto.
Observaciones: Ninguno
Historia de Usuario
Descripción:
El usuario (responsable del proyecto), elige la opción “Cronograma”, del menú principal
“Proyecto”, donde el sistema muestra para ingresar el código SNIP del proyecto y campos
para el respectivo registro de las fechas programadas mensuales, donde el usuario podrá
ingresar el cronograma de ejecución mensual valorizado en base al expediente técnico.
Observaciones: Ninguno
Historia de Usuario
51
Descripción:
El usuario (responsable del proyecto), elige la opción “Registro entrega terreno”, del
menú principal “Proyecto”, el sistema muestra para ingresar el código SNIP del proyecto y
campos para ingresar datos relevantes sobre la entrega de terreno.
Observaciones: Ninguno
Historia de Usuario
Descripción:
El usuario (responsable del proyecto), elige la opción “Registro de incidencia” del menú
principal de la página “Proyecto”, el sistema le presenta el formulario para ingresar el
código SNIP del proyecto y campos para registrar datos de incidencias ocurridos durante la
ejecución del proyecto.
Observaciones: Ninguno
Historia de Usuario
Descripción:
El usuario (responsable del proyecto), elige la opción “Avance físico”, del menú principal
“Proyecto”, el sistema muestra el formulario para ingresar el código SNIP del proyecto y
campos para registrar valorización del avance físico mensual del proyecto, cuya unidad de
52
medida es en soles.
Observaciones: Ninguno
Historia de Usuario
Descripción:
El usuario (responsable del proyecto), elegirá la opción de “Avance financiero”, del menú
principal “Proyecto”, el sistema muestra el formulario para ingresar el código SNIP y botón
actualizar, para visualizar el avance financiero desde la base de datos del Sistema Integrado
de Administración Financiera (SIAF), y verificar el avance financiero del proyecto.
Observaciones: Ninguno
Historia de Usuario
Descripción:
53
Observaciones: Ninguno
Historia de Usuario
Descripción:
Observaciones: Ninguno
Historia de Usuario
Descripción:
El sistema de información genera el reporte físico sobre el avance financiero del proyecto.
Observaciones: Ninguno
54
Historia de Usuario
Descripción:
Observaciones: Ninguno
Historia de Usuario
Descripción:
Observaciones: Ninguno
Historia de Usuario
55
Nombre historia: Registrar entrega al sector o entidad
Descripción:
El usuario (responsable del proyecto), elija la opción “Registrar entrega a entidad” del
menú principal de la página “Proyecto”, el sistema muestra campo para ingresar el código
SNIP del proyecto, y registrar datos relevantes de la entrega del proyecto al sector o entidad
correspondiente.
Historia de Usuario
Descripción:
Tabla Nº 4.18: Historia usuario. Mostrar comparativo físico y financiero de ejecución real con el
cronograma.
Historia de Usuario
56
Prioridad en negocio: Medio Riesgo en desarrollo: Bajo
Descripción:
Observaciones: Ninguno
Historia de Usuario
Descripción:
El usuario (administrador de sistema), registra datos del nuevo usuario, crea usuario y
contraseña inicial, así mismo los perfiles de quienes participan en forma directa con el
sistema durante la ejecución del proyecto.
Observaciones: Ninguno
ESFUERZO
Nº HISTORIA DE USUARIO PRIORIDAD RIESGO ITERACIÓN
(DÍAS)
57
Registrar designación del
3 Alto Medio 2 1
supervisor
Páginas .xhtml
Vista
(Richfaces, Primefaces, JSF)
Controladores
Controlador
(EJB)
Modelo
Persistencia base de
datos (JPA)
59
Figura Nº 4.3: Arquitectura técnica final. Diagrama de despliegue
60
TAREA DE INGENIERÍA
Descripción:
Observaciones: Ninguno
TAREA DE INGENIERÍA
Descripción:
TAREA DE INGENIERÍA
61
Número tarea de ingeniería: 1 Número historia de usuario: 2
Descripción:
Tabla Nº 4.24: Historia usuario. Registrar designación del responsable del proyecto.
TAREA DE INGENIERÍA
Descripción:
TAREA DE INGENIERÍA
62
Número tarea de ingeniería: 1 Número historia de usuario: 4
Descripción:
El usuario (responsable del proyecto), elige la opción “Proyecto”, del menú principal de la
página “Proyecto”, el sistema muestra la pantalla registro de proyecto para ingresar el código
SNIP del proyecto y el campo para registrar datos (Nombre proyecto, modo de ejecución,
número de meta, nombre de meta, costo directo, gastos generales, tiempo de
ejecución y ubicación del proyecto); si los datos del proyecto ya fue registrado
anteriormente, el sistema muestra el mensaje “código SNIP ya registrado, ingresa datos de
reformulación”, (Modo de ejecución, costo directo, gastos generales y tiempo de
ejecución), los cuales son variables en casos de la reformulación.
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto), elige la opción “Cronograma”, del menú principal de la
página “Proyecto”, el sistema muestra la pantalla para ingresar el código SNIP del proyecto, el
usuario ingresa el código SNIP, donde el sistema visualiza datos (tiempo de ejecución y total
presupuesto como la sumatoria de costo directo y gastos generales del proyecto) y campos
para el ingreso de avance físico y financiero actual (mensual) de acuerdo al expediente técnico.
Si el expediente técnico ha sido reformulado, el sistema permite el registro del cronograma de
acuerdo al tiempo y presupuesto ampliado.
63
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto, persona natural o jurídica), ingresa a la página reportes
del software web para brindar información operativa sobre los proyectos en ejecución del GRA,
selecciona el tipo de reporte “Cronograma avance físico y financiero”, e ingresa el código
SNIP, para generar el reporte solicitado.
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto), selecciona la opción “Registro entrega terreno” del
menú principal “Proyecto”, el sistema muestra en la pantalla para ingresar el código SNIP del
proyecto, Nº DNI y cargo del responsable quién hace la entrega de terreno; así mismo, el
usuario selecciona la fecha el cual marca el inicio de todo proyecto.
TAREA DE INGENIERÍA
64
Número tarea de ingeniería: 1 Número historia de usuario: 7
Descripción:
El usuario (responsable del proyecto), elige la opción “Registro de incidencia” del menú
principal de la página “Proyecto”, el sistema presenta el formulario para ingresar el código
SNIP del proyecto y campos para registrar los datos (nombre, causa, efecto, consecuencia
y fecha incidencia).
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto), elige la opción “Avance físico”, del menú principal
“Proyecto”, el sistema muestra datos del tiempo de ejecución y el total presupuesto
formulario; así mismo, para ingresar el código SNIP del proyecto y el campo para registrar el
avance físico (Avance físico mensual actual valorizado) del proyecto cuya unidad de medida es
en soles.
TAREA DE INGENIERÍA
65
Nombre tarea: Registrar avance financiero.
Descripción:
El usuario (responsable del proyecto), elegirá la opción de “Avance financiero” del menú
principal “Proyecto”, el sistema muestra el campo para ingresar el código SNIP del proyecto, el
usuario ingresa el código SNIP, el sistema visualiza datos del tiempo de ejecución y el total
presupuesto; así mismo, el sistema muestra el botón para actualizar y visualizar en la pantalla
el avance financiero mensual, a partir de la data registrada en el Sistema Integrado de
Administración Financiera.
TAREA DE INGENIERÍA
Nombre tarea: Verificar avance físico ingresado por el responsable del proyecto.
Descripción:
El usuario (supervisor del proyecto), elige la opción “Verificar avance físico”, del menú
principal de la página “Gerencia”, el sistema muestra en la pantalla para ingresar el código
SNIP del proyecto, el usuario ingresa el código SNIP, donde el sistema muestra el tiempo de
ejecución, total presupuesto del proyecto y el avance físico mensual valorizado para su
conformidad mensual del supervisor.
TAREA DE INGENIERÍA
Nombre tarea: Verificar avance financiero ingresado por el responsable del proyecto.
66
Tipo de tarea : Desarrollo Puntos estimados: 1
Descripción:
El usuario (supervisor del proyecto), elige la opción “Verificar avance financiero”, del menú
principal de la página “Gerencia”, el sistema muestra en la pantalla para ingresar el código
SNIP del proyecto, el usuario ingresa el código SNIP, donde el sistema muestra el tiempo de
ejecución, total presupuesto del proyecto y el avance financiero mensual para su conformidad
del supervisor.
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto, persona natural o jurídica), ingresa a la página Reportes
Proyectos, selecciona el tipo de reporte “Avance físico” e ingresa el código SNIP del proyecto
y el sistema permite generar reporte e imprime el avance físico mensual valorizado en tiempo
real.
El sistema de información genera el reporte físico sobre el avance físico del proyecto.
TAREA DE INGENIERÍA
67
Programador responsable: Emerson Neliño QUISPE HUAMÁN
Descripción:
El usuario (responsable del proyecto, persona natural o jurídica), ingresa a la página Reportes
Proyectos y selecciona tipo reporte “Avance financiero” e ingresa el código SNIP del
proyecto, donde el sistema permite generar reporte en tiempo real sobre el avance financiero
del proyecto.
El sistema de información genera un reporte físico sobre el avance financiero del proyecto de
inversión.
Tabla Nº 4.36: Historia usuario. Emitir reporte avance financiero.
TAREA DE INGENIERÍA
Descripción:
TAREA DE INGENIERÍA
Descripción:
68
El usuario (Presidente de la comisión liquidadora), podrá elegir la opción “verificar avance
físico final” del menú principal de la página, donde el sistema permite ingresar el código SNIP
del proyecto, para mostrar datos registrados del avance físico (mensuales) por el responsable
del proyecto, para su verificación y dar el visto bueno de su conformidad final.
TAREA DE INGENIERÍA
Descripción:
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto), elije la opción “Registrar entrega a entidad” del menú
principal de la página “Proyecto”, el sistema muestra campo para el ingreso del código SNIP
del proyecto, el usuario ingresa, donde el sistema presenta los campos para registrar datos
relevantes (nombre de la entidad quien hace la entrega el proyecto, DNI del
responsable de la entidad quién hace la entrega del proyecto, cargo del responsable
de la entidad quién hace la entrega del proyecto, nombre del sector quien recibe el
69
proyecto, DNI del responsable del sector quién recibe el proyecto, cargo del
responsable del sector quién recibe el proyecto y fecha de la entrega del proyecto).
TAREA DE INGENIERÍA
Descripción:
Tabla Nº 4.41: Historia usuario. Mostrar comparativo físico y financiero de ejecución real con el
cronograma.
TAREA DE INGENIERÍA
Descripción:
70
(actual acumulado y porcentaje) del cronograma en forma mensual.
Tabla Nº 4.42: Historia usuario. Mostrar comparativo físico y financiero de ejecución real con el
cronograma.
TAREA DE INGENIERÍA
Descripción:
El usuario (responsable del proyecto, supervisor del proyecto, responsables y/o secretaria de
Gerencias, presidente de la comisión liquidadora y CRREAETE), ingresa al sistema, el sistema
muestra la pagina “LOGIN”. El usuario ingresa el nombre de usuario y contraseña; selecciona
el botón “Iniciar sesión”, el sistema permite el acceso al perfil indicado, siempre y cuando
los datos ingresados sean los correctos, en caso contrario el sistema volverá a pedir los datos
correctos mostrando los mensajes de error “Ingrese un nombre de usuario y contraseña
correcta”.
TAREA DE INGENIERÍA
Descripción:
71
envía un mensaje de “Persona registrada con éxito”
Registrar designación del responsable del Registrar designación del responsable del
2
proyecto proyecto.
11 Emitir reporte avance físico en tiempo real Emitir reporte de avance físico.
72
Emitir reporte avance financiero en tiempo
12 Emitir reporte avance financiero.
real
TAREAS DE
Nº FECHA INICIO FECHA FIN PROGRAMADOR
INGENIERÍA
73
2 04/04/2012 05/04/2012 Emerson Neliño QUISPE HUAMÁN
Nº Nº
REQUISITO CASO DE PRUEBA (C.P.)
H.U. C.P.
75
Figura Nº 4.6: Interfaz crear usuario
76
Figura Nº 4.8: Interfaz designación del Responsable del proyecto
77
Figura Nº 4.10: Interfaz Registrar Proyecto
78
Figura Nº 4.12: Interfaz Registrar Incidencias Durante la Ejecución
79
Figura Nº 4.14: Interfaz Registrar Avance Físico
80
Figura Nº 4.16: Interfaz Verificar Avance Físico
81
Figura Nº 4.18: Interfaz Comparativo Avance Financiero
82
Figura Nº 4.20: Interfaz Comparativo Gráfico Avance Físico
83
Figura Nº 4.22: Interfaz Registrar Entrega a la Entidad y Sector
84
TARJETAS CLASE RESPONSABILIDAD Y COLABORACIÓN (CRC)
Para un diseño simple, se procede a definir tarjetas CRC, que permitan identificar las
clases, sus responsabilidades y las colaboraciones que realiza para una historia de
usuario y las tareas correspondientes, según se desarrolla en el capítulo II, sección
2.2.
CLASE: ExpTecnico
Colaboradores:
ExpTecnico
CRREAETE
Responsabilidades: Proyecto
IdCRREAETE
NumeroExpediente
UnidadEjecutora
TipoExpTecnico
CLASE: Gerencia
Colaboradores:
Gerencia
Responsabilidades:
ComisionLiquidadora
Designar comisión liquidadora (Presidente, Miembro y
Persona
Asesor)
Atributos:
Designar Responsable del Proyecto y Supervisor
IdGerencia
Iniciar sesión
CodPers
NombreGerencia
EstadoLaboral
85
CLASE: RespProyecto
Colaboradores:
RespProyecto
ComisionLiquidadora
Responsabilidades: Residente
IdCoordProyecto
IdRespMeta
CargoRespProyecto
CLASE: Residente
Responsabilidades:
Colaboradores:
Registrar proyecto
Residente
Registrar cronograma de ejecución
RespProyecto
Registrar entrega de terreno
Persona
Registrar incidencias durante la ejecución
Atributos:
Registrar avance físico
IdResidente
Registrar avance financiero
CodPers
Registrar entrega al sector o entidad
EstadoLaboral
Iniciar sesión
86
CLASE: RespMeta
Responsabilidades:
Colaboradores:
Registrar proyecto
RespMeta
Registrar cronograma de ejecución
RespProyecto
Registrar entrega de terreno
Persona
Registrar incidencias durante la ejecución
Atributos:
Registrar avance físico
IdRespMeta
Registrar avance financiero
CodPers
Registrar entrega al sector o entidad
EstadoLaboral
Iniciar sesión
CLASE: CoordProyecto
Responsabilidades:
Colaboradores:
Registrar proyecto
CoordProyecto
Registrar cronograma de ejecución
RespProyecto
Registrar entrega de terreno
Persona
Registrar incidencias durante la ejecución
Atributos:
Registrar avance físico
IdCoordProyecto
Registrar avance financiero
CodPers
Registrar entrega al sector o entidad
EstadoLaboral
Iniciar sesión
CLASE: RespObra
Responsabilidades: Colaboradores:
87
Registrar incidencias durante la ejecución Atributos:
Iniciar sesión
Colaboradores:
PresidenteComisionLiquidadora
ComisionLiquidadora
Responsabilidades:
Persona
Verificar proyecto final
Atributos:
Iniciar sesión
IdPresidenteComisionLiquidadora
CodPers
EstadoLaboral
CLASE: MiembroComisionLiquidadora(Contador)
Colaboradores:
IdMiembroComisionLiquidadora
ComisionLiquidadora
Responsabilidades:
Persona
Verificar proyecto final
Atributos:
Iniciar sesión
IdMiembroComisionLiquidadora
CodPers
EstadoLaboral
88
CLASE: Supervisor
Colaboradores:
Supervisor
ComisionLiquidadora
Responsabilidades:
Persona
Verificar proyecto
Atributos:
Iniciar sesión
IdSupervisor
CodPers
EstadoLaboral
CLASE: Sector
Colaboradores:
Sector
Proyecto
Persona
Atributos:
IdSector
Responsabilidades: NombreSector
IdPersResponsable
CargoRespSector
IdPersRespEntSector
NombreEntEntrega
CargoRespEntSector
FechaEntrega
CLASE: Proyecto
89
Colaboradores:
Proyecto
ComisionLiquidadora
Supervisor
EntregaTerreno
RespProyecto
Sector
ExpTecnico
Incidencia
Lugar
Cronograma
AvanceFisico
AvanceFinanciero
Atributos:
Responsabilidades:
IdProyecto
Listar entrega proyecto a la entidad pública
NomProyecto
NumMeta
NomMeta
ModoEjecucion
CostoDirecto
GastosGenerales
TotalPresupuesto
TiempoEjecucion
IdExpTecnico
IdLugar
IdComisionLiquidadora
IdSector
IdEntreTerreno
IdRespProyecto
IdSupervisor
90
FechaInicio
CLASE: AvanceFisico
Colaboradores:
AvanceFisico
ImagenAvanceFisico
Proyecto
Atributos:
IdAvanceFisico
ValAvanceFisicoActual
ValAvanceFisicoActualPorc
Responsabilidades:
ValAvanceFisicoAcumulado
Actualizar avance físico del proyecto
ValAvanceFisicoAcumuladoPorc
ValSaldoAvanceFísico
ValSaldoAvanceFisicoPorc
PanelImagen
NumDia
IdProyecto
Estado
Revision
CLASE: AvanceFinanciero
Colaboradores:
AvanceFinanciero
Responsabilidades: Proyecto
IdAvanceFinanciero
AvanceFinancieroActual
91
AvanceFinancieroActualPorc
AvanceFinancieroAcumulado
AvanceFinancieroAcumuladoPorc
SaldoAvanceFinanciero
SaldoAvanceFinancieroPorc
NumDia
IdProyecto
FuenteFinancia
Estado
Revision
CLASE: Incidencia
Colaboradores:
Incidencia
Proyecto
Atributos:
IdIncidencia
Responsabilidades:
NomIncidencia
Publicar Incidencias ocurridos durante la ejecución
Causa
Efecto
Consecuencia
FechaIncidencia
IdProyecto
CLASE: Cronograma
Colaboradores:
Responsabilidades:
Cronograma
Publicar cronograma
Proyecto
92
Atributos:
IdCronograma
ValAvanceFisicoActual
ValAvanceFisicoActualPorc
ValAvanceFisicoAcumulado
ValAvanceFisicoAcumuladoPorc
AvanceFinancieroActual
AvanceFinancieroActualPorc
AvanceFinancieroAcumulado
AvanceFinancieroAcumuladoPorc
NumDia
IdProyecto
Estado
FechaInicio
FechaFin
CLASE: EntregaTerreno
Colaboradores:
EntregaTerreno
Proyecto
Persona
Responsabilidades:
Atributos:
Listar datos entrega de terreno
IdEntregaTerreno
IdPers
CargoRespEntTerreno
Fecha
CLASE: ComisionLiquidadora
93
Colaboradores:
ComisionLiquidadora
PresidenteComisionLiquidadora
MiembroComisionLiquidadora
RespProyecto
Supervisor
Gerencia
Responsabilidades:
Proyecto
Verificar proyecto final
Atributos:
IdComisionLiquidadora
IdGerencia
IdPresidenteComisionLiquidadora
IdMiembroComisionLiquidadora
IdRespProyecto
IdSupervisor
CLASE: CRREAETE
Colaboradores:
CRREAETE
ExpTecnico
Persona
Responsabilidades:
Atributos:
Registrar expediente técnico
IdCRREAETE
EstadoLaboralRespCRREAETE
CodPers
EstCrreaet
CLASE: Lugar
94
Colaboradores:
Lugar
Proyecto
Atributos:
Responsabilidades: IdLugar
Codigo_departamento
Codigo_provincia
Codigo_distrito
Direccion
CLASE: Persona
Colaboradores:
Persona
PresidenteComisioLiquidadora
MiembroComisionLiquidadora
Gerencia
Supervisor
CRREAETE
Responsabilidades:
RespObra
Iniciar sesión
Sector
Residente
EntregaTerreno
Coordproyecto
RespMeta
Atributos:
IdPers
EstPers
ApellPater
95
ApellMater
Nombre
96
Figura Nº 4.25: Esquema físico de la base de datos para ejecución de proyectos GRA
97
Las tablas 4.70 y 4.71 muestran el código fuente de la conexión a la base de datos y
configuración de persistencia del Software Web Para Brindar Información Operativa
Sobre los Proyectos en Ejecución del GRA; las tablas 4.72, 4.73, 4.74, 4.75 y 4.76
muestran el código fuente para las clases entidad, de la historia de usuario “Registrar
cronograma de ejecución” y “Registrar Avance Físico”, para las clases “Cronograma”
y “AvanceFisico”, Método ProyectoDAOimpl (Cronograma y Avance Físico),
AvanceFisicoController y CompatativoFisicoController respectivamente.
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<connection-
url>jdbc:sqlserver://localhost\kuskan:1433;databaseName=proyecto</connection-url>
<driver>sqlserv</driver>
<pool>
<max-pool-size>30</max-pool-size>
</pool>
<security>
<user-name>sa</user-name>
<password>123456</password>
</security>
</datasource>
<drivers>
<xa-datasource-
class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
Tabla Nº 4.70: Código fuente. Conexión a la base de datos, configuración XML JBOSS.
98
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="version" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/KnetDS</jta-data-
source>
<class>com.pe.Model.AvanceFinanciero</class>
<class>com.pe.Model.AvanceFisico</class>
<class>com.pe.Model.Crreaete</class>
<class>com.pe.Model.ComisionLiquidadora</class>
<class>com.pe.Model.Contador</class>
<class>com.pe.Model.CoordProyecto</class>
<class>com.pe.Model.Cronograma</class>
<class>com.pe.Model.EntregaTerreno</class>
<class>com.pe.Model.ExpTecnico</class>
<class>com.pe.Model.Gerencia</class>
<class>com.pe.Model.Incidencia</class>
<class>com.pe.Model.IngCivil</class>
<class>com.pe.Model.Lugar</class>
<class>com.pe.Model.Proyecto</class>
<class>com.pe.Model.Residente</class>
<class>com.pe.Model.RespMeta</class>
<class>com.pe.Model.RespObra</class>
<class>com.pe.Model.RespProyecto</class>
<class>com.pe.Model.Sector</class>
<class>com.pe.Model.Supervisor</class>
<class>com.pe.Model.TipoOperacionAdmin</class>
<class>com.pe.Model.Departamento</class>
<class>com.pe.Model.DepartamentoPK</class>
<class>com.pe.Model.Distrito</class>
<class>com.pe.Model.DistritoPK</class>
<class>com.pe.Model.MenuGroup</class>
<class>com.pe.Model.MenuItem</class>
<class>com.pe.Model.MenuItemPK</class>
<class>com.pe.Model.Pais</class>
<class>com.pe.Model.Perfil</class>
<class>com.pe.Model.PermisosAdministrativos</class>
<class>com.pe.Model.PermisosAdministrativosPK</class>
<class>com.pe.Model.Persona</class>
<class>com.pe.Model.Provincia</class>
<class>com.pe.Model.ProvinciaPK</class>
<class>com.pe.Model.Usuario</class>
<properties>
<property name="eclipselink.jdbc.batch-writing"
value="JDBC"/>
</properties>
</persistence-unit>
</persistence>
package com.pe.Model;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
* @author Nel
*/
@Entity
@Table(name = "Cronograma")
@NamedQueries({
@NamedQuery(name = "Cronograma.findAll", query = "SELECT c FROM
Cronograma c"),
@NamedQuery(name = "Cronograma.findByIdCronograma", query = "SELECT c
FROM Cronograma c WHERE c.idCronograma = :idCronograma"),
@NamedQuery(name = "Cronograma.findByProyecto", query = "SELECT c FROM
Cronograma c WHERE c.proyecto.idProyecto = :proyecto and c.estado=:estado
order by c.numDia asc"),
@NamedQuery(name = "Cronograma.findByProyectoDesc", query = "SELECT c
FROM Cronograma c WHERE c.proyecto.idProyecto = :proyecto and
c.estado=:estado order by c.numDia desc"),
@NamedQuery(name = "Cronograma.findByNumDia", query = "SELECT c FROM
Cronograma c WHERE c.numDia = :numDia")})
public class Cronograma implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IdCronograma")
private Integer idCronograma;
@Column(name = "ValAvanceFisicoActual")
private BigDecimal valAvanceFisicoActual;
@Column(name = "ValAvanceFisicoActualPorc")
private BigDecimal valAvanceFisicoActualPorc;
@Column(name = "ValAvanceFisicoAcumulado")
private BigDecimal valAvanceFisicoAcumulado;
@Column(name = "ValAvanceFisicoAcumuladoPorc")
100
private BigDecimal valAvanceFisicoAcumuladoPorc;
@Column(name = "AvanceFinancieroActual")
private BigDecimal avanceFinancieroActual;
@Column(name = "AvanceFinancieroActualPorc")
private BigDecimal avanceFinancieroActualPorc;
@Column(name = "AvanceFinancieroAcumulado")
private BigDecimal avanceFinancieroAcumulado;
@Column(name = "AvanceFinancieroAcumuladoPorc")
private BigDecimal avanceFinancieroAcumuladoPorc;
@Column(name = "NumDia")
private Integer numDia;
@Column(name = "FechaInicio")
@Temporal(TemporalType.TIMESTAMP)
private Date fechaInicio;
@Column(name = "FechaFin")
@Temporal(TemporalType.TIMESTAMP)
private Date fechaFin;
@JoinColumn(name = "IdProyecto", referencedColumnName = "IdProyecto")
@ManyToOne
private Proyecto proyecto;
@Column(name = "Estado")
private Integer estado;
public Cronograma() {
}
@Override
public int hashCode() {
int hash = 0;
hash += (idCronograma != null ? idCronograma.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields
are not set
if (!(object instanceof Cronograma)) {
return false;
}
Cronograma other = (Cronograma) object;
if ((this.idCronograma == null && other.idCronograma != null) ||
(this.idCronograma != null &&
!this.idCronograma.equals(other.idCronograma))) {
return false;
}
return true;
}
103
@Override
public String toString() {
return "com.pe.Model.Cronograma[idCronograma=" + idCronograma +
"]";
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.pe.Model;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
*
* @author Nel
*/
@Entity
@Table(name = "AvanceFisico")
@NamedQueries({
@NamedQuery(name = "AvanceFisico.findAll", query = "SELECT a FROM
AvanceFisico a"),
@NamedQuery(name = "AvanceFisico.findByIdAvanceFisico", query = "SELECT
a FROM AvanceFisico a WHERE a.idAvanceFisico = :idAvanceFisico"),
@NamedQuery(name = "AvanceFisico.findByProyecto", query = "SELECT a
FROM AvanceFisico a WHERE a.proyecto.idProyecto = :id order by a.numDia
asc"),
@NamedQuery(name = "AvanceFisico.findByNumDia", query = "SELECT a FROM
AvanceFisico a WHERE a.numDia = :numDia")})
public class AvanceFisico implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
104
@Column(name = "IdAvanceFisico")
private Integer idAvanceFisico;
@Column(name = "ValAvanceFisicoActual")
private BigDecimal valAvanceFisicoActual;
@Column(name = "ValAvanceFisicoActualPorc")
private BigDecimal valAvanceFisicoActualPorc;
@Column(name = "ValAvanceFisicoAcumulado")
private BigDecimal valAvanceFisicoAcumulado;
@Column(name = "ValAvanceFisicoAcumuladoPorc")
private BigDecimal valAvanceFisicoAcumuladoPorc;
@Column(name = "ValSaldoAvanceFisico")
private BigDecimal valSaldoAvanceFisico;
@Column(name = "ValSaldoAvanceFisicoPorc")
private BigDecimal valSaldoAvanceFisicoPorc;
@Column(name = "NumDia")
private Integer numDia;
@Column(name = "Estado")
private Integer estado;
@Column(name = "revision")
private Boolean revision;
@JoinColumn(name = "IdProyecto", referencedColumnName =
"IdProyecto")
@ManyToOne
private Proyecto proyecto;
@OneToMany(mappedBy = "avanceFisico")
private List<ImagenAvanceFisico> imagenAvanceFisicoList;
public AvanceFisico() {
}
@Override
public int hashCode() {
int hash = 0;
hash += (idAvanceFisico != null ? idAvanceFisico.hashCode()
: 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id
fields are not set
if (!(object instanceof AvanceFisico)) {
return false;
}
AvanceFisico other = (AvanceFisico) object;
if ((this.idAvanceFisico == null && other.idAvanceFisico !=
null) || (this.idAvanceFisico != null &&
!this.idAvanceFisico.equals(other.idAvanceFisico))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.pe.Model.AvanceFisico[idAvanceFisico=" +
idAvanceFisico + "]";
}
107
@Override
public boolean saveCronograma(Cronograma crono, Proyecto proyecto) {
try {
crono.setProyecto(proyecto);
em.persist(crono);
return true;
} catch (Exception e) {
System.out.println("ERROROROR");
e.printStackTrace();
return false;
// TODO: handle exception
}
}
@Override
public boolean saveAvanceFisico(List<AvanceFisico> crono, Proyecto
proyecto) {
try {
for(AvanceFisico cronograma : crono){
cronograma.setProyecto(proyecto);
em.persist(cronograma);
}
return true;
} catch (Exception e) {
System.out.println("ERROROROR");
e.printStackTrace();
return false;
// TODO: handle exception
}
}
package com.pe.Controller;
import java.awt.Image;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.richfaces.event.FileUploadEvent;
import org.richfaces.model.UploadedFile;
import com.pe.Dao.ProyectoDao;
import com.pe.Model.AvanceFinanciero;
import com.pe.Model.AvanceFisico;
import com.pe.Model.Cronograma;
108
import com.pe.Model.ImagenAvanceFisico;
import com.pe.Model.Proyecto;
@ManagedBean(name = "fisicoController")
@SessionScoped
public class AvanceFisicoControler {
@EJB
private ProyectoDao controlProyectodao;
109
public UploadedFile getItem() {
return item;
}
return listaAvance;
}
110
public String getAvanceFisicoActual() {
return avanceFisicoActual;
}
111
public Proyecto getProyeto() {
return proyeto;
}
imagenAvance.setImagen(item.getData());
imagenAvance.setFecha(new Date());
listaImagenAvanceFisicos.add(imagenAvance);
} catch (Exception a) {
System.out.println("ERORR AL CARGAR LOS FICHEROS");
}
proyeto = controlProyectodao.findProyecto(codigoSnip.trim());
if (proyeto == null) {
mensaje = "Ingrese un código SNIP registrado
anteriormente";
proyeto = new Proyecto();
return;
}
listaAvance = controlProyectodao.findListaAvanceFisico(proyeto
.getIdProyecto());
if (listaAvance == null) {
listaAvance = new ArrayList<AvanceFisico>();
avanceFisicoAcumulado = "0.00";
saldo = proyeto.getPpto().toString();
int h = listaAvance.size();
listaCronograma =
controlProyectodao.findListaCronograma(proyeto
.getIdProyecto(),1);
Cronograma seleccion = null;
System.out.println("Avance2");
112
try {
seleccion = listaCronograma.get(h);
} catch (Exception e) {
mensaje = "Ya registró todos los avances físicos del
proyecto";
return;
}
System.out.println("Avance3");
dia = "" + seleccion.getNumDia();
.subtract(fisico.getValAvanceFisicoAcumulado()).toString();
avanceFisicoAcumulado = fisico.getValAvanceFisicoActualPorc()
.toString();
System.out.println("Avance4");
mensaje = "Registre el avance físico";
opcion = true;
opcioningreso = false;
}
dia = "";
avanceFisicoActual = "";
avanceFisicoAcumulado = "";
}
System.out.println("Avance 3");
avance.setValAvanceFisicoAcumulado(fisico.getValAvanceFisicoAcumulado
()
.add(avance.getValAvanceFisicoActual()));
114
avance.setValAvanceFisicoAcumulado(((proyeto.getPpto()).multiply(avan
ce
.getValAvanceFisicoActualPorc())).divide(new
BigDecimal(
"100.00")));
saldo=(proyeto.getPpto().subtract(avance.getValAvanceFisicoAcumulado(
))).toString();
avance.setRevision(false);
avance.setEstado(0);
avance.setValSaldoAvanceFisico(new
BigDecimal(saldo).setScale(2,
BigDecimal.ROUND_HALF_UP));
actual = new BigDecimal(saldo);
mensaje="Registros actualizados";
}
}
Tabla Nº 4.75: Código fuente. AvanceFisicoControler
115
package com.pe.Controller;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import org.primefaces.model.chart.LineChartSeries;
import com.pe.Dao.ProyectoDao;
import com.pe.Model.AvanceFisico;
import com.pe.Model.Cronograma;
import com.pe.Model.Proyecto;
import com.pe.Modeltables.ComparacionFisico;
@ManagedBean(name = "comparativoFisico")
@SessionScoped
public class ComparativoFisicoController {
@EJB
private ProyectoDao controlProyectodao;
116
try {
actual.set(0, 0);
estimado.set(0, 0);
} catch (Exception e) {
e.printStackTrace();
actual.set(0, 0);
estimado.set(0, 0);
System.out.println("OTRO ERROR");
// TODO: handle exception
}
int h = 3;
actual.set(compara.getDia(),
compara.getValorFisicoAcumulado());
estimado.set(compara.getDia(),
compara.getValorFisicoAcumuladoEstim());
} catch (Exception e) {
e.printStackTrace();
System.out.println("OTRO ERROR");
// TODO: handle exception
}
financiero.addSeries(actual);
financiero.addSeries(estimado);
return financiero;
}
int h = 0;
listaComparacion = new ArrayList<ComparacionFisico>();
ComparacionFisico comparacion;
opcion = true;
opcioningreso = false;
try {
AvanceFisico fisico = listaAvance.get(h);
comparacion.setValorfisicoactual(fisico
.getValAvanceFisicoActual());
comparacion.setValorfisicoactualPorc(fisico
.getValAvanceFisicoActualPorc());
comparacion.setValorFisicoAcumulado(fisico
.getValAvanceFisicoAcumulado());
comparacion.setValorFisicoAcumuladoPorc(fisico
.getValAvanceFisicoAcumuladoPorc());
} catch (Exception e) {
comparacion.setValorfisicoactual(new
BigDecimal("0.00"));
comparacion.setValorfisicoactualPorc(new
BigDecimal("0.00"));
comparacion.setValorFisicoAcumulado(new
BigDecimal("0.00"));
comparacion.setValorFisicoAcumuladoPorc(new
BigDecimal("0.00"));
}
listaComparacion.add(comparacion);
h++;
}
119
}
}
5 1 CronogramaController Satisfactorio
8 1 AvanceFisicoControler Satisfactorio
9 1 AvanceFinanControler Satisfactorio
11 1 ReporteController Satisfactorio
12 1 ReporteController Satisfactorio
1 ComparativoFisicoController Satisfactorio
16
2 ComparativoFinanController Satisfactorio
120
8 1 Registrar avance físico Satisfactorio
Nº CASO PRUEBA 1
ACTIVIDAD
Descripción de datos de
Usuario, password.
entrada
RESULTADOS
Nº CASO PRUEBA 2
ACTIVIDAD
Descripción de datos de
Código SNIP del proyecto.
entrada
RESULTADOS
121
Tabla Nº 4.81: Reporte de prueba de aceptación. Mostrar comparativo avance físico real
ejecutado vs avance físico cronogramado de ejecución de proyectos del GRA.
Nº CASO PRUEBA 3
ACTIVIDAD
Descripción de datos de
Código SNIP del proyecto.
entrada
RESULTADOS
Tabla Nº 4.82: Reporte de prueba de aceptación. Mostrar comparativo avance financiero real
ejecutado vs avance financiero cronogramado de ejecución de proyectos del GRA.
Nº CASO PRUEBA 4
ACTIVIDAD
Descripción de datos de
Código SNIP, seleccionar tipo de reporte Avance físico.
entrada
RESULTADOS
Nº CASO PRUEBA 5
122
Propósito Imprimir avance financiero
ACTIVIDAD
Descripción de datos de
Código SNIP, seleccionar tipo de reporte Avance financiero.
entrada
RESULTADOS
123