Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MANUAL DE SOFTWARE
SALTOS MONSTER
Nombres:
Clavón Ricardo
Ponce John
Taday Kevin
Tutor
Ing. Eduardo Mauricio Campaña Ortega
MIS.MDU.CCNA.CCIA.
PhD. (c) Ingeniería de Software
PhD. (c) Seguridad Información
Fecha
15/09/2020
1 MANUAL DE USUARIO SOFTWARE SALTOS
MONSTER
CASO DE ESTUDIO........................................................................................................................4
1. Introducción.........................................................................................................................4
2. Propósito..............................................................................................................................4
3. Diseño del diagrama de Componentes.................................................................................5
2 Agregar Servidor...................................................................................................................8
4. Conexión desde Servidor Payara con la base de datos creada...........................................10
5. Creación del proyecto........................................................................................................13
6. Creación de la Persistencia.................................................................................................20
7. Creación de controlador.....................................................................................................25
8. Configuración de la capa de la vista...................................................................................30
9. Ejecución del Proyecto.......................................................................................................82
9.1. Módulo de Seguridad................................................................................................82
9.2. Módulo de Personal..................................................................................................84
9.3. Módulo de Saltos.......................................................................................................86
9.4. Módulo de Finanzas...................................................................................................87
8. Conclusiones y Recomendaciones......................................................................................90
2.1 9.1 Conclusiones............................................................................................................90
2.2 9.2 Recomendaciones...................................................................................................90
2.3 9.3 Referencias bibliográficas........................................................................................90
ÍNDICE DE ILUSTRACIONE
1
Ilustración 1Vista Principal Power Designer....................................................................5
Ilustración 2Seleccion de Proyecto...................................................................................5
Ilustración 3 Estructuras Básicas.......................................................................................5
Ilustración 4Interfaz Grafica..............................................................................................6
Ilustración 5 Capa de Negocios.........................................................................................6
Ilustración 6 Capa de datos................................................................................................7
Ilustración 7Diagrama Final..............................................................................................7
Ilustración 8Añadir Servidor.............................................................................................8
Ilustración 9 Instancia de Payara Server...........................................................................8
Ilustración 10 Lugar de instancia......................................................................................9
Ilustración 11Locación de Dominio..................................................................................9
Ilustración 12 Comenzar Servidor...................................................................................10
Ilustración 13 Interfaz Payara..........................................................................................10
Ilustración 14 Pools de conección...................................................................................11
Ilustración 15 Ingreso Datos Pool...................................................................................11
Ilustración 16 Propiedades de conexión..........................................................................11
Ilustración 17 Ping Conexión..........................................................................................12
Ilustración 18 Recursos Payara.......................................................................................12
Ilustración 19 Datos llenos JDBC...................................................................................12
Ilustración 20 Nuevo Proyecto........................................................................................13
Ilustración 21Selección de proyecto................................................................................13
Ilustración 22 Locación del Proyecto..............................................................................14
Ilustración 23 Selección de servidor................................................................................14
Ilustración 24 Selección de Frameworks.........................................................................15
Ilustración 25 Asignacion de JARS.................................................................................15
Ilustración 26 Configuracion de hibernate......................................................................16
Ilustración 27 Creación de Hibernate Reverse Engineering Wizzard.............................16
Ilustración 28Selección del nombre de HREW...............................................................16
Ilustración 29 Selección de las tablas de la base de datos...............................................17
Ilustración 30 Creación de un paquete nuevo..................................................................17
Ilustración 31 Creación de Mapeo de Hibernate.............................................................18
Ilustración 32 Configuración de mapeo..........................................................................18
Ilustración 33 Creación de archivos POJOs....................................................................19
Ilustración 34 Creación de persistencia...........................................................................20
Ilustración 35Estructura archivos persistencia................................................................23
Ilustración 36 Creación de Hibernate Util.......................................................................25
Ilustración 37 Selección de nombre HibernateUtil.........................................................25
Ilustración 38 Estructura de los paquetes........................................................................25
Ilustración 39 Estructura de los archivos Bean...............................................................26
Ilustración 40 Archivo de Configuración XML..............................................................31
Ilustración 41Creación de paquete App..........................................................................33
Ilustración 42 Creación del template...............................................................................33
Ilustración 43Vista Gestionar Opciones..........................................................................82
Ilustración 44 Vista Gestionar Usuarios..........................................................................82
Ilustración 45Vista Administración de Perfiles...............................................................82
Ilustración 46 Vista agregar Usuarios.............................................................................83
2
Ilustración 47Vista Asignar Permisos a Perfil.................................................................83
Ilustración 48 Vista Asignar Perfiles a Usuarios.............................................................84
Ilustración 49 Vista Visor de Permisos...........................................................................84
Ilustración 50 Vista Usuarios por Perfil..........................................................................84
Ilustración 51 Vista Administración de Personas............................................................84
Ilustración 52 Vista Administración de paracaidistas.....................................................85
Ilustración 53 Vista Administración de la Formación de paracaidistas..........................85
Ilustración 54 Vista Administración de Cursos...............................................................85
Ilustración 55 Vista Agregar Personas............................................................................86
Ilustración 56 Vista Agregar Paracaidistas......................................................................86
Ilustración 57Vista Administración de Saltos.................................................................86
Ilustración 58 Vista Administración de Servicios Adicionales.......................................87
Ilustración 59 Vista administración de Vuelos................................................................87
Ilustración 60 Vista Administración de aeronaves..........................................................87
Ilustración 61 Vista administración de la Empresa.........................................................88
Ilustración 62 Vista Administración de Forma de Pago..................................................88
Ilustración 63 VIsta Adminsitración de Descuentos.......................................................88
Ilustración 64 Vista Agregar Facturas.............................................................................89
Ilustración 65 Vista Ver Facturas....................................................................................89
Ilustración 66 Vista Administración de Pedidos.............................................................89
ÍNDICE DE TABLAS
Tabla 1 Codificación DAO Genérico..............................................................................20
Tabla 2 Codificación DAOSalto.....................................................................................24
Tabla 3 Codificación Bean de controlador de aeronave..................................................26
Tabla 4 Codificación web.xml........................................................................................31
Tabla 5 Codificación template.xhtml..............................................................................34
Tabla 6 Codificación Vista Factura.................................................................................35
Tabla 7 Codificación Agregar Persona............................................................................36
Tabla 8 Codificación de Asignar permisos.....................................................................47
Tabla 9 Codificación Administrar Perfiles......................................................................51
Tabla 10 Codificación Agregar Factura..........................................................................56
3
CASO DE ESTUDIO
La empresa de paracaidismo Monster necesita una aplicación o programa que almacene los
datos de los paracaidistas tanto en modalidad tándem como en modalidad libre que son los
dos tipos de servicio de salto que se ofrece. Para esto la empresa cuenta con una avioneta
cesnna 206 la cual tiene una capacidad de 5 personas sin incluir al piloto. Las operaciones se
las realiza los fines de semana en horario de 10am hasta la caída del sol.
Salto tándem es una modalidad de salto en paracaídas en el cual el un instructor lleva anclado
a su cuerpo mediante arnés a una persona o cliente la cual disfruta completamente del salto el
instructor es el que realiza todo el procedimiento
Salto libre solo es una modalidad de paracaidismo en la cual una persona salta de una
aeronave en movimiento de forma sola es decir realiza el procedimiento de apertura y
aterrizaje de su paracaídas de manera individual.
Como servicios adicionales se cuenta con camarógrafos externos o extras que saltan del avión
con los tándems y graban todo el salto. (Puede ser considerado como)
Los costos y las ubicaciones se detallan a continuación: tándem 308 *varia en caso de
promociones o descuentos, paracaidistas solos depende el salto en el que se suban 60, 50, 40
adicional el camarógrafo externo cuesta 70, la renta del equipo para los paracaidistas solos 30.
Dos tándems (cuatro personas, dos instructores y dos clientes) y un paracaidista total
5, en este caso precio tándem valor 308 y paracaidista solo 40
Un tándem (dos personas un instructor y un cliente) y tres paracaidistas totales 5, en
este caso precio tándem valor 308 y paracaidistas solos 50
Cinco paracaidistas solos en este caso precio paracaidista solo 60
1. Introducción
Este documento contiene indicaciones generales que un usuario debe tener para poder
manejar el software Saltos Monster.
2. Propósito
El propósito principal del presente documento es que el usuario tenga una documento que
guíe los procedimientos necesarios para poder usar el software Saltos Monster , este
documento está construido tomando en cuenta todos las situaciones que un usuario puede
tener para manejar dicho sistema
4
3. Diseño del diagrama de Componentes
1. Abrimos el programa Power Designer.
5
Ilustración 4Interfaz Grafica
5. En la capa de negocio
6
6. En la capa de datos
7
2 Agregar Servidor.
Dentro de la ventana “Services” de Netbeans, debe seleccionar “Servers”, click derecho “Add
Server”.
En este caso, se va a trabajar con un servidor Payara, así que se debe seleccionar y presionar
en “Next”.
8
A continuación, se debe colocar la dirección en la cual se encuentran todos los archivos del
servidor, y va a funcionar en “Local Domain”, después presionar “Next”.
En la siguiente ventana, debe verificar que funcione con domain1 y el resto de los campos se
deben dejar en blanco de preferencia, presionar “Finish”.
9
De esta manera, el servidor ya se encuentra listo para funcionar y ahora debe arrancar. Click
derecho sobre el servidor de Payara y presionar “Start”.
10
Ilustración 14 Pools de conección
Presionar New, esto permite crear un nuevo hilo de conexión mediante JDBC, después
presionar “Next”. Asignar un nombre a la conexión. En este caso será “Camiones” y en
Resource Type; se debe seleccionar javax.sql.DataSource. En Database Driver Vendor;
seleccionar MySql que es el gestor de base de datos que usaremos para el presente proyecto.
En la siguiente ventana colocar los 4 parámetros que se muestran en la imagen. Y llenar los
campos según las credenciales de la base de datos. Presionar Save.
Para verificar si la conexión es exitosa, se debe abrir el pool que se acabo de crear y hacer ping
a la base de datos.
11
Ilustración 17 Ping Conexión
Ahora, se debe crear un recurso de JDBC, nos dirigimos a JDBC RESOURCES y presionamos
new.
Le damos un nombre y seleccionamos el pool de conexión antes creado, esto facilita las cosas
ya que la conexión con la base será mucho mas transparente que al realizarla desde Netbeans.
Presionamos Save.
12
5. Creación del proyecto.
Seleccionamos File->New Project
13
Le asignamos un nombre, en este caso WebAppSaltos.
Escogemos los frameworks a utilizar en este caso JavaServer Faces e Hibernate 4.3.1 y
terminamos la creación.
14
Ilustración 24 Selección de Frameworks
Se acoplan los JARS a utilizar que fueron Primefaces 8.0 y mysql jdb 8.0 con el tema Nova-light
Creamos el archivo de configuración para hibernate con las propiedades de la base de datos
como se presenta en la ilustracion 26
15
Ilustración 26 Configuracion de hibernate
Creamos el archivo hibernate reveng para extraer los nombres de las tablas de la BBDD
16
Añadimos las tablas al reveng a mapearse
17
Creamos los archivos POJOS en los cuales se creara los archivos .hbm y .java de cada tabla de la
base de datos.
18
Ilustración 33 Creación de archivos POJOs
19
6. Creación de la Persistencia.
Creamos una clase abstracta para manejar sintaxis DML de la base de datos en la cual
llamaremos DAO genérico
A continuación se muestra la creación de un DAO genérico que nos servirá como plantilla para
crear los demás.
Session session;
try {
20
sesion = HibernateUtil.getSessionFactory().openSession();
sesion.beginTransaction();
sesion.save(entidad);
sesion.getTransaction().commit();
guardado=true;
} catch (Exception e) {
System.out.println(e.getMessage());
sesion.getTransaction().rollback();
} finally {
if (sesion != null) {
sesion.close();
}
}
return guardado;
}
try {
sesion = HibernateUtil.getSessionFactory().openSession();
t = sesion.beginTransaction();
String hql = "FROM "+clase.getName();
lista = sesion.createQuery(hql).list();
t.commit();
}catch(Exception e) {
t.rollback();
}finally{
if (sesion != null) {
sesion.close();
}
}
return lista;
}
22
return result;
}
return lista;
}
return result;
}
23
A continuación se muestra la creación de un DAO que extendera de DAO Generico en este
caso sera de la entidad salto y asi mismo se debe realizar con las demas entidades.
package ec.edu.saltos.persistencia;
import ec.edu.saltos.modelo.Salto;
import java.util.List;
public class DAOSalto extends DAOGenerico<Salto, Integer>{
public DAOSalto() {
super(Salto.class);
}
24
Creamos el archivo para manejar las sesion de hibernate que se llamara hibernate util.java y
que se genera de la siguiente manera:
Le damos en finish
7. Creación de controlador
Creamos los paquetes de controlador para cada subsistema
25
Manejo de la aplicación con sus controladores
A continuación se muestra un ejemplo del Managed Bean de aeronave que de igual manera se
configuraran para las demás clases.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ec.edu.saltos.controlador.app;
import ec.edu.saltos.controlador.seguridad.*;
import ec.edu.saltos.config.EstadosConfig;
import ec.edu.saltos.controlador.FiltroAcceso;
import ec.edu.saltos.modelo.Aeronave;
import ec.edu.saltos.modelo.Persona;
import ec.edu.saltos.persistencia.DAOAeronave;
import ec.edu.saltos.persistencia.DAOPersona;
import ec.edu.saltos.util.FechaUtil;
import ec.edu.saltos.util.PrimeUtiles;
import ec.edu.saltos.validaciones.Cedula;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Logger;
import java.util.logging.Level;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
26
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;
/**
*
* @author kalex
*/
@ManagedBean
@ViewScoped
public class BeanAeronave extends FiltroAcceso implements Serializable{
/**
* Creates a new instance of BeanPersona
*/
public BeanAeronave() {
super(FacesContext.getCurrentInstance().getExternalContext());
}
@PostConstruct
public void init(){
formatoFecha="si";
obtenerAeronaves();
}
try{
if(dao.eliminar(aeronaveSeleccionada)){
limpiarAeronave();
PrimeUtiles.mostrarMensaje(FacesMessage.SEVERITY_INFO, "Info: ", "Se elimino
correctamente");
PrimeUtiles.primeExecute("PF('wv-actualizar').show();");
return aeronaveSeleccionada;
}
PrimeUtiles.primeExecute("PF('wv-archivar').show();");
}
29
public void limpiarAeronave() {
aeronaveSeleccionada = new Aeronave();
30
Ilustración 40 Archivo de Configuración XML
1. Face-config.xml
2. Beans.xml
3. Footer.xhtml
4. Menú.xhtml
5. Template.xhtml
6. Topbar.xhtml
<!--Filtro de Páginas-->
<error-page>
<error-code>404</error-code>
<location>/AppExceptionHandler</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/AppExceptionHandler</location>
</error-page>
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/AppExceptionHandler</location>
32
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/publico/error.xhtml</location>
</error-page>
<error-page>
<exception-type>javax.faces.FacesException</exception-type>
<location>/publico/error.xhtml</location>
</error-page>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/publico/vista-caducada.xhtml</location>
</error-page>
</web-app>
Dar clic en web Pages y creamos las carpetas para las vistas
33
Tabla 5 Codificación template.xhtml
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pv="http://primefaces.org/paradise">
<div class="over-color-negro"/>
<!--<div class="over-color-azul"/>-->
</div>
<div class="nano">
</ui:composition>
34
Cada vista es controlada por un Bean, la vista se crea de acuerdo a los requerimientos del
diseño.
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pv="http://primefaces.org/paradise">
<div class="over-color-negro"/>
<!--<div class="over-color-azul"/>-->
</div>
<div class="nano">
</ui:composition>
35
Codificación de agregar persona
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/template.xhtml"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<ui:define name="content">
</div>
<div class="ui-g-4" style="text-align: right !important" >
<p:clock pattern="HH:mm:ss dd-MM-yyyy" />
</div>
</div>
37
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/template.xhtml"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<ui:define name="content">
</div>
<div class="ui-g-4" style="text-align: right !important" >
<p:clock pattern="HH:mm:ss dd-MM-yyyy" />
</div>
</div>
</h:form>
</div>
</div>
</p:panel>
</h:form>
</div>
<f:facet name="sourceCaption">Usuarios</f:facet>
<f:facet name="targetCaption">Perfil:
#{beanAsignarPerfiles.perfilSeleccionado.perfilNombre}</f:facet>
<p:column style="width:15%">
<!--<h:graphicImage
name="showcase/images/themeswitcher/themeswitcher-{usuario.idUsuarioAcceso}.png"
alt="{usuario.usrAccesoNombre}" styleClass="ui-theme"/>-->
<p:graphicImage name="images/avatar.png" library="paradise-layout"
style="width: 85%"/>
</p:column>
<p:column style="width:85%;">
<h:outputText value="#{usuario.usrAccesoNombre}" />
</p:column>
</p:pickList>
</h:form>
</p:panel>
</div>
</div>
</div>
<!--dialogs-->
</ui:define>
</ui:composition>
41
Codificación de administrar Perfiles
42
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/template.xhtml"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<ui:define name="content">
</div>
<div class="ui-g-4" style="text-align: right !important" >
<p:clock pattern="HH:mm:ss dd-MM-yyyy" />
</div>
</div>
43
<div class="ui-g">
<div class="ui-g-12">
<p:selectOneMenu id="som-perfil"
value="#{beanAsignarPerfiles.perfilSeleccionado}"
converter="perfilConverter" immediate="true"
autoWidth="false" required="true" effect="fade">
<f:selectItem noSelectionOption="true" itemLabel="Seleccionar
Perfil ..." itemValue="#{null}" />
<f:selectItems value="#{beanAsignarPerfiles.listaPerfiles}" var="perfil"
itemLabel="#{perfil.perfilNombre}" itemValue="#{perfil}"/>
<p:ajax event="itemSelect"
listener="#{beanAsignarPerfiles.actualizarPermisosPerfil}" update="som-perfil :form-
asignar:PojoPickList" />
</p:selectOneMenu>
</div>
</div>
</p:panel>
</h:form>
</div>
44
actionListener="#{beanAsignarPerfiles.preparaRetirarPerfil()}"
icon="fa fa-trash-o" styleClass="red-light-btn"
disabled="#{empty beanAsignarPerfiles.usuariosGlobal.target}"
value="Retirar Perfil" update="pd-eliminar-entidad" />
</div>
</div>
</p:panel>
</h:form>
</div>
<f:facet name="sourceCaption">Usuarios</f:facet>
<f:facet name="targetCaption">Perfil:
#{beanAsignarPerfiles.perfilSeleccionado.perfilNombre}</f:facet>
45
update="pg-notificacion"/>
<p:column style="width:15%">
<!--<h:graphicImage
name="showcase/images/themeswitcher/themeswitcher-{usuario.idUsuarioAcceso}.png"
alt="{usuario.usrAccesoNombre}" styleClass="ui-theme"/>-->
<p:graphicImage name="images/avatar.png" library="paradise-layout"
style="width: 85%"/>
</p:column>
<p:column style="width:85%;">
<h:outputText value="#{usuario.usrAccesoNombre}" />
</p:column>
</p:pickList>
</h:form>
</p:panel>
</div>
</div>
</div>
<!--dialogs-->
46
right:5px" />
</ui:repeat>
</h:panelGrid>
</h:form>
</p:dialog>
47
</div>
<div class="ui-g-12 textAlCenter">
<p:commandButton value="RETIRAR EL PERFIL"
actionListener="#{beanAsignarPerfiles.retirarPerfil()}"
icon="fa fa-trash-o" update=":form-asignar:PojoPickList :f-asignar pg-
notificacion" />
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
48
Codificación de Agregar Factura
49
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/template.xhtml"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<ui:define name="content">
</div>
<div class="ui-g-4" style="text-align: right !important" >
<p:clock pattern="HH:mm:ss dd-MM-yyyy" />
</div>
</div>
50
<p:fieldset legend="Datos Emisor" toggleable="true" toggleSpeed="500">
<h:form id="formEmisor">
<h:panelGroup id="display" style="border:0px none;background:none">
<p:panelGrid columns="4" rendered="#{beanPedido.facturaSeleccionada !
= null}" style="border:0px none;background:none" >
51
<p:outputLabel for="olcEmi" ><b>Obligado a llevar contabilidad:
</b></p:outputLabel>
<h:outputText id="olcEmi" class="ancho-columna
#{estiloUtiles.toStyleLicencia(beanPedido.infoEmpresa.obligadoLlevarContabilidad)}"
value="#{estiloUtiles.toValueLicencia(beanPedido.infoEmpresa.obligadoLlevarContabilidad)}
"/>
</p:panelGrid>
</h:panelGroup>
</h:form>
</p:fieldset>
<h:panelGroup id="display"
rendered="#{beanPedido.permiteIngresarDatosClientes}">
<h:panelGrid columns="3" cellpadding="5" style="display: flex;justify-
52
content: center;">
<!--
<p:selectOneRadio id="rbCliente"
value="{beanPedido.estadoTipoCliente}" unselectable="true">
<f:selectItem itemLabel="Cliente Nuevo" itemValue="nuevo" />
<f:selectItem itemLabel="Cliente Existente" itemValue="existente" />
<p:ajax listener="{beanPedido.actualizarEstadoTipoCliente}"
event="valueChange" update="formCliente"/>
</p:selectOneRadio>
-->
53
<p:outputLabel value="Teléfono:" for="telUsr"/>
<p:inputText id="telUsr" value="#{beanPedido.telefono}"
disabled="#{!beanPedido.permiteCamposDatosClientes}"/>
<p:message for="telUsr"/>
<h:form id="formDetalleFactura">
<div class="ui-g-4 ui-fluid contact-form">
<p:panel header="Acciones" style="min-height:100px">
<div class="ui-g">
54
<div class="ui-g-12">
<!—Creacion de boton agregar pedido -->
<p:commandButton actionListener="#{beanPedido.agregarPedido}"
icon="fa fa fw fa-check-circle" update="pg-notificacion
formDetalleFactura:display :formDetalleAgregado:dt-entidad"
value="Agregar Pedido" validateClient="true"/>
</div>
</div>
</p:panel>
</div>
<div class="ui-g-8">
<h:panelGroup id="display">
<p:tabView>
<p:tab id="tabVue" title="Vuelo">
<h:panelGrid columns="3" cellpadding="10">
55
</p:selectOneMenu>
<p:message for="objVue"/>
56
itemValue="#{salto}" />
<p:ajax event="change"
listener="#{beanPedido.actualizarSalto()}" update="costo" />
</p:selectOneMenu>
<p:message for="objSalto"/>
</h:panelGrid>
</p:tab>
57
</p:selectOneMenu>
<p:message for="objPerCmb"/>
itemLabel="#{paracaidista.usuarioAcceso.persona.perNombres}
58
#{paracaidista.usuarioAcceso.persona.perApellidos}"
itemValue="#{paracaidista}" />
<p:ajax event="change"
listener="#{beanPedido.actualizarParacaidista()}" update="tipPar licPar efPar"/>
</p:selectOneMenu>
<p:message for="objPara"/>
</h:panelGrid>
</p:tab>
59
effect="fade" panelStyle="width:175px" style="min-
width: 100%;"
autoWidth="false"
converter="servicioAdicionalConverter"
required="true" requiredMessage="Campo
Obligatorio">
<f:selectItem noSelectionOption="true"
itemLabel="Selecciona..." itemValue="#{null}"/>
<f:selectItems value="#{beanPedido.listaServiciosAdicionales}"
var="servicio"
itemLabel="#{servicio.serNombre}"
itemValue="#{servicio}" />
<p:ajax event="change"
listener="#{beanPedido.actualizarServicio()}" update="descriSer cosSer resSer"/>
</p:selectOneMenu>
<p:message for="objSeA"/>
60
title="Nombre" required="true"
requiredMessage="Nombre de usuario Obligatorio"
disabled="true"/>
<p:message for="resSer"/>
</h:panelGrid>
</p:tab>
61
<p:message for="descriDes"/>
</h:panelGrid>
</p:tab>
</p:tabView>
</h:panelGroup>
</div>
</h:form>
62
sortBy="#{pedido.salto.tipoSalto}">
<h:outputText value="#{pedido.salto.tipoSalto}" />
</p:column>
63
<p:commandButton id="editButton" value="Editar"
class="espacio-btn" rendered="false"
icon="ui-icon-pencil"
actionListener="#{beanPedido.preparaActualizar}"
disabled="#{empty beanPedido.pedidoSeleccionado}"
update=":EditForm"/>
</f:facet>
</p:dataTable>
</h:form>
</p:panel>
</div>
</div>
</p:fieldset>
<p:fieldset legend="Pago">
<h:form id="formPago">
<h:panelGrid columns="3" cellpadding="5" style="display: flex;justify-
content: center;" >
64
itemValue="#{null}"/>
<f:selectItems value="#{beanPedido.listaFormasPago}"
var="pago"
itemLabel="#{pago.pagoNombre}"
itemValue="#{pago}" />
<p:ajax event="change"
listener="#{beanPedido.actualizarFormaPago()}"/>
</p:selectOneMenu>
<p:message for="objFoP"/>
</h:panelGrid>
65
</h:form>
</p:fieldset>
<p:fieldset legend="Confirmación">
<h:form id="formOpciones">
<div class="ui-g">
<div class="ui-g-12 ui-md-6 ui-lg-3"></div>
<div class="ui-g-12 ui-md-6 ui-lg-3" style="display: flex;justify-content:
center;">
<h:panelGrid columns="1" cellpadding="5">
<p:commandButton actionListener="#{beanPedido.agregarFactura}"
icon="fa fa fw fa-check-circle" update="pg-notificacion
formDetalleFactura:display "
value="Generar Factura" validateClient="true"/>
</h:panelGrid>
</div>
<div class="ui-g-12 ui-md-6 ui-lg-3" style="display: flex;justify-content:
center;">
<h:panelGrid columns="1" cellpadding="5">
<p:commandButton actionListener="#{beanPedido.agregarPedido}"
styleClass="red-light-btn espacio-btn"
icon="fa fa-times-circle" update="pg-notificacion
formDetalleFactura:display "
value="Cancelar" validateClient="true"/>
</h:panelGrid>
</div>
<div class="ui-g-12 ui-md-6 ui-lg-3"></div>
</div>
</h:form>
</p:fieldset>
</p:fieldset>
</div>
</div>
<!--dialogs-->
66
<p:dialog header="Foto" widgetVar="wv-mostrar-foto" modal="true"
showEffect="fade" hideEffect="fade" resizable="false">
<h:form id="FotoForm" style="text-align:center;">
<p:panelGrid columns="2" rendered="#{not empty
beanPedido.pedidoSeleccionado}" columnClasses="label,value">
<f:facet name="header">
<!--<p:graphicImage
name="demo/images/car/{beanPedido.pedidoSeleccionado.brand}-big.gif"/> -->
<p:graphicImage name="images/login/secure.png" library="paradise-
layout" />
</f:facet>
67
100%;"
autoWidth="false" converter="saltoConverter"
required="true" requiredMessage="Campo Obligatorio">
<f:selectItem noSelectionOption="true" itemLabel="Selecciona..."
itemValue="#{null}"/>
<f:selectItems value="#{beanPedido.listaSaltos}"
var="salto"
itemLabel="#{salto.tipoSalto}"
itemValue="#{salto}" />
<p:ajax event="change" listener="#{beanPedido.actualizarSalto()}" />
</p:selectOneMenu>
<p:message for="objSalto"/>
</h:panelGrid>
</p:tab>
68
<p:selectOneMenu id="objVue"
value="#{beanPedido.pedidoSeleccionado.vuelo}" title="Descuento"
effect="fade" panelStyle="width:175px" style="min-width:
100%;"
autoWidth="false" converter="vueloConverter"
required="true" requiredMessage="Campo Obligatorio">
<f:selectItem noSelectionOption="true" itemLabel="Selecciona..."
itemValue="#{null}"/>
<f:selectItems value="#{beanPedido.listaVuelos}"
var="vuelo"
itemLabel="#{vuelo.idVuelo}"
itemValue="#{vuelo}" />
<p:ajax event="change" listener="#{beanPedido.actualizarVuelo()}"
update="aer piloto"/>
</p:selectOneMenu>
<p:message for="objVue"/>
</h:panelGrid>
</p:tab>
69
<p:outputLabel value="Nombre Paracaidista:" for="objPara" />
<p:selectOneMenu id="objPara"
value="#{beanPedido.pedidoSeleccionado.paracaidista}" title="Persona"
effect="fade" panelStyle="width:175px" style="min-width:
100%;"
autoWidth="false" converter="paracaidistaConverter"
required="true" requiredMessage="Campo Obligatorio">
<f:selectItem noSelectionOption="true" itemLabel="Selecciona..."
itemValue="#{null}"/>
<f:selectItems value="#{beanPedido.listaParacaidistas}"
var="paracaidista"
itemLabel="#{paracaidista.usuarioAcceso.persona.perNombres}
#{paracaidista.usuarioAcceso.persona.perApellidos}"
itemValue="#{paracaidista}" />
<p:ajax event="change"
listener="#{beanPedido.actualizarParacaidista()}" update="tipPar licPar efPar"/>
</p:selectOneMenu>
<p:message for="objPara"/>
70
requiredMessage="Contabilidad Obligatorio"
onLabel="SI" offLabel="NO"/>
<p:message for="licPar"/>
</h:panelGrid>
</p:tab>
71
<p:inputText id="valoDes"
value="#{beanPedido.pedidoSeleccionado.descuento.desValor}" title="Nombre"
required="true" requiredMessage="Nombre de usuario Obligatorio" />
<p:message for="valoDes"/>
</h:panelGrid>
</p:tab>
72
<p:outputLabel value="Costo:" for="cosSer" />
<p:inputText id="cosSer"
value="#{beanPedido.pedidoSeleccionado.servicioAdicional.serCosto}" title="Nombre"
required="true" requiredMessage="Nombre de usuario Obligatorio"
disabled="true"/>
<p:message for="cosSer"/>
</h:panelGrid>
</p:tab>
</p:tabView>
</p:panelGrid>
</h:panelGroup>
<div class="ui-g-12 ui-fluid contact-form">
<div class="ui-g">
<div class="ui-g-12">
<p:commandButton actionListener="#{beanPedido.editarPedido}"
rendered="#{beanPedido.pedidoSeleccionado != null}"
value="Actualizar" style="min-width:300px" update=" :pg-
notificacion" />
</div>
</div>
</div>
73
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
74
9. Ejecución del Proyecto
9.1. Módulo de Seguridad
75
Ilustración 46 Vista agregar Usuarios
76
Ilustración 48 Vista Asignar Perfiles a Usuarios
77
Ilustración 52 Vista Administración de paracaidistas
78
Ilustración 55 Vista Agregar Personas
79
Ilustración 58 Vista Administración de Servicios Adicionales
80
Ilustración 61 Vista administración de la Empresa
81
Ilustración 64 Vista Agregar Facturas
82
8. Conclusiones y Recomendaciones
2.1 9.1 Conclusiones
El presente proyecto permite generar un aplicativo con un diseño seguro y muy
intuitivo para el cliente, que le permite entender cuales son los objetivos
planteados, alcance y metodología que nuestro equipo tiene para desarrollar el
aplicativo
La documentación planteada detalles técnicos pero importantes para saber el
proceso y la tecnología usada al desarrollar el proyecto respectivo.
Todas las tecnologías usadas y aprendidas en la respectiva bibliografía ayudan
a crear un entorno web seguro y fácil de usar.
83