{"id":12638,"date":"2022-10-04T14:36:41","date_gmt":"2022-10-04T20:36:41","guid":{"rendered":"http:\/\/201.237.206.56\/Sitios\/ugit.siua.ac.cr\/?p=12638"},"modified":"2023-12-11T10:43:54","modified_gmt":"2023-12-11T16:43:54","slug":"cgi-capacitacion-sigesa","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=12638","title":{"rendered":"CGI: Capacitaci\u00f3n FrameWork SK-UNA SIGESA"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>En el siguiente documento se explica como crear un CRUD de un mantenimiento de una tabla en SIGESA<\/li>\n\n\n\n<li>http:\/\/10.0.100.30:8080\/sigesa-webapp<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de programas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para esto debemos tener disponible SQLDeveloper 21.4.2 y la versi\u00f3n 1.8 de java<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Java 1.8<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para instalar java 8 ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install openjdk-8-jdk openjfx -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">SQL Developer<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para esto debemos tener disponible SQLDeveloper y la versi\u00f3n 1.8 de java<\/li>\n\n\n\n<li>Descargamos el programa <a href=\"\/wp-content\/uploads\/2022\/10\/sqldeveloper.zip\">SQLDeveloper<\/a><\/li>\n\n\n\n<li>Luego para poder configurarlo debemos descargar la carpeta oculta de configuraci\u00f3n UNA-SQLDeveloper que la podemos descargar de <a rel=\"noreferrer noopener\" href=\"\/wp-content\/uploads\/2022\/10\/sqldeveloper_Configuracion.zip\" target=\"_blank\">aqu\u00ed<\/a><\/li>\n\n\n\n<li>Una vez descargado debemos moverlos a la carpeta \/home\/usuario<\/li>\n\n\n\n<li>Luego descomprimimos ambos archivos y dentro del archivo de configuraci\u00f3n existe una carpeta oculta \u00ab.sqldeveloper\u00bb que debemos mover de ubicaci\u00f3n a \/home\/usuario<\/li>\n\n\n\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"424\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_211-1024x424.png\" alt=\"\" class=\"wp-image-12680\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_211-1024x424.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_211-300x124.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_211-768x318.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_211-1536x636.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_211.png 1650w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para ejecutar el programa <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para poder ejecutar la aplicaci\u00f3n debemos abrir una terminal en la ubicaci\u00f3n del programa sqldeveloper<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/home\/tavo\/sqldeveloper\/\no\ncd \/home\/cgi\/sqldeveloper\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debos establecer java 1.8 como defecto para esto ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo update-alternatives --config java<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos listar\u00e1 las versiones de java instaladas <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"293\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_212-1024x293.png\" alt=\"\" class=\"wp-image-12683\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_212-1024x293.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_212-300x86.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_212-768x220.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_212.png 1165w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Seleccionamos la vers\u00f3n java 1.8 (5)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"298\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_213-1024x298.png\" alt=\"\" class=\"wp-image-12684\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_213-1024x298.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_213-300x87.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_213-768x224.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_213.png 1332w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Variable JAVA_HOME<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear la variable JAVA_HOME abrimos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/environment<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos al final del archivo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>JAVA_HOME=\/usr\/lib\/jvm\/jdk1.8.0_333<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Recargamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>source \/etc\/environment<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>echo $JAVA_HOME<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/lib\/jvm\/jdk1.8.0_333<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemos verificar la versi\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version\njavac -version<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>javac -version\njava version \"1.8.0_333\"\nJava(TM) SE Runtime Environment (build 1.8.0_333-b02)\nJava HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)\njavac 18.0.2-ea<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora volvemos a la carpeta del SQLDeveloper<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/home\/tavo\/sqldeveloper\no\ncd \/home\/cgi\/sqldeveloper<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Volvemos a ejecutar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/sqldeveloper.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y luego ejecutar el siguiente comando para ejecutar el programa<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As\u00ed nos abre el programa ya con la conexiones necesarias<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_214-1024x482.png\" alt=\"\" class=\"wp-image-12686\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_214-1024x482.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_214-300x141.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_214-768x362.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_214-1536x723.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_214.png 1601w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear una acceso directo al programa<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gedit \/usr\/share\/applications\/sqldeveloper.desktop<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Desktop Entry]\nName=SQL Developer\nComment=Editor Python HTML\nExec=\/home\/tavo\/sqldeveloper\/sqldeveloper.sh\nIcon=\/home\/tavo\/sqldeveloper\/icon.icns\nTerminal=false\nType=Application<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y listo<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Encabezado<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para la capacitaci\u00f3n vamos a crear la siguiente estructura de tabla<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"622\" height=\"309\" src=\"\/wp-content\/uploads\/2022\/10\/imagen-1.png\" alt=\"\" class=\"wp-image-12700\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/imagen-1.png 622w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/imagen-1-300x149.png 300w\" sizes=\"(max-width: 622px) 100vw, 622px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Dia 01: Paso #01: Creaci\u00f3n de tabla<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que tenemos la conexi\u00f3n a la BD<\/li>\n\n\n\n<li>Ingresamos a la BD sigesa_desa01_adm haciendo clic sobre lla y nos abre el editor de consultas<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"464\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_215-1024x464.png\" alt=\"\" class=\"wp-image-12687\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_215-1024x464.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_215-300x136.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_215-768x348.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_215.png 1295w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y aqu\u00ed podemos crear nuestra tabla<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM CLIENTE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"CLIENTE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_CLIENTE_TAVO\"       number (19,0)       NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"CEDULA\"                VARCHAR2(11)        NOT NULL ENABLE,\n    \"NOMBRE\"                VARCHAR2(120)       NOT NULL ENABLE,\n    \"FECHA_NACIMIENTO\"      DATE                NOT NULL ENABLE,\n    \"ACTIVO\"                NUMBER(1,0)         NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"        DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"      NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"    DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"  NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"               NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"    NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_CLIENTE_TAVO\" PRIMARY KEY(\"ID_CLIENTE_TAVO\"),\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_CLI_TAV_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_CLI_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_CLI_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"CEDULA\"             IS 'N\u00famero de identificaci\u00f3n del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"NOMBRE\"             IS 'Nombre completo del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"FECHA_NACIMIENTO\"   IS 'Fecha de nacimiento del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"ACTIVO\"             IS '1 = Activo \/ 0 = Inactivo';\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_CLIENTE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM CLIENTE_TAVO FOR \"PBS\".\"CLIENTE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_CLIENTE_TAVO FOR PBS.SQ_CLIENTE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM CLIENTE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA                                       *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_CLIENTE_TAVO;\nDROP PUBLIC SYNONYM CLIENTE_TAVO;\nDROP PUBLIC SYNONYM SQ_CLIENTE_TAVO;\nDROP TABLE \"PBS\".CLIENTE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.CLIENTE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_CLIENTE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"CLIENTE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"491\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_216-1024x491.png\" alt=\"\" class=\"wp-image-12689\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-1024x491.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-300x144.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-768x368.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216.png 1311w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para ejecutar la consulta podemos hacer <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>CTRL+ENTER<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O en el icono <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"491\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_216-1-1024x491.png\" alt=\"\" class=\"wp-image-12691\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-1-1024x491.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-1-300x144.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-1-768x368.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_216-1.png 1311w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">NOTAS: Importantes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Est\u00e1ndar de Nombres<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Tablas y campos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Los nombres de las tablas se manejan en singular<\/li>\n\n\n\n<li>Si esta compuesto de m\u00e1s de un nombre lo podemos separar por \u00ab_\u00bb<\/li>\n\n\n\n<li>Se deben poner los campos en may\u00fascula<\/li>\n\n\n\n<li>Todos los campos que sean ID deben ser de tipo NUMBER(19,0) y deben empesar por \u00abID_\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\"ID_CLIENTE_TAVO\"       number (19,0)       NOT NULL ENABLE,<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para campos boolean se utiliza<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>NUMBER(1,0)         NOT NULL ENABLE,<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear llaves primarias<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/* LLAVE: PRIMARIA                                      *\/\n\/********************************************************\/\nCONSTRAINT \"PK_CLIENTE_TAVO\" PRIMARY KEY(\"ID_CLIENTE_TAVO\"),<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego por el framework SDK-UNA debemos agregar los siguientes campos en TODAS las Tablas<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n\/********************************************************\/\n    \"FECHA_CREACION\"        DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"      NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"    DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"  NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"               NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"    NUMBER(19,0),<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y adem\u00e1s se debe agregar las llaves foraneas a los campos del Framework<\/li>\n\n\n\n<li>Todas las llaves foraneas deben iniciar en FK_<\/li>\n\n\n\n<li>Y solo deben tener 3 letras por significado \u00abFK_CLI_TAV_USU_CRE\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/* LLAVE: FORANEAS                                      *\/\n\/********************************************************\/\nCONSTRAINT FK_CLI_TAV_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\nCONSTRAINT FK_CLI_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\nCONSTRAINT FK_CLI_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Comentarios<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adem\u00e1s es necesario agregar comentarios a TODOS los campos para esto<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"CEDULA\"             IS 'N\u00famero de identificaci\u00f3n del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"NOMBRE\"             IS 'Nombre completo del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"FECHA_NACIMIENTO\"   IS 'Fecha de nacimiento del cliente';\nCOMMENT ON COLUMN \"PBS\".\"CLIENTE_TAVO\".\"ACTIVO\"             IS '1 = Activo \/ 0 = Inactivo';<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Secuencia<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed es importate que el siguiente c\u00f3digo, este crea una secuencia que indica que el id de la tabla debe comenzar en 1 y se debe incrementar en 1<\/li>\n\n\n\n<li>El nombre de la secuencia debe iniciar con \u00abSQ_\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_CLIENTE_TAVO START WITH 1 INCREMENT BY 1;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Sin\u00f3nimos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adem\u00e1s para que la tabla pueda ser visible y no sea necesario agregar el Esquema para su consumo creamos los siguientes sin\u00f3nimos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM CLIENTE_TAVO FOR \"PBS\".\"CLIENTE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_CLIENTE_TAVO FOR PBS.SQ_CLIENTE_TAVO;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Permisos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se le debe otrogar los siguientes permisos sobre la tabla a los siguientes usuarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.CLIENTE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_CLIENTE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"CLIENTE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">NOTA Aggregator (JPA)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dentro del proyecto SIGESA existen una serie de proyecto entre ellos uno de nombre AGGREGATOR<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"250\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_217.png\" alt=\"\" class=\"wp-image-12702\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_217.png 643w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_217-300x117.png 300w\" sizes=\"(max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dentro de este proyecto en la ruta sigesa-jpa-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-cgi-&gt;sigesa<\/li>\n\n\n\n<li>Se encuentran todas las definiciones de las Entity&#8217;s que utilizan los diferentes proyectos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"676\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_218.png\" alt=\"\" class=\"wp-image-12704\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_218.png 570w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_218-253x300.png 253w\" sizes=\"(max-width: 570px) 100vw, 570px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para nuestro proyecto vamos a trabajar en el m\u00f3dulos de PBS (Provedur\u00eda) -&gt;ABS<\/li>\n\n\n\n<li>Por esto debemos ubicar la carperta de PBS->ABS y dentro de esta existen dos carpetas\n<ul class=\"wp-block-list\">\n<li>domain<\/li>\n\n\n\n<li>repository<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"362\" height=\"389\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_219.png\" alt=\"\" class=\"wp-image-12705\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_219.png 362w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_219-279x300.png 279w\" sizes=\"(max-width: 362px) 100vw, 362px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dominio: es donde debemos crear la CLASE Entity para la tabla que hemos creado<\/li>\n\n\n\n<li>Repository: es donde debemos creare la interfaz  para esa clase<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #02: DOMAIN-&gt;Clase Entity<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dentro de la carpeta domain del m\u00f3dulo creamos una nueva clase donde vamos a relacionar la tabla que creamos<\/li>\n\n\n\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\n\/\/ import javax.persistence.ManyToOne;\n\/\/ import javax.persistence.FetchType;\n\/\/ import javax.persistence.JoinColumn;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport javax.persistence.Temporal;\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\u00b4\n * @fecha 06\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"CLIENTE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\",         column = @Column(name = \"ID_CLIENTE_TAVO\"))\n\u00b4\u00b4\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\",   sequenceName = \"SQ_CLIENTE_TAVO\", allocationSize = 1)\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Cedula\n    @Column(name = \"CEDULA\")\n    private String cedula;\n\n    \/\/ Nombre\n    @Column(name = \"NOMBRE\")\n    private String nombre;\n\n    \/\/ Fecha de Nacimiento\n    @Column(name = \"FECHA_NACIMIENTO\")\u00b4\u00b4\u00b4\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fechaNacimiento;\n\n    \/\/ Activo: 1 = activo \/ 0 = Inactivo\n    @Column(name = \"ACTIVO\")\n    private Boolean activo;\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET       ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ Cedula\n    \/\/ ***************************************\n    public String getCedula() {\n        return cedula;\n    }\n\n    public void setCedula(String cedula) {\u00b4\u00b4\n        this.cedula = cedula;\n    }\n\n    \/\/ ***************************************\n    \/\/ Nombre\n    \/\/ ***************************************\n    public String getNombre() {\n        return nombre;\n    }\n\n    public void setNombre(String nombre) {\n        this.nombre = nombre;\n    }\n\n    \/\/ ***************************************\n    \/\/ Fecha de Nacimiento\n    \/\/ ***************************************\n    public Date getFechaNacimiento() {\n        return fechaNacimiento;\n    }\n\n    public void setFechaNacimiento(Date fechaNacimiento) {\n        this.fechaNacimiento = fechaNacimiento;\n    }\n\n    \/\/ ***************************************\n    \/\/ Activo\n    \/\/ ***************************************\n    public Boolean getActivo() {\n        return activo;\n    }\n\n    public void setActivo(Boolean activo) {\n        this.activo = activo;\n    }\n\n   \n}\n\n\/*****************************************************\u00b4\u00b4*****************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Notas: DOMAIN <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>FrameWork SDK-UNA, se deben agregar los siguientes import&#8217;s para poder utilizar el framework<\/li>\n<\/ul>\n\n\n\n<p>\u00b4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y para conexi\u00f3n de BD <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\u00b4\u00b4\nimport javax.persistence.Table;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En cuanto a la configuraci\u00f3n debemos establecer<\/li>\n\n\n\n<li>@Entity: Definimos que es una entidad (tabla BD)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Definimos que es una entidad (tabla BD)\n@Entity<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>@Table: es donde indicamos el nombre de la tabla<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@Table(name = \"CLIENTE_TAVO\")<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>@AttributeOverride \/ ID: es donde indicamos que debemos hacer una sobre escritura del campos id de la tabla (ID_CLIENTE_TAVO) para que se interprete como \u00abid\u00bb\u00b4<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@AttributeOverride(name = \"id\",         column = @Column(name = \"ID_CLIENTE_TAVO\"))<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>@SequenceGenerator: es donde relacionamos la entidad con la secuencia respectiva<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@SequenceGenerator(name = \"sequence\",   sequenceName = \"SQ_CLIENTE_TAVO\", allocationSize = 1)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora es importrante indicar que la clase ba extender de dos clases del SDK-UNA:\n<ul class=\"wp-block-list\">\n<li>Usuario: es utilizado por SDK-UNA para obtener los datos del usuario actual<\/li>\n\n\n\n<li>CampoConfigurable: es utilizado por SDK-UNA para obtener los campos que tienen alguna configuraci\u00f3n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>A nivel del c\u00f3digo lo que se debe hacer es:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public class ClienteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego pasamos a la definicip\u00f3n de los atributos donde:\n<ul class=\"wp-block-list\">\n<li>Donde debemos crear la relaci\u00f3n del campo de la BD y el nombre del atributo que vamos a utilizar en la aplicaci\u00f3n<\/li>\n\n\n\n<li>NOTA: los atributos deben venir sin espacios y la primera letra en minuscula<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Cedula\n@Column(name = \"CEDULA\")\nprivate String cedula;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y finalmente debemos hacer los get y set de los campos <\/li>\n\n\n\n<li>vs code java crear get y set hacemos clic derecho -&gt;Sourtce Action -&gt; Generate Getters and Setters<\/li>\n<\/ul>\n\n\n\n<p>\u00b4<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"530\" height=\"429\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_222.png\" alt=\"\" class=\"wp-image-12716\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_222.png 530w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_222-300x243.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los generamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ Cedula\n    \/\/ ***************************************\n    public String getCedula() {\n        return cedula;\n    }\n\n    public void setCedula(String cedula) {\n        this.cedula = cedula;\n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #03:  Repository <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del AGGREGATOR-&gt;Proyecto(sigesa-&gt;jpa-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;repository)-&gt;repository (ACTULIZAR RUTA)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"453\" height=\"447\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_223.png\" alt=\"\" class=\"wp-image-12719\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_223.png 453w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_223-300x296.png 300w\" sizes=\"(max-width: 453px) 100vw, 453px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debemos crear una interfaz para el manejo de la tabla CLIENTE_TAVO<\/li>\n\n\n\n<li>Creamos una interfaz<\/li>\n\n\n\n<li>Para facilitar la creaci\u00f3n de dnetro del pulgin SDK-UNA ya existe una funcionalidad que nos permite crear la interfaz UNA-Templates-&gt;Repository<\/li>\n\n\n\n<li>Luego nos abre una ventana para digitar su nombre<\/li>\n\n\n\n<li><strong>NOTA: para SIGESA el nombre que se le debe dar es NombreClaseRepository.java<\/strong> pera la aplicaci\u00f3n agrega Repository.java as\u00ed que es solo dar el nombre<\/li>\n\n\n\n<li>Y nos crea la plantilla, para nuestro ejemplo queda as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.repository;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Repository;\n\n\n\n\/**\n * Repository para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Estable que es un repositorio\n@Repository\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface ClienteTavoRepository extends GenericRepository&lt;ClienteTavo&gt; {\n   \n    \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro de esta clase es donde debemos crear las consultas adicionales (que no son de una mantenimiento normal),<\/li>\n\n\n\n<li>Es importante que estas consultas deben seguir el siguiente uso de prioridad\n<ul class=\"wp-block-list\">\n<li>Consultas find:\n<ul class=\"wp-block-list\">\n<li>Para documentaci\u00f3n <a href=\"https:\/\/docs.spring.io\/spring-data\/jpa\/docs\/current\/reference\/html\/#jpa.query-methods.query-creation\">https:\/\/docs.spring.io\/spring-data\/jpa\/docs\/current\/reference\/html\/#jpa.query-methods.query-creation<\/a><\/li>\n\n\n\n<li>Son consutas de Spring que nos ofrecen con un idioma humano<\/li>\n\n\n\n<li>Son el primer tipo que debemos tratar de generar<\/li>\n\n\n\n<li>Esta consultas pueden devolver listas o pages\n<ul class=\"wp-block-list\">\n<li>Listas: son m\u00e1s faciles de trabajar List&lt;ClienteTavo&gt;<\/li>\n\n\n\n<li>Page: son el tipo de datos que requiere SIGESA para para hacer los listas y poder paginar, sin embargo para un mantenimiento normal no es necesario crear ninguno ya que el FrameWork lo hace<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Ejemplos:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public List&lt;Cliente&gt; findAllByApellidosIgnoreCaseLike(String apellidos);    \n   \npublic List&lt;Cliente&gt; findAllByFechaDeNacimiento(Date fechaDeNacimiento);\n   \npublic List&lt;Cliente&gt; findAllByApellidosIgnoreCaseLikeAndFechaDeNacimiento(String apellidos, Date fechaDeNacimiento);  \n   \npublic List&lt;Cliente&gt; findAllByApellidosIgnoreCaseLikeOrFechaDeNacimiento(String apellidos, Date fechaDeNacimiento);  \n   \npublic Cliente findOneByNombre(String nombre);\n   \npublic List&lt;Cliente&gt; findAllByViva(Boolean viva);\n   \npublic List&lt;Cliente&gt; findAllByVivaTrue();\n   \npublic List&lt;Cliente&gt; findAllByVivaFalse();\n   \npublic List&lt;Cliente&gt; findTop3ByApellidosIgnoreCaseLike(String apellidos);\n\npublic List&lt;Cliente&gt; findAllByFechaDeNacimientoOrderByNombre(Date fechaDeNacimiento);  \n   \npublic List&lt;Cliente&gt; findAllByFechaDeNacimientoAndVivaAndApellidosIgnoreCaseLikeOrderByNombre\n        (Date fechaDeNacimiento, Boolean viva, String apellidos);  \n       \npublic List&lt;Cliente&gt; findAllByFechaDeNacimientoBetween(Date fechaInicio, Date fechaFin);\n   \npublic Page&lt;Cliente&gt; findAllByViva(Boolean viva, Pageable pageable);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Consultas HQL:\n<ul class=\"wp-block-list\">\n<li>Son el segundo tipo de consultas<\/li>\n\n\n\n<li>Si las consultas find no son suficientes debemos pasar a este tipo de consultas<\/li>\n\n\n\n<li>aqu\u00ed podemos encontrar informaci\u00f3n <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/3.5\/reference\/es-ES\/html\/queryhql.html\">https:\/\/docs.jboss.org\/hibernate\/orm\/3.5\/reference\/es-ES\/html\/queryhql.html<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  @Query(\"select c as c from Cliente c where c.fechaDeNacimiento = :fechaDeNacimiento\")\n    public List&lt;Cliente&gt; findAllByFechaDeNacimientoConHQL(@Param(\"fechaDeNacimiento\") Date fechaDeNacimiento);\n   \n    @Query(\"select c as c from Cliente c where c.nombre = :nombre and c.apellidos = :apellidos\")\n    public List&lt;Cliente&gt; findAllByNombreAndApellidosConHQL(@Param(\"nombre\") String nombre, @Param(\"apellidos\") String apellidos);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Consultas SQL:\n<ul class=\"wp-block-list\">\n<li>estas consultas las debe aprobar ERICK<\/li>\n\n\n\n<li>Y son consultas SQL<\/li>\n\n\n\n<li>Ejemplos:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/NO USAR, es lo \u00faltimo de lo \u00faltimo\n@Query(value = \"select * from cliente where nombre = :nombre\", nativeQuery = true)\npublic List&lt;Cliente&gt; findAllByNombreConSQL(@Param(\"nombre\") String nombre);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #04:  Service<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente paso es crear una interfaz para el servicio para esto vamos a la ruta<\/li>\n\n\n\n<li> sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-interface-service<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"446\" height=\"201\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_224.png\" alt=\"\" class=\"wp-image-12724\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_224.png 446w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_224-300x135.png 300w\" sizes=\"(max-width: 446px) 100vw, 446px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed le damos UNA-Templates-&gt;Service y nos crea una plantilla (Solo debemos poner el nombre)<\/li>\n\n\n\n<li>Para nuestro ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\n\/**\n * Interface para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface ClienteTavoService extends EntityService&lt;ClienteTavo&gt; {\n\n  \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #05:  Service Implementaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente paso es crear la implenetaci\u00f3n del servicio creado anterior mente para esto vamos a la ruta<\/li>\n\n\n\n<li> sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-service<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"289\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_225.png\" alt=\"\" class=\"wp-image-12726\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_225.png 415w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_225-300x209.png 300w\" sizes=\"(max-width: 415px) 100vw, 415px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed le damos UNA-Templates-&gt;ServiceImpl y nos crea una plantilla (Solo debemos poner el nombre)<\/li>\n\n\n\n<li>Para nuestro ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.repository.ClienteTavoRepository;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\n\/**\n * Clase que implementa el servicio {@link ClienteTavoService} para la entidad\n * {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/\/ Estabece que es un servicio\n@Service\n\n\/\/ Y que es de tipo transaccional\n@Transactional\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoServiceImpl extends EntityServiceImpl&lt;ClienteTavo, ClienteTavoRepository&gt; implements ClienteTavoService {\n \n   \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"623\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_226-1024x623.png\" alt=\"\" class=\"wp-image-12728\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_226-1024x623.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_226-300x182.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_226-768x467.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_226.png 1237w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #06:  Bean<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El bean es la clase que va relacionar la clase de acceso de datos con la interfaz web<\/li>\n\n\n\n<li>El siguiente paso es crear el bean del servicio creado anteriormente para esto vamos a la ruta<\/li>\n\n\n\n<li> sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;model<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"421\" height=\"355\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_227.png\" alt=\"\" class=\"wp-image-12731\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_227.png 421w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_227-300x253.png 300w\" sizes=\"(max-width: 421px) 100vw, 421px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed le damos UNA-Templates-&gt;CRUD y nos crea una plantilla (Solo debemos poner el nombre)<\/li>\n\n\n\n<li>Para nuestro ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.ClienteTavoService;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoBean extends CRUDImpl&lt;ClienteTavo, ClienteTavoService&gt; implements CRUD {\n\n    \n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"cedula\",           getI18n(\"cliente_cedula_label\"),                true);\n        CRUDColumn column2 = new CRUDColumn(\"nombre\",           getI18n(\"cliente_nombre_label\"),                true);\n        CRUDColumn column3 = new CRUDColumn(\"fechaNacimiento\",  getI18n(\"cliente_fechaNacimiento_label\"),       true);\n        CRUDColumn column4 = new CRUDColumn(\"activo\",           getI18n(\"cliente_activo_label\"),                true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************  FIN  FUNCI\u00d3N INIT   *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #08:  ListForm<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente pao es crear el archivo LIstForm para crear la interfaz para el listado de la informaci\u00f3n<\/li>\n\n\n\n<li> sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;resources-&gt;META-INF-&gt;resources-&gt;pages<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"387\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_228.png\" alt=\"\" class=\"wp-image-12734\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_228.png 440w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_228-300x264.png 300w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed le damos UNA-Templates-&gt;ListForm y nos crea una plantilla (Solo debemos poner el nombre)<\/li>\n\n\n\n<li>Para nuestro ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition  \n    template=\"\/templates\/crud.xhtml\"\n    xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n    xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n    xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n    xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"&gt;  \n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{clienteTavoBean.list()}\" \/&gt;  \n    &lt;\/ui:define&gt; \n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.clienteTavo_list_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n    \n    \n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar id=\"toolbar\"\n                            editMode=\"false\"\n                            bean=\"#{clienteTavoBean}\"\n                            listForm=\"clienteTavoListForm\"\n                            editForm=\"clienteTavoEditForm\"          \n                            backForm=\"clienteTavoListForm\"\n                            container=\"n++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;     \n        &lt;components:noEditTable id=\"noEditTable\"\n                                header=\"#{i18n.clienteTavo_list_form_table_header}\"\n                                bean=\"#{clienteTavoBean}\"                              \n                                editForm=\"clienteTavoEditForm\"\/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #09:  EditForm<\/h2>\n\n\n\n<p>El siguiente pao es crear el archivo EditForm para crear la interfaz para la edici\u00f3n de la informaci\u00f3n<br> sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;resources-&gt;META-INF-&gt;resources-&gt;pages<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"338\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_229.png\" alt=\"\" class=\"wp-image-12737\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_229.png 396w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_229-300x256.png 300w\" sizes=\"(max-width: 396px) 100vw, 396px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed le damos UNA-Templates-&gt;EditForm y nos crea una plantilla (Solo debemos poner el nombre)<\/li>\n\n\n\n<li>Para nuestro ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition template=\"\/templates\/crud.xhtml\"\n                xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n                xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n                xmlns:p=\"http:\/\/primefaces.org\/ui\"\n                xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n                xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"\n                xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{clienteTavoBean.find()}\"\/&gt;        \n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.clienteTavo_edit_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar editMode=\"true\"\n                            bean=\"#{clienteTavoBean}\"\n                            listForm=\"clienteTavoListForm\"\n                            editForm=\"clienteTavoEditForm\"\n                            container=\"panelForm\" \/&gt;\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;una:panelForm id=\"panelForm\"\n                       binding=\"#{panelForm}\"\n                       header=\"#{i18n.clienteTavo_edit_form_header}\"&gt;\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------    INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;components:requiredInstructions focus=\"panelForm\" \/&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!----------------------------  FIN INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------     PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;p:panelGrid columns=\"2\" styleClass=\"una-panelgrid\"&gt;                              \n\n                \n                &lt;!--####################################################################################--&gt;\n                &lt;!--#############################    CEDULA    #########################################--&gt;\n                &lt;!--####################################################################################--&gt;\n               \n                &lt;!--LABEL--&gt;\n                &lt;p:outputLabel id=\"cedulaClienteTavoOutputLabel\"\n                               for=\"cedulaClienteTavoInputText\"\n                               value=\"#{i18n.clienteTavo_cedula_label}\"\/&gt;  \n                &lt;!--PANEL--&gt;\n                &lt;p:outputPanel id=\"cedulaOutputPanel\"&gt;\n                    \n                    &lt;!--CAMPO--&gt;\n                    &lt;p:inputText id=\"cedulaClienteTavoInputText\"\n                                 value=\"#{clienteTavoBean.entity.cedula}\"\n                                 required=\"true\" maxlength=\"50\" size=\"50\"\n                                 \/&gt;    \n                    \n                    &lt;!--MENSAJE--&gt;\n                    &lt;p:message id=\"cedulaClienteTavoMessage\"\n                               for=\"cedulaClienteTavoInputText\" \/&gt;\n\n                &lt;\/p:outputPanel&gt;\n\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n\n\n\n\n\n                &lt;!--####################################################################################--&gt;\n                &lt;!--#############################    NOMBRE    #########################################--&gt;\n                &lt;!--####################################################################################--&gt;\n               \n                &lt;!--LABEL--&gt;\n                &lt;p:outputLabel id=\"nombreClienteTavoOutputLabel\"\n                               for=\"nombreClienteTavoInputText\"\n                               value=\"#{i18n.clienteTavo_nombre_label}\"\/&gt;  \n\n                &lt;!--PANEL--&gt;\n                &lt;p:outputPanel id=\"nombreOutputPanel\"&gt;\n\n                    &lt;!--CAMPO--&gt;\n                    &lt;p:inputText id=\"nombreClienteTavoInputText\"\n                                 value=\"#{clienteTavoBean.entity.nombre}\"\n                                 required=\"true\" maxlength=\"50\" size=\"50\"\n                                 \/&gt;    \n\n                    &lt;!--MENSAJE--&gt;\n                    &lt;p:message id=\"nombreClienteTavoMessage\"\n                               for=\"nombreClienteTavoInputText\" \/&gt;\n\n                &lt;\/p:outputPanel&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n\n\n\n\n\n\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################     FECHA DE NACIMIENTO    ####################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                \n                &lt;!--LABEL--&gt;\n                &lt;p:outputLabel id=\"fechaNacimientoClienteTavoOutputLabel\"\n                               for=\"fechaNacimientoClienteTavoCalendar\"\n                               value=\"#{i18n.clienteTavo_fechaNacimiento_label}\"\/&gt;  \n\n                &lt;!--PANEL--&gt;\n                &lt;p:outputPanel id=\"fechaNacimientoOutputPanel\"&gt;\n\n                    &lt;!--CAMPO--&gt;\n                    &lt;p:calendar id=\"fechaNacimientoClienteTavoCalendar\"\n                                value=\"#{clienteTavoBean.entity.fechaNacimiento}\"\n                                showOn=\"button\"\n                                pattern=\"dd\/MM\/yyyy\"\n                                navigator=\"true\"\n                                locale=\"es\"\n                                size=\"50\"\n                                required=\"#{true}\"\n                                &gt;\n                    &lt;\/p:calendar&gt;\n\n                    &lt;!--MENSAJE--&gt;\n                    &lt;p:message id=\"fechaNacimientoMessage\"\n                               for=\"fechaNacimientoClienteTavoCalendar\" \/&gt;\n\n                &lt;\/p:outputPanel&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n\n\n\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################           ACTIVO           ####################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                \n                &lt;!--LABEL--&gt;\n                &lt;p:outputLabel id=\"activoClienteTavoOutputLabel\"\n                               for=\"activoClienteTavoSelectBooleanCheckbox\"\n                               value=\"#{i18n.clienteTavo_activo_label}\"\/&gt;  \n\n                &lt;!--PANEL--&gt;\n                &lt;p:outputPanel id=\"activoOutputPanel\"&gt;\n\n                    &lt;!--CAMPO--&gt;\n                    &lt;p:selectBooleanCheckbox id=\"activoClienteTavoSelectBooleanCheckbox\"\n                                             value=\"#{clienteTavoBean.entity.activo}\"\n                                             itemLabel=\"#{i18n.clienteTavo_activo_label}\"\n                                             required=\"#{true}\"&gt;\n                    &lt;\/p:selectBooleanCheckbox&gt;\n\n                    &lt;!--MENSAJE--&gt;\n                    &lt;p:message id=\"activoMessage\"\n                               for=\"activoClienteTavoSelectBooleanCheckbox\"\/&gt;\n                    \n                &lt;\/p:outputPanel&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n                &lt;!--####################################################################################--&gt;\n\n\n\n                \n\n            &lt;\/p:panelGrid&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!-----------------------------  FIN PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n        &lt;\/una:panelForm&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--***********************************   FIN DEFINE   *****************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #10:  Registrar la p\u00e1gina en SIGESA<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos a la direci\u00f3n <a rel=\"noreferrer noopener\" href=\"http:\/\/10.0.100.30:8080\/sigesa-webapp\/security\/login.xhtml\" target=\"_blank\">http:\/\/10.0.100.30:8080\/sigesa-webapp\/security\/login.xhtml<\/a><\/li>\n\n\n\n<li>u: 115080868<\/li>\n\n\n\n<li>p:xxxxxxxx<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"767\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_252.png\" alt=\"\" class=\"wp-image-12741\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_252.png 988w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_252-300x233.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_252-768x596.png 768w\" sizes=\"(max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos a SAS Seguridad y Administraci\u00f3n -&gt;SAS Seguridad y Administraci\u00f3n -&gt;Lista de recursos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"348\" height=\"519\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_230.png\" alt=\"\" class=\"wp-image-12742\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_230.png 348w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_230-201x300.png 201w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego ingresamos a Lista de Recursos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"303\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_231.png\" alt=\"\" class=\"wp-image-12743\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_231.png 302w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_231-300x300.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_231-150x150.png 150w\" sizes=\"(max-width: 302px) 100vw, 302px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos lista los recursos existentes y le damos nuevo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"289\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_232-1-1024x289.png\" alt=\"\" class=\"wp-image-12745\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_232-1-1024x289.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_232-1-300x85.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_232-1-768x217.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_232-1.png 1376w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Registramos la paginas con los siguientes datos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"888\" height=\"785\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_233.png\" alt=\"\" class=\"wp-image-12746\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_233.png 888w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_233-300x265.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_233-768x679.png 768w\" sizes=\"(max-width: 888px) 100vw, 888px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos un rol de admin, para esto damos clic en el icono de nuevo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"312\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_234.png\" alt=\"\" class=\"wp-image-12747\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_234.png 534w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_234-300x175.png 300w\" sizes=\"(max-width: 534px) 100vw, 534px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos el rol<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"872\" height=\"838\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_235.png\" alt=\"\" class=\"wp-image-12748\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_235.png 872w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_235-300x288.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_235-768x738.png 768w\" sizes=\"(max-width: 872px) 100vw, 872px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le damos agregar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"365\" height=\"212\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_236.png\" alt=\"\" class=\"wp-image-12749\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_236.png 365w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_236-300x174.png 300w\" sizes=\"(max-width: 365px) 100vw, 365px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regresamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"108\" height=\"144\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_237.png\" alt=\"\" class=\"wp-image-12750\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemos verifciar que el rol se agrego<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"515\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_238.png\" alt=\"\" class=\"wp-image-12751\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_238.png 666w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_238-300x232.png 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para que apliquen los cambios le damos guardar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"97\" height=\"115\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_239.png\" alt=\"\" class=\"wp-image-12753\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos muestra el mensaje<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"196\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_241.png\" alt=\"\" class=\"wp-image-12754\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_241.png 722w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_241-300x81.png 300w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para hacer el editar copiamos el registro<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"78\" height=\"95\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_242.png\" alt=\"\" class=\"wp-image-12756\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos indica que que el registro se copio<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"282\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_243.png\" alt=\"\" class=\"wp-image-12757\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_243.png 697w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_243-300x121.png 300w\" sizes=\"(max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora podemos crear el registro del EditForm<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"854\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_244.png\" alt=\"\" class=\"wp-image-12788\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_244.png 860w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_244-300x298.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_244-150x150.png 150w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_244-768x763.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verificamos que tenga el rol<\/li>\n\n\n\n<li>Si si guardamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"78\" height=\"122\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_245.png\" alt=\"\" class=\"wp-image-12790\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regresamos <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"61\" height=\"89\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_246.png\" alt=\"\" class=\"wp-image-12791\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora podemos ingresar a la pagina  ListForm ya que no se puede ingresar directamente a  edit<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"141\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_247.png\" alt=\"\" class=\"wp-image-12792\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_247.png 557w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_247-300x76.png 300w\" sizes=\"(max-width: 557px) 100vw, 557px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos <a href=\"http:\/\/10.0.100.30:8080\/sigesa-webapp\/pages\/clienteTavoListForm.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.100.30:8080\/sigesa-webapp\/pages\/clienteTavoListForm.xhtml<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"299\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_248-1024x299.png\" alt=\"\" class=\"wp-image-12793\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_248-1024x299.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_248-300x88.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_248-768x224.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_248-1536x448.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_248.png 1665w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Probamos el editar dandole clic al icono de nuevo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"115\" height=\"106\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_249.png\" alt=\"\" class=\"wp-image-12794\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos aparece la ventana y completamos <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"810\" height=\"524\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_250-1.png\" alt=\"\" class=\"wp-image-12797\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_250-1.png 810w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_250-1-300x194.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_250-1-768x497.png 768w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le damos guardar y nos muestra el mensaje<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"593\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_251.png\" alt=\"\" class=\"wp-image-12798\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_251.png 755w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_251-300x236.png 300w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>f<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Proyecto<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tiene\n<ul class=\"wp-block-list\">\n<li>Interface-service<\/li>\n\n\n\n<li>Service<\/li>\n\n\n\n<li>web<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Inferce-Service<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear las definiciones<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Service<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementaciones<\/li>\n\n\n\n<li>CTRL+SHIFT+I importar las librerias<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Web<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bean-> Model\n<ul class=\"wp-block-list\">\n<li>controller<\/li>\n\n\n\n<li>@Scope(\u00absSession\u00bb): el bean esta vivo mientras la sesi\u00f3n este abierta<\/li>\n\n\n\n<li>metodo init<\/li>\n\n\n\n<li>PostConstruct despues del constructor<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Other Source<\/li>\n\n\n\n<li>META-INF.resources.pages<\/li>\n\n\n\n<li>XHTML-&gt; En minuscula<\/li>\n\n\n\n<li>Creamos lista  y edit ListForm y EditForm<\/li>\n\n\n\n<li>root-juan \/ xxxxxxxx 115080868<\/li>\n\n\n\n<li>Sas-&gt;Sas-&gt; Lista Recursos -&gt; <\/li>\n\n\n\n<li>\/pages\/clienteListFormxhtml<\/li>\n\n\n\n<li>tipo recuros pagina<\/li>\n\n\n\n<li>visible chec<\/li>\n\n\n\n<li>secuencia 1<\/li>\n\n\n\n<li>Estado activo<\/li>\n\n\n\n<li>Roles Nuevo <\/li>\n\n\n\n<li>rol ADMIn<\/li>\n\n\n\n<li>Check todo<\/li>\n\n\n\n<li>MAS icono <\/li>\n\n\n\n<li>GUARDAR<\/li>\n\n\n\n<li>hacerlos con LIstForm y EditForm<\/li>\n\n\n\n<li>localhost:8080\/sigesa-webapp\/pages\/clienteListForm.xhtml<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Dia 02: Creaci\u00f3n de tabla Relacionada<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear una tabla relaciona a la tabla CLIENTE_TAVO<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"158\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_253-1024x158.png\" alt=\"\" class=\"wp-image-12758\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_253-1024x158.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_253-300x46.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_253-768x118.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_253.png 1072w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abrimos el SQL Developer y ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM TIQUETE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"TIQUETE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_TIQUETE_TAVO\"               NUMBER (19,0)       NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"CLIENTE\"                       NUMBER (19,0)       NOT NULL ENABLE,\n    \"FECHA\"                         DATE                NOT NULL ENABLE,\n    \"TOTAL\"                         NUMBER(22,2)        NOT NULL ENABLE,\n\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"                DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"              NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"            DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"          NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"                       NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"            NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_TIQUETE_TAVO\" PRIMARY KEY(\"ID_TIQUETE_TAVO\"),\n    \n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS CLIENTE_TAVO                         *\/\n    \/********************************************************\/\n    CONSTRAINT FK_TIQ_TAV_CLI_TAV FOREIGN KEY(CLIENTE)        REFERENCES PBS.CLIENTE_TAVO(ID_CLIENTE_TAVO),\n\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_TIQ_TAO_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_TIQ_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_TIQ_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"CLIENTE\"            IS 'Relaciona el cliente del tiquete con la tabla cliente tavo';\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"FECHA\"              IS 'Fecha de creaci\u00f3n del tiquete';\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"TOTAL\"              IS 'Monto del tiquete';\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_TIQUETE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM TIQUETE_TAVO FOR \"PBS\".\"TIQUETE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_TIQUETE_TAVO FOR PBS.SQ_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"TIQUETE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA                                       *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM TIQUETE_TAVO;\nDROP PUBLIC SYNONYM SQ_TIQUETE_TAVO;\nDROP TABLE \"PBS\".TIQUETE_TAVO;\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #02 Aggregator (JPA)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dentro de este proyecto en la ruta sigesa-jpa-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-cgi-&gt;sigesa<\/li>\n\n\n\n<li>Se encuentran todas las definiciones de las Entity\u2019s que utilizan los diferentes proyectos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport javax.persistence.Temporal;\n\n\n\n\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Cliente Definici\u00f3n para Mapeos\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;\n\n    \/\/ Fecha\n    @Column(name = \"FECHA\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fecha;\n\n    \/\/ Total\n    @Column(name = \"TOTAL\")\n    private double total;\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET       ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ Cliente\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n    \/\/ ***************************************\n    \/\/ Fecha\n    \/\/ ***************************************\n    public Date getFecha() {\n        return fecha;\n    }\n\n    public void setFecha(Date fecha) {\n        this.fecha = fecha;\n    }\n\n    \/\/ ***************************************\n    \/\/ Total\n    \/\/ ***************************************\n    public double geTotal() {\n        return total;\n    }\n\n    public void setTotal(double total) {\n        this.total = total;\n    }\n    \n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #03: Repository<\/h2>\n\n\n\n<p>Ahora dentro del AGGREGATOR-&gt;Proyecto(sigesa-&gt;jpa-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;repository)-&gt;repository<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.repository;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Repository;\n\n\/**\n * Repository para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Estable que es un repositorio\n@Repository\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface TiqueteTavoRepository extends GenericRepository&lt;TiqueteTavo&gt; {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #04: Service<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente paso es crear una interfaz para el servicio para esto vamos a la ruta<\/li>\n\n\n\n<li>sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-interface-service<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\n\n\n\n\/**\n * Interface para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface TiqueteTavoService extends EntityService&lt;TiqueteTavo&gt; {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #05: Service Implementaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente paso es crear la implenetaci\u00f3n del servicio creado anterior mente para esto vamos a la ruta<\/li>\n\n\n\n<li>sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-service<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.repository.TiqueteTavoRepository;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\n\n\/**\n * Clase que implementa el servicio {@link TiqueteTavoService} para la entidad\n * {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/\/ Estabece que es un servicio\n@Service\n\n\/\/ Y que es de tipo transaccional\n@Transactional\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoServiceImpl extends EntityServiceImpl&lt;TiqueteTavo, TiqueteTavoRepository&gt; implements TiqueteTavoService {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #06: Bean<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El bean es la clase que va relacionar la clase de acceso de datos con la interfaz web<\/li>\n\n\n\n<li>El siguiente paso es crear el bean del servicio creado anteriormente para esto vamos a la ruta<\/li>\n\n\n\n<li>sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;model<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoBean extends CRUDImpl&lt;TiqueteTavo, TiqueteTavoService&gt; implements CRUD {\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"clienteTavo\", getI18n(\"tiqueteTavo_clienteTavo_label\"), true);\n        CRUDColumn column2 = new CRUDColumn(\"fecha\", getI18n(\"tiqueteTavo_fecha_label\"), true);\n        CRUDColumn column3 = new CRUDColumn(\"total\", getI18n(\"tiqueteTavo_total_label\"), true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************  FIN  FUNCI\u00d3N INIT   *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #07: ListForm<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente pao es crear el archivo LIstForm para crear la interfaz para el listado de la informaci\u00f3n<\/li>\n\n\n\n<li>sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;resources-&gt;META-INF-&gt;resources-&gt;pages<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition\n    template=\"\/templates\/crud.xhtml\"\n    xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n    xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n    xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n    xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n    xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.list()}\" \/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.tiqueteTavo_list_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar id=\"toolbar\" \n                            editMode=\"false\"\n                            bean=\"#{tiqueteTavoBean}\"\n                            listForm=\"tiqueteTavoListForm\"\n                            editForm=\"tiqueteTavoEditForm\"\n                            backForm=\"tiqueteTavoListForm\"\n                            container=\"noEditTable:dataTable\"\n                            header=\"#{i18n.tiqueteTavo_list_form_table_title}\"\/&gt;\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   NOEDITTABLE  ++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt; \n        &lt;components:noEditTable id=\"noEditTable\"\n                                i18nKey=\"tiqueteTavo_list_form_table_title\"\n                                header=\"#{i18n.tiqueteTavo_list_form_table_title}\"\n                                bean=\"#{tiqueteTavoBean}\"\n                                editForm=\"tiqueteTavoEditForm\"\n                                responsive=\"true\"\/&gt;\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Paso #08: tiqueteEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente pao es crear el archivo EditForm para crear la interfaz para la edici\u00f3n de la informaci\u00f3n<\/li>\n\n\n\n<li>sigesa-&gt;sigesa-pbs-abs-&gt;sigesa-ps-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;resources-&gt;META-INF-&gt;resources-&gt;pages<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition template=\"\/templates\/crud.xhtml\"\n                xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n                xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n                xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n                xmlns:p=\"http:\/\/primefaces.org\/ui\"\n                xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n                xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"\n                xmlns:sdkuna=\"http:\/\/cgi.una.ac.cr\/sdkuna\"\n                xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.find()}\" \/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.tiqueteTavo_edit_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar id=\"toolbar\"\n                            editMode=\"true\"\n                            bean=\"#{tiqueteTavoBean}\"\n                            listForm=\"tiqueteTavoListForm\"\n                            editForm=\"tiqueteTavoEditForm\"\n                            container=\"panelForm\"\n                            header=\"#{i18n.tiqueteTavo_edit_form_header}\"\/&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n        &lt;una:panelForm id=\"panelForm\"\n                       i18nKey=\"tiqueteTavo_edit_form_header\"\n                       binding=\"#{panelForm}\"\n                       header=\"#{i18n.tiqueteTavo_edit_form_header}\"&gt;\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------    INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;components:requiredInstructions focus=\"panelForm\" \/&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!----------------------------  FIN INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------     PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;p:panelGrid columns=\"1\"\n                         layout=\"grid\"\n                         styleClass=\"una-panelgrid-responsive\"&gt;\n\n                &lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-panelgrid-cl1-responsive\"&gt;\n\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    CLIENTE   #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                \n                    &lt;!--LABEL--&gt;        \n                    &lt;p:outputLabel id=\"clienteTiqueteTavoOutputLabel\"\n                                for=\"clienteTiqueteTavoInputText\"\n                                value=\"#{i18n.tiqueteTavo_clienteTavo_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"clienteOutputPanel\"&gt;}\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputText id=\"clienteTiqueteTavoInputText\"\n                                    value=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                    required=\"true\" maxlength=\"200\" size=\"200\"\n                                    \/&gt;    \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"clienteTiqueteTavoMessage\"\n                                for=\"clienteTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    FECHA     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"fechaTiqueteTavoOutputLabel\"\n                                    for=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{i18n.tiqueteTavo_fecha_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"fechaOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:calendar id=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{tiqueteTavoBean.entity.fecha}\"\n                                    showOn=\"button\"\n                                    pattern=\"dd\/MM\/yyyy\"\n                                    navigator=\"true\"\n                                    locale=\"es\"\n                                    size=\"50\"\n                                    required=\"#{true}\"\n                                    &gt;\n                        &lt;\/p:calendar&gt;\n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"fechaMessage\"\n                                    for=\"fechaTiqueteTavoCalendar\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    TOTAL     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"totalTiqueteTavoOutputLabel\"\n                                for=\"totalTiqueteTavoInputText\"\n                                value=\"#{i18n.tiqueteTavo_total_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"totalOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputNumber id=\"totalTiqueteTavoInputNumber\"\n                                    value=\"#{tiqueteTavoBean.entity.total}\"\n                                    thousandSeparator=\",\"\n                                    decimalSeparator=\".\"\n                                    size=\"50\"\n                                    required=\"true\" maxlength=\"50\" size=\"50\"\n                                    \/&gt;    \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"totalTiqueteTavoMessage\"\n                                for=\"totalTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n                &lt;\/p:panelGrid&gt;\n\n\n\n\n\n\n            &lt;\/p:panelGrid&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!-----------------------------  FIN PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n        &lt;\/una:panelForm&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--***********************************   FIN DEFINE   *****************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Relaci\u00f3n ManyToOne y OneToMany<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear la representaci\u00f3n de una relaci\u00f3n de tablas en la BD, debemos utilizar en el sistema una relaci\u00f3n de ManyToOne y OneToMany dependiendo de la relaci\u00f3n de la tabla<\/li>\n\n\n\n<li>Por ejemplo tenemos la siguiente relaci\u00f3n enla bd<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"681\" height=\"230\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_258.png\" alt=\"\" class=\"wp-image-12807\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_258.png 681w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_258-300x101.png 300w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y deseamos llevar esta relaci\u00f3n al sistema debemos hacer <\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tiquete.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cuando estamos creado la Entity de la tabla que se relaciona para este caso tiquetesTavo<\/li>\n\n\n\n<li>Se debe crear un campo especial (EN ESTE CASO CLIENTE) que va ser el campo que se relacione con la clase o el objeto \u00abcliente\u00bb, debemos agregarle las siguientes propiedades adicionales<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/\/ Cliente Definici\u00f3n para Mapeos\n    \/\/ LAZY: solo va traer la primera relaci\u00f3n\n    \/\/ JoinColumn: va crear una relaci\u00f3n JOIN\n    \/\/ nullable = false: este valor no puede ser nulo\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Donde:\n<ul class=\"wp-block-list\">\n<li>LAZY: solo va traer la primera relaci\u00f3n (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.aluracursos.com\/blog\/entendiendo-el-lazy-y-el-eager-load-de-jpa\" target=\"_blank\">https:\/\/www.aluracursos.com\/blog\/entendiendo-el-lazy-y-el-eager-load-de-jpa<\/a>)<\/li>\n\n\n\n<li>JoinColumn: va crear una relaci\u00f3n JOIN <\/li>\n\n\n\n<li>nullable = false: este valor no puede ser nulo<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>y adem\u00e1s debemos agregar sus import&#8217;s<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESUMEN: se crea la relaci\u00f3n de la BD donde mucho tiquetes puede tener UN usuario<\/li>\n\n\n\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport java.math.BigDecimal;\nimport javax.persistence.Temporal;\n\n\n\n\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/\/ Cliente Definici\u00f3n para Mapeos\n    \/\/ LAZY: solo va traer la primera relaci\u00f3n\n    \/\/ JoinColumn: va crear una relaci\u00f3n JOIN del campo de la BD \n    \/\/ nullable = false: este valor no puede ser nulo\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n\n    \/\/ Fecha\n    @Column(name = \"FECHA\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fecha;\n\n    \/\/ Total\n    @Column(name = \"TOTAL\")\n    private BigDecimal total;\n\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET       ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ Cliente\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n    \/\/ ***************************************\n    \/\/ Fecha\n    \/\/ ***************************************\n    public Date getFecha() {\n        return fecha;\n    }\n\n    public void setFecha(Date fecha) {\n        this.fecha = fecha;\n    }\n\n    \/\/ ***************************************\n    \/\/ Total\n    \/\/ ***************************************\n    public BigDecimal geTotal() {\n        return total;\n    }\n\n    public void setTotal(BigDecimal total) {\n        this.total = total;\n    }\n    \n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cliente.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para que el sistema funciones se debe crear tambi\u00e9n dentro de \u00abCLIENTE\u00bb debe existir la relaci\u00f3n de OneToMany<\/li>\n\n\n\n<li>para esto abrimos la clase y debemos los import&#8217;s necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.OneToMany;\nimport javax.persistence.FetchType;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora agregamos la columna que lo va relacionar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/MAPEO\n    @OneToMany(fetch = FetchType.LAZY, mappedBy = \"clienteTavo\")\n    private List&lt;TiqueteTavo&gt; tiqueteTavo;     \n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"616\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_259-1024x616.png\" alt=\"\" class=\"wp-image-12812\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_259-1024x616.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_259-300x181.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_259-768x462.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_259-1536x925.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_259.png 1573w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora debeos crearle los m\u00e9todos para el atributo \u00abtiqueteTavo\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET  MAPEO   +++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ tiqueteTavo\n    \/\/ ***************************************\n    public List&lt;TiqueteTavo&gt; getTiquetesTavo() {\n        return tiqueteTavo;\n    }\n\n    public void setTiqueteTavo(List&lt;TiqueteTavo&gt; tiqueteTavo) {\n        this.tiqueteTavo = tiqueteTavo;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto abremos creado el mapeo <\/li>\n\n\n\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.OneToMany;\nimport javax.persistence.FetchType;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport javax.persistence.Temporal;\nimport java.util.List;\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"CLIENTE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\",         column = @Column(name = \"ID_CLIENTE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\",   sequenceName = \"SQ_CLIENTE_TAVO\", allocationSize = 1)\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/MAPEO\n    @OneToMany(fetch = FetchType.LAZY, mappedBy = \"clienteTavo\")\n    private List&lt;TiqueteTavo&gt; tiqueteTavo;     \n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Cedula\n    @Column(name = \"CEDULA\")\n    private String cedula;\n\n    \/\/ Nombre\n    @Column(name = \"NOMBRE\")\n    private String nombre;\n\n    \/\/ Fecha de Nacimiento\n    @Column(name = \"FECHA_NACIMIENTO\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fechaNacimiento;\n\n    \/\/ Activo: 1 = activo \/ 0 = Inactivo\n    @Column(name = \"ACTIVO\")\n    private Boolean activo;\n\n\n     \n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET  CAMPOS  +++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ Cedula\n    \/\/ ***************************************\n    public String getCedula() {\n        return cedula;\n    }\n\n    public void setCedula(String cedula) {\n        this.cedula = cedula;\n    }\n\n    \/\/ ***************************************\n    \/\/ Nombre\n    \/\/ ***************************************\n    public String getNombre() {\n        return nombre;\n    }\n\n    public void setNombre(String nombre) {\n        this.nombre = nombre;\n    }\n\n    \/\/ ***************************************\n    \/\/ Fecha de Nacimiento\n    \/\/ ***************************************\n    public Date getFechaNacimiento() {\n        return fechaNacimiento;\n    }\n\n    public void setFechaNacimiento(Date fechaNacimiento) {\n        this.fechaNacimiento = fechaNacimiento;\n    }\n\n    \/\/ ***************************************\n    \/\/ Activo\n    \/\/ ***************************************\n    public Boolean getActivo() {\n        return activo;\n    }\n\n    public void setActivo(Boolean activo) {\n        this.activo = activo;\n    }\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET  MAPEO   +++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ tiqueteTavo\n    \/\/ ***************************************\n    public List&lt;TiqueteTavo&gt; getTiquetesTavo() {\n        return tiqueteTavo;\n    }\n\n    public void setTiqueteTavo(List&lt;TiqueteTavo&gt; tiqueteTavo) {\n        this.tiqueteTavo = tiqueteTavo;\n    }\n   \n}\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rasient crea atributos sin que estos tengan una columna en la tabla<\/li>\n\n\n\n<li>creaer sets y get&#8217;s<\/li>\n\n\n\n<li>en el get hay diferencia<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TRASIENT (COLUMNAS DESDE OTRAS CLASES)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora con el mapeo de las clases creado podemos crear atributos dentro de \u00abTiquetesTavo\u00bb y que sean sean obtenidos desde la clase \u00abCliente\u00bb<\/li>\n\n\n\n<li>Para hacer esta relaci\u00f3n de atributos debemos utilizar Trasient<\/li>\n\n\n\n<li>Donde indicamos que \u00abeste\u00bb atributo trasiende de \u00abX\u00bb clase o ubucaci\u00f3n<\/li>\n\n\n\n<li>Para hacer esto primero agregamos los imports necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.persistence.Transient;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y luegos agregamos las definiciones<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       DEFINICI\u00d3N DE TRASIENT      ++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\/\n    \n    \/\/ Cliente: C\u00e9dula\n    @Transient\n    private String clienteCedula;\n\n    \/\/ Cliente: Fecha Nacimiento\n    @Transient\n    private Date clienteFechaNacimiento;\n\n    \/\/ Cliente: Nombre\n    @Transient\n    private String clienteNombre;\n\n    \/\/ Cliente: Activo\n    @Transient\n    private Boolean clienteActivo;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y debemos crear sus respesctivos get y set&#8217;s<\/li>\n\n\n\n<li>Pero estos tiene la peculiariad de que son obtenidos desde un objeto cliente<\/li>\n\n\n\n<li>Podemos hacerlos con una validaci\u00f3n simple <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  TRASIENT    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n        clienteCedula = \"\";\n        \n        if (cliente != null) {\n            clienteCedula = clienteTavo.getCedula();\n        }\n        \n        return clienteCedula;\n    }\n\n    public void setClienteCedula(String clienteCedula) {\n        this.clienteCedula = clienteCedula;\n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O una en un solo bloque<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n       \n        return clienteCedula = cliente != null ? clienteCedula = clienteTavo.getCedula() : \"\";\n    }\npublic void setClienteCedula(String clienteCedula) {\n        this.clienteCedula = clienteCedula;\n    }<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Tipo: Fecha<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Cliente: Fecha de Nacimiento\n    public Date getClienteFechaNacimiento() {\n        clienteFechaNacimiento = null;\n        \n        if (cliente != null) {\n            clienteFechaNacimiento = clienteTavo.getFechaNacimiento();\n        }\n        \n        return clienteFechaNacimiento;\n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_260-1024x435.png\" alt=\"\" class=\"wp-image-12818\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_260-1024x435.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_260-300x127.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_260-768x326.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_260.png 1421w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entonces este proceso lo realizamos para todos los campos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  TRASIENT    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n        clienteCedula = \"\";\n        \n        if (cliente != null) {\n            clienteCedula = clienteTavo.getCedula();\n        }\n        \n        return clienteCedula;\n    }\n\n    public void setClienteCedula(String clienteCedula) {\n        this.clienteCedula = clienteCedula;\n    }\n\n\n    \/\/ Cliente: Nombre\n    public String getClienteNombre() {\n        clienteNombre = \"\";\n        \n        if (cliente != null) {\n            clienteNombre = clienteTavo.getNombre();\n        }\n        \n        return clienteNombre;\n    }\n\n    public void setClienteNombre(String clienteNombre) {\n        this.clienteNombre = clienteNombre;\n    }\n\n\n    \/\/ Cliente: Fecha de Nacimiento\n    public Date getClienteFechaNacimiento() {\n        clienteFechaNacimiento = null;\n        \n        if (cliente != null) {\n            clienteFechaNacimiento = clienteTavo.getFechaNacimiento();\n        }\n        \n        return clienteFechaNacimiento;\n    }\n\n    public void setClienteFechaNacimiento(Date clienteFechaNacimiento) {\n        this.clienteFechaNacimiento = clienteFechaNacimiento;\n    }\n\n\n\n    \/\/ Cliente: Activo\n    public Boolean getClienteActivo() {\n        clienteActivo = null;\n        \n        if (clienteActivo != null) {\n            clienteActivo = clienteTavo.getActivo();\n        }\n        \n        return clienteActivo;\n    }\n\n    public void setClienteActivo(Boolean clienteActivo) {\n        this.clienteActivo = clienteActivo;\n    }\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.Transient;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport java.math.BigDecimal;\nimport javax.persistence.Temporal;\n\n\n\n\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/\/ Cliente Definici\u00f3n para Mapeos\n    \/\/ LAZY: solo va traer la primera relaci\u00f3n\n    \/\/ JoinColumn: va crear una relaci\u00f3n JOIN del campo de la BD \n    \/\/ nullable = false: este valor no puede ser nulo\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE TRASIENT      ++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Cliente: C\u00e9dula\n    @Transient\n    private String clienteCedula;\n\n    \/\/ Cliente: Fecha Nacimiento\n    @Transient\n    private Date clienteFechaNacimiento;\n\n    \/\/ Cliente: Nombre\n    @Transient\n    private String clienteNombre;\n\n    \/\/ Cliente: Activo\n    @Transient\n    private Boolean clienteActivo;\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n\n    \/\/ Fecha\n    @Column(name = \"FECHA\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fecha;\n\n    \/\/ Total\n    @Column(name = \"TOTAL\")\n    private BigDecimal total;\n\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET  CAMPOS    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ Cliente\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n    \/\/ ***************************************\n    \/\/ Fecha\n    \/\/ ***************************************\n    public Date getFecha() {\n        return fecha;\n    }\n\n    public void setFecha(Date fecha) {\n        this.fecha = fecha;\n    }\n\n    \/\/ ***************************************\n    \/\/ Total\n    \/\/ ***************************************\n    public BigDecimal geTotal() {\n        return total;\n    }\n\n    public void setTotal(BigDecimal total) {\n        this.total = total;\n    }\n    \n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  TRASIENT    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n        clienteCedula = \"\";\n        \n        if (clienteCedula != null) {\n            clienteCedula = clienteTavo.getCedula();\n        }\n        \n        return clienteCedula;\n    }\n\n\n    \/\/ Cliente: Nombre\n    public String getClienteNombre() {\n        clienteNombre = \"\";\n        \n        if (cliente != null) {\n            clienteNombre = clienteTavo.getNombre();\n        }\n        \n        return clienteNombre;\n    }\n\n\n    \/\/ Cliente: Fecha de Nacimiento\n    public Date getClienteFechaNacimiento() {\n        clienteFechaNacimiento = null;\n        \n        if (cliente != null) {\n            clienteFechaNacimiento = clienteTavo.getFechaNacimiento();\n        }\n        \n        return clienteFechaNacimiento;\n    }\n\n\n    \/\/ Cliente: Activo\n    public Boolean getClienteActivo() {\n        clienteActivo = null;\n        \n        if (cliente != null) {\n            clienteActivo = clienteTavo.getActivo();\n        }\n        \n        return clienteActivo;\n    }\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear campo AutoComplete<\/h2>\n\n\n\n<ul class=\"has-text-color wp-block-list\" style=\"color:#ec1e1e\">\n<li>Vamos a crear un campo autocomplete que \u00abcomplete\u00bb  o \u00abliste\u00bb a los clientes dentro de tiquetes<\/li>\n\n\n\n<li>Como la tarea que vamos a realizar es un servicio de busqueda de clientes y m\u00e1s clases los pueden consumir es l\u00f3gico que este \u00abservicio\u00bb sea implementado dentro de \u00abcliente\u00bb y no \u00abtiquete\u00bb<\/li>\n\n\n\n<li><strong>Pero SIGESA tiene la particularidad que por est\u00e1ndar a pesar de implementar el servicio en cliente y poder ser accedido directamente por un componente de ya sea el edit o list de tiquete esto NO SE DEBE HACER, sino que debemos serguir el estandar que un bean se puede comunicar con una Bean o un servicio solo con un servicio<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"235\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_261.png\" alt=\"\" class=\"wp-image-12823\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteRepository.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por esta raz\u00f3n anterior lo primero que debemos hacer es en el repositorio de \u00abCLIENTE\u00bb  una nueva definici\u00f3n de m\u00e9todo que nos permita obtener todos los clientes por n\u00famero de c\u00e9dula y que en el estado est\u00e9n activos<\/li>\n\n\n\n<li>Para esto abrimos el archivo y agregamos los import&#8217;s necesarios para la paginaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.repository;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Repository;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/**\n * Repository para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Estable que es un repositorio\n@Repository\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface ClienteTavoRepository extends GenericRepository&lt;ClienteTavo&gt; {\n   \n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n    \n\n    \/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable);\n\n\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A este punto hemos creado el servicio a este punto<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"253\" height=\"267\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_262.png\" alt=\"\" class=\"wp-image-12828\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteService.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que creamos la definici\u00f3n en el repositorio ahora toca definirlo en la interfaz de \u00abClienteService\u00bb para el pryecto ABS para esto abrimos el archivo y agregamos los import&#8217;s para paginaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con esto agregamos la definici\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable);\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\n\/**\n * Interface para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface ClienteTavoService extends EntityService&lt;ClienteTavo&gt; {\n\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable);\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>este punto vamos por aqu\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"257\" height=\"243\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_263.png\" alt=\"\" class=\"wp-image-12830\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteServiceImpl.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez tenemos la definici\u00f3n del m\u00e9todo toca implementarlo para esto<\/li>\n\n\n\n<li>Agregamos los import&#8217;s necesarios para paginar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y agregamos la implementaci\u00f3n del m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findAllByCedulaIgnoreCaseLikeAndActivo(java.lang.String, java.lang.Boolean, org.springframework.data.domain.Pageable) }\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    @Override\n\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable) {\n\n        \/\/ NOTA: para campos de tipo String debemos agregar los '%'\n        return repository.findAllByCedulaIgnoreCaseLikeAndActivo(\"%\" + cedula + \"%\", activo, pageable);\n    }\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NOTAS:\n<ul class=\"wp-block-list\">\n<li>El servicio devolvera una page de tipo ClienteTavo<\/li>\n\n\n\n<li>@Override: Indicamos que vamos a sobreescribir el m\u00e9todo<\/li>\n\n\n\n<li>repository. :  crea la relaci\u00f3n de la funcipon definida en ClienteTavoRepository<\/li>\n\n\n\n<li>STRING: para campos de tipo String debemos agregar los &#8216;%&#8217;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.repository.ClienteTavoRepository;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/**\n * Clase que implementa el servicio {@link ClienteTavoService} para la entidad\n * {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/\/ Estabece que es un servicio\n@Service\n\n\/\/ Y que es de tipo transaccional\n@Transactional\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoServiceImpl extends EntityServiceImpl&lt;ClienteTavo, ClienteTavoRepository&gt; implements ClienteTavoService {\n \n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findAllByCedulaIgnoreCaseLikeAndActivo(java.lang.String, java.lang.Boolean, org.springframework.data.domain.Pageable) }\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    @Override\n\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable) {\n\n        \/\/ NOTA: para campos de tipo String debemos agregar los '%'\n        return repository.findAllByCedulaIgnoreCaseLikeAndActivo(\"%\" + cedula + \"%\", activo, pageable);\n    }\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para este punto vamos por aqu\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"218\" height=\"251\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_264.png\" alt=\"\" class=\"wp-image-12834\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ClienteBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para poder comunicar la interfaz web con el servicio creado anteriormente se hace a trav\u00e9s de un Bean para este caso ClienteBean <\/li>\n\n\n\n<li>Para esto debemos crear una funci\u00f3n que consuma el servicio anteriormente creado en y para esto tiene ya un service que puede consumir<\/li>\n\n\n\n<li>Primero agregamos los import&#8217;s necesarios para paginar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y luego podemos agregar el m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*******               FUNCI\u00d3N:  findAllByNombreIgnoreCaseLikeAndViva          *******************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    \/**\n     * M\u00e9todo que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable) {\n        return service.findAllByCedulaIgnoreCaseLikeAndActivo(cedula, activo, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NOTAS:\n<ul class=\"wp-block-list\">\n<li>como podemos ver lo que se hace es crear una funci\u00f3n que va a llamar a otra funci\u00f3n definida en ClieteTavoServiceImpl pasandole los par\u00e1metros<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.ClienteTavoService;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoBean extends CRUDImpl&lt;ClienteTavo, ClienteTavoService&gt; implements CRUD {\n\n    \n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"cedula\",           getI18n(\"cliente_cedula_label\"),                true);\n        CRUDColumn column2 = new CRUDColumn(\"nombre\",           getI18n(\"cliente_nombre_label\"),                true);\n        CRUDColumn column3 = new CRUDColumn(\"fechaNacimiento\",  getI18n(\"cliente_fechaNacimiento_label\"),       true);\n        CRUDColumn column4 = new CRUDColumn(\"activo\",           getI18n(\"cliente_activo_label\"),                true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*******               FUNCI\u00d3N:  findAllByNombreIgnoreCaseLikeAndViva          *******************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    \/**\n     * M\u00e9todo que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable) {\n        return service.findAllByCedulaIgnoreCaseLikeAndActivo(cedula, activo, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A este punto ya contamos un bean capas de devolver una page de ClienteTavo por lo tanto estamos aqu\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"204\" height=\"258\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_265.png\" alt=\"\" class=\"wp-image-12837\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por tanto ya podemos saltar a tiquetesBean para poder realizar la comunicaci\u00f3n de ClienteBean con TiqueteBean<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Autowired: Creaci\u00f3n de relaci\u00f3n de Bean A Bean (TiqueteBean.java)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para poder crear una relaci\u00f3n de un bean a otro bean debemos utilizar el atributo @Autowired <\/li>\n\n\n\n<li>Entonces primero agregamos los import&#8217;s necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y tambien los necesarios para la paginaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y la necesaria para ingresar a la clase ClienteTavo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora agregamos la variable de la clase que va a manejar el ClienteTavoBean<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************    ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Nos indica que vamos a utilizar el Bean de ClienteTavo\n    @Autowired\n    ClienteTavoBean clienteTavoBean;\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************** FIN ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As\u00ed podemos agregar el m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************           FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  consume el servicio de ClienteBean -&gt; findAllByCedulaIgnoreCaseLikeAndActivo\n    \/\/ EJEMPLO: completeClienteTavo(\"juan\", pageable) \n    \n    public Page&lt;ClienteTavo&gt; autocompleteClienteTavo(String query, Pageable pageable) {\n\n        \/\/NOTA: Boolean.TRUE: solo los clientes activos\n        return clienteTavoBean.findAllByCedulaIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************       FIN FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoBean extends CRUDImpl&lt;TiqueteTavo, TiqueteTavoService&gt; implements CRUD {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************    ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Nos indica que vamos a utilizar el Bean de ClienteTavo\n    @Autowired\n    ClienteTavoBean clienteTavoBean;\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************** FIN ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los clienteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"clienteTavo\",      getI18n(\"tiqueteTavo_clienteTavo_label\"),   true);\n        CRUDColumn column2 = new CRUDColumn(\"fecha\",            getI18n(\"tiqueteTavo_fecha_label\"),         true);\n        CRUDColumn column3 = new CRUDColumn(\"total\",            getI18n(\"tiqueteTavo_total_label\"),         true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************  FIN  FUNCI\u00d3N INIT   *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************           FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  consume el servicio de ClienteBean -&gt; findAllByCedulaIgnoreCaseLikeAndActivo\n    \/\/ EJEMPLO: completeClienteTavo(\"juan\", pageable) \n    \n    public Page&lt;ClienteTavo&gt; autocompleteClienteTavo(String query, Pageable pageable) {\n\n        \/\/NOTA: Boolean.TRUE: solo los clientes activos\n        return clienteTavoBean.findAllByCedulaIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************       FIN FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A este punto dentro del TiqueteBean tenemos una conexi\u00f3n con ClienteBean<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"218\" height=\"257\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_266.png\" alt=\"\" class=\"wp-image-12842\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">tiqueteEditForm.xhtml<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que tenemos todo lo necesario funcionando para porder crear el autocomplete del cliente en la edici\u00f3n tiquetes, vamos a modificar el campo InputText de cliente para que sea un componente de tipo autocomplete<\/li>\n\n\n\n<li>Por tanto modificamos esto<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    CLIENTE   #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                \n                    &lt;!--LABEL--&gt;        \n                    &lt;p:outputLabel id=\"clienteTiqueteTavoOutputLabel\"\n                                for=\"clienteTiqueteTavoInputText\"\n                                value=\"#{i18n.tiqueteTavo_clienteTavo_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"clienteOutputPanel\"&gt;}\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputText id=\"clienteTiqueteTavoInputText\"\n                                    value=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                    required=\"true\" maxlength=\"200\" size=\"200\"\n                                    \/&gt;    \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"clienteTiqueteTavoMessage\"\n                                for=\"clienteTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li> Por esto:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    CLIENTE   #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                \n                    &lt;!--LABEL--&gt;        \n                    &lt;p:outputLabel id=\"clienteTiqueteTavoOutputLabel\"\n                                for=\"clienteTiqueteTavoAutoComplete\"\n                                value=\"#{i18n.tiqueteTavo_clienteTavoNombre_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"clienteOutputPanel\"&gt;}\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;una:autoCompletePaginator  id=\"clienteTiqueteTavoAutoComplete\"\n\n                                                    paginator=\"true\"\n                                                    paginationRows=\"10\"\n                                                    dropdown=\"true\"\n                                                    forceSelection=\"true\"\n                                                    size=\"50\"\n                                                    required=\"true\"\n\n                                                    value=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                    var=\"clienteTavo\"\n                                                    itemLabel=\"#{clienteTavo.cedula}\"\n                                                    itemValue=\"#{clienteTavo}\"\nconverter=\"#{clienteTavoBean.converter}\"\n\n                                                    completeMethod=\"#{tiqueteTavoBean.autocompleteClienteTavo}\"\n                                                    \n                                                    &gt;\n\n                        &lt;\/una:autoCompletePaginator&gt; \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"clienteTiqueteTavoMessage\"\n                                for=\"clienteTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed tenemos varias secciones  de parametros<\/li>\n\n\n\n<li>las de configuraci\u00f3n de componete\n<ul class=\"wp-block-list\">\n<li>paginator: true = pagina \/ false = no pagina<\/li>\n\n\n\n<li>paginationRows: n\u00famero de filas antes de p\u00e1ginar<\/li>\n\n\n\n<li>dropdown: que se muestre debajo del componente como un dropdown<\/li>\n\n\n\n<li>forceSelection: true = debe selecccionar uno elemento para funcionar<\/li>\n\n\n\n<li>size: tama\u00f1o<\/li>\n\n\n\n<li>required: true = requerido<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"394\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_267.png\" alt=\"\" class=\"wp-image-12844\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_267.png 763w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_267-300x155.png 300w\" sizes=\"(max-width: 763px) 100vw, 763px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Las de la relaci\u00f3n al campo encargado de buscar\n<ul class=\"wp-block-list\">\n<li>value: atributo de la clase TiqueteTavo para manejar objetos tipo clienteTavo<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"440\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_269-1024x440.png\" alt=\"\" class=\"wp-image-12846\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_269-1024x440.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_269-300x129.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_269-768x330.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_269.png 1460w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>continuamos\n<ul class=\"wp-block-list\">\n<li>var: clienteTavo creaci\u00f3n de la variable que vamos a utilizar para trabajar con el componente<\/li>\n\n\n\n<li>itemLabel: Valor que se va mostar en el autocomplete<\/li>\n\n\n\n<li>itemValue: objeto total<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"392\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_268.png\" alt=\"\" class=\"wp-image-12845\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_268.png 775w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_268-300x152.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_268-768x388.png 768w\" sizes=\"(max-width: 775px) 100vw, 775px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y la configuraci\u00f3n del autocomplete\n<ul class=\"wp-block-list\">\n<li>completeMethod: m\u00e9todo creado en TiqueteTavoBean para realizar el autocomplete<\/li>\n\n\n\n<li>converter: este autocomplte debe tener este tipo<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"404\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_270.png\" alt=\"\" class=\"wp-image-12848\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_270.png 829w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_270-300x146.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_270-768x374.png 768w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con esto hemos configurado el funcionamiento del autocomplete<\/li>\n\n\n\n<li>Sin embargo todav\u00eda podemos crear m\u00e1s funcionalidades<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Opci\u00f3n de [SELECCCIONE]<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para configurar un option en el combo que indique que seleccione al menos una opci\u00f3n y que tambien sirve para limpiar el combo vamos hacer lo siguiente<\/li>\n\n\n\n<li>Primero le agregamos las opciones de:\n<ul class=\"wp-block-list\">\n<li>noSelectedOption: true muestre el elemento<\/li>\n\n\n\n<li>noSelectedLabel: texto que va a presentar<\/li>\n\n\n\n<li>onNoSelectedOption: funci\u00f3n por ejecutar<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>noSelectedOption=\"true\"\n                                                    noSelectedLabel=\"#{i18n.tiquetetavo_clienteTavo_select_label}\"\n                                                    onNoSelectedOption=\"#{tiqueteTavoBean.handleClearClienteTavo()}\"<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"474\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_271.png\" alt=\"\" class=\"wp-image-12850\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_271.png 827w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_271-300x172.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_271-768x440.png 768w\" sizes=\"(max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como vemos nos muestra un error en onNoSelectedOption y esto por que esta funci\u00f3n no existe dentro del bean de TiqueteBean<\/li>\n\n\n\n<li>Vamos a crearla<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">TiqueteTavoBean.java<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la funci\u00f3n que va limpiar la selecci\u00f3n del combo<\/li>\n\n\n\n<li>Aqu\u00ed dependiendo del tipo de campo se debe enviar un valor u otro<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleClearClienteTavo            *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  limpia la seleccion del autocomplete para clienteTavo\n    \/\/ EJEMPLO: handleClearClienteTavo() \n    \n    public void handleClearClienteTavo() {\n        this.getEntity().setClienteTavo(null);\n        this.getEntity().setClienteNombre(\"\");\n        this.getEntity().setClienteCedula(\"\");\n        this.getEntity().setClienteFechaNacimiento(null);\n        this.getEntity().setClienteActivo(null);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoBean extends CRUDImpl&lt;TiqueteTavo, TiqueteTavoService&gt; implements CRUD {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************    ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Nos indica que vamos a utilizar el Bean de ClienteTavo\n    @Autowired\n    ClienteTavoBean clienteTavoBean;\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************** FIN ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los clienteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"clienteTavo\",      getI18n(\"tiqueteTavo_clienteTavo_label\"),   true);\n        CRUDColumn column2 = new CRUDColumn(\"fecha\",            getI18n(\"tiqueteTavo_fecha_label\"),         true);\n        CRUDColumn column3 = new CRUDColumn(\"total\",            getI18n(\"tiqueteTavo_total_label\"),         true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************           FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  consume el servicio de ClienteBean -&gt; findAllByCedulaIgnoreCaseLikeAndActivo\n    \/\/ EJEMPLO: completeClienteTavo(\"juan\", pageable) \n    \n    public Page&lt;ClienteTavo&gt; autocompleteClienteTavo(String query, Pageable pageable) {\n\n        \/\/NOTA: Boolean.TRUE: solo los clientes activos\n        return clienteTavoBean.findAllByCedulaIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleClearClienteTavo            *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  limpia la seleccion del autocomplete para clienteTavo\n    \/\/ EJEMPLO: handleClearClienteTavo() \n    \n    public void handleClearClienteTavo() {\n        this.getEntity().setClienteTavo(null);\n        this.getEntity().setClienteNombre(\"\");\n        this.getEntity().setClienteCedula(\"\");\n        this.getEntity().setClienteFechaNacimiento(null);\n        this.getEntity().setClienteActivo(null);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Envento itemSelect: cuando se selecciona una opci\u00f3n (TiqueteTavoEdit.xhtml)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A este punto tenemos la funcionalidad de que se carguen lo clientes<\/li>\n\n\n\n<li>Una opci\u00f3n para limpiar la selecci\u00f3n<\/li>\n\n\n\n<li>Y nos falta que va pasar cuando el usuario seleccione un cliente v\u00e1lido<\/li>\n\n\n\n<li>para esto vamos agregar la siguiente funcionalidad <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax event=\"itemSelect\"\n                                process=\"@this\" global=\"true\"\n                                listener=\"#{tiqueteBean.handleSelectCliente()}\"\n                                update=\"apellidosPanelGrid\"\/&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"881\" height=\"557\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_273.png\" alt=\"\" class=\"wp-image-12856\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_273.png 881w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_273-300x190.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_273-768x486.png 768w\" sizes=\"(max-width: 881px) 100vw, 881px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Esto va invocar a una funci\u00f3n que se va a ejecutar al momento  que se de la selcci\u00f3n de una opci\u00f3n por parte del cliente<\/li>\n\n\n\n<li>La funci\u00f3n se va a llamar handleSelectClienteTavo<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TiqueteTavoBean.java: Funci\u00f3n\/ Evento ItemSelect<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear la funci\u00f3n agregamos al Bean la funci\u00f3n que obtiene y almacena en al objeto los valores el elemento seleccionado por el usuario<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleSelectClienteTavo           *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encragar de \"pintar\" los valores del cliente seleccionado por el usuario\n    \/\/ EJEMPLO: handleSelectClienteTavo() \n    \n    public void handleSelectClienteTavo() {\n        if (this.getEntity().getClienteTavo() != null) {\n\n            this.getEntity().setClienteCedula(this.getEntity().getClienteTavo().getCedula());\n            this.getEntity().setClienteNombre(this.getEntity().getClienteTavo().getNombre());\n            this.getEntity().setClienteFechaNacimiento(this.getEntity().getClienteTavo().getFechaNacimiento());\n            this.getEntity().setClienteActivo(this.getEntity().getClienteTavo().getActivo());\n        }\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoBean extends CRUDImpl&lt;TiqueteTavo, TiqueteTavoService&gt; implements CRUD {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************    ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Nos indica que vamos a utilizar el Bean de ClienteTavo\n    @Autowired\n    ClienteTavoBean clienteTavoBean;\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************** FIN ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los clienteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"clienteTavo\",      getI18n(\"tiqueteTavo_clienteTavo_label\"),   true);\n        CRUDColumn column2 = new CRUDColumn(\"fecha\",            getI18n(\"tiqueteTavo_fecha_label\"),         true);\n        CRUDColumn column3 = new CRUDColumn(\"total\",            getI18n(\"tiqueteTavo_total_label\"),         true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************           FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  consume el servicio de ClienteBean -&gt; findAllByCedulaIgnoreCaseLikeAndActivo\n    \/\/ EJEMPLO: completeClienteTavo(\"juan\", pageable) \n    \n    public Page&lt;ClienteTavo&gt; autocompleteClienteTavo(String query, Pageable pageable) {\n\n        \/\/NOTA: Boolean.TRUE: solo los clientes activos\n        return clienteTavoBean.findAllByCedulaIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleClearClienteTavo            *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  limpia la seleccion del autocomplete para clienteTavo\n    \/\/ EJEMPLO: handleClearClienteTavo() \n    \n    public void handleClearClienteTavo() {\n\n        \/\/Objeto\n        this.getEntity().setClienteTavo(null);\n        \n        \/\/Campos\n        this.getEntity().setClienteCedula(\"\");\n        this.getEntity().setClienteNombre(\"\"); \n        this.getEntity().setClienteFechaNacimiento(null);\n        this.getEntity().setClienteActivo(null);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleSelectClienteTavo           *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encragar de \"pintar\" los valores del cliente seleccionado por el usuario\n    \/\/ EJEMPLO: handleSelectClienteTavo() \n    \n    public void handleSelectClienteTavo() {\n        if (this.getEntity().getClienteTavo() != null) {\n\n            this.getEntity().setClienteCedula(this.getEntity().getClienteTavo().getCedula());\n            this.getEntity().setClienteNombre(this.getEntity().getClienteTavo().getNombre());\n            this.getEntity().setClienteFechaNacimiento(this.getEntity().getClienteTavo().getFechaNacimiento());\n            this.getEntity().setClienteActivo(this.getEntity().getClienteTavo().getActivo());\n        }\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n\n    \n}\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Componente LOVBean: dialogFrameworkData<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para que el usuario puede buscar a un cliente no solamente por su n\u00famero de c\u00e9dula sino que podamos abrir una ventana modal que enliste los clientes y los permita filtrar por sus campos como en clienteTavoListForm.xhtml el Framework posee la posibilidad de crear una bean de tipo LOV (XXXXX) <\/li>\n\n\n\n<li>Para esto vamos vamos a crear un ClienteTavoLOVBean.java<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteTavoLOVBean.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear un archivo LOVBean debe hacerlo dentro de la direcci\u00f3n del proyecto <\/li>\n\n\n\n<li>sigesa-pbs-abs-web-&gt;src-&gt;main-&gt;java-&gt;-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-LOV<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"422\" height=\"212\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_274.png\" alt=\"\" class=\"wp-image-12863\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_274.png 422w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_274-300x151.png 300w\" sizes=\"(max-width: 422px) 100vw, 422px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el archivo y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.LOV;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.LOV;\nimport cr.ac.una.cgi.sdkuna.view.commons.LOVColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.LOVImpl;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++   Proyecto: PBS\/ABS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.ClienteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\n\n\/**\n * Spring LOVBean Session para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 10\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoLOVBean extends LOVImpl&lt;ClienteTavo, ClienteTavoService&gt; implements LOV, Serializable {\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      CONSTRUCTOR     *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    public ClienteTavoLOVBean() {\n\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n\n    public void init() {\n\n        \/\/ Retorna una List de tipo  LOVColumn\n        List&lt;LOVColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        LOVColumn column1 = new LOVColumn(\"cedula\",             getI18n(\"clienteTavo_cedula_label\"),            true);\n        LOVColumn column2 = new LOVColumn(\"nombre\",             getI18n(\"clienteTavo_nombre_label\"),            true);\n        LOVColumn column3 = new LOVColumn(\"fechaNacimiento\",    getI18n(\"clienteTavo_fechaNacimiento_label\"),   true);\n        LOVColumn column4 = new LOVColumn(\"activo\",             getI18n(\"clienteTavo_activo_label\"),            true);\n\n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n\n        \/\/ Enviamos las columnas\n        this.setTableColumns(columns);\n\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n}\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">tiqueteTavoEditForm.xhtml<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora entonces podemos crear un componete web que consuma el LOVBean creado anteriormente<\/li>\n\n\n\n<li>Para esto agregamos al archivo despues del campo autocomplete<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--CAMPO: AUTOCOMPLETE\/ VENTANA --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;components:dialogFrameworkData \n                        \n                                                        id=\"clienteDialogFrameworkData\"\n                                                        title=\"#{i18n.tiquete_cliente_select_label}\"\n                                                        contentWidth=\"800\"\n\n                                                        lOVBean=\"#{clienteTavoLOVBean}\"\n                                                        target=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                        \n                                                        \n                                                        methodName=\"findClientesVivos\"\n                                                        \n                              \n                                                        oncomplete=\"updateClienteAutocomplete();\"\/&gt;\n                                                        &lt;p:remoteCommand name=\"updateClienteAutocomplete\"\n                                                                        action=\"#{tiqueteTavoBean.handleSelectClienteTavo()}\"\n                                                                        process=\"@this\" global=\"true\"\n                                                                        \/&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"546\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_275.png\" alt=\"\" class=\"wp-image-12867\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_275.png 932w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_275-300x176.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_275-768x450.png 768w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Donde existen los parametros de configuraci\u00f3n del proyecto<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"559\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_276.png\" alt=\"\" class=\"wp-image-12868\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_276.png 912w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_276-300x184.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_276-768x471.png 768w\" sizes=\"(max-width: 912px) 100vw, 912px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La relaci\u00f3n al LOVBean<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"925\" height=\"492\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_277.png\" alt=\"\" class=\"wp-image-12869\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_277.png 925w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_277-300x160.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_277-768x408.png 768w\" sizes=\"(max-width: 925px) 100vw, 925px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NOTA IMPORTANTE: este tipo de servicio no va hacer una conexi\u00f3n de Bean -&gt; Bean sino que este es el \u00fanico servicio que va acceder directamente a un servicio de clienteTavo<\/li>\n\n\n\n<li>Es decir<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"207\" height=\"244\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_278.png\" alt=\"\" class=\"wp-image-12870\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por esto vamos a tener una secci\u00f3n de configuraci\u00f3n que estable cual m\u00e9doto de cliente va a invocar de foma directa<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"469\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_279.png\" alt=\"\" class=\"wp-image-12872\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_279.png 940w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_279-300x150.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_279-768x383.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y finalmente tenemos la configuraci\u00f3n donde establecemos que al completarse la accion de seleccionar un cliente que debe hacer <\/li>\n\n\n\n<li>En nuestro caso invocar de nuevo a la funci\u00f3n de TiqueteTavoBean -&gt; handleSelectClienteTavo()<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"414\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_280.png\" alt=\"\" class=\"wp-image-12873\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_280.png 944w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_280-300x132.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_280-768x337.png 768w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora que tenemos configurado el componente podemos ir a crear la definici\u00f3n e implentaci\u00f3n del m\u00e9todo requerido<\/li>\n\n\n\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition template=\"\/templates\/crud.xhtml\"\n                xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n                xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n                xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n                xmlns:p=\"http:\/\/primefaces.org\/ui\"\n                xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n                xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"\n                xmlns:sdkuna=\"http:\/\/cgi.una.ac.cr\/sdkuna\"\n                xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.find()}\" \/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.tiqueteTavo_edit_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar id=\"toolbar\"\n                            editMode=\"true\"\n                            bean=\"#{tiqueteTavoBean}\"\n                            listForm=\"tiqueteTavoListForm\"\n                            editForm=\"tiqueteTavoEditForm\"\n                            container=\"panelForm\"\n                            header=\"#{i18n.tiqueteTavo_edit_form_header}\"\/&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n        &lt;una:panelForm id=\"panelForm\"\n                       i18nKey=\"tiqueteTavo_edit_form_header\"\n                       binding=\"#{panelForm}\"\n                       header=\"#{i18n.tiqueteTavo_edit_form_header}\"&gt;\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------    INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;components:requiredInstructions focus=\"panelForm\" \/&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!----------------------------  FIN INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------     PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;p:panelGrid columns=\"1\"\n                         layout=\"grid\"\n                         styleClass=\"una-panelgrid-responsive\"&gt;\n\n                &lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-panelgrid-cl1-responsive\"&gt;\n\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    CLIENTE   #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                \n                    &lt;!--LABEL--&gt;        \n                    &lt;p:outputLabel id=\"clienteTiqueteTavoOutputLabel\"\n                                for=\"clienteTiqueteTavoAutoComplete\"\n                                value=\"#{i18n.tiqueteTavo_clienteTavoNombre_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"clienteOutputPanel\"&gt;}\n\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--CAMPO: AUTOCOMPLETE--&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;una:autoCompletePaginator  id=\"clienteTiqueteTavoAutoComplete\"\n\n                                                    paginator=\"true\"\n                                                    paginationRows=\"10\"\n                                                    dropdown=\"true\"\n                                                    forceSelection=\"true\"\n                                                    size=\"50\"\n                                                    required=\"true\"\n                                                    \n\n                                                    value=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                    var=\"clienteTavo\"\n                                                    itemValue=\"#{clienteTavo}\"\n                                                    itemLabel=\"#{clienteTavo.cedula}\"\n                                                    \n                                                    converter=\"#{clienteTavoBean.converter}\"\n\n\n                                                    completeMethod=\"#{tiqueteTavoBean.autocompleteClienteTavo()}\"\n                                                    \n\n                                                    noSelectedOption=\"true\"\n                                                    noSelectedLabel=\"#{i18n.tiquetetavo_clienteTavo_select_label}\"\n                                                    onNoSelectedOption=\"#{tiqueteTavoBean.handleClearClienteTavo()}\"\n                                                    &gt;\n                                                    \n                                                    &lt;p:ajax event=\"itemSelect\"\n                                                    process=\"@this\" global=\"true\"\n                                                    listener=\"#{tiqueteBean.handleSelectClienteTavo()}\"\n                                                    update=\"apellidosPanelGrid\"\/&gt;\n\n                        &lt;\/una:autoCompletePaginator&gt; \n\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--CAMPO: AUTOCOMPLETE\/ VENTANA --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;components:dialogFrameworkData \n                        \n                                                        id=\"clienteDialogFrameworkData\"\n                                                        title=\"#{i18n.tiqueteTavo_clienteTavo_select_label}\"\n                                                        contentWidth=\"800\"\n\n                                                        lOVBean=\"#{clienteTavoLOVBean}\"\n                                                        target=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                        \n                                                        \n                                                        methodName=\"findClientesVivos\"\n                                                        \n                              \n                                                        oncomplete=\"updateClienteAutocomplete();\"\/&gt;\n                                                        &lt;p:remoteCommand name=\"updateClienteAutocomplete\"\n                                                                        action=\"#{tiqueteTavoBean.handleSelectClienteTavo()}\"\n                                                                        process=\"@this\" global=\"true\"\n                                                                        \/&gt;\n\n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"clienteTiqueteTavoMessage\"\n                                for=\"clienteTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    FECHA     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"fechaTiqueteTavoOutputLabel\"\n                                    for=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{i18n.tiqueteTavo_fecha_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"fechaOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:calendar id=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{tiqueteTavoBean.entity.fecha}\"\n                                    showOn=\"button\"\n                                    pattern=\"dd\/MM\/yyyy\"\n                                    navigator=\"true\"\n                                    locale=\"es\"\n                                    size=\"50\"\n                                    required=\"#{true}\"\n                                    &gt;\n                        &lt;\/p:calendar&gt;\n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"fechaMessage\"\n                                    for=\"fechaTiqueteTavoCalendar\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    TOTAL     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"totalTiqueteTavoOutputLabel\"\n                                for=\"totalTiqueteTavoInputText\"\n                                value=\"#{i18n.tiqueteTavo_total_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"totalOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputNumber id=\"totalTiqueteTavoInputNumber\"\n                                    value=\"#{tiqueteTavoBean.entity.total}\"\n                                    thousandSeparator=\",\"\n                                    decimalSeparator=\".\"\n                                    size=\"50\"\n                                    required=\"true\" maxlength=\"50\" size=\"50\"\n                                    \/&gt;    \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"totalTiqueteTavoMessage\"\n                                for=\"totalTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n                &lt;\/p:panelGrid&gt;\n\n\n\n\n\n\n            &lt;\/p:panelGrid&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!-----------------------------  FIN PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n        &lt;\/una:panelForm&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--***********************************   FIN DEFINE   *****************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteTavoService.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abrimos el archivo y agregamos los imports necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los import&#8217;s para los tipos de datos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.Map;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li> Y agregamos la definici\u00f3n del m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param filterSpecifications : filtros de especificaci\u00f3n\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params : objeto que permite el envi\u00f3 de paramentros especiales o adicionales\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findClientesTavoActivos(\n            ArrayList&lt;FilterSpecification&gt; filterSpecifications,\n            Pageable pageable, Map&lt;String, Object&gt; params);\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.Map;\n\n\/**\n * Interface para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface ClienteTavoService extends EntityService&lt;ClienteTavo&gt; {\n\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable);\n\n\n\n    \/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;ClienteTavo&gt; seg\u00fan su c\u00e9dula y la condici\u00f3n de activo\n     * \n     * @param filterSpecifications : filtros de especificaci\u00f3n\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params : objeto que permite el envi\u00f3 de paramentros especiales o adicionales\n     * @return \n     *\/\n    \/**********************************************************************\/\n    public Page&lt;ClienteTavo&gt; findClientesTavoActivo(\n            ArrayList&lt;FilterSpecification&gt; filterSpecifications,\n            Pageable pageable, Map&lt;String, Object&gt; params);\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">ClienteTavoImpl.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El siguiente paso despu\u00e9s de la definici\u00f3n de la funci\u00f3n es crear la implementaci\u00f3n<\/li>\n\n\n\n<li>Para esto agregamos los import&#8217;s necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;\nimport cr.ac.una.cgi.sdkuna.api.filter.Operator;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y las de los tipos de campos <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y agregamos la implmentaci\u00f3n del m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findClientesTavoActivo(cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification, org.springframework.data.domain.Pageable, java.util.Map) }\n     * \n     * @param filterSpecifications : filtros de especificaci\u00f3n\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params : objeto que permite el envi\u00f3 de paramentros especiales o adicionales\n     * @return \n     *\/\n    \/**********************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    @Override\n    public Page&lt;ClienteTavo&gt; findClientesTavoActivo(\n            ArrayList&lt;FilterSpecification&gt; filterSpecifications,\n            Pageable pageable, Map&lt;String, Object&gt; params) {\n\n        FilterSpecification filterSpecificationQueryActivo = new FilterSpecification();\n        filterSpecificationQueryActivo.setField(\"ACTIVO\");\n        filterSpecificationQueryActivo.setLogicFunction(LogicFunction.AND.getExpression());\n        filterSpecificationQueryActivo.setOperator(Operator.EQUAL.getExpression());\n        filterSpecificationQueryActivo.setValue(true);\n\n        filterSpecifications.add(filterSpecificationQueryActivo);\n\n        this.setFilterSpecifications(filterSpecifications);\n\n        return repository.findAll(this, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RSULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;\nimport cr.ac.una.cgi.sdkuna.api.filter.Operator;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.repository.ClienteTavoRepository;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.Map;\n\n\n\n\/**\n * Clase que implementa el servicio {@link ClienteTavoService} para la entidad\n * {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/\/ Estabece que es un servicio\n@Service\n\n\/\/ Y que es de tipo transaccional\n@Transactional\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoServiceImpl extends EntityServiceImpl&lt;ClienteTavo, ClienteTavoRepository&gt; implements ClienteTavoService {\n \n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findAllByCedulaIgnoreCaseLikeAndActivo(java.lang.String, java.lang.Boolean, org.springframework.data.domain.Pageable) }\n     * \n     * @param cedula : c\u00e9dula por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    @Override\n\n    public Page&lt;ClienteTavo&gt; findAllByCedulaIgnoreCaseLikeAndActivo(String cedula, Boolean activo, Pageable pageable) {\n\n        \/\/ NOTA: para campos de tipo String debemos agregar los '%'\n        return repository.findAllByCedulaIgnoreCaseLikeAndActivo(\"%\" + cedula + \"%\", activo, pageable);\n    }\n\n\n\n\n    \/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findClientesTavoActivo(cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification, org.springframework.data.domain.Pageable, java.util.Map) }\n     * \n     * @param filterSpecifications : filtros de especificaci\u00f3n\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params : objeto que permite el envi\u00f3 de paramentros especiales o adicionales\n     * @return \n     *\/\n    \/**********************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    @Override\n    public Page&lt;ClienteTavo&gt; findClientesTavoActivo(\n            ArrayList&lt;FilterSpecification&gt; filterSpecifications,\n            Pageable pageable, Map&lt;String, Object&gt; params) {\n\n        FilterSpecification filterSpecificationQueryActivo = new FilterSpecification();\n        filterSpecificationQueryActivo.setField(\"ACTIVO\");\n        filterSpecificationQueryActivo.setLogicFunction(LogicFunction.AND.getExpression());\n        filterSpecificationQueryActivo.setOperator(Operator.EQUAL.getExpression());\n        filterSpecificationQueryActivo.setValue(true);\n\n        filterSpecifications.add(filterSpecificationQueryActivo);\n\n        this.setFilterSpecifications(filterSpecifications);\n\n        return repository.findAll(this, pageable);\n    }\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Campo oculta de nombre cliente (tiqueteTavoEditForm.xhtml)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a agregar un campo deshabilitado que cuando el usuario seleccione un cliente obtenga su nombre y lo despliegue en este campo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n                    &lt;!--#########################    NOMBRE CLIENTE     ####################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n              \n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"nombreOutputLabel\"\n                                    for=\"nombreInputText\"\n                                    value=\"\" \/&gt;\n\n                    &lt;!--PANEL--&gt;       \n                    &lt;p:outputPanel id=\"nombrePanelGrid\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputText id=\"nombreInputText\"\n                                    value=\"#{tiqueteTavoBean.entity.clienteNombre}\"\n                                        size=\"50\"\n                                        disabled=\"true\"\/&gt;  \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"nombreMessage\"\n                                    for=\"nombreInputText\" \/&gt;\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;ui:composition template=\"\/templates\/crud.xhtml\"\n                xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n                xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n                xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n                xmlns:p=\"http:\/\/primefaces.org\/ui\"\n                xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n                xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"\n                xmlns:sdkuna=\"http:\/\/cgi.una.ac.cr\/sdkuna\"\n                xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.find()}\" \/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"title\"&gt;#{i18n.tiqueteTavo_edit_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;components:toolbar id=\"toolbar\"\n                            editMode=\"true\"\n                            bean=\"#{tiqueteTavoBean}\"\n                            listForm=\"tiqueteTavoListForm\"\n                            editForm=\"tiqueteTavoEditForm\"\n                            container=\"panelForm\"\n                            header=\"#{i18n.tiqueteTavo_edit_form_header}\"\/&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n        &lt;una:panelForm id=\"panelForm\"\n                       i18nKey=\"tiqueteTavo_edit_form_header\"\n                       binding=\"#{panelForm}\"\n                       header=\"#{i18n.tiqueteTavo_edit_form_header}\"&gt;\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------    INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;components:requiredInstructions focus=\"panelForm\" \/&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!----------------------------  FIN INSTRUCTIONS     -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!------------------------------     PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;p:panelGrid columns=\"1\"\n                         layout=\"grid\"\n                         styleClass=\"una-panelgrid-responsive\"&gt;\n\n                &lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-panelgrid-cl1-responsive\"&gt;\n\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    CLIENTE   #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                \n                    &lt;!--LABEL--&gt;        \n                    &lt;p:outputLabel id=\"clienteTiqueteTavoOutputLabel\"\n                                for=\"clienteTiqueteTavoAutoComplete\"\n                                value=\"#{i18n.tiqueteTavo_clienteTavoNombre_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"clienteOutputPanel\"&gt;}\n\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--CAMPO: AUTOCOMPLETE--&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;una:autoCompletePaginator  id=\"clienteTiqueteTavoAutoComplete\"\n\n                                                    paginator=\"true\"\n                                                    paginationRows=\"10\"\n                                                    dropdown=\"true\"\n                                                    forceSelection=\"true\"\n                                                    size=\"50\"\n                                                    required=\"true\"\n                                                    \n\n                                                    value=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                    var=\"clienteTavo\"\n                                                    itemValue=\"#{clienteTavo}\"\n                                                    itemLabel=\"#{clienteTavo.cedula}\"\n                                                    \n                                                    converter=\"#{clienteTavoBean.converter}\"\n\n\n                                                    completeMethod=\"#{tiqueteTavoBean.autocompleteClienteTavo()}\"\n                                                    \n\n                                                    noSelectedOption=\"true\"\n                                                    noSelectedLabel=\"#{i18n.tiquetetavo_clienteTavo_select_label}\"\n                                                    onNoSelectedOption=\"#{tiqueteTavoBean.handleClearClienteTavo()}\"\n                                                    &gt;\n                                                    \n                                                    &lt;p:ajax event=\"itemSelect\"\n                                                    process=\"@this\" global=\"true\"\n                                                    listener=\"#{tiqueteBean.handleSelectClienteTavo()}\"\n                                                    update=\"apellidosPanelGrid\"\/&gt;\n\n                        &lt;\/una:autoCompletePaginator&gt; \n\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--CAMPO: AUTOCOMPLETE\/ VENTANA --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                        &lt;components:dialogFrameworkData \n                        \n                                                        id=\"clienteDialogFrameworkData\"\n                                                        title=\"#{i18n.tiqueteTavo_clienteTavo_select_label}\"\n                                                        contentWidth=\"800\"\n\n                                                        lOVBean=\"#{clienteTavoLOVBean}\"\n                                                        target=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                        \n                                                        \n                                                        methodName=\"findClientesVivos\"\n                                                        \n                              \n                                                        oncomplete=\"updateClienteAutocomplete();\"\/&gt;\n                                                        &lt;p:remoteCommand name=\"updateClienteAutocomplete\"\n                                                                        action=\"#{tiqueteTavoBean.handleSelectClienteTavo()}\"\n                                                                        process=\"@this\" global=\"true\"\n                                                                        \/&gt;\n\n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"clienteTiqueteTavoMessage\"\n                                for=\"clienteTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#########################    NOMBRE CLIENTE     ####################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n              \n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"nombreOutputLabel\"\n                                    for=\"nombreInputText\"\n                                    value=\"\" \/&gt;\n\n                    &lt;!--PANEL--&gt;       \n                    &lt;p:outputPanel id=\"nombrePanelGrid\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputText id=\"nombreInputText\"\n                                    value=\"#{tiqueteTavoBean.entity.clienteNombre}\"\n                                        size=\"50\"\n                                        disabled=\"true\"\/&gt;  \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"nombreMessage\"\n                                    for=\"nombreInputText\" \/&gt;\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    FECHA     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"fechaTiqueteTavoOutputLabel\"\n                                    for=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{i18n.tiqueteTavo_fecha_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"fechaOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:calendar id=\"fechaTiqueteTavoCalendar\"\n                                    value=\"#{tiqueteTavoBean.entity.fecha}\"\n                                    showOn=\"button\"\n                                    pattern=\"dd\/MM\/yyyy\"\n                                    navigator=\"true\"\n                                    locale=\"es\"\n                                    size=\"50\"\n                                    required=\"#{true}\"\n                                    &gt;\n                        &lt;\/p:calendar&gt;\n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"fechaMessage\"\n                                    for=\"fechaTiqueteTavoCalendar\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n\n\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--#############################    TOTAL     #########################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    \n                    &lt;!--LABEL--&gt;   \n                    &lt;p:outputLabel id=\"totalTiqueteTavoOutputLabel\"\n                                for=\"totalTiqueteTavoInputText\"\n                                value=\"#{i18n.tiqueteTavo_total_label}\"\/&gt;  \n\n                    &lt;!--PANEL--&gt;\n                    &lt;p:outputPanel id=\"totalOutputPanel\"&gt;\n\n                        &lt;!--CAMPO--&gt;\n                        &lt;p:inputNumber id=\"totalTiqueteTavoInputNumber\"\n                                    value=\"#{tiqueteTavoBean.entity.total}\"\n                                    thousandSeparator=\",\"\n                                    decimalSeparator=\".\"\n                                    size=\"50\"\n                                    required=\"true\" maxlength=\"50\" size=\"50\"\n                                    \/&gt;    \n\n                        &lt;!--MENSAJE--&gt;\n                        &lt;p:message id=\"totalTiqueteTavoMessage\"\n                                for=\"totalTiqueteTavoInputText\" \/&gt;\n\n                    &lt;\/p:outputPanel&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n                &lt;\/p:panelGrid&gt;\n\n\n\n\n\n\n            &lt;\/p:panelGrid&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n            &lt;!-----------------------------  FIN PANELGRID       -----------------------------------------&gt;\n            &lt;!--------------------------------------------------------------------------------------------&gt;\n\n\n        &lt;\/una:panelForm&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--***********************************   FIN DEFINE   *****************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Actualizaci\u00f3n de campos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora que los componentes est\u00e1n listos solo nos queda decirle que cada vez que el usuario seleccione un cliente actualice los campos necesarios para est caso el campo autocomplete y el campo deshabilitado de nombre<\/li>\n\n\n\n<li>Para esto exite la funci\u00f3n de \u00abupdate\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>update=\"clienteOutputPanel, nombrePanelGrid\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>entonces la aagregamos a los componentes de\n<ul class=\"wp-block-list\">\n<li>autocomplete &#8211; ajax<\/li>\n\n\n\n<li>modal<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Modificamos autocomplete <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax event=\"itemSelect\"\n                                                    process=\"@this\" global=\"true\"\n                                                    listener=\"#{tiqueteBean.handleSelectClienteTavo()}\"\n                                                    update=\"apellidosPanelGrid\"\/&gt;\n\n\nX\n\n&lt;p:ajax event=\"itemSelect\"\n                                                    process=\"@this\" global=\"true\"\n                                                    listener=\"#{tiqueteBean.handleSelectClienteTavo()}\"\n                                                    update=\"clienteOutputPanel, nombrePanelGrid\"\/&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"585\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_282.png\" alt=\"\" class=\"wp-image-12883\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_282.png 820w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_282-300x214.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_282-768x548.png 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modal<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> &lt;components:dialogFrameworkData \n                        \n                                                        id=\"clienteDialogFrameworkData\"\n                                                        title=\"#{i18n.tiqueteTavo_clienteTavo_select_label}\"\n                                                        contentWidth=\"800\"\n\n                                                        lOVBean=\"#{clienteTavoLOVBean}\"\n                                                        target=\"#{tiqueteTavoBean.entity.clienteTavo}\"\n                                                        \n                                                        \n                                                        methodName=\"findClientesVivos\"\n                                                        \n                              \n                                                        oncomplete=\"updateClienteAutocomplete();\"\n                                                        \n                                                        update=\"clienteOutputPanel, nombrePanelGrid\"\n                                                        \/&gt;\n                                                        &lt;p:remoteCommand name=\"updateClienteAutocomplete\"\n                                                                        action=\"#{tiqueteTavoBean.handleSelectClienteTavo()}\"\n                                                                        process=\"@this\" \n                                                                        global=\"true\"\n                                                                        update=\"clienteOutputPanel, nombrePanelGrid\"\n                                                                        \/&gt;\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_281-1024x573.png\" alt=\"\" class=\"wp-image-12882\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_281-1024x573.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_281-300x168.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_281-768x430.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_281.png 1060w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y as\u00ed le indicamos que debe actualizar los paneles de\n<ul class=\"wp-block-list\">\n<li>clienteOutputPanel<\/li>\n\n\n\n<li>nombrePanelGrid<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Compilaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora procedemos a compilar los proyectos de\n<ul class=\"wp-block-list\">\n<li>aggregator<\/li>\n\n\n\n<li>pbs-abs<\/li>\n\n\n\n<li>webapp<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Registro de p\u00e1ginas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos a <a rel=\"noreferrer noopener\" href=\"http:\/\/10.0.100.30:8080\/sigesa-webapp\/security\/login.xhtml\" target=\"_blank\">http:\/\/10.0.100.30:8080\/sigesa-webapp\/security\/login.xhtml<\/a><\/li>\n\n\n\n<li>con el usuario 115080868\/xxxxxxxx<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"580\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_283.png\" alt=\"\" class=\"wp-image-12887\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_283.png 456w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_283-236x300.png 236w\" sizes=\"(max-width: 456px) 100vw, 456px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos a sas-&gt; sas-&gt; sas mantenimiento -&gt;Lista de Recursos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"798\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_284.png\" alt=\"\" class=\"wp-image-12888\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_284.png 769w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_284-289x300.png 289w\" sizes=\"(max-width: 769px) 100vw, 769px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos el rol<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"784\" height=\"836\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_285.png\" alt=\"\" class=\"wp-image-12889\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_285.png 784w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_285-281x300.png 281w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_285-768x819.png 768w\" sizes=\"(max-width: 784px) 100vw, 784px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guardamos <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"726\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_286.png\" alt=\"\" class=\"wp-image-12891\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_286.png 818w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_286-300x266.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_286-768x682.png 768w\" sizes=\"(max-width: 818px) 100vw, 818px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Registramos la p\u00e1gina de edici\u00f3n<\/li>\n\n\n\n<li>copiando<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"817\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_287.png\" alt=\"\" class=\"wp-image-12892\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_287.png 815w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_287-300x300.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_287-150x150.png 150w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_287-768x770.png 768w\" sizes=\"(max-width: 815px) 100vw, 815px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos rol<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"841\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_288.png\" alt=\"\" class=\"wp-image-12893\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_288.png 655w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_288-234x300.png 234w\" sizes=\"(max-width: 655px) 100vw, 655px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regresamos  y guardamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"749\" height=\"802\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_289.png\" alt=\"\" class=\"wp-image-12894\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_289.png 749w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_289-280x300.png 280w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora podemos ingresar a la p\u00e1ginas<\/li>\n\n\n\n<li>Salimos del usuario y ingresamos con root-juan\/xxxxxxxx<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"597\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_290.png\" alt=\"\" class=\"wp-image-12895\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_290.png 518w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_290-260x300.png 260w\" sizes=\"(max-width: 518px) 100vw, 518px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>http:\/\/10.0.100.30:8080\/sigesa-webapp\/pages\/tiquetesTavoListForm.xhtml<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Dia 3: Maestro detalle<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 01: Creaci\u00f3n de tabla<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed vamos a crear tabla \u00abDETALLE_TIQUETE\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"939\" height=\"149\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_295.png\" alt=\"\" class=\"wp-image-12908\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_295.png 939w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_295-300x48.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_295-768x122.png 768w\" sizes=\"(max-width: 939px) 100vw, 939px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>abrimos SQL y ejecutamos<\/li>\n\n\n\n<li>NOTA-SIGEGA: El nombre de columna de referecia debe ser el nombre de la tabla a la que hace referencia<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM DETALLE_TIQUETE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"DETALLE_TIQUETE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_DETALLE_TIQUETE_TAVO\"       NUMBER (19,0)       NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"TIQUETE\"                       NUMBER (19,0)       NOT NULL ENABLE,\n    \"NOMBRE\"                        VARCHAR2(50)        NOT NULL ENABLE,\n    \"CANTIDAD\"                      NUMBER(5,2)         NOT NULL ENABLE,\n    \"PRECIO_TOTAL\"                  NUMBER(22,2)        NOT NULL ENABLE,\n\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"                DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"              NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"            DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"          NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"                       NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"            NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_DETALLE_TIQUETE_TAVO\" PRIMARY KEY(\"ID_DETALLE_TIQUETE_TAVO\"),\n    \n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS CLIENTE_TAVO                         *\/\n    \/********************************************************\/\n    CONSTRAINT FK_DET_TIQ_TAV_TIQ_TAV FOREIGN KEY(TIQUETE)        REFERENCES PBS.TIQUETE_TAVO(ID_TIQUETE_TAVO),\n\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_DET_TIQ_TAV_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_DET_TIQ_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_DET_TIQ_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"TIQUETE\"            IS 'Relaciona el detalle tiquete con el tiquete';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"NOMBRE\"             IS 'Nombre del producto';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"CANTIDAD\"           IS 'Cantidad del producto';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"PRECIO_TOTAL\"       IS 'Precio total del producto';\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_DETALLE_TIQUETE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM DETALLE_TIQUETE_TAVO FOR \"PBS\".\"DETALLE_TIQUETE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_DETALLE_TIQUETE_TAVO FOR PBS.SQ_DETALLE_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.DETALLE_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_DETALLE_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"DETALLE_TIQUETE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM DETALLE_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA                                       *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_DETALLE_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM DETALLE_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM SQ_DETALLE_TIQUETE_TAVO;\nDROP TABLE \"PBS\".DETALLE_TIQUETE_TAVO;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 02: DetalleTiqueteTavo.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear el archivo entity para la tabla \u00abDETALLE_TIQUETE_TAVO\u00bb<\/li>\n\n\n\n<li>RUTA: sigesa-jpa\/src\/main\/java\/cr\/ac\/una\/cgi\/sigesa\/pbs\/abs\/domain<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport javax.persistence.Temporal;\n\n\n\n\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link DetalleTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 11\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"DETALLE_TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_DETALLE_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_DETALLE_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class DetalleTiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  +++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE ATRIBUTOS  +++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Nombre\n    @Column(name = \"NOMBRE\")\n    private String nombre;\n\n    \/\/ Cantidad\n    @Column(name = \"CANTIDAD\")\n    private double cantidad;\n\n    \/\/ Precio total\n    @Column(name = \"PRECIO_TOTAL\")\n    private double precioTotal;\n\n    \n\n\n\n\n    \n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET       ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n    \/\/ ***************************************\n    \/\/ Nombre\n    \/\/ ***************************************\n    public String getNombre() {\n        return nombre;\n    }\n\n    public void setNombre(String nombre) {\n        this.nombre = nombre;\n    }\n\n    \/\/ ***************************************\n    \/\/ Cantidad\n    \/\/ ***************************************\n    public double getCantidad() {\n        return cantidad;\n    }\n\n    public void setCantidad(double cantidad) {\n        this.cantidad = cantidad;\n    }\n\n    \/\/ ***************************************\n    \/\/ Precio total\n    \/\/ ***************************************\n    public double getPrecioTotal() {\n        return precioTotal;\n    }\n\n    public void setPrecioTotal(double precioTotal) {\n        this.precioTotal = precioTotal;\n    }\n    \n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  MAPEO       +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n   \n   \n  \n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 03:  DetalleTiqueteTavo.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear el archivo repository para la tabla \u00abDETALLE_TIQUETE_TAVO\u00bb<\/li>\n\n\n\n<li>RUTA: sigesa-jpa\/src\/main\/java\/cr\/ac\/una\/cgi\/sigesa\/pbs\/abs\/repository<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.repository;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiqueteTavo;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Repository;\n\n\n\/**\n * Repository para la administraci\u00f3n de la entidad {@link DetalleTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 11\/10\/2022\n *\/\n\n \/\/ Estable que es un repositorio\n@Repository\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic interface DetalleTiqueteTavoRepository extends GenericRepository&lt;DetalleTiqueteTavo&gt; {\n    \n    \n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************     FIN  DEFINICIONES        ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n}\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ManyToOne: para solicitudes<\/li>\n\n\n\n<li>OneToMany: para mantenimientos<\/li>\n\n\n\n<li>cascadeTYPE.ALL: permite gestionar los datos de bases de datos en cascada<\/li>\n\n\n\n<li>orphanRemoval = true: establece que los hierfanos se eliminen<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Crear mapeo Maestro &#8211; Detalle<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear un mapeo de una Entity Marestro con un Detalle<\/li>\n\n\n\n<li>Debemos utilizar:OneToMany<\/li>\n\n\n\n<li>Otro detalle que no se va devolver un objeto sino una lista de objetos List&lt;DetalleTiqueteTavo&gt;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">TiqueteTavo.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vamos a crear la relaci\u00f3n OneTo Many -&gt; Un tiquete tiene muchos detalles<\/li>\n\n\n\n<li>Debemos agregar los import&#8217;s para mapeos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.OneToMany;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los import&#8217;s para BD y CascadeType<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\nimport javax.persistence.Temporal;\nimport javax.persistence.CascadeType;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y el necesario para manejar listas<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.List;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos crear la relaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n    \/\/ Mapeo para detalleTiquete\n    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)\n    @JoinColumn(name = \"TIQUETE\", nullable = false)\n    private List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y  ahora creamos los get&#8217;s y set&#8217;s de la variable para que devuelva una lista<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  MAPEO       +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n   \n   \n    \/\/ ***************************************\n    \/\/ Cliente\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n\n    \/\/ ***************************************\n    \/\/ DetalleTiquete\n    \/\/ ***************************************\n    public List&lt;DetalleTiqueteTavo&gt; getDetalleTiqueteTavo() {\n        return detalleTiqueteTavo;\n    }\n\n    public void setDetalleTiqueteTavo(List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo) {\n        this.detalleTiqueteTavo = detalleTiqueteTavo;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\n\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\nimport javax.persistence.Temporal;\nimport javax.persistence.CascadeType;\n\n\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.ManyToOne;\nimport javax.persistence.OneToMany;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.Transient;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport java.util.List;\nimport java.math.BigDecimal;\n\n\n\n\n\n\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE MAPEO  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n    \/\/ Cliente Definici\u00f3n para Mapeos\n    \/\/ LAZY: solo va traer la primera relaci\u00f3n\n    \/\/ JoinColumn: va crear una relaci\u00f3n JOIN del campo de la BD \n    \/\/ nullable = false: este valor no puede ser nulo\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;DetalleTiqueteTavo\n    \/\/ ***************************************\n    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)\n    @JoinColumn(name = \"TIQUETE\", nullable = false)\n    private List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo;\n\n    \n\n\n\n    \n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE TRASIENT      ++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ Cliente: C\u00e9dula\n    @Transient\n    private String clienteCedula;\n\n    \/\/ Cliente: Fecha Nacimiento\n    @Transient\n    private Date clienteFechaNacimiento;\n\n    \/\/ Cliente: Nombre\n    @Transient\n    private String clienteNombre;\n\n    \/\/ Cliente: Activo\n    @Transient\n    private Boolean clienteActivo;\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       DEFINICI\u00d3N DE CAMPOS  ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n\n    \/\/ Fecha\n    @Column(name = \"FECHA\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fecha;\n\n    \/\/ Total\n    @Column(name = \"TOTAL\")\n    private BigDecimal total;\n\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++             GET y SET  CAMPOS    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \n\n    \/\/ ***************************************\n    \/\/ Fecha\n    \/\/ ***************************************\n    public Date getFecha() {\n        return fecha;\n    }\n\n    public void setFecha(Date fecha) {\n        this.fecha = fecha;\n    }\n\n    \/\/ ***************************************\n    \/\/ Total\n    \/\/ ***************************************\n    public BigDecimal getTotal() {\n        return total;\n    }\n\n    public void setTotal(BigDecimal total) {\n        this.total = total;\n    }\n    \n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  MAPEO       +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n   \n   \n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;DetalleTiqueteTavo\n    \/\/ ***************************************\n    public List&lt;DetalleTiqueteTavo&gt; getDetalleTiqueteTavo() {\n        return detalleTiqueteTavo;\n    }\n\n    public void setDetalleTiqueteTavo(List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo) {\n        this.detalleTiqueteTavo = detalleTiqueteTavo;\n    }\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++           GET y SET  TRASIENT    +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n        clienteCedula = \"\";\n        \n        if (clienteTavo != null) {\n            clienteCedula = clienteTavo.getCedula();\n        }\n        \n        return clienteCedula;\n    }\n\n    public void setClienteCedula(String clienteCedula) {\n        this.clienteCedula = clienteCedula;\n    }\n\n\n    \/\/ Cliente: Nombre\n    public String getClienteNombre() {\n        clienteNombre = \"\";\n        \n        if (clienteTavo != null) {\n            clienteNombre = clienteTavo.getNombre();\n        }\n        \n        return clienteNombre;\n    }\n\n    public void setClienteNombre(String clienteNombre) {\n        this.clienteNombre = clienteNombre;\n    }\n\n\n    \/\/ Cliente: Fecha de Nacimiento\n    public Date getClienteFechaNacimiento() {\n        clienteFechaNacimiento = null;\n        \n        if (clienteTavo != null) {\n            clienteFechaNacimiento = clienteTavo.getFechaNacimiento();\n        }\n        \n        return clienteFechaNacimiento;\n    }\n\n    public void setClienteFechaNacimiento(Date clienteFechaNacimiento) {\n        this.clienteFechaNacimiento = clienteFechaNacimiento;\n    }\n\n\n\n    \/\/ Cliente: Activo\n    public Boolean getClienteActivo() {\n        clienteActivo = null;\n        \n        if (clienteTavo != null) {\n            clienteActivo = clienteTavo.getActivo();\n        }\n        \n        return clienteActivo;\n    }\n\n    public void setClienteActivo(Boolean clienteActivo) {\n        this.clienteActivo = clienteActivo;\n    }\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">DetalleTiqueteTavo.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que tenemos el mapeo OneToMany dentro de TiqueteTavo.java debemos hacer la bidirecci\u00f3n de ManyToOne dentro del detalle ya que Muchos detalles pertenecen a UN Tiquete<\/li>\n\n\n\n<li>Donde:\n<ul class=\"wp-block-list\">\n<li><strong>@ManyToOne<\/strong>: Muchos a UNO<\/li>\n\n\n\n<li>fetch = FetchType.LAZY: solo primera relaci\u00f3n<\/li>\n\n\n\n<li>optional = false:<\/li>\n\n\n\n<li>name = \u00abTIQUETE\u00bb: Nombre del campo de la BD donde se va a relacionar<\/li>\n\n\n\n<li>referencedColumnName = \u00abID_TIQUETE\u00bb,: Campo de la BD de la tabla \u00abTIQUETE_TAVO\u00bb que va a relacionar<\/li>\n\n\n\n<li>nullable = false,<\/li>\n\n\n\n<li>insertable = false<\/li>\n\n\n\n<li>updatable = false<br><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n\/\/ MAPEO: Detalle-&gt;TiqueteTavo\n    \/\/ ***************************************\n    \/\/ Mapeo para tiqueteTavo (los nombres son de la BD)\n    @ManyToOne(fetch = FetchType.LAZY, optional = false)\n    @JoinColumn(name = \"TIQUETE\",\n            referencedColumnName = \"ID_TIQUETE_TAVO\",\n            nullable = false,\n            insertable = false,\n            updatable = false)\n    private TiqueteTavo tiqueteTavo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos agregar los get&#8217;s y set&#8217;s para poder trabajar con la variables<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ MAPEO: Detalle-&gt;TiqueteTavo\n    \/\/ ***************************************\n    public TiqueteTavo getTiqueteTavo() {\n        return tiqueteTavo;\n    }\n\n    public void setTiqueteTavo(TiqueteTavo tiqueteTavo) {\n        this.tiqueteTavo = tiqueteTavo;\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Proyecto abs -web-&gt;model<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos archivo DetalleTiqueteASERBean.java<\/li>\n\n\n\n<li>ASER: Add \/ Select \/ Edit \/ Remove<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>package cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASER;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERImpl;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiquete;\n\n\/**\n *\n * @author \n *\/\n@Component\n@Scope(\"session\")\npublic class DetalleTiqueteBean extends ASERImpl&lt;DetalleTiquete&gt; implements ASER {\n\n    public void init() {\n\n        List&lt;ASERColumn&gt; columns = new ArrayList&lt;&gt;();\n        \n        \/*\n        columns.add(new ASERColumn(\"nombre\", getI18n(\"xxx_xxx_label\"), true));\n        *\/\n\n        this.setColumnsDetails(columns);\n    }\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos initi<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n        \/*************************************************************************************************\/\n        \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n        \/*************************************************************************************************\/\n        \/*************************************************************************************************\/\n        \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los clienteTavo\n\n\n        \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n        @PostConstruct\n        public void init() {\n\n            \/\/Crea una lista de columnas\n            List&lt;ASERColumn&gt; columns = new ArrayList&lt;&gt;();\n\n            \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n            ASERColumn column1 = new ASERColumn(\"nombre\",                   getI18n(\"detalleTiquete_cnombre_label\"),            true);\n            ASERColumn column2 = new ASERColumn(\"cantidad\",                 getI18n(\"detalleTiquete_cantidad_label\"),           true);\n            ASERColumn column3 = new ASERColumn(\"precio\",                   getI18n(\"detalleTiquete_precio_label\"),             true);\n           \n    \n            \n            \/\/Agregamos las columnas a la variable\n            columns.add(column1);\n            columns.add(column2);\n            columns.add(column3);\n\n            \/\/ Enviamos las columnas\n            this.setTableColumns(columns);\n        }\n        \/*************************************************************************************************\/\n        \/*************************************************************************************************\/\n        \/*************************************************************************************************\/\n        \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto hemos creado el mapeo de Maestro Detalle<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Maestro Detalle &#8211; ASER (DetalleTiqueteASERBean.java)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear un mantenimiento de tipo SIGESA  &#8211; ASER<\/li>\n\n\n\n<li>ASER: <\/li>\n\n\n\n<li>RUTA: PROYECTO: sigesa-pbs-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;model<\/li>\n\n\n\n<li>y creamos el ASER DetalleTiqueteASERBean.java que va contener la funci\u00f3n init()<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.ASER;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERImpl;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiqueteTavo;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link DetalleTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 11\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class DetalleTiqueteASERBean extends ASERImpl&lt;DetalleTiqueteTavo&gt; implements ASER {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los detalleTiqueteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejecutar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;ASERColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        ASERColumn column1 = new ASERColumn(\"nombre\",                   getI18n(\"detalleTiquete_cnombre_label\"),            true);\n        ASERColumn column2 = new ASERColumn(\"cantidad\",                 getI18n(\"detalleTiquete_cantidad_label\"),           true);\n        ASERColumn column3 = new ASERColumn(\"precio\",                   getI18n(\"detalleTiquete_precio_label\"),             true);\n        \n\n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas pero con spublic class DetalleTiqueteASERBean extends ASERImpl&lt;DetalleTiqueteTavo&gt; implements ASER {etColumnsDetails\n        this.setColumnsDetails(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora es importante comprender que de momento hemos crear la clase detalleTiqueteTavo, su repositorio y un bean que contiene su funci\u00f3n init()<\/li>\n\n\n\n<li>Pero ahora debemos tomar en cuenta que este componete va se invocado desde tiquete<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TiqueteTavoBea.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por esta raz\u00f3n debemos crear dentro de tiquetesBean.java una funci\u00f3n que verifique\n<ul class=\"wp-block-list\">\n<li>Que obtenga los datos del detalle del tiquete seleccionado<\/li>\n\n\n\n<li>Los inserte en una instancia de memoria <\/li>\n\n\n\n<li>Actualice los detalles de la propia instancia<\/li>\n\n\n\n<li>Y que para evitar errores verifique si la instancia a sido creada y si no la cre y ejecute la funci\u00f3n de init(), creada anteriormente<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Entonces los primero que debemos hacer es un @AutoWired de la relaci\u00f3n Tiquete-&gt;detalleTiquete<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n\/\/ MAPEO: Tiquete-&gt;detalleTiquete\n\/\/ ***************************************\n@Autowired\nDetalleTiqueteASERBean detalleTiqueteASERBean;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego podemos crear la funci\u00f3n <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************                 FUNCION: initDetails                   *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encargar de inicializar la lista de detalles de tiquete\n    \/\/ EJEMPLO: initDetails()\n\n\n    public void initDetails() {\n        this.getEntity().setDetalleTiqueteTavo(     detalleTiqueteASERBean.setDetails(    this.getEntity().getDetalleTiqueteTavo()   )      );\n   \n        if (!isPostBack()) {\n            detalleTiqueteASERBean.init();\n        }\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\n\/\/ *********************************************************************\n\/\/ Para hacer autowired\n\/\/ *********************************************************************\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TiqueteTavoBean extends CRUDImpl&lt;TiqueteTavo, TiqueteTavoService&gt; implements CRUD {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************    ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;clienteTavo\n    \/\/ ***************************************\n    @Autowired\n    ClienteTavoBean clienteTavoBean;\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;detalleTiquete\n    \/\/ ***************************************\n    @Autowired\n    DetalleTiqueteASERBean detalleTiqueteASERBean;\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************** FIN ATRIBUTOS: AUTOWIRED   ******************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los clienteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejecutar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        CRUDColumn column1 = new CRUDColumn(\"clienteCedula\",            getI18n(\"tiqueteTavo_clienteCedula_label\"),             true, \"clienteTavo.clienteCedula\");\n        CRUDColumn column2 = new CRUDColumn(\"clienteNombre\",            getI18n(\"tiqueteTavo_clienteNombre_label\"),             true, \"clienteTavo.clienteNombre\");\n        CRUDColumn column3 = new CRUDColumn(\"clienteFechaNacimiento\",   getI18n(\"tiqueteTavo_cclienteFechaNacimiento_label\"),   true, \"clienteTavo.clienteFechaNacimiento\");\n        CRUDColumn column4 = new CRUDColumn(\"clienteActivo\",            getI18n(\"tiqueteTavo_clienteActivo_label\"),             true, \"clienteTavo.clienteActivo\");\n\n        CRUDColumn column5 = new CRUDColumn(\"fecha\",                    getI18n(\"tiqueteTavo_fecha_label\"),                     true);\n        CRUDColumn column6 = new CRUDColumn(\"total\",                    getI18n(\"tiqueteTavo_total_label\"),                     true);\n \n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n        columns.add(column5);\n        columns.add(column6);\n\n        \/\/ Enviamos las columnas con setTableColumns\n        this.setTableColumns(columns);\n        \n        \/**********************************************************************\/\n        \/**********************************************************************\/\n        \/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n        \/**********************************************************************\/\n        \/**********************************************************************\/\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************           FUNCION-AUTOWIRED: completeClienteTavo       *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  consume el servicio de ClienteBean -&gt; findAllByCedulaIgnoreCaseLikeAndActivo\n    \/\/ EJEMPLO: completeClienteTavo(\"juan\", pageable) \n    \n    public Page&lt;ClienteTavo&gt; autocompleteClienteTavo(String query, Pageable pageable) {\n\n        \/\/NOTA: Boolean.TRUE: solo los clientes activos\n        return clienteTavoBean.findAllByCedulaIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pageable);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleClearClienteTavo            *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  limpia la seleccion del autocomplete para clienteTavo\n    \/\/ EJEMPLO: handleClearClienteTavo() \n    \n    public void handleClearClienteTavo() {\n\n        \/\/Objeto\n        this.getEntity().setClienteTavo(null);\n        \n        \/\/Campos\n        this.getEntity().setClienteCedula(\"\");\n        this.getEntity().setClienteNombre(\"\"); \n        this.getEntity().setClienteFechaNacimiento(null);\n        this.getEntity().setClienteActivo(null);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************             FUNCION: handleSelectClienteTavo           *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encargar de \"pintar\" los valores del cliente seleccionado por el usuario\n    \/\/ EJEMPLO: handleSelectClienteTavo() \n    \n    public void handleSelectClienteTavo() {\n        if (this.getEntity().getClienteTavo() != null) {\n\n            this.getEntity().setClienteCedula(this.getEntity().getClienteTavo().getCedula());\n            this.getEntity().setClienteNombre(this.getEntity().getClienteTavo().getNombre());\n            this.getEntity().setClienteFechaNacimiento(this.getEntity().getClienteTavo().getFechaNacimiento());\n            this.getEntity().setClienteActivo(this.getEntity().getClienteTavo().getActivo());\n        }\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************                 FUNCION: initDetails                   *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encargar de inicializar la lista de detalles de tiquete\n    \/\/ EJEMPLO: initDetails()\n\n\n    public void initDetails() {\n        this.getEntity().setDetalleTiqueteTavo(     detalleTiqueteASERBean.setDetails(    this.getEntity().getDetalleTiqueteTavo()   )      );\n   \n        if (!isPostBack()) {\n            detalleTiqueteASERBean.init();\n        }\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    \n}\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">tiqueteEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora como el componente los vamos a agregar para que salga en tiqueteEditForm<\/li>\n\n\n\n<li>Vamos a abrir este archivo y darle que tambien renderice este componente<\/li>\n\n\n\n<li>Modificamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.find()}\" \/&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.find()}\" \/&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{tiqueteTavoBean.initDetails()}\"\/&gt;  \n    &lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora podemos agregar en componete de TabView justo despu\u00e9s del panelGrid y antes del panelForm<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"259\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_298-1.png\" alt=\"\" class=\"wp-image-12936\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_298-1.png 980w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_298-1-300x79.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_298-1-768x203.png 768w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- +++++++++++++++++++++++++        TABLEVIEW        ++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;p:tabView \n                        id=\"tiqueteTabView\"\n                        activeIndex=\"#{tiqueteTavoBean.activeTab}\" &gt;\n\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++        TAB01            ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;p:tab id=\"tabDetalleTiquete\" title=\"#{i18n.tiqueteTavo_tab01_label}\"&gt;\n\n\n          \n\n                &lt;\/p:tab&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++     FIN TAB01           ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n\n\n\n\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++        TAB02            ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;p:tab id=\"tabDetalleTavo\" title=\"#{i18n.tiqueteTavo_tab02_label}\"&gt;\n\n                &lt;\/p:tab&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++     FIN TAB02           ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n\n\n\n\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++        TAB03            ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;p:tab id=\"tabDetalleLuis\" title=\"#{i18n.tiqueteTavo_tab03_label}\"&gt;\n                &lt;\/p:tab&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++     FIN TAB03           ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n            &lt;\/p:tabView&gt;\n\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- +++++++++++++++++++++++++    FIN TABLEVIEW        ++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto abremos creado un componete TabView<\/li>\n\n\n\n<li>Ahora dentro del Tab01 vamos agregar el componente utilizado por SIGESA para crear detalles detailNoEditTableHorizontal<\/li>\n\n\n\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n                    &lt;!--##################     detailNoEditTableHorizontal    ##############################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;components:detailNoEditTableHorizontal\n                        id=\"detalleTiqueteTavo_DetailNoEditTableHorizontal\"\n                        header=\"#{i18n.tiqueteTavo_detalleTiquete_label}\"\n                        bean=\"#{detalleTiqueteASERBean}\"\n                        masterBean=\"#{tiqueteTavoBean}\"\n                        editForm=\"detalleTiqueteTavoEditForm\"\n                        container=\"tiqueteTabView:\"\/&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--####################################################################################--<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto estamos haciendo que tiqueteTavo pueda desplegar un tabView que contiene en el tab 01 un componete detailNoEditTableHorizontal que va listar el detalle de los tiquetes<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">detalleTiqueteTavoEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para que en tiquetes podamos listar los detalles debemos crear el archivo de interfaz <\/li>\n\n\n\n<li>RUTA: sigesa-pbs-abs-web\/src\/main\/resources\/pages\/<\/li>\n\n\n\n<li>Y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\nCopyright (c) 2022.\nCentro de Gestion Informatica\nDireccion de Tecnologias de la Informacion y Comunicacion\nUniversidad Nacional - Costa Rica\nhttp:&#47;&#47;www.una.ac.cr\n--&gt;\n\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--*****************************   COMPOSICI\u00d3N   **********************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n\n&lt;ui:composition template=\"\/templates\/crud.xhtml\"\n                xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n                xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n                xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n                xmlns:p=\"http:\/\/primefaces.org\/ui\"\n                xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n                xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"\n                xmlns:sdkuna=\"http:\/\/cgi.una.ac.cr\/sdkuna\"\n                xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************      PRERENDER     *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;!-- Debemos eliminar esto ya que se invoco desde tiquete ---&gt;\n        &lt;!-- f:event type=\"preRenderView\" listener=\"#{detalleTiqueteTavoBean.find()}\" \/ --&gt;\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       TITLE        *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n    &lt;ui:define name=\"title\"&gt;#{i18n.detalleTiqueteTavo_edit_form_title}&lt;\/ui:define&gt;\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--*****************************       DEFINE       *******************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;ui:define name=\"contentCRUD\"&gt;\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n        &lt;components:detailToolbar\n                            masterBean=\"#{tiqueteTavoBean}\"      \n                            bean=\"#{detalleTiqueteTavoASERBean}\"    \n                            listForm=\"tiqueteTavoEditForm\"\n                            editForm=\"detalleTiqueteTavoEditForm\"\n                            container=\"panelForm\"\/&gt;\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;una:panelForm id=\"panelForm\"\n                       i18nKey=\"detalleTiqueteTavo_edit_form_header\"\n                       binding=\"#{panelForm}\"\n                       header=\"#{i18n.detalleTiqueteTavo_edit_form_header}\"&gt;\n\n\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- +++++++++++++++++++++++++    INSTRUCTIONS     ++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;components:requiredInstructions focus=\"panelForm\" \/&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++  FIN INSTRUCTIONS     +++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n\n\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- +++++++++++++++++++++++++++    PANELGRID 1     +++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;p:panelGrid columns=\"1\"\n                         layout=\"grid\"\n                         styleClass=\"una-panelgrid-responsive\"&gt;\n            \n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++++    PANELGRID 2     +++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-panelgrid-cl1-responsive\"&gt;\n\n\n\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--#########################    NOMBRE PRODUCTO    ####################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                                    \n                                            \n                            &lt;!--LABEL--&gt;   \n                            &lt;p:outputLabel id=\"nombreOutputLabel\"\n                            for=\"nombreInputText\"\n                            value=\"#{i18n.detalleTiqueteTavo_nombre_label}\" \/&gt;\n\n                            &lt;!--PANEL--&gt;       \n                            &lt;p:outputPanel id=\"nombreOutputPanel\"&gt;\n\n                                &lt;!--CAMPO--&gt;\n                                &lt;p:inputText \n                                            id=\"nombreInputText\"\n                                            value=\"#{detalleTiqueteTavoASERBean.entity.nombre}\"\n                                            size=\"50\"\n                                            disabled=\"true\"\/&gt;  \n\n                                &lt;!--MENSAJE--&gt;\n                                &lt;p:message id=\"nombreMessage\"\n                                            for=\"nombreInputText\" \/&gt;\n                            &lt;\/p:outputPanel&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n\n\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--#############################     CANTIDAD     #####################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                            \n                            &lt;!--LABEL--&gt;   \n                            &lt;p:outputLabel      id=\"cantidadOutputLabel\"\n                                                for=\"cantidadInputNumber\"\n                                                value=\"#{i18n.detalleTiqueteTavo_total_label}\"\/&gt;  \n\n                            &lt;!--PANEL--&gt;\n                            &lt;p:outputPanel      id=\"cantidadOutputPanel\"&gt;\n\n                                &lt;!--CAMPO--&gt;\n                                &lt;p:inputNumber  id=\"cantidadInputNumber\"\n                                                value=\"#{detalleTiqueteTavoASERBean.entity.cantidad}\"\n                                                thousandSeparator=\",\"\n                                                decimalSeparator=\".\"\n                                                size=\"50\"\n                                                required=\"true\" \n                                                maxlength=\"50\" \n                                            \/&gt;    \n\n                                &lt;!--MENSAJE--&gt;\n                                &lt;p:message      id=\"cantidadMessage\"\n                                                for=\"cantidadInputNumber\" \/&gt;\n\n                            &lt;\/p:outputPanel&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n\n\n\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--########################     PRECIO TOTAL      #####################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                            \n                            &lt;!--LABEL--&gt;   \n                            &lt;p:outputLabel      id=\"precioTotalOutputLabel\"\n                                                for=\"precioTotalInputNumber\"\n                                                value=\"#{i18n.detalleTiqueteTavo_total_label}\"\/&gt;  \n\n                            &lt;!--PANEL--&gt;\n                            &lt;p:outputPanel      id=\"precioTotalOutputPanel\"&gt;\n\n                                &lt;!--CAMPO--&gt;\n                                &lt;p:inputNumber  id=\"precioTotalInputNumber\"\n                                                value=\"#{detalleTiqueteTavoASERBean.entity.precioTotal}\"\n                                                thousandSeparator=\",\"\n                                                decimalSeparator=\".\"\n                                                size=\"50\"\n                                                required=\"true\" \n                                                maxlength=\"50\" \n                                            \/&gt;    \n\n                                &lt;!--MENSAJE--&gt;\n                                &lt;p:message      id=\"precioTotalMessage\"\n                                                for=\"precioTotalInputNumber\" \/&gt;\n\n                            &lt;\/p:outputPanel&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n                            &lt;!--####################################################################################--&gt;\n\n\n\n\n\n                &lt;\/p:panelGrid&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++     FIN PANELGRID 2     ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n            &lt;\/p:panelGrid&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- +++++++++++++++++++++++++     FIN PANELGRID 1     ++++++++++++++++++++++++++++++++++++ --&gt;\n            &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n\n        &lt;\/una:panelForm&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--+++++++++++++++++++++++++++++++  FIN PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++--&gt;\n        &lt;!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--&gt;\n\n\n    &lt;\/ui:define&gt;\n    &lt;!--********************************************************************************************--&gt;\n    &lt;!--***********************************   FIN DEFINE   *****************************************--&gt;\n    &lt;!--********************************************************************************************--&gt;\n\n\n&lt;\/ui:composition&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--**************************     FIN COMPOSICI\u00d3N   *******************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n&lt;!--********************************************************************************************--&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Reportar la  pagina detalleTiqueteTavoEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reportamos la p\u00e1gina<\/li>\n\n\n\n<li>y podemos ingresar para probarlo<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"http:\/\/10.0.100.30:8080\/sigesa-webapp\/pages\/tiqueteTavoListForm.xhtml\" target=\"_blank\">http:\/\/10.0.100.30:8080\/sigesa-webapp\/pages\/tiqueteTavoListForm.xhtml<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">detailToolbar Unlock (detalleTiqueteTavoEditForm.xhtml)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando se trabaja con Maestro detalle y se le dice ver a un registro del detalle lo lleva a una ventana que tiene la opci\u00f3n de desbloquear el registro para editarlo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"257\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_308-1024x257.png\" alt=\"\" class=\"wp-image-12960\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_308-1024x257.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_308-300x75.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_308-768x192.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_308-1536x385.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_308.png 1608w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"431\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_309.png\" alt=\"\" class=\"wp-image-12961\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_309.png 859w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_309-300x151.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_309-768x385.png 768w\" sizes=\"(max-width: 859px) 100vw, 859px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pero este no es un comportamiento deseado por esto vamos a indicarle que oculte este bot\u00f3n<\/li>\n\n\n\n<li>Abrimos el archivo y en components:detailToolbar le agregamos <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>showUnlockButton=\"#{false}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;components:detailToolbar\n                            masterBean=\"#{tiqueteTavoBean}\"      \n                            bean=\"#{detalleTiqueteTavoASERBean}\"    \n                            listForm=\"tiqueteTavoEditForm\"\n                            editForm=\"detalleTiqueteTavoEditForm\"\n                            container=\"panelForm\"\n                            showUnlockButton=\"#{false}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Asi cuando ingresamos de nuevo el bot\u00f3n esta ocultado<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"257\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_310.png\" alt=\"\" class=\"wp-image-12963\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_310.png 593w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_310-300x130.png 300w\" sizes=\"(max-width: 593px) 100vw, 593px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00eda 04 : Internacionalizaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para realizar la internacionalizaci\u00f3n dentro de SIGESA existe una tabla en la BD de nombre \u00abi18n\u00bb<\/li>\n\n\n\n<li>Por lo que para poder agregar los texto es simplemente agregarlos en dicha tabla<\/li>\n\n\n\n<li>Para esto ingresamos a SIGESA-&gt;SAS &#8211; Seguridad y Administraci\u00f3n -&gt; SAS &#8211; Seguridad y Administraci\u00f3n -&gt; SAS -Mantenimiento -&gt; Lista de Internacionalizaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"272\" height=\"175\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_311.png\" alt=\"\" class=\"wp-image-12969\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le damos la opci\u00f3n de \u00abNuevo\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"422\" height=\"262\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_312.png\" alt=\"\" class=\"wp-image-12970\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_312.png 422w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_312-300x186.png 300w\" sizes=\"(max-width: 422px) 100vw, 422px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Completamos el formulario yle damos \u00abGuardar\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"358\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_313.png\" alt=\"\" class=\"wp-image-12972\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_313.png 643w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_313-300x167.png 300w\" sizes=\"(max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<ul class=\"has-text-color wp-block-list\" style=\"color:#dd2424\">\n<li>NOTAS:\n<ul class=\"wp-block-list\">\n<li>Lo nombres deben ser el nombre completo de la clase. Ej: clienteTavo_XXX<\/li>\n\n\n\n<li>Los datos de referencia de los campos deben ser igual al campo de la clase, es decir en minuscula Ej: clienteTavo_nombreCampo_XXX<\/li>\n\n\n\n<li>Podemos agregar informaci\u00f3n adicional sobre el componete. Ej:\n<ul class=\"wp-block-list\">\n<li>tiqueteTavo_<strong>dnrth<\/strong>_detalleTiqueteTavo_label : components:detailNoEditTableHorizontal<\/li>\n\n\n\n<li>tiqueteTavo_<strong>tab_<\/strong>detalleTiqueteTavo_label: TAB<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Aunque los campos puedan ser los mismos para List o Edit deber\u00edamos tener uno para cada uno en caso de que requieran cambiar uno<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando se clona el servidor de BD todos los datos en desarrollo se pierden por lo que debemos respaldarlos y insertarlos en todos los nodos de producci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO I18N(ID_I18N, LLAVE, IDIOMA, VALOR, USUARIO_CREACION, FECHA_CREACION, USUARIO_MODIFICACION, FECHA_MODIFICACION, VERSION)\nVALUES (SQ_I18N.NEXTVAL,'estadoEntradaMalla_nombre_unico_error_detail','es','Este nombre de estado ya se encuentra registrado',246,SYSDATE,246,SYSDATE,0);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tarea 02: Realizar c\u00e1lculo de precio de productos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El proceso que se va a realizar es que cuando se agregue un nuevo producto se sume su monto al monto total del tiquete<\/li>\n\n\n\n<li>Para esto existen varias formas de hacerlos\n<ul class=\"wp-block-list\">\n<li>METODO- 01: Cada vez que se agregue un producto al detalle se sumen todos los productos y luego se actualice el campo del tiqueteTavo pero existe un problema que es que del objeto detalleTavo puede acceder al objeto padre, pero no puede actualizar la vias es decir a tiqueteTavoEditForm.xhtml, sin embargo lo vamos hacer para comprensi\u00f3n<\/li>\n\n\n\n<li>METODO-02: es dentro de tiquete cuando el usuario le dede guardar se actulice el monto, y este no tiene problema por que este si tiene acceso a la vista tiqueteTavoEditForm.xhtml<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Pero para ambos casos debemos hacer una sobreescritura de los m\u00e9todos de los botones de SIGESA<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Sobre escritura m\u00e9todos botones<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Paso # 01: antes de empezar es importante defnir que el bot\u00f3 de Total sea deshabilitado para que el usuario no pueda modificarlo<\/li>\n\n\n\n<li>Abrimos el archivo<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">tiqueteTavoEditForm.xhtml<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>disabled=\"#{true}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:inputNumber id=\"totalTiqueteTavoInputNumber\"\n                                value=\"#{tiqueteTavoBean.entity.total}\"\n                                thousandSeparator=\",\"\n                                decimalSeparator=\".\"\n                                size=\"50\"\n                                required=\"true\" \n                                maxlength=\"50\" \n                         <strong>       disabled=\"#{true}\"<\/strong>\n                                \/&gt; <\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">M\u00c9TODO-01:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>METODO- 01: Cada vez que se agregue un producto al detalle se sumen todos los productos y luego se actualice el campo del tiqueteTavo pero existe un problema que es que del objeto detalleTavo puede acceder al objeto padre, pero no puede actualizar la vias es decir a tiqueteTavoEditForm.xhtml, sin embargo lo vamos hacer para comprensi\u00f3n<\/li>\n\n\n\n<li>Es decir cuando estemos en \u00abMantenimiento de Detalle Tiquete\u00bb y agreguemos uno<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"364\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_314.png\" alt=\"\" class=\"wp-image-12977\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_314.png 718w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_314-300x152.png 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se actualice en tiquetesTavo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"460\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_315.png\" alt=\"\" class=\"wp-image-12978\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_315.png 709w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_315-300x195.png 300w\" sizes=\"(max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entonces debemos sobre escribir el bot\u00f3n de agregar para modificar su comportamiento b\u00e1sico y agregarle la funci\u00f3n del c\u00e1lculo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"100\" height=\"117\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_314-1.png\" alt=\"\" class=\"wp-image-12979\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para hacer esto abrimos<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">DetalleTiqueteTavoASERBean.java<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">NOTA: Obtenci\u00f3n del objeto maestro (Padre) desde un detalle (hijo)<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para obtener el objeto padre desde un hijo debemos utilizar un \u00abFacesContext\u00bb que obtiene todos los objetos de la sessi\u00f3n del usuario actual<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>FacesContext context = FacesContext.getCurrentInstance();<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con este context podemos obtener la aplicaci\u00f3n y evaluzar una expresi\u00f3n, donde:\n<ul class=\"wp-block-list\">\n<li>TiqueteBean tiqueteBean: vamos a almacenar u obtener un objeto de tipo TiqueteTavoBean (Padre)<\/li>\n\n\n\n<li>context.getApplication().evaluateExpressionGet: obtener y evaluar<\/li>\n\n\n\n<li>context: todo el contenido de la sesi\u00f3n<\/li>\n\n\n\n<li>\u00ab#{tiqueteTavoBean}\u00bb: String de lo que buscamos<\/li>\n\n\n\n<li>TiqueteTavoBean.class:  clase de tipo  esperada<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>FacesContext context = FacesContext.getCurrentInstance();\nTiqueteTavoBean tiqueteTavoBean = context.getApplication().evaluateExpressionGet(context, \"#{tiqueteTavoBean}\", TiqueteTavoBean.class);<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Continuamos..<\/h5>\n\n\n\n<h5 class=\"wp-block-heading\">Funci\u00f3n: calculoTotal<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos el siguiente c\u00f3digo que crea una funci\u00f3n que calcula el monto y que va servir tanto para editar como agregar<\/li>\n\n\n\n<li>Primero agregamos los import&#8217;s<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.math.BigDecimal;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          FacesContext       ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.faces.context.FacesContext;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************     FUNCI\u00d3N: calculaTotal     **************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: calculaTotal() \/ Realiza la sumatoria de los productos dentro de detalleTavo\n    \n    \n    public void calculaTotal() {\n\n        \/\/ Obtiene el FacesContext de la sesi\u00f3n del usuario\n        FacesContext context = FacesContext.getCurrentInstance();\n\n        \/\/ Con base al context obtenido \"Busca\" el objeto tiqueteTavoBean\n        TiqueteTavoBean tiqueteTavoBean = context.getApplication().evaluateExpressionGet(context, \"#{tiqueteTavoBean}\", TiqueteTavoBean.class);\n       \n        \/\/ Inicializa la variable a zero \n        BigDecimal total = BigDecimal.ZERO;\n       \n        \/\/ Obtenemos todo el detalle tiqueteTavoBean.getEntity().getDetalleTiqueteTavo del tiquete\n        for (DetalleTiqueteTavo detalleTiqueteTavo : tiqueteTavoBean.getEntity().getDetalleTiqueteTavo()) {\n            \n            \/\/ Y los recorremos agregando a la variable total el valor anterior + el nuevo\n            total = total.add(detalleTiqueteTavo.getPrecioTotal());\n        }\n       \n        tiqueteTavoBean.getEntity().setTotal(total);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Teniendo ya una funci\u00f3n capaz de calcular el monto total podemos sobreecribir los m\u00e9todos de los botones<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">BOTON: Edit<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/***********************     SOBRESCRITURA: BOTON EDITAR     *************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobrescribir\n    @Override\n\n    \/\/ Boton Editar\n    public String edit() {   \n        \n        \/\/ Le indicamos que recalcule el total\n        calculaTotal();\n\n        \/\/ Y continue con su funcionamiento normal\n        return super.edit();\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">BOTON: Agregar<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/***********************     SOBRESCRITURA: BOTON AGREGAR    *************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobrescribir\n    @Override\n\n    \/\/ Boton Agregar\n    public String add() {   \n        \n        \/\/ Le indicamos que recalcule el total\n        calculaTotal();\n\n        \/\/ Y continue con su funcionamiento normal\n        return super.add();\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.ASER;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.ASERImpl;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiqueteTavo;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\nimport java.math.BigDecimal;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          FacesContext       ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.faces.context.FacesContext;\n\n\n\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link DetalleTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 11\/10\/2022\n *\/\n\n \/\/ Establece que es un componente\n@Component\n\n\/\/ Establece que existe mientras la session de usuario este activa\n@Scope(\"session\")\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class DetalleTiqueteTavoASERBean extends ASERImpl&lt;DetalleTiqueteTavo&gt; implements ASER {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: init() se ejecuta despu\u00e9s de construtor y obtiene una lista de todos los detalleTiqueteTavo\n\n\n    \/\/ Establece que despu\u00e9s de ejecutar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;ASERColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        \/\/ Creamos las relaciones y ordenes de las columnas para el listado\n        ASERColumn column1 = new ASERColumn(\"nombre\",                   getI18n(\"detalleTiqueteTavo_nombre_label\"),            true);\n        ASERColumn column2 = new ASERColumn(\"cantidad\",                 getI18n(\"detalleTiqueteTavo_cantidad_label\"),          true);\n        ASERColumn column3 = new ASERColumn(\"precioTotal\",              getI18n(\"detalleTiqueteTavo_precioTotal_label\"),       true);\n        \n\n        \n        \/\/Agregamos las columnas a la variable\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n\n        \/\/ Enviamos las columnas pero con setColumnsDetails\n        this.setColumnsDetails(columns);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n   \n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************************     FUNCI\u00d3N: calculaTotal     **************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCION: calculaTotal() \/ Realiza la sumatoria de los productos dentro de detalleTavo\n    \n    \n    public void calculaTotal() {\n\n        \/\/ Obtiene el FacesContext de la sesi\u00f3n del usuario\n        FacesContext context = FacesContext.getCurrentInstance();\n\n        \/\/ Con base al context obtenido \"Busca\" el objeto tiqueteTavoBean\n        TiqueteTavoBean tiqueteTavoBean = context.getApplication().evaluateExpressionGet(context, \"#{tiqueteTavoBean}\", TiqueteTavoBean.class);\n       \n        \/\/ Inicializa la variable a zero \n        BigDecimal total = BigDecimal.ZERO;\n       \n        \/\/ Obtenemos todo el detalle tiqueteTavoBean.getEntity().getDetalleTiqueteTavo del tiquete\n        for (DetalleTiqueteTavo detalleTiqueteTavo : tiqueteTavoBean.getEntity().getDetalleTiqueteTavo()) {\n            \n            \/\/ Y los recorremos agregando a la variable total el valor anterior + el nuevo\n            total = total.add(detalleTiqueteTavo.getPrecioTotal());\n        }\n       \n        tiqueteTavoBean.getEntity().setTotal(total);\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/***********************     SOBRESCRITURA: BOTON AGREGAR    *************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobrescribir\n    @Override\n\n    \/\/ Boton Agregar\n    public String add() {   \n        \n        \/\/ Le indicamos que recalcule el total\n        calculaTotal();\n\n        \/\/ Y continue con su funcionamiento normal\n        return super.add();\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n    \n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/***********************     SOBRESCRITURA: BOTON EDITAR     *************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Indicamos que vamos a sobrescribir\n    @Override\n\n    \/\/ Boton Editar\n    public String edit() {   \n        \n        \/\/ Le indicamos que recalcule el total\n        calculaTotal();\n\n        \/\/ Y continue con su funcionamiento normal\n        return super.edit();\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>y con esto hemos realizado el M\u00c9TODO-01<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">METODO-02<\/h4>\n\n\n\n<p>METODO-02: es dentro de tiquete cuando el usuario le dede guardar se actualice el monto, y este no tiene problema por que este si tiene acceso a la vista tiqueteTavoEditForm.xhtml<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TiqueteTavoBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los import&#8217;s necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.math.BigDecimal;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego agregamos la funci\u00f3n que va sobreescribir el bot\u00f3n de guardar en tiqueteTavoBean<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************                 OVERRIDE: BOTON SAVE                   *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/\/ FUNCI\u00d3N:  se encarga de sobreescribir el m\u00e9todo del bot\u00f3n save en tiquete, para realizar el calculo del monto\n    \/\/ EJEMPLO: save()\n\n    \/\/ Sobreescribe el m\u00e9todo\n    @Override\n\n    \/\/ Bot\u00f3n Save\n    public String save() {\n\n        \/\/ Inicializa la variable a zero\n        BigDecimal total = BigDecimal.ZERO;\n       \n        \/\/ Obtenemos los elementos del detalle de tiquete\n        for (DetalleTiqueteTavo detalleTiquete : this.getEntity().getDetalleTiqueteTavo()) {\n\n            \/\/ Realizamos la suma\n            total = total.add(detalleTiquete.getPrecioTotal());\n        }\n       \n        \/\/ Al objeto tiquete a su campo total le asignamos la sumatoria\n        this.getEntity().setTotal(total);\n       \n        \/\/ Continue con el funcionamiento normal\n        return super.save();\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tarea 03: Especificaciones (Specs)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una espec\u00edficaci\u00f3n es otra forma dentro de SIGESA para realizar consultas a la base de datos <\/li>\n\n\n\n<li>Tema: hibernate specification<\/li>\n\n\n\n<li>Y se puede utilizar como estandar en vez de los find&#8217;s o cuando una consulta puede tronarse complicada<\/li>\n\n\n\n<li>Por lo que se podr\u00eda decir que el nuevo orden de consultas a la base de datos es:\n<ul class=\"wp-block-list\">\n<li>find<\/li>\n\n\n\n<li>HQL<\/li>\n\n\n\n<li>SPECS<\/li>\n\n\n\n<li>SQL<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>O podr\u00edamos hacerlo as\u00ed\n<ul class=\"wp-block-list\">\n<li>SPECS<\/li>\n\n\n\n<li>find<\/li>\n\n\n\n<li>HQL<\/li>\n\n\n\n<li>SQL<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Todo va depender de la modularidad o facilidad requerida<\/li>\n\n\n\n<li>Para crear una especificaci\u00f3n debemos hacerlo en la ruta<\/li>\n\n\n\n<li>proyecto: sigesa-pbs-abs-&gt;sigesa-pbs-abs-service-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;specs<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"201\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_316.png\" alt=\"\" class=\"wp-image-12991\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_316.png 457w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_316-300x132.png 300w\" sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ClienteTavoSpecs.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el archivo ClienteTavoSpecs.java<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"431\" height=\"415\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_317.png\" alt=\"\" class=\"wp-image-12992\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_317.png 431w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_317-300x289.png 300w\" sizes=\"(max-width: 431px) 100vw, 431px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con el siguiente contenido<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npackage cr.ac.una.cgi.sigesa.pbs.abs.specs;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.ClienteTavo;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++            BD               ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.criteria.CriteriaBuilder;\nimport javax.persistence.criteria.CriteriaQuery;\nimport javax.persistence.criteria.Expression;\nimport javax.persistence.criteria.Predicate;\nimport javax.persistence.criteria.Root;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       Specification         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.data.jpa.domain.Specification;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n\/**\n * Especificaci\u00f3n para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ClienteTavoSpecs {\n\n\n\n\n}\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear la especificaci\u00f3n de \u00abcliente activo\u00bb, agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************          SPECIFICATION: activoEquals                   *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    public static Specification&lt;ClienteTavo&gt; activoEquals(final Boolean activo) {\n        return new Specification&lt;ClienteTavo&gt;() {\n            @Override\n            public Predicate toPredicate(Root&lt;ClienteTavo&gt; root, CriteriaQuery&lt;?&gt; cq, CriteriaBuilder cb) {\n                Expression x = root.get(\"activo\");\n                Expression y = cb.literal(activo);\n                return cb.equal(x, y);\n            }\n        };\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la espec\u00edficaci\u00f3n de nombreLike<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************          SPECIFICATION: nombreLikeOrdenadoByNombre     *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    public static Specification&lt;ClienteTavo&gt; nombreLikeOrdenadoByNombre(final String query) {\n        return new Specification&lt;ClienteTavo&gt;() {\n            @Override\n            public Predicate toPredicate(Root&lt;ClienteTavo&gt; root, CriteriaQuery&lt;?&gt; cq, CriteriaBuilder cb) {\n                Expression x = root.get(\"nombre\");\n                Expression y = cb.literal(\"%\" + query + \"%\");\n\n                cq.orderBy(cb.asc(x));\n                return cb.like(cb.upper(x), cb.upper(y));\n            }\n        };\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y la \u00faltima especificaci\u00f3n es que la Fecha de Nacimiento sea menor a 2022<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/****************          SPECIFICATION: nombreLikeOrdenadoByNombre     *************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    public static Specification&lt;ClienteTavo&gt; fechaDeNacimientoLessThan(final Date fechaNacimiento) {\n        return new Specification&lt;ClienteTavo&gt;() {\n            @Override\n            public Predicate toPredicate(Root&lt;ClienteTavo&gt; root, CriteriaQuery&lt;?&gt; cq, CriteriaBuilder cb) {\n                Expression x = root.get(\"fechaNacimiento\");\n                Expression y = cb.literal(fechaNacimiento);\n                return cb.lessThan(x, y);\n            }\n        };\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto ya tenemos las especificaciones necesarias<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ClienteServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear la funciones que utilicen las especificaciones creadas <\/li>\n\n\n\n<li> Agregamos los import&#8217;s<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.specs.ClienteTavoSpecs;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos la funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findAllByNombreIgnoreCaseLikeAndActivoAndFechaNacimientoLessThanPorSpec(java.lang.String, java.lang.Boolean, java.util.Date, org.springframework.data.domain.Pageable) }\n     * \n     * @param nombre : nombre cliente por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param fecha : Fecha de nacimiento del cliente\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n\n    public Page&lt;ClienteTavo&gt; findAllByNombreIgnoreCaseLikeAndActivoAndFechaNacimientoLessThanPorSpec(String nombre, Boolean activo, Date fecha, Pageable pageable) {\n        \n        \/\/ Definimos una variable de tipo especificacione ClienteTavo\n        Specification&lt;ClienteTavo&gt; specFinal;\n       \n        \/\/ Obtenemos la especificaci\u00f3n de activo\n        Specification specActivoEquals = ClienteTavoSpecs.activoEquals(activo);\n\n        \/\/ Obtenemos la especificaci\u00f3n de nombre\n        Specification specNombreLikeOrdenadoByNombre = ClienteTavoSpecs.nombreLikeOrdenadoByNombre(nombre);\n\n\n        \/\/ Obtenemos la especificaci\u00f3n de fecha\n        Specification specFechaNacimientoLessThan = ClienteTavoSpecs.fechaNacimientoLessThan(fecha);\n       \n\n        \/\/ Creamos la especificaci\u00f3n final\n        specFinal = Specification.where(specNombreLikeOrdenadoByNombre)\n                .and(specActivoEquals)\n                .and(specFechaNacimientoLessThan);\n       \n        return repository.findAll(specFinal, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear una funci\u00f3n findClientesVivos2 pero que utilice las especificaciones <\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ClienteTavoService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos agregar la definici\u00f3n de la funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\n\n\n\n\/**********************************************************************\/\n    \/**\n     * Ver {@link ClienteTavoService#findAllByNombreIgnoreCaseLikeAndActivoAndFechaNacimientoLessThanPorSpec(java.lang.String, java.lang.Boolean, java.util.Date, org.springframework.data.domain.Pageable) }\n     * \n     * @param nombre : nombre cliente por buscar\n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param fecha : Fecha de nacimiento del cliente\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @return \n     *\/\n    \/**********************************************************************\/\n\n    public Page&lt;ClienteTavo&gt; findAllByNombreIgnoreCaseLikeAndActivoAndFechaNacimientoLessThanPorSpec(\n            String nombre, \n            Boolean activo, \n            Date fecha, \n            Pageable pageable);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FALTAN TODAS LAS FUNCIONES<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Parametros<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SIEGESA: Maneja parametros por Bases de Datos para datos de configuraci\u00f3n y se administran por la interfaz web<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"557\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_320-1024x557.png\" alt=\"\" class=\"wp-image-13000\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_320-1024x557.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_320-300x163.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_320-768x417.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_320.png 1126w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En SIEGSA existen varios nodos de producci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><a href=\"http:\/\/10.0.3.213:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.3.213:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.153:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.153:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.154:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.154:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.155:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.155:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/security\/login.xhtml<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.156:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.156:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.162:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.162:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/<\/a><\/td><\/tr><tr><td><a href=\"http:\/\/10.0.2.163:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.163:8080\/sigesa-webapp-1.0.0-SNAPSHOT\/<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Esto quiere decir que que cuando creamos en producci\u00f3n un parametro debemos meterlo en todos los nodos<\/li>\n\n\n\n<li>El formato es: param_nombreProyecto_nombreModulo_nombre. Ejemplo:   param_pbs_abs_tiq_maximo_por_cliente<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Tarea: Crear parametro de l\u00edmite de productos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ingresamos a SIGESA a Lista de Par\u00e1metros<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"432\" height=\"211\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_321.png\" alt=\"\" class=\"wp-image-13003\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_321.png 432w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_321-300x147.png 300w\" sizes=\"(max-width: 432px) 100vw, 432px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le damos nuevo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"199\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_322.png\" alt=\"\" class=\"wp-image-13005\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_322.png 379w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_322-300x158.png 300w\" sizes=\"(max-width: 379px) 100vw, 379px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y agregamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"518\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_323.png\" alt=\"\" class=\"wp-image-13006\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_323.png 800w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_323-300x194.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_323-768x497.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">TiqueteTavoValidator.java (Dentro proyecto-Web)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear el archivo que va contener las validaciones<\/li>\n\n\n\n<li>Ruta: sigesa-pbs-abs-&gt;sigesa-pbs-abs-web-&gt;src-&gt;main-&gt;java-&gt;cr-&gt;ac-&gt;una-&gt;cgi-&gt;sigesa-&gt;pbs-&gt;abs-&gt;view-&gt;validator<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"296\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_324.png\" alt=\"\" class=\"wp-image-13008\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_324.png 459w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_324-300x193.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el archivo TiqueteTavoValidator.java<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"475\" height=\"648\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_325.png\" alt=\"\" class=\"wp-image-13009\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_325.png 475w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_325-220x300.png 220w\" sizes=\"(max-width: 475px) 100vw, 475px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agreagamos el c\u00f3digo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.validator;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.TiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.TiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       VALIDACI\u00d3N            ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/\/ Para Mensajes al usuario\nimport cr.ac.una.cgi.sdkuna.view.controller.MessagesController;\n\nimport javax.faces.application.FacesMessage;\nimport javax.faces.component.UIComponent;\nimport javax.faces.context.FacesContext;\nimport javax.faces.validator.Validator;\nimport javax.faces.validator.ValidatorException;\n\n\n\/**\n * Clase que implementa el servicio {@link ClienteTavoService} para la entidad\n * {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 06\/10\/2022\n *\/\n\n \/\/ Es un componete\n@Component\n\n\/\/ Scope del usuario request\n@Scope(\"request\")\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavoValidator implements Validator {\n   \n    \/\/ Clase para el manejo de los mensajes al usuario\n    @Autowired\n    MessagesController messagesController;\n   \n    \/\/ Clase para el manejo de TiquetesTavo\n    @Autowired\n    TiqueteTavoService tiqueteTavoService;\n\n    \n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          M\u00c9TODOS             ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n\n    \/**********************************************************************\/\n    \/**\n     * Ver {@link TiqueteTavoService#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, javax.faces.validator.ValidatorException) }\n     * \n     * @param fc : faceContext que para este caso es request\n     * @param uic : la interfaz gr\u00e1fica\n     * @param o : objeto a validar\n     * @return \n     *\/\n    \/**********************************************************************\/\n    @Override\n    public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException {\n\n        \/\/ Obtenemos el objeto de tipo TiqueteTavo, obteniendolo del uic (interfaz del usuario) y que tiene el nombre de attribute\n        TiqueteTavo tiqueteTavo = (TiqueteTavo) uic.getAttributes().get(\"tiqueteTavo\");\n       \n        \/\/ Si el tiquete es null no tenemos con que trabajar regrese\n        if (tiqueteTavo == null) {\n            return;\n        }\n       \n        \/\/ Si existe un objeto de tipo tiqueteTavo\n        try {\n\n            \/\/ invocamos el m\u00e9todo del tiqueteTavoService que realiza la valizaci\u00f3n pasandole el objeto tiqueteTavo\n            tiqueteTavoService.validaCantidadMaximaProductos(tiqueteTavo);\n           \n        } catch(Exception ex) {\n            String summary = messagesController.getI18n(\"tiqueteTavo_message_error_validacion_cantidadMaximaProductos\");\/\/Error\n            String detail = ex.getMessage();\n            messagesController.addError(summary, detail);\n            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));\n        }\n       \n    }\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y vemos que tenemos que agregar una internacionalizaci\u00f3n<\/li>\n\n\n\n<li>tiqueteTavo_message_error_validacion_cantidadMaximaProductos<\/li>\n\n\n\n<li>que debe tener el texto \u00abError\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"353\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_326.png\" alt=\"\" class=\"wp-image-13010\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_326.png 656w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_326-300x161.png 300w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">TiqueteTavoServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed vamos a crear la funci\u00f3n que realiza la validaci\u00f3n<\/li>\n\n\n\n<li>Primero para poder acceder a los parametros debemos hacer un Autowired y debemos poder accedecer al manejador de parametros, agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++         AUTOWIRED           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.service.ParametroService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.DetalleTiqueteTavo;\n\n\n\/**********************************************************************\/\n    \/**********************************************************************\/\n    \/****************          AUTOWIRED           ************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    @Autowired\n    ParametroService parametroService;\n\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/\n    \/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para utilizar mensajes en consola<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++         MENSAJES CONSOLA    ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear dos funciones <\/li>\n\n\n\n<li>La primera que se encarga de obtener el parametro de SIEGESA<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Ver {@link TiqueteTavoService#obtieneParamCantidadProductoMaximo() }\n     * \n     * \n     * @return \n     *\/\n    \/**********************************************************************\/\n    \/\/ Sobreescribir\n    @Override\n\n    \/\/ Indicamos que vamos a sobreescribir el m\u00e9todo\n    public BigDecimal obtieneParamCantidadProductoMaximo() {\n\n\n\n        \/\/ Declaramos una variable para almacenar el parametro como BigDecimal\n        BigDecimal cantidadMaxima = BigDecimal.ZERO;\n\n        \/\/ Declaramos una variable String para almacenar el valor del parametro\n        String cantidadMaximaStr = parametroService.findOneByLlave(\"param_pbs_abs_tiqTavo_cantidad_maxima_x_producto\").getValor();\n\n        \/\/ Lo convertimos a int y lo almacenamos\n        cantidadMaxima =   new BigDecimal(cantidadMaximaStr); \n\n        \/\/retornamos el valor\n        return cantidadMaxima;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y la segunda que va a recorrer la lista del detalle y verificar que\n<ul class=\"wp-block-list\">\n<li>tiquete no sea nulo<\/li>\n\n\n\n<li>que la lista del productos no este vacia<\/li>\n\n\n\n<li>Y si alg\u00fan producto en su cantidad es mayor &gt; 3<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**********************************************************************\/\n    \/**\n     * Ver {@link TiqueteTavoService#validaCantidadMaximaProductos() }\n     * \n     * @param tiqueteTavo : tiquete a trabajar\n     * \n     * @return \n     *\/\n    \/**********************************************************************\/\n    \/\/ Sobreescribir\n    @Override\n    \n    public void validaCantidadMaximaProductos(TiqueteTavo tiqueteTavo) throws Exception {\n        \n        \/\/ Validaci\u00f3n:  no exite un tiquete\n        if (tiqueteTavo == null) {\n            \n            \/\/ Error: no existe el objeto \n            throw new Exception(this.getI18n(\"tiqueteTavo_error_tiqueteTavo_nulo\"));\n        \n        \/\/ Validaci\u00f3n: si la lista esta vacia motramos mensaje\n        } else if (tiqueteTavo.getDetalleTiqueteTavo().isEmpty()) {\n\n            \/\/ Error: lista vacia\n            throw new Exception(this.getI18n(\"tiqueteTavo_error_tiqueteTavo_listaVacia\"));\n\n        \/\/ Validaci\u00f3n: si la lista esta vacia motramos mensaje\n        } else{\n            \n            \/\/ Obtenemos la cantidad m\u00e1xima de productos\n            BigDecimal cantidadMaxima = obtieneParamCantidadProductoMaximo();\n\n            \/\/ Obtenemos el detalleTiquete y lo recorremos\n            for (DetalleTiqueteTavo detalle : tiqueteTavo.getDetalleTiqueteTavo()) {\n\n                \/\/ realizamos la comprobaci\u00f3n b1(detalle.getCantidad) b2(cantidadMaxima) b1&gt;=b2 &gt;= 0\n\n                if(detalle.getCantidad().compareTo(cantidadMaxima) &gt;= 0 ){\n                    throw new Exception(this.getI18n(\"tiqueteTavo_error_cantidadMaximaProducto\"));\n                }\n            }\n            \n            \n        }\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">tiqueteTavoEditFrom.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora que tenemos la funcionalidad de una validaci\u00f3n solo nos falta el llamado a dicha funci\u00f3n para esto agregamos en la secci\u00f3n de donde estan los campos <ul><li>&lt;h:inputHidden id=\u00bbtiqueteTavoValidator\u00bb: id del componente<\/li><li>&lt;f:attribute name=\u00bbtiqueteTavo\u00bb: es el nombre del atributo que esta definido en TiqueteTavoValidator<\/li><li>value=\u00bb#{tiqueteTavoBean.entity}\u00bb: Bean encargado del manejo de tiquetes<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>&lt;f:validator binding=\u00bb#{TiqueteTavoValidator}\u00bb : clase que contiene el la funci\u00f3n validate<\/li>\n\n\n\n<li>disabled=\u00bb#{empty param[&#8216;formMantenimiento:toolbar:toolbar_saveBtn&#8217;]}\u00bb: boton donde se va aplicar la validaci\u00f3n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n                    &lt;!--######################## CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n                    &lt;!--####################################################################################--&gt;\n\n                    &lt;!--Entrada oculta para validaciones--&gt;\n                    &lt;h:inputHidden id=\"tiqueteTavoValidator\" value=\"true\" &gt;\n                        &lt;f:attribute name=\"tiqueteTavo\" value=\"#{tiqueteTavoBean.entity}\"\/&gt;\n                        &lt;f:validator binding=\"#{tiqueteTavoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtn']}\" \/&gt;\n                    &lt;\/h:inputHidden&gt;\n                    &lt;!--####################################################################################--&gt;\n                    &lt;!--###################  FIN CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n                    &lt;!--####################################################################################--&gt;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00eda 05: Men\u00fa<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En SIGESA las opciones se manejan con las siguiente distribuci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"511\" height=\"236\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_327-1.png\" alt=\"\" class=\"wp-image-13021\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_327-1.png 511w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_327-1-300x139.png 300w\" sizes=\"(max-width: 511px) 100vw, 511px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Procesos: cuando son procesos batch<\/li>\n\n\n\n<li>Administraci\u00f3n: tablas de tipos y estados<\/li>\n\n\n\n<li>Mantenimiento: administraci\u00f3n de tablas catalogo<\/li>\n\n\n\n<li>Transacciones: tablas cores<\/li>\n\n\n\n<li>Parametros: tablas de paramatros (ya no se usa)<\/li>\n\n\n\n<li>Reportes: reportes <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear un men\u00fa<\/li>\n\n\n\n<li>existen dos opciones de un m\u00f3dulos (Sistemas)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"462\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_330.png\" alt=\"\" class=\"wp-image-13023\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_330.png 718w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_330-300x193.png 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O de <\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"433\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_331.png\" alt=\"\" class=\"wp-image-13024\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_331.png 574w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_331-300x226.png 300w\" sizes=\"(max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los datos<\/li>\n\n\n\n<li>Secuencia: posici\u00f3n donde queremos se muestre<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"743\" height=\"590\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_332.png\" alt=\"\" class=\"wp-image-13025\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_332.png 743w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_332-300x238.png 300w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Creaci\u00f3n de men\u00fa<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buscamos lista de men\u00fa<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"284\" height=\"232\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_336.png\" alt=\"\" class=\"wp-image-13035\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nuevo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"185\" height=\"144\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_337.png\" alt=\"\" class=\"wp-image-13036\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crear men\u00fa de un men\u00fa padre y completamos la informaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"754\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_339.png\" alt=\"\" class=\"wp-image-13037\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_339.png 750w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_339-298x300.png 298w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_339-150x150.png 150w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clonamos para clientes<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"695\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_340.png\" alt=\"\" class=\"wp-image-13038\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_340.png 709w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_340-300x294.png 300w\" sizes=\"(max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora al roles de Admin debemos asignarle derechos buscamos roles<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"436\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_341.png\" alt=\"\" class=\"wp-image-13039\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_341.png 250w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_341-172x300.png 172w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buscamos ADMIN<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"281\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_342-1024x281.png\" alt=\"\" class=\"wp-image-13040\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_342-1024x281.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_342-300x82.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_342-768x211.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_342.png 1532w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y como ya hab\u00edamos relacionado el recurso al rol de ADMIN ya podemos ingresar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_343-1024x575.png\" alt=\"\" class=\"wp-image-13041\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_343-1024x575.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_343-300x168.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_343-768x431.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_343.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Botones<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Botones existen 2 disponibles\n<ul class=\"wp-block-list\">\n<li>https:\/\/universidadnacional.atlassian.net\/wiki\/spaces\/CGI\/pages\/2384396295\/Migraci+n+de+SDKUNA+1.x+a+SDKUNA+2.x<\/li>\n\n\n\n<li>https:\/\/api.jqueryui.com\/theming\/icons\/<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Existen3 posiciones<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_334-1024x529.png\" alt=\"\" class=\"wp-image-13028\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_334-1024x529.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_334-300x155.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_334-768x397.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_334.png 1507w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"363\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_335.png\" alt=\"\" class=\"wp-image-13029\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_335.png 659w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_335-300x165.png 300w\" sizes=\"(max-width: 659px) 100vw, 659px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>AdditionalButtons<\/td><td>Y en las acciones<\/td><td>additionalActionButtons<\/td><\/tr><tr><td>AdditionalButtons<\/td><td>En la lista<\/td><td>additionalListToolbarButtons<\/td><\/tr><tr><td>AdditionalButtons<\/td><td>En el edit<\/td><td>additionalEditToolbarButtons<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00eda 06: Reportes<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de conexi\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear reportes primero debemos descargar el driver para oracle desde aqu\u00ed<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.oracle.com\/database\/technologies\/appdev\/jdbc-downloads.html\" target=\"_blank\">https:\/\/www.oracle.com\/database\/technologies\/appdev\/jdbc-downloads.html<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_349-1-1024x543.png\" alt=\"\" class=\"wp-image-13044\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_349-1-1024x543.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_349-1-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_349-1-768x407.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_349-1.png 1287w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora abrimos jasperStudio<\/li>\n\n\n\n<li>Y le damos File-&gt;New-&gt;JasperReport<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"642\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_344.png\" alt=\"\" class=\"wp-image-13045\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_344.png 754w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_344-300x255.png 300w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Seleccionamos donde vamos a guardar el reporte y su nombre<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"645\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_355.png\" alt=\"\" class=\"wp-image-13054\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_355.png 755w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_355-300x256.png 300w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le damos nuevo Data Adapter-&gt;New<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"759\" height=\"648\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_346.png\" alt=\"\" class=\"wp-image-13047\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_346.png 759w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_346-300x256.png 300w\" sizes=\"(max-width: 759px) 100vw, 759px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Seleccionamos Databe JDBC Connection<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"523\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_347.png\" alt=\"\" class=\"wp-image-13048\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_347.png 662w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_347-300x237.png 300w\" sizes=\"(max-width: 662px) 100vw, 662px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los datos de conexi\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>jdbc:oracle:thin:@sigesa-desa.una.ac.cr:1521:DESA01\nadm\nsigesa2015<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"658\" height=\"752\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_348.png\" alt=\"\" class=\"wp-image-13050\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_348.png 658w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_348-263x300.png 263w\" sizes=\"(max-width: 658px) 100vw, 658px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos el driver<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"764\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_350.png\" alt=\"\" class=\"wp-image-13051\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_350.png 709w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_350-278x300.png 278w\" sizes=\"(max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Probamos la conexi\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"768\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_351.png\" alt=\"\" class=\"wp-image-13052\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_351.png 697w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_351-272x300.png 272w\" sizes=\"(max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"652\" height=\"235\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_352.png\" alt=\"\" class=\"wp-image-13053\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_352.png 652w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_352-300x108.png 300w\" sizes=\"(max-width: 652px) 100vw, 652px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>d<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de nuevo reporte<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que ya tenemos una conexi\u00f3n a desa01, por demos crear un nuevo reporte<\/li>\n\n\n\n<li>File-&gt;Jasper Report<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"752\" height=\"638\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_359.png\" alt=\"\" class=\"wp-image-13056\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_359.png 752w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_359-300x255.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Establecemos el nombre del reporte y donde lo vamos almacenar\n<ul class=\"wp-block-list\">\n<li>FORMATO: R-PBS-ABS_NOMBRE \/ R=REPORTE PBS=PROYECTO ABS=M\u00d3DULO<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"737\" height=\"641\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_360.png\" alt=\"\" class=\"wp-image-13057\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_360.png 737w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_360-300x261.png 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para este punto nos va solictar el select de obtenci\u00f3n de datos, as\u00ed que ahora podemos abrir SQLDeveloper y crear la consulta<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"348\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_361.png\" alt=\"\" class=\"wp-image-13058\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_361.png 732w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_361-300x143.png 300w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT \n    TA.ID_TIQUETE_TAVO, \n    TA.FECHA, \n    TA.TOTAL,\n    CT.CEDULA,\n    CT.NOMBRE\nFROM TIQUETE_TAVO TA\nINNER JOIN CLIENTE_TAVO CT ON (TA.CLIENTE = CT.ID_CLIENTE_TAVO)\nORDER BY TA.ID_TIQUETE_TAVO ASC;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y una vez que la tenemos la pegamos en JasterStudio<\/li>\n\n\n\n<li>NOTA IMPORTANTE: NO DEBE TERMINAR EN ;: COMO EN LA IMAGEN<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"646\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_362.png\" alt=\"\" class=\"wp-image-13059\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_362.png 973w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_362-300x199.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_362-768x510.png 768w\" sizes=\"(max-width: 973px) 100vw, 973px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora nos solicita que seleccionemos las comlumnas a utilizar para este caso todas<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"967\" height=\"636\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_363.png\" alt=\"\" class=\"wp-image-13061\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_363.png 967w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_363-300x197.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_363-768x505.png 768w\" sizes=\"(max-width: 967px) 100vw, 967px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos pregunta si deseamos agrupar columnas para ordenar le decimos que no<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_364-1024x607.png\" alt=\"\" class=\"wp-image-13062\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_364-1024x607.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_364-300x178.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_364-768x456.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_364.png 1062w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos indica que todo sali\u00f3 correctamente<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_365-1024x614.png\" alt=\"\" class=\"wp-image-13063\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_365-1024x614.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_365-300x180.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_365-768x460.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_365.png 1073w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos crea el reporte<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"704\" height=\"610\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_366.png\" alt=\"\" class=\"wp-image-13065\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_366.png 704w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_366-300x260.png 300w\" sizes=\"(max-width: 704px) 100vw, 704px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para empezar a trabajarlo vamos a ocultar las secciones\n<ul class=\"wp-block-list\">\n<li>Page Header<\/li>\n\n\n\n<li>Column Header<\/li>\n\n\n\n<li>Column Footer<\/li>\n\n\n\n<li>Page Footer<\/li>\n\n\n\n<li>Summary<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Para esto en el men\u00fa inferior izquierdo \u00abOutline\u00bb se encuentran todas las secciones le damos clic derecho \u00abDelete\u00bb <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"473\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_367.png\" alt=\"\" class=\"wp-image-13066\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_367.png 363w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_367-230x300.png 230w\" sizes=\"(max-width: 363px) 100vw, 363px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"760\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_368-1024x760.png\" alt=\"\" class=\"wp-image-13067\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_368-1024x760.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_368-300x223.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_368-768x570.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_368.png 1205w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear el encabezado agregamos un campo \u00abStatic Text\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"399\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_369-1024x399.png\" alt=\"\" class=\"wp-image-13068\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_369-1024x399.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_369-300x117.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_369-768x299.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_369.png 1454w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con las siguientes propiedades\n<ul class=\"wp-block-list\">\n<li>Font: SansSerif<\/li>\n\n\n\n<li>Tama\u00f1o: 10<\/li>\n\n\n\n<li>Centrado: horizontal y vertical<\/li>\n\n\n\n<li>Negrita<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con las siguientes propiedades para PPI\n<ul class=\"wp-block-list\">\n<li>Font: Dejavu Sans<\/li>\n\n\n\n<li>Tama\u00f1o: 7 &#8211; 10<\/li>\n\n\n\n<li>Centrado: horizontal y vertical<\/li>\n\n\n\n<li>Negrita<\/li>\n\n\n\n<li>Fecha: dd\/MM\/yyyy<\/li>\n\n\n\n<li>Para simbolo de colones de debe poner la text filed-&gt;Inheritance-&gt;PDF Embedded<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"611\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_370-1024x611.png\" alt=\"\" class=\"wp-image-13069\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_370-1024x611.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_370-300x179.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_370-768x458.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_370.png 1427w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y debe tener la siguiente estructura<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"588\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_371.png\" alt=\"\" class=\"wp-image-13070\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_371.png 625w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_371-300x282.png 300w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>EL formato del t\u00edtulo es:\n<ul class=\"wp-block-list\">\n<li>UNA<\/li>\n\n\n\n<li>Sistema<\/li>\n\n\n\n<li>M\u00f3dulo<\/li>\n\n\n\n<li>Reporte de<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"510\" height=\"132\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_372.png\" alt=\"\" class=\"wp-image-13072\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_372.png 510w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_372-300x78.png 300w\" sizes=\"(max-width: 510px) 100vw, 510px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos agregar un t\u00edtulo descriptor del m\u00f3dulo, graegamos dentro de title<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"307\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_373.png\" alt=\"\" class=\"wp-image-13073\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373.png 965w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373-300x95.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373-768x244.png 768w\" sizes=\"(max-width: 965px) 100vw, 965px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y debemos agregar la fecha de la generaci\u00f3n del reporte<\/li>\n\n\n\n<li>agregamos una etiqueta<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"307\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_373-1.png\" alt=\"\" class=\"wp-image-13074\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373-1.png 965w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373-1-300x95.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_373-1-768x244.png 768w\" sizes=\"(max-width: 965px) 100vw, 965px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y para que la fecha se toma de la herramienta utilizamos el componete de \u00abCurrente Date\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"194\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_374.png\" alt=\"\" class=\"wp-image-13075\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_374.png 928w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_374-300x63.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_374-768x161.png 768w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le indicamos el formato requerido en:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_375-1024x550.png\" alt=\"\" class=\"wp-image-13076\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_375-1024x550.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_375-300x161.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_375-768x412.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_375.png 1278w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para listar los campos, dentro del menpu inferior izquierdo, existe una secci\u00f3n de \u00abFields\u00bb donde debemos arrastrar los campos al formulario, para luego acomodarlos<\/li>\n\n\n\n<li>Esto nos tira de una vez una label del nombre de la columna, este lo acomadmos den la secci\u00f3n| title<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_376-1024x733.png\" alt=\"\" class=\"wp-image-13078\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_376-1024x733.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_376-300x215.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_376-768x549.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_376.png 1093w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Asi solo queda acomodar las columnas<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"233\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_379.png\" alt=\"\" class=\"wp-image-13079\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_379.png 894w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_379-300x78.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_379-768x200.png 768w\" sizes=\"(max-width: 894px) 100vw, 894px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Importante quitar magenes , ajustar tama\u00f1o a m\u00e1ximo total y la opci\u00f3n de ignore pagination<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"591\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_380-1024x591.png\" alt=\"\" class=\"wp-image-13080\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_380-1024x591.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_380-300x173.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_380-768x443.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_380.png 1298w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"599\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_381-1024x599.png\" alt=\"\" class=\"wp-image-13081\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_381-1024x599.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_381-300x175.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_381-768x449.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_381.png 1281w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"645\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_382-1024x645.png\" alt=\"\" class=\"wp-image-13082\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_382-1024x645.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_382-300x189.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_382-768x484.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_382.png 1261w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora podemo ver un preview<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"739\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_383-1024x739.png\" alt=\"\" class=\"wp-image-13084\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-1024x739.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-300x216.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-768x554.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383.png 1070w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debemos revisar en formato pdf como excel<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"739\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_383-1-1024x739.png\" alt=\"\" class=\"wp-image-13085\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-1-1024x739.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-1-300x216.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-1-768x554.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_383-1.png 1070w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"236\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_384.png\" alt=\"\" class=\"wp-image-13086\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_384.png 815w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_384-300x87.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_384-768x222.png 768w\" sizes=\"(max-width: 815px) 100vw, 815px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Agregar los archivos al proyecto<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como estamos trabajando con jasperStudio en local y los archivos se encuentra en la MV debemos conectarnos por ssh y pegar los archivos en la ruta, si no existe la creamos<\/li>\n\n\n\n<li>sigesa-pbs-abs-&gt;sigesa-pbs-abs-web-&gt;src-&gt;main-&gt;java-&gt;resources-&gt;META-INF-&gt;resources-&gt;reports<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"274\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_385.png\" alt=\"\" class=\"wp-image-13087\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_385.png 386w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_385-300x213.png 300w\" sizes=\"(max-width: 386px) 100vw, 386px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y antes de pasar los archivos debemos compilarlo <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"325\" height=\"180\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_387.png\" alt=\"\" class=\"wp-image-13090\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_387.png 325w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_387-300x166.png 300w\" sizes=\"(max-width: 325px) 100vw, 325px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pasamos los archivos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"442\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_386-1024x442.png\" alt=\"\" class=\"wp-image-13088\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_386-1024x442.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_386-300x129.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_386-768x331.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_386-1536x663.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_386.png 1648w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para probar los reportes de forma local enla MV debemos crear una carpeta  de nombre \u00abreportes\u00bb en \u00ab\/\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh cgi@10.0.100.30\nsudo mkdir \/reportes\nsudo chmod 777 -R \/reportes\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y debemos pegar los reportes ahi tambien<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"162\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_391-1024x162.png\" alt=\"\" class=\"wp-image-13093\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_391-1024x162.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_391-300x48.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_391-768x122.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_391-1536x243.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_391.png 1735w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego debemos registrar el nuevo reporte dentro del sistema<\/li>\n\n\n\n<li>ingresamos a:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"463\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_388.png\" alt=\"\" class=\"wp-image-13095\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_388.png 380w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_388-246x300.png 246w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Completamos:<\/li>\n\n\n\n<li>NOTA: los nombre son de 3 digitos debia ser R-PBS-ABS-TIQTAV<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"561\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_390-1024x561.png\" alt=\"\" class=\"wp-image-13096\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_390-1024x561.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_390-300x164.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_390-768x420.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_390-1536x841.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_390.png 1673w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego debemos reportar el recurso<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"296\" height=\"253\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_393.png\" alt=\"\" class=\"wp-image-13098\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nuevo, pero aqupi debemos registrarlo de la siguiente forma<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/pages\/reporteJobLauncher.xhtml?reporte=R-PBS-ABS-TiquetesTavo<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"778\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_394.png\" alt=\"\" class=\"wp-image-13099\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_394.png 791w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_394-300x295.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_394-768x755.png 768w\" sizes=\"(max-width: 791px) 100vw, 791px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le debemos asiganar un rol<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"832\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_395.png\" alt=\"\" class=\"wp-image-13100\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_395.png 708w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_395-255x300.png 255w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos regitsrar el recurso en lista de menu<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Subreporte <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 01:Crerar subreporte<\/h3>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear un reporte de tiquetes y que tenga su detalle <\/li>\n\n\n\n<li>Primero  creamos el reporte del detalle<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"223\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_421.png\" alt=\"\" class=\"wp-image-13108\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_421.png 663w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_421-300x101.png 300w\" sizes=\"(max-width: 663px) 100vw, 663px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la consulta<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"414\" height=\"130\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_420.png\" alt=\"\" class=\"wp-image-13110\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_420.png 414w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_420-300x94.png 300w\" sizes=\"(max-width: 414px) 100vw, 414px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Paso02: maestros<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos un componente subreport y le agregamos el subreport desde archivo<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"489\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_419.png\" alt=\"\" class=\"wp-image-13105\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_419.png 973w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_419-300x151.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_419-768x386.png 768w\" sizes=\"(max-width: 973px) 100vw, 973px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora es importante cuando se agrega que le agregamos la variable SUBREPORT_DIR a la direcci\u00f3n del subreporte<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"490\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_422.png\" alt=\"\" class=\"wp-image-13111\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_422.png 546w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_422-300x269.png 300w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"472\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_424.png\" alt=\"\" class=\"wp-image-13112\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_424.png 614w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_424-300x231.png 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"510\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_425.png\" alt=\"\" class=\"wp-image-13114\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_425.png 557w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_425-300x275.png 300w\" sizes=\"(max-width: 557px) 100vw, 557px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"520\" height=\"435\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_426.png\" alt=\"\" class=\"wp-image-13115\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_426.png 520w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_426-300x251.png 300w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos la variable en reporte padre creamos un parametro  \u00ab\/reportes\u00bb para ubuntu y \u00abC:\/reportes\/\u00bb para Windows<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"266\" height=\"223\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_418.png\" alt=\"\" class=\"wp-image-13104\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Maestros agregamos un nuevio paramentroe patra e\u00f1l id de tyiqwuete<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"621\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_427-1024x621.png\" alt=\"\" class=\"wp-image-13117\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_427-1024x621.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_427-300x182.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_427-768x466.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_427.png 1101w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Otros ejemplos Name: parametro de maestro \/ Expression : detalle<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"556\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_429.png\" alt=\"\" class=\"wp-image-13119\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_429.png 1006w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_429-300x166.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_429-768x424.png 768w\" sizes=\"(max-width: 1006px) 100vw, 1006px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"431\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_433.png\" alt=\"\" class=\"wp-image-13122\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_433.png 919w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_433-300x141.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_433-768x360.png 768w\" sizes=\"(max-width: 919px) 100vw, 919px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del detalle debemo decirle que que ya no va ser 1 sino un paremetro<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"655\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_430.png\" alt=\"\" class=\"wp-image-13120\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_430.png 835w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_430-300x235.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_430-768x602.png 768w\" sizes=\"(max-width: 835px) 100vw, 835px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ya tenemos los parametros disponibles dentro de detalle en la modificaci\u00f3n de la consulta<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"479\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_434-1024x479.png\" alt=\"\" class=\"wp-image-13124\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_434-1024x479.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_434-300x140.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_434-768x359.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_434.png 1065w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego hay que marcar que el reporte tiene subreportes<\/li>\n<\/ul>\n\n\n\n\n\n<ul class=\"wp-block-list\">\n<li>Parametros dentro del reporte podemos agregar parametros<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"517\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_436.png\" alt=\"\" class=\"wp-image-13126\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_436.png 761w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_436-300x204.png 300w\" sizes=\"(max-width: 761px) 100vw, 761px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para tipos Object (Autocomplete) primero creamos el parametro y luego lo editamos para que nos apareca un nuevo boton de propiedades del parametros<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"142\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_437.png\" alt=\"\" class=\"wp-image-13127\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_437.png 320w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_437-300x133.png 300w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Editamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"365\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_438.png\" alt=\"\" class=\"wp-image-13128\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_438.png 459w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_438-300x239.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guradar regrsa y de nuievo a<\/li>\n\n\n\n<li>ya aparece avanzado<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"529\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_439.png\" alt=\"\" class=\"wp-image-13129\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_439.png 388w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_439-220x300.png 220w\" sizes=\"(max-width: 388px) 100vw, 388px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tema: Creci\u00f3n de Flujos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">PASO-01: CRECI\u00d3N DE TABLA <\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para el ejemplo de la creaci\u00f3n de flujos dentro de SIGESA vamos a crear una tabla \u00abESTADO_TIQUETE_TAVO\u00bb que va a manejar los estados de los tiquetes<\/li>\n\n\n\n<li>Para esto abrimos SQLDEVELOPER y creamos la siguiente tabla<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM ESTADO_TIQUETE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"ESTADO_TIQUETE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_ESTADO_TIQUETE_TAVO\"    NUMBER (19,0)       NOT NULL ENABLE,\n    \n\n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"NOMBRE\"                   VARCHAR2(255)       NOT NULL ENABLE,\n    \"ACTIVO\"                   NUMBER(1,0)         NOT NULL ENABLE,\n\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"                DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"              NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"            DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"          NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"                       NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"            NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_ESTADO_TIQUETE_TAVO\" PRIMARY KEY(\"ID_ESTADO_TIQUETE_TAVO\"),\n\n\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_EST_TIQ_TAV_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_EST_TIQ_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_EST_TIQ_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"ESTADO_TIQUETE_TAVO\".\"NOMBRE\"        IS 'Nombre del estado del tiquete';\nCOMMENT ON COLUMN \"PBS\".\"ESTADO_TIQUETE_TAVO\".\"ACTIVO\"             IS 'Activo 1=activo \/ 0 = inactivo';\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_ESTADO_TIQUETE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM ESTADO_TIQUETE_TAVO FOR \"PBS\".\"ESTADO_TIQUETE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_ESTADO_TIQUETE_TAVO FOR PBS.SQ_ESTADO_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.ESTADO_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_ESTADO_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"ESTADO_TIQUETE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM ESTADO_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA                                       *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_ESTADO_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM ESTADO_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM SQ_ESTADO_TIQUETE_TAVO;\nDROP TABLE \"PBS\".ESTADO_TIQUETE_TAVO CASCADE CONSTRAINTS;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Relaci\u00f3n EstadoTiqueteTavo -&gt; TiqueteTavo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos modificar la tabla de TiqueteTavo para que tenga un campo que soporte EstadoTiqueteTavo<\/li>\n\n\n\n<li>Para esto vamos a eliminar la tabla TiqueteTavo y le aplicamos las modificaciones<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA  DETALLE_TIQUETE                      *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_DETALLE_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM DETALLE_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM SQ_DETALLE_TIQUETE_TAVO;\nDROP TABLE \"PBS\".DETALLE_TIQUETE_TAVO;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR TABLA  TIQUETE_TAVO                         *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP SEQUENCE \"PBS\".SQ_TIQUETE_TAVO;\nDROP PUBLIC SYNONYM TIQUETE_TAVO;\nDROP PUBLIC SYNONYM SQ_TIQUETE_TAVO;\nDROP TABLE \"PBS\".TIQUETE_TAVO CASCADE CONSTRAINTS;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA  TIQUETE_TAVO         *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"TIQUETE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_TIQUETE_TAVO\"               NUMBER (19,0)       NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: FK                                           *\/\n    \/********************************************************\/\n    \"CLIENTE\"                       NUMBER (19,0)       NOT NULL ENABLE,\n    \"ESTADO_TIQUETE_TAVO\"           NUMBER (19,0)       ,\n    \n    \n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"FECHA\"                         DATE                NOT NULL ENABLE,\n    \"TOTAL\"                         NUMBER(22,2)        NOT NULL ENABLE,\n\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"                DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"              NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"            DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"          NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"                       NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"            NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_TIQUETE_TAVO\" PRIMARY KEY(\"ID_TIQUETE_TAVO\"),\n    \n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    \n    --TIQUETE_TAVO-&gt;CLIENTE_TAVO\n    CONSTRAINT FK_TIQ_TAV_CLI_TAV FOREIGN KEY(CLIENTE)                          REFERENCES PBS.CLIENTE_TAVO(ID_CLIENTE_TAVO),\n\n    -- TIQUETE_TAVO-&gt;ESTADO_TIQUETE_TAVO\n    CONSTRAINT FK_TIQ_TAV_EST_TIQ_TAV FOREIGN KEY(ESTADO_TIQUETE_TAVO)          REFERENCES PBS.ESTADO_TIQUETE_TAVO(ID_ESTADO_TIQUETE_TAVO),\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_TIQ_TAO_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_TIQ_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_TIQ_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"CLIENTE\"                IS 'Relaciona la tabla TIQUETE_TAVO con la tabla CLIENTE_TAVO';\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"ESTADO_TIQUETE_TAVO\"    IS 'Relaciona la tabla TIQUETE_TAVO con la tabla TIQUETE_TAVO_ESTADO';\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"FECHA\"                  IS 'Fecha de creaci\u00f3n del tiquete';\nCOMMENT ON COLUMN \"PBS\".\"TIQUETE_TAVO\".\"TOTAL\"                  IS 'Monto del tiquete';\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_TIQUETE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM TIQUETE_TAVO FOR \"PBS\".\"TIQUETE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_TIQUETE_TAVO FOR PBS.SQ_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"TIQUETE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* VERIFICACI\u00d3N  EXISTENCIA TABLA                       *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM TIQUETE_TAVO;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creaci\u00f3n de la tabla detalle<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE TABLA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE TABLE \"PBS\".\"DETALLE_TIQUETE_TAVO\"\n(\n    \/********************************************************\/\n    \/* CAMPOS: ID                                           *\/\n    \/********************************************************\/\n    \"ID_DETALLE_TIQUETE_TAVO\"       NUMBER (19,0)       NOT NULL ENABLE,\n    \n    \/********************************************************\/\n    \/* CAMPOS: GENERALES                                    *\/\n    \/********************************************************\/\n    \"TIQUETE\"                       NUMBER (19,0)       NOT NULL ENABLE,\n    \"NOMBRE\"                        VARCHAR2(50)        NOT NULL ENABLE,\n    \"CANTIDAD\"                      NUMBER(5,2)         NOT NULL ENABLE,\n    \"PRECIO_TOTAL\"                  NUMBER(22,2)        NOT NULL ENABLE,\n\n    \n    \/********************************************************\/\n    \/* CAMPOS: FRAMEWORK SDK-UNA                            *\/\n    \/********************************************************\/\n    \"FECHA_CREACION\"                DATE                NOT NULL ENABLE,\n    \"USUARIO_CREACION\"              NUMBER(19,0)        NOT NULL ENABLE,\n    \"FECHA_MODIFICACION\"            DATE                NOT NULL ENABLE,\n    \"USUARIO_MODIFICACION\"          NUMBER(19,0)        NOT NULL ENABLE,\n    \"VERSION\"                       NUMBER(19,0),\n    \"CAMPO_CONFIGURABLE\"            NUMBER(19,0),\n    \n    \/********************************************************\/\n    \/* LLAVE: PRIMARIA                                      *\/\n    \/********************************************************\/\n    CONSTRAINT \"PK_DETALLE_TIQUETE_TAVO\" PRIMARY KEY(\"ID_DETALLE_TIQUETE_TAVO\"),\n    \n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS CLIENTE_TAVO                         *\/\n    \/********************************************************\/\n    CONSTRAINT FK_DET_TIQ_TAV_TIQ_TAV FOREIGN KEY(TIQUETE)        REFERENCES PBS.TIQUETE_TAVO(ID_TIQUETE_TAVO),\n\n    \n    \/********************************************************\/\n    \/* LLAVE: FORANEAS                                      *\/\n    \/********************************************************\/\n    CONSTRAINT FK_DET_TIQ_TAV_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_DET_TIQ_TAV_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),\n    CONSTRAINT FK_DET_TIQ_TAV_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)\n);\n\n\/********************************************************\/\n\/********************************************************\/\n\/* COMENTARIOS                                          *\/\n\/********************************************************\/\n\/********************************************************\/\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"TIQUETE\"            IS 'Relaciona el detalle tiquete con el tiquete';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"NOMBRE\"             IS 'Nombre del producto';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"CANTIDAD\"           IS 'Cantidad del producto';\nCOMMENT ON COLUMN \"PBS\".\"DETALLE_TIQUETE_TAVO\".\"PRECIO_TOTAL\"       IS 'Precio total del producto';\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SECUENCIA                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE SEQUENCE \"PBS\".SQ_DETALLE_TIQUETE_TAVO START WITH 1 INCREMENT BY 1;\n\n\/********************************************************\/\n\/********************************************************\/\n\/* SINONIMOS                                            *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM DETALLE_TIQUETE_TAVO FOR \"PBS\".\"DETALLE_TIQUETE_TAVO\";\nCREATE PUBLIC SYNONYM SQ_DETALLE_TIQUETE_TAVO FOR PBS.SQ_DETALLE_TIQUETE_TAVO;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT PERMISOS SOBRE LA TABLA                        *\/\n\/********************************************************\/\n\/********************************************************\/\nGRANT SELECT, DELETE, UPDATE, INSERT ON PBS.DETALLE_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT, ALTER ON PBS.SQ_DETALLE_TIQUETE_TAVO TO WWW_SIGESA, WWW_TEUNA;\nGRANT SELECT ON \"PBS\".\"DETALLE_TIQUETE_TAVO\" TO \"ANALISTA\", \"ANALISTA_SIGESA\";\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-02: CRECI\u00d3N DE DOMAIN: EstadoTiqueteTavo.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del proyecto aggegator -&gt; proyecto -&gt; modulo -&gt; domain<\/li>\n\n\n\n<li>Creamos el archivo y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\n\n\n\/\/ *********************************************************************\n\/\/ Para hacer mapeos\n\/\/ *********************************************************************\nimport javax.persistence.OneToMany;\nimport javax.persistence.FetchType;\n\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.List;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link EstadoTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fechaCreacion       20\/10\/2022\n * @fechaModificacion   20\/10\/2022\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"ESTADO_TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column\n        = @Column(name = \"ID_ESTADO_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_ESTADO_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class EstadoTiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++      MAPEO: DEFINICI\u00d3N      ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ ***************************************\n    \/\/ MAPEO: TiqueteTavoEstado-&gt;TiqueteTavo\n    \/\/ ***************************************\n    @OneToMany(fetch = FetchType.LAZY, mappedBy = \"estadoTiqueteTavo\")\n    private List&lt;TiqueteTavo&gt; tiqueteTavo;     \n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++          MAPEO: GET\/SET        +++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \/\/ ***************************************\n    \/\/ MAPEO: TiqueteTavoEstado-&gt;Tiquete\n    \/\/ ***************************************\n    public List&lt;TiqueteTavo&gt; getTiqueteTavo() {\n        return tiqueteTavo;\n    }\n\n    public void setTiqueteTavo(List&lt;TiqueteTavo&gt; tiqueteTavo) {\n        this.tiqueteTavo = tiqueteTavo;\n    }\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++      CAMPOS: DEFINICI\u00d3N     ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ ***************************************\n    \/\/ CAMPO: NOMBRE\n    \/\/ ***************************************\n    @Column(name = \"NOMBRE\")\n    private String nombre;\n\n\n    \/\/\/ ***************************************\n    \/\/ CAMPO: ACTIVO\n    \/\/ ***************************************\n    @Column(name = \"ACTIVO\")\n    private Boolean activo;\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++      CAMPOS:  GET\/SET       ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n    \/\/ ***************************************\n    \/\/ CAMPO: NOMBRE\n    \/\/ ***************************************\n    public String getNombre() {\n        return nombre;\n    }\n\n    public void setNombre(String nombre) {\n        this.nombre = nombre;\n    }\n\n    \/\/ ***************************************\n    \/\/ Activo\n    \/\/ ***************************************\n    public Boolean getActivo() {\n        return activo;\n    }\n\n    public void setActivo(Boolean activo) {\n        this.activo = activo;\n    }\n    \n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-03: CRECI\u00d3N DE REPOSITORY: EstadoTiqueteTavoRepository.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del proyecto aggegator -&gt; proyecto -&gt; modulo -&gt; repository<\/li>\n\n\n\n<li>Creamos el archivo y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.repository;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.EstadoTiqueteTavo;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Repository;\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n * Repository para la administraci\u00f3n de la entidad {@link EstadoTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fechaCreacion 20\/10\/2022\n * @fechaCModificacion 20\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n \/\/ Estable que es un repositorio\n@Repository\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic interface EstadoTiqueteTavoRepository extends GenericRepository&lt;EstadoTiqueteTavo&gt; {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-04: CRECI\u00d3N DE SERVICE: EstadoTiqueteTavoService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del proyecto proyecto -&gt; modulo -&gt; PRO-MOD-interface-service<\/li>\n\n\n\n<li>Creamos el archivo y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.EstadoTiqueteTavo;\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n * Interface para la administraci\u00f3n de la entidad {@link EstadoTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fechaCreacion 20\/10\/2022\n * @fechaModificacion 20\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic interface EstadoTiqueteTavoService extends EntityService&lt;EstadoTiqueteTavo&gt; {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**********     FIN DEFINICI\u00d3N DE INTERFACE     ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-05: CRECI\u00d3N DE SERVICE-implementation: EstadoTiqueteTavoServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora dentro del proyecto proyecto -&gt; modulo -&gt; PRO-MOD-interface-service<\/li>\n\n\n\n<li>Creamos el archivo y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.service;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\n\n\/\/ Para acceder a parametros\nimport cr.ac.una.cgi.sdkuna.service.ParametroService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.EstadoTiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.repository.EstadoTiqueteTavoRepository;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++         AUTOWIRED           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++         MENSAJES CONSOLA    ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/\/import java.util.logging.Level;\n\/\/import java.util.logging.Logger;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*import java.util.ArrayList;\nimport java.util.Map;\nimport java.util.Date;\nimport java.text.SimpleDateFormat;  \nimport java.text.ParseException;\nimport java.math.BigDecimal;*\/\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n * Clase que implementa el servicio {@link EstadoTiqueteTavoService} para la entidad\n * {@link EstadoTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fechaCreacion 20\/10\/2022\n * @fechaModificacion 20\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Estabece que es un servicio\n@Service\n\n\/\/ Y que es de tipo transaccional\n@Transactional\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class EstadoTiqueteTavoServiceImpl extends EntityServiceImpl&lt;EstadoTiqueteTavo, EstadoTiqueteTavoRepository&gt; implements EstadoTiqueteTavoService {\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-06: CRECI\u00d3N DE BEAN: EstadoTiqueteTavoBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aunque no es necesario creamos el bean de EstadoTiqueteTavo<\/li>\n\n\n\n<li>Proyecto-&gt;m\u00f3dulo-&gt;web-&gt;view-&gt;model<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.view.model;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.pbs.abs.domain.EstadoTiqueteTavo;\nimport cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\/\/import org.springframework.data.domain.Page;\n\/\/import org.springframework.data.domain.Pageable;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++          CAMPOS             ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link EstadoTiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 20\/10\/2022\n *\/\n\n \n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n \/\/ Establece que es un componente\n @Component\n\n \/\/ Establece que existe mientras la session de usuario este activa\n @Scope(\"session\")\n\n \n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class EstadoTiqueteTavoBean extends CRUDImpl&lt;EstadoTiqueteTavo, EstadoTiqueteTavoService&gt; implements CRUD {\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \n    \/\/ Establece que despu\u00e9s de ejectar el constructor debe ejecutar la siguiente funci\u00f3n\n    @PostConstruct\n\n    public void init() {\n\n        \/\/Crea una lista de columnas\n        List&lt;CRUDColumn&gt; columns = new ArrayList&lt;&gt;();\n\n     \n\n        this.setTableColumns(columns);\n    }\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n}\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PASO-07: Modificaci\u00f3n de TiqueteTavo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos modificar a TiqueteTavo para que soporte el campo \u00abESTADO_TIQUETE_TAVO\u00bb con TIQUETE_TAVO<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Agreggator-dominan:  TiqueteTavo.java<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos la relaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"ESTADO_TIQUETE_TAVO\", nullable = false)\n    private EstadoTiqueteTavo estadoTiqueteTavo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los get y set de la relaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n    public EstadoTiqueteTavo getEstadoTiqueteTavo() {\n        return estadoTiqueteTavo;\n    }\n\n    public void setEstadoTiqueteTavo(EstadoTiqueteTavo estadoTiqueteTavo) {\n        this.estadoTiqueteTavo = estadoTiqueteTavo;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los TRASIENT<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n\n    \/\/ EstadoTiqueteTavo: Nombre\n    @Transient\n    private String estadoTiqueteTavoNombre;\n\n    \/\/ EstadoTiqueteTavo: Activo\n    @Transient\n    private Boolean estadoTiqueteTavoActivo;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los get y set de TRASIENT<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n\n    \/\/ EstadoTiqueteTavo: Nombre\n    public String getEstadoTiqueteTavoNombre() {\n        estadoTiqueteTavoNombre = \"\";\n        \n        if (EstadoTiqueteTavo != null) {\n            estadoTiqueteTavoNombre = estadoTiqueteTavo.getNombre();\n        }\n        \n        return estadoTiqueteTavoNombre;\n    }\n\n    public void setEstadoTiqueteTavoNombre(String estadoTiqueteTavoNombre) {\n        this.estadoTiqueteTavoNombre = estadoTiqueteTavoNombre;\n    }\n\n\n    \/\/ EstadoTiqueteTavo: Activo\n    public Boolean getEstadoTiqueteTavoActivo() {\n        estadoTiqueteTavoActivo = null;\n        \n        if (EstadoTiqueteTavo != null) {\n            estadoTiqueteTavoActivo = estadoTiqueteTavo.getActivo();\n        }\n        \n        return estadoTiqueteTavoActivo;\n    }\n\n    public void setEstadoTiqueteTavoActivo(Boolean estadoTiqueteTavoActivo) {\n        this.estadoTiqueteTavoActivo = estadoTiqueteTavoActivo;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.pbs.abs.domain;\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.domain.Usuario;\nimport cr.ac.una.cgi.sdkuna.generic.BaseEntity;\nimport cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++                BD           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.SequenceGenerator;\nimport javax.persistence.Table;\nimport javax.persistence.Temporal;\nimport javax.persistence.CascadeType;\n\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++           MAPEOS            ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.persistence.ManyToOne;\nimport javax.persistence.OneToMany;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.Transient;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.Date;\nimport java.util.List;\nimport java.math.BigDecimal;\n\n\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n * Entity para la administraci\u00f3n de la entidad {@link TiqueteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fechaCreacion: 06\/10\/2022\n * @fechaModificacion 19\/10\/2022\n *\/\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\/\/ Definimos que es una entidad (tabla BD)\n@Entity\n\n\/\/ Idenficamos el nombre de la tabla\n@Table(name = \"TIQUETE_TAVO\")\n\n\/\/ Relacionamos el id con el ID de la tabla\n@AttributeOverride(name = \"id\", column  = @Column(name = \"ID_TIQUETE_TAVO\"))\n\n\/\/ Relacionamos la secuencia\n@SequenceGenerator(name = \"sequence\", sequenceName = \"SQ_TIQUETE_TAVO\", allocationSize = 1)\n\n\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\npublic class TiqueteTavo extends BaseEntity&lt;Usuario, CampoConfigurable&gt; {\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++        MAPEOS: DEFINICI\u00d3N       ++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"CLIENTE\", nullable = false)\n    private ClienteTavo clienteTavo;\n    \n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n    @ManyToOne(fetch = FetchType.LAZY)\n    @JoinColumn(name = \"ESTADO_TIQUETE_TAVO\", nullable = false)\n    private EstadoTiqueteTavo estadoTiqueteTavo;\n\n\n\n\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: DetalleTiqueteTavo-&gt;Tiquete\n    \/\/ ***************************************\n    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)\n    @JoinColumn(name = \"TIQUETE\", nullable = false)\n    private List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo;\n\n    \n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       MAPEOS:  GET\/SET           +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n   \n   \n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n    public ClienteTavo getClienteTavo() {\n        return clienteTavo;\n    }\n\n    public void setClienteTavo(ClienteTavo clienteTavo) {\n        this.clienteTavo = clienteTavo;\n    }\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n    public EstadoTiqueteTavo getEstadoTiqueteTavo() {\n        return estadoTiqueteTavo;\n    }\n\n    public void setEstadoTiqueteTavo(EstadoTiqueteTavo estadoTiqueteTavo) {\n        this.estadoTiqueteTavo = estadoTiqueteTavo;\n    }\n\n\n\n\n\n\n    \/\/ ***************************************\n    \/\/ MAPEO: Tiquete-&gt;DetalleTiqueteTavo\n    \/\/ ***************************************\n    public List&lt;DetalleTiqueteTavo&gt; getDetalleTiqueteTavo() {\n        return detalleTiqueteTavo;\n    }\n\n    public void setDetalleTiqueteTavo(List&lt;DetalleTiqueteTavo&gt; detalleTiqueteTavo) {\n        this.detalleTiqueteTavo = detalleTiqueteTavo;\n    }\n\n\n\n\n   \n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++      TRASIENT: DEFINICI\u00d3N         ++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n\n    \/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n\n    \/\/ Cliente: C\u00e9dula\n    @Transient\n    private String clienteCedula;\n\n    \/\/ Cliente: Fecha Nacimiento\n    @Transient\n    private Date clienteFechaNacimiento;\n\n    \/\/ Cliente: Nombre\n    @Transient\n    private String clienteNombre;\n\n    \/\/ Cliente: Activo\n    @Transient\n    private Boolean clienteActivo;\n\n\n    \/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n\n    \/\/ EstadoTiqueteTavo: Nombre\n    @Transient\n    private String estadoTiqueteTavoNombre;\n\n    \/\/ EstadoTiqueteTavo: Activo\n    @Transient\n    private Boolean estadoTiqueteTavoActivo;\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++         TRASIENT: GET\/SET        +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\n\n    \/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;ClienteTavo\n    \/\/ ***************************************\n\n    \/\/ Cliente: C\u00e9dula\n    public String getClienteCedula() {\n        clienteCedula = \"\";\n        \n        if (clienteTavo != null) {\n            clienteCedula = clienteTavo.getCedula();\n        }\n        \n        return clienteCedula;\n    }\n\n    public void setClienteCedula(String clienteCedula) {\n        this.clienteCedula = clienteCedula;\n    }\n\n\n    \/\/ Cliente: Nombre\n    public String getClienteNombre() {\n        clienteNombre = \"\";\n        \n        if (clienteTavo != null) {\n            clienteNombre = clienteTavo.getNombre();\n        }\n        \n        return clienteNombre;\n    }\n\n    public void setClienteNombre(String clienteNombre) {\n        this.clienteNombre = clienteNombre;\n    }\n\n\n    \/\/ Cliente: Fecha de Nacimiento\n    public Date getClienteFechaNacimiento() {\n        clienteFechaNacimiento = null;\n        \n        if (clienteTavo != null) {\n            clienteFechaNacimiento = clienteTavo.getFechaNacimiento();\n        }\n        \n        return clienteFechaNacimiento;\n    }\n\n    public void setClienteFechaNacimiento(Date clienteFechaNacimiento) {\n        this.clienteFechaNacimiento = clienteFechaNacimiento;\n    }\n\n    \/\/ Cliente: Activo\n    public Boolean getClienteActivo() {\n        clienteActivo = null;\n        \n        if (clienteTavo != null) {\n            clienteActivo = clienteTavo.getActivo();\n        }\n        \n        return clienteActivo;\n    }\n\n    public void setClienteActivo(Boolean clienteActivo) {\n        this.clienteActivo = clienteActivo;\n    }\n\n\n    \/\/ ***************************************\n    \/\/ TRASIENT: Tiquete-&gt;EstadoTiqueteTavo\n    \/\/ ***************************************\n\n    \/\/ EstadoTiqueteTavo: Nombre\n    public String getEstadoTiqueteTavoNombre() {\n        estadoTiqueteTavoNombre = \"\";\n        \n        if (EstadoTiqueteTavo != null) {\n            estadoTiqueteTavoNombre = estadoTiqueteTavo.getNombre();\n        }\n        \n        return estadoTiqueteTavoNombre;\n    }\n\n    public void setEstadoTiqueteTavoNombre(String estadoTiqueteTavoNombre) {\n        this.estadoTiqueteTavoNombre = estadoTiqueteTavoNombre;\n    }\n\n\n    \/\/ EstadoTiqueteTavo: Activo\n    public Boolean getEstadoTiqueteTavoActivo() {\n        estadoTiqueteTavoActivo = null;\n        \n        if (EstadoTiqueteTavo != null) {\n            estadoTiqueteTavoActivo = estadoTiqueteTavo.getActivo();\n        }\n        \n        return estadoTiqueteTavoActivo;\n    }\n\n    public void setEstadoTiqueteTavoActivo(Boolean estadoTiqueteTavoActivo) {\n        this.estadoTiqueteTavoActivo = estadoTiqueteTavoActivo;\n    }\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++       CAMPOS: DEFINICI\u00d3N    ++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n\n    \/\/ Fecha\n    @Column(name = \"FECHA\")\n    @Temporal(javax.persistence.TemporalType.DATE)\n    private Date fecha;\n\n    \/\/ Total\n    @Column(name = \"TOTAL\")\n    private BigDecimal total;\n\n\n\n\n\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*+++++++++++++          CAMPOS: GET\/SET         +++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n    \n    \n\n    \/\/ ***************************************\n    \/\/ Fecha\n    \/\/ ***************************************\n    public Date getFecha() {\n        return fecha;\n    }\n    \n    public void setFecha(Date fecha) {\n        this.fecha = fecha;\n    }\n\n    \/\/ ***************************************\n    \/\/ Total\n    \/\/ ***************************************\n    public BigDecimal getTotal() {\n        return total;\n    }\n\n    public void setTotal(BigDecimal total) {\n        this.total = total;\n    }\n    \n\n   \n\n    \n\n\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">tiqueteTavoEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero como vamos a crear m\u00e1s adelante el campo para el soporte de estadoTiqueteTavo<\/li>\n\n\n\n<li>debemos modificar la configuraci\u00f3n de los PanelGrid que tenemos actualmente generados por la platilla de VS code<\/li>\n\n\n\n<li>Primero modificamos el panel principal para que se un panel de 2 columnas<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"412\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_674.png\" alt=\"\" class=\"wp-image-13332\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_674.png 942w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_674-300x131.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_674-768x336.png 768w\" sizes=\"(max-width: 942px) 100vw, 942px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modificamos esto:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"1\"\n                         layout=\"grid\"\n                         styleClass=\"una-panelgrid-responsive\"&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por esto<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"2\"\n                         layout=\"grid\"\n                         columnClasses=\"una-columnclasses-vertical-align, una-columnclasses-vertical-align\"\n                         styleClass=\"una-panelgrid una-width-100\"&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"282\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_675.png\" alt=\"\" class=\"wp-image-13333\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_675.png 858w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_675-300x99.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_675-768x252.png 768w\" sizes=\"(max-width: 858px) 100vw, 858px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora modificamos el Panel 1.1 <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"923\" height=\"326\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_676.png\" alt=\"\" class=\"wp-image-13335\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_676.png 923w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_676-300x106.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_676-768x271.png 768w\" sizes=\"(max-width: 923px) 100vw, 923px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modificando esto:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-panelgrid-cl1-responsive\"&gt;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por esto:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-float-right\"&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"915\" height=\"253\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_690.png\" alt=\"\" class=\"wp-image-13358\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_690.png 915w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_690-300x83.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_690-768x212.png 768w\" sizes=\"(max-width: 915px) 100vw, 915px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As\u00ed tenemos la primera columna del panel 1<\/li>\n\n\n\n<li>ahora vamos a crear la segunda columna de panel 1 que contendr\u00e1 el PanelGrid de EstadoTiqueteTavo<\/li>\n\n\n\n<li>As\u00ed que al final el panelGrid 1.1 y antes que finalice el PaneGrid 1 agregamos el siguiente codigo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"964\" height=\"445\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_678.png\" alt=\"\" class=\"wp-image-13337\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_678.png 964w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_678-300x138.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_678-768x355.png 768w\" sizes=\"(max-width: 964px) 100vw, 964px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos el campo de EstadoTiquete<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++++    PANELGRID 1.2   +++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;p:panelGrid columns=\"2\"\n                             layout=\"grid\"\n                             styleClass=\"una-float-right\"&gt;\n\n                        &lt;!--####################################################################################--&gt;\n                        &lt;!--#############################    NOMBRE  ESTADO   ##################################--&gt;\n                        &lt;!--####################################################################################--&gt;\n                                    \n                        &lt;!--LABEL--&gt;\n                        &lt;p:outputLabel id=\"nombreEstadoTiqueteTavoOutputLabel\"\n                                        for=\"nombreEstadoTiqueteTavoInputText\"\n                                        value=\"#{i18n.tiqueteTavo_estadoTiqueteTavo_nombre_label}\"\/&gt;  \n\n                        &lt;!--PANEL--&gt;\n                        &lt;p:outputPanel id=\"nombreEstadoTiqueteTavoOutputPanel\"&gt;\n\n                            &lt;!--CAMPO--&gt;\n                            &lt;p:inputText id=\"nombreEstadoTiqueteTavoInputText\"\n                                        value=\"#{tiqueteTavoBean.entity.estadoTiqueteTavoNombre}\"\n                                        \n                                        maxlength=\"100\" \n                                        size=\"25\"\n                                        disabled=\"#{true}\"\n                                        \/&gt;    \n\n                            &lt;!--MENSAJE--&gt;\n                            &lt;p:message id=\"nombreEstadoTiqueteTavoMessage\"\n                                        for=\"nombreEstadoTiqueteTavoInputText\" \/&gt;\n\n                        &lt;\/p:outputPanel&gt;\n                        &lt;!--####################################################################################--&gt;\n                        &lt;!--####################################################################################--&gt;\n                        &lt;!--####################################################################################--&gt;\n\n                &lt;\/p:panelGrid&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- +++++++++++++++++++++++++     FIN PANELGRID 1.2   ++++++++++++++++++++++++++++++++++++ --&gt;\n                &lt;!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --&gt;<\/code><\/pre>\n\n\n\n<ul class=\"has-text-color wp-block-list\" style=\"color:#dd2323\">\n<li>Ahora adem\u00e1s de agregar el campo de estado, debemos hacer algo con respecto a las validaci\u00f3nes<\/li>\n\n\n\n<li>Y esta que actualmente se encuentra solamente para el bot\u00f3n de Guardar un tiquete, por tanto solo se ejecutar\u00e1n si le damos este bot\u00f3n sin embargo<\/li>\n\n\n\n<li>Cuando se agrega un flujo a un formulario el modifica el bot\u00f3n de GUARDAR por un bot\u00f3n de GURDAR E INICIAR EL FLUJO <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"273\" height=\"172\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_679.png\" alt=\"\" class=\"wp-image-13341\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por tanto debemos agregar este bot\u00f3n en nuetro componente de validate para que tambien la funcionalidad de validar se ejecute cuando se de guardar en este bot\u00f3n<\/li>\n\n\n\n<li>Para esto modificamos el componente<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"245\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_680-1024x245.png\" alt=\"\" class=\"wp-image-13342\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_680-1024x245.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_680-300x72.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_680-768x184.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_680.png 1072w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n            &lt;!--######################## CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n            &lt;!--####################################################################################--&gt;\n\n            &lt;!--Entrada oculta para validaciones--&gt;\n            &lt;h:inputHidden id=\"tiqueteTavoValidator\" value=\"true\" &gt;\n                &lt;f:attribute name=\"tiqueteTavo\" value=\"#{tiqueteTavoBean.entity}\"\/&gt;\n                &lt;f:validator binding=\"#{tiqueteTavoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtn']}\" \/&gt;\n            &lt;\/h:inputHidden&gt;\n            &lt;!--####################################################################################--&gt;\n            &lt;!--###################  FIN CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n            &lt;!--####################################################################################--&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le agregamos el bot\u00f3n de flujo que es igual pero con una letra \u00abF\u00bb adicional<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;f:validator binding=\"#{tiqueteTavoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtnF']}\" \/&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################--&gt;\n            &lt;!--######################## CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n            &lt;!--####################################################################################--&gt;\n\n            &lt;!--Entrada oculta para validaciones--&gt;\n            &lt;h:inputHidden id=\"tiqueteTavoValidator\" value=\"true\" &gt;\n                &lt;f:attribute name=\"tiqueteTavo\" value=\"#{tiqueteTavoBean.entity}\"\/&gt;\n                &lt;f:validator binding=\"#{tiqueteTavoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtn']}\" \/&gt;\n                &lt;f:validator binding=\"#{tiqueteTavoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtnF']}\" \/&gt;\n            &lt;\/h:inputHidden&gt;\n            &lt;!--####################################################################################--&gt;\n            &lt;!--###################  FIN CAMPO OCULTO PARA VALIDACI\u00d3N   ############################--&gt;\n            &lt;!--####################################################################################--&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"263\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_681-1024x263.png\" alt=\"\" class=\"wp-image-13344\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_681-1024x263.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_681-300x77.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_681-768x197.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_681.png 1098w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como paso adicional agregamos la internacionalizaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"331\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_632.png\" alt=\"\" class=\"wp-image-13288\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_632.png 583w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_632-300x170.png 300w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de estados<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En la base de datos creamos los estados necesarios para el ejemplo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"657\" height=\"353\" src=\"\/wp-content\/uploads\/2022\/10\/MicrosoftTeams-image.png\" alt=\"\" class=\"wp-image-13210\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/MicrosoftTeams-image.png 657w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/MicrosoftTeams-image-300x161.png 300w\" sizes=\"(max-width: 657px) 100vw, 657px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entonces vamos a tener 3 estados\n<ul class=\"wp-block-list\">\n<li>1- Nuevo: cuando se crea el tiquete o es rechazado por el superior<\/li>\n\n\n\n<li>2- Aprobado por funcionario<\/li>\n\n\n\n<li>3- Aprobado por Superior<\/li>\n\n\n\n<li>4- Anulado<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Insertamos los estados<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO ESTADO_TIQUETE_TAVO (\n            ID_ESTADO_TIQUETE_TAVO, \n            NOMBRE, \n            ACTIVO, \n          \n            FECHA_CREACION, \n            USUARIO_CREACION,\n            FECHA_MODIFICACION,\n            USUARIO_MODIFICACION,\n            VERSION,\n            CAMPO_CONFIGURABLE) \nVALUES (\n            1,\n            'NUEVO', \n            1,\n            \n            SYSDATE,\n            246,\n            SYSDATE,\n            246,\n            0,\n            NULL\n            );\nINSERT INTO ESTADO_TIQUETE_TAVO (\n            ID_ESTADO_TIQUETE_TAVO, \n            NOMBRE, \n            ACTIVO, \n          \n            FECHA_CREACION, \n            USUARIO_CREACION,\n            FECHA_MODIFICACION,\n            USUARIO_MODIFICACION,\n            VERSION,\n            CAMPO_CONFIGURABLE) \nVALUES (\n            2,\n            'APROBADO POR FUNCIONARIO', \n            1,\n            \n            SYSDATE,\n            246,\n            SYSDATE,\n            246,\n            0,\n            NULL\n            );\n\n\nINSERT INTO ESTADO_TIQUETE_TAVO (\n            ID_ESTADO_TIQUETE_TAVO, \n            NOMBRE, \n            ACTIVO, \n          \n            FECHA_CREACION, \n            USUARIO_CREACION,\n            FECHA_MODIFICACION,\n            USUARIO_MODIFICACION,\n            VERSION,\n            CAMPO_CONFIGURABLE) \nVALUES (\n            3,\n            'APROBADO POR SUPERIOR', \n            1,\n            \n            SYSDATE,\n            246,\n            SYSDATE,\n            246,\n            0,\n            NULL\n            );\n\n\nINSERT INTO ESTADO_TIQUETE_TAVO (\n            ID_ESTADO_TIQUETE_TAVO, \n            NOMBRE, \n            ACTIVO, \n          \n            FECHA_CREACION, \n            USUARIO_CREACION,\n            FECHA_MODIFICACION,\n            USUARIO_MODIFICACION,\n            VERSION,\n            CAMPO_CONFIGURABLE) \nVALUES (\n            4,\n            'ANULADO', \n            1,\n            \n            SYSDATE,\n            246,\n            SYSDATE,\n            246,\n            0,\n            NULL\n            );\n\nSELECT * FROM ESTADO_TIQUETE_TAVO;<\/code><\/pre>\n\n\n\n<ul class=\"has-text-color wp-block-list\" style=\"color:#e52323\">\n<li>IMPORTANTE:<\/li>\n\n\n\n<li>Despues de insertarlo se debe aplicar commit<\/li>\n\n\n\n<li>Y ademas ejecutar el siguiente comando para que el NEXTVal se acualice se dee ejecutar hasta llegar el valor correcto<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT SQ_ESTADO_TIQUETE_TAVO.nextval  from dual;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"118\" height=\"131\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_641.png\" alt=\"\" class=\"wp-image-13303\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"593\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_619-1024x593.png\" alt=\"\" class=\"wp-image-13266\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_619-1024x593.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_619-300x174.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_619-768x445.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_619.png 1067w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de flujo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para la creaci\u00f3n de flujos abrimos el navegador en el servidor de desarrollo DESA01<\/li>\n\n\n\n<li><a href=\"http:\/\/10.0.2.134:8080\/activiti-explorer\/\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.134:8080\/activiti-explorer\/<\/a><\/li>\n\n\n\n<li>Y nos logeamos con <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>admin\nunacgi2019activiti<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"675\" height=\"432\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_588.png\" alt=\"\" class=\"wp-image-13214\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_588.png 675w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_588-300x192.png 300w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora por los paramteros de configuraci\u00f3n que deben tener los flujos de SIGESA<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;dataObject id=\"idFormMode\" name=\"formMode\" itemSubjectRef=\"xsd:boolean\"&gt;\n      &lt;extensionElements&gt;\n        &lt;activiti:value&gt;false&lt;\/activiti:value&gt;\n      &lt;\/extensionElements&gt;\n    &lt;\/dataObject&gt;\n    &lt;dataObject id=\"idApprovalCondition\" name=\"approvalCondition\" itemSubjectRef=\"xsd:boolean\"&gt;\n      &lt;extensionElements&gt;\n        &lt;activiti:value&gt;true&lt;\/activiti:value&gt;\n      &lt;\/extensionElements&gt;\n    &lt;\/dataObject&gt;\n    &lt;dataObject id=\"idCancelOption\" name=\"cancelOption\" itemSubjectRef=\"xsd:boolean\"&gt;\n      &lt;extensionElements&gt;\n        &lt;activiti:value&gt;true&lt;\/activiti:value&gt;\n      &lt;\/extensionElements&gt;\n    &lt;\/dataObject&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Es m\u00e1s facil exportar uno y luego renombrarlo<\/li>\n\n\n\n<li>para vamos a PROCESO-&gt;MODEL WORKSPACE Y buscamos uno y lo exportamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"397\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_589-1024x397.png\" alt=\"\" class=\"wp-image-13215\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_589-1024x397.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_589-300x116.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_589-768x298.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_589-1536x596.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_589.png 1921w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos importar el archivo<\/li>\n\n\n\n<li>PROCESO-&gt;MODEL WORKSPACE-&gt;IMPORT<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"394\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_590-1024x394.png\" alt=\"\" class=\"wp-image-13216\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_590-1024x394.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_590-300x115.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_590-768x295.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_590.png 1491w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"377\" height=\"296\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_591.png\" alt=\"\" class=\"wp-image-13218\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_591.png 377w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_591-300x236.png 300w\" sizes=\"(max-width: 377px) 100vw, 377px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"271\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_592.png\" alt=\"\" class=\"wp-image-13219\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_592.png 775w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_592-300x105.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_592-768x269.png 768w\" sizes=\"(max-width: 775px) 100vw, 775px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que no cargo le damos Edit<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"252\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_593-1024x252.png\" alt=\"\" class=\"wp-image-13220\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_593-1024x252.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_593-300x74.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_593-768x189.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_593.png 1373w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le cambiamos\n<ul class=\"wp-block-list\">\n<li>Process identifier: TiqueteTavo (nombre de la clase)<\/li>\n\n\n\n<li>Name: Flujo para Tiquetes Tavo (PBS-ABS-TIQTAV) -&gt; Nombre clave<\/li>\n\n\n\n<li>Excution listenners: estado con el que debe iniciar el flujo (es uno que no se ve y siempre es nuevo)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#{tiqueteTavoBean.estadoInicial(1,\"ESTADO_TIQUETE_TAVO\",\"cr.ac.una.cgi.sigesa.pbs.abs.view.model.TiqueteTavoBean\",\"cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService\",\"NOMBRE\")}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_682-1024x574.png\" alt=\"\" class=\"wp-image-13347\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_682-1024x574.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_682-300x168.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_682-768x431.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_682.png 1421w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"870\" height=\"645\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_683.png\" alt=\"\" class=\"wp-image-13348\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_683.png 870w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_683-300x222.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_683-768x569.png 768w\" sizes=\"(max-width: 870px) 100vw, 870px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto ya podemos eliminar todos sus elementos y nos aseguramos que tenemos los parametros de configuraci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_595-1024x508.png\" alt=\"\" class=\"wp-image-13225\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_595-1024x508.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_595-300x149.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_595-768x381.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_595-1536x761.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_595.png 1886w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con esto podemos comenzar a crear el flujo<\/li>\n\n\n\n<li>Guardamos Flujo para TiquetesTavo (PBS-ABS-TIQTAV)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"235\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_601.png\" alt=\"\" class=\"wp-image-13236\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_601.png 827w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_601-300x85.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_601-768x218.png 768w\" sizes=\"(max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le creamos el nombre Flujo para TiquetesTavo (PBS-ABS-TIQTAV)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"427\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_602.png\" alt=\"\" class=\"wp-image-13239\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_602.png 751w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_602-300x171.png 300w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora agregamos el inicio del flujo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"993\" height=\"582\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_596.png\" alt=\"\" class=\"wp-image-13226\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_596.png 993w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_596-300x176.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_596-768x450.png 768w\" sizes=\"(max-width: 993px) 100vw, 993px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ha este elemento debemos establecerle a que form pertenece para nuestro caso tiqueteTavoEditForm<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"507\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_597-1024x507.png\" alt=\"\" class=\"wp-image-13228\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_597-1024x507.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_597-300x149.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_597-768x380.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_597.png 1284w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora el siguiente paso es crear la aprobaci\u00f3n del usuario para esto buscamos Activities -&gt; User Task<\/li>\n\n\n\n<li>y lo agregamos y le configuramos\n<ul class=\"wp-block-list\">\n<li>name: TAREA USUARIO: APROBAR POR FUNCIONARIO<\/li>\n\n\n\n<li>Assignments: Candidate group: ROLE_UNA_PBS_ABS_TIQTAV_APROBAR_POR_FUNCIONARIO<\/li>\n\n\n\n<li>Form Key: tiqueteTavoEditForm<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>NOTA IMPORTANTE: <\/p>\n\n\n\n<ul class=\"has-text-color wp-block-list\" style=\"color:#ea1c1c\">\n<li>El rol que se debe crear es UNA_PBS_ABS_TIQTAV_APROBAR_POR_FUNCIONARIO pero para que la aplicaci\u00f3n funcione se le debe agregar la palabra \u00abROLE_\u00bb quedando as\u00ed ROLE_UNA_PBS_ABS_TIQTAV_APROBAR_POR_FUNCIONARIO<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Agregar Candidate (ROL-SIGESA)<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"557\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_598.png\" alt=\"\" class=\"wp-image-13232\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_598.png 761w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_598-300x220.png 300w\" sizes=\"(max-width: 761px) 100vw, 761px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"575\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_599.png\" alt=\"\" class=\"wp-image-13233\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_599.png 748w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_599-300x231.png 300w\" sizes=\"(max-width: 748px) 100vw, 748px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_603-1024x500.png\" alt=\"\" class=\"wp-image-13241\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_603-1024x500.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_603-300x146.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_603-768x375.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_603-1536x750.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_603.png 1870w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora le agregamos el comentario<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"486\" height=\"240\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_604.png\" alt=\"\" class=\"wp-image-13242\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_604.png 486w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_604-300x148.png 300w\" sizes=\"(max-width: 486px) 100vw, 486px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"383\" height=\"271\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_684.png\" alt=\"\" class=\"wp-image-13350\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_684.png 383w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_684-300x212.png 300w\" sizes=\"(max-width: 383px) 100vw, 383px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a relacionar el inicio del flujo con el proceso<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"436\" height=\"270\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_609.png\" alt=\"\" class=\"wp-image-13253\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_609.png 436w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_609-300x186.png 300w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos la condicional<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"432\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_611-1024x432.png\" alt=\"\" class=\"wp-image-13255\" style=\"width:750px;height:316px\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_611-1024x432.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_611-300x127.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_611-768x324.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_611.png 1297w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y creamos la relaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"556\" height=\"268\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_612.png\" alt=\"\" class=\"wp-image-13257\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_612.png 556w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_612-300x145.png 300w\" sizes=\"(max-width: 556px) 100vw, 556px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos un tarea de servicio<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"342\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_613-1024x342.png\" alt=\"\" class=\"wp-image-13258\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_613-1024x342.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_613-300x100.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_613-768x257.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_613.png 1464w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lo relacionamos <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"578\" height=\"219\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_685.png\" alt=\"\" class=\"wp-image-13351\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_685.png 578w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_685-300x114.png 300w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y para modificar la linea podemos agregar puntos con la herramienta<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"866\" height=\"324\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_615.png\" alt=\"\" class=\"wp-image-13261\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_615.png 866w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_615-300x112.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_615-768x287.png 768w\" sizes=\"(max-width: 866px) 100vw, 866px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"335\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_616.png\" alt=\"\" class=\"wp-image-13262\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_616.png 713w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_616-300x141.png 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora esta l\u00ednea va a responder a el caso que funcionario rechace la solicitud para indicar esto en el flujo sobre la l\u00ednea debemos agregar la propiedad:\n<ul class=\"wp-block-list\">\n<li>Flow condition<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>${!tiqueteTavoBean.isApproveTask()}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"691\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_617-1024x691.png\" alt=\"\" class=\"wp-image-13263\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_617-1024x691.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_617-300x202.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_617-768x518.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_617.png 1122w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"389\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_618.png\" alt=\"\" class=\"wp-image-13264\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_618.png 654w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_618-300x178.png 300w\" sizes=\"(max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora continuando con el rechazo por parte del funcionario lo que vamos hacer que si se rechaza la regresamos al estado inicial de nuevo<\/li>\n\n\n\n<li>Le agregamos las propiedades para anular el flujo (4-Anulado)\n<ul class=\"wp-block-list\">\n<li>name: Anular (ANULADO)<\/li>\n\n\n\n<li>Expression:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#{tiqueteTavoBean.actualizarEstado(tiqueteTavoBean.entity,\"ESTADO_TIQUETE_TAVO\",\"cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService\",4,\"NOMBRE\")}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"618\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_620-1024x618.png\" alt=\"\" class=\"wp-image-13268\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_620-1024x618.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_620-300x181.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_620-768x464.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_620.png 1279w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y as\u00ed podemos agregar el elemento de cierre de flujo y relacionarlo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"411\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_621-1024x411.png\" alt=\"\" class=\"wp-image-13270\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_621-1024x411.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_621-300x120.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_621-768x308.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_621.png 1519w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora para probar que esta funcionando correctamente vamos a cerrrar el flujo aqu\u00ed para probar su funcionamiento<\/li>\n\n\n\n<li>Cerramos el flujo y creamos la condicional S\u00ed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"674\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_623-1024x674.png\" alt=\"\" class=\"wp-image-13272\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_623-1024x674.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_623-300x198.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_623-768x506.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_623.png 1098w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>${tiqueteTavoBean.isApproveTask()}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"687\" height=\"405\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_624.png\" alt=\"\" class=\"wp-image-13273\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_624.png 687w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_624-300x177.png 300w\" sizes=\"(max-width: 687px) 100vw, 687px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cerramos la edici\u00f3n y vamos a deploy<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"344\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_625-1024x344.png\" alt=\"\" class=\"wp-image-13275\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_625-1024x344.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_625-300x101.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_625-768x258.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_625-1536x516.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_625.png 1912w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si sale bien nos lleva Gestionar y lo podemos encontrar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_626-1024x472.png\" alt=\"\" class=\"wp-image-13276\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_626-1024x472.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_626-300x138.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_626-768x354.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_626-1536x708.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_626.png 1550w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos ir a SIGESA y logeanos como usuario funcionario 115080868<\/li>\n\n\n\n<li>Y vamos a lista de roles y agregamos el rol UNA_PBS_ABS_TIQTAV_APROBAR_POR_FUNCIONARIO<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"525\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_627-1024x525.png\" alt=\"\" class=\"wp-image-13278\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_627-1024x525.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_627-300x154.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_627-768x394.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_627-1536x788.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_627.png 1628w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Salimos y volvemos a ingresar<\/li>\n\n\n\n<li>Y ingresamos a  nuevo tiquete y si el bot\u00f3n de guardar tiene un nuevo formato de guardar e iniciar el flujo el flujo esta funcionando correctamente<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"344\" height=\"226\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_633.png\" alt=\"\" class=\"wp-image-13289\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_633.png 344w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_633-300x197.png 300w\" sizes=\"(max-width: 344px) 100vw, 344px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Completamos los datos y le damos guardar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"538\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_634.png\" alt=\"\" class=\"wp-image-13290\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_634.png 937w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_634-300x172.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_634-768x441.png 768w\" sizes=\"(max-width: 937px) 100vw, 937px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora podemos ver como aparecne los botones de aprobar \/ rechazar \/ ver flujo \/ Auditor\u00eda<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"631\" height=\"197\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_635.png\" alt=\"\" class=\"wp-image-13291\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_635.png 631w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_635-300x94.png 300w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemos entonces rechazar la tarea y ver su flujo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_636-1024x558.png\" alt=\"\" class=\"wp-image-13292\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_636-1024x558.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_636-300x163.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_636-768x418.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_636.png 1296w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para ver el flujo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"127\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_637.png\" alt=\"\" class=\"wp-image-13294\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_637.png 424w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_637-300x90.png 300w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"657\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_638-1024x657.png\" alt=\"\" class=\"wp-image-13295\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_638-1024x657.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_638-300x192.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_638-768x493.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_638.png 1135w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"997\" height=\"693\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_639.png\" alt=\"\" class=\"wp-image-13296\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_639.png 997w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_639-300x209.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_639-768x534.png 768w\" sizes=\"(max-width: 997px) 100vw, 997px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lo mismo pasar\u00eda para el caso de aprobado por funcionario<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"389\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_640.png\" alt=\"\" class=\"wp-image-13297\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_640.png 917w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_640-300x127.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_640-768x326.png 768w\" sizes=\"(max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As\u00ed que podemos continuar editando el flujo para aprobaci\u00f3n de SUPERIOR <\/li>\n\n\n\n<li>agregamos la tarea de aprobado por funcionario<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"414\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_642.png\" alt=\"\" class=\"wp-image-13304\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_642.png 861w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_642-300x144.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_642-768x369.png 768w\" sizes=\"(max-width: 861px) 100vw, 861px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>le creamos la relaci\u00f3n y le agregamos la acci\u00f3n de aprobar por funcionario<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"633\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_644-1024x633.png\" alt=\"\" class=\"wp-image-13306\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_644-1024x633.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_644-300x185.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_644-768x475.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_644.png 1124w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Acci\u00f3n aprobar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>${tiqueteTavoBean.isApproveTask()}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"397\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_645.png\" alt=\"\" class=\"wp-image-13307\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_645.png 674w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_645-300x177.png 300w\" sizes=\"(max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ademas la vamos a asignar el cambio de estado a APROBADO POR FUNCIONARIO (2)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#{tiqueteTavoBean.actualizarEstado(tiqueteTavoBean.entity,\"ESTADO_TIQUETE_TAVO\",\"cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService\",2,\"NOMBRE\")}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"611\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_646-1024x611.png\" alt=\"\" class=\"wp-image-13308\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_646-1024x611.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_646-300x179.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_646-768x458.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_646.png 1251w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_647-1024x716.png\" alt=\"\" class=\"wp-image-13309\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_647-1024x716.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_647-300x210.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_647-768x537.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_647.png 1093w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos comentario<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"481\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_648.png\" alt=\"\" class=\"wp-image-13310\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_648.png 883w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_648-300x163.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_648-768x418.png 768w\" sizes=\"(max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Al igual que en el caso anterior vamos a crear un nuevo rol para que se le asigne al superior, para esta caso vamos hacer que sea root-juan el que deba aprobar<\/li>\n\n\n\n<li>Rol: UNA_PBS_ABS_TIQTAV_APROBAR_POR_SUPERIOR<\/li>\n\n\n\n<li>ingresamos a SIGESA -&gt; LISTA DE ROLES -&gt; NUEVO<\/li>\n\n\n\n<li>Lo ceamos y se lo asignamos al usuario root-juan (SUPERIOR)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"542\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_649-1024x542.png\" alt=\"\" class=\"wp-image-13311\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_649-1024x542.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_649-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_649-768x406.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_649-1536x813.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_649.png 1608w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regresamos al activity <\/li>\n\n\n\n<li>y agregamos el candidate group<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_650-1024x583.png\" alt=\"\" class=\"wp-image-13313\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_650-1024x583.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_650-300x171.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_650-768x438.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_650.png 1420w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le agregamos ROLE_<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"913\" height=\"553\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_651.png\" alt=\"\" class=\"wp-image-13314\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_651.png 913w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_651-300x182.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_651-768x465.png 768w\" sizes=\"(max-width: 913px) 100vw, 913px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y le agregamos el Form Key: tiqueteTavoEditForm<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_652-1024x665.png\" alt=\"\" class=\"wp-image-13316\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_652-1024x665.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_652-300x195.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_652-768x498.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_652.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a agregar el proceso de el rechazo por parte del superior <\/li>\n\n\n\n<li>agregamos la tarea<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"456\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_653-1024x456.png\" alt=\"\" class=\"wp-image-13319\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_653-1024x456.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_653-300x134.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_653-768x342.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_653.png 1199w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos el cambio de estado por RECHADO POR SUPERIOR &#8211; NUEVO <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#{tiqueteTavoBean.actualizarEstado(tiqueteTavoBean.entity,\"ESTADO_TIQUETE_TAVO\",\"cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService\",1,\"NOMBRE\")}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_669-1024x607.png\" alt=\"\" class=\"wp-image-13323\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_669-1024x607.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_669-300x178.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_669-768x455.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_669.png 1338w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos la relaci\u00f3n de rechado por superior<\/li>\n\n\n\n<li>Flow condition: <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>${!tiqueteTavoBean.isApproveTask()}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"911\" height=\"690\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_670.png\" alt=\"\" class=\"wp-image-13325\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_670.png 911w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_670-300x227.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_670-768x582.png 768w\" sizes=\"(max-width: 911px) 100vw, 911px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y creamos la relaci\u00f3n para regresar al inicio del flujo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"321\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_686.png\" alt=\"\" class=\"wp-image-13352\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_686.png 899w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_686-300x107.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_686-768x274.png 768w\" sizes=\"(max-width: 899px) 100vw, 899px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos la tarea autom\u00e1tica para cambiar el estado del tiquete a APROBADO POR SUPERIOR<\/li>\n\n\n\n<li>Le agregamos <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>#{tiqueteTavoBean.actualizarEstado(tiqueteTavoBean.entity,\"ESTADO_TIQUETE_TAVO\",\"cr.ac.una.cgi.sigesa.pbs.abs.service.EstadoTiqueteTavoService\",3,\"NOMBRE\")}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"685\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_672-1024x685.png\" alt=\"\" class=\"wp-image-13328\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_672-1024x685.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_672-300x201.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_672-768x514.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_672.png 1153w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos la relaci\u00f3n de APROBADO POR SUPERIOR<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"582\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_673-1024x582.png\" alt=\"\" class=\"wp-image-13329\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_673-1024x582.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_673-300x171.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_673-768x437.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_673.png 1122w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la relaci\u00f3n final y el cierre del flujo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"326\" height=\"123\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_687.png\" alt=\"\" class=\"wp-image-13353\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_687.png 326w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_687-300x113.png 300w\" sizes=\"(max-width: 326px) 100vw, 326px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para mejorar el ejemplo hemos modificado los datos de los procesos y comentarios quedando as\u00ed en la versi\u00f3n final<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"537\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_688.png\" alt=\"\" class=\"wp-image-13354\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_688.png 976w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_688-300x165.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_688-768x423.png 768w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora guardamos y desplegamos el proyecto<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"556\" src=\"\/wp-content\/uploads\/2022\/10\/Seleccion_689-1024x556.png\" alt=\"\" class=\"wp-image-13356\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_689-1024x556.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_689-300x163.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_689-768x417.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/Seleccion_689.png 1197w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y podemos probar los diferentes casos<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>El funcionario crea el tiquete y lo Anula <\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"\/wp-content\/uploads\/2022\/10\/1-1024x544.png\" alt=\"\" class=\"wp-image-13361\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/1-1024x544.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/1-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/1-768x408.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/1.png 1154w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Que superior lo rechace<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"\/wp-content\/uploads\/2022\/10\/2-1024x544.png\" alt=\"\" class=\"wp-image-13362\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/2-1024x544.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/2-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/2-768x408.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/2.png 1154w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y que superior lo apruebe<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"\/wp-content\/uploads\/2022\/10\/3-1024x544.png\" alt=\"\" class=\"wp-image-13363\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/3-1024x544.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/3-300x159.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/3-768x408.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2022\/10\/3.png 1154w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Instalaci\u00f3n de programas Java 1.8 SQL Developer Variable JAVA_HOME Encabezado Dia 01: Paso #01: Creaci\u00f3n de tabla NOTAS: Importantes Est\u00e1ndar de Nombres Tablas y campos Comentarios Secuencia Sin\u00f3nimos Permisos NOTA Aggregator (JPA) Paso #02: DOMAIN-&gt;Clase Entity Notas: DOMAIN \u00b4 \u00b4 Paso #03: Repository https:\/\/docs.jboss.org\/hibernate\/orm\/3.5\/reference\/es-ES\/html\/queryhql.html Paso #04: Service Paso #05: Service Implementaci\u00f3n Paso #06: Bean Paso [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-12638","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/12638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12638"}],"version-history":[{"count":376,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/12638\/revisions"}],"predecessor-version":[{"id":16214,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/12638\/revisions\/16214"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}