Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 478

UNIVERSIDAD CATÓLICA SANTO TORIBIO DE MOGROVEJO

FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

PROPUESTA DE UN SISTEMA DE GESTIÓN DOCUMENTARIA


BASADO EN TECNOLOGÍA WORKFLOW PARA EL MANEJO DEL
PROCESO DE TRÁMITE DOCUMENTARIO EN UNA UNIVERSIDAD
PRIVADA DE LA REGIÓN

TESIS PARA OPTAR EL TÍTULO DE


INGENIERO DE SISTEMAS Y COMPUTACIÓN

AUTOR
DARWIN VICTOR HERRERA SANCHEZ

ASESOR
MGTR. PEDRO MIGUEL JACINTO MEJÍA

Chiclayo, 2019
DEDICATORIA

A Dios por darme la decisión de terminar este proyecto de


tesis.

A mis padres por brindarme todo el apoyo necesario e


incondicional durante toda mi educación y en especial
para concluir este proyecto.

A mis hermanas y a todas las personas involucradas


directa e indirectamente que siempre me brindaron el
apoyo moral para sacar adelante mi proyecto de tesis.
AGRADECIMIENTO

Agradecer en primer lugar a Dios por estar presente en


todo momento ofreciéndome y buscando lo mejor para mi
persona asi como brindándome las fuerzas necesarias para
concluir este proyecto de tesis.

A mis padres y a mis padrinos por ser los promotores para


cumplir mis sueños y metas; por confiar, creer en mi, en
mis expectativas y por darme todo el aliento necesario
para culminar esta etapa.

A mi profesor y asesor de tesis, Pedro Miguel, por todo el


apoyo y dedicación brindada aconsejándome, respetando
mis sugerencias e ideas encaminando mi proyecto de tesis
dentro y fuera del horario de estudio.

No puedo concluir esta sección sin agradecer a mi


universidad por brindarme la formación academica y en
ella gracias a todas las personas que fueron parte de mi
formación profesional y personal, gracias a quienes fueron
participes de este proceso final por sus aportes.
RESUMEN

La presente investigación tiene como propósito fundamental el desarrollo de una aplicación


web de Gestión de Documentos basada en workflow para mejorar la integración entre TI y los
procesos de negocio de la universidad local en estudio, especificamente en el proceso de trámite
documentario para lo cual se aplicaron cuestionarios y entrevistas que nos daban un alcance
preciso de las fallas del proceso lo que permitió poder analizar y brindar la mejor solución
posible para el proceso en estudio. La metodología ágil que se utilizó para salvaguardar el
correcto desarrollo de la aplicación web es la metodología XP pues se apoya en las bases de un
análisis comparativo para probar la idoneidad de los métodos ágiles sobre el desarrollo de
Sistemas Web. Post implementación de la aplicación web se volvió a realizar el levantamiento
de información del proceso de tramite documentario en el que se obtuvo como resultado una
mejora sobre tiempo dedicado al proceso de un docuemnto, documentos resultos al día, cantidad
de documentos pendientes, cantidad de documentos almacenados en las dependencias entre
otros. En el presente proyecto se concluye que la aplicación web basada en workflow logra
apoyar de manera significativa en el proceso de trámite documentario logrando los resultados
esperados y aportando una aplicación de gran apoyo a la institución en estudio y a la sociedad
para futuras investigaciones.

Palabras clave: Trámite documentario, coordinación, flujo de Trabajo (workflow)


ABSTRACT

The main purpose of this research is the development of a web application of Document
Management based on workflow to improve the integration between IT and the business
processes of the local university under study, specifically in the process of documentary
processing for which they were applied questionnaires and interviews that gave us a precise
scope of the process failures which allowed us to analyze and provide the best possible solution
for the process under study. The agile methodology that was used to safeguard the correct
development of the web application is the XP methodology because it is based on a comparative
analysis to prove the suitability of agile methods on the development of Web Systems. Post
implementation of the web application was again carried out the information collection of the
process of documentary processing in which an improvement was obtained over time dedicated
to the process of a document, documents results per day, amount of pending documents, number
of documents stored in the dependencies among others. This project concludes that the web
application based on workflow manages to support significantly in the process of document
processing achieving the expected results and providing an application of great support to the
institution under study and to society for future research.

Keywords: Documentary step, coordination, workflow


ÍNDICE

I. INTRODUCCIÓN .......................................................................................................... 1
II. MARCO TEÓRICO ....................................................................................................... 4
2.1. Antecedentes .......................................................................................................... 4
2.1.1. Antecedentes internacionales ..................................................................... 4
2.1.2. Antecedentes nacionales ............................................................................. 6
2.1.3. Antecedentes locales.................................................................................... 7
2.2. Bases Teórico Científicas ...................................................................................... 9
2.2.1. Tecnología groupware para la automatización de oficinas ...................... 9
2.2.2. Sistemas workflow .....................................................................................11
2.3. Definición de términos básicos ............................................................................40
III. MATERIALES Y MÉTODOS ......................................................................................42
3.1. Diseño de investigación ........................................................................................42
3.2. Metodología ..........................................................................................................44
IV. RESULTADOS ..............................................................................................................46
4.1. Fase de planificación ............................................................................................46
4.1.1. Historia de usuarios ...................................................................................46
4.1.2. Tareas de Historias de usuarios ................................................................55
4.2. Fase de diseño .......................................................................................................77
4.2.1. Elaboración de las tarjetas CRC...............................................................77
4.2.2. Diseño de interfaces ...................................................................................83
4.3. Elaboración del modelo entidad relación ...........................................................94
4.4. Fase de desarrollo ................................................................................................95
4.4.1. Codificación de base de datos....................................................................95
4.4.2. Codificación de las interfaces ..................................................................103
4.5. Fase de pruebas ..................................................................................................421
4.5.1. Pruebas de aceptación .............................................................................421
V. DISCUSIÓN .................................................................................................................450
VI. CONCLUSIONES ........................................................................................................458
VII. REFERENCIAS BIBLIOGRÁFICAS .......................................................................459
VIII. ANEXOS .......................................................................................................................460
ÍNDICE DE TABLAS

Tabla 1: Tipos de estrategias en la asignación de actividades ........................................ 22


Tabla 2: Variables ........................................................................................................... 43
Tabla 3: Técnicas e Instrumentos de recolección de datos ............................................. 44
Tabla 4: Historia de usuario 01 ....................................................................................... 46
Tabla 5: Historia de usuario 02 ....................................................................................... 46
Tabla 6: Historia de usuario 03 ....................................................................................... 47
Tabla 7: Historia de usuario 04 ....................................................................................... 47
Tabla 8: Historia de usuario 05 ....................................................................................... 47
Tabla 9: Historia de usuario 06 ....................................................................................... 48
Tabla 10: Historia de usuario 07 ..................................................................................... 48
Tabla 11: Historia de usuario 08 ..................................................................................... 48
Tabla 12: Historia de usuario 09 ..................................................................................... 49
Tabla 13: Historia de usuario 10 ..................................................................................... 49
Tabla 14: Historia de usuario 11 ..................................................................................... 49
Tabla 15: Historia de usuario 12 ..................................................................................... 50
Tabla 16: Historia de usuario 13 ..................................................................................... 50
Tabla 17: Historia de usuario 14 ..................................................................................... 51
Tabla 18: Historia de usuario 15 ..................................................................................... 51
Tabla 19: Historia de usuario 16 ..................................................................................... 52
Tabla 20: Historia de usuario 17 ..................................................................................... 52
Tabla 21: Historia de usuario 18 ..................................................................................... 53
Tabla 22: Historia de usuario 19 ..................................................................................... 53
Tabla 23: Historia de usuario 20 ..................................................................................... 53
Tabla 24: Historia de usuario 21 ..................................................................................... 54
Tabla 25: Historia de usuario 22 ..................................................................................... 54
Tabla 26: Tarea de historia de usuario 1.1 ...................................................................... 55
Tabla 27: Tarea de historia de usuario 1.2 ...................................................................... 55
Tabla 28: Tarea de historia de usuario 1.3 ...................................................................... 55
Tabla 29: Tarea de historia de usuario 2.1 ...................................................................... 56
Tabla 30: Tarea de historia de usuario 2.2 ...................................................................... 56
Tabla 31: Tarea de historia de usuario 2.3 ...................................................................... 56
Tabla 32: Tarea de historia de usuario 3.1 ...................................................................... 57
Tabla 33: Tarea de historia de usuario 3.2 ...................................................................... 57
Tabla 34: Tarea de historia de usuario 3.3 ...................................................................... 57
Tabla 35: Tarea de historia de usuario 4.1 ...................................................................... 58
Tabla 36: Tarea de historia de usuario 4.2 ...................................................................... 58
Tabla 37: Tarea de historia de usuario 4.3 ...................................................................... 58
Tabla 38: Tarea de historia de usuario 5.1 ...................................................................... 59
Tabla 39: Tarea de historia de usuario 5.2 ...................................................................... 59
Tabla 40: Tarea de historia de usuario 5.3 ...................................................................... 59
Tabla 41: Tarea de historia de usuario 6.1 ...................................................................... 60
Tabla 42: Tarea de historia de usuario 6.2 ...................................................................... 60
Tabla 43: Tarea de historia de usuario 6.3 ...................................................................... 60
Tabla 44: Tarea de historia de usuario 7.1 ...................................................................... 61
Tabla 45: Tarea de historia de usuario 7.2 ...................................................................... 61
Tabla 46: Tarea de historia de usuario 7.3 ...................................................................... 61
Tabla 47: Tarea de historia de usuario 8.1 ...................................................................... 62
Tabla 48: Tarea de historia de usuario 8.2 ...................................................................... 62
Tabla 49: Tarea de historia de usuario 8.3 ...................................................................... 62
Tabla 50: Tarea de historia de usuario 9.1 ...................................................................... 63
Tabla 51: Tarea de historia de usuario 9.2 ...................................................................... 63
Tabla 52: Tarea de historia de usuario 9.3 ...................................................................... 63
Tabla 53: Tarea de historia de usuario 10.1 .................................................................... 64
Tabla 54: Tarea de historia de usuario 10.2 .................................................................... 64
Tabla 55: Tarea de historia de usuario 10.3 .................................................................... 64
Tabla 56: Tarea de historia de usuario 11.1 .................................................................... 65
Tabla 57: Tarea de historia de usuario 11.2 .................................................................... 65
Tabla 58: Tarea de historia de usuario 11.3 .................................................................... 65
Tabla 59: Tarea de historia de usuario 12.1 .................................................................... 66
Tabla 60: Tarea de historia de usuario 12.2 .................................................................... 66
Tabla 61: Tarea de historia de usuario 12.3 .................................................................... 66
Tabla 62: Tarea de historia de usuario 13.1 .................................................................... 67
Tabla 63: Tarea de historia de usuario 13.2 .................................................................... 67
Tabla 64: Tarea de historia de usuario 13.3 .................................................................... 67
Tabla 65: Tarea de historia de usuario 14.1 .................................................................... 68
Tabla 66: Tarea de historia de usuario 14.2 .................................................................... 68
Tabla 67: Tarea de historia de usuario 14.3 .................................................................... 68
Tabla 68: Tarea de historia de usuario 15.1 .................................................................... 69
Tabla 69: Tarea de historia de usuario 15.2 .................................................................... 69
Tabla 70: Tarea de historia de usuario 15.3 .................................................................... 69
Tabla 71: Tarea de historia de usuario 16.1 .................................................................... 70
Tabla 72: Tarea de historia de usuario 16.2 .................................................................... 70
Tabla 73: Tarea de historia de usuario 16.3 .................................................................... 70
Tabla 74: Tarea de historia de usuario 17.1 .................................................................... 71
Tabla 75: Tarea de historia de usuario 17.2 .................................................................... 71
Tabla 76: Tarea de historia de usuario 17.3 .................................................................... 71
Tabla 77: Tarea de historia de usuario 18.1 .................................................................... 72
Tabla 78: Tarea de historia de usuario 18.2 .................................................................... 72
Tabla 79: Tarea de historia de usuario 18.3 .................................................................... 72
Tabla 80: Tarea de historia de usuario 19.1 .................................................................... 73
Tabla 81: Tarea de historia de usuario 19.2 .................................................................... 73
Tabla 82: Tarea de historia de usuario 19.3 .................................................................... 73
Tabla 83: Tarea de historia de usuario 20.1 .................................................................... 74
Tabla 84: Tarea de historia de usuario 20.2 .................................................................... 74
Tabla 85: Tarea de historia de usuario 20.3 .................................................................... 74
Tabla 86: Tarea de historia de usuario 21.1 .................................................................... 75
Tabla 87: Tarea de historia de usuario 21.2 .................................................................... 75
Tabla 88: Tarea de historia de usuario 21.3 .................................................................... 75
Tabla 89: Tarea de historia de usuario 22.1 .................................................................... 76
Tabla 90: Tarea de historia de usuario 22.2 .................................................................... 76
Tabla 91: Tarea de historia de usuario 22.3 .................................................................... 76
Tabla 92: Tarjeta CRC 01 ............................................................................................... 77
Tabla 93: Tarjeta CRC 02 ............................................................................................... 77
Tabla 94: Tarjeta CRC 03 ............................................................................................... 77
Tabla 95: Tarjeta CRC 04 ............................................................................................... 77
Tabla 96: Tarjeta CRC 05 ............................................................................................... 78
Tabla 97: Tarjeta CRC 06 ............................................................................................... 78
Tabla 98: Tarjeta CRC 07 ............................................................................................... 78
Tabla 99: Tarjeta CRC 08 ............................................................................................... 78
Tabla 100: Tarjeta CRC 09 ............................................................................................. 79
Tabla 101: Tarjeta CRC 10 ............................................................................................. 79
Tabla 102: Tarjeta CRC 11 ............................................................................................. 79
Tabla 103: Tarjeta CRC 12 ............................................................................................. 79
Tabla 104: Tarjeta CRC 13 ............................................................................................. 80
Tabla 105: Tarjeta CRC 14 ............................................................................................. 80
Tabla 106: Tarjeta CRC 15 ............................................................................................. 80
Tabla 107: Tarjeta CRC 16 ............................................................................................. 80
Tabla 108: Tarjeta CRC 17 ............................................................................................. 81
Tabla 109: Tarjeta CRC 18 ............................................................................................. 81
Tabla 110: Tarjeta CRC 19 ............................................................................................. 81
Tabla 111: Tarjeta CRC 20 ............................................................................................. 81
Tabla 112: Tarjeta CRC 21 ............................................................................................. 82
Tabla 113: Tarjeta CRC 22 ............................................................................................. 82
Tabla 114: Tarjeta CRC 23 ............................................................................................. 82
Tabla 115: Prueba de aceptación 01 .............................................................................. 421
Tabla 116: Prueba de aceptación 02 .............................................................................. 422
Tabla 117: Prueba de aceptación 03 .............................................................................. 423
Tabla 118: Prueba de aceptación 04 .............................................................................. 424
Tabla 119: Prueba de aceptación 05 .............................................................................. 425
Tabla 120: Prueba de aceptación 06 .............................................................................. 426
Tabla 121: Prueba de aceptación 07 .............................................................................. 426
Tabla 122: Prueba de aceptación 08 .............................................................................. 427
Tabla 123: Prueba de aceptación 09 .............................................................................. 427
Tabla 124: Prueba de aceptación 10 .............................................................................. 428
Tabla 125: Prueba de aceptación 11 .............................................................................. 428
Tabla 126: Prueba de aceptación 12 .............................................................................. 429
Tabla 127: Prueba de aceptación 13 .............................................................................. 429
Tabla 128: Prueba de aceptación 14 .............................................................................. 430
Tabla 129: Prueba de aceptación 15 .............................................................................. 430
Tabla 130: Prueba de aceptación 16 .............................................................................. 431
Tabla 131: Prueba de aceptación 17 .............................................................................. 431
Tabla 132: Prueba de aceptación 18 .............................................................................. 432
Tabla 133: Prueba de aceptación 19 .............................................................................. 432
Tabla 134: Prueba de aceptación 20 .............................................................................. 433
Tabla 135: Prueba de aceptación 21 .............................................................................. 433
Tabla 136: Prueba de aceptación 22 .............................................................................. 434
Tabla 137: Prueba de aceptación 23 .............................................................................. 434
Tabla 138: Prueba de aceptación 24 .............................................................................. 435
Tabla 139: Prueba de aceptación 25 .............................................................................. 435
Tabla 140: Prueba de aceptación 26 .............................................................................. 436
Tabla 141: Prueba de aceptación 27 .............................................................................. 436
Tabla 142: Prueba de aceptación 28 .............................................................................. 437
Tabla 143: Prueba de aceptación 29 .............................................................................. 437
Tabla 144: Prueba de aceptación 30 .............................................................................. 438
Tabla 145: Prueba de aceptación 31 .............................................................................. 438
Tabla 146: Prueba de aceptación 32 .............................................................................. 439
Tabla 147: Prueba de aceptación 33 .............................................................................. 439
Tabla 148: Prueba de aceptación 34 .............................................................................. 440
Tabla 149: Prueba de aceptación 35 .............................................................................. 440
Tabla 150: Prueba de aceptación 36 .............................................................................. 441
Tabla 151: Prueba de aceptación 37 .............................................................................. 441
Tabla 152: Prueba de aceptación 38 .............................................................................. 442
Tabla 153: Prueba de aceptación 39 .............................................................................. 442
Tabla 154: Prueba de aceptación 40 .............................................................................. 443
Tabla 155: Prueba de aceptación 41 .............................................................................. 443
Tabla 156: Prueba de aceptación 42 .............................................................................. 444
Tabla 157: Prueba de aceptación 43 .............................................................................. 445
Tabla 158: Prueba de aceptación 44 .............................................................................. 446
Tabla 159: Prueba de aceptación 45 .............................................................................. 447
Tabla 160: Prueba de aceptación 46 .............................................................................. 447
Tabla 161: Prueba de aceptación 47 .............................................................................. 448
Tabla 162: Prueba de aceptación 48 .............................................................................. 449
ÍNDICE DE GRAFICOS

Gráfico 1: Esquema de Diseño de Contrastación ............................................................ 42


Gráfico 2: Numero de documentos recibidos por día. .................................................. 451
Gráfico 3: Número de documentos emitidos por día .................................................... 452
Gráfico 4: Cantidad de documentos por atender en un día ........................................... 453
Gráfico 5: Cantidad de documentos resueltos al día ..................................................... 454
Gráfico 6: Cantidad de documentos almacenados en un departamento de archivos general o
dependencias ................................................................................................................. 455
Gráfico 7: Tiempo promedio en resolver un documento .............................................. 456
Gráfico 8: Tiempo promedio en transferir un documento al área correspondiente....... 457
Gráfico 9: Cantidad de documentos recibidos por día .................................................. 463
Gráfico 10: Número de documentos emitidos por día .................................................. 463
Gráfico 11: Cantidad de documentos por atender en un día ......................................... 464
Gráfico 12: Cantidad de documentos resueltos al día ................................................... 464
Gráfico 13: Cantidad de documentos almacenados en un departamento de archivos general o
dependecias ................................................................................................................... 465
Gráfico 14: Tiempo promedio en resolver un documento ............................................ 465
Gráfico 15: Tiempo promedio en transferir un documento al área correspondiente..... 466
I. INTRODUCCIÓN

Las organizaciones manejan cada vez, una mayor cantidad de documentos debido
a la gran variedad de procesos e información que estas necesitan durante su
desarrollo. Por ello es necesario aplicar técnicas de gestión documental, mediante
los sistemas adecuados para automatizar y gestionar de la forma correcta y óptima
todo el cúmulo de documentación con la que trabajan (Rodríguez y Gonzales,
2002).

El término gestión documental suele utilizarse para hacer referencia al control


automatizado de documentos electrónicos a través de su ciclo de vida completo en
una organización, desde su creación inicial hasta su archivado final. Y es de gran
importancia ya que el 90% de la información de una organización reside en
documentos, supone el aumento de la eficiencia en su gestión, produciendo así el
consiguiente incremento de competitividad de la organización. Tal objetivo no será,
sin embargo, posible sin las herramientas informáticas adecuadas, que
genéricamente reciben el nombre de Sistemas de Gestión Documental (SGD), en
ingles Document Management Systems (DMS), que entre otros, ofrezcan
mecanismos para la identificación, almacenamiento, seguimiento, recuperación y
presentación de los documentos. (Martínez e Hilera, 1997).

Una mala gestión documental provoca el uso y acumulación de grandes cantidades


de papel que no se encuentran en período de vigencia. El espacio es un bien
preciado, por eso hay que llevar a cabo un control especial de la documentación
para no acumular información innecesaria que no dispone de vigencia. Sea por
espacio físico de archivo, en el disco duro o en las unidades de almacenamiento,
está claro que este tema es clave para poder evitar gastos innecesarios.

Incluso es necesario incentivar la productividad de los trabajadores. La realización


óptima de las tareas diarias es uno de los aspectos que influyen, para minimizar el
tiempo de recuperación de cualquier documento permitirá la realización de
numerosos trámites en un menor tiempo y con ello lograr clientes satisfechos.

A nivel nacional, las empresas se ven envueltas en una situación de progresivo


deterioro del funcionamiento de la gestión documental, provocando respuestas
lentas e ineficaces y afectando así, a la toma de decisiones y a la calidad del servicio.

Estando las empresas, afectadas por los riesgos e ineficiencias derivados de una
gestión documental deficiente, se da: la pérdida de documentos, la falta de
evidencias o pruebas documentales en caso de conflicto o litigio, el tiempo excesivo
empleado en la búsqueda de documentos, la demora en la tramitación de los asuntos
de los clientes, la falta de control de acceso a documentos confidenciales o sujetos
a la protección de datos personales, la congestión de papeles en los despachos, la
repetición de tareas ya efectuadas, los sobresaltos y un mal ambiente de trabajo. Los
gastos incontrolados en artículos consumibles (tóner de fotocopiadoras e
impresoras, papel, etc.).

Esta situación también involucra a la Universidad en estudio, la cual tiene la


necesidad de rediseñar el proceso de trámite documentario.

1
Para evidenciar esto, se optó por aplicar encuestas a los colaboradores de apoyo de
cada una de las áreas, que están inmersas en este proceso de trámite documentario,
y entrevistas al personal administrativo. Una vez aplicado las encuestas se
obtuvieron algunos indicios donde demuestran que existen deficiencias en este
proceso de trámites en cuyos resultados se encontró que existe una escasa cantidad
de documentos recibidos al día en todas las áreas, donde se presentó que solo se
reciben documentos de 1 a 10 en un 81% (ver anexo Nº3); presenta una baja
cantidad de documentos enviados al día en todas las áreas, donde se presentó que
solo se envían documentos de 1 a 10 en un 83% (ver anexo Nº4); muestra una gran
cantidad de documentos pendientes por atender al día en todas las áreas, donde se
presentó que la mayoría de las áreas cuentan con estos pendientes de documentos
de 21 a 30 en un 52% (ver anexo Nº5); se constata que existe muy poca cantidad de
documentos resueltos al día en todas las áreas, donde se presentó que solo se
resuelven documentos de 1 a 5 en un 40% (ver anexo Nº6), lo cual es un deficiencia
para la organización; además de la poca cantidad de documentos resueltos, la
institución no puede llevar un control adecuado de sus documentos, debido a que
existe una gran cantidad de documentos almacenados en un departamento de
archivos general o dependencias de la institución, donde se encontró que existen
varios documentos almacenados, siendo estos de 63 a más en un 55% (ver anexo
Nº7); Muchos de los usuarios se acomodan ante la espera de los resultados de su
trámite, esto debido a que existe un gran tiempo en resolver un documento en todas
las áreas, donde se presentó que la mayoría de los documentos se demoran de 11 a
más días a ser resueltos, esto se da en un 36% del total (ver anexo Nº8); ante el
cumulo de documentos en espera existe un gran tiempo en transferir un documento
al área correspondiente, donde se presentó que la mayoría de los documentos se
demoran de 7 a 9 días en ser transferidos, esto se da en un 28% del total (ver anexo
Nº9).

Apareciendo, el siguiente problema: ¿De qué forma se puede mejorar


significativamente el proceso de trámite documentario de la Universidad en
estudio?

Teniendo como hipótesis: El desarrollo de la aplicación web de Gestión de


Documentos basado en workflow podrá mejorar significativamente el proceso de
trámite documentario de la Universidad en estudio.

Y siendo el objetivo general: Mejorar significativamente el proceso de trámite


documentario de la Universidad en estudio con la aplicación web de Gestión de
Documentos basado en workflow

Además se tienen los objetivos específicos de aumentar la cantidad de documentos


recibidos por día, aumentar la cantidad de documentos emitidos por día, disminuir
la cantidad de documentos por atender en un día, aumentar la cantidad de
documentos resueltos al día, disminuir la cantidad de documentos almacenados en
un departamento de archivos general o dependencias de la institución, disminuir el
tiempo en resolver un documento, disminuir el tiempo en transferir un documento
al área.

En el aspecto social, la comunidad, en general tanto estudiantil como colaboradores,


se verá beneficiada porque podrá acceder de una manera rápida y sencilla desde

2
cualquier lugar donde exista una conexión a Internet, para ver el estado y ubicación
de su expediente sin tener la necesidad de emplear tiempo y dinero innecesarios en
acudir a la universidad para saber el estado de sus documentos.

En el aspecto tecnológico, el uso de un sistema informático de este tipo permitirá


que los procesos de trámite documentario estén mejor clasificados, lo cual origina
tener un mejor control de los documentos y procesos, generando ahorro de tiempos
al personal y a la comunidad en general, dando a la universidad la imagen de una
institución moderna e innovadora.

En el aspecto económico, a través de la aplicación y desarrollo de este proyecto de


investigación, se pretende ayudar en cierto modo a la organización, a la reducción
de costos asociados a la gestión documentaria y al uso del papel, así como con la
preservación del medio ambiente debido a su alto índice en la omisión del uso de
papel.

Y en el aspecto científico, con el desarrollo de esta investigación, se pretende servir


de apoyo y guía para futuras investigaciones, las cuales estén relacionadas en cierto
modo con el tema que se investiga, y así mismo aportar nuevos conocimientos con
el uso de nuevas tecnologías y metodologías de trabajos.

3
II. MARCO TEÓRICO

2.1. Antecedentes
2.1.1. Antecedentes internacionales
- Diseño e implementación de un sistema de aprobaciones basado en
WorkFlow
Carbajal, desarrolla e implementa un flujo de aprobaciones basado en un
WorkFlow, y con esto conseguir automatizar, agilizar, centralizar y
controlar dicho proceso. Además, el sistema se orientó a la automatización
de aprobaciones de ofertas a nivel interno entre dos unidades de negocio
de la empresa Hewlett-Packard. Para realizar el proyecto se utilizó
SharePoint que es una potente herramienta de Microsoft para la
compartición de documentos a nivel empresarial y que permite crear flujos
de trabajo (Workflows) para poder gestionar la información de entrada. El
resultado del proyecto fue satisfactorio ya que se consiguieron todos los
objetivos, y el funcionamiento cumplió todas las especificaciones
requeridas.

El antecedente al igual que esta tesis, será desarrollada para realizar un


control y seguimiento de los documentos que se gestionen, teniendo en
cuenta su estado y una forma de trabajos más rápida

- Desarrollo de un workflow para la automatización de la metodología


para la implementación y mejoramiento contínuo de procesos,
productos y servicios en Mutualista Pichincha.

El sistema se desarrolló como una aplicación web que interactúa con web
services, empleando para ello el lenguaje de programación C# .Net, SQL
Server 2008 y Ultimas BPM 7.0, bajo la arquitectura de 3 capas.

Con la implementación se logo ubicar un documento, ver su estado y


asignas responsabilidades a los empleados en un tiempo menor.

El antecedente al igual que esta tesis, permitirá ubicar un documento cada


vez que se solicite realizando así un control y seguimiento de los
documentos que se gestionen, para lograr un trabajo más rápido y con
menores errores.

- Diseño e implementación de un sistema de compras basado en


workflow

La tesis aplica la tecnología de workflow a un proceso de petición de


recursos adicionales para proyectos de servicios. El cual está diseñado con
la herramienta Microsoft Share Point Designer, IBM FileNET: P8 BPM
Suite IBM Web Sphere MQ workflow que se ponen en funcionamiento en
el servidor de Microsoft Sharepoint.

El workflow es el bloque central de la aplicación, controla todo el proceso


y guía a los actores en sus correspondientes tareas. Ha sido construido con

4
el editor de Sharepoint Designer, y está escrito en el pseudocódigo propio
de dicho editor.

La aplicación se puede dividir en tres bloques dependientes, pero


claramente diferenciados: el workflow, el formulario y el sitio web.

Con la construcción del workflow se logró la automatización de algunas


tareas conlleva por sí misma una reducción en el tiempo total del proceso,
siendo este de 12 días a 5,5 días.

El antecedente al igual que esta tesis, permitirá automatizar las tareas del
proceso de trámite de gestión documentario y hacer el seguimiento de los
documentos que se gestionen, para lograr un trabajo más rápido y con
menores errores.

- Estudio de factores para la implementación de soluciones de flujos de


trabajo (workflow)

La tesis comprende un estudio de los factores que deben tenerse en cuenta


para implementar soluciones de flujos de trabajo (workflow).

Una vez revisado el amplio rango de beneficios y la creciente utilización


de estas soluciones, se enfocó la investigación en soluciones de flujos de
trabajo, por sus características de apoyo a los procesos y a las actividades
cotidianas en las organizaciones.

Además la tesis presenta aborda la determinación de los factores críticos


en la implementación de tecnologías workflow, estos factores fueron el
resultado de un estudio exploratorio entre proveedores y empresas de
Bogotá, considerando proyectos en proceso de implementación y
proyectos culminados en funcionamiento.

Incluso en esa tesis se da una presentación de los beneficios, y un entrever


del porvenir de las soluciones workflow. De la misma manera, puede ser
una guía de referencia para la implementación de soluciones workflow en
organizaciones con características y procesos similares o distintos a los
estudiados en la presente investigación.

El antecedente al igual que esta tesis, tiene en cuanta loas factores de una
solucionen workflows, como los estados de los documentos, el control y
seguimiento de los documentos que se gestionen, para lograr un trabajo
más rápido y con menores errores

- Implementación de una herramienta workflow para la


automatización de procesos entre las unidades académicas y
administrativas de ESPOL

En esta tesis se diseña e implementa un workflow para el moldeamiento y


automatización de procesos. El software incluye tres módulos: el primero
es uno de modelamiento de procesos, el segundo es el motor de ejecución

5
de trámites y el tercer módulo es el de consultas de estado de trámites. La
herramienta está diseñada para poder ser ejecutada ya sea como una
aplicación cliente-servidor o por intermedio del browser.

Centrándose en mostrar su utilidad en la ESPOL a través de la


implementación de procesos pilotos seleccionados.

Siendo estos, las características del diseño e implementación del motor de


ejecución, que es el encargado de la ejecución de trámites ya sea como
aplicación cliente-servidor o a través del browser, los reportes de la
aplicación y el diseño e implementación de los componentes del módulo
de consultas del estado de trámites y los procesos, flujos, condiciones de
continuación del trámite, formularios electrónicos, asignación de usuarios
y roles para los procesos pilotos seleccionados haciendo uso del modelador
gráfico de procesos.

Por último, se presentan las conclusiones del trabajo y las


recomendaciones apropiadas para el desarrollo del mismo.

El antecedente al igual que esta tesis, permitirá realizar consultas del


estado de los tramites y de los documentos y a la asignación de usuarios y
roles sí un control y seguimiento de los documentos que se gestionen, para
lograr un trabajo más rápido y con menores errores.

2.1.2. Antecedentes nacionales

- Modelado de un sistema workflow configurable para la gestión de


requerimientos en las áreas de servicios de una empresa

La tesis comprende el desarrollo de un sistema workflow con lo que se


espera que se optimice el proceso de atención de requerimientos,
automatizando las actividades más críticas para la empresa.

Para el desarrollo de los sistemas workflow se empleó el modelo de


referencia WfMC (Workflow Management Coallition) y el Lenguaje de
Modelado Unificado (UML)

El sistema consta de dos módulos, el primero se trataba del módulo de


configuración y gestión del flujo de trabajo en los procesos del negocio
relacionados a la gestión de requerimientos de un área determinada de la
empresa

La implementación se llevó a cabo en un servidor que le dio soporte a la


web y su posterior acceso mediante los clientes con microprocesador Core
I3

Con el sistema se pueden asignar actividades, autorizar solicitudes y


establecer requerimientos en un tiempo menor al inicial

6
El antecedente al igual que esta tesis, permitirá automatizar solicitudes de
documentos según el estado y el proceso de trámite de documentos en su
totalidad y lograr un trabajo más rápido y con menores errores

Análisis, Diseño y Construcción de una herramienta para Modelado de


Procesos: MJS Process Designer

La tesis se apoya en el lenguaje XPDL (XML Process Definition


Language) para el modelado de procesos, tecnologías Java Web de un
sistema workflow.

El sistema brinda los elementos necesarios para la definición y el


almacenamiento de procesos, cumple con los objetivos de acceso
descentralizado por parte de los usuarios que hacen uso de ella y define
métricas para los tiempos de ejecución y para la evaluación de los
procesos.

El antecedente al igual que esta tesis, permitirá automatizar solicitudes de


documentos según el estado y el proceso de trámite de documentos en su
totalidad y lograr un trabajo más ágil

- Mejoramiento de la gestión de trámite documentario utilizando firma


digital en el proyecto especial Altomayo – Moyobamba.

La presente tesis se propone como solución la sistematización del proceso


de trámite documentario basado en firma digital, para la mejora del
proceso en el PEAM. Esta solución está pensada como un sistema a
medida con un el análisis y diseño a la realidad organizacional del PEAM.

La tesis se apoya en el uso de las herramientas de tablero de verificación y


generación de certificados para consignar firmas digitales de los usuarios.

La solución del software provee las facilidades para registrar y hacer


seguimiento de expedientes, soporte de archivos digitalizados.

El antecedente al igual que esta tesis, permitirá el seguimiento de


documentos y la verificación de su estado y de su progreso en el proceso
de trámite de documentos en su totalidad.

2.1.3. Antecedentes locales

- Propuesta de implementación de un sistema de gestión documental


basado en la gestión del conocimiento para el proyecto especial olmos
tinajones

En la presente tesis se analiza el Proyecto Especial Olmos Tinajones


(PEOT) por áreas, con el fin de desarrollar una propuesta de modelo de
gestión del conocimiento. Su problemática viene a ser que la gestión del
conocimiento en el PEOT está en el nivel regular según el 97% de los
trabajadores según encuesta aplicada a trabajadores y con un nivel Regular

7
en cuanto a cultura organizacional. La propuesta de solución comprende
la fase de análisis, de estrategias, de arquitectura y de prototipos;
orientadas del “Modelo de implantación de Gestión del Conocimiento y
tecnologías de información para la generación de ventajas competitivas” a
través del cual se realiza la propuesta de un sistema de gestión documental
para que los trabajadores puedan básicamente acceder mejor a los
documentos generados por las diversas áreas.

Esta tesis es importante para la investigación que se está realizando dado


que muestra la funcionalidad e interfaces de su solución que permitirá un
mejor desarrollo de la solución que se plantea brindar al problema
propuesto, de esa manera se pueden corregir errores antes de que se
presenten.

El antecedente al igual que esta tesis, permitirá el seguimiento y control de


los documentos que se gestione en el proceso de gestión documentaria y
automatizar solicitudes de documentos llegando en un menor tiempo a las
áreas correspondientes

- Desarrollo de un sistema informático basado en plataforma web para


mejorar el proceso de trámite documentario en el gobierno provincial
de Chiclayo.

En el ámbito de un proceso de trámite gubernamental de calidad, se ha


propuesto la implementación de un sistema informático que gestione dicho
proceso en el Gobierno Provincial de Chiclayo con una eficiente gestión
de recursos internos, de manera que se brinde al administrado y personal
de GPCH un mejor servicio que se contribuya a su satisfacción y al logro
de los objetivos y metas por parte de la institución.

Se ha realizado el análisis Costo Beneficio, indicando la inversión inicial,


los gastos operativos y los beneficios. Los beneficios han sido calculados
en base a los indicadores planteados. También se ha elaborado el Flujo de
Caja que muestra el retorno de la inversión en los 5 primeros años de
implementación del software. En base al flujo de caja se ha calculado el
Valor Actual Neto (VAN), donde se obtuvo el valor de 102%; lo que
demuestra la rentabilidad y viabilidad económica del proyecto.

Esta investigación define varios conceptos los cuales son de suma


importancia para nuestro proyecto, contribuyendo adicionalmente con
ideas que permitirían la innovación de la aplicación.

El antecedente al igual que esta tesis, permitirá automatizar el proceso de


trámite de documentos en su totalidad y lograr un trabajo más rápido y con
menores errores

8
- Implementación de un sistema informático de gestión documentaria
para mejorar el servicio de atención a los usuarios de la municipalidad
distrital de Jayanca

El desarrollo de la tesis se ejecutó bajo la metodología RUP que


interactúan con sus disciplinas (Modelado del Negocio, Requisitos,
Análisis, Diseño, Implementación y Pruebas).

Se realizó la implementación (construcción) mediante esta técnica de


programación, utilizando el lenguaje de programación Visual Basic 2005,
siendo necesario realizar la separación lógica de la aplicación en capas
(presentación, negocio y datos).

EL desarrollo de esta investigación menciona varios conceptos los cuales


serán de suma importancia para nuestro proyecto, contribuyendo
adicionalmente con ideas que permitirían la innovación de la aplicación.

El antecedente al igual que esta tesis, permitirá automatizar solicitudes de


documentos según el estado y el proceso de trámite de documentos en su
totalidad y lograr un trabajo más rápido y con menores errores

2.2. Bases Teórico Científicas

2.2.1. Tecnología groupware para la automatización de oficinas

El objetivo de los sistemas de automatización de oficinas es facilitar las tareas


de procesamiento de la información generada y gestionada en oficinas,
además de su coordinación dentro de la organización. La razón de las oficinas
son los documentos, que constituyen la base o soporte de los procesos.

El termino oficina es adecuado para referirse al flujo documental y de


actividades que forman los procesos.

Una organización está compuesta por persona que tienden a la formación de


grupos de trabajo para llevar a cabo las tareas asignadas. En esta perspectiva
las oficinas son grupos compuestos de personas que trabajan conjuntamente
con el fin de lograr una serie de objetivos comunes. Donde un grupo de trabajo
podría definirse como dos o más personas que trabajan juntos para realizar
una misma tarea.

Los grupos de trabajo pueden adoptar dos formas:

- Grupos formales: son aquellos que están estructurados en departamentos


o áreas, al igual que las organizaciones tradicionales

- Grupos informales: son grupos virtuales que incluso pueden estar


constituidos por miembros ubicados en diferentes localizaciones
geográficas. Esto grupos son temporales y colaboran y se comunican a
través de las tecnologías de información y de comunicaciones para
alcanzar un objetivo en común.

9
Entonces la TIC, y más concretamente el Groupware, se han desarrollado con
el objetivo de dar soporte a las funciones y al trabajo que se realizan en las
oficinas. Esto permite establecer y configurar algunos grupos de trabajos,
independientemente de aspectos como el momento de conexión para la
cooperación, la ubicación geográfica en las que se encuentren y las
características de la organización o del departamento al que pertenecen.

Tras la aplicación de la tecnología Groupware la cooperación y colaboración


de los grupos de trabajos son una realidad.

La tecnología Groupware nos va a permitir la automatización eficiente del


trabajo de oficina, estableciendo para ellos grupos de usuarios adaptables e
independientes entre sí pero con capacidad de interacción.

 Funcionamiento de la tecnología Groupware

Cuando se habla de Groupware hace referencia a una tecnología orientada


a grupos; una tecnología que permite trabajar a los grupos entorno a
colaboración.

Esta tecnología busca que las organizaciones puedan responder de forma


ágil a un entorno más competitivo y cambiante. Donde la tecnología por sí
solo no puede trabajar necesita integrarse con los usuarios, donde los
usuarios sean capaces de colaborar entre sí.

Algunas herramientas que proporciona la tecnología Groupware para


solventar algunos problemas de colaboración en las organizaciones son los
sistemas de apoyo a las decisiones en grupo, sistemas workflow,
mensajería electrónica, etc.

 Definición de Groupware

No existe una única definición de esta tecnología, pero en líneas generales


se puede decir que es un software que permite trabajar a los usuarios en
grupo, pero en multitud de organizaciones se aplica bajo el apelativo de
sistemas de automatización de oficinas.

También es definido como un sistema que integra en un mismo entorno


aplicaciones y personas. También como una herramienta con las que las
personas pueden trabajar juntas en un marco colectivo de comunicación,
colaboración y coordinación

La finalidad del Groupware es mejorar las funciones de comunicación,


colaboración y coordinación de los procesos de la organización para que
estos se realicen de forma más eficientes, es decir, solucionar el problema
del trabajo corporativo.

10
2.2.2. Sistemas workflow
2.2.2.1. Concepto y definición de workflow

Según (LORCA, 2006), la tecnología workflow (flujo de trabajo) permite


realizar las funciones coordinación del Groupware al integrar las funciones
de comunicación y colaboración, lo cual ayuda al desarrollo efectivo y
eficiente de los procesos. Dicha tecnología se utiliza como herramienta de
control y coordinación, ya que su objetivo es automatizar la secuencia o
flujo de actividades que componen o forman un proceso y poder
distribuirlas a cada usuario junto con los recursos necesarios para su
cumplimiento, todo ello en función a un conjunto de reglas que establecen
el procedimiento a seguir. Con esto la tecnología permitirá reducir el
tiempo de realización de las tareas que conforman el proceso.

 Estrofa
Estrofa (Especificaciones para el tratamiento del flujo de trabajo
automatizado). Según estrofa, un sistema workflow es aquel que permite
definir, ejecutar y gestionar los procesos y tareas según unas reglas,
considerando un proceso como un conjunto de tareas ordenadas, quizás
temporales cumpliendo condiciones contenidas en reglas que son
realizados por usuarios, que pueden ser de forma automatizada. (v1.1,
1998)

 Modelo de referencia del flujo de trabajo


Este es un modelo definido por Workflow Management Collation (WfMC)
para la gestión del flujo de trabajo.

La finalidad de un marco de referencia es especificar un marco de trabajo


para los sistemas workflow a través de un conjunto de características,
funciones e interfaces cuyo fin es conseguir una integración total entre
ellos, independientemente de su tipología.

La WFMC define un flujo de negocio como: “la automatización de un


proceso de negocio total o parcialmente, en el que información de
cualquier tipología llega al usuario adecuado en el momento adecuado
sobre la base de un conjunto de reglas inteligentes, lo cual permite que la
mayoría del trabajo sea informado informáticamente”. (WFM, 1998)

 Ultimas
Ultimas, es una empresa líder en desarrollar estos tipos de sistemas. Lo
cual define un flujo de trabajo como: “Cualquier actividad realizado en
serie o en paralelo por dos o más miembros pertenecientes a un grupo de
trabajo para el logro de un mismo objetivo en común”. (Ultimus, 1998).

Este definición esta tanto ambigua porque da lugar a una controversia,


debido a que no menciona que una actividad se realiza de forma
automatizada.

11
 RonniMarshak
Se trata de una de las personalidades más destacadas en el campo del flujo
de trabajo debido a sus numerosas investigaciones y contribuciones. Esta
personalidad define al flujo de trabajo como una herramienta para
automatizar procesos, incluyendo funciones de seguimiento y control del
proceso, y gestión de los recursos necesarios para su cumplimiento. (THE,
1995)

 Definición integradora
Como ha quedado de manifiesto existen diversas definiciones acerca del
sistema workflow, aunque la capacidad de automatización de los procesos
de negocio está presente en cada una de estas definiciones.

Con todo lo analizado anteriormente se puede definir workflow como la


automatización de la secuencia de actividades que forman un proceso de
negocio, mediante una serie de operaciones que incluyen: su definición, en
el que se establece el flujo de actividades a seguir; en su ejecución, la
información y los recursos oportunos llegan al usuario correspondiente en
el momento adecuado; y su gestión, para llevar a cabo un continuo
seguimiento y la administración del proceso en su globalidad. (LORCA,
2006).

Todo ello en relación a un conjunto de reglas establecidas para regular el


desarrollo de los procesos, y con el objetivo de automatizarlo para lograr
una mejora en los productos y servicios de la información.

2.2.2.2. Orígenes teórico – tecnológicos y evolución


La tecnología workflow es el resultado de la evolución de una serie de
sistemas cuyas características y funciones han utilizado los productos de
software para dar origen a una nueva tecnología.

La automatización del flujo de trabajo presenta una base teórica, fruto de


las nuevas concepciones y metodologías que han ido apareciendo sobre el
trabajo de las organizaciones, llevando su evolución hacia nuevas líneas
de investigación. Esta base teórica se sustenta en cuatro aspectos
principales.

 El flujo de trabajo se ha servido del conocimiento relacionado con la


investigación científica y el análisis de sistemas para aplicarlos en la
utilización de los flujos de información dentro de la organización, con
el fin de lograr una mayor eficiencia en los procesos del negocio

 La automatización de oficinas ha sido una área que ido avanzando


constantemente en busca del ansiado aumento de la productividad. Para
lo cual se ha dado origen a los primeros sistemas para automatizar el
flujo de trabajo, aunque no llegaban a integrar todos los elementos que
formaban parte del sistema.

 Un origen mucho más técnico y que posteriormente será explicado en


un mayor detalle, lo constituyen los sistemas de procesamiento de

12
imágenes, lo cual se basa en escanear la documentación para
convertirlos en ficheros imágenes o gráficos que serán almacenados en
formato electrónicos, es tanto así disponible en cualquier momento.
Con esto pretendíamos conseguir oficinas sin papeles, aunque se llegó
a la oficina con menos papeles. Él envió de documentos electrónicos
supuso la base principal de los sistemas workflow.

 Otra de las bases teóricas de workflow lo constituyen los intentos por


superar las barreras y limitaciones de las estructuras jerárquicas de las
organizaciones, donde el pasó de la información sigue un orden
preestablecido. El centrar la atención sobre el proceso y la información
en vez de hacerlo sobre el lugar que ocupan los participantes dentro de
la estructura es otro de los aspectos característicos de la tecnología
workflow.

Tecnológicamente los sistemas workflow provienen se la evolución de los


principales funciones de un conjunto de tecnología informática. Estas
tecnologías base son las siguientes (LORCA, 2006)

 Sistemas de Procesamientos de imágenes


En muchos procesos de negocios es necesario manipular información
que se encuentra impresa en papel y que debe ser capturada y
digitalizada para facilitar su tratamiento automatizado.

Los documentos escaneados que incluyen texto pueden ser analizados


por un software OCR (* Reconocimiento Óptico de Caracteres) para
convertir las imágenes obtenidas en una secuencia de caracteres.

 Sistemas de gestión de documentos


La tecnología de gestión de documentos incorpora herramientas que
facilitan el almacenamiento de documentos electrónicos en almacenes
de datos, el control de las versiones y de utilización de los documentos
de los documentos, así como facilidades para el enrutamiento de dichos
documentos y su asignación a las personas que los deben manipular de
acuerdo con los roles que éstas desempeñan.

 Correo y directorios electrónicos


Los servicios de directorio (como x.500 o LDAP) facilitan la
localización de recursos y personas dentro de una organización.
Además el servicio de correo electrónico facilita el intercambio de
información entre las personas dentro de una organización o entre
distintas organizaciones. En algunos Sistemas de workflow se emplean
estándares como X.400 o MIME para transferir los datos de las
aplicaciones encapsulados dentro de los mensajes de corro.

 Groupware (Software de trabajo en grupo)


(Conocidas como Computer Supported Cooperative Work – CSCW-):
existe una amplia variedad de aplicaciones y productos desarrollados
por la industria de software para facilitar el trabajo en equipo, dando
soporte a agendas compartidas, boletines de noticias, foros de

13
discusión, intercambio de datos, ejecución compartida de aplicaciones,
etc.

Sin duda, el producto líder en el mercado es Lotus Notes, que cuenta


con una gran cantidad de aplicaciones específicas desarrolladas por los
business partners de Lotus.

 Gestión de proyectos
Existen productos en el mercado que permiten gestionar la planificación
y el desarrollo de un proyecto, definiendo las tareas a realizar y los
objetivos temporales, facilitando la asignación de tareas a los miembros
integrantes del proyecto, supervisando la consecución de los objetivos
fijados, reasignando cargas entre los miembros, etc.

 Posicionamiento de la tecnología workflow entre las técnicas gestión


de procesos (BPM-Business Process Management )
Estas herramientas facilitan el análisis y definición de los procesos de
una organización. Suelen partir de una definición de la organización y
de los distintos roles y responsabilidades asignadas, permitiendo
evaluar el impacto de los cambios realizados en la estructura de un
proceso y en los flujos de información asociados.

2.2.2.3. Un cambio en la concepción y el planteamiento de los procesos


 Flujo manual contra flujo automatizado
Ante de la llegada de los sistemas workflow todo los procesos en las
organizaciones se realizaban de forma manual, lo cual requería la
intervención humana (LORCA, 2006).

Los procesos planteados de forma manual presentan una clara


inconexión y falta dinamismo a consecuencia de la inequidad y
heterogeneidad de los componentes (ordenadores-aplicación) que
forman el sistema que los gestiona. Esta falta de integración conlleva a
una serie de problemas, estos son los siguientes:

- Gran dependencia del papel al no poder automatizar todos los


elementos que forman parte del proceso
- Perdida de documento su alto grado de utilización
- Lentitud en la respuesta a demandas de clientes
- Fragmentación de las actividades
- Dificultades de monitorear el estado de las actividades y la carga de
datos debido a la dispersión de datos
- Imposibilidad de medir los costes y el tiempo de procesamiento de
las actividades
- Trabajo global más intensivo al incluir trabajo manuales y
- Escasa inversión en tecnología de la información y comunicación,
dada la dependencia de documentos en papel, actividades manuales
y recursos humanos.

La solución a estos casos se encuentra en la implantación de un sistema


que se capaz de integrar todos estos elementos heterogéneos, lo cual

14
significa un gasto considerable dado la envergadura de tal propuesta o
bien utilizar un sistema workflow [wac, 1998], el cual proporciona una
serie de prestaciones claves para la mejorar la eficiencia de los
procesos:

- Integración de todos los elementos o componentes.


- Separar la lógica del proceso, representada mediante el flujo de
trabajo.
- Permitir la creación de nuevos flujo de trabajos o la modificación de
los ya existentes.
- Asegurar que la información llega a la persona adecuada y en el
momento adecuado.
- Permitir a los gestores a monitorear y asignar tareas a nivel personal
e interdepartamental.
- Integración de cualquier tipo de aplicación o tecnología
independientemente de su plataforma hardware y localización.
- Procesar la mayoría de trabajo de acuerdo a unas determinadas reglas
en las que se basara el proceso.

 Flujo de trabajo vs automatización del flujo de trabajo


Existe una clara diferenciación entre estos dos conceptos que al parecer
los desarrolladores de software no tienen en cuenta.

Es posible establecer un proceso dentro de cualquier organización, que


consiste en crear un documento con procesador de texto y enviarlo, una
vez finalizado a otro compañero para que efectúe sobre él las
correspondientes operaciones. Con esto podemos decir que se creado
un flujo de trabajo solo con dos pasos. Pero cuando se envía por correo
se convierte en una “Aplicación workflow”. Pero ocurre que es
denominado una aplicación de automatización de flujo de trabajo lo
cual es incorrecto debido a que no está totalmente automatizado, al
existir una serie de fisuras que no cubren tales como conocer el
momento en que otros participantes, tras recibir el documento, concluye
su tarea, el tiempo en que ha invertido u ocurrido tras finalizarla.
Mediante un ejemplo explicaremos la diferencia entre flujo de trabajo
y automatización de flujo de trabajos. Sería algo así como tener que
escribir un documento y optar por hacerlo en bloc de notas de Windows
o Word. Ambos consiguen hacer el documento, solo que Word dispone
de más funcionalidades de edición y formateo de texto. Este mismo
ejemplo es aplicable a esta diferencia. Sabiendo que la automatización
del flujo de trabajo tienes más funcionalidades que el flujo de trabajo.

 Flujo de trabajo vs reingeniería de procesos de negocio


Las aplicaciones basadas en el flujo de trabajo son el resultado de
aplicar la reingeniería de procesos, es decir replantear y rediseñar los
procesos de la organización para conseguir mejorar las medidas
relativas al rendimiento, como el costo, calidad, servicio y velocidad.
La reingeniería de procesos se suele efectuar mediante la aplicación de
diseños de procesos. Estos dos conceptos son complementarios.

15
 Aportaciones de la tecnología workflow a la gestión de procesos
Una de las cualidades de la Automatización workflow es su habilidad
para integrar los sistemas existentes e implicados en los procesos. Como
dice Pyke “El flujo de trabajo es el pegamento que une sistemas y
entornos”. Donde toda esta integración debe cubrir todos los aspectos
del negocio.

El valor que tiene la Automatización del flujo de trabajo a las


organizaciones radica en su poder para dar soporte inmediato, fiable y
efectivo al cambio que se plantea en el ámbito de los procesos. Un punto
a tomar en cuenta seria que el hecho de añadir más individuos o recursos
a las unidades para agilizar las actividades provoca una reacción
inversa: reduce a un más la eficiencia. Una solución eficaz constituye
en emplear herramientas workflow.

Para sustituir la orientación que tiene la organización hacia su estructura


por una orientación hacia sus procesos, en lo que cada elemento que lo
compone se relaciona con las unidades, individuos y recursos
pertinentes para su cumplimiento. De esta forma, la tecnología
workflow permite los elementos participantes en la actividad de la
organización y posibilita su contacto, comunicación y colaboración o lo
que es lo mismo su integración con los procesos.

Beneficios para la organización que utiliza un sistema workflow.


- Reducción del tiempo de respuesta.
- Consistencia en el trabajo y en la toma de Decisiones. No presentar
fisuras.
- Documentación de procesos. Permite especificar en detalle el
documento.
- Reducción de ciclo mediante la ejecución en paralelo. El SW
establece rutas paralelas para una misma tarea.
- Reducción de vulnerabilidades y riesgos. Cada uno de los procesos
se ejecutan siguiendo reglas, rutas y roles lo cual minimiza la
posibilidad de fallos.
- Mejora la eficiencia, reduciendo costos, aumentando la capacidad de
trabajo. Aquí el proceso se encuentra definido y planificado en su
más mínimo detalle antes de su inicio.
- Un control más automatizado mediante la estandarización de
procedimientos. Cada proceso de trabajo esta normalizado
- Mejora la gestión de procesos, solucionando los posibles problemas
que puedan acontecer mediante la comprensión y solución de sus
causas. Y con el conocimiento de los pasos que hay que seguir en
cada situación.
- Reducción de la formación
- Se evita la intervención de participantes estáticos. Es decir lo
miembro nos tienes porque estar en un espacio fijo.

Stark sostiene que el verdadero motivo por el que se utilizan los


sistemas workflow es debido a la presión por reducir costos,
aumentando a la vez la calidad. (Stark, 1985)

16
Con workflow no solo se consiguen beneficios vinculados a la
mecánica de los procesos, sino que también proporciona una serie de
ventajas referentes a la documentación y a la información que fluye por
el sistema como:

- Reducción del uso del papel.


- Solo hay un ejemplar por documentos, no existen copias.
- Los documentos no se transfieren físicamente, lo que significa que
no hay personal dedicado a su distribución.
- Los documentos están siempre disponibles.
- Los datos del sistema pueden ser validos según son introducidos.
- Siempre hay información disponible sobre los progresos de los
procesos y sus actividades.

Todo esto se reporta para la organización como una ventaja competitiva


y una mayor eficiencia y eficacia en sus procesos.

 Controversias en torno al flujo de trabajo


La empresa ULTIMUS (Ultimus, 1998) da a conocer algunas de las
controversias más destacadas de este campo:

- La automatización del flujo de trabajo solo se realiza sobre procesos


complejos

- La automatización de flujo de trabajo es compleja (Magg, 1997).


Es compleja pero en sí misma no es difícil, puesto que depende en
gran medida del tipo de proceso sobre el cual se aplica, por lo tanto
el nivel de complejidad está en función de los procesos y los
problemas que estos conllevan.

- La automatización del flujo de trabajo es costosa


Ese día se ha generado debido a que este software es vinculado con
procesos complejos y su propia complejidad en cuanto a desarrollo
y gestión ha provocado la creencia de que la implantación de este
tipo de sistemas conlleva a grandes costos. Y esto no es así ya que
nos permite la reducción de material informático.

- Los eventos subjetivos definen el flujo de trabajo

- El rendimiento del sistema se degrada con el tiempo.


Esto es debido a que no es un sistema inteligente que va aprendiendo.
Es como un sistema operativo que conforme pasa el tiempo va
perdiendo eficacia y se produce ligeras variaciones en los procesos,
de forma que cada vez tienen más excepciones, lo que incrementa el
tiempo de procesamiento.

17
2.2.2.4. Propiedades y características del sistema workflow
 Funcionamiento de un sistema workflow estándar
- Estructura del sistema
El sistema cuenta con un punto de inicio, para la definición del flujo
del trabajo, lo cual generada una definición formalizada y
normalizada del proceso a automatizar. Por un lado esto puede hacer
referencia o estar vinculada a un mapa organizativo basado en roles
para asignar las actividades a funciones organizativas en lugar de
usuarios directamente y por otro lado en las actividades que lo
componen se establece una vinculación con una serie de aplicaciones
informáticas que se utilizan para su cumplimiento.

La lista de trabajos constituye donde se colocaran todas las


actividades del proceso. Dependiendo del tipo de los sistemas, los
usuarios pueden estar visibles o invisibles.

En el primer caso, los usuarios son los que acceden a ella y


seleccionan las actividades que van a realizar.

En el segundo tipo de sistema, es el administrador de la lista el


encargado de seleccionar las actividades y distribuirlas a los usuarios
pertinentes. La interacción de las actividades se da mediante la
interfaz de usuario.

- Componentes del sistema


A continuación se detallan el funcionamiento de los componentes de
un sistema genérico de workflow

 Herramientas de definición de procesos


Se trata de una aplicación cuyo objetivo es crear una definición
automatizada del proceso. Es decir, crear un formato procesable
por el ordenador y además dicho formato debe contar con un
intercambio compatible para efectuar las transferencias de las
definiciones de los procesos.

 Definición de procesos
La definición del proceso puede vincularse a modelo organizativo
o de roles, que contienen la información acerca de la estructura
de la organización o de los roles definido en ella. Un modelo
organizativo representa su las entidades que conforman una
organización, sus relaciones y atributos (roles).

Mientras que un rol es el conjunto especifico de atributos,


destrezas que se asigna a un grupo de usuarios.

 Entorno de generación del flujo de trabajo


Una vez definido el proceso, llega el entorno de generación del
flujo de trabajo para interpretarlo y para controlar cada una de sus
instancias, gestionar las actividades enviándolas a los usuarios
correspondientes y activar las aplicaciones destinadas a dar

18
soporte al trabajo asignado o acometido. Esta generación del flujo
de trabajo realiza operaciones a través del motor workflow.

 Datos relevantes del flujo de trabajo y datos de aplicación


Los datos relevantes del flujo de trabajo son datos generados y
actualizados por la aplicación de workflow.
Datos de aplicación hacen referencia a los datos que son
manipulados exclusivamente por las aplicaciones que sirven de
soporte a las actividades.

 Lista de actividades
Se trata de una lista que se encuentra ubicada entre el motor
workflow y el administrador de la lista de actividades. En donde
el propio motor del flujo de trabajo coloca las actividades que
deben realizar los usuarios o grupos. Una lista puede estar
vinculada a un único participante del grupo o bien ser común a
grupo de ellos.

Las listas de actividades pueden ser visibles o invisibles para los


usuarios. Visible, El usuario debe seleccionar la actividad a
seleccionar y luego poder notificar que ya la ha realizado.
Invisible, el administrador es el que envía las tareas una por una
al usuario pertinente.

 Administrador de la lista de actividades


La función principal de administrador de la lista es de gestionar
las relaciones entre los usuarios del flujo y el entorno de ejecución
del flujo de trabajo, donde se encuentra el motor de aplicación.

 Interfaz de usuarios
Es un componente de interfaz de usuario independientemente de
la generación del flujo de trabajo cuya función es de permitir la
interacción del usuario con el del sistema. En determinados
sistemas se integra con el administrador de la lista de actividades
en único componente.

- Propiedades implícitas de la tecnología workflow


 Independencia del flujo
Las aplicaciones de software contienen el código referente a la
forma de realizar los diferentes pasos que componen un proceso.
Cualquier modificación que se realice sobre ella altera la
metodología del proceso. Por lo tanto son dependientes del flujo.

Los sistemas workflow han roto esta concepción y han


evolucionado hasta convertirse en aplicaciones independientes
del flujo, ya que la información referente a los elementos del
proceso se has desvinculado del código que compone la
aplicación.

19
 Las tres dimensiones de un sistema workflow
Un informe de IBM sobre los sistemas worflow da a conocer tres
aspectos en los que se asienta este software, lo cuales pueden ser
enfocado desde tres punto de vista. A estos tres aspectos se le añade un
cuarto con el fin de completar la visión global de la definición de un
proceso

- El Proceso (que es lo que se desarrolla)


El objetivo de un flujo de trabajo es automatizar las secuencias de
actividades que componen un proceso, por lo que el elemento
principal es el proceso que se lleva a cabo.

Un proceso de negocio son un conjunto de procedimientos


automáticos o manuales enlazados para alcanzar un objetivo de
negocio dentro de una estructura organizativo.

Un proceso se compone de actividades que se define como la acción


realizada por una persona o un recurso en un lugar determinado. Una
actividad es la unidad mínima de trabajo, aunque esta se puede
descomponer en tareas que describen con mayor detalle las acciones
que una persona o un recurso efectúa.

Donde a partir de esto la actividad pasaría hacer un subproceso, ya


que este contiene un número determinado de acciones.

- La organización (quien es el que desarrolla)


El punto de vista de la organización es el que muestra su estructura
y define quien es el que desarrolla las actividades que componen el
proceso, bien sea una persona o un recurso informático.

El sistema workflow asimila la estructura y se ocupa de asignar a


cada actividad la/s persona/s responsable/s de su cumplimiento.

- La infraestructura (cual de los recursos que se utiliza)


Una vez que se conoce la actividad (qué) y la persona que lo realizará
(Quién), ha de intervenir el recurso que se utilizara para desarrollar
(Cuál), el cual define la dimensión de la infraestructura: el programa
o herramienta informática que sirve de soporte a la actividad, y desde
donde se ejecutara, ya que puede estar ubicada en una estación
cliente o en un servidor dedicado.

- Las reglas que se van aplicar (como se desarrolla)


Es posible añadir una cuarta dimensión o punto de vista a la
definición de un flujo de trabajo. Este es un componente esencial,
como son las reglas que se aplican a las actividades que se han de
desarrollar en el ámbito del proceso. Las actividades además de su
definición han de cumplir con unas condiciones para permitir al flujo
continuar con su ejecución.

20
 Gestión del catálogo de actividades
Un proceso está compuesto por una serie de pasos que se denominan
actividades. Puede ocurrir, y de hecho es habitual, que una o varias
actividades se puedan repetir. Entonces es aquí donde resulta de gran
utilidad el catálogo de actividades (Magg, 1997), ya que gracias a la
clasificación y descripción de las actividades, su reutilización durante
el transcurso del proceso es más rápida y eficiente.

- El catálogo de actividades
Su funcionamiento es similar al de un catálogo de biblioteca, pues
nos presenta información sobre los ejemplares que posee.

El catálogo de actividades contribuye a la optimización de los


procesos, ya que a pesar de que las actividades se repiten un número
de veces, las aplicaciones siempre están vinculadas a una única
actividad, actividad modelo que esta descrita en el catálogo de tareas.

Los campos que incluye un registro son los siguientes:


 Nombre de la actividad
 Sinopsis de la actividad
 Descripción de la actividad
 Opciones posibles a tomar
 Resultados que pueden darse
 Tipos de documento de trabajo con los que puede ser invocada
 Disponibilidad de la norma de cómo debe ser realizada.
 Referencias a otro requerimiento de cómo deben ser
referenciadas.

La verdadera utilidad del catálogo radica en la posibilidad de


consultarlo durante el transcurso de la actividad, de forma que
cuando el sistema nos hace llegar la actividad que nos corresponde
podamos acceder a él para poder obtener más información completa
sobre sus características y la forma de proceder para realizarla.

- Descomposición de actividades
La descomposición de actividades proporciona una serie de ventajas
a la gestión del proceso, tales como:
- Flexibilidad en su gestión
- Enrutamiento de actividades
- Gestión de errores ocasionados

- Generalización de actividades
Esta técnica facilita la reutilización de las actividades, basándose
para ello en simplificar su ejecución. Debido al que el sistema
maneja él envió de la actividad con tres posibilidades de destino. De
esta forma se optimiza el catálogo de actividades.

 Utilización de roles en la asignación de actividades


Con la utilización de los roles se cuenta con la ventaja de no depender
de los usuarios, ya que las actividades son asignadas directamente a ese

21
rol que ejerce de intermediario con los usuarios, consiguiendo así un
nivel de independencia que elimina rigidez en la gestión de procesos.

Una vez que se ejecuta el proceso es el sistema de generación de flujo


de trabajo el encargado de asignar las actividades a los roles
correspondientes mediante la utilización de estrategias activas o
pasivas, según lo determine el caso.

Tabla 1: Tipos de estrategias en la asignación de actividades


Tipo de estrategia Directrices de la estrategia
Estrategia activa La actividad es colocada en la lista del
usuario seleccionado, lo cual es avisado de
inmediato de la llegada de la tarea
Estrategia pasiva La actividad es enviada a la lista de todos los
candidatos, de los que uno solo seleccionara
para realizarla.
Fuente: Lorca

 Ciclo de vida de un flujo de trabajo


Se considera el ciclo de vida de un flujo de trabajo como un ciclo similar
al de cualquier otra aplicación informática. Se compone de cuatro fases
que forman un movimiento continuo, recurrente en torno al proceso:
análisis, desarrollo, ejecución y administración. Coincide en gran
medida con los módulos o entornos que conforman la arquitectura de
un sistema normalizado de automatización de flujo de trabajo.

 Características técnicas del sistema workflow


En la actualidad hay un gran número de aplicaciones que afirman crear
y gestionar flujos de trabajo automatizado. Bueno para que se considere
que un software está capacitado para la automatización de flujo de
trabajo, debe presentar una serie de características y prestaciones tales
como:

- Entorno grafico de diseño: Permite la creación gráfica tanto del flujo


de trabajo, como de las actividades que lo forman y que han de ser
realizada de principio a fin.
- Roles: se trata de asignar actividades a roles.
- Reglas: Dictaminan la forma de desarrollar las actividades
- Manejo de excepciones: es la capacidad de poder gestionar cualquier
excepción, así puede reasignar una actividad de un usuario a otro si
ha de ausentarse del trabajo.
- Monitorización: el administrador tiene la capacidad de monitorear
de forma gráfica las actividades que se encuentran activas.
- Enrutamiento basado en roles: consiste en distribuir las actividades
en función de los roles que cumple cada usuario.
- Enrutamiento basado en relaciones: la misma función, pero
dependiendo de las relaciones existentes entre las entidades del flujo.
- Enrutamiento basado en condiciones: las actividades manejan
especificaciones con ciertas condiciones, entonces su destino de la
actividad dependerá de las condiciones que cumpla.

22
- Enrutamiento paralelo: existen ciertas actividades que requieren una
ejecución en paralelo para así reducir el tiempo de ejecución del
proceso.
- Invocación de otros procesos workFlow: durante la ejecución del
proceso, el sistema tiene la capacidad de activar tanto procesos del
mismo nivel como del principal, como subprocesos que se
encuentran anidados en las actividades de este.
- Buffer de actividad: las actividades son controladas en la forma
como esta llegan
- Modificación dinámica de la prioridad de la actividad: la prioridad
de algunas actividades que puedan modificarse de forma automática.
Así por ejemplo si una actividad para su realización requiere más
tiempo de lo establecido, este tiene la capacidad de efectuar un
cambio en tiempo, ampliándolo más.
- Establecimiento de grupos: los flujos de trabajos manejan ciertas
actividades que se pueden descomponer en tareas para ser
desarrollados por usuarios pertenecientes a un mismo departamento.
- Estadística de medición: la ejecución de los procesos genera
estadística acerca del rendimiento, de los tiempos de ejecución,
espera, etc.
- Simulación y test:
- Pro-activo: el sistema workflow respecto a las actividades las
distribuye a los usuarios pertinentes en cada momento, activando los
avisos de recepción y demora, y los reasigna a otros usuarios debidos
que no cumplen en el plazo establecido o las condiciones previstas.
- Conectividad con base datos: todo sistema mantiene una conexión a
la base datos con el fin de guardar información, para posteriormente
servir a los usuarios en la toma de decisiones.
- Aplicaciones de diversos servidores workflow: es necesario
establecer varios servidores workflow, de modo que si se da el caso
de que uno de ellos está ocupado con la realización de una actividad,
el segundo servidor actúa con la que ha de realizarse, y así
sucesivamente.
- Documentos anexos
- Registro automático de sucesos: aquí el sistema lleva a cabo acciones
de archivos de forma automática, de modo que se registran todo lo
relacionado con el flujo de trabajo.

2.2.2.5. Arquitectura de un sistema workflow normalizado. Modelo de


referencia del proceso del flujo de trabajo
Cada sistema workflow presentan una serie de características y funciones
propias, pero todos ellos presentan una serie de componentes genéricos.
Los principales elementos que describen el modelo de referencia del flujo
trabajo son los siguientes:

Interfaz 1: Definición de procesos.


 Concepto de definición de procesos
La wfMC considera la definición de un proceso como: "la
representación de un proceso de negocio, de forma que es posible su

23
manipulación automatizada, ya sea para su modelización o ejecución
por un sistema de gestión workflow".

La definición del proceso consiste en una red de actividades y sus


relaciones; la actividades individuales, como participantes, recursos
tecnológicos y datos asociados, etcétera.

Los atributos que componen la definición el proceso son:


- Definición del flujo de trabajo
 N. º del proceso workflow
 N. º de versión
 Condiciones de inicio y conclusión del proceso
 Datos de control, seguridad y auditoria

- Actividad
 Nombre
 Tipo actividad
 Condiciones previas y posteriores a la actividad

- Condiciones de transición
 Condiciones referentes a la ejecución del flujo.

- Datos relevantes del flujo de trabajo


 Nombre y ruta de los datos
 Tipo de datos

- Roles
 Nombres y funciones asignadas

- Aplicaciones invocadas
 Nombre genérico
 Parámetros de ejecución
 Localización o ruta de acceso

 Herramientas para la definición de procesos


Se trata de una herramienta que transforma el proceso de su forma real
a un formato procesable por el ordenador, es decir, abstrae el proceso
de modo real a modo automatizado. Esto puede formar parte de un
sistema workflow o puede ser independiente, para lo cual deberemos
utilizar en este caso, un formato compatible para el intercambio de
definiciones de proceso entre esta herramienta y el software de
generación del flujo de trabajo.

Interfaz 2: Aplicaciones Cliente.


La aplicación cliente es el software que permite al usuario interactuar con
el motor workflow situado en el entorno de generación del flujo de trabajo
y solicitarle funciones y servicios con el fin de cumplir con las actividades
asignadas

24
Lista de operaciones del usuario.
 Seleccionar las actividades que va realizar
 Añadir nuevas actividades
 Suspender temporalmente una actividad
 Eliminar actividades de la lista

Interfaz 3: Aplicaciones invocadas.


La coalición define una interfaz compuesta por una serie de api que
permite la comunicación eficiente y eficaz con el motor workflow y de las
aplicaciones que se deben invocar para que sirvan de soporte a
determinadas actividades.

Existen dos formas de comunicación entre el motor del flujo de trabajo y


las aplicaciones invocadas: a través de agentes de aplicación y mediante
aplicaciones capacitadas para el flujo de trabajo. [wfm, 1998 b].

Agente de aplicación es un conjunto de mecanismos de intercambio tales


como OSI, TCP O X.400 que posibilitan la conexión a través del api
normalizado, entre el motor flujo de trabajo y las aplicaciones invocadas.

Aplicaciones capacitadas para el flujo de trabajo son software que utiliza


el conjunto normalizado de api para comunicarse directamente con el
motor flujo de trabajo, pues esto no necesita intermediarios para la
invocación de aplicaciones.

Entre las funciones que tiene lugar en la invocación de aplicaciones pueden


citarse a modo de ejemplo los siguientes.

 Establecimiento de sesión.
- Conexión/desconexión de la sesión de sesión con la aplicación

 Gestión de actividades
- Inicio de la actividad
- Suspender/reanudar/abordar la actividad

 Gestión de actividades
- Notificación de actividad completada
- Eventos de señalización o aviso
- Petición de los atributos de una actividad

 Funciones de manejo de datos


- Envió de datos relevantes sobre el flujo de trabajo

Interfaz 4: Interoperabilidad con otros sistemas workflow.


Uno de los objetivos prioritarios de la coalición es “Definir estándares que
permitan el intercambio de actividades entre diferentes productos
workflow”.

25
La interoperabilidad entre flujos de trabajo se base en la comunicación
eficaz entre productos workflow para así poder intercambiar elementos de
trabajo (actividades).

Con esto pretendemos que un producto workflow se capaz de interpretar


la definición de un proceso realizada por otro distinto y que a la vez puede
intercambiarse los diferentes tipos de datos que intervienen en la ejecución
de un proceso.

Interfaz 5: Herramienta de administración y monitoreo.


Con esta interfaz queremos dar seguimiento a los estados de los procesos
y ver que puedan trabajar con otros sistemas workflow distintos.

Las funciones que incluye esta interfaz son las siguientes:


 Gestión de usuarios
- Establecimiento / eliminación / suspensión / modificación de los
privilegios de los usuario o grupos.

 Gestión de roles
- Definición / eliminación / corrección del rol
- Añadir o suprimir atributos al rol

 Operaciones de gestión auditorias


- Solicitud / impresión / comienzo de una nueva auditoria

 Operaciones de control de recurso


- Añadir / suprimir / modificar los niveles de concurrencia de procesos
o actividades
- Interrogar los datos de control de recursos

 Funciones de supervisión de procesos


- Modificar el estado de la definición de un proceso
- Permitir o impedir el desarrollo de versiones concretas de instancia
de procesos
- Modificar el estado de todas las instancias de los procesos o de
actividades de un tipo especifico
- Asignar atributos a todas las instancias de procesos o actividades de
un tipo especifico
- Finalización de todas las instancias de los proceso.

 Funciones sobre los estados de los procesos


- Abrir o cerrar la solicitud de procesos o actividades mediante la
selección de criterios opcionales.
- Filtrar determinados detalles de las instancias de los procesos o
actividades como específicos
- Filtrar determinados detalles de una instancia concreta, ya sea de
procesos o actividad

26
Entorno a la generación del flujo de trabajo.
 Motor de flujo de trabajo
El motor del Sistema de workflow es el elemento que se encarga de
interpretar las descripciones de los procesos y proporcionar el entorno
para que se puedan ejecutar las instancias de ellos.

Para ello, se encarga de controlar la ejecución de las distintas


actividades que componen casa proceso, invocando las aplicaciones
que sea necesario ejecutar en cada momento (el motor debe tener la
capacidad de poder activar aplicaciones para que ejecuten determinadas
tareas) y gestionando las listas de trabajo asociadas a cada uno de los
usuarios participantes en el proceso.

También es importante que el motor pueda gestionar restricciones


temporales asociadas a determinadas tareas (plazos en los que se tiene
que completar su ejecución), estableciendo un sistema de prioridades y
de alarmas.

Entre las funciones que desarrolla el motor workflow se encuentra:

- Interpretación de la definición del proceso


- Control de instancias de proceso: creación, activación, suspensión,
terminación, etcétera.
- Direccionamiento de las actividades (en paralelo o secuencial)
- Identificación de las actividades que se envían a los usuarios
- Y de la interfaz que se utiliza para la interacción con el sistema
- Mantenimiento de los datos de control y de los datos relevantes del
flujo de trabajo, y transferencias de estos últimos a las aplicaciones
o usuarios
- Proporcionar una interfaz para llevar a cabo la activación de las
aplicaciones
- Supervisión para facilitar las operaciones de control, administración
y auditoria.
- Seguimiento automático de usuario.

Estados característicos de procesos y actividades durante su ciclo de


vida
A continuación se describen los posibles estados que puede adoptar un
proceso durante su ciclo de vida:
 Iniciado: se ha creado una instancia del proceso, pero ésta todavía no
cumple las condiciones para comenzar su ejecución.
 En ejecución: como su propio nombre indica, en este estado la instancia
del proceso se encuentra en ejecución, por lo que puede pasar a
ejecutarse cualquiera de las actividades que lo componen (en cuanto se
den las condiciones apropiadas para ello).
 Activo: una o más de las actividades de la instancia del proceso se están
ejecutando, es decir, se ha creado una tarea y se ha asignado a una
persona o se ha invocado a la correspondiente aplicación para que la
realice.

27
 Suspendido: se detiene la ejecución de la instancia del proceso y no
darán comienzo nuevas tareas hasta que se vuelva al estado “en
ejecución”.
 Completado: se han alcanzado todas las condiciones para que se pueda
dar la instancia del proceso por completada, por lo que el sistema
procederá a su destrucción después de haber procesado los datos de
control y auditoría generados durante su ejecución.
 Terminado: se ha finalizado la ejecución de la instancia del proceso
antes de que ésta completara todas sus actividades, debido a algún tipo
de problema o error. Al igual que en el caso anterior, el sistema
procederá a su destrucción después de haber procesado los datos de
control y auditoria generados durante su ejecución.

2.2.2.6. Tipología de la aplicación workflow


La tecnología de automatización de flujo de trabajo presenta varias
tipologías, dada sus características, productores, objetivos o tecnología en
lo cual se basa. Ahora presentaremos la clasificación de la aplicación
workflow en función de los objetivos del entorno al que se aplica, ya que
es la más extendida y empleada en la mayoría de los estudios teóricos sobre
esta tecnología.

Los tipos de aplicación que integran esta tipología son:


 Flujo de trabajo de producción:
Son productos workflow destinados a procesos cuyas características
más destacadas en sus actividades son: a) de corta duración; b)
repetitivas; c) se ejecutan de forma indefinida.

 Flujo de trabajo de administración


Como su propio nombre lo indica, estos sistemas automatizan procesos
administrativos, es decir automatizan el conjunto de expedientes de la
organización, proporcionando un seguimiento eficiente y fiable durante
el tiempo que dure su ejecución.

 Flujo de trabajo colaborativo


Su objetivo principal es proporcionar al conjunto de participantes de un
proceso la capacidad de trabajar junto en grupo, es decir colaborar en
un mismo o diferente entorno.

 Flujo de trabajo ad hoc


Se utilizan en aquellos procesos de la organización que no pueden ser
totalmente definidos, ya que por su carácter subjetivo no es posible
cuantificar las variables contenidas en la actividad. Por ejemplo: cuando
se va a contratar a un trabajador, o critica de un trabajo de investigación

2.2.2.7. Estudio de los casos sobre la aplicación de los flujos de trabajo en


entornos documentales

Aplicación de los sistemas workflow en España.


En este país existen soluciones desarrolladas por empresas consultoras que
incorporan varias de las características de los Sistemas de workflow, sobre

28
todo en lo que se refiere a la gestión de documentos y su enrutamiento
dentro de una organización.

Muchas de estas aplicaciones se han desarrollado sobre la plataforma


Lotus Notes, aprovechando los servicios de comunicación, cooperación y
coordinación que este producto proporciona. Así, por ejemplo, nos
podemos encontrar sistemas de gestión de la calidad, que automatizan toda
la gestión de documentos asociados a las normas ISO-9000, entregando
cada uno de los documentos a la persona responsable de su
implementación, lectura o aprobación (en función del papel que
desempeña cada uno dentro de la organización).

También han apreciado aplicaciones que permiten automatizar la gestión


de documentos en las normas ISO-14000 (sistemas de gestión
medioambiental) e ISO-18000 (sistemas de prevención de los riesgos
laborales).

Por otra parte, otras aplicaciones que llevan bastante tiempo en el mercado
son los Centros de Atención al Cliente (Customer Call Centers), en los que
se emplean una serie de herramientas informáticas que permiten
proporcionar una respuesta más rápida, precisa, homogénea y
personalizada a los clientes de una empresa.

Los sistemas de recepción y seguimiento automático de llamadas facilitan


en gran medida el trabajo de los agentes de atención al cliente, ya que
presentan toda la información relativa a cada una de las llamadas recibidas
(motivo de llamada, historial del cliente, etc.) y la transfieren al agente más
indicado para resolverla (en función del tipo de consulta o problema
planteado por el cliente o, simplemente, teniendo en cuenta un reparto
equitativo de la carga de trabajo).

La Administración Pública española ha definido una serie de requisitos


que deben cumplir los Sistemas de workflow y que se recogen en el
documento ESTROFA (Especificaciones para el Tratamiento de Flujos
Administrativos automatizados), elaborado por el consejo Superior de
Informática en diciembre de 1995 (y que entro en vigor el día 1 de febrero
de 1996).

Este documento eta muy relacionada con las especificaciones aprobadas


por la Administración para la homologación de aplicaciones ofimáticas en
sistemas abiertos, conocidas como el esquema de verificación ATRIO
(Almacenamiento, Tratamiento y Recuperación de Información de
Oficinas).

2.2.2.8. Metodología XP
La metodología XP define cuatro variables para cualquier proyecto de
software: costo, tiempo, calidad y alcance. Además, se especifica que, de
estas cuatro variables, sólo tres de ellas podrán ser fijadas arbitrariamente
por actores externos al grupo de desarrolladores (clientes y jefes de
proyecto). El valor de la variable restante podrá ser establecido por el

29
equipo de desarrollo, en función de los valores de las otras tres. Este
mecanismo indica que, por ejemplo, si el cliente establece el alcance y la
calidad, y el jefe de proyecto el precio, el grupo de desarrollo tendrá
libertad para determinar el tiempo que durará el proyecto. Este modelo es
analizado por Kent Beck, en donde propone las ventajas de un contrato
con alcances opcionales.

Según (BECK, 2002), Los ciclos de vida “tradicionales” proponen una


clara distinción entre las etapas del proyecto de software, y tienen un plan
bien preestablecido acerca del proceso de desarrollo. Asimismo, en todos
ellos se parte de especificaciones claras, si no del total del proyecto, por lo
menos de una buena parte inicial.

El ciclo de vida de un proyecto XP incluye, al igual que las otras


metodologías, entender lo que el cliente necesita, estimar el esfuerzo, crear
la solución y entregar el producto final al cliente. Sin embargo, XP propone
un ciclo de vida dinámico, donde se admite expresamente que, en muchos
casos, los clientes no son capaces de especificar sus requerimientos al
comienzo de un proyecto. (BECK, 2002)

Por esto, se trata de realizar ciclos de desarrollo cortos (llamados


iteraciones), con entregables funcionales al finalizar cada ciclo. En cada
iteración se realiza un ciclo completo de análisis, diseño, desarrollo y
pruebas, pero utilizando un conjunto de reglas y prácticas que caracterizan
a XP (y que serán detalladas más adelante).

 Planeación
La planeación es la etapa inicial de todo proyecto en XP. En este punto
se comienza a interactuar con el cliente y el resto del grupo de desarrollo
para descubrir los requerimientos del sistema. En este punto se
identifican el número y tamaño de las iteraciones al igual que se
plantean ajustes necesarios a la metodología según las características
del proyecto.

En este apartado se tendrán en cuenta ocho elementos, los cuales son


los siguientes. Historias de usuario, velocidad del proyecto, iteraciones,
entregas pequeñas, reuniones, roles en XP, traslado del personal y ajuste
a XP.

- Historias de usuario
El sistema es desarrollado para el cliente, por lo tanto, el usuario es
quien decide que tareas realizará la aplicación. Este planteamiento
se desarrolla a lo largo del proyecto: el cliente es quien decide que
hacer. Como primer paso, se debe proporcionar una idea clara de lo
que será el proyecto en sí.

Las historias de usuario son utilizadas como herramienta para dar a


conocer los requerimientos del sistema al equipo de desarrollo. Son
pequeños textos en los que el cliente describe una actividad que
realizará el sistema; la redacción de los mismos se realiza bajo la

30
terminología del cliente, no del desarrollador, de forma que sea clara
y sencilla, sin profundizar en detalles.(Jeffries, Anderson, &
Hendrickson, C., 2001)

Se puede considerar que las historias de usuario en XP juegan un


papel similar a los casos de uso en otras metodologías, pero en
realidad son muy diferentes. Las historias de usuario sólo muestran
la silueta de una tarea a realizarse. Por esta razón es fundamental que
el usuario o un representante del mismo se encuentren disponibles
en todo momento para solucionar dudas, estas no proporcionan
información detallada acerca de una actividad específica.

Las historias de usuario también son utilizadas para estimar el


tiempo que el equipo de desarrollo tomará para realizar las entregas.
En una entrega se puede desarrollar una o varias historias de usuario,
esto depende del tiempo que demore la implementación de cada una
de las mismas.

- Velocidad del proyecto


Es una medida de la capacidad que tiene el equipo de desarrollo para
evacuar las historias de usuario en una determinada iteración. Esta
medida se calcula totalizando el número de historias de usuario
realizadas en una iteración. Para la iteración siguiente se podrá
(teóricamente) implementar el mismo número de historias de usuario
que en la iteración anterior.

Cabe recordar que la velocidad del proyecto ayuda a determinar la


cantidad de historias que se pueden implementar en las siguientes
iteraciones, aunque no de manera exacta. La revisión continua de
esta métrica en el transcurso del proyecto se hace necesaria, ya que
las historias varían según su grado de dificultad, haciendo inestable
la velocidad de la realización del sistema.

- Iteraciones
En la metodología XP, la creación del sistema se divide en etapas
para facilitar su realización. Por lo general, los proyectos constan de
más de tres etapas, las cuales toman el nombre de iteraciones, de allí
se obtiene el concepto de metodología iterativa. La duración ideal de
una iteración es de una a tres semanas.

Para cada iteración se define un módulo o conjunto de historias que


se van a implementar. Al final de la iteración se obtiene como
resultado la entrega del módulo correspondiente, el cual debe haber
superado las pruebas de aceptación que establece el cliente para la
verificar el cumplimiento de los requisitos. Las tareas que no se
realicen en una iteración son tomadas en cuenta para la próxima
iteración, donde se define, junto al cliente, si se deben realizar o si
deben ser removidas de la planeación del sistema.(Wake, 2002)

31
- Entregas pequeñas
La duración de una iteración varía entre una y tres semanas, al final
de la cual habrá una entrega de los avances del producto, los cuales
deberán ser completamente funcionales. Estas entregas deben
caracterizarse por ser frecuentes.

- Reuniones
El planeamiento es esencial para cualquier tipo de metodología, es
por ello que XP requiere de una revisión continua del plan de trabajo.
A pesar de ser una metodología que evita la documentación
exagerada, es muy estricta en la organización del trabajo.

 Plan de entregas
Al comenzar el proyecto se realiza una reunión entre el equipo de
trabajo y los clientes. En dicha reunión se define el marco
temporal de la realización del sistema. El cliente expone las
historias de usuario a los integrantes de grupo, quienes estimarán
el grado de dificultad de la implementación de cada historia.
Las historias de usuario son asignadas a las diferentes iteraciones
según su orden de relevancia para el proyecto. En el proceso de
selección de las historias de usuario para cada iteración, se tiene
en cuenta que la suma de las estimaciones sea aproximada a la
velocidad del proyecto de la iteración pasada.

En esta reunión se predicen los tiempos que se utilizaran en la


realización de las diferentes etapas del proyecto, los cuales no son
datos exactos pero proporcionan una base del cronograma.

Finalmente a partir de las historias de usuario, el cliente plantea


las pruebas de aceptación con las cuales se comprueba que cada
una de éstas ha sido correctamente implementada.
Inicial de Iteración.

Al comenzar una iteración se realiza una reunión de la misma,


donde se organizan las actividades de programación a realizar.
Las historias de usuario son traducidas a tareas y asignadas a los
desarrolladores.

Los desarrolladores estiman los tiempos para la realización de las


tareas. Cada tarea se estima de uno a tres de días de programación
ideales o sin distracciones. Estas estimaciones son más exactas
que las realizadas en la planeación de entregas, por lo tanto no
deben exceder la velocidad de proyecto de la iteración anterior.
De ser así, se consulta con el cliente para determinar que historias
de usuario se pospondrán para iteraciones futuras.

 Diaries o “stand-up meeting”


Estas reuniones se realizan al comenzar la jornada laboral. Todo
el equipo de desarrollo se reúne para exponer los problemas e

32
ideas que se estén presentando, esto con el fin que el equipo en
conjunto construya una mejor solución.

Es de vital importancia evitar las discusiones largas, ya que se


está utilizando tiempo laboral que puede ser destinado a la
construcción del sistema. También debe evitarse las
conversaciones separadas, las dudas que se presenten serán
solucionadas por el equipo en conjunto.

- Roles XP
En esta metodología se utiliza el concepto de roles para organizar
quienes se encargaran de cada una de las actividades que deben
realizarse en el transcurso del proyecto. Cada uno de estos papeles
son desempeñados por uno o varios integrantes del grupo, sin
descartar la posibilidad de rotar los roles entre el equipo durante la
realización del sistema.(BECK, 2002)

El jefe de proyecto tiene como responsabilidad la dirección y


organización de las reuniones que se realizan durante el proyecto. Es
erróneo afirmar que entre sus tareas se encuentra decir que hacer,
cuando hacer y de revisar cómo se desarrolla el sistema, para ello se
cuenta con el apoyo del cliente, el trackery los demás miembros del
grupo. El usuario o cliente determina qué se va a construir en el
sistema, además de decidir el orden en que se entregarán cada
segmento del proyecto. Es parte fundamental del equipo XP (se
menciona su importancia como una de las prácticas), en todo
proyecto debe existir un cliente. Además, tiene como tarea establecer
las pruebas de aceptación, las cuales determinan si el sistema cumple
con los requerimientos del usuario.

En el grupo de los programadores se encuentran además los


diseñadores y los analistas. Los programadores son quienes
construyen el sistema y realizan las pruebas correspondientes a cada
módulo o unidad de código. Cuando surgen dudas o preguntas que
afectan decisiones sobre la funcionalidad del sistema (las decisiones
técnicas son solucionadas gracias a las habilidades de los
programadores), el programador no debe hacer suposiciones acerca
de lo que el cliente quiere; en este caso, debe dirigirse al mismo y
aclarar la situación.

El entrenador (coach) es el responsable de que el proceso se realice


de forma correcta. Se asegura de que los conceptos de la metodología
se apliquen al proyecto, además de brindar ayuda continua a los
demás integrantes del equipo.

El tester o quien realiza las pruebas, colabora en la realización de


las pruebas de aceptación y es quien muestra los resultados de las
mismas. En este proceso, ayuda al cliente a diseñar tales pruebas y a
verificar que las pruebas sean aprobadas.

33
El rastreador (tracker) tiene como tarea observar la realización del
sistema. Varias veces por semana cuestiona a los integrantes del
equipo para anotar sus logros y avances. Mantiene datos históricos
del proyecto.

- Traslado de personal
Al mover el personal se evitan problemas relacionados con la
pérdida de conocimiento y cuellos de botella. Todos los miembros
del grupo deben tener suficiente conocimiento de la estructura del
código de modo tal que se eviten las islas de conocimiento las cuales
son susceptibles de generar pérdidas de información importante.

En la medida que todos los programadores entienden todas las partes


del programa se evita que unos tengan una carga de trabajo muy alta
mientras que otros no tengan mucho trabajo por hacer.

La programación en parejas se convierte en una herramienta muy


importante para lograr el objetivo del traslado de personal sin que se
pierda el rendimiento. Esto se logra haciendo que un miembro de la
pareja se traslade mientas que el otro continúe el desarrollo con un
nuevo compañero.

- Ajustar XP
Todos los proyectos tienen características específicas por lo cual XP
puede ser modificado para ajustarse bien al proyecto en cuestión. Al
iniciar el proyecto se debe aplicar XP tal como es, sin embargo no
se debe dudar en modificar aquellos aspectos en que no funcione.
Eso no quiere decir que los desarrolladores pueden hacer lo que se
les antoje. Antes de implementarse un cambio, este debe ser
discutido y aprobado por el grupo.

 Diseño
En XP solo se diseñan aquellas historias de usuario que el cliente ha
seleccionado para la iteración actual por dos motivos: por un lado se
considera que no es posible tener un diseño completo del sistema y sin
errores desde el principio. El segundo motivo es que dada la naturaleza
cambiante del proyecto, el hacer un diseño muy extenso en las fases
iníciales del proyecto para luego modificarlo, se considera un
desperdicio de tiempo.

Es importante resaltar que esta tarea es permanente durante la vida del


proyecto partiendo de un diseño inicial que va siendo corregido y
mejorado en el transcurso del proyecto.(Wake, 2002).

Los aspectos que se tratarán a continuación son: simplicidad en el


diseño, metáfora del sistema, tarjetas CRC, spike solution, no
solucionar antes de tiempo y refactoring.

34
- Simplicidad en el diseño
Una de las partes más importantes de la filosofía XP es la
simplicidad en todos los aspectos. Se considera que un diseño
sencillo se logra más rápido y se implementa en menos tiempo, por
lo cual esto es lo que se busca. La idea es que se haga el diseño más
sencillo que cumpla con los requerimientos de las historias de
usuario.

Sobre los diagramas, se es muy claro que se pueden usar siempre que
no tome mucho tiempo en realizarlos, que sean de verdadera utilidad
y que se esté dispuesto a “tirarlos a la basura”. En XP se prefiere
tener una descripción del sistema o parte de él, en lugar de una serie
de complejos diagramas que probablemente tomen más tiempo y
sean menos instructivos.

- Metáfora del sistema


Se trata de plasmar la arquitectura de sistema en una “historia” con
la cual se le dé al grupo de desarrollo una misma visión sobre el
proyecto además de brindarles un primer vistazo muy completo a los
nuevos integrantes del grupo para hacer su adaptación más
rápida(Fowler, 2004).

Es muy importante dentro del desarrollo de la metáfora darle


nombres adecuados a todos los elementos del sistema
constantemente, y que estos correspondan a un sistema de nombres
consistente. Esto será de mucha utilidad en fases posteriores del
desarrollo para identificar aspectos importantes del sistema.

- Tarjetas de clase, responsabilidad, colaboración (CRC cards)


La principal funcionalidad que tienen estas, es ayudar a dejar el
pensamiento procedimental para incorporarse al enfoque orientado a
objetos. Cada tarjeta representa una clase con su nombre en la parte
superior, en la sección inferior izquierda están descritas las
responsabilidades y a la derecha las clases que le sirven de soporte.

En el proceso de diseñar el sistema por medio de las tarjetas CRC


como máximo dos personas se ponen de pie adicionando o
modificando las tarjetas, prestando atención a los mensajes que éstas
se transmiten mientras los demás miembros del grupo que
permanecen sentados, participan en la discusión obteniendo así lo
que puede considerarse un diagrama de clases preliminar.

- Soluciones puntuales (SpikeSolutions)


En muchas ocasiones los equipos de desarrollo se enfrentan a
requerimientos de los clientes (en este caso historias de usuario) los
cuales generan problemas desde el punto de vista del diseño o la
implementación. SpikeSolution, es una herramienta de XP para
abordar este inconveniente.

35
Se trata de una pequeña aplicación completamente desconectada del
proyecto con la cual se intenta explorar el problema y propone una
solución potencial. Puede ser burda y simple, siempre que brinde la
información suficiente para enfrentar el problema encontrado.

- No solucionar antes de tiempo


Los desarrolladores tienden a predecir las necesidades futuras e
implementarlas antes. Según mediciones, esta es una práctica
ineficiente, concluyendo que tan solo el 10% de las soluciones para
el futuro son utilizadas, desperdiciando tiempo de desarrollo y
complicando el diseño innecesariamente.

En XP sólo se analiza lo que se desarrollará en la iteración actual,


olvidando por completo cualquier necesidad que se pueda presentar
en el futuro, lo que supone uno de los preceptos más radicales de la
programación extrema.

- Refactorización (Refactoring)
Como se trató al principio de este apartado, el diseño es una tarea
permanente durante toda la vida del proyecto y la refactorización
concreta este concepto. Como en cualquier metodología tradicional
en XP se inicia el proceso de desarrollo con un diseño inicial(Robert
C. , 2002). La diferencia es que en las metodologías tradicionales
este diseño es tan global y completo como se es posible tomando
generalmente mucho tiempo en lograrse y con la creencia de que si
se ven forzados a modificarlo será un fracaso para el grupo de
desarrollo. El caso de XP es el opuesto. Se parte de un diseño muy
general y simple que no debe tardar en conseguirse, al cual se le
hacen adiciones y correcciones a medida que el proyecto avanza, con
el fin de mantenerlo tanto correcto como simple.

La refactorización en el código pretende conservarlo tan sencillo y


fácil de mantener como sea posible. En cada inspección que se
encuentre alguna redundancia, funcionalidad no necesaria o aspecto
en general por corregir, se debe rehacer esa sección de código con el
fin de lograr las metas de sencillez tanto en el código en sí mismo
como en la lectura y mantenimiento.

Estas prácticas son difíciles de llevar a cabo cuando se está iniciando


en XP por varios motivos. En primer lugar debido el temor que
genera en los equipos de desarrollo cambiar algo que ya funciona
bien sea a nivel de diseño o implementación. Sin embargo si se
cuenta con un esquema de pruebas completo y un sistema de
automatización para las mismas se tendrá éxito en el proceso. El otro
motivo es la creencia que es más el tiempo que se pierde en
refactoring que el ganado en sencillez y mantenimiento. Según XP
la ganancia obtenida en refactoring es tan relevante que justifica
suficientemente el esfuerzo extra en corrección de redundancias y
funcionalidades innecesarias.

36
 Codificación
La codificación es un proceso que se realiza en forma paralela con el
diseño y la cual está sujeta a varias observaciones por parte de XP
consideradas controversiales por algunos expertos tales como la
rotación de los programadores o la programación en parejas.

Además de los mencionados temas, el lector encontrará a continuación


una descripción de los siguientes temas: cliente siempre presente,
codificar primero la prueba, integración secuencial e integraciones
frecuentes.

Además de los mencionados temas, el lector encontrará a continuación


una descripción de los siguientes temas: cliente siempre presente,
codificar primero la prueba, integración secuencial e integraciones
frecuentes.

- Cliente siempre presente


Uno de los requerimientos de XP es que el cliente esté siempre
disponible. No solamente para solucionar las dudas del grupo de
desarrollo, debería ser parte de éste. En este sentido se convierte en
gran ayuda al solucionar todas las dudas que puedan surgir,
especialmente cara a cara, para garantizar que lo implementado
cubre con las necesidades planteadas en las historias de
usuario(Jeffries, Anderson, & Hendrickson, C., 2001).

- Codificar primero la prueba


Cuando se crea primero una prueba, se ahorra mucho tiempo
elaborando el código que la haga pasar, siendo menor el tiempo de
hacer ambos procesos que crear el código solamente.

Una de las ventajas de crear una prueba antes que el código es que
permite identificar los requerimientos de dicho código. En otras
palabras, al escribir primero las pruebas se encuentran de una forma
más sencilla y con mayor claridad todos los casos especiales que
debe considerar el código a implementar. De esta forma el
desarrollador sabrá con completa certeza en qué momento ha
terminado, ya que habrán pasado todas las pruebas.

- Programación en parejas
Según (Cockbun, 2001), Todo el código debe ser creado por parejas
de programadores sentados ambos frente a un único computador lo
que en principio representa una reducción de un 50% en
productividad, sin embargo, según XP no es tal la pérdida. Se
entiende que no hay mucha diferencia, en lo que a la cantidad se
refiere, entre el código producido por una pareja bajo estas
condiciones que el creado por los mismos miembros trabajando en
forma separada, con la excepción que uno o ambos programadores
sean muy expertos en la herramienta en cuestión.

37
Cuando se trabaja en parejas se obtiene un diseño de mejor calidad
y un código más organizado y con menores errores que si se trabajase
solo, además de la ventaja que representa contar con un compañero
que ayude a solucionar inconvenientes en tiempo decodificación, los
cuales se presentan con mucha frecuencia.

Se recomienda que mientras un miembro de la pareja se preocupa


del método que se está escribiendo el otro se ocupe de cómo encaja
éste en el resto de la clase.

- Integración secuencial
Uno de los mayores inconvenientes presentados en proyectos de
software tiene que ver con la integración, sobre todo si todos los
programadores son dueños de todo el código. Para saldar este
problema han surgido muchos mecanismos, como darle propiedad
de determinadas clases a algunos desarrolladores, los cuales son los
responsables de mantenerlas actualizadas y consistentes (Fowler,
2004). Sin embargo, sumado al hecho que esto va en contra de la
propiedad colectiva del código no se solucionan los problemas
presentados por la comunicación entre clases.

XP propone que se emplee un esquema de turnos con el cual solo


una pareja de programadores integre a vez. De esta forma se tiene
plena seguridad de cuál es la última versión liberada y se le podrán
hacer todas las pruebas para garantizar que funcione correctamente.
A esto se le conoce como integración secuencial.

 Pruebas
XP enfatiza mucho los aspectos relacionados con las pruebas,
clasificándolas en diferentes tipos y funcionalidades específicas,
indicando quién, cuándo y cómo deben ser implementadas y ejecutadas.

Del buen uso de las pruebas depende el éxito de otras prácticas, tales
como la propiedad colectiva del código y la refactorización. Cuando se
tienen bien implementadas las pruebas no habrá temor de modificar el
código del otro programador en el sentido que si se daña alguna sección,
las pruebas mostrarán el error y permitirán encontrarlo. El mismo
criterio se aplica a la refactorización. Uno de los elementos que podría
obstaculizar que un programador cambie una sección de código
funcional es precisamente hacer que esta deje de funcionar. Si se tiene
un grupo de pruebas que garantice su buen funcionamiento, este temor
se mitiga en gran medida.

Según XP se debe ser muy estricto con las pruebas. Sólo se deberá
liberar una nueva versión si esta ha pasado con el cien por ciento de la
totalidad de las pruebas. En caso contrario se empleará el resultado de
estas para identificar el error y solucionarlo con mecanismos ya
definidos.

38
- Pruebas unitarias
Estas pruebas se aplican a todos los métodos no triviales de todas las
clases del proyecto con la condición que no se liberará ninguna clase
que no tenga asociada su correspondiente paquete de pruebas. Uno
de los elementos más importantes en estas es que idealmente deben
ser construidas antes que los métodos mismos, permitiéndole al
programador tener máxima claridad sobre lo que va a programar
antes de hacerlo, así como conocer cada uno de los casos de prueba
que deberá pasar, lo que optimizará su trabajo y su código será de
mejor calidad.

Deben ser construidas por los programadores con el empleo de algún


mecanismo que permita automatizarlas de modo tal que tanto su
implementación y ejecución consuman el menor tiempo posible
permitiendo sacarles el mejor provecho EL empleo de pruebas
unitarias completas facilitan la liberación continua de versiones por
cuanto al implementar algo nuevo y actualizar la última versión, solo
es cuestión de ejecutar de forma automática las pruebas unitarias ya
creadas para saber que la nueva versión no contiene errores.

- Pruebas de aceptación
Las pruebas de aceptación, también llamadas pruebas funcionales
son supervisadas por el cliente basándose en los requerimientos
tomados de las historias de usuario. En todas las iteraciones, cada
una de las historias de usuario seleccionadas por el cliente deberá
tener una o más pruebas de aceptación, de las cuales deberán
determinar los casos de prueba e identificar los errores que serán
corregidos(Gutiérrez, Escalona, & M., 2001).

Las pruebas de aceptación son pruebas de caja negra, que


representan un resultado esperado de determinada transacción con el
sistema. Para que una historia de usuario se considere aprobada,
deberá pasar todas las pruebas de aceptación elaboradas para dicha
historia.

Es importante resaltar la diferencia entre las pruebas de aceptación


y las unitarias en lo que al papel del usuario se refiere. Mientras que
en las pruebas de aceptación juega un papel muy importante
seleccionando los casos de prueba para cada historia de usuario e
identificando los resultados esperados, en las segundas no tiene
ninguna intervención por ser de competencia del equipo de
programadores.

- Cuando se encuentra un error


Al momento de encontrar un error debe escribirse una prueba antes
de intentar corregirlo. De esta forma tanto el cliente logrará tener
completamente claro cuál fue y dónde se encontraba el mismo como
el equipo de desarrollo podrá enfocar mejor sus esfuerzos para
solucionarlo. Por otro lado se logrará evitar volver a cometerlo.

39
Si el error fue reportado por el cliente y este creó la correspondiente
prueba de aceptación junto al equipo de desarrollo, el programador
encargado podrá a su vez producir nuevas pruebas unitarias que le
permita ubicar la sección específica donde el error se encuentra.

2.3. Definición de términos básicos


 Groupware
El groupware o software colaborativo se refiere al conjunto de programas
informáticos que integran el trabajo en un sólo proyecto, con muchos usuarios
concurrentes, que se encuentran en diversas estaciones de trabajo, conectadas a
través de una red (internet o intranet), con esto hacer los grupos más productivos.

 Workflow
Como la automatización de la secuencia de actividades que forman un proceso
de negocio, mediante una serie de operaciones que incluyen: su definición, en el
que se establece el flujo de actividades a seguir; en su ejecución, la información
y los recursos oportunos llegan al usuario correspondiente en el momento
adecuado; y su gestión, para llevar a cabo un continuo seguimiento y la
administración del proceso en su globalidad.

 Oficina
Se entiende por oficina la visión interna de la organización, es decir al trabajo
documental. Este trabajo se desarrolla en forma cooperativa, donde los
integrantes de la oficina forman grupos para realizar sus cometidos.

 Tramite documentario
Es una aplicación que permite a las organizaciones tener el control de la
ubicación física y estatus, actual y pasado de la documentación que llega, fluye
y se genera dentro de ellas; y en base a estos datos mostrar estadísticas que
permitan analizar pasos repetitivos o que no agreguen valor y los cuellos de
botella para mejorar los flujos de los documentos dentro de la organización.

 Proceso
Se entiende como una secuencia de actividades que uno o varios sistemas
desarrollan para hacer llegar una determinada salida (output) a un usuario, a
partir de la utilización de determinados recursos (entradas/input)”.

Un proceso de negocio son un conjunto de procedimientos automáticos o


manuales enlazados para alcanzar un objetivo de negocio dentro de una
estructura organizativa.

 Proceso documental
Es el conjunto de operaciones a los que son sometidos los documentos en una
unidad de información, para que a través de estas operaciones la información
que contiene el documento pueda llegar al usuario que lo necesite.

 Sicres
Consiste en el registro de la información tanto de entrada como de salida.

40
 Estrofa
Es uno de los subsistemas del proceso documental que consiste en dar
seguimiento a cada uno de los expedientes.

 Atrio
Igual manera es uno de los subsistemas del proceso documental que consiste en
administrar y controlar los archivos.

 Comunicación
Es uno de los componentes principales del sistema Groupware que consiste en
él envió de información entre usuarios, es decir intercambio de información.

 Colaboración
Es uno de los componentes principales del sistema Groupware que se basa en
ver con la disposición de espacios virtuales para poder compartir información.

 Coordinación
De igual manera es uno de los componentes del sistema Groupware que se
enfoca en integrar las funciones de comunicación y colaboración, bajo ciertas
reglas concretas y una secuencia de actividades establecidas.

 Documentos resueltos
Consiste que una vez recibidos se tienes que resolver este documento, es decir
podemos aceptar, derivar, finalizar un documento.

 Documentos emitidos
Son todo aquel documento que han sido enviados a las áreas correspondientes.

 Aplicaciones invocadas
Son interfaces compuesta por una serie de API que permite la comunicación
eficiente y eficaz con el motor workflow y de las aplicaciones que se deben
invocar para que sirvan de soporte a determinadas actividades.

 Automatización de flujos de trabajo


Es la automatización de un proceso o actividad, donde la información de
cualquier tipología llega al usuario adecuado en el momento adecuado, sobre la
base de un conjunto de reglas inteligentes, que permite que la mayoría del trabajo
sea efectuado informáticamente, mientras que las personas se ocupan solamente
de las excepciones.

41
III. MATERIALES Y MÉTODOS
3.1. Diseño de investigación
3.1.1. Tipo de investigación
Tecnología Aplicada: Por el fin que se persigue, esta es una investigación
tecnológica aplicada. Mediante el estudio del proceso de trámite
documentario que se vive en la actualidad, se realizará un Sistema de Gestión
documentaria, logrando de esta manera reducir tiempo, por ende mejorar el
nivel de productividad de los trabajadores.

3.1.2. Hipótesis
El desarrollo de la aplicación web de Gestión de Documentos basado en
workflow para mejorar significativamente el proceso de trámite
documentario de la Universidad en estudio.

3.1.3. Diseño de contrastación


Cuasi-Experimental: El tipo de estudio que se aplicara a la presente
investigación es de tipo cuasi-experimental.

El proyecto por ser una investigación pre test- post test, se utilizara el diseño
de contrastación de hipótesis seleccionada, describiendo la evaluación de la
situación actual, estímulo y situación futura del estudio elaborado.

Gráfico 1: Esquema de Diseño de Contrastación

Evaluación Antes Evaluacion después


O1 O2

X
Estimulo- Aplicación de una
web para el el control y manejo
del proceso de trámite
documentaio deun institucion
universitaria Césr Vallejosca

 Situación Actual: La Institución universitaria, no existe ninguna


aplicación en web para el control y seguimiento de la gestión de trámites
de documento. La evaluación se realizara mediante de entrevistas,
encuestas y observación.

 Estimulo: Implementación de una web, para gestionar el proceso de


trámite documentario en una entidad universitaria.

 Situación Propuesta: Controlar la gestión de trámite documentario para


garantizar las operaciones de trabajo de los colaboradores, mediante el uso
de esta aplicación web.

42
La evaluación se realizara a través de encuestas y entrevistas realizadas a los
miembros de la empresa.

3.1.4. Variables
Variable Independiente:
Aplicación web de Gestión de Documentos basado en workflow

Variable Dependiente:
Proceso del trámite documentario

Tabla 2: Variables
Variables Dimensión Indicador Unid/Med
Índice de Cantidad de
documentos recibidos por día
Índice de Cantidad de
documentos emitidos por día
Soporte para
Índice de Cantidad de
mejorar
Tramite documentos por atender en un
significativamente Porcentaje
documentario día
el Proceso del
Índice de Cantidad de
trámite
documentos almacenados en
documentario
un departamento de archivos
general o dependencias de la
institución
Tiempo Días

3.1.5. Población y muestra


La población objetivo está conformada por todos los usuarios del sistema de
gestión documental que vendrían a ser todos los colaboradores de parte
administrativa. Sin embargo no todos usan el sistema por lo que la población
bajo muestreo será:

 Población
Para esta investigación se ha considerado como población a los usuarios
de la parte administrativa que pertenecen a la institución Universitaria.
Siendo un Total = 192

 Muestra
Dónde:

N = tamaño de la población.
σ = 0.05 (Error estándar).
Z = 1,96 (Valor 95%).
e = 0.05 (limite aceptable de error)

(1,96)2 ∗ (0,5)2 ∗ 192


n=
(0,05)2 ∗ (192 − 1) + ((1,96)2 ∗ (0,5)2 )

n = 128

43
3.1.6. Métodos
Técnicas e instrumentos de recolección de datos.

Para obtener información se aplicó una entrevista hacia el administrador y


una encuesta al personal que labora en ella, para poder conocer la situación
actual del trámite documentario y así poder desarrollar una aplicación web
donde nos permita que el usuario pueda dar seguimiento a los documentos
desde cualquier lugar y que se sientan más seguros con los servicios brindados
por la Universidad.

Tabla 3: Técnicas e Instrumentos de recolección de datos


Elemento de la
Técnica Instrumento Descripción
población
Cuestionario
Todas las personas
con preguntas Todos aquellos que por
de la Universidad
abiertas algún motivo necesitan
Encuesta inmersas en un
Cuestionario realizar un trámite
proceso
con preguntas documentario
documentario
cerradas
Cada una de las áreas que
Ficha de Procesos
Observación intervienen para poder
observación documentarios
resolver un documento
Encargado de cada una de
las áreas que componen la
universidad y que
participan en el proceso
para poder resolver un
documento. Y así poder
Cuestionarios. Jefe de cada área de obtener toda la
Entrevista
Libreta de notas la universidad información acerca de
cada una de las actividades
que interviene un
determinado proceso con
la posibilidad de poder
otorgar algunas mejoras en
los procesos.

3.1.7. Técnicas de procesamiento para análisis de datos


Los datos obtenidos a través de las encuestas y entrevistas fueron mostrados
a través de gráficos y tablas estadísticas.

También cabe resaltar que los datos fueron procesados mediante la aplicación
hoja de cálculo de Microsoft Excel versión 2013 el cual es una herramienta
idónea para analizar este tipo de datos.

3.2. Metodología
La metodología ágil a utilizar será la XP ya que ninguna otra se ha centrado en los
requerimientos tan específicos que el desarrollo web necesita, pues esta
metodología se apoya en las bases de un análisis comparativo para probar la

44
idoneidad de los métodos ágiles sobre el desarrollo de Sistemas Web. Esta
metodología consta de 4 fases:

3.2.1. Fase de planificación


 Historias de Usuarios
El primer paso de cualquier proyecto que siga la metodología XP es definir
las historias del usuario con el cliente. Las historias de usuario tienen la
misma finalidad que los casos de uso, pero con algunas diferencias:
constan de 3 o 4 líneas escritas por el cliente en un lenguaje no técnico sin
hacer mucho hincapié en los detalles.

 Tareas de Historias
En una segunda instancia viene la elaboración de las tareas de historia
usuario por cada una. Esto se desarrolla en más detalle especificando su
tabla o clase, codificación de la tabla, diseño y desarrollo de la interfaz.

3.2.2. Fase de Diseño


 Elaboración de las tarjetas CRC (Clase, Responsabilidad y
Colaboración).
Permite que el programador centrar y apreciar el desarrollo orientando a
objetos olvidándose de los malos hábitos de la programación procedural
clásica.

 Diseño de las Interfaces


Par tener más en claro lo que vamos a desarrollar o programar necesitamos
establecer las interfaces que estarán de cara el cliente.

 Elaboración del Modelo Entidad Relación.


Para poder manejar nuestra data de cualquier índole necesitamos
establecer bien nuestro modelo entidad relación, ya que son ellas las que
nos soportar en parte un proceso en específico, para lo cual es base para el
desarrollo de las interfaces.

3.2.3. Fase de Desarrollo


 Codificación de la base datos
Una vez establecido bien el modelo entidad relación, necesitamos pasarlo
a un sistema de codificación. Lo cual pode ser desarrollo en cualquier
sistema de gestor de base de datos. Esta codificación mantendrá una
vinculación con las interfaces desarrolladas.

 Codificación de las interfaces.


De igual manera una vez diseñadas las interfaces en la etapa de diseño
necesitamos codificar cada una de estas interfaces, donde está vinculada
con la base datos creados.

3.2.4. Pruebas
 Pruebas de aceptación.
Son los que encierra todos los requerimientos, en cuanto que estos tienen
que cumplirse para que el usuario pueda dar por aceptado todo el proyecto,
o la aplicación que el necesita para poder cubrir sus necesidades.

45
IV. RESULTADOS
4.1. Fase de planificación
4.1.1. Historia de usuarios

Tabla 4: Historia de usuario 01


HISTORIA DE USUARIO
Número: 01 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar área No aplica
Prioridad en el negocio: Alta Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo registro las aéreas para mejorar la
estructura de la universidad
Criterio de aceptación:
- Debe registrar las áreas.
- Debe modificar las áreas.
- Debe eliminar las áreas
- Dar de baja área.
- Las áreas deben de existir en la universidad

Tabla 5: Historia de usuario 02


HISTORIA DE USUARIO
Número: 02 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar Ubigeo - Departamento No aplica
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo controlo los mantenimientos y
actualizaciones del Ubigeo – Departamento.
Criterio de aceptación:
- Debe registrar todo el ubigeo – Departamento.
- Debe modificar todo el ubigeo – Departamento.
- Debe eliminar todo el ubigeo - Departamento.

46
Tabla 6: Historia de usuario 03
HISTORIA DE USUARIO
Número: 03 Usuario: Personal administrativo
Dependencia para su desarrollo:
Nombre de la historia:
Historia usuario – Gestionar ubigeo –
Gestionar Ubigeo – Provincia
Departamento
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo necesito saber las provincias que están
inmersas en un determinado departamento, en virtud de poder saber la dirección de la
persona, en cuanto a la provincia que esta pertenece.
Criterio de aceptación:
- Debe registrar todo el ubigeo – provincia en determinado departamento.
- Debe permitir modificar cada registro del ubigeo – provincia.
- Debe eliminar todo o algunos ubigeos - provincia.

Tabla 7: Historia de usuario 04


HISTORIA DE USUARIO
Número: 04 Usuario: Personal administrativo
Dependencia para su desarrollo:
Nombre de la historia:
Historia usuario – Gestionar ubigeo –
Gestionar ubigeo - Distrito
Provincia
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo necesito saber los distritos que están
inmersas en una determinada provincia, en virtud de poder saber la dirección de la
persona, en cuanto al distrito que esta pertenece.
Criterio de aceptación:
- Debe registrar todo el ubigeo – Distrito en una determinada provincia.
- Debe permitir modificar cada registro del ubigeo – Distrito.
- Debe eliminar todo o algunos ubigeo - Distrito.

Tabla 8: Historia de usuario 05


HISTORIA DE USUARIO
Número: 05 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar ubigeo - vía No aplica
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 1 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo registro cada una de las vías con el fin de
poder tener una información detallada acerca de la dirección de una persona que labora
en nuestra institución.
Criterio de aceptación:
- Debe registrar las vías.
- Debe modifica las vías.
- Debe eliminar las vías.
47
Tabla 9: Historia de usuario 06
HISTORIA DE USUARIO
Número: 06 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar ubigeo – zonas No aplica
Prioridad en el negocio: Alta Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo controlo de manera eficiente cada uno de
los mantenimientos, en cuanto al registro de las zonas, etc.
Criterio de aceptación:
- Debe permitir registrar las zonas.
- Debe modifica las zonas ya existente.
- Debe eliminar las zonas.

Tabla 10: Historia de usuario 07


HISTORIA DE USUARIO
Número: 07 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar permisos de usuario No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como jefe de área debo llevar un control de los usuarios y sus permisos
que ellos tienen para dar mantenimiento a determinadas tablas.
Criterio de aceptación:
- Permitir registrar, modificar, y eliminar cada uno de los registros de las diferentes
tablas.
- Restringir el acceso de usuario a dar mantenimiento a ciertas tablas.
- Otorgar más privilegios a usuarios.
- Eliminar privilegios a usuarios.
- Debe filtrar por permisos a todos los usuarios.

Tabla 11: Historia de usuario 08


HISTORIA DE USUARIO
Número: 08 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar cargo No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo tengo que administrar y controlar cada
uno de los cargos que se manejan en la entidad de la institución universitaria para poder
categorizar a mi personal que labora en ella.
Criterio de aceptación:
- Debe registrar los cargos.
- Debe modificar los cargos.
- Debe eliminar los cargos.
- Los cargos deben de existir en la universidad.

48
Tabla 12: Historia de usuario 09
HISTORIA DE USUARIO
Número: 09 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar tipo – personal No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo necesito saber el tipo de personas o
entidades con el cual nuestra institución tiene contactos. Y además poder controlar y
administrar y todos los tipos de persona o entidades que se relaciona con la institución.
Criterio de aceptación:
- Debe registrar los tipos de personas.
- Debe modificar los tipos de personas.
- Debe eliminar los tipos de personas
- Los tipos de personas deben de existir en la universidad.

Tabla 13: Historia de usuario 10


HISTORIA DE USUARIO
Número: 10 Usuario: Jefe de área
Nombre de la historia: Dependencia para su desarrollo:
Gestionar prefijos No aplica
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Jefe área establecer el prefijo de cada uno de los grados, que tiene
cada colaborador.
Criterio de aceptación:
- Debe registrar el grado de cada persona.
- Debe modificar los grados de cada persona.
- Debe eliminar los gradaos de una persona.
- Los grados de cada persona deben de existir en la universidad.

Tabla 14: Historia de usuario 11


HISTORIA DE USUARIO
Número: 11 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar empresa No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo necesito llevar un control de todo lo
relacionado a la institución, he ir constantemente registrando toda información
concerniente a la entidad, así del mismo modo mantener siempre actualizada dicha
información.
Criterio de aceptación:
- Debe registrar la empresa.
- Debe modificar datos relacionado a la empresa.
- Debe eliminar empresa.

49
Tabla 15: Historia de usuario 12
HISTORIA DE USUARIO
Número: 12 Usuario: Personal administrativo
Dependencia para su desarrollo:
- Historia de usuario Gestionar Prefijos
- Historia de usuario Gestionar Empresas
Nombre de la historia:
- Historia de usuario Gestionar Cargo
Gestionar personas
- Historia de usuario Gestionar Tipo
Persona
- Historia de usuario Gestionar Área
Prioridad en el negocio: Alta Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal Administrativo necesito registrar las personas para
identificar a todas aquellas mantienen un vínculo con la institución y así establecer
algunas medidas de seguridad de acceso al sistema.
Criterio de aceptación:
- Debe registrar las personas.
- Debe modificar o actualizar los datos de persona.
- Permitir eliminar personas.
- Permitir dar de baja personas

Tabla 16: Historia de usuario 13


HISTORIA DE USUARIO
Número: 13 Usuario: Personal administrativo
Dependencia para su desarrollo:
- Historia de usuario Gestionar Ubigeo –
Distrito
Nombre de la historia: - Historia de usuario Gestionar Ubigeo –
Gestionar dirección Vía
- Historia de usuario Gestionar Ubigeo
Zona
- Historia de usuario Gestionar Persona.
Prioridad en el negocio: Media Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 1
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo registro las direcciones de la universidad
para tener un mejor conocimiento del personal que labora en la entidad. En sus
direcciones de cada uno de ellos.
Criterio de aceptación:
- Debe registrar las direcciones del personal.
- Debe modificar las direcciones.
- Debe eliminar las direcciones.

50
Tabla 17: Historia de usuario 14
HISTORIA DE USUARIO
Número: 14 Usuario: jefe de área
Nombre de la historia: Dependencia para su desarrollo:
Gestionar teléfonos Historia de usuario Gestionar Persona
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Jefe área se necesitó establecer una lista de teléfonos
pertenecientes a una persona, para que cuando él o ella tenga acceso al sistema esta lo
pueda confirmar con un código de verificación, entre otras actividades más. Y en virtud
de esto poder iniciar su trabajo. Esto es solo para los clientes.
Criterio de aceptación:
- Debe registrar el teléfono(s) de las personas.
- Debe modificar el teléfono(s) de las personas
- Debe eliminar el teléfono(s) de las personas
- Debe enviar un código de verificación de cuenta el número celular de la persona.

Tabla 18: Historia de usuario 15


HISTORIA DE USUARIO
Número: 15 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar correos Historia de usuario Gestionar Persona
Prioridad en el negocio: Baja Riesgo en el desarrollo: Baja
Puntos asignados: 2 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo debo administrar todas las cuentas de las
diferentes personas. Esto como apoyo de mantener informado siempre al cliente.
Criterio de aceptación:
- Permitir registrar el correo de la persona.
- Permitir modificar el correo de cada persona.
- Permitir eliminar los correos de una persona.
- Permitir recuperar el correo de la persona.
- Permitir notificar avisos a la persona mediante el correo

51
Tabla 19: Historia de usuario 16
HISTORIA DE USUARIO
Número: 16 Usuario: Personal administrativo
Nombre de la historia: Dependencia para su desarrollo:
Gestionar usuarios Historia de usuario Gestionar Personas
Prioridad en el negocio: Alta Riesgo en el desarrollo: Baja
Puntos asignados: 4 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal Administrativo necesito establecer una lisa de usuarios
para que tengan acceso al sistema, solo para aquellas personas que están laborando o
que tienen algún tipo de vínculo con la institución. A partir de ello poder establecer
algunos privilegios que cada usuario tendrá en determinadas actividades.
Criterio de aceptación:
- Debe permitir crear nuevos usuarios.
- Permitir actualizar su contraseña.
- Permitir dar de baja y eliminar usuario.
- Permitir que el usuario este registrado como personal de la institución.
- Listar todos los usuarios y los privilegios que cada uno tiene

Tabla 20: Historia de usuario 17


HISTORIA DE USUARIO
Número: 17 Usuario: jefe de área
Nombre de la historia: Dependencia para su desarrollo:
Gestionar plantilla de documento No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Jefe de Área necesito establecer y diseñar una(s) plantilla(s) para
poder realizar un(os) documento(s) para que los colaboradores pueden realizar sus
trabajos de manera cómoda.
Criterio de aceptación:
- Permitir crear y diseñar nuevas plantillas.
- Permitir registrar modelos de platillas.
- Permitir modificar una plantilla.
- Permitir eliminar una plantilla.

52
Tabla 21: Historia de usuario 18
HISTORIA DE USUARIO
Número: 18 Usuario: jefe de área
Nombre de la historia: Dependencia para su desarrollo:
Gestionar año No aplica
Prioridad en el negocio: Media Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Jefe de Área necesito establecer el año y nombre del año a los
documentos que se van creando en el transcurso de cada actividad.
Criterio de aceptación:
- Permitir crear un nuevo año.
- Permitir registrar el nombre del año.
- Permitir modificar los Datos del año.
- Permitir eliminar registros.

Tabla 22: Historia de usuario 19


HISTORIA DE USUARIO
Número: 19 Usuario: Personal administrativo
Dependencia para su desarrollo:
Nombre de la historia:
Historia de usuario Gestionar Plantilla de
Gestionar tipo documento
Documento
Prioridad en el negocio: Media Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Personal Administrativo necesito establecer todos los tipos de
plantillas para cada una de las áreas de la institución.
Criterio de aceptación:
- Debe Permitir registrar un nuevo tipo de plantilla.
- Debe Permitir modificar los tipos de plantillas.
- Permitir eliminar tipos de platillas.

Tabla 23: Historia de usuario 20


HISTORIA DE USUARIO
Número: 20 Usuario: Personal administrativo
Dependencia para su desarrollo:
Nombre de la historia:
Historia de usuario Gestionar Tipo de
Gestionar subtipo documento
documento
Prioridad en el negocio: Media Riesgo en el desarrollo: Media
Puntos asignados: 3 Iteración asignada: 2
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como Personal Administrativo necesito establecer todos los Subtipos de
documentos que tendrá un tipo de documento.
Criterio de aceptación:
- Debe Permitir registrar un nuevo Subtipo de documento.
- Debe Permitir modificar los subtipos de documentos.
- Permitir eliminar subtipos de documentos.

53
Tabla 24: Historia de usuario 21
HISTORIA DE USUARIO
Número: 21 Usuario: Personal administrativo
Dependencia para su desarrollo:
- Historia de usuario Gestionar Subtipo
Nombre de la historia: Documento.
Gestionar documento - Historia de usuario Gestionar Año del
documento
- Historia de usuario Gestionar Persona
Prioridad en el negocio: Alta Riesgo en el desarrollo: Media
Puntos asignados: 5 Iteración asignada: 3
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo controlare y administrare dichos
documentos. Con el fin de poder saber sobre el tipo documento que se está trabajando,
y tener un conocimiento sobre el estado de la misma.
Criterio de aceptación:
- Debe permitir derivar Documentación
- Debe resolver documento.
- Debe recibir documento
- Debe permitir saber que atiendo el documento
- Debe permitir saber cuál es el recorrido del documento
- Debe finalizar trámite.

Tabla 25: Historia de usuario 22


HISTORIA DE USUARIO
Número: 22 Usuario: Personal administrativo
Dependencia para su desarrollo:
Nombre de la historia: - Historia de usuario Gestionar Subtipo
Gestionar rutas documento
- Historia de usuario Gestionar Áreas.
Prioridad en el negocio: Alta Riesgo en el desarrollo: Baja
Puntos asignados: 4 Iteración asignada: 3
Responsable: Darwin Víctor Herrera Sánchez
Descripción: Como personal administrativo necesito establecer cuál va ser el recorrido
del documento hasta que sea resuelto. Para lo cual es necesario controlar y administra
las rutas por donde tendrá que ir el documento.
Criterio de aceptación:
- Debe permitir Registrar las rutas para el recorrido del documento.
- Debe permitir modificar una ruta.
- Debe permitir eliminar rutas.
- Debe permitir tener el conocimiento de todo el recorrido del documento.

54
4.1.2. Tareas de Historias de usuarios

Tabla 26: Tarea de historia de usuario 1.1


TAREA
Nº de Tarea: 1.1 Nº Historia de usuario: 01
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
15/03/2015 25/03/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar las áreas.

Tabla 27: Tarea de historia de usuario 1.2


TAREA
Nº de Tarea: 1.2 Nº Historia de usuario: 01
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
15/03/2015 25/03/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar las áreas. El SGBD
(Sistema gestor de base Datos) a utilizar será, Misal, con Servidor Xampp.

Tabla 28: Tarea de historia de usuario 1.3


TAREA
Nº de Tarea: 1.3 Nº Historia de usuario: 01
Nombre de la tarea:
Diseño y Desarrollo de la interfaz de áreas
Fecha de inicio: Fecha de fin: Tiempo estimado en
15/03/2015 25/03/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar las áreas, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un IDE en este caso:
Netbeans.

55
Tabla 29: Tarea de historia de usuario 2.1
TAREA
Nº de Tarea: 2.1 Nº Historia de usuario: 02
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar los
departamentos.

Tabla 30: Tarea de historia de usuario 2.2


TAREA
Nº de Tarea: 2.2 Nº Historia de usuario: 02
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar los departamentos. El
SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 31: Tarea de historia de usuario 2.3


TAREA
Nº de Tarea: 2.3 Nº Historia de usuario: 02
Nombre de la tarea:
Diseño y Desarrollar interfaz de usuario
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar los departamentos, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans

56
Tabla 32: Tarea de historia de usuario 3.1
TAREA
Nº de Tarea: 3.1 Nº Historia de usuario: 03
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar las provincias.

Tabla 33: Tarea de historia de usuario 3.2


TAREA
Nº de Tarea: 3.2 Nº Historia de usuario: 03
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar las provincias. El
SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 34: Tarea de historia de usuario 3.3


TAREA
Nº de Tarea: 3.3 Nº Historia de usuario: 03
Nombre de la tarea:
Diseño y Desarrollo de interfaz de Provincia
Fecha de inicio: Fecha de fin: Tiempo estimado en
25/03/2015 02/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar las provincias, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

57
Tabla 35: Tarea de historia de usuario 4.1
TAREA
Nº de Tarea: 4.1 Nº Historia de usuario: 04
Nombre de la tarea:
Diseñar diagrama de aclases
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar los distritos.

Tabla 36: Tarea de historia de usuario 4.2


TAREA
Nº de Tarea: 4.2 Nº Historia de usuario: 04
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar los distritos. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 37: Tarea de historia de usuario 4.3


TAREA
Nº de Tarea: 4.3 Nº Historia de usuario: 04
Nombre de la tarea:
Diseñar y Desarrollar interfaz de Distritos
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 5 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar los distritos, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

58
Tabla 38: Tarea de historia de usuario 5.1
TAREA
Nº de Tarea: 5.1 Nº Historia de usuario: 05
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar las vías. El
SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 39: Tarea de historia de usuario 5.2


TAREA
Nº de Tarea: 5.2 Nº Historia de usuario: 05
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar las vías

Tabla 40: Tarea de historia de usuario 5.3


TAREA
Nº de Tarea: 5.3 Nº Historia de usuario: 05
Nombre de la tarea:
Diseñar y Desarrollar interfaz de vías
Fecha de inicio: Fecha de fin: Tiempo estimado en
02/04/2015 08/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar las vías, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

59
Tabla 41: Tarea de historia de usuario 6.1
TAREA
Nº de Tarea: 6.1 Nº Historia de usuario: 06
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
08/04/2015 16/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar las zonas.

Tabla 42: Tarea de historia de usuario 6.2


TAREA
Nº de Tarea: 6.2 Nº Historia de usuario: 06
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
08/04/2015 16/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar las zonas. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 43: Tarea de historia de usuario 6.3


TAREA
Nº de Tarea: 6.3 Nº Historia de usuario: 06
Nombre de la tarea:
Diseñar y Desarrollar interfaz de Zonas
Fecha de inicio: Fecha de fin: Tiempo estimado en
08/04/2015 16/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar las zonas, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

60
Tabla 44: Tarea de historia de usuario 7.1
TAREA
Nº de Tarea: 7.1 Nº Historia de usuario: 07
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar los permisos
de usuario

Tabla 45: Tarea de historia de usuario 7.2


TAREA
Nº de Tarea: 7.2 Nº Historia de usuario: 07
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar los permisos de
usuario. El SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor
Xampp.

Tabla 46: Tarea de historia de usuario 7.3


TAREA
Nº de Tarea: 7.3 Nº Historia de usuario: 07
Nombre de la tarea:
Diseñar y Desarrollar interfaz de permisos de usuario
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar los permisos de usuario, usando
PHP, XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID
en este caso: Netbeans.

61
Tabla 47: Tarea de historia de usuario 8.1
TAREA
Nº de Tarea: 8.1 Nº Historia de usuario: 08
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar los cargos.

Tabla 48: Tarea de historia de usuario 8.2


TAREA
Nº de Tarea: 8.2 Nº Historia de usuario: 08
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar los cargos. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 49: Tarea de historia de usuario 8.3


TAREA
Nº de Tarea: 8.3 Nº Historia de usuario: 08
Nombre de la tarea:
Diseñar y Desarrollar interfaz de cargos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar los cargos, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

62
Tabla 50: Tarea de historia de usuario 9.1
TAREA
Nº de Tarea: 9.1 Nº Historia de usuario: 09
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar tipo de
personas que laboran o tienen algunos tipos de vínculo con la institución.

Tabla 51: Tarea de historia de usuario 9.2


TAREA
Nº de Tarea: 9.2 Nº Historia de usuario: 09
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar tipo de personas. El
SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 52: Tarea de historia de usuario 9.3


TAREA
Nº de Tarea: 9.3 Nº Historia de usuario: 09
Nombre de la tarea:
Diseñar y Desarrollar interfaz de tipo de documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/04/2015 25/04/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar el tipo de persona, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

63
Tabla 53: Tarea de historia de usuario 10.1
TAREA
Nº de Tarea: 10.1 Nº Historia de usuario: 10
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar prefijos

Tabla 54: Tarea de historia de usuario 10.2


TAREA
Nº de Tarea: 10.2 Nº Historia de usuario: 10
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar prefijos. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 55: Tarea de historia de usuario 10.3


TAREA
Nº de Tarea: 10.3 Nº Historia de usuario: 10
Nombre de la tarea:
Diseñar y Desarrollar interfaz de prefijos
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar prefijos, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

64
Tabla 56: Tarea de historia de usuario 11.1
TAREA
Nº de Tarea: 11.1 Nº Historia de usuario: 11
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar empresa.

Tabla 57: Tarea de historia de usuario 11.2


TAREA
Nº de Tarea: 11.2 Nº Historia de usuario: 11
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar empresa. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 58: Tarea de historia de usuario 11.3


TAREA
Nº de Tarea: 11.3 Nº Historia de usuario: 11
Nombre de la tarea:
Diseñar y Desarrollar interfaz de empresa
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar empresa, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

65
Tabla 59: Tarea de historia de usuario 12.1
TAREA
Nº de Tarea: 12.1 Nº Historia de usuario: 12
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar personas.

Tabla 60: Tarea de historia de usuario 12.2


TAREA
Nº de Tarea: 12.2 Nº Historia de usuario: 12
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar personas. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 61: Tarea de historia de usuario 12.3


TAREA
Nº de Tarea: 12.3 Nº Historia de usuario: 12
Nombre de la tarea:
Diseñar y Desarrollar interfaz de personas
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar personas, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

66
Tabla 62: Tarea de historia de usuario 13.1
TAREA
Nº de Tarea: 13.1 Nº Historia de usuario: 13
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar las
direcciones.

Tabla 63: Tarea de historia de usuario 13.2


TAREA
Nº de Tarea: 13.2 Nº Historia de usuario: 13
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar las direcciones. El
SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 64: Tarea de historia de usuario 13.3


TAREA
Nº de Tarea: 13.3 Nº Historia de usuario: 13
Nombre de la tarea:
Diseñar y Desarrollar interfaz de direcciones
Fecha de inicio: Fecha de fin: Tiempo estimado en
26/04/2015 06/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar las direcciones, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

67
Tabla 65: Tarea de historia de usuario 14.1
TAREA
Nº de Tarea: 14.1 Nº Historia de usuario: 14
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/05/2015 16/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar teléfonos.

Tabla 66: Tarea de historia de usuario 14.2


TAREA
Nº de Tarea: 14.2 Nº Historia de usuario: 14
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/05/2015 16/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar teléfonos. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 67: Tarea de historia de usuario 14.3


TAREA
Nº de Tarea: 14.3 Nº Historia de usuario: 14
Nombre de la tarea:
Diseñar y Desarrollar interfaz de teléfonos
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/05/2015 16/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar teléfonos, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

68
Tabla 68: Tarea de historia de usuario 15.1
TAREA
Nº de Tarea: 15.1 Nº Historia de usuario: 15
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/05/2015 16/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar correos.

Tabla 69: Tarea de historia de usuario 15.2


TAREA
Nº de Tarea: 15.2 Nº Historia de usuario: 15
Nombre de la tarea:
Programar tabla en la base de datos.
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/05/2015 16/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar correos. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.
Tabla 70: Tarea de historia de usuario 15.3
TAREA
Nº de Tarea: 15.3 Nº Historia de usuario: 15
Nombre de la tarea:

Fecha de inicio: Fecha de fin: Tiempo estimado en


07/05/2015 16/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar correos, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

69
Tabla 71: Tarea de historia de usuario 16.1
TAREA
Nº de Tarea: 16.1 Nº Historia de usuario: 16
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar usuarios

Tabla 72: Tarea de historia de usuario 16.2


TAREA
Nº de Tarea: 16.2 Nº Historia de usuario: 16
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar usuarios. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 73: Tarea de historia de usuario 16.3


TAREA
Nº de Tarea: 16.3 Nº Historia de usuario: 16
Nombre de la tarea:
Diseñar y Desarrollar interfaz de usuario
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar usuarios, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

70
Tabla 74: Tarea de historia de usuario 17.1
TAREA
Nº de Tarea: 17.1 Nº Historia de usuario: 17
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar plantilla de
documento.

Tabla 75: Tarea de historia de usuario 17.2


TAREA
Nº de Tarea: 17.2 Nº Historia de usuario: 17
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar plantilla de
documento. El SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con
Servidor Xampp.

Tabla 76: Tarea de historia de usuario 17.3


TAREA
Nº de Tarea: 17.3 Nº Historia de usuario: 17
Nombre de la tarea:
Diseñar y Desarrollar interfaz de documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
17/05/2015 26/05/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar plantilla de documento, usando
PHP, XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID
en este caso: Netbeans.

71
Tabla 77: Tarea de historia de usuario 18.1
TAREA
Nº de Tarea: 18.1 Nº Historia de usuario: 18
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar año del
documento.

Tabla 78: Tarea de historia de usuario 18.2


TAREA
Nº de Tarea: 18.2 Nº Historia de usuario: 18
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar año del documento.
El SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 79: Tarea de historia de usuario 18.3


TAREA
Nº de Tarea: 18.3 Nº Historia de usuario: 18
Nombre de la tarea:
Diseñar y Desarrollar interfaz año del documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar año del documento, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

72
Tabla 80: Tarea de historia de usuario 19.1
TAREA
Nº de Tarea: 19.1 Nº Historia de usuario: 19
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar tipo de
documento del documento

Tabla 81: Tarea de historia de usuario 19.2


TAREA
Nº de Tarea: 19.2 Nº Historia de usuario: 19
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar tipo de documento.

Tabla 82: Tarea de historia de usuario 19.3


TAREA
Nº de Tarea: 19.3 Nº Historia de usuario: 19
Nombre de la tarea:
Diseñar y Desarrollar interfaz de tipo de documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar año del tipo de documento,
usando PHP, XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será
un ID en este caso: Netbeans.

73
Tabla 83: Tarea de historia de usuario 20.1
TAREA
Nº de Tarea: 20.1 Nº Historia de usuario: 20
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar Subtipos de
documentos.

Tabla 84: Tarea de historia de usuario 20.2


TAREA
Nº de Tarea: 20.2 Nº Historia de usuario: 20
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar subtipos de
documentos. El SGBD (Sistema gestor de base Datos) a utilizar será, MySQL, con
Servidor Xampp.

Tabla 85: Tarea de historia de usuario 20.3


TAREA
Nº de Tarea: 20.3 Nº Historia de usuario: 20
Nombre de la tarea:
Diseñar y Desarrollar interfaz de subtipos del documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
27/05/2015 02/06/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar los subtipos de documentos,
usando PHP, XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será
un ID en este caso: Netbeans.

74
Tabla 86: Tarea de historia de usuario 21.1
TAREA
Nº de Tarea: 21.1 Nº Historia de usuario: 21
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar documento.

Tabla 87: Tarea de historia de usuario 21.2


TAREA
Nº de Tarea: 21.2 Nº Historia de usuario: 21
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar documento, El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 88: Tarea de historia de usuario 21.3


TAREA
Nº de Tarea: 21.3 Nº Historia de usuario: 21
Nombre de la tarea:
Diseñar y Desarrollar interfaz de documento
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar documento, usando PHP,
XAJAX, JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este
caso: Netbeans.

75
Tabla 89: Tarea de historia de usuario 22.1
TAREA
Nº de Tarea: 22.1 Nº Historia de usuario: 22
Nombre de la tarea:
Diseñar diagrama de clases
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar el diagrama de clases con sus atributos y métodos para gestionar rutas.

Tabla 90: Tarea de historia de usuario 22.2


TAREA
Nº de Tarea: 22.2 Nº Historia de usuario: 22
Nombre de la tarea:
Programar tabla en la base de datos
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 1 hora
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar la tabla en la base de datos para gestionar rutas. El SGBD
(Sistema gestor de base Datos) a utilizar será, MySQL, con Servidor Xampp.

Tabla 91: Tarea de historia de usuario 22.3


TAREA
Nº de Tarea: 22.3 Nº Historia de usuario: 22
Nombre de la tarea:
Diseñar y Desarrollar interfaz de rutas
Fecha de inicio: Fecha de fin: Tiempo estimado en
07/06/2015 15/06/2015 horas: 5 horas
Responsable: Darwin Víctor Herrera Sánchez
Descripción:
Diseñar e implementar los formularios para gestionar rutas, usando PHP, XAJAX,
JAVASCRIPT, HTML y CSS. Cuya herramienta de apoyo será un ID en este caso:
Netbeans.

76
4.2. Fase de diseño
4.2.1. Elaboración de las tarjetas CRC (Clase, Responsabilidad. Colaboración)

Tabla 92: Tarjeta CRC 01


TARJETA CRC
Clase: área
Responsabilidad Colaboración
Define are_Codigo, are_Nombre, are_Abreviatura, Ninguna
are_Jerarquia
Agregar un área
Editar un área
Anular o eliminar un área
Validar el ingreso de datos

Tabla 93: Tarjeta CRC 02


TARJETA CRC
Clase: ude_departamento
Responsabilidad Colaboración
Define ude_Codigo, ude_Nombre Ninguna
Agregar un departamento
Editar un departamento
Anular o eliminar un departamento
Validar el ingreso de datos

Tabla 94: Tarjeta CRC 03


TARJETA CRC
Clase: ubigeo_provincia
Responsabilidad Colaboración
Define upr_Codigo, upr_Nombre, upr_ude_Codigo
Agregar una provincia ubigeo_departamento
Editar una provincia
Anular o eliminar una provincia
Validar el ingreso de datos

Tabla 95: Tarjeta CRC 04


TARJETA CRC
Clase: ubigeo_distrito
Responsabilidad Colaboración
Define udi_Codigo, udi_Nombre, udi_upr_Codigo
Agregar un distrito Ubigeo_Provincia
Editar un distrito
Anular o eliminar un distrito
Validar el ingreso de datos

77
Tabla 96: Tarjeta CRC 05
TARJETA CRC
Clase: ubigeo_via
Responsabilidad Colaboración
Define uvi_Codigo, uvi_Nombre, uvi_Abreviatura Ninguna
Agregar una vía
Editar una vía
Anular o eliminar una via
Validar el ingreso de datos

Tabla 97: Tarjeta CRC 06


TARJETA CRC
Clase: ubigeo_zona
Responsabilidad Colaboración
Define uzo_Codigo, uzo_Nombre, uzo_Abreviatura Ninguna
Agregar una zona
Editar una zona
Anular o eliminar una zona
Validar el ingreso de datos

Tabla 98: Tarjeta CRC 07


TARJETA CRC
Clase: usuario_permiso
Responsabilidad Colaboración
Define upe_Codigo, upe_Tramite, upe_Digitalizacion,
upe_Plantilla, upe_requisitos, upe_Area, upe_Persona,
upe_Usuario, upe_ano, upe_Periodos,
upe_Plantillas,upe_Cargo upe_Correo, upe,Telefono, Ninguna
upe_Direccion, upe_Departemento, upe_Provincia,
upe_distrito, upe_Via, upe_Zona, upe_Prefijo,
upe_TipoDocumento, upe_SubTipoDocumento
Agregar un nuevo permiso
Editar un permiso
Anular o eliminar un permiso
Validar el ingreso de datos para los campos de la clase
dirección

Tabla 99: Tarjeta CRC 08


TARJETA CRC
Clase: Cargo
Responsabilidad Colaboración
Define pca_Cargo, pca_Nombre Ninguna
Agregar un nuevo cargo
Editar un cargo
Anular o eliminar un cargo
Validar el ingreso de datos en cada uno de los campos.

78
Tabla 100: Tarjeta CRC 09
TARJETA CRC
Clase: tipo_persona
Responsabilidad Colaboración
Define pti_Codigo, pti_Nombre, pti_Abreviatura Ninguna
Agregar un tipo de persona
Editar un tipo de persona
Anular o eliminar un tipo de persona
Validar el ingreso de datos en cada uno de los campos.

Tabla 101: Tarjeta CRC 10


TARJETA CRC
Clase: prefijo
Responsabilidad Colaboración
Define pre_Codigo, pre_Nombre, pre_Abreviatura Ninguna
Agregar un nuevo prefijo
Editar un prefijo
Anular o eliminar un prefijo
Validar el ingreso de datos en cada campo

Tabla 102: Tarjeta CRC 11


TARJETA CRC
Clase: empresa
Responsabilidad Colaboración
Define emp_Codigo, emp_Tipo, emp_Direccion, Ninguna
emp_RazonSocial, emp_Ruc, emp_TipoContribuyente
Agregar una empresa
Editar una empresa
Anular o eliminar una empresa
Validar el ingreso de datos

Tabla 103: Tarjeta CRC 12


TARJETA CRC
Clase: Persona
Responsabilidad Colaboración
Define per_Codigo, per_Nombres, per_Apellidos,
per_Dni, per_Sexo, per_DNIFV, per_FNacimien,
Per_car_Codigo, per_pre_Codigo, per_pti_Codigo,
per_are_Codigo, per_emp_Codigo, per_pdi_Codigo
Agregar una persona Prefijo
Editar una persona Cargo
Anular o eliminar una persona Tipo persona
Validar el ingreso de datos Área, empresa

79
Tabla 104: Tarjeta CRC 13
TARJETA CRC
Clase: Dirección
Responsabilidad Colaboración
Define pdi_Codigo, pdi_NombreVia,
pdi_NombreZona, pdi_Numero, pdi_Piso,
pdi_Interior, pdi_Manzana, pdi_Lote, pdi_udi_Codigo,
pdi_uzo_Codigo, pdi_uvi_Codigo, pdi_per_Codigo
Agregar una dirección Ubigeo_zona
Editar una dirección Ubigeo_Distrito
Anular o eliminar una dirección Ubigeo_via
Validar el ingreso de datos Persona

Tabla 105: Tarjeta CRC 14


TARJETA CRC
Clase: Teléfono
Responsabilidad Colaboración
Define pte_Codigo, pte_Tipo, pte_Numero,
pte_Operadora, pte_per_Codigo
Agregar un nuevo teléfono a una persona Persona
Editar un teléfono
Anular o eliminar un teléfono
Validar el ingreso de datos

Tabla 106: Tarjeta CRC 15


TARJETA CRC
Clase: Email
Responsabilidad Colaboración
Define pem_Codigo, pem_email, pem_per_Codigo
Agregar un correo Persona
Editar un correo
Anular o eliminar un correo
Validar el ingreso de datos

Tabla 107: Tarjeta CRC 16


TARJETA CRC
Clase: Usuarios
Responsabilidad Colaboración
Define usu_Usuario, usu_Nombre,
usu_Contraseña,uso_per_Codigo, usu_Estado
Agregar un usuario Persona
Editar un usuario
Anular o eliminar un usuario
Validar el ingreso de datos

80
Tabla 108: Tarjeta CRC 17
TARJETA CRC
Clase: documento_plantilla
Responsabilidad Colaboración
Define dpl_Codigo, dpl_Interno, dpl_Externo,
dpl_Ana, dpl_Titulo, dpl_Remitente, dpl_Destinatario,
dpl_contenido, dpl_usunto, dpl_Fecha, dpl_adjunto
Agregar una nueva plantilla de documento Ninguna
Editar una plantilla de documento
Anular o eliminar una plantilla de documento
Validar el ingreso de datos

Tabla 109: Tarjeta CRC 18


TARJETA CRC
Clase: Año
Responsabilidad Colaboración
Define dan_Codigo, dan_ano, dan_Nombre
Agregar un nuevo año Ninguna
Editar un año
Anular o eliminar un año
Validar el ingreso de datos

Tabla 110: Tarjeta CRC 19


TARJETA CRC
Clase: Tipo documento
Responsabilidad Colaboración
Define dti_Codigo, dti_Nombre, dti_dpl_Codigo
Agregar un tipo de documento Documento_plantilla
Editar un tipo de documento
Anular o eliminar un tipo de documento
Validar el ingreso de datos

Tabla 111: Tarjeta CRC 20


TARJETA CRC
Clase: Subtipo documento
Responsabilidad Colaboración
Define dsu_Codigo, dsu_Nombre, dsu_dti_Codigo
Agregar un tipo de documento Tipo documento
Editar un tipo de documento
Anular o eliminar un tipo de documento
Validar el ingreso de datos

81
Tabla 112: Tarjeta CRC 21
TARJETA CRC
Clase: Documento
Responsabilidad Colaboración
Define doc_Codigo, doc_Fecha, doc_Hora,
doc_Numero, doc_Titulo, doc_Remitente,
doc_Destinatario, doc_Asunto, doc_Contenido,
doc_referencia, doc_Estado, doc_dan_Codigo,
doc_dsu_Codigo
Agregar un documento Subtipo documento
Editar un documento Año
Anular o eliminar un documento Persona
Validar el ingreso de datos

Tabla 113: Tarjeta CRC 22


TARJETA CRC
Clase: Documento Historial
Responsabilidad Colaboración
Define dhi_Codigo, dhi_Procedimiento, dhi_Fecha,
dhi_Hora, dhi_Mensaje, dhi_usu_Codigo,
dhi_doc_Codigo.
Agregar un documento Usuario
Editar un documento Persona
Anular o eliminar un documento Área
Validar el ingreso de datos

Tabla 114: Tarjeta CRC 23


TARJETA CRC
Clase: Ruta
Responsabilidad Colaboración
Define rut_Codigo, Rut_are_Codigo, rut_Tiempo,
rut_Orden, rut,dsu_Codigo
Agregar una ruta Área
Editar una ruta Subtipo documento
Anular o eliminar una ruta
Validar el ingreso de datos

82
4.2.2. Diseño de interfaces

Figura 1: Interfaz de Login

Figura 2: Interfaz de Inicio y Perfil

Figura 3: Interfaz de cambio de contraseña

83
Figura 4: Interfaz de la lista de documentos

Figura 5: Interfaz de registro de Trámite

Figura 6: Interfaz de lista de personal

84
Figura 7: Interfaz de registro del personal

85
Figura 8: Interfaz de la lista de cargo

Figura 9: Interfaz del registro de cargo

Figura 10: Interfaz de listado de áreas

86
Figura 11: Interfaz de registro de áreas

Figura 12: Interfaz de listado de prefijos

Figura 13: Interfaz de registro de prefijos

87
Figura 14: Interfaz de lista de usuarios

Figura 15: Interfaz de registro de usuarios

88
Figura 16: Interfaz de lista de permisos

Figura 17: Interfaz de registro de permisos

89
Figura 18: Interfaz de lista de empresas

Figura 19: Interfaz de registro de empresas

Figura 20: Interfaz de lista de plantillas

90
Figura 21: Interfaz de registro de plantillas

Figura 22: Interfaz de lista de tipo documento

91
Figura 23: Interfaz de registro de tipo documento

Figura 24: Interfaz de lista de subtipo documento

Figura 25: Interfaz de registro subtipo documento

92
Figura 26: Interfaz de lista de corrido del documento

Figura 27: Interfaz de registro de recorrido del documento

93
4.3. Elaboración del modelo entidad relación

94
4.4. Fase de desarrollo
4.4.1. Codificación de base de datos

CREATE DATABASE IF NOT EXISTS `ucvchicl_sgd` DEFAULT CHARACTER


SET utf8 COLLATE utf8_general_ci;
USE `ucvchicl_sgd`;

CREATE TABLE `tbarea` (


`are_Codigo` varchar(6) NOT NULL,
`are_Nombre` varchar(45) NOT NULL,
`are_Abreviatura` varchar(15) NOT NULL,
`are_Jerarquia` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbcargo` (


`car_Codigo` char(6) NOT NULL,
`car_Nombre` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbdocumento` (


`doc_Codigo` char(10) NOT NULL,
`doc_Fecha` date NOT NULL,
`doc_Hora` time NOT NULL,
`doc_Numero` varchar(20) NOT NULL,
`doc_Titulo` int(1) NOT NULL,
`doc_Remitente` char(10) NOT NULL,
`doc_Destinatario` char(10) NOT NULL,
`doc_Asunto` varchar(45) NOT NULL,
`doc_Contenido` varchar(2000) NOT NULL,
`doc_Estado` char(1) NOT NULL,
`doc_dan_Codigo` char(6) NOT NULL,
`doc_dsu_Codigo` char(6) NOT NULL,
`doc_Referencia` char(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbdocumento_ano` (


`dan_Codigo` char(6) NOT NULL,
`dan_Ano` varchar(10) NOT NULL,
`dan_Nombre` varchar(120) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbdocumento_historial` (


`dhi_Codigo` char(10) NOT NULL,
`dhi_Procedimiento` int(1) NOT NULL,
`dhi_Fecha` date NOT NULL,
`dhi_Hora` time NOT NULL,
`dhi_Mensaje` varchar(200) NOT NULL,
`dhi_usu_Codigo` char(10) NOT NULL,
`dhi_doc_Codigo` char(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

95
CREATE TABLE `tbdocumento_plantilla` (
`dpl_Codigo` char(6) NOT NULL,
`dpl_Interno` int(11) NOT NULL,
`dpl_Externo` int(11) NOT NULL,
`dpl_Ano` int(11) NOT NULL,
`dpl_Titulo` int(11) NOT NULL,
`dpl_Destinatario` int(11) NOT NULL,
`dpl_Remitente` int(11) NOT NULL,
`dpl_Contenido` int(11) NOT NULL,
`dpl_Asunto` int(11) NOT NULL,
`dpl_Fecha` int(11) NOT NULL,
`dpl_Adjunto` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbdocumento_subtipo` (


`dsu_Codigo` char(6) NOT NULL,
`dsu_Nombre` varchar(200) NOT NULL,
`dsu_dti_Codigo` char(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbdocumento_tipo` (


`dti_Codigo` char(6) NOT NULL,
`dti_Nombre` varchar(50) NOT NULL,
`dti_dpl_Codigo` char(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbempresa` (


`emp_Codigo` char(10) NOT NULL,
`emp_Tipo` char(1) NOT NULL,
`emp_RazonSocial` varchar(45) NOT NULL,
`emp_Ruc` char(11) NOT NULL,
`emp_TipoContribuyente` varchar(8) NOT NULL,
`emp_Direccion` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbpersona` (


`per_Codigo` char(10) NOT NULL,
`per_Nombres` varchar(45) NOT NULL,
`per_Apellidos` varchar(45) NOT NULL,
`per_DNI` char(8) NOT NULL,
`per_Sexo` char(1) NOT NULL,
`per_FNacimiento` date NOT NULL,
`per_car_Codigo` char(6) NOT NULL,
`per_pre_Codigo` char(6) NOT NULL,
`per_pti_Codigo` char(6) NOT NULL,
`per_are_Codigo` char(6) NOT NULL,
`per_emp_Codigo` char(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

96
CREATE TABLE `tbpersona_direccion` (
`pdi_Codigo` char(10) NOT NULL,
`pdi_Numero` int(4) NOT NULL,
`pdi_Piso` int(2) NOT NULL,
`pdi_Interior` varchar(2) NOT NULL,
`pdi_Lote` varchar(1) NOT NULL,
`pdi_Manzana` varchar(1) NOT NULL,
`pdi_udi_Codigo` char(2) NOT NULL,
`pdi_uzo_Codigo` char(6) DEFAULT NULL,
`pdi_uvi_Codigo` char(6) NOT NULL,
`pdi_per_Codigo` char(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbpersona_email` (


`pem_Codigo` char(10) NOT NULL,
`pem_per_codigo` char(10) NOT NULL,
`pem_Email` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbpersona_telefono` (


`pte_Codigo` char(10) NOT NULL,
`pte_per_Codigo` char(10) NOT NULL,
`pte_Tipo` varchar(45) NOT NULL,
`pte_Operadora` varchar(45) NOT NULL,
`pte_Numero` varchar(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbpersona_tipo` (


`pti_Codigo` char(6) NOT NULL,
`pti_Nombre` varchar(45) NOT NULL,
`pti_Abreviatura` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbprefijo` (


`ppr_Codigo` char(6) NOT NULL,
`ppr_Nombre` varchar(50) NOT NULL,
`ppr_Abreviatura` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbruta` (


`rut_Codigo` char(6) NOT NULL,
`rut_Tiempo` time NOT NULL,
`rut_Orden` int(1) NOT NULL,
`rut_are_Codigo` char(6) NOT NULL,
`rut_dsu_Codigo` char(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbubigeo_departamento` (


`ude_Codigo` char(2) NOT NULL,
`ude_Nombre` varchar(45) NOT NULL

97
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbubigeo_distrito` (


`udi_codigo` char(4) NOT NULL,
`udi_upr_Codigo` char(3) NOT NULL,
`udi_Nombre` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbubigeo_provincia` (


`upr_Codigo` char(3) NOT NULL,
`upr_ude_Codigo` char(2) NOT NULL,
`upr_Nombre` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbubigeo_via` (


`uvi_Codigo` char(6) NOT NULL,
`uvi_Nombre` varchar(45) NOT NULL,
`uvi_Abreviatura` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbubigeo_zona` (


`uzo_Codigo` char(6) NOT NULL,
`uzo_Nombre` varchar(45) NOT NULL,
`uzo_Abreviatura` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbusuario` (


`usu_Codigo` char(10) NOT NULL,
`usu_upe_Codigo` char(10) NOT NULL,
`usu_per_Codigos` char(10) NOT NULL,
`usu_Nombre` varchar(20) NOT NULL,
`usu_Contrasena` varchar(32) NOT NULL,
`usu_Estado` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tbusuario_permisos` (


`upe_Codigo` char(10) NOT NULL,
`upe_NombreTabla` varchar(50) NOT NULL,
`upe_Permiso` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `tbarea`


ADD PRIMARY KEY (`are_Codigo`);

ALTER TABLE `tbcargo`


ADD PRIMARY KEY (`car_Codigo`);

ALTER TABLE `tbdocumento`


ADD PRIMARY KEY (`doc_Codigo`),
ADD KEY `fk_doc_ano_idx` (`doc_dan_Codigo`),

98
ADD KEY `fk_tbdocumento_tbdocumento1_idx` (`doc_Referencia`),
ADD KEY `fk_doc_sutipo_idx` (`doc_dsu_Codigo`),
ADD KEY `fk_doc_destina_idx` (`doc_Destinatario`),
ADD KEY `fk_doc_remiten_idx` (`doc_Remitente`);

ALTER TABLE `tbdocumento_ano`


ADD PRIMARY KEY (`dan_Codigo`),
ADD UNIQUE KEY `doc_ano_codigo_UNIQUE` (`dan_Codigo`);

ALTER TABLE `tbdocumento_historial`


ADD PRIMARY KEY (`dhi_Codigo`),
ADD KEY `ref_usuario` (`dhi_usu_Codigo`),
ADD KEY `ref_documento` (`dhi_doc_Codigo`);

ALTER TABLE `tbdocumento_plantilla`


ADD PRIMARY KEY (`dpl_Codigo`);

ALTER TABLE `tbdocumento_subtipo`


ADD PRIMARY KEY (`dsu_Codigo`),
ADD KEY `fk_subt_tipo_idx` (`dsu_dti_Codigo`);

ALTER TABLE `tbdocumento_tipo`


ADD PRIMARY KEY (`dti_Codigo`),
ADD KEY `fk_tbdocumento_tipo_tbdocumento_plantilla1_idx` (`dti_dpl_Codigo`);

ALTER TABLE `tbempresa`


ADD PRIMARY KEY (`emp_Codigo`),
ADD UNIQUE KEY `emp_codigo_UNIQUE` (`emp_Codigo`);

ALTER TABLE `tbpersona`


ADD PRIMARY KEY (`per_Codigo`),
ADD UNIQUE KEY `per_codigo_UNIQUE` (`per_Codigo`),
ADD KEY `fk_per_pref_idx` (`per_pre_Codigo`),
ADD KEY `fk_per_empre_idx` (`per_emp_Codigo`),
ADD KEY `fk_per_carg_idx` (`per_car_Codigo`),
ADD KEY `fk_per_area_idx` (`per_are_Codigo`),
ADD KEY `fk_per_tipo_idx` (`per_pti_Codigo`);

ALTER TABLE `tbpersona_direccion`


ADD PRIMARY KEY (`pdi_Codigo`),
ADD UNIQUE KEY `dir_codigo_UNIQUE` (`pdi_Codigo`),
ADD KEY `fk_direc_zona_idx` (`pdi_uzo_Codigo`),
ADD KEY `fk_direc_via_idx` (`pdi_uvi_Codigo`),
ADD KEY `fk_direc_distri_idx` (`pdi_udi_Codigo`),
ADD KEY `fk_direc_persona_idx` (`pdi_per_Codigo`);

ALTER TABLE `tbpersona_email`


ADD PRIMARY KEY (`pem_Codigo`),
ADD UNIQUE KEY `ema_codigo_UNIQUE` (`pem_Codigo`),
ADD KEY `fk_correo_person_idx` (`pem_per_codigo`);

99
ALTER TABLE `tbpersona_telefono`
ADD PRIMARY KEY (`pte_Codigo`),
ADD UNIQUE KEY `idtbtelefono_UNIQUE` (`pte_Codigo`),
ADD KEY `fk_tel_perso_idx` (`pte_per_Codigo`);

ALTER TABLE `tbpersona_tipo`


ADD PRIMARY KEY (`pti_Codigo`);

ALTER TABLE `tbprefijo`


ADD PRIMARY KEY (`ppr_Codigo`);

ALTER TABLE `tbruta`


ADD PRIMARY KEY (`rut_Codigo`),
ADD KEY `fk_ruta_subti_idx` (`rut_dsu_Codigo`),
ADD KEY `fk_ruta_area_idx` (`rut_are_Codigo`);

ALTER TABLE `tbubigeo_departamento`


ADD PRIMARY KEY (`ude_Codigo`),
ADD UNIQUE KEY `idtbprovincia_UNIQUE` (`ude_Codigo`);

ALTER TABLE `tbubigeo_distrito`


ADD PRIMARY KEY (`udi_codigo`),
ADD KEY `fk_dist_prov_idx` (`udi_upr_Codigo`);

ALTER TABLE `tbubigeo_provincia`


ADD PRIMARY KEY (`upr_Codigo`),
ADD UNIQUE KEY `idtbprovincia_UNIQUE` (`upr_Codigo`),
ADD KEY `fk_prov_depart_idx` (`upr_ude_Codigo`);

ALTER TABLE `tbubigeo_via`


ADD PRIMARY KEY (`uvi_Codigo`);

ALTER TABLE `tbubigeo_zona`


ADD PRIMARY KEY (`uzo_Codigo`),
ADD UNIQUE KEY `zona_UNIQUE` (`uzo_Codigo`);

ALTER TABLE `tbusuario`


ADD PRIMARY KEY (`usu_Codigo`),
ADD KEY `ref_permiso` (`usu_upe_Codigo`),
ADD KEY `ref_persona` (`usu_per_Codigos`);

ALTER TABLE `tbusuario_permisos`


ADD PRIMARY KEY (`upe_Codigo`,`upe_NombreTabla`);

ALTER TABLE `tbdocumento`


ADD CONSTRAINT `fk_doc_ano` FOREIGN KEY (`doc_dan_Codigo`)
REFERENCES `tbdocumento_ano` (`dan_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

100
ADD CONSTRAINT `fk_doc_destina` FOREIGN KEY (`doc_Destinatario`)
REFERENCES `tbpersona` (`per_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION,
ADD CONSTRAINT `fk_doc_remiten` FOREIGN KEY (`doc_Remitente`)
REFERENCES `tbpersona` (`per_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION,
ADD CONSTRAINT `fk_doc_sutipo` FOREIGN KEY (`doc_dsu_Codigo`)
REFERENCES `tbdocumento_subtipo` (`dsu_Codigo`) ON DELETE NO ACTION
ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_tbdocumento_tbdocumento1` FOREIGN KEY
(`doc_Referencia`) REFERENCES `tbdocumento` (`doc_Codigo`) ON DELETE NO
ACTION ON UPDATE NO ACTION;

ALTER TABLE `tbdocumento_historial`


ADD CONSTRAINT `ref_documento` FOREIGN KEY (`dhi_doc_Codigo`)
REFERENCES `tbdocumento` (`doc_Codigo`),
ADD CONSTRAINT `ref_usuario` FOREIGN KEY (`dhi_usu_Codigo`)
REFERENCES `tbusuario` (`usu_Codigo`);

ALTER TABLE `tbdocumento_subtipo`


ADD CONSTRAINT `fk_subt_tipo` FOREIGN KEY (`dsu_dti_Codigo`)
REFERENCES `tbdocumento_tipo` (`dti_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

ALTER TABLE `tbdocumento_tipo`


ADD CONSTRAINT `fk_tbdocumento_tipo_tbdocumento_plantilla1` FOREIGN
KEY (`dti_dpl_Codigo`) REFERENCES `tbdocumento_plantilla` (`dpl_Codigo`) ON
DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE `tbpersona`


ADD CONSTRAINT `fk_per_area` FOREIGN KEY (`per_are_Codigo`)
REFERENCES `tbarea` (`are_Codigo`) ON DELETE NO ACTION ON UPDATE NO
ACTION,
ADD CONSTRAINT `fk_per_carg` FOREIGN KEY (`per_car_Codigo`)
REFERENCES `tbcargo` (`car_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION,
ADD CONSTRAINT `fk_per_empre` FOREIGN KEY (`per_emp_Codigo`)
REFERENCES `tbempresa` (`emp_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION,
ADD CONSTRAINT `fk_per_pref` FOREIGN KEY (`per_pre_Codigo`)
REFERENCES `tbprefijo` (`ppr_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION,
ADD CONSTRAINT `fk_per_tipo` FOREIGN KEY (`per_pti_Codigo`)
REFERENCES `tbpersona_tipo` (`pti_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

ALTER TABLE `tbpersona_direccion`


ADD CONSTRAINT `fk_direc_distri` FOREIGN KEY (`pdi_udi_Codigo`)
REFERENCES `tbubigeo_distrito` (`udi_codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION,

101
ADD CONSTRAINT `fk_direc_persona` FOREIGN KEY (`pdi_per_Codigo`)
REFERENCES `tbpersona` (`per_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION,
ADD CONSTRAINT `fk_direc_via` FOREIGN KEY (`pdi_uvi_Codigo`)
REFERENCES `tbubigeo_via` (`uvi_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION,
ADD CONSTRAINT `fk_direc_zona` FOREIGN KEY (`pdi_uzo_Codigo`)
REFERENCES `tbubigeo_zona` (`uzo_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

ALTER TABLE `tbpersona_email`


ADD CONSTRAINT `fk_correo_person` FOREIGN KEY (`pem_per_codigo`)
REFERENCES `tbpersona` (`per_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION;

ALTER TABLE `tbpersona_telefono`


ADD CONSTRAINT `fk_tel_perso` FOREIGN KEY (`pte_per_Codigo`)
REFERENCES `tbpersona` (`per_Codigo`) ON DELETE NO ACTION ON UPDATE
NO ACTION;

ALTER TABLE `tbruta`


ADD CONSTRAINT `fk_ruta_area` FOREIGN KEY (`rut_are_Codigo`)
REFERENCES `tbarea` (`are_Codigo`) ON DELETE NO ACTION ON UPDATE NO
ACTION,
ADD CONSTRAINT `fk_ruta_subti` FOREIGN KEY (`rut_dsu_Codigo`)
REFERENCES `tbdocumento_subtipo` (`dsu_Codigo`) ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `tbubigeo_distrito`


ADD CONSTRAINT `fk_dist_prov` FOREIGN KEY (`udi_upr_Codigo`)
REFERENCES `tbubigeo_provincia` (`upr_Codigo`) ON DELETE NO ACTION ON
UPDATE NO ACTION;

ALTER TABLE `tbubigeo_provincia`


ADD CONSTRAINT `fk_prov_depart` FOREIGN KEY (`upr_ude_Codigo`)
REFERENCES `tbubigeo_departamento` (`ude_Codigo`) ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `tbusuario`


ADD CONSTRAINT `ref_permiso` FOREIGN KEY (`usu_upe_Codigo`)
REFERENCES `tbusuario_permisos` (`upe_Codigo`),
ADD CONSTRAINT `ref_persona` FOREIGN KEY (`usu_per_Codigos`)
REFERENCES `tbpersona` (`per_Codigo`);

102
4.4.2. Codificación de las interfaces
 class
- conex.php
<?php
include ('config.php');
$conexion = new mysqli($bdhost, $bduser, $bdpass, $bdname);
mysql_set_charset('utf8');

if (mysqli_connect_error())
{
echo mysqli_connect_error();
}
?>

- config.php
<?php
$bdhost = 'localhost';
$bduser = 'root';
$bdpass = '123456';
$bdname = 'ucvchicl_sgd';
?>

 css
 inc
- header.php
<!DOCTYPE html>
<html>
<header>
<ul>
<li><a href=""><span class="icon-books"></span>
SGD</a>
<li class="menubar"><a class="bt-menu"><span
class="icon-menu3"></span></a>
</ul>
</header>
<nav class="menu">
<ul class="links">
<li><a href="perfil"><span class="icon-
profile"></span>Perfil</a></li>
<li><a href="tramite"><span class="icon-
stack"></span>Trámite</a></li>
<li><a href="digitalizacion"><span class="icon-file-
pdf"></span>Digitalización</a></li>
<li><a href="requisitos"><span class="icon-spell-
check"></span>Requisitos</a></li>
<li><a href="personas"><span class="icon-address-
book"></span>Personas</a></li>
<li class="submenu">
<a><span class="icon-
cog"></span>Mantenimiento<span class="caret icon-folder-plus"></span></a>

103
<ul class="children">
<li><a href="usuarios"><span class="icon-
users"></span>Usuarios</a></li>
<li><a href="areas"><span class="icon-
tree"></span>Áreas</a></li>
<li><a href="periodos">Periodos</a></li>
<li><a href="plantillas">Plantillas</a></li>
<li><a href="cargo"><span class="icon-
bookmarks"></span>Cargos</a></li>
</ul>
</li>
<li><a href="Ayuda"><span class="icon-
question"></span>Ayuda</a></li>
<li><a href=""><span class="icon-
cross"></span>Cerrar</a></li>
</ul>
</nav>
</html>

 module
- modIndex.php
<?php
if(isset($_POST["btnLogIngresar"]))
{
$usuNombre =strtoupper( $_POST["usuNombre"] );

$usuContrasena = $_POST["usuContrasena"];
$msg = "";

include ('../class/conex.php');

if($msg == "0")
{
header('Location: ../index.php?msg=0');
}
else if($msg == "1")
{
$consulta =
"
SELECT
usu_Codigo, usu_Digitalizacion, usu_Tramite,
usu_Requisito, usu_Persona, usu_Mantenimiento,
ppr_Abreviatura, per_Codigo, per_Nombres,
per_Apellidos, pca_Nombre,
are_Codigo, are_Abreviatura, are_Jefe,
are_Jerarquia,per_pdi_Codigo
FROM tbusuario usu
INNER JOIN tbpersona per ON usu.usu_per_Codigo =
per.per_Codigo

104
LEFT JOIN tbpersona_prefijo ppr ON
per.per_ppr_Codigo = ppr.ppr_Codigo
LEFT JOIN tbpersona_cargo pca ON
per.per_pca_Codigo = pca.pca_Codigo
INNER JOIN tbpersona_tipo pti ON per.per_pti_Codigo
= pti.pti_Codigo
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo
WHERE usu_Nombre = '". $usuNombre ."' and
usu_Contrasena = '". $usuContrasena ."' and par_Estado = '1'
";
$resultado = $conexion->query($consulta);
$nFila=$resultado->num_rows;
$registro=$resultado->fetch_object();

if($nFila==1)
{
session_start();
$_SESSION["usuCodigo"]=$registro->usu_Codigo;
$_SESSION["usuNombre"]=$usuNombre;
$_SESSION["usuContrasena"]=$usuContrasena;
$_SESSION["usuDigitalizacion"]=$registro-
>usu_Digitalizacion;
$_SESSION["usuTramite"]=$registro->usu_Tramite;
$_SESSION["usuRequisito"]=$registro-
>usu_Requisito;
$_SESSION["usuPersona"]=$registro->usu_Persona;
$_SESSION["usuMantenimiento"]=$registro-
>usu_Mantenimiento;

$_SESSION["pprAbreviatura"]=$registro-
>ppr_Abreviatura;
$_SESSION["perCodigo"]=$registro->per_Codigo;
$_SESSION["perNombres"]=$registro->per_Nombres;
$_SESSION["perApellidos"]=$registro->per_Apellidos;
$_SESSION["pcaNombre"]=$registro->pca_Nombre;
$_SESSION["pdi_Codigo"]=$registro-
>per_pdi_Codigo;

//DATOS DEL AREA PRINCIPAL


$_SESSION["areCodigo"]=$registro->are_Codigo;
$_SESSION["areAbreviatura"]=$registro-
>are_Abreviatura;
$_SESSION["areJefe"]=$registro->are_Jefe;
$_SESSION["areJerarquia"]=$registro->are_Jerarquia;

header('Location: ../inicio.php');
}

105
else if($nFila<>1)
{
header('Location: ../index.php?msg=1');
}
}
}
?> <?php
if(isset($_POST["btnLogIngresar"]))
{
$usuNombre =strtoupper( $_POST["usuNombre"] );

$usuContrasena = $_POST["usuContrasena"];
$msg = "";

include ('../class/conex.php');

if($msg == "0")
{
header('Location: ../index.php?msg=0');
}
else if($msg == "1")
{
$consulta =
"
SELECT
usu_Codigo, usu_Digitalizacion, usu_Tramite,
usu_Requisito, usu_Persona, usu_Mantenimiento,
ppr_Abreviatura, per_Codigo, per_Nombres,
per_Apellidos, pca_Nombre,
are_Codigo, are_Abreviatura, are_Jefe,
are_Jerarquia,per_pdi_Codigo
FROM tbusuario usu
INNER JOIN tbpersona per ON usu.usu_per_Codigo =
per.per_Codigo
LEFT JOIN tbpersona_prefijo ppr ON
per.per_ppr_Codigo = ppr.ppr_Codigo
LEFT JOIN tbpersona_cargo pca ON
per.per_pca_Codigo = pca.pca_Codigo
INNER JOIN tbpersona_tipo pti ON per.per_pti_Codigo
= pti.pti_Codigo
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo
WHERE usu_Nombre = '". $usuNombre ."' and
usu_Contrasena = '". $usuContrasena ."' and par_Estado = '1'
";
$resultado = $conexion->query($consulta);
$nFila=$resultado->num_rows;
$registro=$resultado->fetch_object();

106
if($nFila==1)
{
session_start();
$_SESSION["usuCodigo"]=$registro->usu_Codigo;
$_SESSION["usuNombre"]=$usuNombre;
$_SESSION["usuContrasena"]=$usuContrasena;
$_SESSION["usuDigitalizacion"]=$registro-
>usu_Digitalizacion;
$_SESSION["usuTramite"]=$registro->usu_Tramite;
$_SESSION["usuRequisito"]=$registro-
>usu_Requisito;
$_SESSION["usuPersona"]=$registro->usu_Persona;
$_SESSION["usuMantenimiento"]=$registro-
>usu_Mantenimiento;

$_SESSION["pprAbreviatura"]=$registro-
>ppr_Abreviatura;
$_SESSION["perCodigo"]=$registro->per_Codigo;
$_SESSION["perNombres"]=$registro->per_Nombres;
$_SESSION["perApellidos"]=$registro->per_Apellidos;
$_SESSION["pcaNombre"]=$registro->pca_Nombre;
$_SESSION["pdi_Codigo"]=$registro-
>per_pdi_Codigo;

//DATOS DEL AREA PRINCIPAL


$_SESSION["areCodigo"]=$registro->are_Codigo;
$_SESSION["areAbreviatura"]=$registro-
>are_Abreviatura;
$_SESSION["areJefe"]=$registro->are_Jefe;
$_SESSION["areJerarquia"]=$registro->are_Jerarquia;

header('Location: ../inicio.php');
}
else if($nFila<>1)
{
header('Location: ../index.php?msg=1');
}
}
}
?>

- modMantenimiento
<?php
session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];
$perCodigo=$_SESSION['perCodigo'];
$perParCodigo=$_SESSION["perParCodigo"];

107
include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

$xajax=new xajax();
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

/////////////////////////MANTEMIENTO DE PLANTILLA
/////////////////////////////////////////////////////
function Sec_slc_mandoc(){

global $conexion;

$consult2 = "SELECT * FROM tbdocumentotipo";


$result2 = $conexion->query($consult2);

$tbDocumento = "
<select id='slc_dplDocumentoTipo'
name='slc_dplDocumentoTipo' class='slc'
onChange='xajax_slcMandocPlantilla(this.value)'>
<option value=''>SELECCIONAR</option>";
while($reg2=$result2->fetch_object())
{

$idDocumentoTipo=$reg2->dti_Codigo;
$txtDocTipo=$reg2->dti_Nombre;
$tbDocumento.=
"<option
value='$idDocumentoTipo'>".htmlentities($txtDocTipo)."</option>";

}
$tbDocumento.="</select>";

$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("Sec_slc_mandoc","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");

//$objResp->assign("SecMantPlantDatos1","style.display","");
return $objResp;
}

function AgregarDocTipo($FrmActualizarPlantilla){

108
$tbDocumento="
<ul >
<li >TIPO DOCUMENTO EXTERNO</li>
<li >
<input type='checkbox'name='chk' id='chk'
value='EXTERNO' />
</li>
</ul>
<ul >
<li>TIPO DOCUMENTO INTERNO</li>
<li>
<input type='checkbox'name='chk1' id='chk1'
value='INTERNO' />
</li>
</ul>
<ul >
<li >NOMBRE TIPO DOCUMENTO</li>
<li >
<input name='txt_dplNombreDocTipo'
id='txt_dplNombreDocTipo' type='text' />
</li>
</ul>
<ul >
<li >
<button type='button'
name='btnModIngresoModificar' id='btnRequisitoGEI'
onClick='GuardarDocTipo()'>GUARDAR</button>
</li>
<li >
<button type='button'
name='btnModIngresoModificar' id='btnRequisitoGEI'
onClick='xajax_cancelDocTipo()'>CANCELAR</button>
</li>
</ul>";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos1","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideAccionDocTipo","value","GUARDAR");

return $objResp;

function cancelDocTipo(){

109
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("SecMantPlantDatos1","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");
return $objResp;

function ModificarDocTipo($FrmActualizarPlantilla){
global $conexion;

$id=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

if($id==""){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();

return $objResp;
}

$consult2 = "SELECT * FROM tbdocumentotipo where


dti_Codigo='$id'";
$result2 = $conexion->query($consult2);
$reg2=$result2->fetch_object();
$textDocPlantilla=htmlentities($reg2->dti_Nombre);
$Externo=$reg2->dti_Externo;
$Interno=$reg2->dti_Interno;

$tbDocumento="

<ul >
<li >TIPO DOCUMENTO EXTERNO</li>
<li >";
if($Externo=="SI"){
$tbDocumento.="<input
type='checkbox'name='chk' id='chk' value='EXTERNO' class=''
checked='CHECKED'/>";
}else {
$tbDocumento.="<input
type='checkbox'name='chk' id='chk' value='EXTERNO' class='' />";
}

$tbDocumento.="
</li>

110
</ul>

<ul >
<li >TIPO DOCUMENTO INTERNO</li>
<li >";

if($Interno=="SI"){
$tbDocumento.="<input
type='checkbox'name='chk1' id='chk1' value='INTERNO' class=''
checked='CHECKED'/>";
}else {
$tbDocumento.="<input
type='checkbox'name='chk1' id='chk1' value='INTERNO' class=''/>";
}

$tbDocumento.="
</li>
</ul>

<ul >
<li >NOMBRE TIPO DOCUMENTO</li>
<li >
<input name='txt_dplNombreDocTipo' id='txt_dplNombreDocTipo'
value='$textDocPlantilla' type='text' />
</li>
</ul>
<ul >
<li >
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' onClick='GuardarDocTipo()'>MODIFICAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' onClick='xajax_cancelDocTipo()'>CANCELAR</button>
</li>
</ul>";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos1","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideAccionDocTipo","value","MODIFICAR");

return $objResp;
}

function GuardarDocTipo($FrmActualizarPlantilla){

global $conexion;

111
$HideIdDocumentoTipo=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

$HideAccionDocTipo=$FrmActualizarPlantilla['HideAccionDocTipo'];

$txt_dplNombreDocTipo=$FrmActualizarPlantilla['txt_dplNombreDocTipo'];

$Externo=$FrmActualizarPlantilla['chk'];
$Interno=$FrmActualizarPlantilla['chk1'];

if($Externo==""){

$idExterno="NO";
}else{
$idExterno="SI";
}

if($Interno==""){

$idInterno="NO";
}else{
$idInterno="SI";
}

$consult1="SELECT dti_Codigo , LEFT( dti_Codigo, 3 ) AS Nom,


RIGHT( dti_Codigo, 3 ) AS Num
FROM tbdocumentotipo ORDER BY
dti_Codigo DESC LIMIT 0 , 1";
$result1=$conexion->query($consult1) ;
$reg1=$result1->fetch_object();
$nom1=$reg1->Nom;
$num1=$reg1->Num;
$num1=$num1+1;
$num2=$num1+1;

if($num1<10){
$nombre1=$nom1."00".$num1;

}else if($num1<100 && $num1>=10){


$nombre1=$nom1."0".$num1;

}if($num1<1000 && $num1>=100){


$nombre1=$nom1."".$num1;

if($nom1==""){

112
$nombre1="DTI001";

if($HideAccionDocTipo=="GUARDAR"){

$consult5="insert into tbdocumentotipo


(dti_Codigo,dti_Nombre,dti_Interno,dti_Externo)

values('$nombre1','$txt_dplNombreDocTipo','$idInterno','$idExterno')";
$conexion->query($consult5);

$objResp = new xajaxResponse();


$objResp->assign("SecMantPlantDatos1","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideIdDocumentoTipo","value","");
$objResp->assign("HideAccionDocTipo","value","");
$objResp->alert("Se guardo correctamente");
$objResp->script('xajax_Sec_slc_mandoc()');

return $objResp;

}else if($HideAccionDocTipo=="MODIFICAR"){

$consult2="update tbdocumentotipo set


dti_Nombre='$txt_dplNombreDocTipo',dti_Interno='$idInterno',dti_Externo='$idExt
erno' where dti_Codigo='$HideIdDocumentoTipo'";
$conexion->query($consult2);

$objResp = new xajaxResponse();


$objResp-
>assign("SecMantPlantDatos1","innerHTML","");
$objResp-
>assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("SecMantPlantDatos2","style.display","none");
$objResp-
>assign("HideIdDocumentoTipo","value","");
$objResp-
>assign("HideAccionDocTipo","value","");
$objResp->alert("Se actualizo correctamente");

$objResp->script('xajax_Sec_slc_mandoc()');

113
return $objResp;

function slcMandocPlantilla($idManPlantilla){

global $conexion;

$consult2 = "SELECT * FROM tbdocumentoplantilla where


dpl_dti_Codigo='$idManPlantilla'";
$result2 = $conexion->query($consult2);

$tbDocumentoPlantilla = "<select id='slc_dplDocumentoTipo'


name='slc_dplDocumentoTipo' class='slc'
onChange='xajax_HideslcMandocPlantilla(this.value)'>
<option value=''>SELECCIONAR</option>";

while($reg2=$result2->fetch_object())
{

$tbDocumentoPlantilla.=
"<option value='$reg2-
>dpl_Codigo'>".htmlentities($reg2->dpl_Nombre)."</option>";

}
$tbDocumentoPlantilla.="</select>";

$tbDocumentoPlantilla=utf8_encode($tbDocumentoPlantilla);
$objResp = new xajaxResponse();
$objResp-
>assign("Sec_slc_mandplDocumentoTipo","innerHTML",$tbDocumentoPlantilla);
$objResp->assign("HideIdDocumentoTipo","value",$idManPlantilla);

return $objResp;

114
}

function HideslcMandocPlantilla($idManPlantilla){

global $conexion;

$objResp = new xajaxResponse();


$objResp-
>assign("HideIdDocumentoTipoPlantilla","value",$idManPlantilla);

return $objResp;
}

function AgregarDocTipoPlantilla($FrmActualizarPlantilla){

$tbDocumento="

<ul >
<li >NOMBRE</li>
<li >
<input name='txt_dplNombre'
id='txt_dplNombre' name='txt_dplNombre' type='text' maxlength='150' class='npt'/>
</li>
</ul>
<ul >
<li >LOGO</li>
<li >
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >AÑO</li>
<li >
<input name='rdo_dplAno' id='rdo_dplAno'
name='rdo_dplAno' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplAno' id='rdo_dplAno'
name='rdo_dplAno' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >TITULO</li>
<li >

115
<input name='rdo_dplTitulo' id='rdo_dplTitulo'
name='rdo_dplTitulo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplTitulo' id='rdo_dplTitulo'
name='rdo_dplTitulo' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ARRIBA</li>
<li >
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >DESTINATARIO</li>
<li >
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >REMITENTE - ARRIBA</li>
<li >
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >ASUNTO</li>
<li >
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >FECHA</li>

116
<li >
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >CONTENIDO</li>
<li >
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ABAJO</li>
<li >
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >ATENTAMENTE</li>
<li >
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'/>NO
</li>
</ul>
<ul>
<li >REMITENTE - ABAJO</li>
<li >
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >

117
<li >ADJUNTO</li>
<li >
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >

<button type='button' name='btn_dplGuardar'


id='btn_dplGuardar' class='btn'
onClick='GuardarDocTipoPlantilla()'>GUARDAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' class='btn'
onClick='xajax_cancelDocTipoPlantilla()'>CANCELAR</button>

</li>
</ul>

";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos2","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos2","style.display","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","GUARDAR");

return $objResp;

function cancelDocTipoPlantilla(){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("SecMantPlantDatos2","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");
return $objResp;

118
}

function ModificarDocTipoPlantilla($FrmActualizarPlantilla){
global $conexion;

$id=$FrmActualizarPlantilla['HideIdDocumentoTipoPlantilla'];

if($id==""){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();

return $objResp;
}

$consult2 = "SELECT * FROM tbdocumentoplantilla where


dpl_Codigo='$id'";
$result2 = $conexion->query($consult2);
$reg2=$result2->fetch_object();
$dpl_Nombre=htmlentities($reg2->dpl_Nombre);

$rdo_dplLogo=$reg2->dpl_Logo;
$rdo_dplAno=$reg2->dpl_Ano;

$rdo_dplTitulo=$reg2->dpl_Titulo;
$rdo_dplLugarFechaArriba=$reg2->dpl_LugarFecha_Arriba;
$rdo_dplDestinatario=$reg2->dpl_Destinatario;
$rdo_dplRemitenteArriba=$reg2->dpl_Remitente_Arriba;
$rdo_dplAsunto=$reg2->dpl_Asunto;
$rdo_dplFecha=$reg2->dpl_Fecha;
$rdo_dplContenido=$reg2->dpl_Contenido;
$rdo_dplLugarFechaAbajo=$reg2->dpl_LugarFecha_Abajo;
$rdo_dplAtentamente=$reg2->dpl_Atentamente;
$rdo_dplRemitenteAbajo=$reg2->dpl_Remitente_Abajo;
$rdo_dplAdjunto=$reg2->dpl_Adjunto;

$tbDocumento="

<ul >
<li >NOMBRE</li>
<li >

119
<input name='txt_dplNombre'
id='txt_dplNombre' name='txt_dplNombre' value='$dpl_Nombre' type='text'
maxlength='150' class='npt'/>
</li>
</ul>
<ul >
<li >LOGO</li>
<li >
";

if($rdo_dplLogo=="SI"){
$tbDocumento.="<input name='rdo_dplLogo'
id='rdo_dplLogo' name='rdo_dplLogo' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLogo' id='rdo_dplLogo' name='rdo_dplLogo' type='radio' value='SI'
/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >AÑO</li>
<li >

";

if($rdo_dplAno=="SI"){
$tbDocumento.="<input name='rdo_dplAno'
id='rdo_dplAno' name='rdo_dplAno' type='radio' value='SI' checked='CHECKED'
/>SI
<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='NO'
/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='SI' />SI
<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

120
</li>
</ul>
<ul >
<li >TITULO</li>
<li > ";

if($rdo_dplTitulo=="SI"){
$tbDocumento.="<input name='rdo_dplTitulo'
id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio' value='SI' checked='CHECKED'
/>SI
<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio'
value='NO' />NO";
}else {
$tbDocumento.="<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio' value='SI'
/>SI
<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio'
value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ARRIBA</li>
<li > ";

if($rdo_dplLugarFechaArriba=="SI"){
$tbDocumento.="<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLugarFechaArriba' id='rdo_dplLugarFechaArriba'
name='rdo_dplLugarFechaArriba' type='radio' value='SI' />SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO' checked='CHECKED'/>NO";
}

121
$tbDocumento.="

</li>
</ul>
<ul >
<li >DESTINATARIO</li>
<li > ";

if($rdo_dplDestinatario=="SI"){
$tbDocumento.="<input
name='rdo_dplDestinatario' id='rdo_dplDestinatario' name='rdo_dplDestinatario'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'/>NO

";
}else {
$tbDocumento.="<input
name='rdo_dplDestinatario' id='rdo_dplDestinatario' name='rdo_dplDestinatario'
type='radio' value='SI' />SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >REMITENTE - ARRIBA</li>
<li > ";

if($rdo_dplRemitenteArriba=="SI"){
$tbDocumento.="<input
name='rdo_dplRemitenteArriba' id='rdo_dplRemitenteArriba'
name='rdo_dplRemitenteArriba' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio'
value='NO'/>NO";
}else {

122
$tbDocumento.="<input
name='rdo_dplRemitenteArriba' id='rdo_dplRemitenteArriba'
name='rdo_dplRemitenteArriba' type='radio' value='SI' />SI
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >ASUNTO</li>
<li > ";

if($rdo_dplAsunto=="SI"){
$tbDocumento.="<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAsunto' id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio'
value='SI' />SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >FECHA</li>
<li > ";

if($rdo_dplFecha=="SI"){
$tbDocumento.="<input name='rdo_dplFecha'
id='rdo_dplFecha' name='rdo_dplFecha' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplFecha' id='rdo_dplFecha' name='rdo_dplFecha' type='radio' value='SI'
/>SI

123
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >CONTENIDO</li>
<li > ";

if($rdo_dplContenido=="SI"){
$tbDocumento.="<input
name='rdo_dplContenido' id='rdo_dplContenido' name='rdo_dplContenido'
type='radio' value='SI' />SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplContenido' id='rdo_dplContenido' name='rdo_dplContenido'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ABAJO</li>
<li > ";

if($rdo_dplLugarFechaAbajo=="SI"){
$tbDocumento.="<input
name='rdo_dplLugarFechaAbajo' id='rdo_dplLugarFechaAbajo'
name='rdo_dplLugarFechaAbajo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLugarFechaAbajo' id='rdo_dplLugarFechaAbajo'
name='rdo_dplLugarFechaAbajo' type='radio' value='SI' />SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO' checked='CHECKED'/>NO";

124
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >ATENTAMENTE</li>
<li > ";

if($rdo_dplAtentamente=="SI"){
$tbDocumento.="<input
name='rdo_dplAtentamente' id='rdo_dplAtentamente' name='rdo_dplAtentamente'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAtentamente' id='rdo_dplAtentamente' name='rdo_dplAtentamente'
type='radio' value='SI' />SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >REMITENTE - ABAJO</li>
<li > ";

if($rdo_dplRemitenteAbajo=="SI"){
$tbDocumento.="<input
name='rdo_dplRemitenteAbajo' id='rdo_dplRemitenteAbajo'
name='rdo_dplRemitenteAbajo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplRemitenteAbajo' id='rdo_dplRemitenteAbajo'
name='rdo_dplRemitenteAbajo' type='radio' value='SI' />SI

125
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul class='columna'>
<li class='filaEtiqueta'>ADJUNTO</li>
<li class='filaDato'> ";

if($rdo_dplAdjunto=="SI"){
$tbDocumento.="<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAdjunto' id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio'
value='SI' />SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>

<button type='button' name='btn_dplGuardar'


id='btn_dplGuardar' class='btn'
onClick='GuardarDocTipoPlantilla()'>MODIFICAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' class='btn'
onClick='xajax_cancelDocTipoPlantilla()'>CANCELAR</button>

</li>
</ul>

";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos2","innerHTML",$tbDocumento);

126
$objResp->assign("SecMantPlantDatos2","style.display","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","MODIFICAR");

return $objResp;
}

function GuardarDocTipoPlantilla($FrmActualizarPlantilla){

global $conexion;

$HideIdDocumentoTipo=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

$HideIdDocumentoTipoPlantilla=$FrmActualizarPlantilla['HideIdDocumento
TipoPlantilla'];

$HideAccionDocTipo=$FrmActualizarPlantilla['HideAccionDocTipoPlantilla'
];

$txt_dplNombre=$FrmActualizarPlantilla['txt_dplNombre'];

$rdo_dplLogo=$FrmActualizarPlantilla['rdo_dplLogo'];
$rdo_dplAno=$FrmActualizarPlantilla['rdo_dplAno'];
$rdo_dplTitulo=$FrmActualizarPlantilla['rdo_dplTitulo'];

$rdo_dplLugarFechaArriba=$FrmActualizarPlantilla['rdo_dplLugarFechaArri
ba'];
$rdo_dplDestinatario=$FrmActualizarPlantilla['rdo_dplDestinatario'];

$rdo_dplRemitenteArriba=$FrmActualizarPlantilla['rdo_dplRemitenteArriba']
;
$rdo_dplAsunto=$FrmActualizarPlantilla['rdo_dplAsunto'];
$rdo_dplFecha=$FrmActualizarPlantilla['rdo_dplFecha'];
$rdo_dplContenido=$FrmActualizarPlantilla['rdo_dplContenido'];

$rdo_dplLugarFechaAbajo=$FrmActualizarPlantilla['rdo_dplLugarFechaAbaj
o'];
$rdo_dplAtentamente=$FrmActualizarPlantilla['rdo_dplAtentamente'];

$rdo_dplRemitenteAbajo=$FrmActualizarPlantilla['rdo_dplRemitenteAbajo'];
$rdo_dplAdjunto=$FrmActualizarPlantilla['rdo_dplAdjunto'];

127
$consult1="SELECT dpl_Codigo , LEFT( dpl_Codigo, 3 ) AS Nom,
RIGHT( dpl_Codigo, 7 ) AS Num
FROM tbdocumentoplantilla ORDER BY
dpl_Codigo DESC LIMIT 0 , 1";
$result1=$conexion->query($consult1) ;
$reg1=$result1->fetch_object();
$nom1=$reg1->Nom;
$num1=$reg1->Num;
$num1=$num1+1;

if($num1<10){
$nombre1=$nom1."000000".$num1;

}
if($num1<100 && $num1>=10){
$nombre1=$nom1."00000".$num1;

}
if($num1<1000 && $num1>=100){
$nombre1=$nom1."0000".$num1;

}
if($num1<10000 && $num1>=1000){
$nombre1=$nom1."000".$num1;

}
if($num1<100000 && $num1>=10000){
$nombre1=$nom1."00".$num1;

}
if($num1<1000000 && $num1>=100000){
$nombre1=$nom1."0".$num1;

}if($nom1==""){
$nombre1="DPL0000001";
}

if($HideAccionDocTipo=="GUARDAR"){

$consult5="insert into tbdocumentoplantilla (


dpl_Codigo,
dpl_dti_Codigo,
dpl_Nombre,
dpl_Logo,
dpl_Ano,
dpl_Titulo,
dpl_LugarFecha_Arriba,

128
dpl_Destinatario,
dpl_Remitente_Arriba,
dpl_Asunto,
dpl_Fecha,
dpl_Contenido,
dpl_LugarFecha_Abajo,
dpl_Atentamente,
dpl_Remitente_Abajo,
dpl_Adjunto)
values(
'$nombre1',
'$HideIdDocumentoTipo',
'$txt_dplNombre',
'$rdo_dplLogo',
'$rdo_dplAno',
'$rdo_dplTitulo',
'$rdo_dplLugarFechaArriba',
'$rdo_dplDestinatario',
'$rdo_dplRemitenteArriba',
'$rdo_dplAsunto',
'$rdo_dplFecha',
'$rdo_dplContenido',
'$rdo_dplLugarFechaAbajo',
'$rdo_dplAtentamente',
'$rdo_dplRemitenteAbajo',
'$rdo_dplAdjunto')";
$conexion->query($consult5);

$objResp = new xajaxResponse();


$objResp->assign("SecMantPlantDatos2","innerHTML","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("HideIdDocumentoTipo","value","");
$objResp->assign("HideAccionDocTipoPlantilla","value","");
$objResp->alert("Se guardo correctamente");
$objResp-
>script('xajax_slcMandocPlantilla("'.$HideIdDocumentoTipo.'")');

return $objResp;

}else if($HideAccionDocTipo=="MODIFICAR"){

$consult2="update tbdocumentoplantilla set


dpl_dti_Codigo='$HideIdDocumentoTipo',
dpl_Nombre='$txt_dplNombre',
dpl_Logo='$rdo_dplLogo',
dpl_Ano='$rdo_dplAno',

129
dpl_Titulo='$rdo_dplTitulo',
dpl_LugarFecha_Arriba='$rdo_dplLugarFechaArriba',
dpl_Destinatario='$rdo_dplDestinatario',
dpl_Remitente_Arriba='$rdo_dplRemitenteArriba',
dpl_Asunto='$rdo_dplAsunto',
dpl_Fecha='$rdo_dplFecha',
dpl_Contenido='$rdo_dplContenido',
dpl_LugarFecha_Abajo='$rdo_dplLugarFechaAbajo',
dpl_Atentamente='$rdo_dplAtentamente',
dpl_Remitente_Abajo='$rdo_dplRemitenteAbajo',
dpl_Adjunto='$rdo_dplAdjunto'
where dpl_Codigo='$HideIdDocumentoTipoPlantilla'";
$conexion->query($consult2);

$objResp = new xajaxResponse();


$objResp-
>assign("SecMantPlantDatos2","innerHTML","");
$objResp-
>assign("SecMantPlantDatos2","style.display","none");
$objResp-
>assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideIdDocumentoTipo","value","");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","");
$objResp->alert("Se actualizo correctamente");

$objResp-
>script('xajax_slcMandocPlantilla("'.$HideIdDocumentoTipo.'")');

return $objResp;

130
/////////////////////////////MANTENIMIENTO DE USUARIO
///////////////////////////////////////////////////

function MantUsuario($FrmManUsuarioBus, $page=1)


{
//De donde saco los usuarios si no todos tienen usuarios
global $conexion;

$slcMantUsuBuscar=$FrmManUsuarioBus['slcMantUsuBuscar'];

$txtMantenimientoUsuarioBuscar=$FrmManUsuarioBus['txtMantUsuBuscar']
;

$cantFila=5;

$consult = "select * from tbusuario tbu


inner join tbpersona tbp on tbu.usu_per_Codigo=tbp.per_Codigo
inner join tbpersona_area tba on tbp.per_par_Codigo=tba.par_Codigo
where $slcMantUsuBuscar LIKE
'%$txtMantenimientoUsuarioBuscar%' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult = $consult . "limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

131
$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"

<ul class='filaTablaRes'>
<a href='#Dos'
onclick='xajax_SolucionarManUsu((\"$reg->usu_Codigo\"))'>

<li>$reg->usu_Codigo
</li>
<li>$reg->per_Nombres
$reg->per_Apellidos</li>
<li>$reg-
>usu_Nombre</li>
<li>$reg-
>are_Nombre</li>
</a>
</ul>

";
}

$paginas.="

<li >
<a href='#Dos' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$ii)'><i
mg src='../img/inicio.png'/></a>
<a href='#Dos' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$imenos
)'><img src='../img/atras.png'/></a>

132
<a href='#Dos' id='aPerAdelante' name='aPerAdelante'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$imas)'
><img src='../img/adelante.png'/></a>
<a href='#Dos' id='aPerFin' name='aPerFin'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$if)'><i
mg src='../img/fin.png'/></a>
<a href='#Dos' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantUsuarioNuevo()'><img src='../img/add.png'/></a>
<label
>CANTIDAD DE REGISTROS: $numFila</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}
else
{
$tbResultado.=
"

<ul >
<li >No se encuentran resultados para su busqueda</li>
<li >No se encuentran resultados para su busqueda</li>
<li >No se encuentran resultados para su busqueda</li>
</ul>

";
$paginas.="

<li >
<a href='#' id=''
name='aPerInicio'><img src='img/inicio.png'/></a>
<a href='#' id=''
name='aPerAtras'><img src='img/atras.png'/></a>
<a href='#' id=''
name='aPerAdelante'><img src='img/adelante.png'/></a>
<a href='#' id=''
name='aPerFin'><img src='img/fin.png'/></a>
<a href='#'
id='aPerAgregar' name='aPerAgregar' onClick=''><img src='img/add.png'/></a>
<label
class='lblCantidadRegistros'>CANTIDAD DE REGISTROS: $numFila</label>
</li>
";
}

133
$objResp = new xajaxResponse();
$objResp->assign("SecMantBus","innerHTML",$tbResultado);
$objResp->assign("SecMantBusPie","innerHTML",$paginas);

$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("stnManUsuarioBuscar","style.display","none");
//$objResp->assign("txt_GestNombre","value","");
//$objResp->assign("SgdPiePagina","style.display","none");

return $objResp;

function SolucionarManUsu($idCodUsu)
{
global $conexion;

$consult = "select * from tbusuario tbu


inner join tbpersona tbp on tbu.usu_per_Codigo=tbp.per_Codigo
inner join tbpersona_area tba on tbp.per_par_Codigo=tba.par_Codigo
where usu_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();
$idPer=$reg->per_Codigo;
$HideUsuAutorizacionCodi=$reg->usu_aut_Codigo;
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$txtUsuCodigo=$reg->usu_Codigo;
$txtUsuNombre=$reg->usu_Nombre;

134
$aut_PersonaV=$reg->usu_Persona;
$aut_DigitalizacionV=$reg->usu_Digitalizacion;
$aut_RequisitoV=$reg->usu_Requisito;
$aut_MantenimientoV=$reg->usu_Mantenimiento;
$aut_DocumentoV=$reg->usu_Tramite;

$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuPersonas'>";

if($aut_PersonaV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxPersonas' name='cbxPersonas' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxPersonas' name='cbxPersonas' value='SI' />";
}

$SecManUsuarioCheck.="<li class='coluMantUsuAll'>";

$SecManUsuarioCheck.="</li>
<li >";

if($aut_DocumentoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxTramite' name='cbxTramite' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxTramite' name='cbxTramite' value='SI' />";
}

////////

$SecManUsuarioCheck.="</li>
<li >";
if($aut_DigitalizacionV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxDigitalizacion' name='cbxDigitalizacion' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxDigitalizacion' name='cbxDigitalizacion' value='SI' />";
}

135
$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuRequisitos'>";

if($aut_RequisitoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxRequisitos' name='cbxRequisitos' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxRequisitos' name='cbxRequisitos' value='SI' />";
}

$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuMantenimiento'>";

if($aut_MantenimientoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxMantenimiento' name='cbxMantenimiento' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxMantenimiento' name='cbxMantenimiento' value='SI' />";
}

$SecManUsuarioCheck.="</li>";

$stnManUsuBoton="<button onClick='SelecManUsuarioActualizar();
return false;'>ACTUALIZAR</button>";

$tbTipoDoc=utf8_encode($tbTipoDoc);
$tbTipoDocPlantilla=utf8_encode($tbTipoDocPlantilla);
$rbGestionarDoc=utf8_encode($rbGestionarDoc);

136
$objResp=new xajaxResponse();
$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);

$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);

$objResp->assign("HideUsuAutorizacionCodi","value","");
$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("stnManUsuarioBuscar","style.display","none");

$objResp->assign("HideUsuPersonaCodi","value",$idPer);
$objResp-
>assign("txtUsuPersona","value",utf8_encode($txtUsuPersona));
$objResp-
>assign("txtUsuCodigo","value",utf8_encode($txtUsuCodigo));
$objResp-
>assign("txtUsuNombre","value",utf8_encode($txtUsuNombre));
$objResp-
>assign("HideUsuAutorizacionCodi","value",$HideUsuAutorizacionCodi);

$objResp->addEvent("stnManUsuPersona", 'onClick',"");
$objResp->addEvent("txtUsuPersona", 'onKeyUp',"");
//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');

return $objResp;
}

function MantUsuarioNuevo()
{
global $conexion;

$consult="SELECT usu_Codigo , LEFT( usu_Codigo, 3 ) AS Nom,


RIGHT( usu_Codigo, 7 ) AS Num
FROM tbusuario ORDER BY usu_Codigo
DESC LIMIT 0 , 1";

137
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<a href='#Dos'><button class='btn'


onClick='SelecManUsuarioGuardar(); return false;'>GRABAR</button></a>";

$objResp=new xajaxResponse();

$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("HideUsuAutorizacionCodi","value","");

$objResp->assign("txtUsuCodigo","value",$nombre);
$objResp->addEvent("stnManUsuPersona",
'onClick',"xajax_ManUsuPersona(xajax.getFormValues(\"fmrManUsuDatos\"),1)");
$objResp->addEvent("txtUsuPersona",
'onKeyUp',"ManUsuPersona()");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);

//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

138
function ManUsuPersona($fmrManUsuDatos,$page=1)
{
global $conexion;

$txtUsuPersona=$fmrManUsuDatos['txtUsuPersona'];

if($txtUsuPersona==""){
$objResp = new xajaxResponse();
$objResp-
>assign("stnManUsuarioBuscar","style.display","none");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("HideUsuPersonaCodi","value","");
return $objResp;
}

$cantFila=5;

$consult = "select * from tbpersona tbp


left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' and usu_Codigo IS NULL";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="select * from tbpersona tbp
left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' and usu_Codigo IS NULL limit
$iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

139
if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"
<a href='#Dos'
onClick='xajax_ManUsuSelecPersona((\"$reg->per_Codigo\"))'>
<ul >

<li >$reg->per_DNI</li>

<li >$reg->per_Apellidos $reg->per_Nombres</li>

</ul>
</a>
";
}

$tbResultado=utf8_encode($tbResultado);

}
else
{
$tbResultado.=
"
<a href='#Dos' onClick=''>
<ul >
<li >No se
encuentran resultados para su busqueda</li>
<li >No se
encuentran resultados para su busqueda</li>
</ul>
</a>
";

140
}

$objResp = new xajaxResponse();


$objResp->assign("stnManUsuarioBuscar","style.display","");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML",$tbResultado);
return $objResp;

function ManUsuSelecPersona($idPer)
{
global $conexion;
$consult = "select *, LEFT( per_Nombres, 1 ) AS Nom from tbpersona
where per_Codigo='$idPer' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$reg=$result->fetch_object();
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$usuarioNom=$reg->Nom;

$NomParte=$reg->per_Apellidos;

$partes=explode(' ',$NomParte);
$cadena1=$partes[0];

$usuariofinal=$usuarioNom."".$cadena1;

$objResp = new xajaxResponse();


$objResp->assign("stnManUsuarioBuscar","style.display","");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML",$tbResultado);

$objResp->assign("txtUsuPersona","value",$txtUsuPersona);
$objResp->assign("txtUsuNombre","value",$usuariofinal);

$objResp->assign("HideUsuPersonaCodi","value",$idPer);

$objResp->assign("stnManUsuarioBuscar","style.display","none");

141
return $objResp;

function SelecManUsuarioGuardar($fmrManUsuDatos){

global $conexion;

$HideUsuPersonaCodi=$fmrManUsuDatos['HideUsuPersonaCodi'];
$txtUsuCodigo=$fmrManUsuDatos['txtUsuCodigo'];
$txtUsuNombre=$fmrManUsuDatos['txtUsuNombre'];
$txtUsuContrasena=$fmrManUsuDatos['txtUsuContrasena'];
$txtUsuContrasenaR=$fmrManUsuDatos['txtUsuContrasenaR'];

if($HideUsuPersonaCodi==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione una persona");
return $objResp;
}

if($txtUsuCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Codigo No valido");
return $objResp;
}

if($txtUsuNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Usuario No valido");
return $objResp;
}

if($txtUsuContrasena<>$txtUsuContrasenaR){
$objResp = new xajaxResponse();
$objResp->alert("Las contraseñas no
coinciden");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
return $objResp;

142
}

$cbxProfile=$fmrManUsuDatos['cbxProfile'];
$cbxPersonas=$fmrManUsuDatos['cbxPersonas'];
$cbxTramite=$fmrManUsuDatos['cbxTramite'];
$cbxDigitalizacion=$fmrManUsuDatos['cbxDigitalizacion'];
$cbxRequisitos=$fmrManUsuDatos['cbxRequisitos'];
$cbxMantenimiento=$fmrManUsuDatos['cbxMantenimiento'];

if($cbxPersonas==""){
$cbxPersonas="NO";
}
if($cbxTramite==""){
$cbxTramite="NO";
}
if($cbxDigitalizacion==""){
$cbxDigitalizacion="NO";
}
if($cbxRequisitos==""){
$cbxRequisitos="NO";
}
if($cbxMantenimiento==""){
$cbxMantenimiento="NO";
}

//strtoupper
//strtolower

$txtUsuNombre=strtoupper($txtUsuNombre);

$consult1="insert into tbusuario


(usu_Codigo,
usu_per_Codigo,
usu_Nombre,
usu_Contrasena,
usu_Digitalizacion,
usu_Tramite,
usu_Requisito,
usu_Persona,

143
usu_Mantenimiento)
values('$txtUsuCodigo',
'$HideUsuPersonaCodi',
'$txtUsuNombre',
'$txtUsuContrasena',
'$cbxDigitalizacion',
'$cbxTramite',
'$cbxRequisitos',
'$cbxPersonas',
'$cbxMantenimiento')";
$conexion->query($consult1);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se agrego usuario con
EXITO");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
$objResp-
>assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);
$objResp->script('MantUsuario();');

return $objResp;

}
function SelecManUsuarioActualizar($fmrManUsuDatos){

global $conexion;

$HideUsuPersonaCodi=$fmrManUsuDatos['HideUsuPersonaCodi'];

$HideUsuAutorizacionCodi=$fmrManUsuDatos['HideUsuAutorizacionCodi'];
$txtUsuCodigo=$fmrManUsuDatos['txtUsuCodigo'];
$txtUsuNombre=$fmrManUsuDatos['txtUsuNombre'];
$txtUsuContrasena=$fmrManUsuDatos['txtUsuContrasena'];

144
$txtUsuContrasenaR=$fmrManUsuDatos['txtUsuContrasenaR'];

if($HideUsuPersonaCodi==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione una persona");
return $objResp;
}

if($txtUsuCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Codigo No valido");
return $objResp;
}

if($txtUsuNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Usuario No valido");
return $objResp;
}

if($txtUsuContrasena<>$txtUsuContrasenaR){
$objResp = new xajaxResponse();
$objResp->alert("Las contraseñas no
coinciden");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
return $objResp;
}

$cbxProfile=$fmrManUsuDatos['cbxProfile'];
$cbxPersonas=$fmrManUsuDatos['cbxPersonas'];
$cbxTramite=$fmrManUsuDatos['cbxTramite'];
$cbxDigitalizacion=$fmrManUsuDatos['cbxDigitalizacion'];
$cbxRequisitos=$fmrManUsuDatos['cbxRequisitos'];
$cbxMantenimiento=$fmrManUsuDatos['cbxMantenimiento'];

if($cbxProfile==""){
$cbxProfile="NO";
}

145
if($cbxPersonas==""){
$cbxPersonas="NO";
}
if($cbxTramite==""){
$cbxTramite="NO";
}
if($cbxDigitalizacion==""){
$cbxDigitalizacion="NO";
}
if($cbxRequisitos==""){
$cbxRequisitos="NO";
}
if($cbxMantenimiento==""){
$cbxMantenimiento="NO";
}

$consult1=" update tbusuario set


usu_Nombre='$txtUsuNombre',
usu_Contrasena='$txtUsuContrasena',
usu_Digitalizacion='$cbxDigitalizacion',
usu_Tramite='$cbxTramite',
usu_Requisito='$cbxRequisitos',
usu_Persona='$cbxPersonas',
usu_Mantenimiento='$cbxMantenimiento'
where usu_Codigo='$txtUsuCodigo'";
$conexion->query($consult1);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se actualizo usuario con
EXITO");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
$objResp-
>assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);
$objResp->script('MantUsuario();');

return $objResp;

146
}

////////////////////////////////PERIODOOOOOOOOOOOOOS///////////////////////////////////////

function MantPeriodo($fmrManUsuPeriodo,$page=1)
{
global $conexion;

$cantFila=15;
$consult = "SELECT *FROM tbperiodo
ORDER BY prd_Nombre DESC";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="SELECT *FROM tbperiodo
ORDER BY prd_Nombre DESC limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

147
while($reg=$result->fetch_object())
{

$tbResultado.=
"

<a href='#Tres'
onClick='xajax_SelecManUsu((\"$reg->prd_Codigo\"))'>
<ul >
<li>$reg-
>prd_Codigo</li>
<li>$reg-
>prd_Nombre</li>
</ul>
</a>

";
}

$paginas.="

<li >
<a href='#Tres' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$ii)'><i
mg src='img/inicio.png'/></a>
<a href='#Tres' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$imenos
)'><img src='img/atras.png'/></a>
<a href='#Tres' id='aPerAdelante' name='aPerAdelante'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$imas)'>
<img src='img/adelante.png'/></a>
<a href='#Tres' id='aPerFin' name='aPerFin'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$if)'><i
mg src='img/fin.png'/></a>
<a href='#Tres' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantPeriodoNuevo()'><img src='img/add.png'/></a>
<label >CANTIDAD DE REGISTROS: $numFila
</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}

148
else
{
$tbResultado.=
"
<a href='#Tres' onClick=''>
<ul >
<li >No se
encuentran resultados para su busqueda</li>
<li >No se
encuentran resultados para su busqueda</li>
</ul>
</a>

";
$paginas.="

<li >
<a href='#Tres' id=''
name='aPerInicio'><img src='img/inicio.png'/></a>
<a href='#Tres' id=''
name='aPerAtras'><img src='img/atras.png'/></a>
<a href='#Tres' id=''
name='aPerAdelante'><img src='img/adelante.png'/></a>
<a href='#Tres' id=''
name='aPerFin'><img src='img/fin.png'/></a>
<a href='#Tres'
id='aPerAgregar' name='aPerAgregar' onClick='xajax_MantPeriodoNuevo()'><img
src='img/add.png'/></a>
<label
>CANTIDAD DE REGISTROS: $numFila</label>
</li>

";
}

$objResp = new xajaxResponse();


$objResp->assign("SecMantPeriodo","innerHTML",$tbResultado);
$objResp->assign("SecMantPeriodoPie","innerHTML",$paginas);
$objResp-
>assign("txtManPeriodoCodigo","value","");
$objResp-
>assign("txtManPeriodoNombre","value","");

return $objResp;
}

149
function MantPeriodoNuevo()
{
global $conexion;

$consult="SELECT prd_Codigo , LEFT( prd_Codigo, 3 ) AS Nom,


RIGHT( prd_Codigo, 7 ) AS Num
FROM tbperiodo ORDER BY prd_Codigo
DESC LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<button class='btn'
onClick='SelecManPeriodoGuardar(); return false;'>GRABAR</button>";

$objResp=new xajaxResponse();

$objResp->assign("txtManPeriodoCodigo","value","");
$objResp->assign("txtManPeriodoNombre","value","");

$objResp->assign("txtManPeriodoCodigo","value",$nombre);

$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);

150
//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

function SelecManUsu($idCodUsu)
{
global $conexion;

$consult = "select * from tbperiodo


where prd_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();

$txtManPeriodoCodigo=$reg->prd_Codigo;
$txtManPeriodoNombre=$reg->prd_Nombre;

$stnManUsuBoton="<button class='btn'
onClick='SelecManPeriodoActualizar(); return false;'>ACTUALIZAR</button>";

$objResp=new xajaxResponse();

$objResp->assign("txtManPeriodoCodigo","value","");
$objResp->assign("txtManPeriodoNombre","value","");

$objResp-
>assign("txtManPeriodoCodigo","value",$txtManPeriodoCodigo);
$objResp-
>assign("txtManPeriodoNombre","value",$txtManPeriodoNombre);

$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);

return $objResp;
}

function SelecManPeriodoGuardar($fmrManUsuPeriodo){

151
global $conexion;

$txtManPeriodoCodigo=$fmrManUsuPeriodo['txtManPeriodoCodigo'];

$txtManPeriodoNombre=$fmrManUsuPeriodo['txtManPeriodoNombre'];

if($txtManPeriodoCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione Agregar genere
Codigo");
return $objResp;
}

if($txtManPeriodoNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");
return $objResp;
}

$consult="insert into tbperiodo


(prd_Codigo,prd_Nombre)

values('$txtManPeriodoCodigo','$txtManPeriodoNombre')";
$conexion->query($consult);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";
$objResp = new xajaxResponse();
$objResp->alert("Se agrego usuario con
EXITO");
$objResp-
>assign("txtManPeriodoCodigo","value","");

152
$objResp-
>assign("txtManPeriodoNombre","value","");
$objResp->script('MantPeriodo();');
$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);
return $objResp;

function SelecManPeriodoActualizar($fmrManUsuPeriodo){

global $conexion;

$txtManPeriodoCodigo=$fmrManUsuPeriodo['txtManPeriodoCodigo'];

$txtManPeriodoNombre=$fmrManUsuPeriodo['txtManPeriodoNombre'];

if($txtManPeriodoCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione Agregar genere
Codigo");
return $objResp;
}

if($txtManPeriodoNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");
return $objResp;
}

$consult=" update tbperiodo set


prd_Nombre='$txtManPeriodoNombre'
where prd_Codigo='$txtManPeriodoCodigo'";
$conexion->query($consult);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se actualizo usuario con
EXITO");

153
$objResp-
>assign("txtManPeriodoCodigo","value","");
$objResp-
>assign("txtManPeriodoNombre","value","");
$objResp->script('MantPeriodo();');
$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);
return $objResp;

//////////////////////////////////////AREA//////////////////////////////////////////////////////////

function MantArea($fmrManUsuArea,$page=1)
{
global $conexion;

$cantFila=10;
$consult = "SELECT *FROM tbpersona_area tba
LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
ORDER BY par_Nombre ASC";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="SELECT * FROM tbpersona_area tba
LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
ORDER BY par_Nombre ASC limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

154
if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"

<a href='#Cuatro'
onClick='xajax_SelecManArea((\"$reg->par_Codigo\"))'>
<ul >
<li >$reg-
>par_Nombre</li>
<li >$reg-
>par_Abreviatura</li>
<li >$reg-
>per_Apellidos $reg->per_Nombres</li>
</ul>
</a>

";
}

$paginas.="

<li >
<a href='#Cuatro' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$ii)'><img
src='img/inicio.png'/></a>
<a href='#Cuatro' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imenos)'><i
mg src='img/atras.png'/></a>
<a href='#Cuatro' id='aPerAdelante'
name='aPerAdelante'

155
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imas)'><img
src='img/adelante.png'/></a>
<a href='#Cuatro' id='aPerFin' name='aPerFin'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$if)'><img
src='img/fin.png'/></a>
<a href='#Cuatro' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantAreaNuevo()'><img src='img/add.png'/></a>
<label >CANTIDAD DE REGISTROS: $numFila
</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}
else
{
$tbResultado.=
" <a href='#Tres' >
<ul
class='filaTablaRes'>
<li >No se encuentran
resultados para su busqueda</li>
<li >No se encuentran
resultados para su busqueda</li>
<li >No se encuentran
resultados para su busqueda</li>
</ul>
</a>

";
$paginas.="

<li >
<a href='#Cuatro' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$ii)'><img
src='img/inicio.png'/></a>
<a href='#Cuatro' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imenos)'><i
mg src='img/atras.png'/></a>
<a href='#Cuatro' id='aPerAdelante'
name='aPerAdelante'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imas)'><img
src='img/adelante.png'/></a>
<a href='#Cuatro' id='aPerFin' name='aPerFin'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$if)'><img
src='img/fin.png'/></a>

156
<a href='#Cuatro' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantAreaNuevo()'><img src='img/add.png'/></a>
<label class='lblCantidadRegistros'>CANTIDAD DE
REGISTROS: $numFila </label>
</li>

";
}

$objResp = new xajaxResponse();


$objResp->assign("SecMantArea","innerHTML",$tbResultado);
$objResp->assign("SecMantAreaPie","innerHTML",$paginas);
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

return $objResp;
}

function SelecManArea($idCodUsu)
{
global $conexion;

$consult = "SELECT *FROM tbpersona_area tba


LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
where par_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();

$HidetxtManAreaCodigoArea=$reg->par_Codigo;

$txtManAreaNombre=$reg->par_Nombre;
$txtManAreaNombreAbre=$reg->par_Abreviatura;

$txtManAreaNombreJefe=$reg->per_Apellidos." ".$reg-
>per_Nombres;
$stnManUsuBoton="<button onClick='SelecManAreaActualizar();
return false;'>ACTUALIZAR</button>";

157
$objResp=new xajaxResponse();

$objResp->assign("HidetxtManAreaNombreJefe","value","");
$objResp->assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

$objResp->addEvent("txtManAreaNombreJefe",
'onKeyUp',"ManAreaPersona()");

$objResp-
>assign("HidetxtManAreaCodigoArea","value",$HidetxtManAreaCodigoArea);
$objResp-
>assign("txtManAreaNombre","value",utf8_encode($txtManAreaNombre));
$objResp-
>assign("txtManAreaNombreAbre","value",utf8_encode($txtManAreaNombreAbre))
;
$objResp-
>assign("txtManAreaNombreJefe","value",utf8_encode($txtManAreaNombreJefe));
$objResp->assign("stnManAreaBuscar","style.display","none");

$objResp-
>assign("stnManUsuBotonArea","innerHTML",$stnManUsuBoton);

return $objResp;
}

function MantAreaNuevo()
{
global $conexion;

$consult="SELECT are_Codigo , LEFT( are_Codigo, 3 ) AS Nom,


RIGHT( are_Codigo, 7 ) AS Num
FROM tbarea ORDER BY are_Codigo DESC
LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;

158
$num=$num+1;

if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<a href='#Dos'><button
onClick='SelecManAreaGuardar(); return false;'>GRABAR</button></a>";

$objResp=new xajaxResponse();

$objResp->assign("HidetxtManAreaNombreJefe","value","");
$objResp->assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

$objResp->assign("HidetxtManAreaCodigoArea","value",$nombre);

$objResp->addEvent("txtManAreaNombreJefe",
'onKeyUp',"ManAreaPersona()");

$objResp-
>assign("stnManUsuBotonArea","innerHTML",$stnManUsuBoton);

//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

159
function ManAreaPersona($fmrManUsuArea,$page=1)
{
global $conexion;

$txtUsuPersona=utf8_decode($fmrManUsuArea['txtManAreaNombreJefe']);

if($txtUsuPersona==""){
$objResp = new xajaxResponse();
$objResp-
>assign("stnManAreaBuscar","style.display","none");
$objResp-
>assign("stnManAreaBuscarRes","innerHTML","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
return $objResp;
}

$cantFila=5;

$consult = "select * from tbpersona tbp


left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%'";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="select * from tbpersona tbp
left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

160
if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"
<a href='#Cuatro'
onClick='xajax_ManAreaSelecPersona((\"$reg->per_Codigo\"))'>
<ul >

<li >$reg->per_DNI</li>

<li >$reg->per_Apellidos $reg->per_Nombres</li>

</ul>
</a>

";
}

$tbResultado=utf8_encode($tbResultado);

}
else
{
$tbResultado.=
"
<a href='#Cuatro' onClick=''>

161
<ul >
<li>No se
encuentran resultados para su busqueda</li>
<li>No se
encuentran resultados para su busqueda</li>
</ul>
</a>
";
}

$objResp = new xajaxResponse();


$objResp->assign("stnManAreaBuscar","style.display","");
$objResp-
>assign("stnManAreaBuscarRes","innerHTML",$tbResultado);
$objResp->assign("stnManAreaBuscar","style.display","");

return $objResp;

function ManAreaSelecPersona($idPer)
{
global $conexion;
$consult = "select *, LEFT( per_Nombres, 1 ) AS Nom from tbpersona
where per_Codigo='$idPer' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$reg=$result->fetch_object();
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$usuarioNom=$reg->Nom;

$objResp = new xajaxResponse();

$objResp-
>assign("txtManAreaNombreJefe","value",utf8_encode($txtUsuPersona));
$objResp->assign("HidetxtManAreaNombreJefe","value",$idPer);

$objResp->assign("stnManAreaBuscar","style.display","none");

162
return $objResp;

function SelecManAreaGuardar($fmrManUsuArea){

global $conexion;

$HidetxtManAreaNombreJefe=$fmrManUsuArea['HidetxtManAreaNombreJe
fe'];

$HidetxtManAreaCodigoArea=$fmrManUsuArea['HidetxtManAreaCodigoAr
ea'];

$txtManAreaNombre=$fmrManUsuArea['txtManAreaNombre'];
$txtManAreaNombreAbre=$fmrManUsuArea['txtManAreaNombreAbre'];

if($txtManAreaNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba un area");
return $objResp;
}

if($txtManAreaNombreAbre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba una abreviatura");
return $objResp;
}

$txtManAreaNombre=strtoupper($txtManAreaNombre);

163
$txtManAreaNombreAbre=strtoupper($txtManAreaNombreAbre);

$consult="insert into tbarea


(are_Codigo,are_Nombre,are_Abreviatura,are_Jefe)

values('$HidetxtManAreaCodigoArea','$txtManAreaNombre','$txtManAreaNombreA
bre','$HidetxtManAreaNombreJefe')";
$conexion->query($consult);

$objResp = new xajaxResponse();


$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp-
>assign("txtManAreaNombreAbre","value","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp->script('MantArea();');

return $objResp;

}
function SelecManAreaActualizar($fmrManUsuArea){

global $conexion;

$HidetxtManAreaNombreJefe=$fmrManUsuArea['HidetxtManAreaNombreJe
fe'];

$HidetxtManAreaCodigoArea=$fmrManUsuArea['HidetxtManAreaCodigoAr
ea'];

$txtManAreaNombre=$fmrManUsuArea['txtManAreaNombre'];
$txtManAreaNombreAbre=$fmrManUsuArea['txtManAreaNombreAbre'];

164
if($txtManAreaNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba un area");
return $objResp;
}

if($txtManAreaNombreAbre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba una abreviatura");
return $objResp;
}

$txtManAreaNombre=strtoupper($txtManAreaNombre);

$txtManAreaNombreAbre=strtoupper($txtManAreaNombreAbre);

$consult=" update tbarea set


are_Nombre='$txtManAreaNombre',
are_Abreviatura='$txtManAreaNombreAbre',
are_Jefe='$HidetxtManAreaNombreJefe'
where are_Codigo='$HidetxtManAreaCodigoArea'";
$conexion->query($consult);

$objResp = new xajaxResponse();


$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp-
>assign("txtManAreaNombreAbre","value","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp->script('MantArea();');

return $objResp;

165
////////////////////////////////////////////////////////////////////////////////////////////////////

$fGuardarDocTipo=& $xajax->registerFunction('GuardarDocTipo');
$fGuardarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fAgregarDocTipo =& $xajax->registerFunction('AgregarDocTipo');


$fAgregarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fModificarDocTipo =& $xajax->registerFunction('ModificarDocTipo');


$fModificarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fcancelDocTipo =& $xajax->registerFunction('cancelDocTipo');

$fSec_slc_mandoc =& $xajax->registerFunction('Sec_slc_mandoc');


$fslcMandocPlantilla =& $xajax->registerFunction('slcMandocPlantilla');

$fHideslcMandocPlantilla =& $xajax->registerFunction('HideslcMandocPlantilla');

166
$fAgregarDocTipoPlantilla =& $xajax->registerFunction('AgregarDocTipoPlantilla');
$fAgregarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fModificarDocTipoPlantilla =& $xajax-


>registerFunction('ModificarDocTipoPlantilla');
$fModificarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fcancelDocTipoPlantilla =& $xajax->registerFunction('cancelDocTipoPlantilla');

$fGuardarDocTipoPlantilla=& $xajax->registerFunction('GuardarDocTipoPlantilla');
$fGuardarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fMantUsuario=& $xajax->registerFunction('MantUsuario');
$fMantUsuario->setParameter(0,XAJAX_FORM_VALUES,'FrmManUsuarioBus');

$fSolucionarManUsu=& $xajax->registerFunction('SolucionarManUsu');

$fMantUsuarioNuevo=& $xajax->registerFunction('MantUsuarioNuevo');

$fManUsuPersona=& $xajax->registerFunction('ManUsuPersona');
$fManUsuPersona->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fManUsuSelecPersona=& $xajax->registerFunction('ManUsuSelecPersona');

$fSelecManUsu=& $xajax->registerFunction('SelecManUsu');

$fSelecManUsuarioGuardar=& $xajax-
>registerFunction('SelecManUsuarioGuardar');
$fSelecManUsuarioGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fSelecManUsuarioActualizar=& $xajax-
>registerFunction('SelecManUsuarioActualizar');
$fSelecManUsuarioActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fMantPeriodo=& $xajax->registerFunction('MantPeriodo');
$fMantPeriodo->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fMantPeriodoNuevo=& $xajax->registerFunction('MantPeriodoNuevo');

167
$fSelecManPeriodoGuardar=& $xajax-
>registerFunction('SelecManPeriodoGuardar');
$fSelecManPeriodoGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fSelecManPeriodoActualizar=& $xajax-
>registerFunction('SelecManPeriodoActualizar');
$fSelecManPeriodoActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fMantArea=& $xajax->registerFunction('MantArea');
$fMantArea->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fSelecManArea=& $xajax->registerFunction('SelecManArea');

$fSelecManAreaGuardar=& $xajax->registerFunction('SelecManAreaGuardar');
$fSelecManAreaGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fSelecManAreaActualizar=& $xajax->registerFunction('SelecManAreaActualizar');
$fSelecManAreaActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fManAreaPersona=& $xajax->registerFunction('ManAreaPersona');
$fManAreaPersona->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fManAreaSelecPersona=& $xajax->registerFunction('ManAreaSelecPersona');

$fMantAreaNuevo=& $xajax->registerFunction('MantAreaNuevo');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";
?> <?php
session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];
$perCodigo=$_SESSION['perCodigo'];
$perParCodigo=$_SESSION["perParCodigo"];

include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

$xajax=new xajax();

168
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

/////////////////////////MANTEMIENTO DE PLANTILLA
/////////////////////////////////////////////////////
function Sec_slc_mandoc(){

global $conexion;

$consult2 = "SELECT * FROM tbdocumentotipo";


$result2 = $conexion->query($consult2);

$tbDocumento = "
<select id='slc_dplDocumentoTipo'
name='slc_dplDocumentoTipo' class='slc'
onChange='xajax_slcMandocPlantilla(this.value)'>
<option value=''>SELECCIONAR</option>";
while($reg2=$result2->fetch_object())
{

$idDocumentoTipo=$reg2->dti_Codigo;
$txtDocTipo=$reg2->dti_Nombre;
$tbDocumento.=
"<option
value='$idDocumentoTipo'>".htmlentities($txtDocTipo)."</option>";

}
$tbDocumento.="</select>";

$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("Sec_slc_mandoc","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");

//$objResp->assign("SecMantPlantDatos1","style.display","");
return $objResp;
}

function AgregarDocTipo($FrmActualizarPlantilla){

$tbDocumento="
<ul >
<li >TIPO DOCUMENTO EXTERNO</li>
<li >

169
<input type='checkbox'name='chk' id='chk'
value='EXTERNO' />
</li>
</ul>
<ul >
<li>TIPO DOCUMENTO INTERNO</li>
<li>
<input type='checkbox'name='chk1' id='chk1'
value='INTERNO' />
</li>
</ul>
<ul >
<li >NOMBRE TIPO DOCUMENTO</li>
<li >
<input name='txt_dplNombreDocTipo'
id='txt_dplNombreDocTipo' type='text' />
</li>
</ul>
<ul >
<li >
<button type='button'
name='btnModIngresoModificar' id='btnRequisitoGEI'
onClick='GuardarDocTipo()'>GUARDAR</button>
</li>
<li >
<button type='button'
name='btnModIngresoModificar' id='btnRequisitoGEI'
onClick='xajax_cancelDocTipo()'>CANCELAR</button>
</li>
</ul>";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos1","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideAccionDocTipo","value","GUARDAR");

return $objResp;

function cancelDocTipo(){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("SecMantPlantDatos1","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");

170
$objResp->assign("SecMantPlantDatos2","style.display","none");
return $objResp;

function ModificarDocTipo($FrmActualizarPlantilla){
global $conexion;

$id=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

if($id==""){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();

return $objResp;
}

$consult2 = "SELECT * FROM tbdocumentotipo where


dti_Codigo='$id'";
$result2 = $conexion->query($consult2);
$reg2=$result2->fetch_object();
$textDocPlantilla=htmlentities($reg2->dti_Nombre);
$Externo=$reg2->dti_Externo;
$Interno=$reg2->dti_Interno;

$tbDocumento="

<ul >
<li >TIPO DOCUMENTO EXTERNO</li>
<li >";
if($Externo=="SI"){
$tbDocumento.="<input
type='checkbox'name='chk' id='chk' value='EXTERNO' class=''
checked='CHECKED'/>";
}else {
$tbDocumento.="<input
type='checkbox'name='chk' id='chk' value='EXTERNO' class='' />";
}

$tbDocumento.="
</li>
</ul>

<ul >
<li >TIPO DOCUMENTO INTERNO</li>

171
<li >";

if($Interno=="SI"){
$tbDocumento.="<input
type='checkbox'name='chk1' id='chk1' value='INTERNO' class=''
checked='CHECKED'/>";
}else {
$tbDocumento.="<input
type='checkbox'name='chk1' id='chk1' value='INTERNO' class=''/>";
}

$tbDocumento.="
</li>
</ul>

<ul >
<li >NOMBRE TIPO DOCUMENTO</li>
<li >
<input name='txt_dplNombreDocTipo' id='txt_dplNombreDocTipo'
value='$textDocPlantilla' type='text' />
</li>
</ul>
<ul >
<li >
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' onClick='GuardarDocTipo()'>MODIFICAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' onClick='xajax_cancelDocTipo()'>CANCELAR</button>
</li>
</ul>";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos1","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos1","style.display","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideAccionDocTipo","value","MODIFICAR");

return $objResp;
}

function GuardarDocTipo($FrmActualizarPlantilla){

global $conexion;

$HideIdDocumentoTipo=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

$HideAccionDocTipo=$FrmActualizarPlantilla['HideAccionDocTipo'];

172
$txt_dplNombreDocTipo=$FrmActualizarPlantilla['txt_dplNombreDocTipo'];

$Externo=$FrmActualizarPlantilla['chk'];
$Interno=$FrmActualizarPlantilla['chk1'];

if($Externo==""){

$idExterno="NO";
}else{
$idExterno="SI";
}

if($Interno==""){

$idInterno="NO";
}else{
$idInterno="SI";
}

$consult1="SELECT dti_Codigo , LEFT( dti_Codigo, 3 ) AS Nom,


RIGHT( dti_Codigo, 3 ) AS Num
FROM tbdocumentotipo ORDER BY
dti_Codigo DESC LIMIT 0 , 1";
$result1=$conexion->query($consult1) ;
$reg1=$result1->fetch_object();
$nom1=$reg1->Nom;
$num1=$reg1->Num;
$num1=$num1+1;
$num2=$num1+1;

if($num1<10){
$nombre1=$nom1."00".$num1;

}else if($num1<100 && $num1>=10){


$nombre1=$nom1."0".$num1;

}if($num1<1000 && $num1>=100){


$nombre1=$nom1."".$num1;

if($nom1==""){
$nombre1="DTI001";

173
if($HideAccionDocTipo=="GUARDAR"){

$consult5="insert into tbdocumentotipo


(dti_Codigo,dti_Nombre,dti_Interno,dti_Externo)

values('$nombre1','$txt_dplNombreDocTipo','$idInterno','$idExterno')";
$conexion->query($consult5);

$objResp = new xajaxResponse();


$objResp->assign("SecMantPlantDatos1","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("HideIdDocumentoTipo","value","");
$objResp->assign("HideAccionDocTipo","value","");
$objResp->alert("Se guardo correctamente");
$objResp->script('xajax_Sec_slc_mandoc()');

return $objResp;

}else if($HideAccionDocTipo=="MODIFICAR"){

$consult2="update tbdocumentotipo set


dti_Nombre='$txt_dplNombreDocTipo',dti_Interno='$idInterno',dti_Externo='$idExt
erno' where dti_Codigo='$HideIdDocumentoTipo'";
$conexion->query($consult2);

$objResp = new xajaxResponse();


$objResp-
>assign("SecMantPlantDatos1","innerHTML","");
$objResp-
>assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("SecMantPlantDatos2","style.display","none");
$objResp-
>assign("HideIdDocumentoTipo","value","");
$objResp-
>assign("HideAccionDocTipo","value","");
$objResp->alert("Se actualizo correctamente");

$objResp->script('xajax_Sec_slc_mandoc()');

return $objResp;

174
}

function slcMandocPlantilla($idManPlantilla){

global $conexion;

$consult2 = "SELECT * FROM tbdocumentoplantilla where


dpl_dti_Codigo='$idManPlantilla'";
$result2 = $conexion->query($consult2);

$tbDocumentoPlantilla = "<select id='slc_dplDocumentoTipo'


name='slc_dplDocumentoTipo' class='slc'
onChange='xajax_HideslcMandocPlantilla(this.value)'>
<option value=''>SELECCIONAR</option>";

while($reg2=$result2->fetch_object())
{

$tbDocumentoPlantilla.=
"<option value='$reg2-
>dpl_Codigo'>".htmlentities($reg2->dpl_Nombre)."</option>";

}
$tbDocumentoPlantilla.="</select>";

$tbDocumentoPlantilla=utf8_encode($tbDocumentoPlantilla);
$objResp = new xajaxResponse();
$objResp-
>assign("Sec_slc_mandplDocumentoTipo","innerHTML",$tbDocumentoPlantilla);
$objResp->assign("HideIdDocumentoTipo","value",$idManPlantilla);

return $objResp;
}

function HideslcMandocPlantilla($idManPlantilla){

175
global $conexion;

$objResp = new xajaxResponse();


$objResp-
>assign("HideIdDocumentoTipoPlantilla","value",$idManPlantilla);

return $objResp;
}

function AgregarDocTipoPlantilla($FrmActualizarPlantilla){

$tbDocumento="

<ul >
<li >NOMBRE</li>
<li >
<input name='txt_dplNombre'
id='txt_dplNombre' name='txt_dplNombre' type='text' maxlength='150' class='npt'/>
</li>
</ul>
<ul >
<li >LOGO</li>
<li >
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >AÑO</li>
<li >
<input name='rdo_dplAno' id='rdo_dplAno'
name='rdo_dplAno' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplAno' id='rdo_dplAno'
name='rdo_dplAno' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >TITULO</li>
<li >
<input name='rdo_dplTitulo' id='rdo_dplTitulo'
name='rdo_dplTitulo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplTitulo' id='rdo_dplTitulo'
name='rdo_dplTitulo' type='radio' value='NO'/>NO

176
</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ARRIBA</li>
<li >
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >DESTINATARIO</li>
<li >
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >REMITENTE - ARRIBA</li>
<li >
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >ASUNTO</li>
<li >
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >FECHA</li>
<li >
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='SI' checked='CHECKED'/>SI

177
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >CONTENIDO</li>
<li >
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ABAJO</li>
<li >
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >ATENTAMENTE</li>
<li >
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'/>NO
</li>
</ul>
<ul>
<li >REMITENTE - ABAJO</li>
<li >
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio'
value='NO'/>NO
</li>
</ul>
<ul >
<li >ADJUNTO</li>
<li >

178
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'/>NO
</li>
</ul>
<ul >
<li >

<button type='button' name='btn_dplGuardar'


id='btn_dplGuardar' class='btn'
onClick='GuardarDocTipoPlantilla()'>GUARDAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' class='btn'
onClick='xajax_cancelDocTipoPlantilla()'>CANCELAR</button>

</li>
</ul>

";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos2","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos2","style.display","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","GUARDAR");

return $objResp;

function cancelDocTipoPlantilla(){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp->assign("SecMantPlantDatos2","innerHTML","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("SecMantPlantDatos2","style.display","none");
return $objResp;

179
function ModificarDocTipoPlantilla($FrmActualizarPlantilla){
global $conexion;

$id=$FrmActualizarPlantilla['HideIdDocumentoTipoPlantilla'];

if($id==""){
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();

return $objResp;
}

$consult2 = "SELECT * FROM tbdocumentoplantilla where


dpl_Codigo='$id'";
$result2 = $conexion->query($consult2);
$reg2=$result2->fetch_object();
$dpl_Nombre=htmlentities($reg2->dpl_Nombre);

$rdo_dplLogo=$reg2->dpl_Logo;
$rdo_dplAno=$reg2->dpl_Ano;

$rdo_dplTitulo=$reg2->dpl_Titulo;
$rdo_dplLugarFechaArriba=$reg2->dpl_LugarFecha_Arriba;
$rdo_dplDestinatario=$reg2->dpl_Destinatario;
$rdo_dplRemitenteArriba=$reg2->dpl_Remitente_Arriba;
$rdo_dplAsunto=$reg2->dpl_Asunto;
$rdo_dplFecha=$reg2->dpl_Fecha;
$rdo_dplContenido=$reg2->dpl_Contenido;
$rdo_dplLugarFechaAbajo=$reg2->dpl_LugarFecha_Abajo;
$rdo_dplAtentamente=$reg2->dpl_Atentamente;
$rdo_dplRemitenteAbajo=$reg2->dpl_Remitente_Abajo;
$rdo_dplAdjunto=$reg2->dpl_Adjunto;

$tbDocumento="

<ul >
<li >NOMBRE</li>
<li >
<input name='txt_dplNombre'
id='txt_dplNombre' name='txt_dplNombre' value='$dpl_Nombre' type='text'
maxlength='150' class='npt'/>

180
</li>
</ul>
<ul >
<li >LOGO</li>
<li >
";

if($rdo_dplLogo=="SI"){
$tbDocumento.="<input name='rdo_dplLogo'
id='rdo_dplLogo' name='rdo_dplLogo' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLogo' id='rdo_dplLogo' name='rdo_dplLogo' type='radio' value='SI'
/>SI
<input name='rdo_dplLogo' id='rdo_dplLogo'
name='rdo_dplLogo' type='radio' value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >AÑO</li>
<li >

";

if($rdo_dplAno=="SI"){
$tbDocumento.="<input name='rdo_dplAno'
id='rdo_dplAno' name='rdo_dplAno' type='radio' value='SI' checked='CHECKED'
/>SI
<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='NO'
/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='SI' />SI
<input
name='rdo_dplAno' id='rdo_dplAno' name='rdo_dplAno' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>

181
<ul >
<li >TITULO</li>
<li > ";

if($rdo_dplTitulo=="SI"){
$tbDocumento.="<input name='rdo_dplTitulo'
id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio' value='SI' checked='CHECKED'
/>SI
<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio'
value='NO' />NO";
}else {
$tbDocumento.="<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio' value='SI'
/>SI
<input
name='rdo_dplTitulo' id='rdo_dplTitulo' name='rdo_dplTitulo' type='radio'
value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ARRIBA</li>
<li > ";

if($rdo_dplLugarFechaArriba=="SI"){
$tbDocumento.="<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLugarFechaArriba' id='rdo_dplLugarFechaArriba'
name='rdo_dplLugarFechaArriba' type='radio' value='SI' />SI
<input name='rdo_dplLugarFechaArriba'
id='rdo_dplLugarFechaArriba' name='rdo_dplLugarFechaArriba' type='radio'
value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>

182
</ul>
<ul >
<li >DESTINATARIO</li>
<li > ";

if($rdo_dplDestinatario=="SI"){
$tbDocumento.="<input
name='rdo_dplDestinatario' id='rdo_dplDestinatario' name='rdo_dplDestinatario'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'/>NO

";
}else {
$tbDocumento.="<input
name='rdo_dplDestinatario' id='rdo_dplDestinatario' name='rdo_dplDestinatario'
type='radio' value='SI' />SI
<input name='rdo_dplDestinatario'
id='rdo_dplDestinatario' name='rdo_dplDestinatario' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >REMITENTE - ARRIBA</li>
<li > ";

if($rdo_dplRemitenteArriba=="SI"){
$tbDocumento.="<input
name='rdo_dplRemitenteArriba' id='rdo_dplRemitenteArriba'
name='rdo_dplRemitenteArriba' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplRemitenteArriba' id='rdo_dplRemitenteArriba'
name='rdo_dplRemitenteArriba' type='radio' value='SI' />SI

183
<input name='rdo_dplRemitenteArriba'
id='rdo_dplRemitenteArriba' name='rdo_dplRemitenteArriba' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >ASUNTO</li>
<li > ";

if($rdo_dplAsunto=="SI"){
$tbDocumento.="<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAsunto' id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio'
value='SI' />SI
<input name='rdo_dplAsunto'
id='rdo_dplAsunto' name='rdo_dplAsunto' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >FECHA</li>
<li > ";

if($rdo_dplFecha=="SI"){
$tbDocumento.="<input name='rdo_dplFecha'
id='rdo_dplFecha' name='rdo_dplFecha' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplFecha' id='rdo_dplFecha' name='rdo_dplFecha' type='radio' value='SI'
/>SI
<input name='rdo_dplFecha' id='rdo_dplFecha'
name='rdo_dplFecha' type='radio' value='NO' checked='CHECKED'/>NO";
}

184
$tbDocumento.="

</li>
</ul>
<ul >
<li >CONTENIDO</li>
<li > ";

if($rdo_dplContenido=="SI"){
$tbDocumento.="<input
name='rdo_dplContenido' id='rdo_dplContenido' name='rdo_dplContenido'
type='radio' value='SI' />SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplContenido' id='rdo_dplContenido' name='rdo_dplContenido'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplContenido'
id='rdo_dplContenido' name='rdo_dplContenido' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >LUGAR Y FECHA - ABAJO</li>
<li > ";

if($rdo_dplLugarFechaAbajo=="SI"){
$tbDocumento.="<input
name='rdo_dplLugarFechaAbajo' id='rdo_dplLugarFechaAbajo'
name='rdo_dplLugarFechaAbajo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplLugarFechaAbajo' id='rdo_dplLugarFechaAbajo'
name='rdo_dplLugarFechaAbajo' type='radio' value='SI' />SI
<input name='rdo_dplLugarFechaAbajo'
id='rdo_dplLugarFechaAbajo' name='rdo_dplLugarFechaAbajo' type='radio'
value='NO' checked='CHECKED'/>NO";
}

$tbDocumento.="

185
</li>
</ul>
<ul >
<li >ATENTAMENTE</li>
<li > ";

if($rdo_dplAtentamente=="SI"){
$tbDocumento.="<input
name='rdo_dplAtentamente' id='rdo_dplAtentamente' name='rdo_dplAtentamente'
type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAtentamente' id='rdo_dplAtentamente' name='rdo_dplAtentamente'
type='radio' value='SI' />SI
<input name='rdo_dplAtentamente'
id='rdo_dplAtentamente' name='rdo_dplAtentamente' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>
<ul >
<li >REMITENTE - ABAJO</li>
<li > ";

if($rdo_dplRemitenteAbajo=="SI"){
$tbDocumento.="<input
name='rdo_dplRemitenteAbajo' id='rdo_dplRemitenteAbajo'
name='rdo_dplRemitenteAbajo' type='radio' value='SI' checked='CHECKED'/>SI
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio'
value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplRemitenteAbajo' id='rdo_dplRemitenteAbajo'
name='rdo_dplRemitenteAbajo' type='radio' value='SI' />SI
<input name='rdo_dplRemitenteAbajo'
id='rdo_dplRemitenteAbajo' name='rdo_dplRemitenteAbajo' type='radio' value='NO'
checked='CHECKED'/>NO";
}

186
$tbDocumento.="

</li>
</ul>
<ul class='columna'>
<li class='filaEtiqueta'>ADJUNTO</li>
<li class='filaDato'> ";

if($rdo_dplAdjunto=="SI"){
$tbDocumento.="<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='SI'
checked='CHECKED'/>SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'/>NO";
}else {
$tbDocumento.="<input
name='rdo_dplAdjunto' id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio'
value='SI' />SI
<input name='rdo_dplAdjunto'
id='rdo_dplAdjunto' name='rdo_dplAdjunto' type='radio' value='NO'
checked='CHECKED'/>NO";
}

$tbDocumento.="

</li>
</ul>

<button type='button' name='btn_dplGuardar'


id='btn_dplGuardar' class='btn'
onClick='GuardarDocTipoPlantilla()'>MODIFICAR</button>
<button type='button' name='btnModIngresoModificar'
id='btnRequisitoGEI' class='btn'
onClick='xajax_cancelDocTipoPlantilla()'>CANCELAR</button>

</li>
</ul>

";
$tbDocumento=utf8_encode($tbDocumento);
$objResp = new xajaxResponse();
$objResp-
>assign("SecMantPlantDatos2","innerHTML",$tbDocumento);
$objResp->assign("SecMantPlantDatos2","style.display","");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","MODIFICAR");

187
return $objResp;
}

function GuardarDocTipoPlantilla($FrmActualizarPlantilla){

global $conexion;

$HideIdDocumentoTipo=$FrmActualizarPlantilla['HideIdDocumentoTipo'];

$HideIdDocumentoTipoPlantilla=$FrmActualizarPlantilla['HideIdDocumento
TipoPlantilla'];

$HideAccionDocTipo=$FrmActualizarPlantilla['HideAccionDocTipoPlantilla'
];

$txt_dplNombre=$FrmActualizarPlantilla['txt_dplNombre'];

$rdo_dplLogo=$FrmActualizarPlantilla['rdo_dplLogo'];
$rdo_dplAno=$FrmActualizarPlantilla['rdo_dplAno'];
$rdo_dplTitulo=$FrmActualizarPlantilla['rdo_dplTitulo'];

$rdo_dplLugarFechaArriba=$FrmActualizarPlantilla['rdo_dplLugarFechaArri
ba'];
$rdo_dplDestinatario=$FrmActualizarPlantilla['rdo_dplDestinatario'];

$rdo_dplRemitenteArriba=$FrmActualizarPlantilla['rdo_dplRemitenteArriba']
;
$rdo_dplAsunto=$FrmActualizarPlantilla['rdo_dplAsunto'];
$rdo_dplFecha=$FrmActualizarPlantilla['rdo_dplFecha'];
$rdo_dplContenido=$FrmActualizarPlantilla['rdo_dplContenido'];

$rdo_dplLugarFechaAbajo=$FrmActualizarPlantilla['rdo_dplLugarFechaAbaj
o'];
$rdo_dplAtentamente=$FrmActualizarPlantilla['rdo_dplAtentamente'];

$rdo_dplRemitenteAbajo=$FrmActualizarPlantilla['rdo_dplRemitenteAbajo'];
$rdo_dplAdjunto=$FrmActualizarPlantilla['rdo_dplAdjunto'];

$consult1="SELECT dpl_Codigo , LEFT( dpl_Codigo, 3 ) AS Nom,


RIGHT( dpl_Codigo, 7 ) AS Num

188
FROM tbdocumentoplantilla ORDER BY
dpl_Codigo DESC LIMIT 0 , 1";
$result1=$conexion->query($consult1) ;
$reg1=$result1->fetch_object();
$nom1=$reg1->Nom;
$num1=$reg1->Num;
$num1=$num1+1;

if($num1<10){
$nombre1=$nom1."000000".$num1;

}
if($num1<100 && $num1>=10){
$nombre1=$nom1."00000".$num1;

}
if($num1<1000 && $num1>=100){
$nombre1=$nom1."0000".$num1;

}
if($num1<10000 && $num1>=1000){
$nombre1=$nom1."000".$num1;

}
if($num1<100000 && $num1>=10000){
$nombre1=$nom1."00".$num1;

}
if($num1<1000000 && $num1>=100000){
$nombre1=$nom1."0".$num1;

}if($nom1==""){
$nombre1="DPL0000001";
}

if($HideAccionDocTipo=="GUARDAR"){

$consult5="insert into tbdocumentoplantilla (


dpl_Codigo,
dpl_dti_Codigo,
dpl_Nombre,
dpl_Logo,
dpl_Ano,
dpl_Titulo,
dpl_LugarFecha_Arriba,
dpl_Destinatario,
dpl_Remitente_Arriba,
dpl_Asunto,
dpl_Fecha,

189
dpl_Contenido,
dpl_LugarFecha_Abajo,
dpl_Atentamente,
dpl_Remitente_Abajo,
dpl_Adjunto)
values(
'$nombre1',
'$HideIdDocumentoTipo',
'$txt_dplNombre',
'$rdo_dplLogo',
'$rdo_dplAno',
'$rdo_dplTitulo',
'$rdo_dplLugarFechaArriba',
'$rdo_dplDestinatario',
'$rdo_dplRemitenteArriba',
'$rdo_dplAsunto',
'$rdo_dplFecha',
'$rdo_dplContenido',
'$rdo_dplLugarFechaAbajo',
'$rdo_dplAtentamente',
'$rdo_dplRemitenteAbajo',
'$rdo_dplAdjunto')";
$conexion->query($consult5);

$objResp = new xajaxResponse();


$objResp->assign("SecMantPlantDatos2","innerHTML","");
$objResp->assign("SecMantPlantDatos2","style.display","none");
$objResp->assign("SecMantPlantDatos1","style.display","none");
$objResp->assign("HideIdDocumentoTipo","value","");
$objResp->assign("HideAccionDocTipoPlantilla","value","");
$objResp->alert("Se guardo correctamente");
$objResp-
>script('xajax_slcMandocPlantilla("'.$HideIdDocumentoTipo.'")');

return $objResp;

}else if($HideAccionDocTipo=="MODIFICAR"){

$consult2="update tbdocumentoplantilla set


dpl_dti_Codigo='$HideIdDocumentoTipo',
dpl_Nombre='$txt_dplNombre',
dpl_Logo='$rdo_dplLogo',
dpl_Ano='$rdo_dplAno',
dpl_Titulo='$rdo_dplTitulo',
dpl_LugarFecha_Arriba='$rdo_dplLugarFechaArriba',
dpl_Destinatario='$rdo_dplDestinatario',
dpl_Remitente_Arriba='$rdo_dplRemitenteArriba',

190
dpl_Asunto='$rdo_dplAsunto',
dpl_Fecha='$rdo_dplFecha',
dpl_Contenido='$rdo_dplContenido',
dpl_LugarFecha_Abajo='$rdo_dplLugarFechaAbajo',
dpl_Atentamente='$rdo_dplAtentamente',
dpl_Remitente_Abajo='$rdo_dplRemitenteAbajo',
dpl_Adjunto='$rdo_dplAdjunto'
where dpl_Codigo='$HideIdDocumentoTipoPlantilla'";
$conexion->query($consult2);

$objResp = new xajaxResponse();


$objResp-
>assign("SecMantPlantDatos2","innerHTML","");
$objResp-
>assign("SecMantPlantDatos2","style.display","none");
$objResp-
>assign("SecMantPlantDatos1","style.display","none");
$objResp-
>assign("HideIdDocumentoTipo","value","");
$objResp-
>assign("HideAccionDocTipoPlantilla","value","");
$objResp->alert("Se actualizo correctamente");

$objResp-
>script('xajax_slcMandocPlantilla("'.$HideIdDocumentoTipo.'")');

return $objResp;

/////////////////////////////MANTENIMIENTO DE USUARIO
///////////////////////////////////////////////////

191
function MantUsuario($FrmManUsuarioBus, $page=1)
{
//De donde saco los usuarios si no todos tienen usuarios
global $conexion;

$slcMantUsuBuscar=$FrmManUsuarioBus['slcMantUsuBuscar'];

$txtMantenimientoUsuarioBuscar=$FrmManUsuarioBus['txtMantUsuBuscar']
;

$cantFila=5;

$consult = "select * from tbusuario tbu


inner join tbpersona tbp on tbu.usu_per_Codigo=tbp.per_Codigo
inner join tbpersona_area tba on tbp.per_par_Codigo=tba.par_Codigo
where $slcMantUsuBuscar LIKE
'%$txtMantenimientoUsuarioBuscar%' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult = $consult . "limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

192
if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"

<ul class='filaTablaRes'>
<a href='#Dos'
onclick='xajax_SolucionarManUsu((\"$reg->usu_Codigo\"))'>

<li>$reg->usu_Codigo
</li>
<li>$reg->per_Nombres
$reg->per_Apellidos</li>
<li>$reg-
>usu_Nombre</li>
<li>$reg-
>are_Nombre</li>
</a>
</ul>

";
}

$paginas.="

<li >
<a href='#Dos' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$ii)'><i
mg src='../img/inicio.png'/></a>
<a href='#Dos' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$imenos
)'><img src='../img/atras.png'/></a>
<a href='#Dos' id='aPerAdelante' name='aPerAdelante'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$imas)'
><img src='../img/adelante.png'/></a>

193
<a href='#Dos' id='aPerFin' name='aPerFin'
onclick='xajax_MantUsuario(xajax.getFormValues(\"FrmManUsuarioBus\"),$if)'><i
mg src='../img/fin.png'/></a>
<a href='#Dos' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantUsuarioNuevo()'><img src='../img/add.png'/></a>
<label
>CANTIDAD DE REGISTROS: $numFila</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}
else
{
$tbResultado.=
"

<ul >
<li >No se encuentran resultados para su busqueda</li>
<li >No se encuentran resultados para su busqueda</li>
<li >No se encuentran resultados para su busqueda</li>
</ul>

";
$paginas.="

<li >
<a href='#' id=''
name='aPerInicio'><img src='img/inicio.png'/></a>
<a href='#' id=''
name='aPerAtras'><img src='img/atras.png'/></a>
<a href='#' id=''
name='aPerAdelante'><img src='img/adelante.png'/></a>
<a href='#' id=''
name='aPerFin'><img src='img/fin.png'/></a>
<a href='#'
id='aPerAgregar' name='aPerAgregar' onClick=''><img src='img/add.png'/></a>
<label
class='lblCantidadRegistros'>CANTIDAD DE REGISTROS: $numFila</label>
</li>
";
}

$objResp = new xajaxResponse();


$objResp->assign("SecMantBus","innerHTML",$tbResultado);

194
$objResp->assign("SecMantBusPie","innerHTML",$paginas);

$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("stnManUsuarioBuscar","style.display","none");
//$objResp->assign("txt_GestNombre","value","");
//$objResp->assign("SgdPiePagina","style.display","none");

return $objResp;

function SolucionarManUsu($idCodUsu)
{
global $conexion;

$consult = "select * from tbusuario tbu


inner join tbpersona tbp on tbu.usu_per_Codigo=tbp.per_Codigo
inner join tbpersona_area tba on tbp.per_par_Codigo=tba.par_Codigo
where usu_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();
$idPer=$reg->per_Codigo;
$HideUsuAutorizacionCodi=$reg->usu_aut_Codigo;
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$txtUsuCodigo=$reg->usu_Codigo;
$txtUsuNombre=$reg->usu_Nombre;

$aut_PersonaV=$reg->usu_Persona;
$aut_DigitalizacionV=$reg->usu_Digitalizacion;

195
$aut_RequisitoV=$reg->usu_Requisito;
$aut_MantenimientoV=$reg->usu_Mantenimiento;
$aut_DocumentoV=$reg->usu_Tramite;

$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuPersonas'>";

if($aut_PersonaV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxPersonas' name='cbxPersonas' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxPersonas' name='cbxPersonas' value='SI' />";
}

$SecManUsuarioCheck.="<li class='coluMantUsuAll'>";

$SecManUsuarioCheck.="</li>
<li >";

if($aut_DocumentoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxTramite' name='cbxTramite' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxTramite' name='cbxTramite' value='SI' />";
}

////////

$SecManUsuarioCheck.="</li>
<li >";
if($aut_DigitalizacionV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxDigitalizacion' name='cbxDigitalizacion' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxDigitalizacion' name='cbxDigitalizacion' value='SI' />";
}

196
$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuRequisitos'>";

if($aut_RequisitoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxRequisitos' name='cbxRequisitos' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxRequisitos' name='cbxRequisitos' value='SI' />";
}

$SecManUsuarioCheck.="</li>
<li
class='coluMantUsuMantenimiento'>";

if($aut_MantenimientoV=="SI"){
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxMantenimiento' name='cbxMantenimiento' value='SI' checked/>";
}else {
$SecManUsuarioCheck.="<input type='checkbox'
id='cbxMantenimiento' name='cbxMantenimiento' value='SI' />";
}

$SecManUsuarioCheck.="</li>";

$stnManUsuBoton="<button onClick='SelecManUsuarioActualizar();
return false;'>ACTUALIZAR</button>";

$tbTipoDoc=utf8_encode($tbTipoDoc);
$tbTipoDocPlantilla=utf8_encode($tbTipoDocPlantilla);
$rbGestionarDoc=utf8_encode($rbGestionarDoc);

$objResp=new xajaxResponse();

197
$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);

$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);

$objResp->assign("HideUsuAutorizacionCodi","value","");
$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("stnManUsuarioBuscar","style.display","none");

$objResp->assign("HideUsuPersonaCodi","value",$idPer);
$objResp-
>assign("txtUsuPersona","value",utf8_encode($txtUsuPersona));
$objResp-
>assign("txtUsuCodigo","value",utf8_encode($txtUsuCodigo));
$objResp-
>assign("txtUsuNombre","value",utf8_encode($txtUsuNombre));
$objResp-
>assign("HideUsuAutorizacionCodi","value",$HideUsuAutorizacionCodi);

$objResp->addEvent("stnManUsuPersona", 'onClick',"");
$objResp->addEvent("txtUsuPersona", 'onKeyUp',"");
//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');

return $objResp;
}

function MantUsuarioNuevo()
{
global $conexion;

$consult="SELECT usu_Codigo , LEFT( usu_Codigo, 3 ) AS Nom,


RIGHT( usu_Codigo, 7 ) AS Num
FROM tbusuario ORDER BY usu_Codigo
DESC LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();

198
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<a href='#Dos'><button class='btn'


onClick='SelecManUsuarioGuardar(); return false;'>GRABAR</button></a>";

$objResp=new xajaxResponse();

$objResp->assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp->assign("HideUsuAutorizacionCodi","value","");

$objResp->assign("txtUsuCodigo","value",$nombre);
$objResp->addEvent("stnManUsuPersona",
'onClick',"xajax_ManUsuPersona(xajax.getFormValues(\"fmrManUsuDatos\"),1)");
$objResp->addEvent("txtUsuPersona",
'onKeyUp',"ManUsuPersona()");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);

//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

199
function ManUsuPersona($fmrManUsuDatos,$page=1)
{
global $conexion;

$txtUsuPersona=$fmrManUsuDatos['txtUsuPersona'];

if($txtUsuPersona==""){
$objResp = new xajaxResponse();
$objResp-
>assign("stnManUsuarioBuscar","style.display","none");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("HideUsuPersonaCodi","value","");
return $objResp;
}

$cantFila=5;

$consult = "select * from tbpersona tbp


left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' and usu_Codigo IS NULL";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="select * from tbpersona tbp
left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' and usu_Codigo IS NULL limit
$iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{

200
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"
<a href='#Dos'
onClick='xajax_ManUsuSelecPersona((\"$reg->per_Codigo\"))'>
<ul >

<li >$reg->per_DNI</li>

<li >$reg->per_Apellidos $reg->per_Nombres</li>

</ul>
</a>
";
}

$tbResultado=utf8_encode($tbResultado);

}
else
{
$tbResultado.=
"
<a href='#Dos' onClick=''>
<ul >
<li >No se
encuentran resultados para su busqueda</li>
<li >No se
encuentran resultados para su busqueda</li>
</ul>
</a>
";
}

201
$objResp = new xajaxResponse();
$objResp->assign("stnManUsuarioBuscar","style.display","");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML",$tbResultado);
return $objResp;

function ManUsuSelecPersona($idPer)
{
global $conexion;
$consult = "select *, LEFT( per_Nombres, 1 ) AS Nom from tbpersona
where per_Codigo='$idPer' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$reg=$result->fetch_object();
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$usuarioNom=$reg->Nom;

$NomParte=$reg->per_Apellidos;

$partes=explode(' ',$NomParte);
$cadena1=$partes[0];

$usuariofinal=$usuarioNom."".$cadena1;

$objResp = new xajaxResponse();


$objResp->assign("stnManUsuarioBuscar","style.display","");
$objResp-
>assign("stnManUsuarioBuscarRes","innerHTML",$tbResultado);

$objResp->assign("txtUsuPersona","value",$txtUsuPersona);
$objResp->assign("txtUsuNombre","value",$usuariofinal);

$objResp->assign("HideUsuPersonaCodi","value",$idPer);

$objResp->assign("stnManUsuarioBuscar","style.display","none");

return $objResp;

202
}

function SelecManUsuarioGuardar($fmrManUsuDatos){

global $conexion;

$HideUsuPersonaCodi=$fmrManUsuDatos['HideUsuPersonaCodi'];
$txtUsuCodigo=$fmrManUsuDatos['txtUsuCodigo'];
$txtUsuNombre=$fmrManUsuDatos['txtUsuNombre'];
$txtUsuContrasena=$fmrManUsuDatos['txtUsuContrasena'];
$txtUsuContrasenaR=$fmrManUsuDatos['txtUsuContrasenaR'];

if($HideUsuPersonaCodi==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione una persona");
return $objResp;
}

if($txtUsuCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Codigo No valido");
return $objResp;
}

if($txtUsuNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Usuario No valido");
return $objResp;
}

if($txtUsuContrasena<>$txtUsuContrasenaR){
$objResp = new xajaxResponse();
$objResp->alert("Las contraseñas no
coinciden");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
return $objResp;
}

203
$cbxProfile=$fmrManUsuDatos['cbxProfile'];
$cbxPersonas=$fmrManUsuDatos['cbxPersonas'];
$cbxTramite=$fmrManUsuDatos['cbxTramite'];
$cbxDigitalizacion=$fmrManUsuDatos['cbxDigitalizacion'];
$cbxRequisitos=$fmrManUsuDatos['cbxRequisitos'];
$cbxMantenimiento=$fmrManUsuDatos['cbxMantenimiento'];

if($cbxPersonas==""){
$cbxPersonas="NO";
}
if($cbxTramite==""){
$cbxTramite="NO";
}
if($cbxDigitalizacion==""){
$cbxDigitalizacion="NO";
}
if($cbxRequisitos==""){
$cbxRequisitos="NO";
}
if($cbxMantenimiento==""){
$cbxMantenimiento="NO";
}

//strtoupper
//strtolower

$txtUsuNombre=strtoupper($txtUsuNombre);

$consult1="insert into tbusuario


(usu_Codigo,
usu_per_Codigo,
usu_Nombre,
usu_Contrasena,
usu_Digitalizacion,
usu_Tramite,
usu_Requisito,
usu_Persona,
usu_Mantenimiento)
values('$txtUsuCodigo',

204
'$HideUsuPersonaCodi',
'$txtUsuNombre',
'$txtUsuContrasena',
'$cbxDigitalizacion',
'$cbxTramite',
'$cbxRequisitos',
'$cbxPersonas',
'$cbxMantenimiento')";
$conexion->query($consult1);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se agrego usuario con
EXITO");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
$objResp-
>assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);
$objResp->script('MantUsuario();');

return $objResp;

}
function SelecManUsuarioActualizar($fmrManUsuDatos){

global $conexion;

$HideUsuPersonaCodi=$fmrManUsuDatos['HideUsuPersonaCodi'];

$HideUsuAutorizacionCodi=$fmrManUsuDatos['HideUsuAutorizacionCodi'];
$txtUsuCodigo=$fmrManUsuDatos['txtUsuCodigo'];
$txtUsuNombre=$fmrManUsuDatos['txtUsuNombre'];
$txtUsuContrasena=$fmrManUsuDatos['txtUsuContrasena'];
$txtUsuContrasenaR=$fmrManUsuDatos['txtUsuContrasenaR'];

205
if($HideUsuPersonaCodi==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione una persona");
return $objResp;
}

if($txtUsuCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Codigo No valido");
return $objResp;
}

if($txtUsuNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Usuario No valido");
return $objResp;
}

if($txtUsuContrasena<>$txtUsuContrasenaR){
$objResp = new xajaxResponse();
$objResp->alert("Las contraseñas no
coinciden");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
return $objResp;
}

$cbxProfile=$fmrManUsuDatos['cbxProfile'];
$cbxPersonas=$fmrManUsuDatos['cbxPersonas'];
$cbxTramite=$fmrManUsuDatos['cbxTramite'];
$cbxDigitalizacion=$fmrManUsuDatos['cbxDigitalizacion'];
$cbxRequisitos=$fmrManUsuDatos['cbxRequisitos'];
$cbxMantenimiento=$fmrManUsuDatos['cbxMantenimiento'];

if($cbxProfile==""){
$cbxProfile="NO";
}

if($cbxPersonas==""){

206
$cbxPersonas="NO";
}
if($cbxTramite==""){
$cbxTramite="NO";
}
if($cbxDigitalizacion==""){
$cbxDigitalizacion="NO";
}
if($cbxRequisitos==""){
$cbxRequisitos="NO";
}
if($cbxMantenimiento==""){
$cbxMantenimiento="NO";
}

$consult1=" update tbusuario set


usu_Nombre='$txtUsuNombre',
usu_Contrasena='$txtUsuContrasena',
usu_Digitalizacion='$cbxDigitalizacion',
usu_Tramite='$cbxTramite',
usu_Requisito='$cbxRequisitos',
usu_Persona='$cbxPersonas',
usu_Mantenimiento='$cbxMantenimiento'
where usu_Codigo='$txtUsuCodigo'";
$conexion->query($consult1);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se actualizo usuario con
EXITO");
$objResp-
>assign("txtUsuContrasena","value","");
$objResp-
>assign("txtUsuContrasenaR","value","");
$objResp-
>assign("HideUsuPersonaCodi","value","");
$objResp->assign("txtUsuPersona","value","");
$objResp->assign("txtUsuCodigo","value","");
$objResp->assign("txtUsuNombre","value","");
$objResp-
>assign("stnManUsuBoton","innerHTML",$stnManUsuBoton);
$objResp->script('MantUsuario();');

return $objResp;

207
////////////////////////////////PERIODOOOOOOOOOOOOOS///////////////////////////////////////

function MantPeriodo($fmrManUsuPeriodo,$page=1)
{
global $conexion;

$cantFila=15;
$consult = "SELECT *FROM tbperiodo
ORDER BY prd_Nombre DESC";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="SELECT *FROM tbperiodo
ORDER BY prd_Nombre DESC limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())

208
{

$tbResultado.=
"

<a href='#Tres'
onClick='xajax_SelecManUsu((\"$reg->prd_Codigo\"))'>
<ul >
<li>$reg-
>prd_Codigo</li>
<li>$reg-
>prd_Nombre</li>
</ul>
</a>

";
}

$paginas.="

<li >
<a href='#Tres' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$ii)'><i
mg src='img/inicio.png'/></a>
<a href='#Tres' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$imenos
)'><img src='img/atras.png'/></a>
<a href='#Tres' id='aPerAdelante' name='aPerAdelante'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$imas)'>
<img src='img/adelante.png'/></a>
<a href='#Tres' id='aPerFin' name='aPerFin'
onclick='xajax_MantPeriodo(xajax.getFormValues(\"fmrManUsuPeriodo\"),$if)'><i
mg src='img/fin.png'/></a>
<a href='#Tres' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantPeriodoNuevo()'><img src='img/add.png'/></a>
<label >CANTIDAD DE REGISTROS: $numFila
</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}
else
{

209
$tbResultado.=
"
<a href='#Tres' onClick=''>
<ul >
<li >No se
encuentran resultados para su busqueda</li>
<li >No se
encuentran resultados para su busqueda</li>
</ul>
</a>

";
$paginas.="

<li >
<a href='#Tres' id=''
name='aPerInicio'><img src='img/inicio.png'/></a>
<a href='#Tres' id=''
name='aPerAtras'><img src='img/atras.png'/></a>
<a href='#Tres' id=''
name='aPerAdelante'><img src='img/adelante.png'/></a>
<a href='#Tres' id=''
name='aPerFin'><img src='img/fin.png'/></a>
<a href='#Tres'
id='aPerAgregar' name='aPerAgregar' onClick='xajax_MantPeriodoNuevo()'><img
src='img/add.png'/></a>
<label
>CANTIDAD DE REGISTROS: $numFila</label>
</li>

";
}

$objResp = new xajaxResponse();


$objResp->assign("SecMantPeriodo","innerHTML",$tbResultado);
$objResp->assign("SecMantPeriodoPie","innerHTML",$paginas);
$objResp-
>assign("txtManPeriodoCodigo","value","");
$objResp-
>assign("txtManPeriodoNombre","value","");

return $objResp;
}

210
function MantPeriodoNuevo()
{
global $conexion;

$consult="SELECT prd_Codigo , LEFT( prd_Codigo, 3 ) AS Nom,


RIGHT( prd_Codigo, 7 ) AS Num
FROM tbperiodo ORDER BY prd_Codigo
DESC LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<button class='btn'
onClick='SelecManPeriodoGuardar(); return false;'>GRABAR</button>";

$objResp=new xajaxResponse();

$objResp->assign("txtManPeriodoCodigo","value","");
$objResp->assign("txtManPeriodoNombre","value","");

$objResp->assign("txtManPeriodoCodigo","value",$nombre);

$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);

211
//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

function SelecManUsu($idCodUsu)
{
global $conexion;

$consult = "select * from tbperiodo


where prd_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();

$txtManPeriodoCodigo=$reg->prd_Codigo;
$txtManPeriodoNombre=$reg->prd_Nombre;

$stnManUsuBoton="<button class='btn'
onClick='SelecManPeriodoActualizar(); return false;'>ACTUALIZAR</button>";

$objResp=new xajaxResponse();

$objResp->assign("txtManPeriodoCodigo","value","");
$objResp->assign("txtManPeriodoNombre","value","");

$objResp-
>assign("txtManPeriodoCodigo","value",$txtManPeriodoCodigo);
$objResp-
>assign("txtManPeriodoNombre","value",$txtManPeriodoNombre);

$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);

return $objResp;
}

function SelecManPeriodoGuardar($fmrManUsuPeriodo){

212
global $conexion;

$txtManPeriodoCodigo=$fmrManUsuPeriodo['txtManPeriodoCodigo'];

$txtManPeriodoNombre=$fmrManUsuPeriodo['txtManPeriodoNombre'];

if($txtManPeriodoCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione Agregar genere
Codigo");
return $objResp;
}

if($txtManPeriodoNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");
return $objResp;
}

$consult="insert into tbperiodo


(prd_Codigo,prd_Nombre)

values('$txtManPeriodoCodigo','$txtManPeriodoNombre')";
$conexion->query($consult);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";
$objResp = new xajaxResponse();
$objResp->alert("Se agrego usuario con
EXITO");
$objResp-
>assign("txtManPeriodoCodigo","value","");
$objResp-
>assign("txtManPeriodoNombre","value","");

213
$objResp->script('MantPeriodo();');
$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);
return $objResp;

function SelecManPeriodoActualizar($fmrManUsuPeriodo){

global $conexion;

$txtManPeriodoCodigo=$fmrManUsuPeriodo['txtManPeriodoCodigo'];

$txtManPeriodoNombre=$fmrManUsuPeriodo['txtManPeriodoNombre'];

if($txtManPeriodoCodigo==""){
$objResp = new xajaxResponse();
$objResp->alert("Seleccione Agregar genere
Codigo");
return $objResp;
}

if($txtManPeriodoNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");
return $objResp;
}

$consult=" update tbperiodo set


prd_Nombre='$txtManPeriodoNombre'
where prd_Codigo='$txtManPeriodoCodigo'";
$conexion->query($consult);

$stnManUsuBoton="<button class='btnNo'
disabled>GUARDAR</button>";

$objResp = new xajaxResponse();


$objResp->alert("Se actualizo usuario con
EXITO");
$objResp-
>assign("txtManPeriodoCodigo","value","");

214
$objResp-
>assign("txtManPeriodoNombre","value","");
$objResp->script('MantPeriodo();');
$objResp-
>assign("stnManUsuBotonPeriodo","innerHTML",$stnManUsuBoton);
return $objResp;

//////////////////////////////////////AREA//////////////////////////////////////////////////////////

function MantArea($fmrManUsuArea,$page=1)
{
global $conexion;

$cantFila=10;
$consult = "SELECT *FROM tbpersona_area tba
LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
ORDER BY par_Nombre ASC";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="SELECT * FROM tbpersona_area tba
LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
ORDER BY par_Nombre ASC limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)

215
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"

<a href='#Cuatro'
onClick='xajax_SelecManArea((\"$reg->par_Codigo\"))'>
<ul >
<li >$reg-
>par_Nombre</li>
<li >$reg-
>par_Abreviatura</li>
<li >$reg-
>per_Apellidos $reg->per_Nombres</li>
</ul>
</a>

";
}

$paginas.="

<li >
<a href='#Cuatro' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$ii)'><img
src='img/inicio.png'/></a>
<a href='#Cuatro' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imenos)'><i
mg src='img/atras.png'/></a>
<a href='#Cuatro' id='aPerAdelante'
name='aPerAdelante'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imas)'><img
src='img/adelante.png'/></a>

216
<a href='#Cuatro' id='aPerFin' name='aPerFin'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$if)'><img
src='img/fin.png'/></a>
<a href='#Cuatro' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantAreaNuevo()'><img src='img/add.png'/></a>
<label >CANTIDAD DE REGISTROS: $numFila
</label>
</li>

";

$tbResultado=utf8_encode($tbResultado);
$paginas=utf8_encode($paginas);
}
else
{
$tbResultado.=
" <a href='#Tres' >
<ul
class='filaTablaRes'>
<li >No se encuentran
resultados para su busqueda</li>
<li >No se encuentran
resultados para su busqueda</li>
<li >No se encuentran
resultados para su busqueda</li>
</ul>
</a>

";
$paginas.="

<li >
<a href='#Cuatro' id='aPerInicio' name='aPerInicio'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$ii)'><img
src='img/inicio.png'/></a>
<a href='#Cuatro' id='aPerAtras' name='aPerAtras'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imenos)'><i
mg src='img/atras.png'/></a>
<a href='#Cuatro' id='aPerAdelante'
name='aPerAdelante'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$imas)'><img
src='img/adelante.png'/></a>
<a href='#Cuatro' id='aPerFin' name='aPerFin'
onclick='xajax_MantArea(xajax.getFormValues(\"fmrManUsuArea\"),$if)'><img
src='img/fin.png'/></a>
<a href='#Cuatro' id='aPerAgregar' name='aPerAgregar'
onClick='xajax_MantAreaNuevo()'><img src='img/add.png'/></a>

217
<label class='lblCantidadRegistros'>CANTIDAD DE
REGISTROS: $numFila </label>
</li>

";
}

$objResp = new xajaxResponse();


$objResp->assign("SecMantArea","innerHTML",$tbResultado);
$objResp->assign("SecMantAreaPie","innerHTML",$paginas);
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

return $objResp;
}

function SelecManArea($idCodUsu)
{
global $conexion;

$consult = "SELECT *FROM tbpersona_area tba


LEFT JOIN tbpersona tbp on tba.par_Codigo=tbp.per_par_Codigo
where par_Codigo='$idCodUsu'";
$result = $conexion->query($consult);
$reg=$result->fetch_object();

$HidetxtManAreaCodigoArea=$reg->par_Codigo;

$txtManAreaNombre=$reg->par_Nombre;
$txtManAreaNombreAbre=$reg->par_Abreviatura;

$txtManAreaNombreJefe=$reg->per_Apellidos." ".$reg-
>per_Nombres;
$stnManUsuBoton="<button onClick='SelecManAreaActualizar();
return false;'>ACTUALIZAR</button>";

218
$objResp=new xajaxResponse();

$objResp->assign("HidetxtManAreaNombreJefe","value","");
$objResp->assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

$objResp->addEvent("txtManAreaNombreJefe",
'onKeyUp',"ManAreaPersona()");

$objResp-
>assign("HidetxtManAreaCodigoArea","value",$HidetxtManAreaCodigoArea);
$objResp-
>assign("txtManAreaNombre","value",utf8_encode($txtManAreaNombre));
$objResp-
>assign("txtManAreaNombreAbre","value",utf8_encode($txtManAreaNombreAbre))
;
$objResp-
>assign("txtManAreaNombreJefe","value",utf8_encode($txtManAreaNombreJefe));
$objResp->assign("stnManAreaBuscar","style.display","none");

$objResp-
>assign("stnManUsuBotonArea","innerHTML",$stnManUsuBoton);

return $objResp;
}

function MantAreaNuevo()
{
global $conexion;

$consult="SELECT are_Codigo , LEFT( are_Codigo, 3 ) AS Nom,


RIGHT( are_Codigo, 7 ) AS Num
FROM tbarea ORDER BY are_Codigo DESC
LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

219
if($num<10){
$nombre=$nom."000000".$num;
}else if($num<100 && $num>=10){
$nombre=$nom."00000".$num;
}if($num<1000 && $num>=100){
$nombre=$nom."0000".$num;
}if($num<10000 && $num>=1000){
$nombre=$nom."000".$num;
}if($num<100000 && $num>=10000){
$nombre=$nom."00".$num;
}if($num<1000000 && $num>=100000){
$nombre=$nom."0".$num;
}

$stnManUsuBoton="<a href='#Dos'><button
onClick='SelecManAreaGuardar(); return false;'>GRABAR</button></a>";

$objResp=new xajaxResponse();

$objResp->assign("HidetxtManAreaNombreJefe","value","");
$objResp->assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp->assign("txtManAreaNombreAbre","value","");
$objResp->assign("txtManAreaNombreJefe","value","");

$objResp->assign("HidetxtManAreaCodigoArea","value",$nombre);

$objResp->addEvent("txtManAreaNombreJefe",
'onKeyUp',"ManAreaPersona()");

$objResp-
>assign("stnManUsuBotonArea","innerHTML",$stnManUsuBoton);

//$objResp-
>assign("txtdde_per_Codigo","value",$HideDerivadoCodHistorial);
//$objResp->script('habilitarFormSGDCargarSolu();');
//$objResp-
>assign("SecManUsuarioCheck","innerHTML",$SecManUsuarioCheck);
return $objResp;
}

220
function ManAreaPersona($fmrManUsuArea,$page=1)
{
global $conexion;

$txtUsuPersona=utf8_decode($fmrManUsuArea['txtManAreaNombreJefe']);

if($txtUsuPersona==""){
$objResp = new xajaxResponse();
$objResp-
>assign("stnManAreaBuscar","style.display","none");
$objResp-
>assign("stnManAreaBuscarRes","innerHTML","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
return $objResp;
}

$cantFila=5;

$consult = "select * from tbpersona tbp


left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%'";
$result = $conexion->query($consult);
$numFila=$result->num_rows;

$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult ="select * from tbpersona tbp
left join tbusuario tbu on tbp.per_Codigo=tbu.usu_per_Codigo
where per_Apellidos LIKE '%$txtUsuPersona%' limit $iniPage,$cantFila";
$result = $conexion->query($consult);

$imas=$page+1;

if($imas>=$cantPage)
{

221
$imas=$cantPage;
}
$imenos=$page-1;

if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;

$tbResultado="";
$paginas="";

if($numFila<>"")
{

while($reg=$result->fetch_object())
{

$tbResultado.=
"
<a href='#Cuatro'
onClick='xajax_ManAreaSelecPersona((\"$reg->per_Codigo\"))'>
<ul >

<li >$reg->per_DNI</li>

<li >$reg->per_Apellidos $reg->per_Nombres</li>

</ul>
</a>

";
}

$tbResultado=utf8_encode($tbResultado);

}
else
{
$tbResultado.=
"
<a href='#Cuatro' onClick=''>
<ul >

222
<li>No se
encuentran resultados para su busqueda</li>
<li>No se
encuentran resultados para su busqueda</li>
</ul>
</a>
";
}

$objResp = new xajaxResponse();


$objResp->assign("stnManAreaBuscar","style.display","");
$objResp-
>assign("stnManAreaBuscarRes","innerHTML",$tbResultado);
$objResp->assign("stnManAreaBuscar","style.display","");

return $objResp;

function ManAreaSelecPersona($idPer)
{
global $conexion;
$consult = "select *, LEFT( per_Nombres, 1 ) AS Nom from tbpersona
where per_Codigo='$idPer' ";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$reg=$result->fetch_object();
$txtUsuPersona=$reg->per_Apellidos." ".$reg->per_Nombres;
$usuarioNom=$reg->Nom;

$objResp = new xajaxResponse();

$objResp-
>assign("txtManAreaNombreJefe","value",utf8_encode($txtUsuPersona));
$objResp->assign("HidetxtManAreaNombreJefe","value",$idPer);

$objResp->assign("stnManAreaBuscar","style.display","none");

223
return $objResp;

function SelecManAreaGuardar($fmrManUsuArea){

global $conexion;

$HidetxtManAreaNombreJefe=$fmrManUsuArea['HidetxtManAreaNombreJe
fe'];

$HidetxtManAreaCodigoArea=$fmrManUsuArea['HidetxtManAreaCodigoAr
ea'];

$txtManAreaNombre=$fmrManUsuArea['txtManAreaNombre'];
$txtManAreaNombreAbre=$fmrManUsuArea['txtManAreaNombreAbre'];

if($txtManAreaNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba un area");
return $objResp;
}

if($txtManAreaNombreAbre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba una abreviatura");
return $objResp;
}

$txtManAreaNombre=strtoupper($txtManAreaNombre);

$txtManAreaNombreAbre=strtoupper($txtManAreaNombreAbre);

224
$consult="insert into tbarea
(are_Codigo,are_Nombre,are_Abreviatura,are_Jefe)

values('$HidetxtManAreaCodigoArea','$txtManAreaNombre','$txtManAreaNombreA
bre','$HidetxtManAreaNombreJefe')";
$conexion->query($consult);

$objResp = new xajaxResponse();


$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp-
>assign("txtManAreaNombreAbre","value","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp->script('MantArea();');

return $objResp;

}
function SelecManAreaActualizar($fmrManUsuArea){

global $conexion;

$HidetxtManAreaNombreJefe=$fmrManUsuArea['HidetxtManAreaNombreJe
fe'];

$HidetxtManAreaCodigoArea=$fmrManUsuArea['HidetxtManAreaCodigoAr
ea'];

$txtManAreaNombre=$fmrManUsuArea['txtManAreaNombre'];
$txtManAreaNombreAbre=$fmrManUsuArea['txtManAreaNombreAbre'];

if($txtManAreaNombre==""){

225
$objResp = new xajaxResponse();
$objResp->alert("Escriba un area");
return $objResp;
}

if($txtManAreaNombreAbre==""){
$objResp = new xajaxResponse();
$objResp->alert("Escriba una abreviatura");
return $objResp;
}

$txtManAreaNombre=strtoupper($txtManAreaNombre);

$txtManAreaNombreAbre=strtoupper($txtManAreaNombreAbre);

$consult=" update tbarea set


are_Nombre='$txtManAreaNombre',
are_Abreviatura='$txtManAreaNombreAbre',
are_Jefe='$HidetxtManAreaNombreJefe'
where are_Codigo='$HidetxtManAreaCodigoArea'";
$conexion->query($consult);

$objResp = new xajaxResponse();


$objResp-
>assign("HidetxtManAreaNombreJefe","value","");
$objResp-
>assign("HidetxtManAreaCodigoArea","value","");
$objResp->assign("txtManAreaNombre","value","");
$objResp-
>assign("txtManAreaNombreAbre","value","");
$objResp-
>assign("txtManAreaNombreJefe","value","");
$objResp->script('MantArea();');

return $objResp;

226
////////////////////////////////////////////////////////////////////////////////////////////////////

$fGuardarDocTipo=& $xajax->registerFunction('GuardarDocTipo');
$fGuardarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fAgregarDocTipo =& $xajax->registerFunction('AgregarDocTipo');


$fAgregarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fModificarDocTipo =& $xajax->registerFunction('ModificarDocTipo');


$fModificarDocTipo-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fcancelDocTipo =& $xajax->registerFunction('cancelDocTipo');

$fSec_slc_mandoc =& $xajax->registerFunction('Sec_slc_mandoc');


$fslcMandocPlantilla =& $xajax->registerFunction('slcMandocPlantilla');

$fHideslcMandocPlantilla =& $xajax->registerFunction('HideslcMandocPlantilla');

$fAgregarDocTipoPlantilla =& $xajax->registerFunction('AgregarDocTipoPlantilla');

227
$fAgregarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fModificarDocTipoPlantilla =& $xajax-


>registerFunction('ModificarDocTipoPlantilla');
$fModificarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fcancelDocTipoPlantilla =& $xajax->registerFunction('cancelDocTipoPlantilla');

$fGuardarDocTipoPlantilla=& $xajax->registerFunction('GuardarDocTipoPlantilla');
$fGuardarDocTipoPlantilla-
>setParameter(0,XAJAX_FORM_VALUES,'FrmActualizarPlantilla');

$fMantUsuario=& $xajax->registerFunction('MantUsuario');
$fMantUsuario->setParameter(0,XAJAX_FORM_VALUES,'FrmManUsuarioBus');

$fSolucionarManUsu=& $xajax->registerFunction('SolucionarManUsu');

$fMantUsuarioNuevo=& $xajax->registerFunction('MantUsuarioNuevo');

$fManUsuPersona=& $xajax->registerFunction('ManUsuPersona');
$fManUsuPersona->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fManUsuSelecPersona=& $xajax->registerFunction('ManUsuSelecPersona');

$fSelecManUsu=& $xajax->registerFunction('SelecManUsu');

$fSelecManUsuarioGuardar=& $xajax-
>registerFunction('SelecManUsuarioGuardar');
$fSelecManUsuarioGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fSelecManUsuarioActualizar=& $xajax-
>registerFunction('SelecManUsuarioActualizar');
$fSelecManUsuarioActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuDatos');

$fMantPeriodo=& $xajax->registerFunction('MantPeriodo');
$fMantPeriodo->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fMantPeriodoNuevo=& $xajax->registerFunction('MantPeriodoNuevo');

228
$fSelecManPeriodoGuardar=& $xajax-
>registerFunction('SelecManPeriodoGuardar');
$fSelecManPeriodoGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fSelecManPeriodoActualizar=& $xajax-
>registerFunction('SelecManPeriodoActualizar');
$fSelecManPeriodoActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuPeriodo');

$fMantArea=& $xajax->registerFunction('MantArea');
$fMantArea->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fSelecManArea=& $xajax->registerFunction('SelecManArea');

$fSelecManAreaGuardar=& $xajax->registerFunction('SelecManAreaGuardar');
$fSelecManAreaGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fSelecManAreaActualizar=& $xajax->registerFunction('SelecManAreaActualizar');
$fSelecManAreaActualizar-
>setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fManAreaPersona=& $xajax->registerFunction('ManAreaPersona');
$fManAreaPersona->setParameter(0,XAJAX_FORM_VALUES,'fmrManUsuArea');

$fManAreaSelecPersona=& $xajax->registerFunction('ManAreaSelecPersona');

$fMantAreaNuevo=& $xajax->registerFunction('MantAreaNuevo');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";
?>

- modPerfil
<?php session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];
$perCodigo=$_SESSION['perCodigo'];
$perParCodigo=$_SESSION["perParCodigo"];

include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

229
$xajax=new xajax();
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

function MostrarPerfil()
{
session_start();
$perCodigo=$_SESSION['perCodigo'];

global $conexion;

$consult =
"
SELECT * FROM tbusuario tbus

RIGHT JOIN tbpersona tbp ON tbus.usu_per_Codigo =


tbp.per_Codigo
LEFT JOIN tbpersona_razonsocial tbprz ON
tbp.per_prs_Codigo = tbprz.prs_Codigo
LEFT JOIN tbpersona_prefijo tbppj ON tbp.per_ppr_Codigo =
tbppj.ppr_Codigo
LEFT JOIN tbpersona_cargo tbpca ON tbp.per_pca_Codigo =
tbpca.pca_Codigo

LEFT JOIN tbpersona_tipo tbtp ON tbp.per_pti_Codigo =


tbtp.pti_Codigo
LEFT JOIN tbpersona_area tba ON tbp.per_Codigo =
tba.par_per_Codigo
INNER JOIN tbarea tbar on
tba.par_are_Codigo=tbar.are_Codigo

where per_Codigo='$perCodigo'
";
$result = $conexion->query($consult);
$reg=$result->fetch_object();

$tipoem=$reg->per_TipoEmpresa;
$per_direc=$reg->per_pdi_Codigo;

//INNER JOIN tbpersona_direccion tbu ON


tbp.per_pdi_Codigo = tbu.pdi_Codigo
//INNER JOIN tbpersona_distrito tbd on
tbu.pdi_dis_Codigo=tbd.dis_Codigo
//INNER JOIN tbpersona_provincia tbpr on
tbd.dis_pro_Codigo=tbpr.pro_Codigo

230
//INNER JOIN tbpersona_departamento tbdp on
tbpr.pro_dep_Codigo=tbdp.dep_Codigo

$consult8 = "select * from tbpersona_direccion tbu


inner join tbpersona_distrito tbd on
tbu.pdi_dis_Codigo=tbd.dis_Codigo
inner join tbpersona_provincia tbp on
tbd.dis_pro_Codigo=tbp.pro_Codigo
inner join tbpersona_departamento tbdp on
tbp.pro_dep_Codigo=tbdp.dep_Codigo WHERE pdi_Codigo='$per_direc'";
$result8 = $conexion->query($consult8);

$consult9 = "select * from tbpersona_departamento";


$result9 = $conexion->query($consult9);

$tbDirecciondep = "";
$tbDireccionpro = "";
$tbDirecciondis = "";

while($reg8=$result8->fetch_object())
{
$codDireccion=$reg8->pdi_Codigo;
$codpro=$reg8->pro_dep_Codigo;
$coddis=$reg8->dis_pro_Codigo ;
$CodUbigeo=$reg8->pdi_dis_Codigo;

$consult10 = "select * from tbpersona_provincia where


pro_dep_Codigo='$codpro' ";
$result10 = $conexion->query($consult10);

$consult11 = "select * from tbpersona_distrito where


dis_pro_Codigo='$coddis' ";
$result11 = $conexion->query($consult11);

$tbDirecciondep.="
<select id='slc_PerUbigeoDepartamento'
name='slc_PerUbigeoDepartamento' onChange='xajax_slc_Provincia(this.value)'>
";

231
while($reg9=$result9->fetch_object())
{

if($reg8->dep_Nombre<>$reg9-
>dep_Nombre){
$tbDirecciondep.=
"<option value='$reg9-
>dep_Codigo'>$reg9->dep_Nombre</option>
";
}else{
$tbDirecciondep.="<option value='$reg9-
>dep_Codigo' selected>$reg9->dep_Nombre</option>
";
}

$tbDirecciondep.="</select>";

$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
";
while($reg10=$result10->fetch_object())
{
if($reg8->pro_Nombre<>$reg10-
>pro_Nombre){
$tbDireccionpro.=
"<option value='$reg10-
>pro_Codigo'>$reg10->pro_Nombre</option>
";
}else{
$tbDireccionpro.="<option
value='$reg10->pro_Codigo' selected>$reg10->pro_Nombre</option>
";
}
}
$tbDireccionpro.="</select>";

$tbDirecciondis.="

<select id='slc_PerUbigeoDistrito'
name='slc_PerUbigeoDistrito' class='slcDatoPersona'>
";
while($reg11=$result11->fetch_object())
{

if($reg8-
>dis_Nombre<>$reg11->dis_Nombre){

232
$tbDirecciondis.=
"<option value='$reg11-
>dis_Codigo'>$reg11->dis_Nombre</option>
";
}else{
$tbDirecciondis.="<option
value='$reg11->dis_Codigo' selected>$reg11->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";

//

$consult12 = "select * from tbpersona_direccion tbd


inner join tbpersona_via tbp on
tbd.pdi_pvi_Codigo=tbp.pvi_Codigo
inner join tbpersona_zona tbtz on
tbd.pdi_pzo_Codigo=tbtz.pzo_Codigo WHERE pdi_Codigo='$per_direc'";
$result12 = $conexion->query($consult12);

$consult13 = "select * from tbpersona_zona";


$result13 = $conexion->query($consult13);

$consult14 = "select * from tbpersona_via";


$result14 = $conexion->query($consult14);

$tbDireccionzona="";
$tbDireccionvia= "";
while($reg12=$result12->fetch_object())
{
$dirnum=$reg12->pdi_Numero;
$dirpis=$reg12->pdi_Piso;
$dirint=$reg12->pdi_Interio;

$nombrezona=$reg12->pdi_NombreZona;
$nombrevia=$reg12->pdi_NombreVia;
$dirman=utf8_encode($reg12->pdi_Manzana );
$dilote=utf8_encode($reg12->pdi_Lote );
$tbDireccionzona.="
<select id='slc_PerUbigeoDirTipoZona'
name='slc_PerUbigeoDirTipoZona' class='slcDatoPersona'>
";
while($reg13=$result13->fetch_object())

233
{

if($reg12-
>pdi_pzo_Codigo<>$reg13->pzo_Codigo){
$tbDireccionzona.=
"<option value='$reg13-
>pzo_Codigo'>$reg13->pzo_Nombre</option>
";
}else{

$tbDireccionzona.="<option value='$reg13->pzo_Codigo' selected>$reg13-


>pzo_Nombre</option>
";
}

$tbDireccionzona.="</select>
";

$tbDireccionvia.="

<select id='slc_PerUbigeoDirTipoVia'
name='slc_PerUbigeoDirTipoVia' class='slcDatoPersona'>
";
while($reg14=$result14->fetch_object())
{

if($reg12-
>pdi_pvi_Codigo<>$reg14->pvi_Codigo){
$tbDireccionvia.=
"<option value='$reg14-
>pvi_Codigo'>$reg14->pvi_Nombre</option>
";
}else{
$tbDireccionvia.="<option
value='$reg14->pvi_Codigo' selected>$reg14->pvi_Nombre</option>
";
}

$tbDireccionvia.="</select>";
}

234
$aleatorio = rand (1,1000000);

$SecImg="<img onClick=''
src='../upload/tbpersona/$perCodigo.jpg?random=".$aleatorio."' width='150'
height='150'>

<input type='button' name='botonagregar' id='botonagregar' class='btn'


onClick='xajax_MostrarImg()' value='CAMBIAR'/>
";

$objResp = new xajaxResponse();


$objResp->assign("txtUsuNombre","value",utf8_encode($reg-
>usu_Nombre));
$objResp-
>assign("slcPerTipoEmpresa","value",utf8_encode($tipoem));

if($tipoem=="PERSONA NATURAL"){

$objResp->assign("txtPerRazonSocial","disabled",true);
$objResp->assign("slcPerRazonSocial","disabled",true);
$objResp->assign("txtPerRUC","disabled",true);

else{
$objResp->assign("txtPerRazonSocial","value",utf8_encode($reg-
>per_RazonSocial));
$objResp->assign("slcPerRazonSocial","value",utf8_encode($reg-
>prs_Abreviatura));

235
$objResp->assign("txtPerRUC","value",utf8_encode($reg-
>per_RUC));
}

$objResp->assign("slcPerPrefijo","value",utf8_encode($reg-
>ppr_Nombre));
$objResp->assign("txtPerNombre","value",utf8_encode($reg-
>per_Nombres));
$objResp->assign("txtPerApellidos","value",utf8_encode($reg-
>per_Apellidos));
$objResp->assign("slcPerSexo","value",utf8_encode($reg-
>per_Sexo));
$objResp->assign("txtPerDNI","value",utf8_encode($reg->per_DNI));
$objResp->assign("txtPerDNICaducidad","value",utf8_encode($reg-
>per_DNICaducidad));
$objResp->assign("txtPerNacimiento","value",utf8_encode($reg-
>per_Nacimiento));

$objResp->assign("slcPerCargo","value",utf8_encode($reg-
>pca_Nombre));
$objResp->assign("slcPerTipo","value",utf8_encode($reg-
>pti_Nombre ));
$objResp->assign("slcPerArea","value",utf8_encode($reg-
>are_Nombre));

$objResp->assign("txt_PerNumTelefono","value",utf8_encode($reg-
>per_Telefono));
$objResp->assign("txt_PerEmail","value",utf8_encode($reg-
>per_Email));

$objResp-
>assign("SecUbigeoDepPer","innerHTML",utf8_encode($tbDirecciondep));
$objResp-
>assign("SecUbigeoProPer","innerHTML",utf8_encode($tbDireccionpro));
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
$objResp-
>assign("SecUbigeoZonaPer","innerHTML",utf8_encode($tbDireccionzona));
$objResp-
>assign("SecUbigeoViaPer","innerHTML",utf8_encode($tbDireccionvia));
$objResp->assign("txt_PerUbigeoDirNumero","value",$dirnum);
$objResp->assign("txt_PerUbigeoDirPiso","value",$dirpis);
$objResp->assign("txt_PerUbigeoDirInterior","value",$dirint);
$objResp->assign("txt_PerUbigeoDirManzana","value",$dirman);
$objResp->assign("txt_PerUbigeoDirLote","value",$dilote);

$objResp->assign("txt_PerUbigeoDirZona","value",$nombrezona);
$objResp->assign("txt_PerUbigeoDirVia","value",$nombrevia);

236
$objResp->assign("SecImg","innerHTML",$SecImg);

return $objResp;
}

////////////////GUARDAR USUARIO////////////////////////
function CambioClave($frmUsuario){
global $conexion;

$txtUsuNombre=$frmUsuario['txtUsuNombre'];
$txtUsuContrasena=$frmUsuario['txtUsuContrasena'];

$consulta =
"
SELECT * FROM tbusuario
WHERE usu_Nombre = '". $txtUsuNombre ."' and
usu_Contrasena = '". $txtUsuContrasena ."'
";
$resultado = $conexion->query($consulta);
$nFila=$resultado->num_rows;
$registro=$resultado->fetch_object();
$usuCodigo=$registro->usu_Codigo;
if($nFila<>1){
$objResp=new xajaxResponse();
$objResp->alert("Contraseña Actual
INCORRECTA");
$objResp->assign("txtUsuContrasena","value","");
$objResp->assign("txtUsuContrasenaN","value","");
$objResp->assign("txtUsuContrasenaNR","value","");
return $objResp;

237
}

$txtUsuContrasenaN=$frmUsuario['txtUsuContrasenaN'];
$txtUsuContrasenaNR=$frmUsuario['txtUsuContrasenaNR'];

if($txtUsuContrasenaN==""){
$objResp=new xajaxResponse();
$objResp->alert("Escriba una contraseña");
$objResp->assign("txtUsuContrasena","value","");
$objResp->assign("txtUsuContrasenaN","value","");
$objResp->assign("txtUsuContrasenaNR","value","");

return $objResp;
}

if($txtUsuContrasenaNR==""){
$objResp=new xajaxResponse();
$objResp->alert("Escriba una contraseña nueva");
$objResp->assign("txtUsuContrasena","value","");
$objResp->assign("txtUsuContrasenaN","value","");
$objResp->assign("txtUsuContrasenaNR","value","");

return $objResp;
}

if($txtUsuContrasenaN<>$txtUsuContrasenaNR){
$objResp=new xajaxResponse();
$objResp->alert("Contraseña Nueva no
COINCIDEN");
$objResp->assign("txtUsuContrasena","value","");
$objResp->assign("txtUsuContrasenaN","value","");
$objResp->assign("txtUsuContrasenaNR","value","");

return $objResp;
}

$txtUsuNombre=strtolower($txtUsuNombre);

$consult="update tbusuario set


usu_Contrasena='$txtUsuContrasenaNR' where usu_Codigo='$usuCodigo'";
$conexion->query($consult);

238
$consult1="SET PASSWORD FOR
'$txtUsuNombre'@'localhost' = PASSWORD('$txtUsuContrasenaNR')";
$conexion->query($consult1);

session_start();
$_SESSION["usuContrasena"]=$txtUsuContrasenaNR;

$objResp=new xajaxResponse();
$objResp->alert("CLAVE SE CAMBIO CON EXITO");
$objResp->assign("txtUsuContrasena","value","");
$objResp->assign("txtUsuContrasenaN","value","");
$objResp->assign("txtUsuContrasenaNR","value","");
return $objResp;

function slc_Provincia($iddepartamen){

global $conexion;

$consult = "SELECT * FROM tbpersona_provincia where


pro_dep_Codigo='$iddepartamen'";
$result = $conexion->query($consult);
$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDireccionpro.=
"<option value='$reg-
>pro_Codigo'>".htmlentities ($reg->pro_Nombre)."</option>
";
}

$tbDireccionpro.="</select>";
$tbDireccionpro=utf8_encode($tbDireccionpro);

$objResp = new xajaxResponse();


$objResp-
>assign("SecUbigeoProPer","innerHTML",$tbDireccionpro);
return $objResp;

239
}

function slc_Distrito($iddistrito){

global $conexion;

$consult = "SELECT * FROM tbpersona_distrito where


dis_pro_Codigo='$iddistrito'";
$result = $conexion->query($consult);
$tbDirecciondis.="
<select id='slc_PerUbigeoDistrito' name='slc_PerUbigeoDistrito'
class='slcDatoPersona'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDirecciondis.=
"<option value='$reg-
>dis_Codigo'>$reg->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";
$objResp = new xajaxResponse();
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
return $objResp;
}

function MostrarImg($iddistrito){

$tbDato="

<div class='upload_form_cont'>
<form id='upload_form' enctype='multipart/form-data' method='post'
action='../class/uploadImg.php'>
<div>
<div><label for='image_file'>Seleccione Imagen</label></div>
<div><input type='file' name='image_file' id='image_file'
accept='image/*' onChange='fileSelected();' /></div>
</div>

240
<div>
<img id='preview' height='140' width='140' />
<input type='button' value='SUBIR' onClick='startUploading()' />
</div>
<div id='fileinfo'>
<div id='filesize'></div>
<div id='filetype'></div>
<div id='filedim'></div>
</div>
<div id='error'>Usted debe seleccionar los archivos de imagen válidos
solamente!</div>
<div id='error2'>Se ha producido un error al cargar el archivo</div>
<div id='abort'>La carga ha sido cancelada por el usuario o el navegador
cortado la conexión</div>
<div id='warnsize'>El archivo es muy grande. No podemos aceptarlo. Por
favor seleccione más pequeño archivo</div>

<div id='progress_info'>
<div id='progress'></div>
<div id='progress_percent'>&nbsp;</div>
<div class='clear_both'></div>
<div>
<div id='speed'>&nbsp;</div>
<div id='remaining'>&nbsp;</div>
<div id='b_transfered'>&nbsp;</div>
<div class='clear_both'></div>
</div>
<div id='upload_response'></div>
</div>
</form>

</div>

";

$objResp = new xajaxResponse();


$objResp-
>assign("SecCambiarImg","innerHTML",utf8_encode($tbDato));
return $objResp;
}

function EditarPer($frmPersona){

241
global $conexion;

session_start();
$perCodigo=$_SESSION['perCodigo'];
$pdi_Codigo=$_SESSION['pdi_Codigo'];

$txt_PerNumTelefono=$frmPersona['txt_PerNumTelefono'];
$txt_PerEmail=$frmPersona['txt_PerEmail'];

$slc_PerUbigeoDistrito=$frmPersona['slc_PerUbigeoDistrito'];

$slc_PerUbigeoDirTipoZona=$frmPersona['slc_PerUbigeoDirTipoZona'];

$txt_PerUbigeoDirZona=utf8_decode($frmPersona['txt_PerUbigeoDirZona']);
$slc_PerUbigeoDirTipoVia=$frmPersona['slc_PerUbigeoDirTipoVia'];
$txt_PerUbigeoDirVia=$frmPersona['txt_PerUbigeoDirVia'];
$txt_PerUbigeoDirNumero=$frmPersona['txt_PerUbigeoDirNumero'];

$txt_PerUbigeoDirPiso=utf8_decode($frmPersona['txt_PerUbigeoDirPiso']);

$txt_PerUbigeoDirInterior=utf8_decode($frmPersona['txt_PerUbigeoDirInteri
or']);

$txt_PerUbigeoDirManzana=$frmPersona['txt_PerUbigeoDirManzana'];
$txt_PerUbigeoDirLote=$frmPersona['txt_PerUbigeoDirLote'];

if($txt_PerUbigeoDirLote==""){
$txt_PerUbigeoDirLote=0;
}

if($txt_PerUbigeoDirNumero==""){
$txt_PerUbigeoDirNumero=0;
}

if($txt_PerUbigeoDirPiso==""){
$txt_PerUbigeoDirPiso=0;
}

$txt_PerUbigeoDirZona=strtoupper($txt_PerUbigeoDirZona);
$txt_PerUbigeoDirVia=strtoupper($txt_PerUbigeoDirVia);

242
$txt_PerUbigeoDirManzana=strtoupper($txt_PerUbigeoDirManzana);

$objResp=new xajaxResponse();

$consult="update tbpersona set


per_Email='$txt_PerEmail',
per_Telefono=$txt_PerNumTelefono
where per_Codigo='$perCodigo'";
$conexion->query($consult);

$consult5="update tbpersona_direccion set


pdi_dis_Codigo='$slc_PerUbigeoDistrito',
pdi_pzo_Codigo='$slc_PerUbigeoDirTipoZona',
pdi_NombreZona='$txt_PerUbigeoDirZona',
pdi_pvi_Codigo='$slc_PerUbigeoDirTipoVia',
pdi_NombreVia='$txt_PerUbigeoDirVia',
pdi_Numero=$txt_PerUbigeoDirNumero,
pdi_Piso=$txt_PerUbigeoDirPiso,
pdi_Interior='$txt_PerUbigeoDirInterior',
pdi_Manzana='$txt_PerUbigeoDirManzana',
pdi_Lote=$txt_PerUbigeoDirLote
where pdi_Codigo='$pdi_Codigo'";
$conexion->query($consult5);

$objResp->alert("Actualizar Exitoso");
$objResp->script("MostrarPerfil()");
return $objResp;

$fMostrarPerfil =& $xajax->registerFunction('MostrarPerfil');

$fCambioClave =& $xajax->registerFunction('CambioClave');

243
$fCambioClave->setParameter(0,XAJAX_FORM_VALUES,'frmUsuario');

$fEditarPer =& $xajax->registerFunction('EditarPer');


$fEditarPer->setParameter(0,XAJAX_FORM_VALUES,'frmPersona');

$fslc_Provincia =& $xajax->registerFunction('slc_Provincia');


$fslc_Provincia =& $xajax->registerFunction('slc_Distrito');

$fMostrarImg =& $xajax->registerFunction('MostrarImg');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";
?>

244
- modPersona
<?php
session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];
$perCodigo=$_SESSION['perCodigo'];
$perParCodigo=$_SESSION["perParCodigo"];

include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

$xajax=new xajax();
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

function perBuscar($txtperApellido, $page=1)


{
global $conexion;
$cantFila=17;

$txt_PerBuscarApellido=utf8_decode($txtperApellido["txt_PerBuscarApellid
o"]);
$consult =
"
SELECT * FROM tbpersona tbp
LEFT JOIN tbpersona_tipo tbtp ON tbp.per_pti_Codigo =
tbtp.pti_Codigo
LEFT JOIN tbpersona_area tba ON tbp.per_Codigo =
tba.par_per_Codigo
INNER JOIN tbarea tbar on
tba.par_are_Codigo=tbar.are_Codigo
where concat_ws(' ', per_Apellidos, per_Nombres) LIKE
'%$txt_PerBuscarApellido%'

";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult = $consult . "limit $iniPage,$cantFila";
$result = $conexion->query($consult);
$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

245
if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;
$tbResultado="";
$paginas="";

if($numFila<>"")
{
while($reg=$result->fetch_object())
{
$idcodper=$reg->per_Codigo;
$idTipoEmpresaNJ=$reg->per_TipoEmpresa;

if($idTipoEmpresaNJ=="PERSONA JURIDICA"){
$habilitarFormPerRS="habilitarFormPerJ";
}else{
$habilitarFormPerRS="habilitarFormPerN";
}

$s=$reg->per_Sexo;

if($s=="M"){
$s="M";
}else {
$s="F";
}

$tbResultado.=
"
<ul class='fila'>
<a href='#tab2'
onclick='xajax_MostrarPerBus((\"$reg->per_Codigo\"));'>
<li>$reg->per_Codigo</li>
<li>$reg->per_Apellidos</li>
<li>$reg->per_Nombres</li>
<li>$reg->per_DNI</li>
<li>$s</li>
<li>$reg->pti_Nombre</li>
<li>$reg->are_Abreviatura</li>
</a>
</ul>
";
}

$secPie.=

246
"

<ul class='fila'>
<li>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$ii)'><img
src='../img/inicio.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$imenos)'><img
src='../img/atras.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$imas)'><img
src='../img/adelante.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$if)'><img
src='../img/fin.png'/></a>
<a href='#tab2' name='nuevoper'
onclick='xajax_nuevoPerBus()'><img src='../img/agregar.png'/></a>
</li>
<li>
<label class='lblCantReg'>CANTIDAD
DE REGISTROS: $numFila</label>
</li>

</ul>

";
$tbResultado=utf8_encode($tbResultado);
}

else
{
$tbResultado.=
"
<ul class='fila'>
<li class='coluResultadoMensaje'>
No se encuentran resultados para su
busqueda
</li>
</ul>
";
$paginas.="";
}

$objResp = new xajaxResponse();

247
$objResp->assign("secBuscarPersona","innerHTML",$tbResultado);
$objResp->assign("secPie","innerHTML",$secPie);

$objResp->script(
"
$(function()
{
$('ul.tabs li:first').addClass('active');
$('.block article.rtc').hide();
$('.block article.rtc:first').show();
$('ul.fila').on('click',function()
{
$('ul.tabs li:first').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('.block article.rtc').hide();
var activeTab = $(this).find('a').attr('href');
$(activeTab).show();
return false;
});
})
");
$objResp->script(
"
$(function()
{
$('a[name=nuevoper]').on('click',function()
{
$('ul.tabs li:first').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('article#tab1').hide();
$('article#tab2').show();
return false;
});
})
");
return $objResp;
}

function MostrarPerBus($idPerBus)
{
global $conexion;
$consult =
"
select * from tbpersona tbp
INNER JOIN tbpersona_tipo tbtp ON tbp.per_pti_Codigo =
tbtp.pti_Codigo

248
LEFT JOIN tbpersona_area tba ON tbp.per_Codigo =
tba.par_per_Codigo
INNER JOIN tbarea tbar on
tba.par_are_Codigo=tbar.are_Codigo
where per_Codigo='$idPerBus'
";

$result = $conexion->query($consult);
$reg=$result->fetch_object();
$PerTipo=$reg->per_pti_Codigo;
$PerDireccion=$reg->per_pdi_Codigo;
$HideArea=$reg->par_Codigo;

$consult1 = "SELECT * FROM tbpersona_tipo";


$result1 = $conexion->query($consult1);
$tbTipo = "<select id='slc_PerTipoPersona' name='slc_PerTipoPersona'
>";
while($reg1=$result1->fetch_object())
{
if($PerTipo<>$reg1->pti_Codigo)
{
$tbTipo.=
"
<option value='$reg1-
>pti_Codigo'>".htmlentities($reg1->pti_Nombre)."</option>
";
}
else
{
$tbTipo.=
"
<option value='$reg1->pti_Codigo'
selected>".htmlentities($reg1->pti_Nombre)."</option>
";
}
}
$tbTipo.="</select>";

$consult2 = "SELECT * FROM tbarea";


$result2 = $conexion->query($consult2);
$tbArea = "<select id='slc_PerArea' name='slc_PerArea' >";
while($reg2=$result2->fetch_object())
{
if($reg->par_are_Codigo<>$reg2->are_Codigo){
$tbArea.=
"<option value='$reg2-
>are_Codigo'>".htmlentities($reg2->are_Nombre)."</option>
";
}else{

249
$tbArea.=
"<option value='$reg2->are_Codigo'
selected>".htmlentities($reg2->are_Nombre)."</option>
";}
}
$tbArea.="</select>";

$consult27 = "SELECT * FROM tbpersona_cargo";


$result27 = $conexion->query($consult27);
$tbCargo = "<select id='slc_PerCargo' name='slc_PerCargo' >";
while($reg27=$result27->fetch_object())
{
if($reg->per_pca_Codigo<>$reg27->pca_Codigo){
$tbCargo.=
"<option value='$reg27-
>pca_Codigo'>".htmlentities($reg27->pca_Nombre)."</option>
";
}else{
$tbCargo.=
"<option value='$reg27->pca_Codigo'
selected>".htmlentities($reg27->pca_Nombre)."</option>
";}
}
$tbCargo.="</select>";

$consult8 = "select * from tbpersona_direccion tbu


inner join tbpersona_distrito tbd on
tbu.pdi_dis_Codigo=tbd.dis_Codigo
inner join tbpersona_provincia tbp on
tbd.dis_pro_Codigo=tbp.pro_Codigo
inner join tbpersona_departamento tbdp on
tbp.pro_dep_Codigo=tbdp.dep_Codigo WHERE pdi_Codigo='$PerDireccion'";
$result8 = $conexion->query($consult8);

$consult9 = "select * from tbpersona_departamento";

250
$result9 = $conexion->query($consult9);

$tbDirecciondep = "";
$tbDireccionpro = "";
$tbDirecciondis = "";

while($reg8=$result8->fetch_object())
{
$codDireccion=$reg8->pdi_Codigo;
$codpro=$reg8->pro_dep_Codigo;
$coddis=$reg8->dis_pro_Codigo ;
$CodUbigeo=$reg8->pdi_dis_Codigo;

$consult10 = "select * from tbpersona_provincia where


pro_dep_Codigo='$codpro' ";
$result10 = $conexion->query($consult10);

$consult11 = "select * from tbpersona_distrito where


dis_pro_Codigo='$coddis' ";
$result11 = $conexion->query($consult11);

$tbDirecciondep.="
<select id='slc_PerUbigeoDepartamento'
name='slc_PerUbigeoDepartamento' onChange='xajax_slc_Provincia(this.value)'>
";

while($reg9=$result9->fetch_object())
{

if($reg8->dep_Nombre<>$reg9-
>dep_Nombre){
$tbDirecciondep.=
"<option value='$reg9-
>dep_Codigo'>$reg9->dep_Nombre</option>
";
}else{
$tbDirecciondep.="<option value='$reg9-
>dep_Codigo' selected>$reg9->dep_Nombre</option>
";
}

$tbDirecciondep.="</select>";

$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
";

251
while($reg10=$result10->fetch_object())
{
if($reg8->pro_Nombre<>$reg10-
>pro_Nombre){
$tbDireccionpro.=
"<option value='$reg10-
>pro_Codigo'>$reg10->pro_Nombre</option>
";
}else{
$tbDireccionpro.="<option
value='$reg10->pro_Codigo' selected>$reg10->pro_Nombre</option>
";
}
}
$tbDireccionpro.="</select>";

$tbDirecciondis.="

<select id='slc_PerUbigeoDistrito'
name='slc_PerUbigeoDistrito' class='slcDatoPersona'>
";
while($reg11=$result11->fetch_object())
{

if($reg8-
>dis_Nombre<>$reg11->dis_Nombre){
$tbDirecciondis.=
"<option value='$reg11-
>dis_Codigo'>$reg11->dis_Nombre</option>
";
}else{
$tbDirecciondis.="<option
value='$reg11->dis_Codigo' selected>$reg11->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";

//

$consult12 = "select * from tbpersona_direccion tbd


inner join tbpersona_via tbp on
tbd.pdi_pvi_Codigo=tbp.pvi_Codigo
inner join tbpersona_zona tbtz on
tbd.pdi_pzo_Codigo=tbtz.pzo_Codigo WHERE pdi_Codigo='$PerDireccion'";

252
$result12 = $conexion->query($consult12);

$consult13 = "select * from tbpersona_zona";


$result13 = $conexion->query($consult13);

$consult14 = "select * from tbpersona_via";


$result14 = $conexion->query($consult14);

$tbDireccionzona="";
$tbDireccionvia= "";
while($reg12=$result12->fetch_object())
{
$dirnum=$reg12->pdi_Numero;
$dirpis=$reg12->pdi_Piso;
$dirint=$reg12->pdi_Interio;

$nombrezona=$reg12->pdi_NombreZona;
$nombrevia=$reg12->pdi_NombreVia;
$dirman=utf8_encode($reg12->pdi_Manzana );
$dilote=utf8_encode($reg12->pdi_Lote );
$tbDireccionzona.="
<select id='slc_PerUbigeoDirTipoZona'
name='slc_PerUbigeoDirTipoZona' class='slcDatoPersona'>
";
while($reg13=$result13->fetch_object())
{

if($reg12-
>pdi_pzo_Codigo<>$reg13->pzo_Codigo){
$tbDireccionzona.=
"<option value='$reg13-
>pzo_Codigo'>$reg13->pzo_Nombre</option>
";
}else{

$tbDireccionzona.="<option value='$reg13->pzo_Codigo' selected>$reg13-


>pzo_Nombre</option>
";
}

$tbDireccionzona.="</select>
";

253
$tbDireccionvia.="

<select id='slc_PerUbigeoDirTipoVia'
name='slc_PerUbigeoDirTipoVia' class='slcDatoPersona'>
";
while($reg14=$result14->fetch_object())
{

if($reg12-
>pdi_pvi_Codigo<>$reg14->pvi_Codigo){
$tbDireccionvia.=
"<option value='$reg14-
>pvi_Codigo'>$reg14->pvi_Nombre</option>
";
}else{
$tbDireccionvia.="<option
value='$reg14->pvi_Codigo' selected>$reg14->pvi_Nombre</option>
";
}

$tbDireccionvia.="</select>";
}

$PerSex="";
if($reg->per_Sexo=="M"){
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>FEMENINO
";
}else{
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />FEMENINO
";
}

$SecPerTipoEmpresa="";
if($reg->per_TipoEmpresa=="PERSONA NATURAL"){

254
$tipopersona="PERSONA NATURAL";
$SecPerTipoEmpresa.=
"<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaN'
type='radio' value='PERSONA NATURAL' class='rdoSGDDato'
onClick='habilitarFormPerN()' onChange='xajax_slc_TipoEmpresa(this.value)'
checked='CHECKED' />NATURAL

<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaJ'


type='radio' value='PERSONA JURIDICA' class='rdoSGDDato'
onClick='habilitarFormPerJ()' onChange='xajax_slc_TipoEmpresa(this.value)'
/>JURIDICA";
}else{
$tipopersona="PERSONA JURIDICA";
$SecPerTipoEmpresa.=
"<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaN'
type='radio' value='PERSONA NATURAL' class='rdoSGDDato'
onClick='habilitarFormPerN()' onChange='xajax_slc_TipoEmpresa(this.value)'
/>NATURAL
<input
name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaJ' type='radio'
value='PERSONA JURIDICA' class='rdoSGDDato' onClick='habilitarFormPerJ()'
onChange='xajax_slc_TipoEmpresa(this.value)' checked='CHECKED'
/>JURIDICA";
}

$consult18 = "select * from tbpersona_razonsocial";


$result18 = $conexion->query($consult18);

$SecPerRazonSocial = "";

$SecPerRazonSocial.="<select name='slc_PerRazonSocial'
id='slc_PerRazonSocial' />";
while($reg18=$result18->fetch_object())
{

if($reg18->prsCodigo<>$reg-
>per_TipoRazonSocial){
$SecPerRazonSocial.=
"<option value='$reg18->prs_Codigo'>$reg18-
>prs_Abreviatura</option>
";
}else{
$SecPerRazonSocial.="<option value='$reg18-
>prs_Codigo' selected>$reg18->prs_Abreviatura</option>
";

255
}

}
$SecPerRazonSocial.="</select>";

$txt_PerFechaCaducidadAno=$reg->per_DNICaducidad;

$txt_PerNacimiento=$reg->per_Nacimiento;

$per_Telefono=$reg->per_Telefono;
$per_Email=$reg->per_Email;

$consult15 = "SELECT * FROM tbpersona_prefijo";


$result15 = $conexion->query($consult15);

$tbTipoPrefijo = "";

$tbTipoPrefijo.=
"<select id='slc_PerPrefijo' name='slc_PerPrefijo'
class='slcDatoPersona'>
";
while($reg15=$result15->fetch_object())
{

if($reg15->ppr_Codigo<>$reg-
>per_ppr_Codigo){
$tbTipoPrefijo.=
"<option value='$reg15->ppr_Codigo'>$reg15-
>ppr_Nombre</option>
";
}else{
$tbTipoPrefijo.="<option value='$reg15-
>ppr_Codigo' selected>$reg15->ppr_Nombre</option>
";
}

}
$tbTipoPrefijo.="</select>";

256
$objResp = new xajaxResponse();

$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerUbigeoDirPiso","value","");
$objResp->assign("txt_PerUbigeoDirInterior","value","");
$objResp->assign("txt_PerUbigeoDirManzana","value","");
$objResp->assign("txt_PerUbigeoDirLote","value","");
$objResp->assign("txt_PerNombre","value","");
$objResp->assign("txt_PerApellido","value","");
$objResp->assign("txt_PerSexo","value","");
$objResp->assign("txt_PerFechaCaducidadDia","value","");
$objResp->assign("txt_PerFechaCaducidadMes","value","");
$objResp->assign("txt_PerFechaCaducidadAno","value","");
$objResp->assign("txt_PerNacimientoDia","value","");
$objResp->assign("txt_PerNacimientoMes","value","");
$objResp->assign("txt_PerNacimientoAno","value","");
$objResp->assign("txt_PerCargo","value","");
$objResp->assign("txt_PerUbigeoDirVia","value","");
$objResp->assign("txt_PerRazonSocial","value","");
$objResp->assign("txt_PerRUC","value","");
$objResp->assign("txt_PerUbigeoDirZona","value","");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerEmail","value","");
$objResp->assign("txt_PerDNI","value","");

$objResp-
>assign("SecTipoPerBus","innerHTML",utf8_encode($tbTipo));
$objResp-
>assign("SecAreaPerBus","innerHTML",utf8_encode($tbArea));

$objResp-
>assign("SecPerPrefijo","innerHTML",utf8_encode($tbTipoPrefijo));

$objResp-
>assign("SecUbigeoDepPer","innerHTML",utf8_encode($tbDirecciondep));
$objResp-
>assign("SecUbigeoProPer","innerHTML",utf8_encode($tbDireccionpro));
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));

257
$objResp-
>assign("SecUbigeoZonaPer","innerHTML",utf8_encode($tbDireccionzona));
$objResp-
>assign("SecUbigeoViaPer","innerHTML",utf8_encode($tbDireccionvia));
$objResp-
>assign("SecPerTipoEmpresa","innerHTML",utf8_encode($SecPerTipoEmpresa));
$objResp->assign("SecPerSexo","innerHTML",utf8_encode($PerSex));
$objResp-
>assign("SecPerRazonSocial","innerHTML",utf8_encode($SecPerRazonSocial));

$objResp-
>assign("SecPerCargo","innerHTML",utf8_encode($tbCargo));

$objResp->script("xajax_slc_TipoEmpresa('".$tipopersona."')");

$objResp->assign("txt_PerUbigeoDirNumero","value",$dirnum);
$objResp->assign("txt_PerUbigeoDirPiso","value",$dirpis);
$objResp->assign("txt_PerUbigeoDirInterior","value",$dirint);
$objResp->assign("txt_PerUbigeoDirManzana","value",$dirman);
$objResp->assign("txt_PerUbigeoDirLote","value",$dilote);

$PerCodigoHide=$reg->per_Codigo;
$objResp-
>assign("txt_PerCodigo","value",utf8_encode($PerCodigoHide));
$objResp-
>assign("Hidetxt_PerCodigo","value",utf8_encode($PerCodigoHide));

$objResp->assign("txt_PerEmail","value",$tbEmail);

$objResp->assign("txt_PerNombre","value",utf8_encode($reg-
>per_Nombres));
$objResp->assign("txt_PerApellido","value",utf8_encode($reg-
>per_Apellidos));

$objResp->assign("txt_PerRazonSocial","value",utf8_encode($reg-
>per_RazonSocial));
$objResp->assign("txt_PerRUC","value",utf8_encode($reg->per_RUC));

$objResp->assign("txt_PerDNI","value",$reg->per_DNI);
$objResp->assign("txt_PerCargo","value",utf8_encode($reg->per_Cargo));

258
$objResp-
>assign("txt_PerFechaCaducidadAno","value",$txt_PerFechaCaducidadAno);
$objResp->assign("txt_PerNacimiento","value",$txt_PerNacimiento);

$objResp->assign("txt_PerUbigeoDirVia","value",$nombrevia);
$objResp->assign("txt_PerUbigeoDirZona","value",$nombrezona);
$objResp->assign("PerAccion","value","Editar");
$objResp->assign("botonagregar","value","ACTUALIZAR");
$objResp->assign("txt_PerCodigoUbigeo","value",$codDireccion);

$objResp->assign("txt_PerNumTelefono","value",$per_Telefono);
$objResp->assign("txt_PerEmail","value",$per_Email);

return $objResp;
}

function slc_Provincia($iddepartamen){

global $conexion;

$consult = "SELECT * FROM tbpersona_provincia where


pro_dep_Codigo='$iddepartamen'";
$result = $conexion->query($consult);
$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDireccionpro.=
"<option value='$reg-
>pro_Codigo'>".htmlentities ($reg->pro_Nombre)."</option>
";
}

$tbDireccionpro.="</select>";
$tbDireccionpro=utf8_encode($tbDireccionpro);

$objResp = new xajaxResponse();


$objResp-
>assign("SecUbigeoProPer","innerHTML",$tbDireccionpro);
return $objResp;

259
}

function slc_Distrito($iddistrito){

global $conexion;

$consult = "SELECT * FROM tbpersona_distrito where


dis_pro_Codigo='$iddistrito'";
$result = $conexion->query($consult);
$tbDirecciondis.="
<select id='slc_PerUbigeoDistrito' name='slc_PerUbigeoDistrito'
class='slcDatoPersona'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDirecciondis.=
"<option value='$reg-
>dis_Codigo'>$reg->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";
$objResp = new xajaxResponse();
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
return $objResp;
}

function nuevoPerBus()
{
global $conexion;

$consult="SELECT per_Codigo , LEFT( per_Codigo, 3 ) AS


Nom, RIGHT( per_Codigo, 7 ) AS Num
FROM tbpersona ORDER BY per_Codigo
DESC LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombreCod=$nom."000000".$num;

260
}else
if($num<100 && $num>=10){
$nombreCod=$nom."00000".$num;
}else
if($num<1000 && $num>=100){
$nombreCod=$nom."0000".$num;
}else
if($num<10000 && $num>=1000){
$nombreCod=$nom."000".$num;
}else if($num<100000 && $num>=10000){
$nombreCod=$nom."00".$num;
}else if($num<1000000 && $num>=100000){
$nombreCod=$nom."0".$num;
}

$consult1 = "SELECT * FROM tbpersona_tipo";


$result1 = $conexion->query($consult1);
$tbTipo = "<select id='slc_PerTipoPersona' name='slc_PerTipoPersona'
class='slcDatoPersona'>";
while($reg1=$result1->fetch_object())
{
$tbTipo.=
"<option value='$reg1->pti_Codigo'>$reg1-
>pti_Nombre</option>
";
}
$tbTipo.="</select>";

$consult2 = "SELECT * FROM tbarea";


$result2 = $conexion->query($consult2);
$tbArea = "<select id='slc_PerArea' name='slc_PerArea'
class='slcDatoPersona'>
<option value='0'>SELECCIONAR</option>";

while($reg2=$result2->fetch_object())
{
$tbArea.=
"<option value='$reg2->are_Codigo'>$reg2-
>are_Nombre</option>
";
}
$tbArea.="</select>";

261
$consult27 = "SELECT * FROM tbpersona_cargo";
$result27 = $conexion->query($consult27);
$tbCargo = "<select id='slc_PerCargo' name='slc_PerCargo' >
<option value='0'>SELECCIONAR</option>";
while($reg27=$result27->fetch_object())
{

$tbCargo.=
"<option value='$reg27-
>pca_Codigo'>".htmlentities($reg27->pca_Nombre)."</option>
";

}
$tbCargo.="</select>";

$consult9 = "select * from tbpersona_departamento";


$result9 = $conexion->query($consult9);

$consult10 = "select * from tbpersona_provincia";


$result10 = $conexion->query($consult10);

$consult11 = "select * from tbpersona_distrito";


$result11 = $conexion->query($consult11);

$tbDirecciondep.="
<select id='slc_PerUbigeoDepartamento' name='slc_PerUbigeoDepartamento'
onChange='xajax_slc_Provincia(this.value)' class='slcDatoPersona'>
<option value='0' selected>SELECCIONAR</option>
";

while($reg9=$result9->fetch_object())
{
$tbDirecciondep.=
"<option value='$reg9-
>dep_Codigo'>$reg9->dep_Nombre</option>
";
}
$tbDirecciondep.="</select>";

262
$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg10=$result10->fetch_object())
{

$tbDireccionpro.=
"<option value='$reg10-
>pro_Codigo'>$reg10->pro_Nombre</option>
";

}
$tbDireccionpro.="</select>";

$tbDirecciondis.="
<select id='slc_PerUbigeoDistrito' name='slc_PerUbigeoDistrito'
class='slcDatoPersona'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg11=$result11->fetch_object())
{

$tbDirecciondis.="<option value='$reg11->dis_Codigo'>$reg11-
>dis_Nombre</option>";

}
$tbDirecciondis.="</select>";

$consult13 = "select * from tbpersona_zona";


$result13 = $conexion->query($consult13);

$consult14 = "select * from tbpersona_via";


$result14 = $conexion->query($consult14);

$tbDireccionzona="";
$tbDireccionvia= "";

263
$tbDireccionzona.="<li class='coluPerDatoUbigeoDirTipoZona'>
<select id='slc_PerUbigeoDirTipoZona'
name='slc_PerUbigeoDirTipoZona' class='slcDatoPersona'>
";
while($reg13=$result13->fetch_object())
{

$tbDireccionzona.="<option value='$reg13->pzo_Codigo'>$reg13-
>pzo_Nombre</option>";
}
$tbDireccionzona.="</select></li>";

$tbDireccionvia.="<li class='coluPerDatoUbigeoDirTipoVia'>
<select id='slc_PerUbigeoDirTipoVia'
name='slc_PerUbigeoDirTipoVia' class='slcDatoPersona'>
";
while($reg14=$result14->fetch_object())
{
$tbDireccionvia.="<option value='$reg14->pvi_Codigo'>$reg14-
>pvi_Nombre</option>";
}
$tbDireccionvia.="</select></li>";

$consult15 = "SELECT * FROM tbpersona_prefijo";


$result15 = $conexion->query($consult15);

$tbTipoPrefijo = "";

$tbTipoPrefijo.=
"<select id='slc_PerPrefijo' name='slc_PerPrefijo'
class='slcDatoPersona'>
";
while($reg15=$result15->fetch_object())
{

$tbTipoPrefijo.=
"<option value='$reg15->ppr_Codigo'>$reg15-
>ppr_Nombre</option>
";

}
$tbTipoPrefijo.="</select>";

264
$PerSex="";
if($reg->per_Sexo=="M"){
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>FEMENINO
";
}else{
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />FEMENINO
";
}

$SecPerTipoEmpresa="

<input

name='rdoPerTipoEmpresa'

id='rdo_PerTipoEmpresaN'
type='radio'

value='PERSONA NATURAL'

onClick='habilitarFormPerRS()'

onChange='xajax_slc_TipoEmpresa(this.value)'
checked
/>NATURAL
<input

name='rdoPerTipoEmpresa'

id='rdo_PerTipoEmpresaJ'
type='radio'

value='PERSONA JURIDICA'

265
onClick='habilitarFormPerRS()'

onChange='xajax_slc_TipoEmpresa(this.value)'

/>JURIDICA

";

/*
/*/

$objResp = new xajaxResponse();

$objResp-
>assign("SecTipoPerBus","innerHTML",utf8_encode($tbTipo));
$objResp-
>assign("SecAreaPerBus","innerHTML",utf8_encode($tbArea));

$objResp-
>assign("SecPerPrefijo","innerHTML",utf8_encode($tbTipoPrefijo));
$objResp->assign("SecPerSexo","innerHTML",utf8_encode($PerSex));
$objResp-
>assign("SecPerCargo","innerHTML",utf8_encode($tbCargo));

$objResp-
>assign("SecUbigeoDepPer","innerHTML",utf8_encode($tbDirecciondep));
$objResp-
>assign("SecUbigeoProPer","innerHTML",utf8_encode($tbDireccionpro));
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
$objResp-
>assign("SecUbigeoZonaPer","innerHTML",utf8_encode($tbDireccionzona));
$objResp-
>assign("SecUbigeoViaPer","innerHTML",utf8_encode($tbDireccionvia));
$objResp-
>assign("SecPerTipoEmpresa","innerHTML",utf8_encode($SecPerTipoEmpresa));

$objResp->assign("txt_PerCodigo","value",$nombreCod);
$objResp->assign("Hidetxt_PerCodigo","value",$nombreCod);
$objResp->assign("HideTipoEmpresa","value","PERSONA
NATURAL");
$objResp->assign("HideArea","value",$HideArea);

266
$objResp->assign("PerAccion","value","nuevo");
$objResp->assign("botonagregar","value","AGREGAR");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerUbigeoDirPiso","value","");
$objResp->assign("txt_PerUbigeoDirInterior","value","");
$objResp->assign("txt_PerUbigeoDirManzana","value","");
$objResp->assign("txt_PerUbigeoDirLote","value","");

$objResp->assign("txt_PerNombre","value","");
$objResp->assign("txt_PerApellido","value","");
$objResp->assign("txt_PerSexo","value","");

$objResp->assign("txt_PerFechaCaducidadDia","value","");
$objResp->assign("txt_PerFechaCaducidadMes","value","");
$objResp->assign("txt_PerFechaCaducidadAno","value","");

$objResp->assign("txt_PerNacimientoDia","value","");
$objResp->assign("txt_PerNacimientoMes","value","");
$objResp->assign("txt_PerNacimientoAno","value","");

$objResp->assign("txt_PerCargo","value","");

$objResp->assign("txt_PerUbigeoDirVia","value","");
$objResp->assign("txt_PerRazonSocial","value","");
$objResp->assign("txt_PerRUC","value","");

$objResp->assign("txt_PerUbigeoDirZona","value","");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerEmail","value","");
$objResp->assign("txt_PerDNI","value","");
$tipopersona="PERSONA NATURAL";
$objResp->script("xajax_slc_TipoEmpresa('".$tipopersona."')");
return $objResp;
}

////////////////GUARDAR PERSONA////////////////////////

function GuardarPer($FormPersona){
global $conexion;

267
$accion=$FormPersona['PerAccion'];
$rbtsexo=$FormPersona['rbtsexo'];
$PerSexo=$FormPersona['PerSexo'];

$HideArea=$FormPersona['HideArea'];

$Hidetxt_PerCodigo=$FormPersona['Hidetxt_PerCodigo'];
$rdoPerTipoEmpresa=$FormPersona['rdoPerTipoEmpresa'];

$txt_PerRazonSocial=utf8_decode($FormPersona['txt_PerRazonSocial']);
$slc_PerRazonSocial=$FormPersona['slc_PerRazonSocial'];
$txt_PerRUC=$FormPersona['txt_PerRUC'];
$slc_PerPrefijo=$FormPersona['slc_PerPrefijo'];
$txt_PerNombre=utf8_decode($FormPersona['txt_PerNombre']);
$txt_PerApellido=utf8_decode($FormPersona['txt_PerApellido']);

$txt_PerDNI=$FormPersona['txt_PerDNI'];

$txt_PerFechaCaducidadAno=$FormPersona['txt_PerFechaCaducidadAno'];
$txt_PerNacimiento=$FormPersona['txt_PerNacimiento'];
$slc_PerCargo=$FormPersona['slc_PerCargo'];
$slc_PerTipoPersona=$FormPersona['slc_PerTipoPersona'];
$slc_PerArea=$FormPersona['slc_PerArea'];
$txt_PerNumTelefono=$FormPersona['txt_PerNumTelefono'];
$txt_PerEmail=$FormPersona['txt_PerEmail'];

$slc_PerUbigeoDistrito=$FormPersona['slc_PerUbigeoDistrito'];

$slc_PerUbigeoDirTipoZona=$FormPersona['slc_PerUbigeoDirTipoZona'];

$txt_PerUbigeoDirZona=utf8_decode($FormPersona['txt_PerUbigeoDirZona'
]);

$slc_PerUbigeoDirTipoVia=$FormPersona['slc_PerUbigeoDirTipoVia'];

$txt_PerUbigeoDirVia=utf8_decode($FormPersona['txt_PerUbigeoDirVia']);

$txt_PerUbigeoDirNumero=$FormPersona['txt_PerUbigeoDirNumero'];
$txt_PerUbigeoDirPiso=$FormPersona['txt_PerUbigeoDirPiso'];
$txt_PerUbigeoDirInterior=$FormPersona['txt_PerUbigeoDirInterior'];

$txt_PerUbigeoDirManzana=$FormPersona['txt_PerUbigeoDirManzana'];
$txt_PerUbigeoDirLote=$FormPersona['txt_PerUbigeoDirLote'];
$txt_PerCodigoUbigeo=$FormPersona['txt_PerCodigoUbigeo'];

$txt_PerDNI=strlen($txt_PerDNI);

268
if($txt_PerDNI<8){
$objResp = new xajaxResponse();
$objResp->alert("El DNI no es válido");

return $objResp;
}

if($txt_PerNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");

return $objResp;
}

if($txt_PerApellido==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un Apellido");

return $objResp;
}

if($txt_PerNacimiento==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese fecha nacimiento");

return $objResp;
}

if($txt_PerNumTelefono==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese numero telefonico");

return $objResp;
}
if($txt_PerEmail==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un email");

return $objResp;
}

if($txt_PerUbigeoDirLote==""){
$txt_PerUbigeoDirLote=0;
}

if($txt_PerUbigeoDirNumero==""){
$txt_PerUbigeoDirNumero=0;

269
}

if($txt_PerUbigeoDirPiso==""){
$txt_PerUbigeoDirPiso=0;
}

if($rdoPerTipoEmpresa=="PERSONA NATURAL"){
$txt_PerRazonSocial="";
$slc_PerRazonSocial="";
$txt_PerRUC=0;
}

$txt_PerRazonSocial=strtoupper($txt_PerRazonSocial);
$txt_PerNombre=strtoupper($txt_PerNombre);
$txt_PerApellido=strtoupper($txt_PerApellido);

$txt_PerUbigeoDirZona=strtoupper($txt_PerUbigeoDirZona);
$txt_PerUbigeoDirVia=strtoupper($txt_PerUbigeoDirVia);

$txt_PerUbigeoDirManzana=strtoupper($txt_PerUbigeoDirManzana);

$objResp=new xajaxResponse();

if($accion=="nuevo"){

$consult3="SELECT pdi_Codigo , LEFT( pdi_Codigo, 3 ) AS


Nom, RIGHT( pdi_Codigo, 7 ) AS Num
FROM tbpersona_direccion ORDER BY
pdi_Codigo DESC LIMIT 0 , 1";
$result3 = $conexion->query($consult3) ;
$reg3=$result3->fetch_object();
$nom3=$reg3->Nom;
$num3=$reg3->Num;
$num3=$num3+1;

270
if($num3<10){
$nombre3=$nom3."000000".$num3;
}else if($num3<100 && $num3>=10){
$nombre3=$nom3."00000".$num3;
}if($num3<1000 && $num3>=100){
$nombre3=$nom3."0000".$num3;
}if($num3<10000 && $num3>=1000){
$nombre3=$nom3."000".$num3;
}if($num3<100000 && $num3>=10000){
$nombre3=$nom3."00".$num3;
}if($num3<1000000 && $num3>=100000){
$nombre3=$nom3."0".$num3;
}

$consult4="SELECT par_Codigo , LEFT( par_Codigo, 3 ) AS


Nom, RIGHT( par_Codigo, 7 ) AS Num
FROM tbpersona_area ORDER BY par_Codigo
DESC LIMIT 0 , 1";
$result4 = $conexion->query($consult4) ;
$reg4=$result4->fetch_object();
$nom4=$reg4->Nom;
$num4=$reg4->Num;
$num4=$num4+1;

if($num4<10){
$nombre4=$nom4."000000".$num4;
}else if($num4<100 && $num4>=10){
$nombre4=$nom4."00000".$num4;
}if($num4<1000 && $num4>=100){
$nombre4=$nom4."0000".$num4;
}if($num4<10000 && $num4>=1000){
$nombre4=$nom4."000".$num4;
}if($num4<100000 && $num4>=10000){
$nombre4=$nom4."00".$num4;
}if($num4<1000000 && $num4>=100000){
$nombre4=$nom4."0".$num4;
}

$consult1="insert into tbpersona


(per_Codigo,
per_TipoEmpresa,
per_RazonSocial,
per_prs_Codigo,

271
per_RUC,
per_ppr_Codigo,
per_Nombres,
per_Apellidos,
per_Sexo,
per_DNI,
per_DNICaducidad,
per_Nacimiento,
per_pca_Codigo,
per_Email,
per_Telefono,
per_pti_Codigo,
per_pdi_Codigo)

values(
'$Hidetxt_PerCodigo',
'$rdoPerTipoEmpresa',
'$txt_PerRazonSocial',
'$slc_PerRazonSocial',
$txt_PerRUC,
'$slc_PerPrefijo',
'$txt_PerNombre',
'$txt_PerApellido',
'$rbtsexo',
'$txt_PerDNI',
'$txt_PerFechaCaducidadAno',
'$txt_PerNacimiento',
'$slc_PerCargo',
'$txt_PerEmail',
$txt_PerNumTelefono,
'$slc_PerTipoPersona',
'$nombre3'
)";
$conexion->query($consult1);

$consult5="insert into tbpersona_direccion (


pdi_Codigo,
pdi_dis_Codigo,
pdi_pzo_Codigo,
pdi_NombreZona,
pdi_pvi_Codigo,
pdi_NombreVia,
pdi_Numero,

272
pdi_Piso,
pdi_Interior,
pdi_Manzana,
pdi_Lote)
values(
'$nombre3',
'$slc_PerUbigeoDistrito',
'$slc_PerUbigeoDirTipoZona',
'$txt_PerUbigeoDirZona',
'$slc_PerUbigeoDirTipoVia',
'$txt_PerUbigeoDirVia',
$txt_PerUbigeoDirNumero,
$txt_PerUbigeoDirPiso,
'$txt_PerUbigeoDirInterior',
'$txt_PerUbigeoDirManzana',
$txt_PerUbigeoDirLote)";
$conexion->query($consult5);

$consult6="insert into tbpersona_area (


par_Codigo,
par_per_Codigo,
par_are_Codigo,
par_Estado,
)
values(
'$nombre4',
'$Hidetxt_PerCodigo',
'$slc_PerArea'
'1')";
$conexion->query($consult6);

$objResp->alert("Registro Exitoso");
$objResp->script("perBuscar()");
$objResp->script("xajax_nuevoPerBus()");
return $objResp;
}
else if($accion=="Editar") {

273
$consult="update tbpersona set

per_TipoEmpresa='$rdoPerTipoEmpresa',
per_RazonSocial='$txt_PerRazonSocial',
per_prs_Codigo='$slc_PerRazonSocial',
per_RUC=$txt_PerRUC,
per_ppr_Codigo='$slc_PerPrefijo',
per_Nombres='$txt_PerNombre',
per_Apellidos='$txt_PerApellido',
per_Sexo='$rbtsexo',
per_DNI='$txt_PerDNI',

per_DNICaducidad='$txt_PerFechaCaducidadAno',
per_Nacimiento='$txt_PerNacimiento',
per_pca_Codigo='$slc_PerCargo',
per_Email='$txt_PerEmail',
per_Telefono=$txt_PerNumTelefono,
per_pti_Codigo='$slc_PerTipoPersona'
where per_Codigo='$Hidetxt_PerCodigo'
";
$conexion->query($consult);

$consult5="update tbpersona_direccion set


pdi_dis_Codigo='$slc_PerUbigeoDistrito',
pdi_pzo_Codigo='$slc_PerUbigeoDirTipoZona',
pdi_NombreZona='$txt_PerUbigeoDirZona',
pdi_pvi_Codigo='$slc_PerUbigeoDirTipoVia',
pdi_NombreVia='$txt_PerUbigeoDirVia',
pdi_Numero=$txt_PerUbigeoDirNumero,
pdi_Piso=$txt_PerUbigeoDirPiso,
pdi_Interior='$txt_PerUbigeoDirInterior',
pdi_Manzana='$txt_PerUbigeoDirManzana',
pdi_Lote=$txt_PerUbigeoDirLote
where pdi_Codigo='$txt_PerCodigoUbigeo'";
$conexion->query($consult5);

$consult6="update tbpersona_area set


par_are_Codigo='$slc_PerArea'
where par_Codigo='$HideArea'";
$conexion->query($consult6);

$objResp->alert("Actualizar Exitoso");
$objResp->script("perBuscar()");
return $objResp;
}

274
}

function selectRazonSocial()
{
global $conexion;

$consult = "SELECT * FROM tbpersona_razonsocial";


$result=$conexion->query($consult);

$tbTipoDocumento = "<option value=''>SELECCIONAR</option>";

while($reg=$result->fetch_object()){

$tbTipoDocumento.="<option value='$reg->prs_Codigo'>$reg-
>prs_Abreviatura</option>";
}
$tbTipoDocumento.="";

$objResp = new xajaxResponse();


$objResp-
>assign("slc_PerRazonSocial","innerHTML",$tbTipoDocumento);
return $objResp;
}

function slc_SexoPer($idPerSexo){

$objResp = new xajaxResponse();


$objResp->assign("rbtsexo","value",$idPerSexo);

return $objResp;
}

function slc_TipoEmpresa($idPerTipoEmresa){

if($idPerTipoEmresa=="PERSONA NATURAL"){

$objResp = new xajaxResponse();


$objResp->assign("txt_PerRazonSocial","disabled",
true);
$objResp->assign("slc_PerRazonSocial","disabled",
true);
$objResp->assign("txt_PerRUC","disabled", true);

$objResp-
>assign("HideTipoEmpresa","value",$idPerTipoEmresa);

275
return $objResp;

}else if($idPerTipoEmresa="PERSONA JURIDICA"){

$objResp = new xajaxResponse();


$objResp = new xajaxResponse();
$objResp->assign("txt_PerRazonSocial","disabled",
false);
$objResp->assign("slc_PerRazonSocial","disabled",
false);
$objResp->assign("txt_PerRUC","disabled", false);
$objResp-
>assign("HideTipoEmpresa","value",$idPerTipoEmresa);

return $objResp;
}

$fperBuscar =& $xajax->registerFunction('perBuscar');


$fperBuscar->setParameter(0,XAJAX_FORM_VALUES,'frmPerBuscar');

$fMostrarPerBus =& $xajax->registerFunction('MostrarPerBus');


$fslc_Provincia =& $xajax->registerFunction('slc_Provincia');
$fslc_Provincia =& $xajax->registerFunction('slc_Distrito');
$fnuevoPerBus =& $xajax->registerFunction('nuevoPerBus');

$fGuardarPer =& $xajax->registerFunction('GuardarPer');


$fGuardarPer->setParameter(0,XAJAX_FORM_VALUES,'FormDatosPer');

$fselectRazonSocial =&$xajax->registerFunction('selectRazonSocial');

$fslc_SexoPer=&$xajax->registerFunction('slc_SexoPer');
$fslc_TipoEmpresa=&$xajax->registerFunction('slc_TipoEmpresa');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";

276
?> <?php
session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];
$perCodigo=$_SESSION['perCodigo'];
$perParCodigo=$_SESSION["perParCodigo"];

include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

$xajax=new xajax();
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

function perBuscar($txtperApellido, $page=1)


{
global $conexion;
$cantFila=17;

$txt_PerBuscarApellido=utf8_decode($txtperApellido["txt_PerBuscarApellid
o"]);
$consult =
"
SELECT * FROM tbpersona tbp
LEFT JOIN tbpersona_tipo tbtp ON tbp.per_pti_Codigo =
tbtp.pti_Codigo
LEFT JOIN tbpersona_area tba ON tbp.per_Codigo =
tba.par_per_Codigo
INNER JOIN tbarea tbar on
tba.par_are_Codigo=tbar.are_Codigo
where concat_ws(' ', per_Apellidos, per_Nombres) LIKE
'%$txt_PerBuscarApellido%'

";
$result = $conexion->query($consult);
$numFila=$result->num_rows;
$cantPage=ceil($numFila/$cantFila);

$iniPage=($page-1)*$cantFila;
$consult = $consult . "limit $iniPage,$cantFila";
$result = $conexion->query($consult);
$imas=$page+1;

if($imas>=$cantPage)
{
$imas=$cantPage;
}
$imenos=$page-1;

277
if($imenos<=1)
{
$imenos=1;
}
$ii=1;
$if=$cantPage;
$tbResultado="";
$paginas="";

if($numFila<>"")
{
while($reg=$result->fetch_object())
{
$idcodper=$reg->per_Codigo;
$idTipoEmpresaNJ=$reg->per_TipoEmpresa;

if($idTipoEmpresaNJ=="PERSONA JURIDICA"){
$habilitarFormPerRS="habilitarFormPerJ";
}else{
$habilitarFormPerRS="habilitarFormPerN";
}

$s=$reg->per_Sexo;

if($s=="M"){
$s="M";
}else {
$s="F";
}

$tbResultado.=
"
<ul class='fila'>
<a href='#tab2'
onclick='xajax_MostrarPerBus((\"$reg->per_Codigo\"));'>
<li>$reg->per_Codigo</li>
<li>$reg->per_Apellidos</li>
<li>$reg->per_Nombres</li>
<li>$reg->per_DNI</li>
<li>$s</li>
<li>$reg->pti_Nombre</li>
<li>$reg->are_Abreviatura</li>
</a>
</ul>
";
}

$secPie.=
"

278
<ul class='fila'>
<li>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$ii)'><img
src='../img/inicio.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$imenos)'><img
src='../img/atras.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$imas)'><img
src='../img/adelante.png'/></a>
<a href='#tab1'
onclick='xajax_perBuscar(xajax.getFormValues(\"frmPerBuscar\"),$if)'><img
src='../img/fin.png'/></a>
<a href='#tab2' name='nuevoper'
onclick='xajax_nuevoPerBus()'><img src='../img/agregar.png'/></a>
</li>
<li>
<label class='lblCantReg'>CANTIDAD
DE REGISTROS: $numFila</label>
</li>

</ul>

";
$tbResultado=utf8_encode($tbResultado);
}

else
{
$tbResultado.=
"
<ul class='fila'>
<li class='coluResultadoMensaje'>
No se encuentran resultados para su
busqueda
</li>
</ul>
";
$paginas.="";
}

$objResp = new xajaxResponse();


$objResp->assign("secBuscarPersona","innerHTML",$tbResultado);

279
$objResp->assign("secPie","innerHTML",$secPie);

$objResp->script(
"
$(function()
{
$('ul.tabs li:first').addClass('active');
$('.block article.rtc').hide();
$('.block article.rtc:first').show();
$('ul.fila').on('click',function()
{
$('ul.tabs li:first').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('.block article.rtc').hide();
var activeTab = $(this).find('a').attr('href');
$(activeTab).show();
return false;
});
})
");
$objResp->script(
"
$(function()
{
$('a[name=nuevoper]').on('click',function()
{
$('ul.tabs li:first').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('article#tab1').hide();
$('article#tab2').show();
return false;
});
})
");
return $objResp;
}

function MostrarPerBus($idPerBus)
{
global $conexion;
$consult =
"
select * from tbpersona tbp
INNER JOIN tbpersona_tipo tbtp ON tbp.per_pti_Codigo =
tbtp.pti_Codigo
LEFT JOIN tbpersona_area tba ON tbp.per_Codigo =
tba.par_per_Codigo

280
INNER JOIN tbarea tbar on
tba.par_are_Codigo=tbar.are_Codigo
where per_Codigo='$idPerBus'
";

$result = $conexion->query($consult);
$reg=$result->fetch_object();
$PerTipo=$reg->per_pti_Codigo;
$PerDireccion=$reg->per_pdi_Codigo;
$HideArea=$reg->par_Codigo;

$consult1 = "SELECT * FROM tbpersona_tipo";


$result1 = $conexion->query($consult1);
$tbTipo = "<select id='slc_PerTipoPersona' name='slc_PerTipoPersona'
>";
while($reg1=$result1->fetch_object())
{
if($PerTipo<>$reg1->pti_Codigo)
{
$tbTipo.=
"
<option value='$reg1-
>pti_Codigo'>".htmlentities($reg1->pti_Nombre)."</option>
";
}
else
{
$tbTipo.=
"
<option value='$reg1->pti_Codigo'
selected>".htmlentities($reg1->pti_Nombre)."</option>
";
}
}
$tbTipo.="</select>";

$consult2 = "SELECT * FROM tbarea";


$result2 = $conexion->query($consult2);
$tbArea = "<select id='slc_PerArea' name='slc_PerArea' >";
while($reg2=$result2->fetch_object())
{
if($reg->par_are_Codigo<>$reg2->are_Codigo){
$tbArea.=
"<option value='$reg2-
>are_Codigo'>".htmlentities($reg2->are_Nombre)."</option>
";
}else{
$tbArea.=

281
"<option value='$reg2->are_Codigo'
selected>".htmlentities($reg2->are_Nombre)."</option>
";}
}
$tbArea.="</select>";

$consult27 = "SELECT * FROM tbpersona_cargo";


$result27 = $conexion->query($consult27);
$tbCargo = "<select id='slc_PerCargo' name='slc_PerCargo' >";
while($reg27=$result27->fetch_object())
{
if($reg->per_pca_Codigo<>$reg27->pca_Codigo){
$tbCargo.=
"<option value='$reg27-
>pca_Codigo'>".htmlentities($reg27->pca_Nombre)."</option>
";
}else{
$tbCargo.=
"<option value='$reg27->pca_Codigo'
selected>".htmlentities($reg27->pca_Nombre)."</option>
";}
}
$tbCargo.="</select>";

$consult8 = "select * from tbpersona_direccion tbu


inner join tbpersona_distrito tbd on
tbu.pdi_dis_Codigo=tbd.dis_Codigo
inner join tbpersona_provincia tbp on
tbd.dis_pro_Codigo=tbp.pro_Codigo
inner join tbpersona_departamento tbdp on
tbp.pro_dep_Codigo=tbdp.dep_Codigo WHERE pdi_Codigo='$PerDireccion'";
$result8 = $conexion->query($consult8);

$consult9 = "select * from tbpersona_departamento";


$result9 = $conexion->query($consult9);

282
$tbDirecciondep = "";
$tbDireccionpro = "";
$tbDirecciondis = "";

while($reg8=$result8->fetch_object())
{
$codDireccion=$reg8->pdi_Codigo;
$codpro=$reg8->pro_dep_Codigo;
$coddis=$reg8->dis_pro_Codigo ;
$CodUbigeo=$reg8->pdi_dis_Codigo;

$consult10 = "select * from tbpersona_provincia where


pro_dep_Codigo='$codpro' ";
$result10 = $conexion->query($consult10);

$consult11 = "select * from tbpersona_distrito where


dis_pro_Codigo='$coddis' ";
$result11 = $conexion->query($consult11);

$tbDirecciondep.="
<select id='slc_PerUbigeoDepartamento'
name='slc_PerUbigeoDepartamento' onChange='xajax_slc_Provincia(this.value)'>
";

while($reg9=$result9->fetch_object())
{

if($reg8->dep_Nombre<>$reg9-
>dep_Nombre){
$tbDirecciondep.=
"<option value='$reg9-
>dep_Codigo'>$reg9->dep_Nombre</option>
";
}else{
$tbDirecciondep.="<option value='$reg9-
>dep_Codigo' selected>$reg9->dep_Nombre</option>
";
}

$tbDirecciondep.="</select>";

$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
";
while($reg10=$result10->fetch_object())

283
{
if($reg8->pro_Nombre<>$reg10-
>pro_Nombre){
$tbDireccionpro.=
"<option value='$reg10-
>pro_Codigo'>$reg10->pro_Nombre</option>
";
}else{
$tbDireccionpro.="<option
value='$reg10->pro_Codigo' selected>$reg10->pro_Nombre</option>
";
}
}
$tbDireccionpro.="</select>";

$tbDirecciondis.="

<select id='slc_PerUbigeoDistrito'
name='slc_PerUbigeoDistrito' class='slcDatoPersona'>
";
while($reg11=$result11->fetch_object())
{

if($reg8-
>dis_Nombre<>$reg11->dis_Nombre){
$tbDirecciondis.=
"<option value='$reg11-
>dis_Codigo'>$reg11->dis_Nombre</option>
";
}else{
$tbDirecciondis.="<option
value='$reg11->dis_Codigo' selected>$reg11->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";

//

$consult12 = "select * from tbpersona_direccion tbd


inner join tbpersona_via tbp on
tbd.pdi_pvi_Codigo=tbp.pvi_Codigo
inner join tbpersona_zona tbtz on
tbd.pdi_pzo_Codigo=tbtz.pzo_Codigo WHERE pdi_Codigo='$PerDireccion'";
$result12 = $conexion->query($consult12);

284
$consult13 = "select * from tbpersona_zona";
$result13 = $conexion->query($consult13);

$consult14 = "select * from tbpersona_via";


$result14 = $conexion->query($consult14);

$tbDireccionzona="";
$tbDireccionvia= "";
while($reg12=$result12->fetch_object())
{
$dirnum=$reg12->pdi_Numero;
$dirpis=$reg12->pdi_Piso;
$dirint=$reg12->pdi_Interio;

$nombrezona=$reg12->pdi_NombreZona;
$nombrevia=$reg12->pdi_NombreVia;
$dirman=utf8_encode($reg12->pdi_Manzana );
$dilote=utf8_encode($reg12->pdi_Lote );
$tbDireccionzona.="
<select id='slc_PerUbigeoDirTipoZona'
name='slc_PerUbigeoDirTipoZona' class='slcDatoPersona'>
";
while($reg13=$result13->fetch_object())
{

if($reg12-
>pdi_pzo_Codigo<>$reg13->pzo_Codigo){
$tbDireccionzona.=
"<option value='$reg13-
>pzo_Codigo'>$reg13->pzo_Nombre</option>
";
}else{

$tbDireccionzona.="<option value='$reg13->pzo_Codigo' selected>$reg13-


>pzo_Nombre</option>
";
}

$tbDireccionzona.="</select>
";

$tbDireccionvia.="

285
<select id='slc_PerUbigeoDirTipoVia'
name='slc_PerUbigeoDirTipoVia' class='slcDatoPersona'>
";
while($reg14=$result14->fetch_object())
{

if($reg12-
>pdi_pvi_Codigo<>$reg14->pvi_Codigo){
$tbDireccionvia.=
"<option value='$reg14-
>pvi_Codigo'>$reg14->pvi_Nombre</option>
";
}else{
$tbDireccionvia.="<option
value='$reg14->pvi_Codigo' selected>$reg14->pvi_Nombre</option>
";
}

$tbDireccionvia.="</select>";
}

$PerSex="";
if($reg->per_Sexo=="M"){
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>FEMENINO
";
}else{
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />FEMENINO
";
}

$SecPerTipoEmpresa="";
if($reg->per_TipoEmpresa=="PERSONA NATURAL"){
$tipopersona="PERSONA NATURAL";

286
$SecPerTipoEmpresa.=
"<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaN'
type='radio' value='PERSONA NATURAL' class='rdoSGDDato'
onClick='habilitarFormPerN()' onChange='xajax_slc_TipoEmpresa(this.value)'
checked='CHECKED' />NATURAL

<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaJ'


type='radio' value='PERSONA JURIDICA' class='rdoSGDDato'
onClick='habilitarFormPerJ()' onChange='xajax_slc_TipoEmpresa(this.value)'
/>JURIDICA";
}else{
$tipopersona="PERSONA JURIDICA";
$SecPerTipoEmpresa.=
"<input name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaN'
type='radio' value='PERSONA NATURAL' class='rdoSGDDato'
onClick='habilitarFormPerN()' onChange='xajax_slc_TipoEmpresa(this.value)'
/>NATURAL
<input
name='rdoPerTipoEmpresa' id='rdo_PerTipoEmpresaJ' type='radio'
value='PERSONA JURIDICA' class='rdoSGDDato' onClick='habilitarFormPerJ()'
onChange='xajax_slc_TipoEmpresa(this.value)' checked='CHECKED'
/>JURIDICA";
}

$consult18 = "select * from tbpersona_razonsocial";


$result18 = $conexion->query($consult18);

$SecPerRazonSocial = "";

$SecPerRazonSocial.="<select name='slc_PerRazonSocial'
id='slc_PerRazonSocial' />";
while($reg18=$result18->fetch_object())
{

if($reg18->prsCodigo<>$reg-
>per_TipoRazonSocial){
$SecPerRazonSocial.=
"<option value='$reg18->prs_Codigo'>$reg18-
>prs_Abreviatura</option>
";
}else{
$SecPerRazonSocial.="<option value='$reg18-
>prs_Codigo' selected>$reg18->prs_Abreviatura</option>
";
}

287
}
$SecPerRazonSocial.="</select>";

$txt_PerFechaCaducidadAno=$reg->per_DNICaducidad;

$txt_PerNacimiento=$reg->per_Nacimiento;

$per_Telefono=$reg->per_Telefono;
$per_Email=$reg->per_Email;

$consult15 = "SELECT * FROM tbpersona_prefijo";


$result15 = $conexion->query($consult15);

$tbTipoPrefijo = "";

$tbTipoPrefijo.=
"<select id='slc_PerPrefijo' name='slc_PerPrefijo'
class='slcDatoPersona'>
";
while($reg15=$result15->fetch_object())
{

if($reg15->ppr_Codigo<>$reg-
>per_ppr_Codigo){
$tbTipoPrefijo.=
"<option value='$reg15->ppr_Codigo'>$reg15-
>ppr_Nombre</option>
";
}else{
$tbTipoPrefijo.="<option value='$reg15-
>ppr_Codigo' selected>$reg15->ppr_Nombre</option>
";
}

}
$tbTipoPrefijo.="</select>";

288
$objResp = new xajaxResponse();

$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerUbigeoDirPiso","value","");
$objResp->assign("txt_PerUbigeoDirInterior","value","");
$objResp->assign("txt_PerUbigeoDirManzana","value","");
$objResp->assign("txt_PerUbigeoDirLote","value","");
$objResp->assign("txt_PerNombre","value","");
$objResp->assign("txt_PerApellido","value","");
$objResp->assign("txt_PerSexo","value","");
$objResp->assign("txt_PerFechaCaducidadDia","value","");
$objResp->assign("txt_PerFechaCaducidadMes","value","");
$objResp->assign("txt_PerFechaCaducidadAno","value","");
$objResp->assign("txt_PerNacimientoDia","value","");
$objResp->assign("txt_PerNacimientoMes","value","");
$objResp->assign("txt_PerNacimientoAno","value","");
$objResp->assign("txt_PerCargo","value","");
$objResp->assign("txt_PerUbigeoDirVia","value","");
$objResp->assign("txt_PerRazonSocial","value","");
$objResp->assign("txt_PerRUC","value","");
$objResp->assign("txt_PerUbigeoDirZona","value","");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerEmail","value","");
$objResp->assign("txt_PerDNI","value","");

$objResp-
>assign("SecTipoPerBus","innerHTML",utf8_encode($tbTipo));
$objResp-
>assign("SecAreaPerBus","innerHTML",utf8_encode($tbArea));

$objResp-
>assign("SecPerPrefijo","innerHTML",utf8_encode($tbTipoPrefijo));

$objResp-
>assign("SecUbigeoDepPer","innerHTML",utf8_encode($tbDirecciondep));
$objResp-
>assign("SecUbigeoProPer","innerHTML",utf8_encode($tbDireccionpro));
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));

289
$objResp-
>assign("SecUbigeoZonaPer","innerHTML",utf8_encode($tbDireccionzona));
$objResp-
>assign("SecUbigeoViaPer","innerHTML",utf8_encode($tbDireccionvia));
$objResp-
>assign("SecPerTipoEmpresa","innerHTML",utf8_encode($SecPerTipoEmpresa));
$objResp->assign("SecPerSexo","innerHTML",utf8_encode($PerSex));
$objResp-
>assign("SecPerRazonSocial","innerHTML",utf8_encode($SecPerRazonSocial));

$objResp-
>assign("SecPerCargo","innerHTML",utf8_encode($tbCargo));

$objResp->script("xajax_slc_TipoEmpresa('".$tipopersona."')");

$objResp->assign("txt_PerUbigeoDirNumero","value",$dirnum);
$objResp->assign("txt_PerUbigeoDirPiso","value",$dirpis);
$objResp->assign("txt_PerUbigeoDirInterior","value",$dirint);
$objResp->assign("txt_PerUbigeoDirManzana","value",$dirman);
$objResp->assign("txt_PerUbigeoDirLote","value",$dilote);

$PerCodigoHide=$reg->per_Codigo;
$objResp-
>assign("txt_PerCodigo","value",utf8_encode($PerCodigoHide));
$objResp-
>assign("Hidetxt_PerCodigo","value",utf8_encode($PerCodigoHide));

$objResp->assign("txt_PerEmail","value",$tbEmail);

$objResp->assign("txt_PerNombre","value",utf8_encode($reg-
>per_Nombres));
$objResp->assign("txt_PerApellido","value",utf8_encode($reg-
>per_Apellidos));

$objResp->assign("txt_PerRazonSocial","value",utf8_encode($reg-
>per_RazonSocial));
$objResp->assign("txt_PerRUC","value",utf8_encode($reg->per_RUC));

$objResp->assign("txt_PerDNI","value",$reg->per_DNI);
$objResp->assign("txt_PerCargo","value",utf8_encode($reg->per_Cargo));

290
$objResp-
>assign("txt_PerFechaCaducidadAno","value",$txt_PerFechaCaducidadAno);
$objResp->assign("txt_PerNacimiento","value",$txt_PerNacimiento);

$objResp->assign("txt_PerUbigeoDirVia","value",$nombrevia);
$objResp->assign("txt_PerUbigeoDirZona","value",$nombrezona);
$objResp->assign("PerAccion","value","Editar");
$objResp->assign("botonagregar","value","ACTUALIZAR");
$objResp->assign("txt_PerCodigoUbigeo","value",$codDireccion);

$objResp->assign("txt_PerNumTelefono","value",$per_Telefono);
$objResp->assign("txt_PerEmail","value",$per_Email);

return $objResp;
}

function slc_Provincia($iddepartamen){

global $conexion;

$consult = "SELECT * FROM tbpersona_provincia where


pro_dep_Codigo='$iddepartamen'";
$result = $conexion->query($consult);
$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDireccionpro.=
"<option value='$reg-
>pro_Codigo'>".htmlentities ($reg->pro_Nombre)."</option>
";
}

$tbDireccionpro.="</select>";
$tbDireccionpro=utf8_encode($tbDireccionpro);

$objResp = new xajaxResponse();


$objResp-
>assign("SecUbigeoProPer","innerHTML",$tbDireccionpro);
return $objResp;

291
}

function slc_Distrito($iddistrito){

global $conexion;

$consult = "SELECT * FROM tbpersona_distrito where


dis_pro_Codigo='$iddistrito'";
$result = $conexion->query($consult);
$tbDirecciondis.="
<select id='slc_PerUbigeoDistrito' name='slc_PerUbigeoDistrito'
class='slcDatoPersona'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg=$result->fetch_object())
{
$tbDirecciondis.=
"<option value='$reg-
>dis_Codigo'>$reg->dis_Nombre</option>
";
}

$tbDirecciondis.="</select>";
$objResp = new xajaxResponse();
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
return $objResp;
}

function nuevoPerBus()
{
global $conexion;

$consult="SELECT per_Codigo , LEFT( per_Codigo, 3 ) AS


Nom, RIGHT( per_Codigo, 7 ) AS Num
FROM tbpersona ORDER BY per_Codigo
DESC LIMIT 0 , 1";
$result = $conexion->query($consult) ;
$reg=$result->fetch_object();
$nom=$reg->Nom;
$num=$reg->Num;
$num=$num+1;

if($num<10){
$nombreCod=$nom."000000".$num;

292
}else
if($num<100 && $num>=10){
$nombreCod=$nom."00000".$num;
}else
if($num<1000 && $num>=100){
$nombreCod=$nom."0000".$num;
}else
if($num<10000 && $num>=1000){
$nombreCod=$nom."000".$num;
}else if($num<100000 && $num>=10000){
$nombreCod=$nom."00".$num;
}else if($num<1000000 && $num>=100000){
$nombreCod=$nom."0".$num;
}

$consult1 = "SELECT * FROM tbpersona_tipo";


$result1 = $conexion->query($consult1);
$tbTipo = "<select id='slc_PerTipoPersona' name='slc_PerTipoPersona'
class='slcDatoPersona'>";
while($reg1=$result1->fetch_object())
{
$tbTipo.=
"<option value='$reg1->pti_Codigo'>$reg1-
>pti_Nombre</option>
";
}
$tbTipo.="</select>";

$consult2 = "SELECT * FROM tbarea";


$result2 = $conexion->query($consult2);
$tbArea = "<select id='slc_PerArea' name='slc_PerArea'
class='slcDatoPersona'>
<option value='0'>SELECCIONAR</option>";

while($reg2=$result2->fetch_object())
{
$tbArea.=
"<option value='$reg2->are_Codigo'>$reg2-
>are_Nombre</option>
";
}
$tbArea.="</select>";

293
$consult27 = "SELECT * FROM tbpersona_cargo";
$result27 = $conexion->query($consult27);
$tbCargo = "<select id='slc_PerCargo' name='slc_PerCargo' >
<option value='0'>SELECCIONAR</option>";
while($reg27=$result27->fetch_object())
{

$tbCargo.=
"<option value='$reg27-
>pca_Codigo'>".htmlentities($reg27->pca_Nombre)."</option>
";

}
$tbCargo.="</select>";

$consult9 = "select * from tbpersona_departamento";


$result9 = $conexion->query($consult9);

$consult10 = "select * from tbpersona_provincia";


$result10 = $conexion->query($consult10);

$consult11 = "select * from tbpersona_distrito";


$result11 = $conexion->query($consult11);

$tbDirecciondep.="
<select id='slc_PerUbigeoDepartamento' name='slc_PerUbigeoDepartamento'
onChange='xajax_slc_Provincia(this.value)' class='slcDatoPersona'>
<option value='0' selected>SELECCIONAR</option>
";

while($reg9=$result9->fetch_object())
{
$tbDirecciondep.=
"<option value='$reg9-
>dep_Codigo'>$reg9->dep_Nombre</option>
";
}
$tbDirecciondep.="</select>";

294
$tbDireccionpro.="
<select id='slc_PerUbigeoProvincia' name='slc_PerUbigeoProvincia'
class='slcDatoPersona' onChange='xajax_slc_Distrito(this.value)'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg10=$result10->fetch_object())
{

$tbDireccionpro.=
"<option value='$reg10-
>pro_Codigo'>$reg10->pro_Nombre</option>
";

}
$tbDireccionpro.="</select>";

$tbDirecciondis.="
<select id='slc_PerUbigeoDistrito' name='slc_PerUbigeoDistrito'
class='slcDatoPersona'>
<option value='0'
selected>SELECCIONAR</option>";
while($reg11=$result11->fetch_object())
{

$tbDirecciondis.="<option value='$reg11->dis_Codigo'>$reg11-
>dis_Nombre</option>";

}
$tbDirecciondis.="</select>";

$consult13 = "select * from tbpersona_zona";


$result13 = $conexion->query($consult13);

$consult14 = "select * from tbpersona_via";


$result14 = $conexion->query($consult14);

$tbDireccionzona="";
$tbDireccionvia= "";

295
$tbDireccionzona.="<li class='coluPerDatoUbigeoDirTipoZona'>
<select id='slc_PerUbigeoDirTipoZona'
name='slc_PerUbigeoDirTipoZona' class='slcDatoPersona'>
";
while($reg13=$result13->fetch_object())
{

$tbDireccionzona.="<option value='$reg13->pzo_Codigo'>$reg13-
>pzo_Nombre</option>";
}
$tbDireccionzona.="</select></li>";

$tbDireccionvia.="<li class='coluPerDatoUbigeoDirTipoVia'>
<select id='slc_PerUbigeoDirTipoVia'
name='slc_PerUbigeoDirTipoVia' class='slcDatoPersona'>
";
while($reg14=$result14->fetch_object())
{
$tbDireccionvia.="<option value='$reg14->pvi_Codigo'>$reg14-
>pvi_Nombre</option>";
}
$tbDireccionvia.="</select></li>";

$consult15 = "SELECT * FROM tbpersona_prefijo";


$result15 = $conexion->query($consult15);

$tbTipoPrefijo = "";

$tbTipoPrefijo.=
"<select id='slc_PerPrefijo' name='slc_PerPrefijo'
class='slcDatoPersona'>
";
while($reg15=$result15->fetch_object())
{

$tbTipoPrefijo.=
"<option value='$reg15->ppr_Codigo'>$reg15-
>ppr_Nombre</option>
";

}
$tbTipoPrefijo.="</select>";

296
$PerSex="";
if($reg->per_Sexo=="M"){
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>FEMENINO
";
}else{
$PerSex.=
"<input name='rdo_PerSexo' id='rdo_PerSexoM' type='radio'
value='M' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
/>MASCULINO
<input name='rdo_PerSexo' id='rdo_PerSexoF' type='radio'
value='F' class='rdoSGDDato' onChange='xajax_slc_SexoPer(this.value)'
checked='CHECKED' />FEMENINO
";
}

$SecPerTipoEmpresa="

<input

name='rdoPerTipoEmpresa'

id='rdo_PerTipoEmpresaN'
type='radio'

value='PERSONA NATURAL'

onClick='habilitarFormPerRS()'

onChange='xajax_slc_TipoEmpresa(this.value)'
checked
/>NATURAL
<input

name='rdoPerTipoEmpresa'

id='rdo_PerTipoEmpresaJ'
type='radio'

value='PERSONA JURIDICA'

297
onClick='habilitarFormPerRS()'

onChange='xajax_slc_TipoEmpresa(this.value)'

/>JURIDICA

";

/*
/*/

$objResp = new xajaxResponse();

$objResp-
>assign("SecTipoPerBus","innerHTML",utf8_encode($tbTipo));
$objResp-
>assign("SecAreaPerBus","innerHTML",utf8_encode($tbArea));

$objResp-
>assign("SecPerPrefijo","innerHTML",utf8_encode($tbTipoPrefijo));
$objResp->assign("SecPerSexo","innerHTML",utf8_encode($PerSex));
$objResp-
>assign("SecPerCargo","innerHTML",utf8_encode($tbCargo));

$objResp-
>assign("SecUbigeoDepPer","innerHTML",utf8_encode($tbDirecciondep));
$objResp-
>assign("SecUbigeoProPer","innerHTML",utf8_encode($tbDireccionpro));
$objResp-
>assign("SecUbigeoDisPer","innerHTML",utf8_encode($tbDirecciondis));
$objResp-
>assign("SecUbigeoZonaPer","innerHTML",utf8_encode($tbDireccionzona));
$objResp-
>assign("SecUbigeoViaPer","innerHTML",utf8_encode($tbDireccionvia));
$objResp-
>assign("SecPerTipoEmpresa","innerHTML",utf8_encode($SecPerTipoEmpresa));

$objResp->assign("txt_PerCodigo","value",$nombreCod);
$objResp->assign("Hidetxt_PerCodigo","value",$nombreCod);
$objResp->assign("HideTipoEmpresa","value","PERSONA
NATURAL");
$objResp->assign("HideArea","value",$HideArea);

298
$objResp->assign("PerAccion","value","nuevo");
$objResp->assign("botonagregar","value","AGREGAR");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerUbigeoDirPiso","value","");
$objResp->assign("txt_PerUbigeoDirInterior","value","");
$objResp->assign("txt_PerUbigeoDirManzana","value","");
$objResp->assign("txt_PerUbigeoDirLote","value","");

$objResp->assign("txt_PerNombre","value","");
$objResp->assign("txt_PerApellido","value","");
$objResp->assign("txt_PerSexo","value","");

$objResp->assign("txt_PerFechaCaducidadDia","value","");
$objResp->assign("txt_PerFechaCaducidadMes","value","");
$objResp->assign("txt_PerFechaCaducidadAno","value","");

$objResp->assign("txt_PerNacimientoDia","value","");
$objResp->assign("txt_PerNacimientoMes","value","");
$objResp->assign("txt_PerNacimientoAno","value","");

$objResp->assign("txt_PerCargo","value","");

$objResp->assign("txt_PerUbigeoDirVia","value","");
$objResp->assign("txt_PerRazonSocial","value","");
$objResp->assign("txt_PerRUC","value","");

$objResp->assign("txt_PerUbigeoDirZona","value","");
$objResp->assign("txt_PerUbigeoDirNumero","value","");
$objResp->assign("txt_PerEmail","value","");
$objResp->assign("txt_PerDNI","value","");
$tipopersona="PERSONA NATURAL";
$objResp->script("xajax_slc_TipoEmpresa('".$tipopersona."')");
return $objResp;
}

////////////////GUARDAR PERSONA////////////////////////

function GuardarPer($FormPersona){
global $conexion;

299
$accion=$FormPersona['PerAccion'];
$rbtsexo=$FormPersona['rbtsexo'];
$PerSexo=$FormPersona['PerSexo'];

$HideArea=$FormPersona['HideArea'];

$Hidetxt_PerCodigo=$FormPersona['Hidetxt_PerCodigo'];
$rdoPerTipoEmpresa=$FormPersona['rdoPerTipoEmpresa'];

$txt_PerRazonSocial=utf8_decode($FormPersona['txt_PerRazonSocial']);
$slc_PerRazonSocial=$FormPersona['slc_PerRazonSocial'];
$txt_PerRUC=$FormPersona['txt_PerRUC'];
$slc_PerPrefijo=$FormPersona['slc_PerPrefijo'];
$txt_PerNombre=utf8_decode($FormPersona['txt_PerNombre']);
$txt_PerApellido=utf8_decode($FormPersona['txt_PerApellido']);

$txt_PerDNI=$FormPersona['txt_PerDNI'];

$txt_PerFechaCaducidadAno=$FormPersona['txt_PerFechaCaducidadAno'];
$txt_PerNacimiento=$FormPersona['txt_PerNacimiento'];
$slc_PerCargo=$FormPersona['slc_PerCargo'];
$slc_PerTipoPersona=$FormPersona['slc_PerTipoPersona'];
$slc_PerArea=$FormPersona['slc_PerArea'];
$txt_PerNumTelefono=$FormPersona['txt_PerNumTelefono'];
$txt_PerEmail=$FormPersona['txt_PerEmail'];

$slc_PerUbigeoDistrito=$FormPersona['slc_PerUbigeoDistrito'];

$slc_PerUbigeoDirTipoZona=$FormPersona['slc_PerUbigeoDirTipoZona'];

$txt_PerUbigeoDirZona=utf8_decode($FormPersona['txt_PerUbigeoDirZona'
]);

$slc_PerUbigeoDirTipoVia=$FormPersona['slc_PerUbigeoDirTipoVia'];

$txt_PerUbigeoDirVia=utf8_decode($FormPersona['txt_PerUbigeoDirVia']);

$txt_PerUbigeoDirNumero=$FormPersona['txt_PerUbigeoDirNumero'];
$txt_PerUbigeoDirPiso=$FormPersona['txt_PerUbigeoDirPiso'];
$txt_PerUbigeoDirInterior=$FormPersona['txt_PerUbigeoDirInterior'];

$txt_PerUbigeoDirManzana=$FormPersona['txt_PerUbigeoDirManzana'];
$txt_PerUbigeoDirLote=$FormPersona['txt_PerUbigeoDirLote'];
$txt_PerCodigoUbigeo=$FormPersona['txt_PerCodigoUbigeo'];

$txt_PerDNI=strlen($txt_PerDNI);

300
if($txt_PerDNI<8){
$objResp = new xajaxResponse();
$objResp->alert("El DNI no es válido");

return $objResp;
}

if($txt_PerNombre==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un nombre");

return $objResp;
}

if($txt_PerApellido==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un Apellido");

return $objResp;
}

if($txt_PerNacimiento==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese fecha nacimiento");

return $objResp;
}

if($txt_PerNumTelefono==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese numero telefonico");

return $objResp;
}
if($txt_PerEmail==""){
$objResp = new xajaxResponse();
$objResp->alert("Ingrese un email");

return $objResp;
}

if($txt_PerUbigeoDirLote==""){
$txt_PerUbigeoDirLote=0;
}

if($txt_PerUbigeoDirNumero==""){
$txt_PerUbigeoDirNumero=0;

301
}

if($txt_PerUbigeoDirPiso==""){
$txt_PerUbigeoDirPiso=0;
}

if($rdoPerTipoEmpresa=="PERSONA NATURAL"){
$txt_PerRazonSocial="";
$slc_PerRazonSocial="";
$txt_PerRUC=0;
}

$txt_PerRazonSocial=strtoupper($txt_PerRazonSocial);
$txt_PerNombre=strtoupper($txt_PerNombre);
$txt_PerApellido=strtoupper($txt_PerApellido);

$txt_PerUbigeoDirZona=strtoupper($txt_PerUbigeoDirZona);
$txt_PerUbigeoDirVia=strtoupper($txt_PerUbigeoDirVia);

$txt_PerUbigeoDirManzana=strtoupper($txt_PerUbigeoDirManzana);

$objResp=new xajaxResponse();

if($accion=="nuevo"){

$consult3="SELECT pdi_Codigo , LEFT( pdi_Codigo, 3 ) AS


Nom, RIGHT( pdi_Codigo, 7 ) AS Num
FROM tbpersona_direccion ORDER BY
pdi_Codigo DESC LIMIT 0 , 1";
$result3 = $conexion->query($consult3) ;
$reg3=$result3->fetch_object();
$nom3=$reg3->Nom;
$num3=$reg3->Num;
$num3=$num3+1;

302
if($num3<10){
$nombre3=$nom3."000000".$num3;
}else if($num3<100 && $num3>=10){
$nombre3=$nom3."00000".$num3;
}if($num3<1000 && $num3>=100){
$nombre3=$nom3."0000".$num3;
}if($num3<10000 && $num3>=1000){
$nombre3=$nom3."000".$num3;
}if($num3<100000 && $num3>=10000){
$nombre3=$nom3."00".$num3;
}if($num3<1000000 && $num3>=100000){
$nombre3=$nom3."0".$num3;
}

$consult4="SELECT par_Codigo , LEFT( par_Codigo, 3 ) AS


Nom, RIGHT( par_Codigo, 7 ) AS Num
FROM tbpersona_area ORDER BY par_Codigo
DESC LIMIT 0 , 1";
$result4 = $conexion->query($consult4) ;
$reg4=$result4->fetch_object();
$nom4=$reg4->Nom;
$num4=$reg4->Num;
$num4=$num4+1;

if($num4<10){
$nombre4=$nom4."000000".$num4;
}else if($num4<100 && $num4>=10){
$nombre4=$nom4."00000".$num4;
}if($num4<1000 && $num4>=100){
$nombre4=$nom4."0000".$num4;
}if($num4<10000 && $num4>=1000){
$nombre4=$nom4."000".$num4;
}if($num4<100000 && $num4>=10000){
$nombre4=$nom4."00".$num4;
}if($num4<1000000 && $num4>=100000){
$nombre4=$nom4."0".$num4;
}

$consult1="insert into tbpersona


(per_Codigo,
per_TipoEmpresa,
per_RazonSocial,
per_prs_Codigo,

303
per_RUC,
per_ppr_Codigo,
per_Nombres,
per_Apellidos,
per_Sexo,
per_DNI,
per_DNICaducidad,
per_Nacimiento,
per_pca_Codigo,
per_Email,
per_Telefono,
per_pti_Codigo,
per_pdi_Codigo)

values(
'$Hidetxt_PerCodigo',
'$rdoPerTipoEmpresa',
'$txt_PerRazonSocial',
'$slc_PerRazonSocial',
$txt_PerRUC,
'$slc_PerPrefijo',
'$txt_PerNombre',
'$txt_PerApellido',
'$rbtsexo',
'$txt_PerDNI',
'$txt_PerFechaCaducidadAno',
'$txt_PerNacimiento',
'$slc_PerCargo',
'$txt_PerEmail',
$txt_PerNumTelefono,
'$slc_PerTipoPersona',
'$nombre3'
)";
$conexion->query($consult1);

$consult5="insert into tbpersona_direccion (


pdi_Codigo,
pdi_dis_Codigo,
pdi_pzo_Codigo,
pdi_NombreZona,
pdi_pvi_Codigo,
pdi_NombreVia,
pdi_Numero,

304
pdi_Piso,
pdi_Interior,
pdi_Manzana,
pdi_Lote)
values(
'$nombre3',
'$slc_PerUbigeoDistrito',
'$slc_PerUbigeoDirTipoZona',
'$txt_PerUbigeoDirZona',
'$slc_PerUbigeoDirTipoVia',
'$txt_PerUbigeoDirVia',
$txt_PerUbigeoDirNumero,
$txt_PerUbigeoDirPiso,
'$txt_PerUbigeoDirInterior',
'$txt_PerUbigeoDirManzana',
$txt_PerUbigeoDirLote)";
$conexion->query($consult5);

$consult6="insert into tbpersona_area (


par_Codigo,
par_per_Codigo,
par_are_Codigo,
par_Estado,
)
values(
'$nombre4',
'$Hidetxt_PerCodigo',
'$slc_PerArea'
'1')";
$conexion->query($consult6);

$objResp->alert("Registro Exitoso");
$objResp->script("perBuscar()");
$objResp->script("xajax_nuevoPerBus()");
return $objResp;
}
else if($accion=="Editar") {

305
$consult="update tbpersona set

per_TipoEmpresa='$rdoPerTipoEmpresa',
per_RazonSocial='$txt_PerRazonSocial',
per_prs_Codigo='$slc_PerRazonSocial',
per_RUC=$txt_PerRUC,
per_ppr_Codigo='$slc_PerPrefijo',
per_Nombres='$txt_PerNombre',
per_Apellidos='$txt_PerApellido',
per_Sexo='$rbtsexo',
per_DNI='$txt_PerDNI',

per_DNICaducidad='$txt_PerFechaCaducidadAno',
per_Nacimiento='$txt_PerNacimiento',
per_pca_Codigo='$slc_PerCargo',
per_Email='$txt_PerEmail',
per_Telefono=$txt_PerNumTelefono,
per_pti_Codigo='$slc_PerTipoPersona'
where per_Codigo='$Hidetxt_PerCodigo'
";
$conexion->query($consult);

$consult5="update tbpersona_direccion set


pdi_dis_Codigo='$slc_PerUbigeoDistrito',
pdi_pzo_Codigo='$slc_PerUbigeoDirTipoZona',
pdi_NombreZona='$txt_PerUbigeoDirZona',
pdi_pvi_Codigo='$slc_PerUbigeoDirTipoVia',
pdi_NombreVia='$txt_PerUbigeoDirVia',
pdi_Numero=$txt_PerUbigeoDirNumero,
pdi_Piso=$txt_PerUbigeoDirPiso,
pdi_Interior='$txt_PerUbigeoDirInterior',
pdi_Manzana='$txt_PerUbigeoDirManzana',
pdi_Lote=$txt_PerUbigeoDirLote
where pdi_Codigo='$txt_PerCodigoUbigeo'";
$conexion->query($consult5);

$consult6="update tbpersona_area set


par_are_Codigo='$slc_PerArea'
where par_Codigo='$HideArea'";
$conexion->query($consult6);

$objResp->alert("Actualizar Exitoso");
$objResp->script("perBuscar()");
return $objResp;
}

306
}

function selectRazonSocial()
{
global $conexion;

$consult = "SELECT * FROM tbpersona_razonsocial";


$result=$conexion->query($consult);

$tbTipoDocumento = "<option value=''>SELECCIONAR</option>";

while($reg=$result->fetch_object()){

$tbTipoDocumento.="<option value='$reg->prs_Codigo'>$reg-
>prs_Abreviatura</option>";
}
$tbTipoDocumento.="";

$objResp = new xajaxResponse();


$objResp-
>assign("slc_PerRazonSocial","innerHTML",$tbTipoDocumento);
return $objResp;
}

function slc_SexoPer($idPerSexo){

$objResp = new xajaxResponse();


$objResp->assign("rbtsexo","value",$idPerSexo);

return $objResp;
}

function slc_TipoEmpresa($idPerTipoEmresa){

if($idPerTipoEmresa=="PERSONA NATURAL"){

$objResp = new xajaxResponse();


$objResp->assign("txt_PerRazonSocial","disabled",
true);
$objResp->assign("slc_PerRazonSocial","disabled",
true);
$objResp->assign("txt_PerRUC","disabled", true);

$objResp-
>assign("HideTipoEmpresa","value",$idPerTipoEmresa);

307
return $objResp;

}else if($idPerTipoEmresa="PERSONA JURIDICA"){

$objResp = new xajaxResponse();


$objResp = new xajaxResponse();
$objResp->assign("txt_PerRazonSocial","disabled",
false);
$objResp->assign("slc_PerRazonSocial","disabled",
false);
$objResp->assign("txt_PerRUC","disabled", false);
$objResp-
>assign("HideTipoEmpresa","value",$idPerTipoEmresa);

return $objResp;
}

$fperBuscar =& $xajax->registerFunction('perBuscar');


$fperBuscar->setParameter(0,XAJAX_FORM_VALUES,'frmPerBuscar');

$fMostrarPerBus =& $xajax->registerFunction('MostrarPerBus');


$fslc_Provincia =& $xajax->registerFunction('slc_Provincia');
$fslc_Provincia =& $xajax->registerFunction('slc_Distrito');
$fnuevoPerBus =& $xajax->registerFunction('nuevoPerBus');

$fGuardarPer =& $xajax->registerFunction('GuardarPer');


$fGuardarPer->setParameter(0,XAJAX_FORM_VALUES,'FormDatosPer');

$fselectRazonSocial =&$xajax->registerFunction('selectRazonSocial');

$fslc_SexoPer=&$xajax->registerFunction('slc_SexoPer');
$fslc_TipoEmpresa=&$xajax->registerFunction('slc_TipoEmpresa');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";
?>

- modTramite
<?php
session_start();
$usuCodigo=$_SESSION["usuCodigo"];
$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];

308
$pprAbreviatura=$_SESSION["pprAbreviatura"];
$perCodigo=$_SESSION["perCodigo"];
$perNombres=$_SESSION["perNombres"];
$perApellidos=$_SESSION["perApellidos"];
$pcaNombre=$_SESSION["pcaNombre"];

//DATOS DEL AREA PRINCIPAL


$areCodigo=$_SESSION["areCodigo"];
$areAbreviatura=$_SESSION["areAbreviatura"];
$areJefe=$_SESSION["areJefe"];
$areJerarquia=$_SESSION["areJerarquia"];

include ('../class/conex.php');
require_once('../js/ajax/xajax_core/xajax.inc.php');

$xajax=new xajax();
$xajax->configure('javascript URI','../js/ajax');
$xajax->configure('debug',false);

/*GENERALES*/
function tramite()//LISTO
{
$objResp = new xajaxResponse();
$objResp->script("traAreas()");
return $objResp;
}
function traAreas()//LISTO
{
global $conexion;
global $perCodigo;
global $areCodigo;

$consulta =
"
SELECT par_Codigo, par_are_Codigo, LEFT(are_Nombre, 22)
AS areNombre
FROM tbpersona_area par
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo
WHERE par_per_Codigo LIKE '%$perCodigo%'
";
$resultado = $conexion->query($consulta);
$cadenaPendientes="<select name='slcTraPendientesAreas'
id='slcTraPendientesAreas' onChange='traPendientes()'>";
$cadenaDocumento="<select name='slcTraDocumentoAreas'
id='slcTraDocumentoAreas' onChange='traDocumentoHistorial()'>";
$cadenaHistorial="<select name='slcTraHistorialAreas'
id='slcTraHistorialAreas' onChange='traHistorial()'>";
while($registro=$resultado->fetch_object())

309
{
if($areCodigo==$registro->par_are_Codigo)
{
$cadena.=
"
<option value='$registro->par_are_Codigo'
selected>$registro->areNombre</option>
";
}
else
{
$cadena.=
"
<option value='$registro-
>par_are_Codigo'>$registro->areNombre</option>
";
}
}
$cadena.="</select>";
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraPendientesAreas","innerHTML",utf8_encode($cadenaPendientes."".$
cadena));
$objResp-
>assign("stnTraDocumentoAreas","innerHTML",utf8_encode($cadenaDocumento.""
.$cadena));
$objResp-
>assign("stnTraHistorialAreas","innerHTML",utf8_encode($cadenaHistorial."".$cad
ena));
$objResp->script("traPendientes()");
$objResp->script("traDocumentoHistorial()");
$objResp->script("traHistorial()");
return $objResp;
}

/*HISTORIAL*/
function traPendientes($frmTraPendientes,$pagina=1)//LISTO
{
global $conexion;
global $perCodigo;
global $areCodigo;
global $areJefe;

$txtTraPendientesArea=$frmTraPendientes['txtTraPendientesArea'];
$slcTraPendientesAreas=$frmTraPendientes['slcTraPendientesAreas'];

$cFilas=15;
$consulta =
"
SELECT

310
are_NombreCorto, usu_Nombre, dpl_Nombre,
doc_Codigo, dhi_Fecha, dhi_Hora, dhi_Mensaje, dhi_Procedimiento
FROM tbdocumento_historial dhi
INNER JOIN tbusuario usu ON dhi_usu_Codigo = usu_Codigo
INNER JOIN tbdocumento doc ON dhi.dhi_doc_Codigo =
doc.doc_Codigo
INNER JOIN tbdocumento_plantilla dpl ON dpl.dpl_Codigo =
doc.doc_dpl_Codigo
INNER JOIN tbpersona_area par ON par.par_per_Codigo =
doc.doc_Remitente
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo
WHERE dhi_Procedimiento = '0' AND dhi_are_Codigo =
'".$slcTraPendientesAreas."' AND are_Nombre LIKE '%".$txtTraPendientesArea."%'
";
if($areJefe == $perCodigo)
{
$consulta .=
"
ORDER BY dhi_Fecha DESC, dhi_Hora DESC
";
}
elseif($areJefe <> $perCodigo)
{
$consulta .=
"
AND doc.doc_Estado = '1'
ORDER BY dhi_Fecha DESC, dhi_Hora DESC
";
}

$resultado = $conexion->query($consulta);
$nFilas=$resultado->num_rows;
$cPaginas=ceil($nFilas/$cFilas);
$inicio=($pagina-1)*$cFilas;

$consulta = $consulta . "limit $inicio,$cFilas";


$resultado = $conexion->query($consulta);
$pagSiguiente=$pagina+1;

if($pagSiguiente>=$cPaginas)
{
$pagSiguiente=$cPaginas;
}
$pagAnterior=$pagina-1;
if($pagAnterior<=1)
{
$pagAnterior=1;
}
$pagInicial=1;

311
$pagFinal=$cPaginas;
$cadena="";
$pie="";

if($nFilas<>"")
{
while($registro=$resultado->fetch_object())
{
$dhiProcedimiento=$registro->dhi_Procedimiento;
if($dhiProcedimiento=="0")
{
$dhiProcedimiento = "EN TR&Aacute;MITE";
}
else if($dhiProcedimiento=="1")
{
$dhiProcedimiento = "RESUELTO";
}

$cadena.=
"
<ul class='fila'
onClick='xajax_traPendientesClic((\"$registro->doc_Codigo\"))'>
<a href='#tab2'>
<li>$registro-
>are_NombreCorto</li>
<li>$registro->usu_Nombre</li>
<li>$registro->dpl_Nombre</li>
<li>$registro->dhi_Mensaje</li>
<li>$registro->dhi_Fecha</li>
<li>$registro->dhi_Hora</li>
<li>$dhiProcedimiento</li>
</a>
</ul>
";
}
}
else
{
$cadena.=
"
<ul>
<li>
Sin datos
</li>
</ul>
";
}
$pie.=
"
<li>

312
<a
onClick='xajax_traPendientes(xajax.getFormValues(\"frmTraPendientes\"),$pagInici
al)' id='aTraInicio' name='aTraInicio'>
<img src='../img/inicio.png'/>
</a>
<a
onClick='xajax_traPendientes(xajax.getFormValues(\"frmTraPendientes\"),$pagAnte
rior)' id='aTraAtras' name='aTraAtras'>
<img src='../img/atras.png'/>
</a>
<a
onClick='xajax_traPendientes(xajax.getFormValues(\"frmTraPendientes\"),$pagSigui
ente)' id='aTraAdelante' name='aTraAdelante'>
<img src='../img/adelante.png'/>
</a>
<a
onClick='xajax_traPendientes(xajax.getFormValues(\"frmTraPendientes\"),$pagFinal
)' id='aTraFin' name='aTraFin'>
<img src='../img/fin.png'/>
</a>
</li>
<li>
<label class='lblCantReg'>REGISTROS:
$nFilas</label>
</li>
";

$objResp = new xajaxResponse();


$objResp-
>assign("rtcTraPendientesDato","innerHTML",utf8_encode($cadena));
$objResp->assign("rtcTraPendientesPie","innerHTML",$pie);

if($areJefe <> $perCodigo)


{
$objResp->script(
"
$('input[name=btnTraDocumentoEstado]').hide();
");
}
else if($areJefe == $perCodigo)
{
$objResp->script(
"
$('input[name=btnTraDocumentoEstado]').show();
");
}

$objResp->script(
"
$(function()

313
{
$('ul.fila').on('click',function()
{
$('ul.tabs li:first').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('.block article.rtc').hide();
var activeTab = $(this).find('a').attr('href');
$(activeTab).show();
return false;
});
})
");
return $objResp;
}
function traPendientesClic($docCodigo)//LISTO
{
global $conexion;
global $perCodigo;
global $areJefe;

$consulta =
"
SELECT *
FROM tbdocumento
WHERE doc_Codigo = '". $docCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$docDplCodigo=$registro->doc_dpl_Codigo;
$docUsuCodigo=$registro->doc_usu_Codigo;
$docFecha=$registro->doc_Fecha;
$docHora=$registro->doc_Hora;
$docNumero=$registro->doc_Numero;
$docDanCodigo=$registro->doc_dan_Codigo;
$docTitulo=$registro->doc_Titulo;
$docRemitenteCodigo=$registro->doc_Remitente;
$docDestinatarioCodigo=$registro->doc_Destinatario;
$docAsunto=$registro->doc_Asunto;
$docContenido=$registro->doc_Contenido;
$docReferenciaCodigo=$registro->doc_Referencia;
$docEstado=$registro->doc_Estado;

/*documento tipo*/
$consulta=
"
SELECT *
FROM tbdocumento_tipo
WHERE dti_dpl_Codigo LIKE '".$docDplCodigo."'
";

314
$resultado = $conexion->query($consulta);
$cadena=
"
<select name='slcTraDocumentoDoc'
id='slcTraDocumentoDoc'>
<option value='0'>SELECCIONE</option>
";
while($registro=$resultado->fetch_object())
{
if($registro->dti_Codigo == $docTitulo)
{
$cadena.=
"
<option value='$registro->dti_Codigo'
selected>$registro->dti_Nombre</option>
";
$var="1";
}
else
{
$cadena.=
"
<option value='$registro-
>dti_Codigo'>$registro->dti_Nombre</option>
";
}
}
if($var=="1")
{
$cadena.=
"
<option value='OTRO'>OTRO</option>
";
}
else
{
$cadena.=
"
<option value='OTRO' selected>OTRO</option>
";
}
$cadena.=
"
</select>
";
/*remitente*/
$consulta =
"
SELECT per_Nombres, per_Apellidos, par_are_Codigo
FROM tbpersona per

315
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $docRemitenteCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docRemitente=$registro->per_Apellidos." ".$registro->per_Nombres;
$docRemitenteArea=$registro->par_are_Codigo;

/*destinatario*/
$consulta =
"
SELECT per_Nombres, per_Apellidos, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $docDestinatarioCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docDestinatario=$registro->per_Apellidos." ".$registro-
>per_Nombres;
$docDestinatarioArea=$registro->par_are_Codigo;

/*referencia*/
$consulta =
"
SELECT doc_Numero
FROM tbdocumento
WHERE doc_Codigo = '". $docReferenciaCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docReferencia=$registro->doc_Numero;

/*contenido*/
$stnTraDocumentoContenido=
"
<object
data='vieTramiteContenido.php?escritura=NO&txtTraDocumentoContenido=$docCo
ntenido' id='objTraDocumentoContenido'>
</object>
";

$objResp = new xajaxResponse();


$objResp->assign("txtTraDocumentoCodigo","value",$docCodigo);
$objResp->assign("slcTraDocumentoTipo","value",$docDplCodigo);
//$objResp->assign("slcTraDocumentoDoc","value",$docTitulo);
$objResp-
>assign("txtTraDocumentoOtro","value",utf8_encode($docAsunto));

316
$objResp->assign("txtTraDocumentoNDoc","value",$docNumero);
$objResp-
>assign("txtTraDocumentoRemitenteArea","value",$docRemitenteArea);
$objResp-
>assign("txtTraDocumentoRemitenteCodigo","value",$docRemitenteCodigo);
$objResp-
>assign("txtTraDocumentoRemitente","value",utf8_encode($docRemitente));
$objResp-
>assign("txtTraDocumentoDestinatarioArea","value",$docDestinatarioArea);
$objResp-
>assign("txtTraDocumentoDestinatarioCodigo","value",$docDestinatarioCodigo);
$objResp-
>assign("txtTraDocumentoDestinatario","value",utf8_encode($docDestinatario));
$objResp-
>assign("txtTraDocumentoReferenciaCodigo","value",$docReferenciaCodigo);
$objResp-
>assign("txtTraDocumentoReferencia","value",$docReferencia);

$objResp->assign("txtTraDocumentoContenido","value","CLIC
PARA VER CONTENIDO");
$objResp-
>assign("stnTraDocumentoContenido","innerHTML",utf8_encode($stnTraDocument
oContenido));

$objResp->assign("stnTraDocumentoDoc","innerHTML",$cadena);

if($areJefe == $perCodigo)
{
$objResp->script(

"$('input[name=btnTraDocumentoEstado]').removeAttr('disabled');");
if($docEstado=='0')
{
$objResp->script(
"

$('input[name=btnTraDocumentoEstado]').val('AUTORIZAR');

$('input[name=btnTraDocumentoEstado]').attr('onClick','xajax_traDocumento
Estado(xajax.getFormValues(\"frmTraDocumento\"),$docEstado)');
");
}
elseif($docEstado=='1')
{
$objResp->script(
"

$('input[name=btnTraDocumentoEstado]').val('DENEGAR');

317
$('input[name=btnTraDocumentoEstado]').attr('onClick','xajax_traDocumento
Estado(xajax.getFormValues(\"frmTraDocumento\"),$docEstado)');
");
}
}
$objResp->script(
"
$('select[name=slcTraDocumentoTipo]').attr('disabled',
'disabled');
$('select[name=slcTraDocumentoDoc]').attr('disabled',
'disabled');
$('input[name=txtTraDocumentoRemitente]').attr('readonly',
'readonly');
$('input[name=txtTraDocumentoDestinatario]').attr('readonly',
'readonly');
$('input[name=txtTraDocumentoReferencia]').attr('readonly',
'readonly');
$('textarea[name=txtTraDocumentoContenido]').attr('readonly',
'readonly');

$('input[name=btnTraDocumentoVista]').removeAttr('disabled');
$('input[name=btnTraDocumentoGuardar]').hide();
$('input[name=btnTraDocumentoEnviar]').val('RESOLVER');

$('input[name=btnTraDocumentoEnviar]').removeAttr('disabled');
$('input[name=btnTraDocumentoEnviar]').attr('onClick',
'traDocumentoResolver()');
");
$objResp->script(
"
$(function()
{

$('input[name=btnTraDocumentoEnviar]').on('click',function()
{
$('ul.tabs li:nth-child(4)').removeClass('active');
$('ul.tabs li:nth-child(2)').addClass('active')
$('.block article.rtc').hide();
$('.block article.rtc:nth-child(2)').show();
return false;
});
})
");
$objResp->script("traDocumentoAdjuntos()");
return $objResp;
}
/*DOCUMENTO*/
function
traDocumentoHistorial($frmTraDocumentoHistorial,$pagina=1)//LISTO

318
{
global $conexion;

$slcTraDocumentoAreas=$frmTraDocumentoHistorial['slcTraDocumentoAre
as'];

$slcTraDocumentoTipos=$frmTraDocumentoHistorial['slcTraDocumentoTip
os'];

$cFilas=6;
$consulta =
"
SELECT doc_Codigo, doc_Numero, doc_Fecha, doc_Hora,
usu_Nombre, par_are_Codigo
FROM tbdocumento doc
INNER JOIN tbusuario usu ON doc.doc_usu_Codigo =
usu.usu_Codigo
INNER JOIN tbpersona_area par ON doc.doc_Remitente =
par.par_per_Codigo
WHERE doc_dpl_Codigo = '".$slcTraDocumentoTipos."' AND
par_are_Codigo = '".$slcTraDocumentoAreas."'
ORDER BY doc_Fecha DESC, doc_Hora DESC
";
$resultado = $conexion->query($consulta);

$nFilas=$resultado->num_rows;
$cPaginas=ceil($nFilas/$cFilas);
$inicio=($pagina-1)*$cFilas;

$consulta = $consulta . "limit $inicio,$cFilas";


$resultado = $conexion->query($consulta);
$pagSiguiente=$pagina+1;

if($pagSiguiente>=$cPaginas)
{
$pagSiguiente=$cPaginas;
}
$pagAnterior=$pagina-1;
if($pagAnterior<=1)
{
$pagAnterior=1;
}
$pagInicial=1;
$pagFinal=$cPaginas;
$cadena="";
$pie="";

if($nFilas<>"")
{

319
while($registro=$resultado->fetch_object())
{
$cadena.=
"<ul class='fila'
onClick='xajax_traDocumentoHistorialClic((\"$registro->doc_Codigo\"))'>
<a>
<li>$registro->doc_Numero</li>
<li>$registro->doc_Fecha $registro-
>doc_Hora</li>
<li>$registro->usu_Nombre</li>
</a>
</ul>";
}
}
else
{
$cadena.=
"
<ul>
<li>
No se encuentran resultados para su
busqueda
</li>
</ul>
";
}
$pie.=
"
<li>
<a
onClick='xajax_traDocumentoHistorial(xajax.getFormValues(\"frmTraDocumentoHi
storial\"),$pagInicial)' id='aTraInicio' name='aTraInicio'>
<img src='../img/inicio.png'/>
</a>
<a
onClick='xajax_traDocumentoHistorial(xajax.getFormValues(\"frmTraDocumentoHi
storial\"),$pagAnterior)' id='aTraInicio' name='aTraInicio'>
<img src='../img/atras.png'/>
</a>
<a
onClick='xajax_traDocumentoHistorial(xajax.getFormValues(\"frmTraDocumentoHi
storial\"),$pagSiguiente)' id='aTraInicio' name='aTraInicio'>
<img src='../img/adelante.png'/>
</a>
<a
onClick='xajax_traDocumentoHistorial(xajax.getFormValues(\"frmTraDocumentoHi
storial\"),$pagFinal)' id='aTraInicio' name='aTraInicio'>
<img src='../img/fin.png'/>
</a>
<a onClick='' id='aTraAgregar' name='aTraAgregar'>

320
<img src='../img/agregar.png'/>
</a>
</li>
<li>
<label class='lblCantReg'>REGISTROS:
$nFilas</label>
</li>
";

$objResp = new xajaxResponse();


$objResp-
>assign("rtcTraDocumentoHistorial","innerHTML",$cadena);
$objResp->assign("rtcTraDocumentoPie","innerHTML",$pie);
$objResp->script(
"
$('a[id=aTraAgregar]').on('click',function()
{
$('input[name=txtTraDocumentoCodigo]').val('');
$('select[name=slcTraDocumentoTipo]').val('0');

$('select[name=slcTraDocumentoTipo]').removeAttr('disabled');
$('select[name=slcTraDocumentoDoc]').val('0');

$('select[name=slcTraDocumentoDoc]').removeAttr('disabled');
$('input[name=txtTraDocumentoNDoc]').val('');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');
$('input[name=txtTraDocumentoRemitente]').val('');

$('input[name=txtTraDocumentoRemitenteCodigo]').val('');

$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');
$('input[name=txtTraDocumentoDestinatario]').val('');

$('input[name=txtTraDocumentoDestinatarioCodigo]').val('');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');
$('input[name=txtTraDocumentoReferencia]').val('');

$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');
$('textarea[name=txtTraDocumentoContenido]').val('');

$('input[name=btnTraDocumentoGuardar]').removeAttr('disabled');
$('input[name=btnTraDocumentoGuardar]').show();

$('input[name=btnTraDocumentoGuardar]').val('GUARDAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoGuar
dar()');

321
$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');

$('input[name=btnTraDocumentoEnviar]').attr('disabled','disabled');
});
");
return $objResp;
}
function traDocumentoHistorialClic($docCodigo)//LISTO
{
global $conexion;

$consulta =
"
SELECT *
FROM tbdocumento
WHERE doc_Codigo = '". $docCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$docDplCodigo=$registro->doc_dpl_Codigo;
$docUsuCodigo=$registro->doc_usu_Codigo;
$docFecha=$registro->doc_Fecha;
$docHora=$registro->doc_Hora;
$docNumero=$registro->doc_Numero;
$docDanCodigo=$registro->doc_dan_Codigo;
$docTitulo=$registro->doc_Titulo;
$docRemitenteCodigo=$registro->doc_Remitente;
$docDestinatarioCodigo=$registro->doc_Destinatario;
$docAsunto=$registro->doc_Asunto;
$docContenido=$registro->doc_Contenido;
$docReferenciaCodigo=$registro->doc_Referencia;
$docEstado=$registro->doc_Estado;

/*documento tipo*/
$consulta=
"
SELECT *
FROM tbdocumento_tipo
WHERE dti_dpl_Codigo LIKE '".$docDplCodigo."'
";
$resultado = $conexion->query($consulta);
$cadena=
"
<select name='slcTraDocumentoDoc'
id='slcTraDocumentoDoc'>
<option value='0'>SELECCIONE</option>
";
while($registro=$resultado->fetch_object())

322
{
if($registro->dti_Codigo == $docTitulo)
{
$cadena.=
"
<option value='$registro->dti_Codigo'
selected>$registro->dti_Nombre</option>
";
$var="1";
}
else
{
$cadena.=
"
<option value='$registro-
>dti_Codigo'>$registro->dti_Nombre</option>
";
}
}
if($var=="1")
{
$cadena.=
"
<option value='OTRO'>OTRO</option>
";
}
else
{
$cadena.=
"
<option value='OTRO' selected>OTRO</option>
";
}
$cadena.=
"
</select>
";
/*remitente*/
$consulta =
"
SELECT per_Nombres, per_Apellidos, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $docRemitenteCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docRemitente=$registro->per_Apellidos." ".$registro->per_Nombres;
$docRemitenteArea=$registro->par_are_Codigo;

323
/*destinatario*/
$consulta =
"
SELECT per_Nombres, per_Apellidos, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $docDestinatarioCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docDestinatario=$registro->per_Apellidos." ".$registro-
>per_Nombres;
$docDestinatarioArea=$registro->par_are_Codigo;

/*referencia*/
$consulta =
"
SELECT doc_Numero
FROM tbdocumento
WHERE doc_Codigo = '". $docReferenciaCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$docReferencia=$registro->doc_Numero;

/*contenido*/
$stnTraDocumentoContenido=
"
<object
data='vieTramiteContenido.php?escritura=SI&txtTraDocumentoContenido=$docCon
tenido' id='objTraDocumentoContenido'>
</object>
";

$objResp = new xajaxResponse();


$objResp->assign("txtTraDocumentoCodigo","value",$docCodigo);
$objResp->assign("slcTraDocumentoTipo","value",$docDplCodigo);

$objResp-
>assign("txtTraDocumentoOtro","value",utf8_encode($docAsunto));
$objResp->assign("txtTraDocumentoNDoc","value",$docNumero);
$objResp-
>assign("txtTraDocumentoRemitenteCodigo","value",$docRemitenteCodigo);
$objResp-
>assign("txtTraDocumentoRemitente","value",utf8_encode($docRemitente));
$objResp-
>assign("txtTraDocumentoRemitenteArea","value",utf8_encode($docRemitenteArea)
);

324
$objResp-
>assign("txtTraDocumentoDestinatarioCodigo","value",$docDestinatarioCodigo);
$objResp-
>assign("txtTraDocumentoDestinatarioArea","value",$docDestinatarioArea);
$objResp-
>assign("txtTraDocumentoDestinatario","value",utf8_encode($docDestinatario));
$objResp-
>assign("txtTraDocumentoReferenciaCodigo","value",$docReferenciaCodigo);
$objResp-
>assign("txtTraDocumentoReferencia","value",$docReferencia);

$objResp->assign("txtTraDocumentoContenido","value","CLIC
PARA VER CONTENIDO");
$objResp-
>assign("stnTraDocumentoContenido","innerHTML",utf8_encode($stnTraDocument
oContenido));

$objResp->assign("stnTraDocumentoDoc","innerHTML",$cadena);

$objResp->script(
"

$('input[name=btnTraDocumentoVista]').removeAttr('disabled');
$('select[name=slcTraDocumentoTipo]').attr('disabled',
'disabled');
$('select[name=slcTraDocumentoDoc]').attr('disabled',
'disabled');
$('input[name=txtTraDocumentoRemitente]').attr('readonly',
'readonly');
$('input[name=txtTraDocumentoDestinatario]').attr('readonly',
'readonly');
$('input[name=txtTraDocumentoReferencia]').attr('readonly',
'readonly');
$('textarea[name=txtTraDocumentoContenido]').attr('readonly',
'readonly');
$('input[name=btnTraDocumentoGuardar]').show();
$('input[name=btnTraDocumentoGuardar]').val('EDITAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoEdita
rClic()');

$('input[name=btnTraDocumentoEnviar]').removeAttr('disabled');
$('input[name=btnTraDocumentoEnviar]').val('ENVIAR');

$('input[name=btnTraDocumentoEnviar]').attr('onClick','traDocumentoEnviar
()');
$('input[name=btnTraDocumentoEstado]').hide();
");
$objResp->script(
"

325
$(function()
{

$('input[name=btnTraDocumentoEnviar]').on('click',function()
{
$('ul.tabs li:nth-child(2)').removeClass('active');
$('ul.tabs li:nth-child(4)').addClass('active')
$('.block article.rtc').hide();
$('.block article.rtc:nth-child(4)').show();
return false;
});
})
");
$objResp->script("traDocumentoAdjuntos()");
return $objResp;
}
function traDocumentoAdjuntos($frmTraDocumento)
{

$txtTraDocumentoCodigo=$frmTraDocumento['txtTraDocumentoCodigo'];

$result=scandir("../upload/tbdocumento/".$txtTraDocumentoCodigo);
$ruta = "../upload/tbdocumento/".$txtTraDocumentoCodigo;
foreach($result as $archivos)
{
if($archivos != ".." && $archivos != "." && $archivos !=
"Thumbs.db")
{ // != distinto de
$cadena =
"
<ul>
<li>$archivos</li>
<li><a href='$ruta/$archivos'
target='_blank'><img src='../img/descargar.png'></a></li>
</ul>
";
}
}

$objResp = new xajaxResponse();


$objResp-
>assign("rtcTraDocumentoAdjuntosDato","innerHTML",$cadena);
return $objResp;
}
function traDocumentoSlcTipo($frmTraDocumento)//LISTO
{
global $conexion;

$slcTraDocumentoTipo=$frmTraDocumento['slcTraDocumentoTipo'];

326
$cadena="<select name='slcTraDocumentoDoc'
id='slcTraDocumentoDoc'>";
if($slcTraDocumentoTipo=="0")
{
$cadena.=
"
<option value='0'>SELECCIONE</option>
";
}
else
{
$cadena.=
"
<option value='0'>SELECCIONE</option>
";
$consulta =
"
SELECT dti_Codigo, dti_Nombre
FROM tbdocumento_tipo dti
INNER JOIN tbdocumento_plantilla dpl ON
dti.dti_dpl_Codigo = dpl.dpl_Codigo
WHERE dpl.dpl_Codigo = '". $slcTraDocumentoTipo ."'
";
$resultado = $conexion->query($consulta);
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<option value='$registro-
>dti_Codigo'>$registro->dti_Nombre</option>
";
}
$cadena.=
"
<option value='OTRO'>OTRO</option>
";
}
$cadena.="</select>";

$objResp = new xajaxResponse();


$objResp->assign("stnTraDocumentoDoc","innerHTML",$cadena);

$objResp->script(
"
$('select[name=slcTraDocumentoDoc]').change(function()
{
var valor = $(this).val();
if(valor == 'OTRO')
{

327
$('input[name=txtTraDocumentoOtro]').removeAttr('disabled');
}
else
{

$('input[name=txtTraDocumentoOtro]').attr('disabled','disabled');
}
});

$('input[name=txtTraDocumentoOtro]').attr('disabled','disabled');
");
return $objResp;
}
function traDocumentoRemitente($frmTraDocumento,
$frmTraDocumentoHistorial)//LISTO
{
global $conexion;

$txtTraDocumentoRemitente=utf8_decode($frmTraDocumento['txtTraDocum
entoRemitente']);

$slcTraDocumentoAreas=$frmTraDocumentoHistorial['slcTraDocumentoAre
as'];

$consulta=
"
SELECT per_Codigo, LEFT(CONCAT(per_Apellidos,' ',
per_Nombres), 22) AS per_ApeNom, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par_per_Codigo
WHERE CONCAT_WS(' ', per_Apellidos,per_Nombres) LIKE
'%$txtTraDocumentoRemitente%'
";
if($slcTraDocumentoAreas <> 'PAR0000056' &&
$slcTraDocumentoAreas <> 'PAR0000057' && $slcTraDocumentoAreas <>
'PAR0000071' && $slcTraDocumentoAreas <> 'PAR0000074' &&
$slcTraDocumentoAreas <> 'PAR0000077' && $slcTraDocumentoAreas <>
'PAR0000080')
{
$consulta .= "AND par_are_Codigo =
'".$slcTraDocumentoAreas."'";
}
$consulta .=
"
LIMIT 0,10
";

328
$resultado = $conexion->query($consulta);
$cadena="";
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<ul
onClick='xajax_traDocumentoRemitenteClic((\"$registro->per_Codigo\"))'>
<li>$registro->per_ApeNom</li>
</ul>
";
}
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraDocumentoRemitente","innerHTML",utf8_encode($cadena));
return $objResp;
}
function traDocumentoRemitenteClic($perCodigo)//LISTO
{
global $conexion;
$consulta=
"
SELECT per_Apellidos, per_Nombres, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $perCodigo ."'
AND par.par_Estado = '1'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$objResp = new xajaxResponse();


$objResp-
>assign("txtTraDocumentoRemitente","value",utf8_encode($registro-
>per_Apellidos.' '.$registro->per_Nombres));
$objResp-
>assign("txtTraDocumentoRemitenteCodigo","value",$perCodigo);
$objResp-
>assign("txtTraDocumentoRemitenteArea","value",$registro->par_are_Codigo);
$objResp-
>assign("stnTraDocumentoRemitente","style.display","none");
return $objResp;
}
function traDocumentoDestinatario($frmTraDocumento)//LISTO
{
global $conexion;

329
$txtTraDocumentoDestinatario=utf8_decode($frmTraDocumento['txtTraDocu
mentoDestinatario']);

$consulta=
"
SELECT per_Codigo, LEFT(CONCAT(per_Apellidos,' ',
per_Nombres), 22) AS per_ApeNom, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE par_Estado = '1' AND CONCAT_WS(' ',
per_Apellidos,per_Nombres) LIKE '%$txtTraDocumentoDestinatario%'
LIMIT 0,10
";
$resultado = $conexion->query($consulta);
$cadena="";
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<ul
onClick='xajax_traDocumentoDestinatarioClic((\"$registro->per_Codigo\"))'>
<li>$registro->per_ApeNom</li>
</ul>
";
}
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraDocumentoDestinatario","innerHTML",utf8_encode($cadena));
return $objResp;
}
function traDocumentoDestinatarioClic($perCodigo)//LISTO
{
global $conexion;
$consulta=
"
SELECT per_Apellidos, per_Nombres, par_are_Codigo
FROM tbpersona per
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE per_Codigo = '". $perCodigo ."' AND par_Estado = '1'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$objResp = new xajaxResponse();

330
$objResp-
>assign("txtTraDocumentoDestinatario","value",utf8_encode($registro-
>per_Apellidos.' '.$registro->per_Nombres));
$objResp-
>assign("txtTraDocumentoDestinatarioCodigo","value",$perCodigo);
$objResp-
>assign("txtTraDocumentoDestinatarioArea","value",$registro->par_are_Codigo);
$objResp-
>assign("stnTraDocumentoDestinatario","style.display","none");
return $objResp;
}
function traDocumentoReferencia($frmTraDocumento)//LISTO
{
global $conexion;
global $areCodigo;

$txtTraDocumentoReferencia=$frmTraDocumento['txtTraDocumentoReferen
cia'];

$consulta=
"
SELECT doc_Codigo, doc_Numero
FROM tbdocumento_historial dhi
INNER JOIN tbdocumento doc ON dhi.dhi_doc_Codigo =
doc.doc_Codigo
WHERE doc.doc_Numero LIKE
'%".$txtTraDocumentoReferencia."%' AND dhi.dhi_are_Codigo = '".$areCodigo."'
AND dhi.dhi_Procedimiento = '0'
";
$resultado = $conexion->query($consulta);
$cadena="";
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<ul
onClick='xajax_traDocumentoReferenciaClic((\"$registro->doc_Codigo\"))'>
<li>$registro->doc_Numero</li>
</ul>
";
}
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraDocumentoReferencia","innerHTML",$cadena);
return $objResp;
}
function traDocumentoReferenciaClic($docCodigo)//LISTO
{
global $conexion;

331
$consulta =
"
SELECT doc_Numero
FROM tbdocumento
WHERE doc_Codigo = '".$docCodigo."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$objResp = new xajaxResponse();


$objResp-
>assign("txtTraDocumentoReferenciaCodigo","value",$docCodigo);
$objResp->assign("txtTraDocumentoReferencia","value",$registro-
>doc_Numero);
$objResp-
>assign("stnTraDocumentoReferencia","style.display","none");
return $objResp;
}
function traDocumentoEstado($frmTraDocumento,$docEstado)//LISTO
{
global $conexion;

$txtTraDocumentoCodigo=$frmTraDocumento['txtTraDocumentoCodigo'];

if($docEstado=="0")
{
$entrada =
"
UPDATE tbdocumento
SET doc_Estado = '1'
WHERE doc_Codigo = '".$txtTraDocumentoCodigo."'
";
}
elseif($docEstado=="1")
{
$entrada =
"
UPDATE tbdocumento
SET doc_Estado = '0'
WHERE doc_Codigo = '".$txtTraDocumentoCodigo."'
";
}
$conexion->query($entrada);

$objResp = new xajaxResponse();

if($docEstado=="0")
{
$objResp->script(

332
"

$('input[name=btnTraDocumentoEstado]').val('DENEGAR');

$('input[name=btnTraDocumentoEstado]').attr('onClick','xajax_traDocumento
Estado(xajax.getFormValues(\"frmTraDocumento\"),1)');
");
}
elseif($docEstado=="1")
{
$objResp->script(
"

$('input[name=btnTraDocumentoEstado]').val('AUTORIZAR');

$('input[name=btnTraDocumentoEstado]').attr('onClick','xajax_traDocumento
Estado(xajax.getFormValues(\"frmTraDocumento\"),0)');
");
}
return $objResp;
}
function traDocumentoGuardar($frmTraDocumento)//LISTO
{
global $conexion;
global $usuCodigo;
global $perCodigo;

$txtTraDocumentoRemitenteArea=$frmTraDocumento['txtTraDocumentoRe
mitenteArea'];

setlocale(LC_ALL, "es_ES");
date_default_timezone_set('America/Lima');

$consulta=
"
SELECT doc_Codigo, LEFT(doc_Codigo, 3) AS codLetras,
RIGHT(doc_Codigo,7) AS codNumero
FROM tbdocumento ORDER BY doc_Codigo DESC LIMIT 0,
1
";
$resultado = $conexion->query($consulta);

$nFilas=$resultado->num_rows;
if($nFilas<>"")
{
$registro=$resultado->fetch_object();
$codLetras=$registro->codLetras;
$codNumero=$registro->codNumero;
$codNumero = $codNumero + 1;

333
if ($codNumero < 10)
{
$docCodigo = $codLetras . "000000" . $codNumero;
}
elseif ($codNumero < 100)
{
$docCodigo = $codLetras . "00000" . $codNumero;
}
elseif ($codNumero < 1000)
{
$docCodigo = $codLetras . "0000" . $codNumero;
}
elseif ($codNumero < 10000)
{
$docCodigo = $codLetras . "000" . $codNumero;
}
elseif ($codNumero < 100000)
{
$docCodigo = $codLetras . "00" . $codNumero;
}
elseif ($codNumero < 1000000)
{
$docCodigo = $codLetras . "0" . $codNumero;
}
elseif ($codNumero < 10000000)
{
$docCodigo = $codLetras . $codNumero;
}
}
else
{
$docCodigo = "DOC0000001";
}

$slcTraDocumentoTipo=$frmTraDocumento["slcTraDocumentoTipo"];
$slcTraDocumentoDoc=$frmTraDocumento["slcTraDocumentoDoc"];

$txtTraDocumentoOtro=utf8_decode(strtoupper($frmTraDocumento["txtTra
DocumentoOtro"]));
/*GENERANDO NUMERO DE DOCUMENTO*/

$ano = date("Y");

$consulta=
"
SELECT doc_Codigo, doc_Numero, LEFT(doc_Numero, 4) AS
codNumero, par_are_Codigo
FROM tbdocumento doc

334
INNER JOIN tbpersona_area par ON doc.doc_Remitente =
par.par_per_Codigo
WHERE doc_dpl_Codigo = '".$slcTraDocumentoTipo."' AND
doc_Fecha LIKE '%".$ano."%' AND par.par_are_Codigo =
'".$txtTraDocumentoRemitenteArea."'
ORDER BY doc_Numero DESC
LIMIT 0,1
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$codNumero=$registro->codNumero;

$codNumero = $codNumero + 1;/*OBTENGO EL NUMERO QUE


CONTINUA*/

$consulta=
"
SELECT are_Abreviatura
FROM tbarea
WHERE are_Codigo = '".$txtTraDocumentoRemitenteArea."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$areAbreviatura = $registro->are_Abreviatura;

if ($codNumero < 10)


{
$docNumero = "000" . $codNumero . "-" . $areAbreviatura .
"/UCV-CH-" . $ano;
}
elseif ($codNumero < 100)
{
$docNumero = "00" . $codNumero . "-" . $areAbreviatura .
"/UCV-CH-" . $ano;
}
elseif ($codNumero < 1000)
{
$docNumero = "0" . $codNumero . "-" . $areAbreviatura .
"/UCV-CH-" . $ano;
}
elseif ($codNumero < 10000)
{
$docNumero = "" . $codNumero . "-" . $areAbreviatura . "/UCV-
CH-" . $ano;
}
/*FIN DE GENERAR NUMERO DE DOCUMENTO*/

$consulta=
"

335
SELECT dan_Codigo
FROM tbdocumento_ano
WHERE dan_Numero = '".$ano."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$danCodigo = $registro->dan_Codigo;

$consulta=
"
SELECT tem_Contenido
FROM tbdocumento_temporal
WHERE tem_per_Codigo = '".$perCodigo."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$txtTraDocumentoContenido = utf8_decode($registro-
>tem_Contenido);

$txtTraDocumentoRemitente=strtoupper($frmTraDocumento["txtTraDocume
ntoRemitenteCodigo"]);

$txtTraDocumentoDestinatario=strtoupper($frmTraDocumento["txtTraDocu
mentoDestinatarioCodigo"]);

$txtTraDocumentoReferenciaCodigo=strtoupper($frmTraDocumento["txtTra
DocumentoReferenciaCodigo"]);

$docFecha=date("Y-m-d");
$docHora=date("H:i:s");

$entrada=
"
INSERT INTO tbdocumento
(
doc_codigo,
doc_dpl_Codigo,
doc_usu_Codigo,
doc_Fecha,
doc_Hora,
doc_Numero,
doc_dan_Codigo,
doc_Titulo,
doc_Remitente,
doc_Destinatario,
doc_Asunto,
doc_Contenido,
doc_Referencia,
doc_Estado

336
)
VALUES
(
'$docCodigo',
'$slcTraDocumentoTipo',
'$usuCodigo',
'$docFecha',
'$docHora',
'$docNumero',
'$danCodigo',
'$slcTraDocumentoDoc',
'$txtTraDocumentoRemitente',
'$txtTraDocumentoDestinatario',
'$txtTraDocumentoOtro',
'$txtTraDocumentoContenido',
'$txtTraDocumentoReferenciaCodigo',
0
)
";
$conexion->query($entrada);

$objResp = new xajaxResponse();


$objResp->alert("SE GUARDO CON ÉXITO SU NUEVO
DOCUMENTO");
$objResp->script(
"
$(function()
{

$('input[name=btnTraDocumentoEnviar]').on('click',function()
{
$('ul.tabs li:nth-child(2)').removeClass('active');
$('ul.tabs li:nth-child(4)').addClass('active')
$('.block article.rtc').hide();
$('.block article.rtc:nth-child(4)').show();
return false;
});
})

$('input[name=txtTraDocumentoCodigo]').val('');
$('select[name=slcTraDocumentoTipo]').val('0');

$('select[name=slcTraDocumentoTipo]').removeAttr('disabled');
$('select[name=slcTraDocumentoDoc]').val('0');
$('select[name=slcTraDocumentoDoc]').removeAttr('disabled');
$('input[name=txtTraDocumentoNDoc]').val('');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');
$('input[name=txtTraDocumentoRemitente]').val('');
$('input[name=txtTraDocumentoRemitenteCodigo]').val('');

337
$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');
$('input[name=txtTraDocumentoDestinatario]').val('');
$('input[name=txtTraDocumentoDestinatarioCodigo]').val('');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');
$('input[name=txtTraDocumentoReferencia]').val('');

$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');
$('textarea[name=txtTraDocumentoContenido]').val('');

$('input[name=btnTraDocumentoGuardar]').removeAttr('disabled');
$('input[name=btnTraDocumentoGuardar]').show();
$('input[name=btnTraDocumentoGuardar]').val('GUARDAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoGuar
dar()');

$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');
");
$objResp->script("traDocumentoHistorial()");
return $objResp;
}
function traDocumentoEditar($frmTraDocumento)
{
global $conexion;
global $usuCodigo;
global $perCodigo;

setlocale(LC_ALL, "es_ES");
date_default_timezone_set('America/Lima');

$consulta=
"
SELECT tem_Contenido
FROM tbdocumento_temporal
WHERE tem_per_Codigo = '".$perCodigo."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$txtTraDocumentoContenido = utf8_decode($registro-
>tem_Contenido);

$txtTraDocumentoCodigo =
$frmTraDocumento['txtTraDocumentoCodigo'];

$slcTraDocumentoTipo=$frmTraDocumento["slcTraDocumentoTipo"];
$slcTraDocumentoDoc=$frmTraDocumento["slcTraDocumentoDoc"];

338
$txtTraDocumentoOtro=utf8_decode(strtoupper($frmTraDocumento["txtTra
DocumentoOtro"]));

$txtTraDocumentoRemitente=strtoupper($frmTraDocumento["txtTraDocume
ntoRemitenteCodigo"]);

$txtTraDocumentoDestinatario=strtoupper($frmTraDocumento["txtTraDocu
mentoDestinatarioCodigo"]);

$txtTraDocumentoReferenciaCodigo=strtoupper($frmTraDocumento["txtTra
DocumentoReferenciaCodigo"]);

$docFecha=date("Y-m-d");
$docHora=date("H:i:s");

$entrada=
"
UPDATE tbdocumento SET
doc_usu_Codigo='$usuCodigo',
doc_Fecha='$docFecha',
doc_Hora='$docHora',
doc_Titulo='$slcTraDocumentoDoc',
doc_Remitente='$txtTraDocumentoRemitente',
doc_Destinatario='$txtTraDocumentoDestinatario',
doc_Asunto='$txtTraDocumentoOtro',
doc_Contenido='$txtTraDocumentoContenido',
doc_Referencia='$txtTraDocumentoReferenciaCodigo',
doc_Estado=0
WHERE doc_codigo = '".$txtTraDocumentoCodigo."'
";
$conexion->query($entrada);

$objResp = new xajaxResponse();


$objResp->alert("SE ACTUALIZÓ CON ÉXITO SU NUEVO
DOCUMENTO");
$objResp->script(
"
$(function()
{

$('input[name=btnTraDocumentoEnviar]').on('click',function()
{
$('ul.tabs li:nth-child(2)').removeClass('active');
$('ul.tabs li:nth-child(4)').addClass('active')
$('.block article.rtc').hide();
$('.block article.rtc:nth-child(4)').show();
return false;
});
})

339
$('input[name=txtTraDocumentoCodigo]').val('');
$('select[name=slcTraDocumentoTipo]').val('0');

$('select[name=slcTraDocumentoTipo]').removeAttr('disabled');
$('select[name=slcTraDocumentoDoc]').val('0');
$('select[name=slcTraDocumentoDoc]').removeAttr('disabled');
$('input[name=txtTraDocumentoNDoc]').val('');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');
$('input[name=txtTraDocumentoRemitente]').val('');
$('input[name=txtTraDocumentoRemitenteCodigo]').val('');

$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');
$('input[name=txtTraDocumentoDestinatario]').val('');
$('input[name=txtTraDocumentoDestinatarioCodigo]').val('');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');
$('input[name=txtTraDocumentoReferencia]').val('');

$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');
$('textarea[name=txtTraDocumentoContenido]').val('');
$('input[name=btnTraDocumentoGuardar]').val('EDITAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoEdita
rClic()');

$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');
");
$objResp->script("traDocumentoHistorial()");
return $objResp;
}
function traDocumentoEditarClic()//LISTO
{
$objResp = new xajaxResponse();
$objResp->script(
"

$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');

$('select[name=slcTraDocumentoTipo]').attr('disabled','disabled');

$('select[name=slcTraDocumentoDoc]').attr('disabled','disabled');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');

$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');

340
$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');
$('input[name=btnTraDocumentoGuardar]').show();
$('input[name=btnTraDocumentoGuardar]').val('GUARDAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoEdita
r()');
");
return $objResp;
}
function traDocumentoResolver($frmTraDocumento)//LISTO
{
global $conexion;

$txtTraDocumentoNDoc=$frmTraDocumento['txtTraDocumentoNDoc'];

$txtTraDocumentoCodigo=$frmTraDocumento['txtTraDocumentoCodigo'];

$txtTraDocumentoRemitente=$frmTraDocumento['txtTraDocumentoRemiten
te'];

$txtTraDocumentoRemitenteCodigo=$frmTraDocumento['txtTraDocumentoR
emitenteCodigo'];

$txtTraDocumentoRemitenteArea=$frmTraDocumento['txtTraDocumentoRe
mitenteArea'];

$var=
"
<object
data='vieTramiteContenido.php?escritura=SI&txtTraDocumentoContenido=Contenid
o Nuevo' id='objTraDocumentoContenido'>
</object>
";

$objResp = new xajaxResponse();


$objResp->script(
"
$('input[name=txtTraDocumentoCodigo]').val('');
$('select[name=slcTraDocumentoTipo]').val('0');

$('select[name=slcTraDocumentoTipo]').removeAttr('disabled');
$('select[name=slcTraDocumentoDoc]').val('0');
$('select[name=slcTraDocumentoDoc]').removeAttr('disabled');
$('input[name=txtTraDocumentoNDoc]').val('');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');
$('input[name=txtTraDocumentoRemitente]').val('');

341
$('input[name=txtTraDocumentoRemitenteCodigo]').val('');

$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');
$('input[name=txtTraDocumentoDestinatario]').val('');
$('input[name=txtTraDocumentoDestinatarioCodigo]').val('');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');
$('input[name=txtTraDocumentoReferencia]').val('');

$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');
$('textarea[name=txtTraDocumentoContenido]').val('');

$('input[name=btnTraDocumentoGuardar]').removeAttr('disabled');
$('input[name=btnTraDocumentoGuardar]').show();
$('input[name=btnTraDocumentoGuardar]').val('GUARDAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoGuar
dar()');

$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');
");
$objResp-
>assign("txtTraDocumentoReferenciaCodigo","value",$txtTraDocumentoCodigo);
$objResp-
>assign("txtTraDocumentoReferencia","value",$txtTraDocumentoNDoc);
$objResp-
>assign("txtTraDocumentoDestinatarioArea","value",$txtTraDocumentoRemitenteAr
ea);
$objResp-
>assign("txtTraDocumentoDestinatarioCodigo","value",$txtTraDocumentoRemitente
Codigo);
$objResp-
>assign("txtTraDocumentoDestinatario","value",$txtTraDocumentoRemitente);
$objResp->assign("stnTraDocumentoContenido","innerHTML",$var);
$objResp->script(
"

$('select[name=slcTraDocumentoTipo]').removeAttr('disabled');
$('select[name=slcTraDocumentoDoc]').removeAttr('disabled');

$('input[name=txtTraDocumentoRemitente]').removeAttr('readonly');

$('input[name=txtTraDocumentoDestinatario]').removeAttr('readonly');

$('input[name=txtTraDocumentoReferencia]').removeAttr('readonly');

$('textarea[name=txtTraDocumentoContenido]').removeAttr('readonly');

$('input[name=btnTraDocumentoVista]').attr('disabled','disabled');
$('input[name=btnTraDocumentoGuardar]').show();

342
$('input[name=btnTraDocumentoGuardar]').val('GUARDAR');

$('input[name=btnTraDocumentoGuardar]').attr('onClick','traDocumentoGuar
dar()');
$('input[name=btnTraDocumentoEnviar]').val('ENVIAR');

$('input[name=btnTraDocumentoEnviar]').attr('onClick','traDocumentoEnviar
()');

$('input[name=btnTraDocumentoEnviar]').attr('disabled','disabled');
");
return $objResp;
}
function traDocumentoEnviar($frmTraDocumento)//LISTO
{
global $conexion;

$txtTraDocumentoCodigo=$frmTraDocumento['txtTraDocumentoCodigo'];

$txtTraDocumentoNDoc=$frmTraDocumento['txtTraDocumentoNDoc'];

$txtTraDocumentoReferenciaCodigo=$frmTraDocumento['txtTraDocumento
ReferenciaCodigo'];

$txtTraDocumentoDestinatarioArea=$frmTraDocumento['txtTraDocumentoD
estinatarioArea'];

$consulta=
"
SELECT are_Nombre
FROM tbarea
WHERE are_Codigo = '".$txtTraDocumentoDestinatarioArea."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();
$areNombre=$registro->are_Nombre;

if($txtTraDocumentoReferencia=='')
{
$dhiProcedimiento = '0';
}
else
{
$dhiProcedimiento = '1';
}
$cadena=
"

343
<object
data='vieTramiteUpload.php?docCodigo=$txtTraDocumentoCodigo'
style='padding:0; margin:0;' width='100%' height='100%'>
</object>
";
$objResp = new xajaxResponse();
$objResp-
>assign("txtTraEnviarDocumentoCodigo","value",$txtTraDocumentoCodigo);
$objResp-
>assign("txtTraEnviarDocumento","value",$txtTraDocumentoNDoc);
$objResp-
>assign("slcTraEnviarProcedimiento","value",$dhiProcedimiento);
$objResp-
>assign("txtTraEnviarAreaCodigo","value",$txtTraDocumentoDestinatarioArea);
$objResp-
>assign("txtTraEnviarArea","value",utf8_encode($areNombre));
$objResp-
>assign("stnTraDocumentoAdjuntar","innerHTML",$cadena);

return $objResp;
}

/*VISTA PREVIA*/
function traVistaPrevia($frmTraDocumento)//LISTO
{

$txtTraDocumentoCodigo=$frmTraDocumento['txtTraDocumentoCodigo'];

$cadena=
"
<object
data='vieTramitePDF.php?docCodigo=$txtTraDocumentoCodigo' style='padding:0;
margin:0;' width='100%' height='100%'>
</object>
";
$objResp = new xajaxResponse();
$objResp->assign("tab3","innerHTML",$cadena);
return $objResp;
}

/*ENVIAR*/
function traEnviarDocumento($frmTraEnviar)//LISTO
{
global $conexion;
global $areCodigo;

$txtTraEnviarDocumento=$frmTraEnviar['txtTraEnviarDocumento'];

$consulta=
"

344
SELECT doc_Codigo, LEFT(dpl_Nombre,3) AS dplNom,
doc_Numero
FROM tbdocumento doc
INNER JOIN tbdocumento_plantilla dpl ON
doc.doc_dpl_Codigo = dpl.dpl_Codigo
INNER JOIN tbpersona per ON doc.doc_Remitente =
per.per_Codigo
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
WHERE doc.doc_Numero LIKE '%$txtTraEnviarDocumento%'
AND par.par_are_Codigo = '". $areCodigo ."'
";
$resultado = $conexion->query($consulta);
$cadena="";
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<ul
onClick='xajax_traEnviarDocumentoClic((\"$registro->doc_Codigo\"))'>
<li>$registro->dplNom $registro-
>doc_Numero</li>
</ul>
";
}
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraEnviarDocumento","innerHTML",utf8_encode($cadena));
return $objResp;
}
function traEnviarDocumentoClic($docCodigo)//LISTO
{
global $conexion;

$consulta=
"
SELECT LEFT(dpl_Nombre,3) AS dplNom, doc_Numero,
par_are_Codigo, are_Nombre
FROM tbdocumento doc
INNER JOIN tbdocumento_plantilla dpl ON
doc.doc_dpl_Codigo = dpl.dpl_Codigo
INNER JOIN tbpersona_area par ON par_per_Codigo =
doc.doc_Destinatario
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo
WHERE doc.doc_Codigo = '".$docCodigo."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

345
$objResp = new xajaxResponse();
$objResp-
>assign("txtTraEnviarDocumentoCodigo","value",$docCodigo);
$objResp->assign("txtTraEnviarDocumento","value",$registro-
>dplNom." ".$registro->doc_Numero);
$objResp->assign("txtTraEnviarAreaCodigo","value",$registro-
>par_are_Codigo);
$objResp->assign("txtTraEnviarArea","value",utf8_encode($registro-
>are_Nombre));
$objResp->assign("stnTraEnviarDocumento","style.display","none");
return $objResp;
}
function traEnviarCC($frmTraEnviar)//LISTO
{
global $conexion;

$txtTraEnviarCC=utf8_decode($frmTraEnviar['txtTraEnviarCC']);

$consulta=
"
SELECT are_Codigo, are_Nombre, LEFT(are_Nombre,22) AS
are_Nom
FROM tbarea
WHERE are_Nombre LIKE '%$txtTraEnviarCC%'
LIMIT 0,15
";
$resultado = $conexion->query($consulta);
$cadena="";
while($registro=$resultado->fetch_object())
{
$cadena.=
"
<ul onClick='xajax_traEnviarCCClic((\"$registro-
>are_Codigo\"))'>
<li>$registro->are_Nom</li>
</ul>
";
}
$objResp = new xajaxResponse();
$objResp-
>assign("stnTraEnviarCC","innerHTML",utf8_encode($cadena));
return $objResp;
}
function traEnviarCCClic($areCodigo)//LISTO
{
global $conexion;

$consulta =
"
SELECT are_Codigo, are_Abreviatura

346
FROM tbarea
WHERE are_Codigo = '".$areCodigo."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$traEnviarCCCodigo =
"
<section class='stnTraEnviarCCOpcion'>
<label for='' class='check'>$registro-
>are_Abreviatura</label>
<input type='checkbox' name='ckbTraEnviarCC[]'
id='ckbTraEnviarCC[]' value='$registro->are_Codigo' checked='checked'
class='check' />
<label for='ckbTraEnviarCC'
onClick='xajax_traEnviarCCEliminar(xajax.getFormValues(\"frmTraEnviar\"),(\"$re
gistro->are_Codigo\")); return false;'>X</label>
</section>
";

$objResp = new xajaxResponse();


$objResp-
>append("stnTraEnviarCCCodigo","innerHTML",utf8_encode($traEnviarCCCodigo)
);
$objResp->assign("txtTraEnviarCC","value","");
$objResp->assign("stnTraEnviarCC","style.display","none");
return $objResp;
}
function traEnviarCCEliminar($frmTraEnviar, $id=0)//LISTO
{
global $conexion;

$ckbTraEnviarCC=$frmTraEnviar['ckbTraEnviarCC'];

$traEnviarCCCodigo = "";
foreach($ckbTraEnviarCC as $indice => $valor)
{
if ($id<>$valor)
{
$consulta =
"
SELECT are_Codigo, are_Abreviatura
FROM tbarea
WHERE are_Codigo = '".$valor."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$traEnviarCCCodigo .=
"

347
<section class='stnTraEnviarCCOpcion'>
<label for='' class='check'>$registro-
>are_Abreviatura</label>
<input type='checkbox'
name='ckbTraEnviarCC[]' id='ckbTraEnviarCC[]' value='$registro->are_Codigo'
checked='checked' class='check' />
<label for='ckbTraEnviarCC'
onClick='xajax_traEnviarCCEliminar(xajax.getFormValues(\"frmTraEnviar\"),(\"$re
gistro->are_Codigo\")); return false;'>X</label>
</section>
";
}
}

$objResp = new xajaxResponse();


$objResp-
>assign("stnTraEnviarCCCodigo","innerHTML",utf8_encode($traEnviarCCCodigo))
;
$objResp->assign("txtTraEnviarCC","value","");
$objResp->assign("stnTraEnviarCC","style.display","none");
return $objResp;
}
function traEnviarGuardar($frmTraEnviar)//LISTO
{
global $conexion;
global $usuCodigo;

setlocale(LC_ALL, "es_ES");
date_default_timezone_set('America/Lima');

$consulta=
"
SELECT dhi_Codigo,
LEFT( dhi_Codigo, 3 ) AS codLetras,
RIGHT( dhi_Codigo, 7 ) AS codNumero
FROM tbdocumento_historial
ORDER BY dhi_Codigo DESC
LIMIT 0 , 1
";
$resultado = $conexion->query($consulta);

$nFilas=$resultado->num_rows;
if($nFilas<>"")
{
$registro=$resultado->fetch_object();
$codLetras=$registro->codLetras;
$codNumero=$registro->codNumero;

$codNumero = $codNumero + 1;

348
if ($codNumero < 10)
{
$dhiCodigo = $codLetras . "000000" . $codNumero;
}
elseif ($codNumero < 100)
{
$dhiCodigo = $codLetras . "00000" . $codNumero;
}
elseif ($codNumero < 1000)
{
$dhiCodigo = $codLetras . "0000" . $codNumero;
}
elseif ($codNumero < 10000)
{
$dhiCodigo = $codLetras . "000" . $codNumero;
}
elseif ($codNumero < 100000)
{
$dhiCodigo = $codLetras . "00" . $codNumero;
}
elseif ($codNumero < 1000000)
{
$dhiCodigo = $codLetras . "0" . $codNumero;
}
elseif ($codNumero < 10000000)
{
$dhiCodigo = $codLetras . $codNumero;
}
}
else
{
$dhiCodigo = "DHI0000001";
}

$txtTraEnviarDocumentoCodigo=$frmTraEnviar["txtTraEnviarDocumentoCo
digo"];

$slcTraEnviarProcedimiento=$frmTraEnviar["slcTraEnviarProcedimiento"];

$txtTraEnviarAreaCodigo=$frmTraEnviar["txtTraEnviarAreaCodigo"];

$txtTraEnviarMensaje=utf8_decode(strtoupper($frmTraEnviar["txtTraEnviar
Mensaje"]));
$ckbTraEnviarCC=$frmTraEnviar["ckbTraEnviarCC"];

$dhiFecha=date("Y-m-d");
$dhiHora=date("H:i:s");

349
$entrada=
"
INSERT INTO tbdocumento_historial
(
dhi_Codigo,
dhi_usu_Codigo,
dhi_doc_Codigo,
dhi_Fecha,
dhi_Hora,
dhi_Procedimiento,
dhi_are_Codigo,
dhi_Mensaje
)
VALUES
(
'$dhiCodigo',
'$usuCodigo',
'$txtTraEnviarDocumentoCodigo',
'$dhiFecha',
'$dhiHora',
'$slcTraEnviarProcedimiento',
'$txtTraEnviarAreaCodigo',
'$txtTraEnviarMensaje'
)
";
$conexion->query($entrada);

foreach($ckbTraEnviarCC as $indice => $valor)


{
$consulta=
"
SELECT dcc_Codigo,
LEFT( dcc_Codigo, 3 ) AS codLetras,
RIGHT( dcc_Codigo, 7 ) AS codNumero
FROM tbdocumento_cc
ORDER BY dcc_Codigo DESC
LIMIT 0 , 1
";
$resultado = $conexion->query($consulta);
$nFilas=$resultado->num_rows;
if($nFilas<>"")
{
$registro=$resultado->fetch_object();
$codLetras=$registro->codLetras;
$codNumero=$registro->codNumero;

$codNumero = $codNumero + 1;

if ($codNumero < 10)

350
{
$dccCodigo = $codLetras . "000000" .
$codNumero;
}
elseif ($codNumero < 100)
{
$dccCodigo = $codLetras . "00000" .
$codNumero;
}
elseif ($codNumero < 1000)
{
$dccCodigo = $codLetras . "0000" .
$codNumero;
}
elseif ($codNumero < 10000)
{
$dccCodigo = $codLetras . "000" . $codNumero;
}
elseif ($codNumero < 100000)
{
$dccCodigo = $codLetras . "00" . $codNumero;
}
elseif ($codNumero < 1000000)
{
$dccCodigo = $codLetras . "0" . $codNumero;
}
elseif ($codNumero < 10000000)
{
$dccCodigo = $codLetras . $codNumero;
}
}
else
{
$dccCodigo = "DCC0000001";
}

//sumar 1 al codigo
$entrada=
"
INSERT INTO tbdocumento_cc
(
dcc_Codigo,
dcc_dhi_Codigo,
dcc_doc_Codigo,
dcc_are_Codigo
)
VALUES
(
'$dccCodigo',
'$dhiCodigo',

351
'$txtTraEnviarDocumentoCodigo',
'$valor'
)
";
$conexion->query($entrada);
}

$consulta="";

$objResp = new xajaxResponse();


$objResp->alert("SE REGISTRO CON ÉXITO SU TR�MITE");
$objResp->assign("stnTraEnviarCCCodigo","innerHTML",$consulta);
$objResp->script(
"
$('input[name=txtTraEnviarDocumentoCodigo]').val('');
$('input[name=txtTraEnviarDocumento]').val('');
$('select[name=slcTraEnviarProcedimiento]').val('0');
$('input[name=txtTraEnviarAreaCodigo]').val('');
$('input[name=txtTraEnviarArea]').val('');
$('textarea[name=txtTraEnviarMensaje]').val('');
");
return $objResp;
}

/*HISTORIAL*/
function traHistorial($frmTraHistorial,$pagina=1)//LISTO
{
global $conexion;

$slcTraHistorialAreas=$frmTraHistorial['slcTraHistorialAreas'];
$slcTraHistorial=$frmTraHistorial['slcTraHistorial'];
$txtTraHistorialArea=$frmTraHistorial['txtTraHistorialArea'];

$cFilas=15;
$consulta =
"
SELECT are_NombreCorto, usu_Nombre, dpl_Nombre,
doc_Codigo, dhi_Fecha, dhi_Hora, dhi_Mensaje, dhi_Procedimiento
FROM tbdocumento_historial dhi
INNER JOIN tbusuario usu ON dhi_usu_Codigo = usu_Codigo
INNER JOIN tbdocumento doc ON dhi.dhi_doc_Codigo =
doc.doc_Codigo
INNER JOIN tbdocumento_plantilla dpl ON dpl.dpl_Codigo =
doc.doc_dpl_Codigo
INNER JOIN tbpersona_area par ON par.par_per_Codigo =
doc.doc_Remitente
INNER JOIN tbarea are ON par.par_are_Codigo =
are.are_Codigo

352
WHERE dhi_Procedimiento = '".$slcTraHistorial."' AND
are_Codigo = '".$slcTraHistorialAreas."' AND are_Nombre LIKE
'%".$txtTraHistorialArea."%'
ORDER BY dhi_Fecha DESC, dhi_Hora DESC
";

$resultado = $conexion->query($consulta);
$nFilas=$resultado->num_rows;
$cPaginas=ceil($nFilas/$cFilas);
$inicio=($pagina-1)*$cFilas;

$consulta = $consulta."limit $inicio,$cFilas";


$resultado = $conexion->query($consulta);
$pagSiguiente=$pagina+1;

if($pagSiguiente>=$cPaginas)
{
$pagSiguiente=$cPaginas;
}
$pagAnterior=$pagina-1;
if($pagAnterior<=1)
{
$pagAnterior=1;
}
$pagInicial=1;
$pagFinal=$cPaginas;
$cadena="";
$pie="";

if($nFilas<>"")
{
while($registro=$resultado->fetch_object())
{
$dhiProcedimiento=$registro->dhi_Procedimiento;
if($dhiProcedimiento=="0")
{
$dhiProcedimiento = "EN TR&Aacute;MITE";
}
else if($dhiProcedimiento=="1")
{
$dhiProcedimiento = "RESUELTO";
}

$cadena.=
"
<ul class='fila'
onClick='xajax_traHistorialClic((\"$registro->doc_Codigo\"))'>
<li>$registro-
>are_NombreCorto</li>
<li>$registro->usu_Nombre</li>

353
<li>$registro->dpl_Nombre</li>
<li>$registro->dhi_Mensaje</li>
<li>$registro->dhi_Fecha</li>
<li>$registro->dhi_Hora</li>
<li>$dhiProcedimiento</li>
</ul>
";
}
}
else
{
$cadena.=
"
<ul>
<li>
Sin datos
</li>
</ul>
";
}
$pie.=
"
<li>
<a
onClick='xajax_traHistorial(xajax.getFormValues(\"frmTraHistorial\"),$pagInicial)'
id='aTraInicio' name='aTraInicio'>
<img src='../img/inicio.png'/>
</a>
<a
onClick='xajax_traHistorial(xajax.getFormValues(\"frmTraHistorial\"),$pagAnterior)
' id='aTraAtras' name='aTraAtras'>
<img src='../img/atras.png'/>
</a>
<a
onClick='xajax_traHistorial(xajax.getFormValues(\"frmTraHistorial\"),$pagSiguiente
)' id='aTraAdelante' name='aTraAdelante'>
<img src='../img/adelante.png'/>
</a>
<a
onClick='xajax_traHistorial(xajax.getFormValues(\"frmTraHistorial\"),$pagFinal)'
id='aTraFin' name='aTraFin'>
<img src='../img/fin.png'/>
</a>
</li>
<li>
<label class='lblCantReg'>REGISTROS:
$nFilas</label>
</li>
";

354
$objResp = new xajaxResponse();
$objResp-
>assign("rtcTraHistorialDato","innerHTML",utf8_encode($cadena));
$objResp-
>assign("rtcTraHistorialPie","innerHTML",utf8_encode($pie));
return $objResp;
}
function traHistorialClic()//LISTO
{
$objResp = new xajaxResponse();
return $objResp;
}

////////// ********** ////////// ********** DECLARACION DE VARIABLES


/*GENERAL*/
$fTramite =& $xajax->registerFunction('tramite');
$fTraAreas =& $xajax->registerFunction('traAreas');

/*PENDIENTES*/
$fTraPendientesAreas =& $xajax->registerFunction('traPendientesAreas');
$fTraPendientesAreas-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraPendientes');

$fTraPendientes =& $xajax->registerFunction('traPendientes');


$fTraPendientes-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraPendientes');

$fTraPendientesClic =& $xajax->registerFunction('traPendientesClic');

/*DOCUMENTO*/
$fTraDocumentoAreas =& $xajax->registerFunction('traDocumentoAreas');
$fTraDocumentoAreas-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumentoHistorial');

$fTraDocumentoHistorial =& $xajax-


>registerFunction('traDocumentoHistorial');
$fTraDocumentoHistorial-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumentoHistorial');

$fTraDocumentoHistorialClic =& $xajax-


>registerFunction('traDocumentoHistorialClic');

$fTraDocumentoAdjuntos =& $xajax-


>registerFunction('traDocumentoAdjuntos');
$fTraDocumentoAdjuntos-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoSlcTipo =& $xajax-


>registerFunction('traDocumentoSlcTipo');

355
$fTraDocumentoSlcTipo-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoRemitente =& $xajax-


>registerFunction('traDocumentoRemitente');
$fTraDocumentoRemitente-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');
$fTraDocumentoRemitente-
>setParameter(1,XAJAX_FORM_VALUES,'frmTraDocumentoHistorial');

$fTraDocumentoRemitenteClic =& $xajax-


>registerFunction('traDocumentoRemitenteClic');

$fTraDocumentoDestinatario =& $xajax-


>registerFunction('traDocumentoDestinatario');
$fTraDocumentoDestinatario-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoDestinatarioClic =& $xajax-


>registerFunction('traDocumentoDestinatarioClic');

$fTraDocumentoReferencia =& $xajax-


>registerFunction('traDocumentoReferencia');
$fTraDocumentoReferencia-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoReferenciaClic =& $xajax-


>registerFunction('traDocumentoReferenciaClic');

$fTraDocumentoEstado =& $xajax->registerFunction('traDocumentoEstado');


$fTraDocumentoEstado-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoGuardar =& $xajax-


>registerFunction('traDocumentoGuardar');
$fTraDocumentoGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoEditar =& $xajax->registerFunction('traDocumentoEditar');


$fTraDocumentoEditar-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

$fTraDocumentoEditarClic =& $xajax-


>registerFunction('traDocumentoEditarClic');

$fTraDocumentoResolver =& $xajax-


>registerFunction('traDocumentoResolver');
$fTraDocumentoResolver-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

356
$fTraDocumentoEnviar =& $xajax->registerFunction('traDocumentoEnviar');
$fTraDocumentoEnviar-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

/*VISTA PREVIA*/
$fTraVistaPrevia =& $xajax->registerFunction('traVistaPrevia');
$fTraVistaPrevia-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraDocumento');

/*ENVIAR*/
$fTraEnviarDocumento =& $xajax->registerFunction('traEnviarDocumento');
$fTraEnviarDocumento-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraEnviar');

$fTraEnviarDocumentoClic =& $xajax-


>registerFunction('traEnviarDocumentoClic');

$fTraEnviarCC =& $xajax->registerFunction('traEnviarCC');


$fTraEnviarCC->setParameter(0,XAJAX_FORM_VALUES,'frmTraEnviar');

$fTraEnviarCCClic =& $xajax->registerFunction('traEnviarCCClic');

$fTraEnviarGuardar =& $xajax->registerFunction('traEnviarGuardar');


$fTraEnviarGuardar-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraEnviar');

$fTraEnviarCCEliminar =& $xajax->registerFunction('traEnviarCCEliminar');


$fTraEnviarCCEliminar-
>setParameter(0,XAJAX_FORM_VALUES,'frmTraEnviar');

/*HISTORIAL*/
$fTraHistorial =& $xajax->registerFunction('traHistorial');
$fTraHistorial->setParameter(0,XAJAX_FORM_VALUES,'frmTraHistorial');

$fTraHistorialClic =& $xajax->registerFunction('traHistorialClic');

$xajax->processRequest();
echo "<?xml version='1.0' encoding='UTF-8'?>";
?>

 view
- vieMantenimiento
<?php
session_start();
$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];
$perNombres=$_SESSION["perNombres"];
$perApellidos=$_SESSION["perApellidos"];
$usuMantenimiento=$_SESSION["usuMantenimiento"];

357
if($usuMantenimiento=="SI")
{
@require("../module/modMantenimiento.php");
?>
<!doctype html>
<html lang="es">
<head>
<?php $xajax->printJavaScript() ?>
<script type="text/javascript">

function GuardarDocTipo()
{
<?php $fGuardarDocTipo->printScript() ?>
}
function AgregarDocTipo()
{
<?php $fAgregarDocTipo->printScript() ?>
}
function ModificarDocTipo()
{
<?php $fModificarDocTipo->printScript() ?>
}
function AgregarDocTipoPlantilla()
{
<?php $fAgregarDocTipoPlantilla->printScript() ?>
}
function ModificarDocTipoPlantilla()
{
<?php $fModificarDocTipoPlantilla->printScript() ?>
}
function GuardarDocTipoPlantilla()
{
<?php $fGuardarDocTipoPlantilla->printScript() ?>
}
function MantUsuario()
{
<?php $fMantUsuario->printScript() ?>
}
function ManUsuPersona()
{
<?php $fManUsuPersona->printScript() ?>
}
function SelecManUsuarioGuardar()
{
<?php $fSelecManUsuarioGuardar->printScript() ?>
}
function SelecManUsuarioActualizar()
{
<?php $fSelecManUsuarioActualizar->printScript() ?>
}

358
function MantPeriodo()
{
<?php $fMantPeriodo->printScript() ?>
}
function SelecManPeriodoGuardar()
{
<?php $fSelecManPeriodoGuardar->printScript() ?>
}
function SelecManPeriodoActualizar()
{
<?php $fSelecManPeriodoActualizar->printScript() ?>
}
function MantArea()
{
<?php $fMantArea->printScript() ?>
}
function SelecManAreaGuardar()
{
<?php $fSelecManAreaGuardar->printScript() ?>
}
function SelecManAreaActualizar()
{
<?php $fSelecManAreaActualizar->printScript() ?>
}
function ManAreaPersona()
{
<?php $fManAreaPersona->printScript() ?>
}

</script>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="../css/standard.css" />
<link type="text/css" rel="stylesheet" href="../css/mantenimiento.css"
/>
<script type="text/javascript" src="../js/jQuery.js"></script>
<script type="text/javascript" src="../js/tabs.js"></script>
</head>
<body onLoad="MantUsuario()">
<ul class="tabs">
<li onClick="xajax_Sec_slc_mandoc()">
<a href="#tab1" >
USUARIO
</a>
</li>
<li onClick="MantArea()">
<a href="#tab2" >
�REAS
</a>
</li>
<li onClick="MantPeriodo()">

359
<a href="#tab3" >
PERIODOS
</a>
</li>
<li onClick="MantArea()">
<a href="#tab4" >
PLANTILLAS
</a>
</li>
</ul>
<section class="block">
<article id="tab1" class="rtc">

<form id="FrmManUsuarioBus"
name="FrmManUsuarioBus" class="bqd">
<ul>
<li>BUSCAR POR:</li>
<li>
<select
id="slcMantUsuBuscar" name="slcMantUsuBuscar">
<option
value='per_Apellidos' selected>APELLIDOS</option>
<option
value='per_DNI'>DNI</option>
<option
value='usu_Nombre'>USUARIO</option>
</select>
</li>
<li >
<input type="text"
name="txtMantUsuBuscar" id="txtMantUsuBuscar" onKeyUp="MantUsuario()"/>
</li>
</ul>
</form>
<section class="tbl">
<ul>
<li >CODIGO</li>
<li >PERSONA</li>
<li >USUARIO</li>
<li >�REA</li>
</ul>

<article id="SecMantBus"
class="tblDato">
<ul >
<li >&nbsp;</li>
<li >&nbsp;</li>
<li >&nbsp;</li>
<li >&nbsp;</li>
</ul>

360
</article>
<ul>
<article id="SecMantBusPie"
class="tblDato">
<li >
<a href="#Dos"
id="" name="aPerInicio"><img src="../img/inicio.png"/></a>
<a href="#Dos"
id="" name="aPerAtras"><img src="../img/atras.png"/></a>
<a href="#Dos"
id="" name="aPerAdelante"><img src="../img/adelante.png"/></a>
<a href="#Dos"
id="" name="aPerFin"><img src="../img/fin.png"/></a>
<a href="#Dos"
id="aPerAgregar" name="aPerAgregar" onClick=""><img
src="../img/add.png"/></a>
<label
class="lblCantidadRegistros">CANTIDAD DE REGISTROS: 0</label>
</li>
</article>
</ul>
</section>
<form id="fmrManUsuDatos">
<section >
<ul >
<li
>PERSONA</li>
<li >
<input
type="hidden" name="HideUsuPersonaCodi" id="HideUsuPersonaCodi" >
<input
type="hidden" name="HideUsuAutorizacionCodi" id="HideUsuAutorizacionCodi" >

<input
type="text" name="txtUsuPersona" id="txtUsuPersona" class="npt"/>
<article
id="stnManUsuarioBuscar" style="display:none" class="tblDato">
<ul>

<li>DNI</li>

<li>NOMBRE Y APELLIDOS</li>

</ul>

<article id="stnManUsuarioBuscarRes">

<a href="#Dos" onClick="">

361
<ul>

<li >&nbsp;</li>

<li >&nbsp;</li>

</ul>

</a>

</article>
</article>
</li>
<li
id="coluMantUsuarioDatoExtra">
<a
href="#Dos" id="stnManUsuPersona" name="stnManUsuPersona">

<img src="img/select.png"/>
</a>
</li>
</ul>
<ul >
<li >CODIGO</li>
<li>
<input
type="text" name="txtUsuCodigo" id="txtUsuCodigo" readonly/>
</li>
</ul>
<ul>
<li
>USUARIO</li>
<li>
<input
type="text" name="txtUsuNombre" id="txtUsuNombre" readonly/>
</li>
</ul>
<ul >
<li
>CONTRASEÑA</li>
<li ><input
type="password" name="txtUsuContrasena" class="npt"
id="txtUsuContrasena"/></li>
</ul>
<ul >
<li >REPETIR
CONTRASEÑA</li>

362
<li ><input
type="password" name="txtUsuContrasenaR" class="npt"
id="txtUsuContrasenaR"/></li>
</ul>
</section>
<article class="tblDato">
<ul >
<li
>PERSONAS</li>
<li
>TRAMITE</li>
<li
>DIGITALIZACIÓN</li>
<li
>REQUISITOS</li>
<li
>MATENIMIENTO</li>
</ul>
<ul >
<article
id="SecManUsuarioCheck" class="tblDato">
<li ><input
type="checkbox" id="cbxPersonas" name="cbxPersonas" value='SI'/></li>
<li ><input
type="checkbox" id="cbxTramite" name="cbxTramite" value='SI'/></li>
<li ><input
type="checkbox" id="cbxDigitalizacion" name="cbxDigitalizacion" value='SI'/></li>
<li ><input
type="checkbox" id="cbxRequisitos" name="cbxRequisitos" value='SI'/></li>
<li ><input
type="checkbox" id="cbxMantenimiento" name="cbxMantenimiento"
value='SI'/></li>
</article>
</ul>
<ul>
<li>
<article
id="stnManUsuBoton" >

<button class='btnNo' disabled>GUARDAR</button>


</article>
</li>
</ul>
</article>
</form>

</article>
<article id="tab2" class="rtc">
<section class="contend">
<form id="fmrManUsuArea">

363
<input type="hidden"
name="HidetxtManAreaNombreJefe" id="HidetxtManAreaNombreJefe" >
<input type="hidden"
name="HidetxtManAreaCodigoArea" id="HidetxtManAreaCodigoArea" >

<section id="stnManAreaIzq">
<ul >
<li
>NOMBRE</li>
<li
>ABREVIATURA</li>
<li >JEFE /
ENCARGADO</li>
</ul>

<article
id="SecMantArea">
<ul >
<a
href="#Cuatro" name="aManPerRes">
<li
>&nbsp;</li>
<li
>&nbsp;</li>
<li
>&nbsp;</li>
</a>
</ul>
</article>
<ul class="filaTablaBar">
<section
id="SecMantAreaPie">
<li >
<a
href="#Cuatro" id="" name="aPerInicio"><img src="img/inicio.png"/></a>
<a
href="#Cuatro" id="" name="aPerAtras"><img src="img/atras.png"/></a>
<a
href="#Cuatro" id="" name="aPerAdelante"><img src="img/adelante.png"/></a>
<a
href="#Cuatro" id="" name="aPerFin"><img src="img/fin.png"/></a>
<a
href="#Cuatro" id="aPerAgregar" name="aPerAgregar" onClick=""><img
src="img/add.png"/></a>

<label class="lblCantidadRegistros">CANTIDAD DE REGISTROS:


0</label>
</li>
</section>
</ul>

364
</section>
<section id="stnManAreaDer">
<ul >
<li
>NOMBRE</li>
<li ><input
type="text" name="txtManAreaNombre" id="txtManAreaNombre" /></li>
</ul>
<ul >
<li
>ABREVIATURA</li>
<li ><input
type="text" name="txtManAreaNombreAbre" id="txtManAreaNombreAbre" /></li>
</ul>
<ul class="filaFormulario"
id="filaFormArea">
<li >JEFE /
ENCARGADO</li>
<li >
<input
type="text" name="txtManAreaNombreJefe" id="txtManAreaNombreJefe"
class="npt"/>
<section
id="stnManAreaBuscar" style="display:none">
<ul
>

<li >DNI</li>

<li >NOMBRE Y APELLIDOS</li>

</ul>

<section id="stnManAreaBuscarRes">

<a href="#Dos" onClick="">

<ul >

<li >&nbsp;</li>

<li >&nbsp;</li>

</ul>

</a>

</section>
</section>
</li>

365
</ul>
<ul>
<li>
<section
id="stnManUsuBotonArea" >

</section>
</li>
</ul>
</section>
</form>
</section>
</article>
<article id="tab3" class="rtc">
<section class="contend">
<form id="fmrManUsuPeriodo">
<section id="stnManPeriodoIzq">
<ul >
<li
id="coluTablaResPeriodoCodigo">CODIGO</li>
<li
id="coluTablaResPeriodoNombre">PERIODO</li>
</ul>
<section
id="SecMantPeriodo">
<a href="#Tres"
onClick="">
<ul >
<li
>&nbsp;</li>
<li
>&nbsp;</li>
</ul>
</a>
</section>
<ul >
<section
id="SecMantPeriodoPie">
<li >
<a
href="#Tres" id="" name="aPerInicio"><img src="img/inicio.png"/></a>
<a
href="#Tres" id="" name="aPerAtras"><img src="img/atras.png"/></a>
<a
href="#Tres" id="" name="aPerAdelante"><img src="img/adelante.png"/></a>
<a
href="#Tres" id="" name="aPerFin"><img src="img/fin.png"/></a>
<a
href="#Tres" id="aPerAgregar" name="aPerAgregar" onClick=""><img
src="img/add.png"/></a>

366
<label class="lblCantidadRegistros">CANTIDAD DE REGISTROS:
0</label>
</li>
</section>
</ul>
</section>
<section
id="stnManPeriodoDer">
<ul >
<li >
<label
for="txtManPeriodoCodigo">CODIGO</label>
</li>
<li >
<input
name="txtManPeriodoCodigo" id="txtManPeriodoCodigo" class="npt" readonly/>
</li>
</ul>
<ul>
<li >
<label
for="txtManPeriodoNombre">NOMBRE DEL PERIODO</label>
</li>
<li >
<input
name="txtManPeriodoNombre" id="txtManPeriodoNombre" class="npt"/>
</li>
</ul>
<ul>
<li>

<section id="stnManUsuBotonPeriodo" >

</section>
</li>
</ul>
</section>
</form>
</section>
</article>
<article id="tab4" class="rtc">
<section>
<section id="SecMantPlant">
<ul >
<li >TIPO DE
DOCUMENTO</li>
<li >

367
<section
id="Sec_slc_mandoc">
<select
name="slc_dplDocumentoTipo" >

<option>SOLICITUD</option>

<option>OFICIO</option>
</select>
</section>
</li>
<li >
<a href="#Uno"
onClick="AgregarDocTipo()"><img src="img/add.png"/></a>
<a href="#Uno"
onClick="ModificarDocTipo()"><img src="img/edit.png"/></a>
</li>
</ul>
<ul >
<li >DOCUMENTO
PLANTILLA</li>
<li >
<section
id="Sec_slc_mandplDocumentoTipo">
<select
name="slc_dplDocumentoTipo" >

<option>SELECCIONAR</option>
</select>
</section>
</li>
<li >
<a href="#Uno"
onClick="AgregarDocTipoPlantilla()"><img src="img/add.png"/></a>
<a href="#Uno"
onClick="ModificarDocTipoPlantilla()"><img src="img/edit.png"/></a>
</li>
</ul>
</section>
<form id="FrmActualizarPlantilla"
name="FrmActualizarPlantilla">
<input type="hidden"
name="HideIdDocumentoTipo" id="HideIdDocumentoTipo">
<input type="hidden"
name="HideIdDocumentoTipoPlantilla" id="HideIdDocumentoTipoPlantilla">
<input type="hidden"
name="HideAccionDocTipoPlantilla" id="HideAccionDocTipoPlantilla">
<input type="hidden"
name="HideAccionDocTipo" id="HideAccionDocTipo">

368
<section
id="SecMantPlantDatos1" style="display:none">
</section>
<section
id="SecMantPlantDatos2" style="display:none">
<ul >
<li>NOMBRE</li>
<li>
<input
name="txt_dplNombre" type="text" maxlength="50" />
</li>
</ul>
<ul >
<li >LOGO</li>
<li >
<input
name="rdo_dplLogo" type="radio" value="SI"/>SI
<input
name="rdo_dplLogo" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >AÑO</li>
<li >
<input
name="rdo_dplAno" type="radio" value="SI"/>SI
<input
name="rdo_dplAno" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >TITULO</li>
<li >
<input
name="rdo_dplTitulo" type="radio" value="SI"/>SI
<input
name="rdo_dplTitulo" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >LUGAR Y
FECHA - ARRIBA</li>
<li >
<input
name="rdo_dplLugarFechaArriba" type="radio" value="SI"/>SI
<input
name="rdo_dplLugarFechaArriba" type="radio" value="NO"/>NO
</li>
</ul>
<ul >

369
<li
>DESTINATARIO</li>
<li >
<input
name="rdo_dplDestinatario" type="radio" value="SI"/>SI
<input
name="rdo_dplDestinatario" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >REMITENTE
- ARRIBA</li>
<li >
<input
name="rdo_dplRemitenteArriba" type="radio" value="SI"/>SI
<input
name="rdo_dplRemitenteArriba" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >ASUNTO</li>
<li >
<input
name="rdo_dplAsunto" type="radio" value="SI"/>SI
<input
name="rdo_dplAsunto" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >FECHA</li>
<li >
<input
name="rdo_dplFecha" type="radio" value="SI"/>SI
<input
name="rdo_dplFecha" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li
>CONTENIDO</li>
<li >
<input
name="rdo_dplContenido" type="radio" value="SI"/>SI
<input
name="rdo_dplContenido" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >LUGAR Y
FECHA - ABAJO</li>

370
<li >
<input
name="rdo_dplLugarFechaAbajo" type="radio" value="SI"/>SI
<input
name="rdo_dplLugarFechaAbajo" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li
>ATENTAMENTE</li>
<li >
<input
name="rdo_dplAtentamente" type="radio" value="SI"/>SI
<input
name="rdo_dplAtentamente" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >REMITENTE
- ABAJO</li>
<li >
<input
name="rdo_dplRemitenteAbajo" type="radio" value="SI"/>SI
<input
name="rdo_dplRemitenteAbajo" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li
>ADJUNTO</li>
<li >
<input
name="rdo_dplAdjunto" type="radio" value="SI"/>SI
<input
name="rdo_dplAdjunto" type="radio" value="NO"/>NO
</li>
</ul>
<ul >
<li >
<button
name="btn_dplGuardar" class="btn">GUARDAR</button>
</li>
</ul>
</section>
</form>
</section>
</article>

</section>
</body>

371
</html>
<?php
}
else
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body class="bdyContenedor">
ESTIMADO(A) <?php echo $perNombres; ?>, <?php echo
$perApellidos; ?><br>
NO CUENTA CON LOS PERMISOS PARA ACCEDER AL
MODULO DE MANTENIMIENTO, SI DESEA PERMISOS POR FAVOR
COMUNIQUESE CON EL ADMINISTRADOR DEL SISTEMA.
</body>
</html>
<?php
}
?>

- viePerfil
<?php
session_start();
$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];
$perNombres=$_SESSION["perNombres"];
$perApellidos=$_SESSION["perApellidos"];
$usuDigitalizacion=$_SESSION["usuDigitalizacion"];
@require("../module/modPerfil.php");
?>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="../css/standard.css" />
<link type="text/css" rel="stylesheet" href="../css/perfil.css" />
<script src="../js/scriptImg.js"></script>
<?php $xajax->printJavaScript() ?>
<script type="text/javascript">
function MostrarPerfil()
{
<?php $fMostrarPerfil->printScript() ?>
}
function CambioClave()
{
<?php $fCambioClave->printScript() ?>
}

372
function EditarPer()
{
<?php $fEditarPer->printScript() ?>
}
</script>
</head>
<body class="bdyContenedor" onLoad="MostrarPerfil()">
<form class="frmFila" id="frmPersona">
<ul>
<li>
DATOS PERSONALES
</li>
</ul>
<ul>
<li>
<label>TIPO EMPRESA</label>
</li>
<li>
<input type="text" name="slcPerTipoEmpresa"
id="slcPerTipoEmpresa" readonly>
</li>
</ul>
<ul>
<li>
<label>RAZON SOCIAL</label>
</li>
<li>
<input type="text" name="txtPerRazonSocial"
id="txtPerRazonSocial" readonly>
</li>
</ul>
<ul>
<li>
<label>TIPO RAZON SOCIAL</label>
</li>
<li>
<input type="text" name="slcPerRazonSocial"
id="slcPerRazonSocial" readonly>
</li>
</ul>
<ul>
<li>
<label>R.U.C.</label>
</li>
<li>
<input type="text" name="txtPerRUC"
id="txtPerRUC" readonly>
</li>
</ul>
<ul>

373
<li>
<label>PREFIJO</label>
</li>
<li>
<input type="text" name="slcPerPrefijo"
id="slcPerPrefijo" readonly>

</li>
</ul>
<ul>
<li>
<label>NOMBRE</label>
</li>
<li>
<input type="text" name="txtPerNombre"
id="txtPerNombre" readonly>
</li>
</ul>
<ul>
<li>
<label>APELLIDOS</label>
</li>
<li>
<input type="text" name="txtPerApellidos"
id="txtPerApellidos" readonly>
</li>
</ul>
<ul>
<li>
<label>SEXO</label>
</li>
<li>

<input type="text" name="slcPerSexo"


id="slcPerSexo" readonly>

</li>
</ul>
<ul>
<li>
<label>D.N.I.</label>
</li>
<li>
<input type="text" name="txtPerDNI"
id="txtPerDNI" readonly>
</li>
</ul>
<ul>
<li>
<label>FECHA DE CADUCIDAD</label>

374
</li>
<li>
<input type="text" name="txtPerDNICaducidad"
id="txtPerDNICaducidad" readonly>
</li>
</ul>
<ul>
<li>
<label>FECHA DE NACIMIENTO</label>
</li>
<li>
<input type="text" name="txtPerNacimiento"
id="txtPerNacimiento" readonly>
</li>
</ul>
<ul>
<li>
<label>CARGO</label>
</li>
<li>
<input type="text" name="slcPerCargo"
id="slcPerCargo" readonly>
</li>
</ul>
<ul>
<li>
<label>TIPO PERSONA</label>
</li>
<li>
<input type="text" name="slcPerTipo"
id="slcPerTipo" readonly>
</li>
</ul>
<ul>
<li>
<label>AREA</label>
</li>
<li>
<input type="text" name="slcPerArea"
id="slcPerArea" readonly>
</li>
</ul>
<ul>
<li ></li>
<li>
DATOS MODIFICABLES
</li>
</ul>
<ul >
<li >

375
<label
for="txt_PerNumTelefono">TELEFONO</label>
</li>
<li >
<input name="txt_PerNumTelefono"
id="txt_PerNumTelefono" type="text" onKeyPress="return entero(event)"
maxlength="9" />
</li>
</ul>
<ul class="filaPersona">
<li >
<label for="txt_PerEmail">E-MAIL</label>
</li>
<li >
<input name="txt_PerEmail" id="txt_PerEmail"
type="text" />
</li>
</ul>
<ul>
<li>
<label
for="slc_PerUbigeoDepartamento">DEPARTAMENTO</label>
</li>
<li>
<section id="SecUbigeoDepPer">
<select
name="slc_PerUbigeoDepartamento" id="slc_PerUbigeoDepartamento" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul>
<li>
<label
for="slc_PerUbigeoProvincia">PROVINCIA</label>
</li>
<li>
<section id="SecUbigeoProPer">
<select name="slc_PerUbigeoProvincia"
id="slc_PerUbigeoProvincia" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul>
<li>

376
<label
for="slc_PerUbigeoDistrito">DISTRITO</label>
</li>
<li>
<section id="SecUbigeoDisPer">
<select name="slc_PerUbigeoDistrito"
id="slc_PerUbigeoDistrito" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li>
<label for="slc_PerUbigeoDirTipoZona">TIPO
DE ZONA</label>
</li>
<li>
<section id="SecUbigeoZonaPer">
<select
name="slc_PerUbigeoDirTipoZona" id="slc_PerUbigeoDirTipoZona" />
<option>SELECCIONE</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label for="txt_PerUbigeoDirZona">NOMBRE
DE ZONA</label>
</li>
<li >
<input name="txt_PerUbigeoDirZona"
id="txt_PerUbigeoDirZona" type="text" />
</li>
</ul>
<ul >
<li >
<label for="slc_PerUbigeoDirTipoVia">TIPO
DE V�A</label>
</li>
<li >
<section id="SecUbigeoViaPer">
<select
name="slc_PerUbigeoDirTipoVia" id="slc_PerUbigeoDirTipoVia" >
<option>SELECCIONE</option>
</select>
</section>
</li>

377
</ul>
<ul >
<li >
<label for="txt_PerUbigeoDirVia">NOMBRE
DE V�A</label>
</li>
<li >
<input name="txt_PerUbigeoDirVia"
id="txt_PerUbigeoDirVia" type="text" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirNumero">NÚMERO</label>
</li>
<li >
<input name="txt_PerUbigeoDirNumero"
id="txt_PerUbigeoDirNumero" type="text" placeholder="NÚMERO" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirPiso">PISO</label>
</li>
<li >
<input name="txt_PerUbigeoDirPiso"
id="txt_PerUbigeoDirPiso" type="text" placeholder="PISO" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirInterior">INTERIOR</label>
</li>
<li >
<input name="txt_PerUbigeoDirInterior"
id="txt_PerUbigeoDirInterior" type="text" placeholder="INTERIOR" />
</li>
</ul>
<ul >
<li>
<label
for="txt_PerUbigeoDirManzana">MANZANA</label>
</li>
<li >
<input name="txt_PerUbigeoDirManzana"
id="txt_PerUbigeoDirManzana" type="text" placeholder="MANZANA" />
</li>

378
</ul>
<ul >
<li>
<label
for="txt_PerUbigeoDirLote">LOTE</label>
</li>
<li>
<input name="txt_PerUbigeoDirLote"
id="txt_PerUbigeoDirLote" type="text" placeholder="LOTE" />
</li>
</ul>
<ul>
<li ></li>
<li >
<input type="button" name="botonagregar"
id="botonagregar" class="btn" onClick="EditarPer()" value="EDITAR"/>
</li>
</ul>
</form>
<form class="frmFila" id="frmUsuario">
<ul>
<li>
DATOS DE USUARIO
</li>
</ul>
<ul>
<li>
<label>USUARIO</label>
</li>
<li>
<input type="text" name="txtUsuNombre"
id="txtUsuNombre" readonly>
</li>
</ul>
<ul>
<li>
<label>CONTRASEÑA ACTUAL</label>
</li>
<li>
<input type="password"
name="txtUsuContrasena" id="txtUsuContrasena">
</li>
</ul>
<ul>
<li>
<label>CONTRASEÑA NUEVA</label>
</li>
<li>
<input type="password"
name="txtUsuContrasenaN" id="txtUsuContrasenaN">

379
</li>
</ul>
<ul>
<li>
<label>REPETIR CONTRASEÑA</label>
</li>
<li>
<input type="password"
name="txtUsuContrasenaNR" id="txtUsuContrasenaNR" >
</li>
</ul>
<ul>
<li>
<input type="button" name="btnUsuGuardar"
onClick="CambioClave()" value="GUARDAR"/>
</li>
</ul>
</form>
<form class="frmFila" id="frmFoto">
<ul>
<li>
FOTO DEL USUARIO
</li>
</ul>
<ul>
<li>
<section id="SecImg"></section>
</li>
</ul>
<ul>
<section id="SecCambiarImg"></section>
</ul>
</form>
</body>
</html>

- viePersona
<?php
session_start();

$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];
$perNombres=$_SESSION["perNombres"];
$perApellidos=$_SESSION["perApellidos"];
$usuPersona=$_SESSION["usuPersona"];

if($usuPersona=="SI")
{
@require("../module/modPersona.php");

380
?>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="../css/standard.css" />
<link type="text/css" rel="stylesheet" href="../css/persona.css" />

<script type="text/javascript" src="../js/jQuery.js"></script>


<script src="../js/jquery-ui10.Fecha.js"></script>
<link rel="stylesheet" href="../css/PerFechajquery-ui.css" />
<script>
jQuery(function($){
$.datepicker.regional['es'] = {
closeText: 'Cerrar',
prevText: '<',
nextText: '>',
currentText: 'Hoy',
monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
'Jul','Ago','Sep','Oct','Nov','Dic'],
dayNames:
['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
weekHeader: 'Sm',
dateFormat: 'yy/mm/dd',
altFormat: 'yy/mm/dd',
changeYear: true,
yearRange: '1920:2020',

firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['es']);
});
$(function() {
$( "#txt_PerNacimiento" ).datepicker(
);
});
$(function() {
$( "#txt_PerFechaCaducidadAno" ).datepicker();
});

</script>
<script type="text/javascript" src="../js/tabs.js"></script>
<script type="text/javascript" src="../js/fila.js"></script>

381
<?php $xajax->printJavaScript() ?>
<script type="text/javascript">
function perBuscar()
{
<?php $fperBuscar->printScript() ?>
}

</script>
</head>
<body onLoad="perBuscar()">
<ul class="tabs">
<li>
<a href="#tab1">
BUSQUEDA
</a>
</li>
<li>
<a href="#tab2">
DETALLE
</a>
</li>
</ul>
<section class="block">
<article id="tab1" class="rtc">

<form name="frmPerBuscar" id="frmPerBuscar"


class="bqd">

<ul class="filaPerBuscar">
<li>Buscar :
<input
type="text"

name="txt_PerBuscarApellido" id="txt_PerBuscarApellido"

placeholder="BUSQUEDA POR APELLIDO"


onKeyUp="perBuscar()"
x-webkit-speech="x-
webkit-speech"

382
onspeechchange="perBuscar()"

onwebkitspeechchange="perBuscar()"
/>
</li>
</ul>
</form>

<section id="secBuscarPrimera" class="tbl">

<ul>
<li >CODIGO</li>
<li >APELLIDOS</li>
<li >NOMBRES</li>
<li >DNI</li>
<li >SEXO</li>
<li >TIPO PERSONA</li>
<li >�REA</li>
</ul>
<article id="secBuscarPersona" class="tblDato">
<ul>
<a href="#tab2">
<li>PER0000001</li>
<li>HERRERA
S�NCHEZ</li>
<li>DARWIN V�CTOR</li>
<li>45987646</li>
<li>MASCULINO</li>
<li>ADMINISTRATIVO</li>
<li>OTI</li>
</a>
</ul>
</article>
<article id="secPie" class="tblDato">
<ul>
<li>
<a href="#tab1" id=""
name=""><img src="../img/inicio.png"/></a>
<a href="#tab1" id=""
name=""><img src="../img/atras.png"/></a>
<a href="#tab1" id=""
name=""><img src="../img/adelante.png"/></a>
<a href="#tab1" id=""
name=""><img src="../img/fin.png"/></a>
<a href='#tab2' id=""
name=""><img src="../img/agregar.png"/></a>
</li>

383
<li>
<label
class="lblCantReg">CANTIDAD DE REGISTROS: 0</label>
</li>
</ul>
</article>
</section>

</article>
<article id="tab2" class="rtc">

<form id="FormDatosPer" name="FormDatosPer"


class="frmFila" >

<input type="hidden" name="PerAccion"


id="PerAccion"/>
<input type="hidden"
name="txt_PerCodigoUbigeo" id="txt_PerCodigoUbigeo"/>
<input type="hidden" name="rbtsexo"
id="rbtsexo"/>
<input type="hidden" name="HideTipoEmpresa"
id="HideTipoEmpresa"/>
<input type="hidden"
name="Hidetxt_PerCodigo" id="Hidetxt_PerCodigo"/>
<input type="hidden" name="HideArea"
id="HideArea"/>

<ul >
<li >
DATOS PERSONALES
</li>
</ul>
<ul >
<li >
<label
for="txt_PerCodigo">CÓDIGO</label>
</li>
<li >
<input type="text"
name="txt_PerCodigo" id="txt_PerCodigo" readonly />
</li>
</ul>
<ul >
<li >

384
<label
for="rdoPerTipoEmpresa">TIPO DE EMPRESA</label>
</li>
<li >
<section
id="SecPerTipoEmpresa">
<input

name="rdoPerTipoEmpresa"

id="rdo_PerTipoEmpresaN"

type="radio"

value="PERSONA NATURAL"

onClick="habilitarFormPerRS()"

onChange="xajax_slc_TipoEmpresa(this.value)"
checked
/>NATURAL
<input

name="rdoPerTipoEmpresa"

id="rdo_PerTipoEmpresaJ"

type="radio"

value="PERSONA JURIDICA"

onClick="habilitarFormPerRS()"

onChange="xajax_slc_TipoEmpresa(this.value)"

/>JURIDICA
</section>
</li>
</ul>
<ul >
<li >
<label
for="txt_PerRazonSocial">RAZÓN SOCIAL</label>
</li>
<li >
<input
name="txt_PerRazonSocial" id="txt_PerRazonSocial" type="text"
onKeyPress="return letra(event)" maxlength="50" />

385
</li>
</ul>
<ul >
<li >
<label
for="slc_PerRazonSocial">TIPO RAZÓN SOCIAL</label>
</li>
<li >
<section
id="SecPerRazonSocial">
<select
name="slc_PerRazonSocial" id="slc_PerRazonSocial"
onFocus="xajax_selectRazonSocial()" />
<option
value="">SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label
for="txt_PerRUC">R.U.C.</label>
</li>
<li class="coluPersonaDato">
<input
name="txt_PerRUC" id="txt_PerRUC" type="text" class="nptDatoPersona"
onKeyPress="return entero(event)" maxlength="11" />
</li>
</ul>
<ul >
<li >
<label
for="slc_PerPrefijo">PREFIJO</label>
</li>
<li >
<section
id="SecPerPrefijo">
<select
name="slc_PerPrefijo" id="slc_PerPrefijo" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label
for="txt_PerNombre">NOMBRES</label>

386
</li>
<li >
<input
name="txt_PerNombre" id="txt_PerNombre" type="text" onKeyPress="return
letra(event)" maxlength="30" x-webkit-speech="x-webkit-speech" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerApellido">APELLIDOS</label>
</li>
<li >
<input
name="txt_PerApellido" id="txt_PerApellido" type="text" onKeyPress="return
letra(event)" maxlength="30" x-webkit-speech="x-webkit-speech" />
</li>
</ul>
<ul >
<li >
<label
for="rdo_PerSexo">SEXO</label>
</li>
<li>
<section
id="SecPerSexo">
<input
name="rdo_PerSexo" type="radio" disabled id="rdo_PerSexoM"
onChange="xajax_slc_SexoPer(this.value)" value="M" />MASCULINO
<input
name="rdo_PerSexo" id="rdo_PerSexoF" type="radio" value="F"
onChange="xajax_slc_SexoPer(this.value)" />FEMENINO
</section>
</li>
</ul>
<ul >
<li >
<label
for="txt_PerDNI">D.N.I.</label>
</li>
<li >
<input
name="txt_PerDNI" id="txt_PerDNI" type="text" class="nptDatoPersona"
onKeyPress="return entero(event)" maxlength="8" x-webkit-speech="x-webkit-
speech" />
</li>
</ul>
<ul >
<li >

387
<label
for="txt_PerFechaCaducidadDia">FECHA DE CADUCIDAD</label>
</li>
<li >
<input

name="txt_PerFechaCaducidadAno" id="txt_PerFechaCaducidadAno"
type="text"
readonly/>
</li>
(dd/mm/aaaa)
</ul>
<ul >
<li >
<label
for="txt_PerNacimientoDia">FECHA DE NACIMIENTO</label>
</li>
<li >

<input
name="txt_PerNacimiento" type="text" id="txt_PerNacimiento" readonly />
</li>
(dd/mm/aaaa)
</ul>
<ul >
<li >
<label
for="txt_PerCargo">CARGO</label>
</li>
<li >
<section
id="SecPerCargo">
<select
name="slc_PerCargo" id="slc_PerCargo" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label
for="slc_PerTipoPersona">TIPO PERSONA</label>
</li>
<li >
<section
id="SecTipoPerBus">

388
<select
name="slc_PerTipoPersona" id="slc_PerTipoPersona" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label
for="slc_PerArea">�REA</label>
</li>
<li >
<section
id="SecAreaPerBus">
<select
name="slc_PerArea" id="slc_PerArea" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>

<ul >
<li >
<label
for="txt_PerNumTelefono">TELEFONO</label>
</li>
<li >
<input
name="txt_PerNumTelefono" id="txt_PerNumTelefono" type="text"
onKeyPress="return entero(event)" maxlength="9" />
</li>
</ul>
<ul class="filaPersona">
<li >
<label
for="txt_PerEmail">E-MAIL</label>
</li>
<li >
<input
name="txt_PerEmail" id="txt_PerEmail" type="text" />
</li>
</ul>

389
<ul>
<li>
DIRECCIÓN
</li>
</ul>
<ul>
<li>
<label
for="slc_PerUbigeoDepartamento">DEPARTAMENTO</label>
</li>
<li>
<section
id="SecUbigeoDepPer">
<select
name="slc_PerUbigeoDepartamento" id="slc_PerUbigeoDepartamento" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul>
<li>
<label
for="slc_PerUbigeoProvincia">PROVINCIA</label>
</li>
<li>
<section
id="SecUbigeoProPer">
<select
name="slc_PerUbigeoProvincia" id="slc_PerUbigeoProvincia" />

<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul>
<li>
<label
for="slc_PerUbigeoDistrito">DISTRITO</label>
</li>
<li>
<section
id="SecUbigeoDisPer">
<select
name="slc_PerUbigeoDistrito" id="slc_PerUbigeoDistrito" />

390
<option>SELECCIONAR</option>
</select>
</section>
</li>
</ul>
<ul >
<li>
<label
for="slc_PerUbigeoDirTipoZona">TIPO DE ZONA</label>
</li>
<li>
<section
id="SecUbigeoZonaPer">
<select
name="slc_PerUbigeoDirTipoZona" id="slc_PerUbigeoDirTipoZona" />

<option>SELECCIONE</option>
</select>
</section>
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirZona">NOMBRE DE ZONA</label>
</li>
<li >
<input
name="txt_PerUbigeoDirZona" id="txt_PerUbigeoDirZona" type="text" />
</li>
</ul>
<ul >
<li >
<label
for="slc_PerUbigeoDirTipoVia">TIPO DE V�A</label>
</li>
<li >
<section
id="SecUbigeoViaPer">
<select
name="slc_PerUbigeoDirTipoVia" id="slc_PerUbigeoDirTipoVia" >

<option>SELECCIONE</option>
</select>
</section>
</li>
</ul>
<ul >
<li >

391
<label
for="txt_PerUbigeoDirVia">NOMBRE DE V�A</label>
</li>
<li >
<input
name="txt_PerUbigeoDirVia" id="txt_PerUbigeoDirVia" type="text" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirNumero">NÚMERO</label>
</li>
<li >
<input
name="txt_PerUbigeoDirNumero" id="txt_PerUbigeoDirNumero" type="text"
placeholder="NÚMERO" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirPiso">PISO</label>
</li>
<li >
<input
name="txt_PerUbigeoDirPiso" id="txt_PerUbigeoDirPiso" type="text"
placeholder="PISO" />
</li>
</ul>
<ul >
<li >
<label
for="txt_PerUbigeoDirInterior">INTERIOR</label>
</li>
<li >
<input
name="txt_PerUbigeoDirInterior" id="txt_PerUbigeoDirInterior" type="text"
placeholder="INTERIOR" />
</li>
</ul>
<ul >
<li>
<label
for="txt_PerUbigeoDirManzana">MANZANA</label>
</li>
<li >
<input
name="txt_PerUbigeoDirManzana" id="txt_PerUbigeoDirManzana" type="text"
placeholder="MANZANA" />

392
</li>
</ul>
<ul >
<li>
<label
for="txt_PerUbigeoDirLote">LOTE</label>
</li>
<li>
<input
name="txt_PerUbigeoDirLote" id="txt_PerUbigeoDirLote" type="text"
placeholder="LOTE" />
</li>
</ul>
<ul >
<li>

</li>
<li>

</li>
</ul>

<ul >
<li >
<input type="button"
name="botonagregar" id="botonagregar" class="btn"
onClick="xajax_GuardarPer(xajax.getFormValues('FormDatosPer'))"
value="GUARDAR"/>
</li>
</ul>

</form>

</article>
</section>
</body>
</html>
<?php
}

393
else
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body class="bdyContenedor">
ESTIMADO(A) <?php echo $perNombres; ?>, <?php echo
$perApellidos; ?><br>
NO CUENTA CON LOS PERMISOS PARA ACCEDER AL
MODULO DE PERSONAS, SI DESEA PERMISOS POR FAVOR COMUNIQUESE
CON EL ADMINISTRADOR DEL SISTEMA.
</body>
</html>
<?php
}
?>

- vieTramite
<?php
session_start();
$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];
$perCodigo=$_SESSION['perCodigo'];
$perNombres=$_SESSION["perNombres"];
$perApellidos=$_SESSION["perApellidos"];
$usuTramite=$_SESSION["usuTramite"];
include ('../class/conex.php');
if($usuTramite=="SI")
{
@require("../module/modTramite.php");
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="../css/standard.css"/>
<link type="text/css" rel="stylesheet" href="../css/tramite.css"/>
<link type="text/css" rel="stylesheet" href="../css/modal.css">
<script type="text/javascript" src="../js/jQuery.js"></script>
<script type="text/javascript" src="../js/tabs.js"></script>
<script type="text/javascript" src="../js/fila.js"></script>
<script type="text/javascript" src="../js/jquery.modal.js"></script>
<script type="text/javascript" src="../js/modal.js"></script>
<?php $xajax->printJavaScript() ?>
<script>
function tramite()
{

394
<?php $fTramite->printScript()?>
}
function traAreas()
{
<?php $fTraAreas->printScript()?>
}
//PENDIENTES
function traPendientesAreas()
{
<?php $fTraPendientesAreas->printScript()?>
}
function traPendientes()
{
<?php $fTraPendientes->printScript()?>
}
function traPendientesClic()
{
<?php $fTraPendientesClic->printScript()?>
}
//AREAS
function traDocumentoAreas()
{
<?php $fTraDocumentoAreas->printScript()?>
}
function traDocumentoHistorial()
{
<?php $fTraDocumentoHistorial->printScript()?>
}
function traDocumentoHistorialClic()
{
<?php $fTraDocumentoHistorialClic->printScript()?>
}
function traDocumentoAdjuntos()
{
<?php $fTraDocumentoAdjuntos->printScript()?>
}
function traDocumentoSlcTipo()
{
<?php $fTraDocumentoSlcTipo->printScript()?>
}
function traDocumentoRemitente()
{
<?php $fTraDocumentoRemitente->printScript()?>
}
function traDocumentoRemitenteClic()
{
<?php $fTraDocumentoRemitenteClic->printScript()?>
}
function traDocumentoDestinatario()
{

395
<?php $fTraDocumentoDestinatario->printScript()?>
}
function traDocumentoDestinatarioClic()
{
<?php $fTraDocumentoDestinatarioClic-
>printScript()?>
}
function traDocumentoReferencia()
{
<?php $fTraDocumentoReferencia->printScript()?>
}
function traDocumentoReferenciaClic()
{
<?php $fTraDocumentoReferenciaClic->printScript()?>
}
function traDocumentoEstado()
{
<?php $fTraDocumentoEstado->printScript()?>
}
function traDocumentoGuardar()
{
<?php $fTraDocumentoGuardar->printScript()?>
}
function traDocumentoEditar()
{
<?php $fTraDocumentoEditar->printScript()?>
}
function traDocumentoEditarClic()
{
<?php $fTraDocumentoEditarClic->printScript()?>
}
function traDocumentoResolver()
{
<?php $fTraDocumentoResolver->printScript()?>
}
function traDocumentoEnviar()
{
<?php $fTraDocumentoEnviar->printScript()?>
}
//VISTA PREVIA
function traVistaPrevia()
{
<?php $fTraVistaPrevia->printScript()?>
}
//ENVIAR
function traEnviarDocumento()
{
<?php $fTraEnviarDocumento->printScript()?>
}
function traEnviarDocumentoClic()

396
{
<?php $fTraEnviarDocumentoClic->printScript()?>
}
function traEnviarCC()
{
<?php $fTraEnviarCC->printScript()?>
}
function traEnviarCCClic()
{
<?php $fTraEnviarCCClic->printScript()?>
}
function traEnviarGuardar()
{
<?php $fTraEnviarGuardar->printScript()?>
}
//HISTORIAL
function traHistorial()
{
<?php $fTraHistorial->printScript()?>
}
</script>
</head>
<body onLoad="tramite()">
<ul class="tabs">
<li>
<a href="#tab1">
PENDIENTES
</a>
</li>
<li>
<a href="#tab2">
DOCUMENTO
</a>
</li>
<li>
<a href="#tab3">
VISTA PREVIA
</a>
</li>
<li>
<a href="#tab4">
ENVIAR
</a>
</li>
<li>
<a href="#tab5">
HISTORIAL
</a>
</li>
</ul>

397
<section class="block">
<article id="tab1" class="rtc">
<form name="frmTraPendientes"
id="frmTraPendientes" class="bqd">
<ul>
<li>
<section
id="stnTraPendientesAreas">
<select
name="slcTraPendientesAreas">

<option>SELECCIONE</option>
</select>
</section>
</li>
<li>
<input type="search"
name="txtTraPendientesArea" placeholder="BÚSQUEDA POR �REA"
onKeyUp="traPendientes()" x-webkit-speech="x-webkit-speech"/>
</li>
</ul>
</form>
<section class="tbl" id="stnTraPendientes">
<ul>
<li>�REA</li>
<li>USUARIO</li>
<li>TIPO</li>
<li>MENSAJE</li>
<li>FECHA</li>
<li>HORA</li>
<li>ESTADO</li>
</ul>
<article id="rtcTraPendientesDato"
class="tblDato">
<ul class="fila">
<a href="#tab2">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</a>
</ul>
</article>
<ul>
<article id="rtcTraPendientesPie">
<li>

398
<a href="#"
id="aTraInicio" name="aTraInicio"><img src="../img/inicio.png"/></a>
<a href="#"
id="aTraAtras" name="aTraAtras"><img src="../img/atras.png"/></a>
<a href="#"
id="aTraAdelante" name="aTraAdelante"><img src="../img/adelante.png"/></a>
<a href="#" id="aTraFin"
name="aTraFin"><img src="../img/fin.png"/></a>
</li>
<li>
<label
class="lblCantReg">REGISTROS: </label>
</li>
</article>
</ul>
</section>
</article>
<article id="tab2" class="rtc">
<form name="frmTraDocumento"
id="frmTraDocumento" class="frmFila" autocomplete="off">
<ul>
<li>
DATOS DEL DOCUMENTO A
GENERAR
<input type="hidden"
name="txtTraDocumentoCodigo" id="txtTraDocumentoCodigo"/>
</li>
</ul>
<ul>
<li>
TIPO DOCUMENTO
</li>
<li>
<section
id="stnTraDocumentoTipo">
<select
name="slcTraDocumentoTipo" id="slcTraDocumentoTipo"
onChange="traDocumentoSlcTipo()">
<option
value="0">SELECCIONE</option>
<option
value="DPL0000001">SOLICITUD</option>
<option
value="DPL0000002">OFICIO</option>
<option
value="DPL0000003">OFICIO MULTIPLE</option>
<option
value="DPL0000004">MEMORANDO</option>
<option
value="DPL0000005">CERTIFICADO</option>

399
<option
value="DPL0000006">COMUNICADO</option>
<option
value="DPL0000007">DOCUMENTACIÓN</option>
<option
value="DPL0000008">INFORME</option>
<option
value="DPL0000009">RESOLUCIÓN</option>
</select>
</section>
</li>
</ul>
<ul>
<li>
DOCUMENTO
</li>
<li>
<section
id="stnTraDocumentoDoc">
<select
name="slcTraDocumentoDoc" id="slcTraDocumentoDoc">
<option
value="0">SELECCIONE</option>
</select>
</section>
</li>
</ul>
<ul>
<li>
ASUNTO
</li>
<li>
<input type="text"
name="txtTraDocumentoOtro" id="txtTraDocumentoOtro"/>
</li>
</ul>
<ul>
<li>
Nº DOCUMENTO
</li>
<li>
<input type="text"
name="txtTraDocumentoNDoc" id="txtTraDocumentoNDoc" readonly/>
</li>
</ul>
<ul>
<li>
REMITENTE
</li>
<li>

400
<input type="hidden"
name="txtTraDocumentoRemitenteArea" id="txtTraDocumentoRemitenteArea"
value="">
<input type="hidden"
name="txtTraDocumentoRemitenteCodigo" id="txtTraDocumentoRemitenteCodigo"
value="">
<input type="text"
name="txtTraDocumentoRemitente" id="txtTraDocumentoRemitente"
onKeyUp="traDocumentoRemitente()"/>
<section
name="stnTraDocumentoRemitente" id="stnTraDocumentoRemitente"
class="tblFloat">
</section>
</li>
</ul>
<ul>
<li>
DESTINATARIO
</li>
<li>
<input type="hidden"
name="txtTraDocumentoDestinatarioArea" id="txtTraDocumentoDestinatarioArea"
value="">
<input type="hidden"
name="txtTraDocumentoDestinatarioCodigo"
id="txtTraDocumentoDestinatarioCodigo" value="">
<input type="text"
name="txtTraDocumentoDestinatario" id="txtTraDocumentoDestinatario"
onKeyUp="traDocumentoDestinatario()"/>
<section
name="stnTraDocumentoDestinatario" id="stnTraDocumentoDestinatario"
class="tblFloat">
</section>
</li>
</ul>
<ul>
<li>
REFERENCIA
</li>
<li>
<input type="hidden"
name="txtTraDocumentoReferenciaCodigo"
id="txtTraDocumentoReferenciaCodigo"/>
<input type="text"
name="txtTraDocumentoReferencia" id="txtTraDocumentoReferencia"
onKeyUp="traDocumentoReferencia()"/>
<section
name="stnTraDocumentoReferencia" id="stnTraDocumentoReferencia"
class="tblFloat">
</section>

401
</li>
</ul>
<ul>
<li>
CONTENIDO
</li>
<li>
<a class="modalLink"
href="#contenido">
<input type="text"
name="txtTraDocumentoContenido" id="txtTraDocumentoContenido"
placeholder="CLIC PARA INGRESAR CONTENIDO" readonly>
</a>
</li>
</ul>
<ul>
<li>
<input type="button"
name="btnTraDocumentoEstado" id="btnTraDocumentoEstado" onClick=""
value="AUTORIZAR"/>
<input type="button"
name="btnTraDocumentoGuardar" id="btnTraDocumentoGuardar"
onClick="traDocumentoGuardar()" value="GUARDAR"/>
<input type="button"
name="btnTraDocumentoVista" id="btnTraDocumentoVista"
onClick="traVistaPrevia()" value="VER PDF"/>
<input type="button"
name="btnTraDocumentoEnviar" id="btnTraDocumentoEnviar" onClick=""
value="ENVIAR"/>
</li>
</ul>
</form>
<section name="stnTraDocumentoHistorial"
id="stnTraDocumentoHistorial">
<form class="bqd"
name="frmTraDocumentoHistorial" id="frmTraDocumentoHistorial">
<ul>
<li>
<section
id="stnTraDocumentoAreas">
<select
name="slcTraHistorialAreas">

<option>SELECCIONE �REA</option>
</select>
</section>
</li>
<li>

402
<select
name="slcTraDocumentoTipos" id="slcTraDocumentoTipos"
onChange="traDocumentoHistorial()">
<option
value="DPL0000001" selected>SOLICITUD</option>
<option
value="DPL0000002">OFICIO</option>
<option
value="DPL0000003">OFICIO MULTIPLE</option>
<option
value="DPL0000004">MEMORANDO</option>
<option
value="DPL0000005">CERTIFICADO</option>
<option
value="DPL0000006">COMUNICADO</option>
<option
value="DPL0000007">DOCUMENTACIÓN</option>
<option
value="DPL0000008">INFORME</option>
<option
value="DPL0000009">RESOLUCIÓN</option>
</select>
</li>
</ul>
</form>
<section
name="stnTraDocumentoHistorialTabla" id="stnTraDocumentoHistorialTabla"
class="tbl">
<ul>
<li>NUMERO</li>
<li>FECHA Y HORA</li>
<li>USUARIO</li>
</ul>
<article id="rtcTraDocumentoHistorial"
class="tblDato">
<ul class="fila">
<a href="#tab2">
<li></li>
<li></li>
<li></li>
</a>
</ul>
</article>
<ul>
<article
id="rtcTraDocumentoPie">
<li>
<a href="#"
id="aTraInicio" name="aTraInicio"><img src="../img/inicio.png"/></a>

403
<a href="#"
id="aTraAtras" name="aTraAtras"><img src="../img/atras.png"/></a>
<a href="#"
id="aTraAdelante" name="aTraAdelante"><img src="../img/adelante.png"/></a>
<a href="#"
id="aTraFin" name="aTraFin"><img src="../img/fin.png"/></a>
<a href="#"
id="aTraAgregar" name="aTraAgregar" onClick=""><img
src="../img/agregar.png"/></a>
</li>
<li>
<label
class="lblCantReg">REGISTROS: 0</label>
</li>
</article>
</ul>
</section><br>
<section id="stnTraDocumentoAdjuntos"
class="tbl">
<ul>
<li>ARCHIVOS</li>
<li>DESCARGAR</li>
</ul>
<article
id="rtcTraDocumentoAdjuntosDato" class="tblDato">
<ul>
<li></li>
<li></li>
</ul>
</article>
<ul>
<article
id="rtcTraDocumentoAdjuntosPie">
<li>
<a href="#"
id="aTraInicio" name="aTraInicio"><img src="../img/inicio.png"/></a>
<a href="#"
id="aTraAtras" name="aTraAtras"><img src="../img/atras.png"/></a>
<a href="#"
id="aTraAdelante" name="aTraAdelante"><img src="../img/adelante.png"/></a>
<a href="#"
id="aTraFin" name="aTraFin"><img src="../img/fin.png"/></a>
</li>
<li>
<label
class="lblCantReg">REGISTROS: 0</label>
</li>
</article>
</ul>
</section>

404
</section>
<div class="overlay"></div>
<div id="contenido" class="modal">
<section id="stnTraDocumentoContenido">
<object
data="vieTramiteContenido.php?escritura=SI&txtTraDocumentoContenido=Conteni
do Nuevo" id="objTraDocumentoContenido">
</object>
</section>
<input type="button"
name="btnTraEnviarCerrar" id="btnTraEnviarCerrar" class="btnTraEnviarCerrar"
value="HECHO"/>
</div>
</article>
<article id="tab3" class="rtc">
</article>
<article id="tab4" class="rtc">
<form name="frmTraEnviar" id="frmTraEnviar"
class="frmFila">
<ul>
<li>
DATOS DE ENVIO
</li>
</ul>
<ul>
<li>
DOCUMENTO
</li>
<li>
<input type="hidden"
name="txtTraEnviarDocumentoCodigo" id="txtTraEnviarDocumentoCodigo"/>
<input type="text"
name="txtTraEnviarDocumento" id="txtTraEnviarDocumento"
onKeyUp="traEnviarDocumento()"/>
<section
name="stnTraEnviarDocumento" id="stnTraEnviarDocumento" class="tblFloat">
</section>
</li>
</ul>
<ul>
<li>
PROCEDIMIENTO
</li>
<li>
<select
name="slcTraEnviarProcedimiento" id="slcTraEnviarProcedimiento">
<option
value="0">DERIVAR</option>
<option
value="1">RESOLVER</option>

405
</select>
</li>
</ul>
<ul>
<li>
�REA
</li>
<li>
<input type="hidden"
name="txtTraEnviarAreaCodigo" id="txtTraEnviarAreaCodigo"/>
<input type="text"
name="txtTraEnviarArea" id="txtTraEnviarArea"/>
</li>
</ul>
<ul>
<li>
CON COPIA
</li>
<li>
<section
id="stnTraEnviarCCCodigo">
</section>
<section>
<input type="text"
name="txtTraEnviarCC" id="txtTraEnviarCC" onKeyUp="traEnviarCC()"/>
</section>
<section name="stnTraEnviarCC"
id="stnTraEnviarCC" class="tblFloat">
</section>
</li>
</ul>
<ul>
<li>MENSAJE</li>
<li>
<textarea
name="txtTraEnviarMensaje"></textarea>
</li>
</ul>
<ul>
<li>
<a class="modalLink"
href="#adjuntar">
<input type="button"
name="btnTraEnviarAdjuntar" id="btnTraEnviarAdjuntar" value="ADJUNTAR"/>
</a>
<input type="button"
name="btnTraEnviarGuardar" id="btnTraEnviarGuardar"
onClick="traEnviarGuardar()" value="GUARDAR"/>
</li>
</ul>

406
</form>
<div class="overlay"></div>
<div id="adjuntar" class="modal">
<section id="stnTraDocumentoAdjuntar">
</section>
<input type="button"
name="btnTraEnviarCerrar" id="btnTraEnviarCerrar" class="btnTraEnviarCerrar"
value="HECHO"/>
</div>
</article>
<article id="tab5" class="rtc">
<form name="frmTraHistorial" id="frmTraHistorial"
class="bqd">
<ul>
<li>
<section
id="stnTraHistorialAreas">
<select
name="slcTraHistorialAreas">

<option>SELECCIONE �REA</option>
</select>
</section>
</li>
<li>
<select name="slcTraHistorial"
onChange="traHistorial()">
<option
value="0">DERIVADOS</option>
<option
value="1">SOLUCIONADOS</option>
</select>
</li>
<li>
<input
type="search"
name="txtTraHistorialArea" placeholder="BÚSQUEDA POR �REA"
onKeyUp="traHistorial()"
list="dtlTraHistorialArea" x-webkit-speech="x-webkit-speech"
/>
</li>
</ul>
</form>
<section class="tbl" id="stnTraHistorial">
<ul>
<li>�REA</li>
<li>USUARIO</li>
<li>TIPO</li>
<li>MENSAJE</li>
<li>FECHA</li>

407
<li>HORA</li>
<li>ESTADO</li>
</ul>
<article id="rtcTraHistorialDato"
class="tblDato">
<ul class="fila">
<a href="#tab2">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</a>
</ul>
</article>
<ul>
<article id="rtcTraHistorialPie">
<li>
<a href="#"
id="aTraInicio" name="aTraInicio"><img src="../img/inicio.png"/></a>
<a href="#"
id="aTraAtras" name="aTraAtras"><img src="../img/atras.png"/></a>
<a href="#"
id="aTraAdelante" name="aTraAdelante"><img src="../img/adelante.png"/></a>
<a href="#" id="aTraFin"
name="aTraFin"><img src="../img/fin.png"/></a>
</li>
<li>
<label
class="lblCantReg">REGISTROS: </label>
</li>
</article>
</ul>
</section>
</article>
<script type="text/javascript" src="../js/tramite.js"></script>
</section>
</body>
</html>
<?php
}
else
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">

408
</head>
<body class="bdyContenedor">
ESTIMADO(A) <?php echo $perNombres; ?>, <?php echo
$perApellidos; ?><br>
NO CUENTA CON LOS PERMISOS PARA ACCEDER AL
MODULO DE TRAMITE DOCUMENTARIO, SI DESEA PERMISOS POR FAVOR
COMUNIQUESE CON EL ADMINISTRADOR DEL SISTEMA.
</body>
</html>
<?php
}
?>

- vieTramiteContenido
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="../js/jQuery.js"></script>
<script type="text/javascript"
src="../js/tinymce/tinymce.min.js"></script>
<?php
session_start();
$usuNombre=$_SESSION["usuNombre"];
$usuContrasena=$_SESSION["usuContrasena"];
$perCodigo=$_SESSION['perCodigo'];

if(isset($_GET['txtTraDocumentoContenido']))
{
include ('../class/conex.php');
$txtTraDocumentoContenido = $_GET['txtTraDocumentoContenido'];

$consulta=
"
SELECT * FROM tbdocumento_temporal WHERE
tem_per_Codigo = '".$perCodigo."'
";
$resultado = $conexion->query($consulta);
$nFilas=$resultado->num_rows;

if($nFilas == 0)
{
$ingreso=
"
INSERT INTO tbdocumento_temporal
(tem_per_Codigo, tem_Contenido)
VALUES
('".$perCodigo."','".$txtTraDocumentoContenido."')
";
}

409
else
{
$ingreso=
"
UPDATE tbdocumento_temporal SET tem_Contenido =
'".$txtTraDocumentoContenido."' WHERE tem_per_Codigo = '".$perCodigo."'
";
}
$resultado = $conexion->query($ingreso);

$escritura = $_GET['escritura'];
if($escritura=='SI')
{
?>
<script type="text/javascript">
tinymce.init
({
mode: "exact",
elements: "txtTraDocumentoContenido",
width: 700,
height: 100,
plugins:
[
"advlist autolink save link image lists charmap
print preview hr anchor pagebreak spellchecker",
"searchreplace wordcount visualblocks
visualchars code fullscreen insertdatetime media nonbreaking",
"table contextmenu directionality emoticons
template textcolor paste fullpage textcolor"
],
toolbar1: "undo redo save | cut copy paste | bold italic
subscript superscript | alignleft aligncenter alignright alignjustify | bullist numlist | table
hr image charmap | searchreplace",
menubar: false,
toolbar_items_size: 'small',
language:'es',
height: 300,
});
</script>
<?php
}
else
{
?>
<script type="text/javascript">
tinymce.init
({
mode: "exact",
elements: "txtTraDocumentoContenido",
width: 700,

410
height: 100,
plugins:
[
"advlist autolink save link image lists charmap
print preview hr anchor pagebreak spellchecker",
"searchreplace wordcount visualblocks
visualchars code fullscreen insertdatetime media nonbreaking",
"table contextmenu directionality emoticons
template textcolor paste fullpage textcolor"
],
toolbar1: " copy paste | searchreplace",
menubar: false,
toolbar_items_size: 'small',
language:'es',
height: 300,
});
</script>
<?php
}
}
else
{
$txtTraDocumentoContenido = "";
}
?>
</head>
<body>
<form action="" name="frmTraDocumentoContenido">
<input type="hidden" name="escritura" value="SI">
<textarea name="txtTraDocumentoContenido"
id="txtTraDocumentoContenido"><?php echo $txtTraDocumentoContenido
?></textarea>
</form>
</body>
</html>

- vieTramitePDF
<?php
require('../class/fpdf17/WriteHTML.php');
class PDF extends FPDF
{
function Footer()
{
$this->SetY(-15);
$this->SetFont('Arial','',8);
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
function Edad($nacimiento)
{

411
list($Y,$m,$d) = explode("-",$nacimiento);
return( date("md") < $m.$d ? date("Y")-$Y-1 : date("Y")-$Y );
}

if(isset($_GET['docCodigo']))
{
session_start();
$usuNombre=$_SESSION['usuNombre'];
$usuContrasena=$_SESSION['usuContrasena'];

include('../class/conex.php');

$docCodigo = $_GET['docCodigo'];
/**************CONSULTAS**************/
$consulta =
"
SELECT *
FROM tbdocumento doc
INNER JOIN tbdocumento_plantilla dpl ON
doc.doc_dpl_Codigo = dpl.dpl_Codigo
INNER JOIN tbdocumento_ano dan ON doc.doc_dan_Codigo =
dan.dan_Codigo
INNER JOIN tbpersona per ON doc.doc_Destinatario =
per.per_Codigo
INNER JOIN tbpersona_prefijo ppr ON per.per_ppr_Codigo =
ppr.ppr_Codigo
INNER JOIN tbpersona_cargo pca ON per.per_pca_Codigo =
pca.pca_Codigo
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
INNER JOIN tbarea are ON par.par_are_Codigo = are_Codigo
WHERE doc_Codigo LIKE '" . $docCodigo ."'
";
$resultado = $conexion->query($consulta);
$registro=$resultado->fetch_object();

$consultaRemitente =
"
SELECT *
FROM tbpersona per
INNER JOIN tbpersona_prefijo ppr ON per.per_ppr_Codigo =
ppr.ppr_Codigo
INNER JOIN tbpersona_area par ON per.per_Codigo =
par.par_per_Codigo
INNER JOIN tbarea are ON par.par_are_Codigo = are_Codigo
INNER JOIN tbpersona_direccion pdi ON per.per_pdi_Codigo
= pdi.pdi_Codigo
INNER JOIN tbpersona_distrito dis ON pdi.pdi_dis_Codigo =
dis.dis_Codigo

412
INNER JOIN tbpersona_provincia pro ON dis.dis_pro_Codigo
= pro.pro_Codigo
INNER JOIN tbpersona_departamento dep ON
pro.pro_dep_Codigo = dep.dep_Codigo
INNER JOIN tbpersona_via pvi ON pdi.pdi_pvi_Codigo =
pvi.pvi_Codigo
INNER JOIN tbpersona_zona pzo ON pdi.pdi_pzo_Codigo =
pzo.pzo_Codigo
WHERE per_Codigo LIKE '" . $registro->doc_Remitente ."'
";
$resultadoRemitente = $conexion->query($consultaRemitente);
$registroRemitente=$resultadoRemitente->fetch_object();

/*CONTENIDO*/
$pdf=new PDF_HTML_Table('P','mm','A4');
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Arial','',11);

$pdf->Cell(0,30,'ESPACIO DEL HEADER FPDF',0,2,'C');


//SOLICITUD
if($registro->doc_dpl_Codigo=='DPL0000001')
{
$pdf->Cell(0,6,utf8_decode('SOLICITO: '.$registro-
>doc_Asunto),0,2,'R');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('SEÑOR(A) ').$registro-
>ppr_Abreviatura.' '.$registro->per_Nombres.' '.$registro->per_Apellidos,0,2,'L');
$pdf->Cell(0,6,$registro->pca_Nombre.utf8_decode(' DE LA
').$registro->are_Nombre,0,2,'L');
$pdf->Ln();
$pdf->Multicell(0,6,
utf8_decode('Yo, ').$registroRemitente->per_Apellidos.'
'.$registroRemitente->per_Nombres.
utf8_decode('. Edad ').Edad($registroRemitente-
>per_Nacimiento).utf8_decode(' años.').
utf8_decode(' Identificado con DNI
').$registroRemitente->per_DNI.
utf8_decode(' Domiciliado en ').$registroRemitente-
>pvi_Nombre.' '.$registroRemitente->pdi_NombreVia.' '.$registroRemitente-
>pdi_Numero.
utf8_decode(' en el Distrito de ').$registroRemitente-
>dis_Nombre.
utf8_decode(' la Provincia de ').$registroRemitente-
>pro_Nombre.
utf8_decode(' en el Departamento de
').$registroRemitente->dep_Nombre.'.'
,0,'J');
$pdf->Ln();
//$pdf->MultiCell(0,6,$registro->doc_Contenido,0,'J');

413
$contenido=$registro->doc_Contenido;
if(ini_get('magic_quotes_gpc')=='1')
$ddeContenido=stripslashes($contenido);
$pdf->WriteHTML($contenido);
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('POR LO TANTO:'),0,2,'L');
$pdf->Cell(0,6,utf8_decode('Pido a usted se sirva atender mi
solicitud.'),0,2,'L');
$pdf->Ln();
$meses =
array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiem
bre","Octubre","Noviembre","Diciembre");
$pdf->Cell(0,6,
utf8_decode('Pimentel, ').
date("d \\d\e ", strtotime($registro->doc_Fecha)).
$meses[date('n')-1].
date(" \\d\e\l Y", strtotime($registro->doc_Fecha))
,0,2,'R');
$pdf->Ln(25);
$pdf-
>Cell(0,6,utf8_decode('_______________________________________'),0,2,'C');
$pdf->Cell(0,6,$registroRemitente->ppr_Abreviatura.'
'.$registroRemitente->per_Nombres.' '.$registroRemitente->per_Apellidos,0,2,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,2,'C');
}
//OFICIO
if($registro->doc_dpl_Codigo=='DPL0000002')
{
$pdf->Cell(0,6,$registro->dan_Nombre,0,2,'C');
$pdf->Ln();
$meses =
array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiem
bre","Octubre","Noviembre","Diciembre");
$pdf->Cell(0,6,
utf8_decode('Pimentel, ').
date("d \\d\e ", strtotime($registro->doc_Fecha)).
$meses[date('n')-1].
date(" \\d\e\l Y", strtotime($registro->doc_Fecha))
,0,2,'R');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('OFICIO N° '.$registro-
>doc_Numero),0,2,'L');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('SEÑOR(A) ').$registro-
>ppr_Abreviatura.' '.$registro->per_Nombres.' '.$registro->per_Apellidos,0,2,'L');
$pdf->Cell(0,6,$registro->pca_Nombre.utf8_decode(' DE LA
').$registro->are_Nombre,0,2,'L');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Presente.'),0,2,'L');

414
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('ASUNTO: '.$registro-
>doc_Asunto),0,2,'L');
$pdf->Cell(0,6,utf8_decode('REFERENCIA: '.$registro-
>doc_Referencia),0,2,'L');
$pdf->Ln();
//$pdf->MultiCell(0,6,$registro->doc_Contenido,0,'J');
$contenido=$registro->doc_Contenido;
if(ini_get('magic_quotes_gpc')=='1')
$ddeContenido=stripslashes($contenido);
$pdf->WriteHTML($contenido);

$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Atentamente,'),0,2,'C');
$pdf->Ln();
$pdf-
>Cell(0,6,utf8_decode('_______________________________________'),0,2,'C');
$pdf->Cell(0,6,$registroRemitente->ppr_Abreviatura.'
'.$registroRemitente->per_Nombres.' '.$registroRemitente->per_Apellidos,0,2,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,2,'C');
}
//OFICIO MULTIPLE
if($registro->doc_dpl_Codigo=='DPL0000003')
{
$pdf->Cell(0,6,$registro->dan_Nombre,0,2,'C');
$pdf->Ln();
$meses =
array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiem
bre","Octubre","Noviembre","Diciembre");
$pdf->Cell(0,6,
utf8_decode('Pimentel, ').
date("d \\d\e ", strtotime($registro->doc_Fecha)).
$meses[date('n')-1].
date(" \\d\e\l Y", strtotime($registro->doc_Fecha))
,0,2,'R');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('OFICIO N° '.$registro-
>doc_Numero),0,2,'L');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('SEÑORES ').$registro-
>ppr_Abreviatura.' '.$registro->per_Nombres.' '.$registro->per_Apellidos,0,2,'L');
$pdf->Cell(0,6,$registro->pca_Nombre.utf8_decode(' DE LA
').$registro->are_Nombre,0,2,'L');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Presente.'),0,2,'L');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('ASUNTO: '.$registro-
>doc_Asunto),0,2,'L');

415
$pdf->Cell(0,6,utf8_decode('REFERENCIA: '.$registro-
>doc_Referencia),0,2,'L');
$pdf->Ln();
//$pdf->MultiCell(0,6,$registro->doc_Contenido,0,'J');
$contenido=$registro->doc_Contenido;
if(ini_get('magic_quotes_gpc')=='1')
$ddeContenido=stripslashes($contenido);
$pdf->WriteHTML($contenido);

$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Atentamente,'),0,2,'C');
$pdf->Ln();
$pdf-
>Cell(0,6,utf8_decode('_______________________________________'),0,2,'C');
$pdf->Cell(0,6,$registroRemitente->ppr_Abreviatura.'
'.$registroRemitente->per_Nombres.' '.$registroRemitente->per_Apellidos,0,2,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,2,'C');
}
//MEMORANDO
if($registro->doc_dpl_Codigo=='DPL0000004')
{
$pdf->Cell(0,6,$registro->dan_Nombre,0,2,'C');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('MEMORANDO N° '.$registro-
>doc_Numero),0,2,'C');
$pdf->Ln();
$pdf->Cell(50,6,utf8_decode('DE:'),0,0,'R');
$pdf->Cell(0,6,utf8_decode($registroRemitente-
>ppr_Abreviatura.' '.$registroRemitente->per_Nombres.' '.$registroRemitente-
>per_Apellidos),0,1,'L');
$pdf->Cell(50,6,utf8_decode(' '),0,0,'R');
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,1,'L');
$pdf->Cell(50,6,utf8_decode('A:'),0,0,'R');
$pdf->Cell(0,6,utf8_decode($registro->ppr_Abreviatura.'
'.$registro->per_Nombres.' '.$registro->per_Apellidos),0,1,'L');
$pdf->Cell(50,6,utf8_decode(' '),0,0,'R');
$pdf->Cell(0,6,$registro->are_Nombre,0,1,'L');
$pdf->Cell(50,6,utf8_decode('ASUNTO:'),0,0,'R');
$pdf->Cell(0,6,utf8_decode($registro->doc_Asunto),0,1,'L');
$pdf->Cell(50,6,utf8_decode('FECHA:'),0,0,'R');
$meses =
array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiem
bre","Octubre","Noviembre","Diciembre");
$pdf->Cell(0,6,
utf8_decode('Pimentel,').
date("d \\d\e ", strtotime($registro->doc_Fecha)).
$meses[date('n')-1].
date(" \\d\e\l Y", strtotime($registro->doc_Fecha))
,0,1,'L');

416
$pdf->Ln();
$contenido=$registro->doc_Contenido;
//$pdf->MultiCell(0,6,$contenido,0,'J');
if(ini_get('magic_quotes_gpc')=='1')
$ddeContenido=stripslashes($contenido);
$pdf->WriteHTML($contenido);

$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Atentamente,'),0,2,'C');
$pdf->Ln(25);
$pdf-
>Cell(0,6,utf8_decode('_______________________________________'),0,2,'C');
$pdf->Cell(0,6,$registroRemitente->ppr_Abreviatura.'
'.$registroRemitente->per_Nombres.' '.$registroRemitente->per_Apellidos,0,2,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,2,'C');
}
//CERTIFICADO
if($registro->doc_dpl_Codigo=='DPL0000005')
{
$pdf->Cell(0,6,utf8_decode('LO SENTIMOS =(, PLANTILLA
AÚN NO DISPONIBLE, POR FAVOR COMUNIQUESE CON EL
ADMINISTRADOR DEL SISTEMA'),0,2,'C');
}
//COMUNICADO
if($registro->doc_dpl_Codigo=='DPL0000006')
{
$pdf->Cell(0,6,'COMUNICADO',0,2,'C');
$pdf->Ln();
$pdf->MultiCell(0,6,$registro->doc_Contenido,0,'J');
$pdf->Ln();
$pdf->Cell(0,6,utf8_decode('Atentamente,'),0,2,'C');
$pdf->Ln();
$pdf-
>Cell(0,6,utf8_decode('_______________________________________'),0,2,'C');
$pdf->Cell(0,6,$registroRemitente->ppr_Abreviatura.'
'.$registroRemitente->per_Nombres.' '.$registroRemitente->per_Apellidos,0,2,'C');
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,6,$registroRemitente->are_Nombre,0,2,'C');
}
//INFORME
if($registro->doc_dpl_Codigo=='DPL0000007')
{
$pdf->Cell(0,6,utf8_decode('LO SENTIMOS =(... ESTA
PLANTILLA AÚN NO ESTA DISPONIBLE, POR FAVOR COMUNIQUESE CON
EL ADMINISTRADOR DEL SISTEMA'),0,2,'C');
}
//RESOLUCION
if($registro->doc_dpl_Codigo=='DPL0000008')
{

417
$pdf->Cell(0,6,utf8_decode('LO SENTIMOS =(... ESTA
PLANTILLA AÚN NO ESTA DISPONIBLE, POR FAVOR COMUNIQUESE CON
EL ADMINISTRADOR DEL SISTEMA'),0,2,'C');
}
}
else
{
$pdf=new PDF('P','mm','A4');
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);
$pdf->Cell(0,30,utf8_decode('¡ERROR AL GENERAR EL
PDF!'),0,2,'C');
$pdf->MultiCell(0,10,utf8_decode('UPS... Al parecer hubo un error al
generar el documento, intentelo de nuevo, si el error persiste por favor comuniquese
con el administrador del sistema.'),0,'C');
$pdf->Cell(0,10,utf8_decode('OFICINA DE TECNOLOG�AS DE
INFORMACIÓN | UCV - CHICLAYO'),0,2,'C');
}
$pdf->Output();
?>

- vieTramiteUpload
<?php
if(isset($_GET['docCodigo']))
{
$docCodigo = $_GET['docCodigo'];
}
$ruta = "../upload/tbdocumento/".$docCodigo;
if(!is_dir($ruta))
{
mkdir($ruta,0777);
chmod($ruta,0777);
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="../css/standard.css"/>
</head>
<body class="bdyContenedor">
<!--
Subiendo varios archivos, a la vez, al servidor
y recorriendo la carpeta "archivos"
-->
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="archivo[]" onClick="" multiple/><br
/>

418
<input type="submit" name="click" value="SUBIR
ARCHIVOS" /><p />
</form>
<?php
if(@$_POST['click'] != "")
{
//recordar para verificar lo que se esta enviando
//utilizar la funcion print_r()
echo "<pre>";
//print_r($_FILES);
echo "</pre>";
//para empezar utilizamos el array anidado
//$_FILES['archivo']['tmp_name'] como contador
//en este caso tendra dos elementos, por lo que el loop
iterara 2 veces
//esto subira los archivos ya vimos algo el video anterior
for($i=0; $i<count($_FILES['archivo']['tmp_name']);
$i++)
{
//echo "Iteracion numero: ".( $i + 1 )."<br />";
@copy($_FILES['archivo']['tmp_name'][$i],

"../upload/tbdocumento/".$docCodigo."/".$_FILES['archivo']['name'][$i]);
}
}
//ahora, escaneamos la carpeta archivos con la funcion scandir()
$result=scandir("../upload/tbdocumento/".$docCodigo."/");
//almacenamos el resultado en una variable
//y hacemos un print_r() a $result
echo "<pre>";
//print_r($result);
echo "</pre>";
//nos dice que $result es un array
//y como array que es podemos recorrerlo con un loop foreach()
?>
<section class="tbl">
<ul>
<li>ARCHIVO</li>
<li>DESCARGAR</li>
</ul>
<?php
foreach($result as $archivos)
{
if($archivos != ".." && $archivos != "." && $archivos !=
"Thumbs.db")
{ // != distinto de
?>
<article class="tblDato">
<ul>
<li><?php echo $archivos; ?></li>

419
<li><a href="<?php echo $ruta."/".$archivos; ?>"
target="_blank"><img src="../img/descargar.png"></a></li>
</ul>
</article>
<?php
}
}
?>
</section>
</body>
</html>

420
4.5. Fase de pruebas
4.5.1. Pruebas de aceptación

Tabla 115: Prueba de aceptación 01


PRUEBA DE ACEPTACIÓN
Número: 01 Historia de usuario Nº: 01 Gestionar área
Nombre de la tarea: Comprobar mantenimiento
Descripción:
Se comprobará que se puede registrar o modificar, y eliminar o dar de baja un área
Condiciones de ejecución:
Antes de que se registre un área, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esa área ya existe,
sino existe en la base de datos se registrara y aparecerá un mensaje de éxito
Antes de que se modifique un área, se comprobara que los datos obligatorios sean
ingresados y además que el área no exista dentro de la base de datos, si existe en la base
de datos aparecerá un mensaje que diga que esa área ya existe, sino existe en la base de
datos se registrara y aparecerá un mensaje de éxito.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja.
 Se digitaran todos los datos obligatorios
 Si están todos los datos obligatorios ingresados se procederá al registro del área
 Si existe el área aparecerá el mensaje los datos ya existen
 Se ingresaran datos que no se repitan
 Si esta todo conforme se guardara o modificara en la base de datos
 Aparecerá un mensaje
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

421
Tabla 116: Prueba de aceptación 02
PRUEBA DE ACEPTACIÓN
Número: 02 Historia de usuario Nº: 01 Gestionar área
Nombre de la tarea: Comprobar eliminación de registro
Descripción:
Se comprobará eliminar o dar de baja un área
Condiciones de ejecución:
Para dar de baja a un área se deberá de escoger el área y aceptar el mensaje de dar de
baja que aparecerá.
Para eliminar un área se deberá de escoger el área y aceptar el mensaje de eliminación
que aparecerá.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja.
 Se escogerá el área que se dará de baja o eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

422
Tabla 117: Prueba de aceptación 03
PRUEBA DE ACEPTACIÓN
Número: 03 Historia de usuario Nº: 02 Gestionar ubigeo departamento
Nombre de la tarea: Comprobar mantenimientos
Descripción:
Se comprobará que se puede registrar o modificar una Departamento
Condiciones de ejecución:
Antes de que se registre un Departamento, se comprobara que no exista dentro de la
base de datos, si existe en la base de datos aparecerá un mensaje que diga que este
departamento ya ha sido registrado, sino existe en la base de datos se registrara de
forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un Departamento, se comprobara que los datos obligatorios
sean ingresados y además que el departamento no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que esa este departamento ya
ha sido registrado, sino existe en la base de datos se registrara y aparecerá un mensaje
de éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registra o modificar).
 Se digitaran todos los datos obligatorios para el nuevo registro
 Si están todos los datos obligatorios ingresados se procederá al registro del
departamento
 Si existe el departamento aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardara o modificara en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

423
Tabla 118: Prueba de aceptación 04
PRUEBA DE ACEPTACIÓN
Número: 04 Historia de usuario Nº: 02 Gestionar departamento
Nombre de la tarea: Comprobar eliminación de registros
Descripción:
Se comprobará eliminar o dar de baja un departamento
Condiciones de ejecución:
Para dar de baja a un departamento se deberá de escoger el departamento y cambiar su
estado de activo a desactivo y aceptar el mensaje de dar de baja que aparecerá.
Para eliminar un departamento se deberá de escoger el departamento a eliminar y
aceptar el mensaje de eliminación que aparecerá.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. (eliminación o dar de baja)
 Se escogerá el departamento que se dará de baja o eliminara
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

424
Tabla 119: Prueba de aceptación 05
PRUEBA DE ACEPTACIÓN
Número: 05 Historia de usuario Nº: 03 Gestionar ubigeo provincia
Nombre de la tarea: Comprobar los mantenimientos del ubigeo_Provincia
Descripción:
Se comprobará que se puede registrar o modificar una Provincia
Condiciones de ejecución:
Antes de que se registre una Provincia, se comprobara que no exista dentro de la base
de datos, si existe en la base de datos aparecerá un mensaje que diga que esta provincia
ya ha sido registrada, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una Provincia, se comprobará que los datos obligatorios
sean ingresados y además que el departamento no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que esa esta provincia ya ha
sido registrado, sino existe en la base de datos se registrara y aparecerá un mensaje de
éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registra o modificar) una provincia.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
provincia.
 Si existe la provincia aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardara o modificara en la base de datos.
 Aparecerá un mensaje de confirmación.
 Aceptar el mensaje.
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

425
Tabla 120: Prueba de aceptación 06
PRUEBA DE ACEPTACIÓN
Número: 06 Historia de usuario Nº: 03 Gestionar Provincia
Nombre de la tarea: Comprobar eliminación de registros
Descripción:
Se comprobará eliminar o dar de baja un Provincia
Condiciones de ejecución:
Para la eliminación de los registros de la base datos en este caso, una provincia, se
deberá escoger o seleccionar la provincia que se quiere eliminar y aceptar el mensaje
de eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja, en este caso de eliminación
 Se seleccionará la provincia a eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 121: Prueba de aceptación 07


PRUEBA DE ACEPTACIÓN
Número: 07 Historia de usuario Nº: 04 Gestionar ubigeo distrito
Nombre de la tarea: Comprobar los mantenimientos del Ubigeo_Distrito
Descripción:
Se comprobará que se puede registrar o modificar una Distrito
Condiciones de ejecución:
Antes de que se registre un Distrito, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esta Distrito ya
ha sido registrada, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un Distrito, se comprobará que los datos obligatorios sean
ingresados y además que el distrito no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que este distrito ya ha sido registrado, sino
existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo: la
modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registra o modificar) un Distrito.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro del Distrito
 Si existe el Distrito aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardara o modificara en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

426
Tabla 122: Prueba de aceptación 08
PRUEBA DE ACEPTACIÓN
Número: 08 Historia de usuario Nº: 04 Gestionar distrito
Nombre de la tarea: Comprobar eliminación de Distrito
Descripción:
Se comprobará la eliminación de un Distrito
Condiciones de ejecución:
Para la eliminación de los registros de la base datos en este caso, un Distrito, se deberá
escoger o seleccionar el distrito que se quiere eliminar y aceptar el mensaje de
eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación
 Se seleccionará el Distrito a eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 123: Prueba de aceptación 09


PRUEBA DE ACEPTACIÓN
Número: 09 Historia de usuario Nº: 05 Gestionar ubigeo vía
Nombre de la tarea: Comprobar los mantenimientos del Ubigeo_Via
Descripción:
Se comprobará que se puede registrar o modificar una vía
Condiciones de ejecución:
Antes de que se registre una vía, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esta Vía ya ha
sido registrada, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una Vía, se comprobará que los datos obligatorios sean
ingresados y además que la vía no exista dentro de la base de datos, si existe en la base
de datos aparecerá un mensaje que diga que esta vía ya ha sido registrado, sino existe
en la base de datos se registrara y aparecerá un mensaje de éxito diciendo: la
modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una Vía.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la vía
 Si existe la vía aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardara o modificara en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

427
Tabla 124: Prueba de aceptación 10
PRUEBA DE ACEPTACIÓN
Número: 10 Historia de usuario Nº: 05 Gestionar ubigeo via
Nombre de la tarea: Comprobar eliminación de Vía
Descripción:
Se comprobará la eliminación de una vía
Condiciones de ejecución:
Para la eliminación de los registros de la base datos en este caso, una vía, se deberá
escoger o seleccionar la vía que se quiere eliminar y aceptar el mensaje de eliminación
que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación
 Se seleccionará la vía a eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 125: Prueba de aceptación 11


PRUEBA DE ACEPTACIÓN
Número: 11 Historia de usuario Nº: 06 Gestionar ubigeo zona
Nombre de la tarea: Comprobar los mantenimientos del Ubigeo_Zona
Descripción:
Se comprobará que se puede registrar o modificar una Zona
Condiciones de ejecución:
Antes de que se registre una zona, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esta Zona ya ha
sido registrada, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una Zona, se comprobará que los datos obligatorios sean
ingresados y además que la Zona no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que esta Zona ya ha sido registrado, sino
existe en la base de datos se registrará y aparecerá un mensaje de éxito diciendo: la
modificación o el registro se realizó exitosamente
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una Zona.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la Zona
 Si existe la zona aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardara o modificara en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

428
Tabla 126: Prueba de aceptación 12
PRUEBA DE ACEPTACIÓN
Número: 12 Historia de usuario Nº: 06 Gestionar ubigeo zona
Nombre de la tarea: Comprobar eliminación de Zona
Descripción:
Se comprobará la eliminación de una Zona
Condiciones de ejecución:
Para la eliminación de los registros de la base datos en este caso, una zona, se deberá
escoger o seleccionar la Zona que se quiere eliminar y aceptar el mensaje de
eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación
 Se seleccionará la Zona a eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 127: Prueba de aceptación 13


PRUEBA DE ACEPTACIÓN
Número: 13 Historia de usuario Nº: 07 Gestionar permiso usuario
Nombre de la tarea: Comprobar los mantenimientos de Permiso usuarios
Descripción:
Se comprobará que se puede registrar o modificar un permiso usuario
Condiciones de ejecución:
Antes de que se registre una permiso de usuario, se comprobara que no exista dentro
de la base de datos, si existe en la base de datos aparecerá un mensaje que diga que este
permiso ya está dado a otro usuario, sino existe en la base de datos se registrara de
forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un permiso de usuario, se comprobará que los datos
obligatorios sean ingresados y una vez realizados los cambios esto se registrara
automáticamente de tal manera que aparecerá un mensaje de éxito diciendo: la
modificación o el registro se realizó de manera exitosa.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un permiso de
usuario.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de los
permisos asignados.
 Si existe un permiso con este con códigos repetidos aparecerá el mensaje los datos
ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

429
Tabla 128: Prueba de aceptación 14
PRUEBA DE ACEPTACIÓN
Número: 14 Historia de usuario Nº: 07 Gestionar permiso usuario
Nombre de la tarea: Comprobar eliminación de Permisos usuarios
Descripción:
Se comprobará la eliminación completa de un permiso usuario.
Condiciones de ejecución:
Para la eliminación de los permisos de usuario en la base datos en este caso, se deberá
escoger o seleccionar un permiso que se quiere eliminar y aceptar el mensaje de
eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de
permisos
 Se seleccionará el permiso usuario que se va eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 129: Prueba de aceptación 15


PRUEBA DE ACEPTACIÓN
Número: 15 Historia de usuario Nº: 08 Gestionar cargo
Nombre de la tarea: Comprobar los mantenimientos de Cargo
Descripción:
Se comprobará que se puede registrar o modificar un cargo
Condiciones de ejecución:
Antes de que se registre una cargo, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que este nombre ya
se encuentra registrado, sino existe en la base de datos se registrara de forma correcta
y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una cargo, se comprobará que los datos obligatorios sean
ingresados y además que el cargo no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que este cargo ya ha sido registrado, sino
existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo: la
modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un cargo.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de los
cargos.
 Si existe el cargo aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

430
Tabla 130: Prueba de aceptación 16
PRUEBA DE ACEPTACIÓN
Número: 16 Historia de usuario Nº: 08 Gestionar cargo
Nombre de la tarea: Comprobar eliminación de cargos
Descripción:
Se comprobará la eliminación completa de un cargo.
Condiciones de ejecución:
Para a eliminación de los cargos en la base datos en este caso, se deberá escoger o
seleccionar un cargo que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja, en este caso de eliminación de cargos
 Se seleccionará el cargo que se va eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 131: Prueba de aceptación 17


PRUEBA DE ACEPTACIÓN
Número: 17 Historia de usuario Nº: 09 Gestionar tipo persona
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Tipo -Persona
Descripción:
Se comprobará que se puede registrar o modificar un Gestionar Tipo -Persona
Condiciones de ejecución:
Antes de que se registre una tipo de persona, se comprobara que no exista dentro de la
base de datos, si existe en la base de datos aparecerá un mensaje que diga que este tipo
– persona ya se encuentra registrado, sino existe en la base de datos se registrara de
forma correcta y aparecerá un mensaje de éxito en el registro.

Antes de que se modifique una tipo persona, se comprobará que los datos obligatorios
sean ingresados y además que el tipo persona no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que este tipo persona ya ha
sido registrado, sino existe en la base de datos se registrara y aparecerá un mensaje de
éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un tipo persona.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de los tipos
de personas.
 Si existe el tipo persona aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

431
Tabla 132: Prueba de aceptación 18
PRUEBA DE ACEPTACIÓN
Número: 18 Historia de usuario Nº: 09 Gestionar tipo persona
Nombre de la tarea: Comprobar eliminación de un tipo de persona
Descripción:
Se comprobará la eliminación completa de un tipo de persona.
Condiciones de ejecución:
Para la eliminación de los tipos de personas en la base datos en este caso, se deberá
escoger o seleccionar un tipo de persona que se quiere eliminar y aceptar el mensaje de
eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de tipo de
persona.
 Se seleccionará el tipo de personas que se va eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 133: Prueba de aceptación 19


PRUEBA DE ACEPTACIÓN
Número: 19 Historia de usuario Nº: 09 Gestionar tipo persona
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Tipo -Persona
Descripción:
Se comprobará que se puede registrar o modificar un Gestionar Tipo -Persona
Condiciones de ejecución:
Antes de que se registre una tipo de persona, se comprobara que no exista dentro de la
base de datos, si existe en la base de datos aparecerá un mensaje que diga que este tipo
– persona ya se encuentra registrado, sino existe en la base de datos se registrara de
forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una tipo persona, se comprobará que los datos obligatorios
sean ingresados y además que el tipo persona no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que este tipo persona ya ha
sido registrado, sino existe en la base de datos se registrara y aparecerá un mensaje de
éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un tipo persona.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de los tipos
de personas.
 Si existe el tipo persona aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

432
Tabla 134: Prueba de aceptación 20
PRUEBA DE ACEPTACIÓN
Número: 20 Historia de usuario Nº: 09 Gestionar tipo persona
Nombre de la tarea: Comprobar eliminación de un tipo de persona
Descripción:
Se comprobará la eliminación completa de un tipo de persona.
Condiciones de ejecución:
Para la eliminación de los tipos de personas en la base datos en este caso, se deberá
escoger o seleccionar un tipo de persona que se quiere eliminar y aceptar el mensaje de
eliminación que aparecerá. Para luego dar por finalizado la operación realizada
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de tipo de
persona.
 Se seleccionará el tipo de personas que se va eliminar
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

Tabla 135: Prueba de aceptación 21


PRUEBA DE ACEPTACIÓN
Número: 21 Historia de usuario Nº: 10 Gestionar prefijos
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Prefijos
Descripción:
Se comprobará que se puede registrar o modificar un Gestionar Prefijos
Condiciones de ejecución:
Antes de que se registre un prefijo, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que este prefijo ya se
encuentra registrado, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una prefijo, se comprobará que los datos obligatorios sean
ingresados y además que el prefijo no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que este prefijo ya ha sido registrado, sino
existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo: la
modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un prefijo.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de los prefijo
 Si existe el prefijo aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

433
Tabla 136: Prueba de aceptación 22
PRUEBA DE ACEPTACIÓN
Número: 22 Historia de usuario Nº: 10 Gestionar prefijos
Nombre de la tarea: Comprobar eliminación de un prefijo
Descripción:
Se comprobará la eliminación completa de un prefijo.
Condiciones de ejecución:
Para la eliminación de los prefijo en la base datos en este caso, se deberá escoger o
seleccionar un prefijo que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación del prefijo
 Se seleccionará el prefijo que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 137: Prueba de aceptación 23


PRUEBA DE ACEPTACIÓN
Número: 23 Historia de usuario Nº: 11 Gestionar empresa
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Empresa
Descripción:
Se comprobará que se puede registrar o modificar una empresa
Condiciones de ejecución:
Antes de que se registre una empresa, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esta empresa ya
se encuentra registrado, sino existe en la base de datos se registrara de forma correcta
y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una empresa, se comprobará que los datos obligatorios sean
ingresados y además que la empresa no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que esta empresa ya ha sido registrado,
sino existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo:
la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una empresa.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
empresa
 Si existe la empresa aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correcto y que no se repitan
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

434
Tabla 138: Prueba de aceptación 24
PRUEBA DE ACEPTACIÓN
Número: 24 Historia de usuario Nº: 11 Gestionar empresa
Nombre de la tarea: Comprobar eliminación de una empresa
Descripción:
Se comprobará la eliminación completa de una empresa.
Condiciones de ejecución:
Para la eliminación de una empresa en la base datos en este caso, se deberá escoger o
seleccionar una empresa que se quiere eliminar y aceptar el mensaje de eliminación
que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de la
empresa
 Se seleccionará la empresa que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 139: Prueba de aceptación 25


PRUEBA DE ACEPTACIÓN
Número: 25 Historia de usuario Nº: 12 Gestionar persona
Nombre de la tarea: Comprobar los mantenimientos de gestionar personas
Descripción:
Se comprobará que se puede registrar o modificar una persona
Condiciones de ejecución:
Antes de que se registre una persona, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que esta persona ya
se encuentra registrada, sino existe en la base de datos se registrara de forma correcta
y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una persona, se comprobará que los datos obligatorios sean
ingresados y además que la persona no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que esta persona ya ha sido registrado,
sino existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo:
la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una persona.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la persona
 Si existe la persona aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

435
Tabla 140: Prueba de aceptación 26
PRUEBA DE ACEPTACIÓN
Número: 26 Historia de usuario Nº: 12 Gestionar persona
Nombre de la tarea: Comprobar eliminación de una persona
Descripción:
Se comprobará la eliminación completa de una persona.
Condiciones de ejecución:
Para la eliminación de una persona en la base datos en este caso, se deberá escoger o
seleccionar una persona que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de la
persona.
 Se seleccionará la persona que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 141: Prueba de aceptación 27


PRUEBA DE ACEPTACIÓN
Número: 27 Historia de usuario Nº: 13 Gestionar Direcciones
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Direcciones
Descripción:
Se comprobará que se puede registrar o modificar una la Dirección
Condiciones de ejecución:
Antes de que se registre una dirección, se comprobara que no exista dentro de la base
de datos, si existe en la base de datos aparecerá un mensaje que diga que esta dirección
ya se encuentra registrada, sino existe en la base de datos se registrara de forma correcta
y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique una dirección, se comprobará que los datos obligatorios
sean ingresados y además que las direcciones no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que esta dirección ya ha sido
registrado, sino existe en la base de datos se registrara y aparecerá un mensaje de éxito
diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una dirección.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
dirección.
 Si existe la dirección aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

436
Tabla 142: Prueba de aceptación 28
PRUEBA DE ACEPTACIÓN
Número: 28 Historia de usuario Nº: 13 Gestionar direcciones
Nombre de la tarea: Comprobar eliminación de una dirección
Descripción:
Se comprobará la eliminación completa de una Dirección
Condiciones de ejecución:
Para la eliminación de una persona en la base datos en este caso, se deberá escoger o
seleccionar una dirección que se quiere eliminar y aceptar el mensaje de eliminación
que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación de la
dirección.
 Se seleccionará la dirección que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Y cancelar si no quiere eliminar le registró.
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 143: Prueba de aceptación 29


PRUEBA DE ACEPTACIÓN
Número: 29 Historia de usuario Nº: 14 Gestionar teléfonos
Nombre de la tarea: Comprobar los mantenimientos de gestionar teléfonos
Descripción:
Se comprobará que se puede registrar o modificar un teléfono
Condiciones de ejecución:
Antes de que se registre un teléfono, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que este teléfono ya
se encuentra registrado, sino existe en la base de datos se registrara de forma correcta
y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un teléfono, se comprobará que los datos obligatorios sean
ingresados y además que los teléfonos no exista dentro de la base de datos, si existe en
la base de datos aparecerá un mensaje que diga que este teléfono ya ha sido registrado,
sino existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo:
la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una teléfono.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
dirección.
 Si existe el teléfono aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

437
Tabla 144: Prueba de aceptación 30
PRUEBA DE ACEPTACIÓN
Número: 30 Historia de usuario Nº: 14 Gestionar teléfonos
Nombre de la tarea: Comprobar eliminación de un teléfonos
Descripción:
Se comprobará la eliminación completa de un teléfono.
Condiciones de ejecución:
Para la eliminación de un teléfono en la base datos en este caso, se deberá escoger o
seleccionar un teléfono que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación del
teléfono.
 Se seleccionará el teléfono que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 145: Prueba de aceptación 31


PRUEBA DE ACEPTACIÓN
Número: 31 Historia de usuario Nº: 15 Gestionar email
Nombre de la tarea: Comprobar los mantenimientos de gestionar email
Descripción:
Se comprobará que se puede registrar o modificar un email
Condiciones de ejecución:
Antes de que se registre un email, se comprobara que no exista dentro de la base de
datos, si existe en la base de datos aparecerá un mensaje que diga que este email ya se
encuentra registrada, sino existe en la base de datos se registrara de forma correcta y
aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un email, se comprobará que los datos obligatorios sean
ingresados y además que los emails no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que este email ya ha sido registrado, sino
existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo: la
modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un email.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
dirección.
 Si existe el email aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

438
Tabla 146: Prueba de aceptación 32
PRUEBA DE ACEPTACIÓN
Número: 32 Historia de usuario Nº: 15 Gestionar email
Nombre de la tarea: Comprobar la eliminación de un email
Descripción:
Se comprobará la eliminación completa de un correo o email.
Condiciones de ejecución:
Para la eliminación de un email en la base datos en este caso, se deberá escoger o
seleccionar un teléfono que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja. En este caso de eliminación del Correo
o email.
 Se seleccionará el email o correo que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 147: Prueba de aceptación 33


PRUEBA DE ACEPTACIÓN
Número: 33 Historia de usuario Nº: 16 Gestionar usuario
Nombre de la tarea: Comprobar los mantenimientos de Gestionar Usuario
Descripción:
Se comprobará que se puede registrar o modificar un Usuario
Condiciones de ejecución:
Antes de que se registre un usuario, se comprobara que no exista dentro de la base de
datos, y además que sus nombres de aparecer en la tabla persona lo cual indica que está
laborando en la organización. Si existe en la base de datos aparecerá un mensaje que
diga que este usuario ya se encuentra registrado, sino existe en la base de datos se
registrara de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un usuario, se comprobará que los datos obligatorios sean
ingresados y además que el usuario no exista dentro de la base de datos, si existe en la
base de datos aparecerá un mensaje que diga que este usuario ya ha sido registrado,
sino existe en la base de datos se registrara y aparecerá un mensaje de éxito diciendo:
la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un usuario.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
dirección.
 Si existe el usuario aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación
Evaluación de la prueba: Satisfactoria

439
Tabla 148: Prueba de aceptación 34
PRUEBA DE ACEPTACIÓN
Número: 34 Historia de usuario Nº: 16 Gestionar usuario
Nombre de la tarea: Comprobar la eliminación de un usuarios
Descripción:
Se comprobará la eliminación completa de un correo o email.
Condiciones de ejecución:
Para la eliminación de un usuario en la base datos en este caso, se deberá escoger o
seleccionar un usuario que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso
al usuario.
 Se seleccionará el usuario que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 149: Prueba de aceptación 35


PRUEBA DE ACEPTACIÓN
Número: 35 Historia de usuario Nº: 17 Gestionar plantilla de documento
Nombre de la tarea: Comprobar los mantenimientos de plantilla de documento
Descripción:
Se comprobará que se puede registrar o modificar una plantilla de documento.
Condiciones de ejecución:
Antes de que se registre una plantilla de documento, se comprobara que no exista dentro
de la base de datos, Si existe en la base de datos aparecerá un mensaje que diga que
esta plantilla de documento ya se encuentra registrado, sino existe en la base de datos
se registrara de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un plantilla de documento, se comprobará que los datos
obligatorios sean ingresados y además que dicha plantilla o su modelo del documento
no exista dentro de la base de datos, si existe en la base de datos aparecerá un mensaje
que diga que este plantilla ya ha sido registrado, sino existe en la base de datos se
registrara y aparecerá un mensaje de éxito diciendo: la modificación se realizó
exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una plantilla.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de la
plantilla para un determinado documento.
 Si existe la plantilla aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

440
Tabla 150: Prueba de aceptación 36
PRUEBA DE ACEPTACIÓN
Número: 36 Historia de usuario Nº: 17 Gestionar plantilla de documento
Nombre de la tarea: Comprobar la eliminación de una plantilla de un documento
Descripción:
Se comprobará la eliminación completa de una plantilla.
Condiciones de ejecución:
Para la eliminación de una plantilla en la base datos en este caso, se deberá escoger o
seleccionar una plantilla que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso a
la plantilla del documento.
 Se seleccionará la plantilla que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 151: Prueba de aceptación 37


PRUEBA DE ACEPTACIÓN
Número: 37 Historia de usuario Nº: 18 Gestionar el año
Nombre de la tarea: Comprobar los mantenimientos para Año del documento
Descripción:
Se comprobará que se puede registrar o modificar una plantilla de documento.
Condiciones de ejecución:
Antes de que se registre un año del documento, se comprobara que no exista dentro de
la base de datos, Si existe en la base de datos aparecerá un mensaje que diga que este
año de documento ya se encuentra registrado, sino existe en la base de datos se
registrara de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un año del documento, se comprobará que los datos
obligatorios sean ingresados y además que dicho año del documento no exista dentro
de la base de datos, si existe en la base de datos aparecerá un mensaje que diga que este
año ya ha sido registrado, sino existe en la base de datos se registrara y aparecerá un
mensaje de éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un año.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de un nuevo
año para un determinado documento.
 Si existe el año del documento aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

441
Tabla 152: Prueba de aceptación 38
PRUEBA DE ACEPTACIÓN
Número: 38 Historia de usuario Nº: 18 Gestionar año
Nombre de la tarea: Comprobar la eliminación del Año
Descripción:
Se comprobará la eliminación completa de un año.
Condiciones de ejecución:
Para la eliminación de un año en la base datos en este caso, se deberá escoger o
seleccionar un año que se quiere eliminar y aceptar el mensaje de eliminación que
aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso a
al año.
 Se seleccionará el año que se va eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 153: Prueba de aceptación 39


PRUEBA DE ACEPTACIÓN
Número: 39 Historia de usuario Nº: 19 Gestionar tipo documento
Nombre de la tarea: Comprobar los mantenimientos para tipo de documento
Descripción:
Se comprobará que se puede registrar o modificar un tipo de documento.
Condiciones de ejecución:
Antes de que se registre un tipo de documento, se comprobara que no exista dentro de
la base de datos, Si existe en la base de datos aparecerá un mensaje que diga que este
tipo de documento ya se encuentra registrado, sino existe en la base de datos se
registrara de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un tipo de documento, se comprobará que los datos
obligatorios sean ingresados y además que dicho tipo de documento no exista dentro
de la base de datos, si existe en la base de datos aparecerá un mensaje que diga que este
tipo de documento ya ha sido registrado, sino existe en la base de datos se registrara y
aparecerá un mensaje de éxito diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un tipo de
documento.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de un nuevo
tipo de documento.
 Si existe el tipo de documento aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

442
Tabla 154: Prueba de aceptación 40
PRUEBA DE ACEPTACIÓN
Número: 40 Historia de usuario Nº: Gestionar tipo documento
Nombre de la tarea: Comprobar la eliminación de un tipo de documento
Descripción:
Se comprobará la eliminación completa de un tipo de documento.
Condiciones de ejecución:
Para la eliminación de un tipo de documento en la base datos en este caso, se deberá
escoger o seleccionar un tipo de documento que se quiere eliminar y aceptar el mensaje
de eliminación que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso
un tipo de documento.
 Se seleccionará el tipo de documento que se va a eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 155: Prueba de aceptación 41


PRUEBA DE ACEPTACIÓN
Número: 41 Historia de usuario Nº: 20 Gestionar subtipo documento
Nombre de la tarea: Comprobar los mantenimientos para subtipo de documento
Descripción:
Se comprobará que se puede registrar o modificar un Subtipo de documento.
Condiciones de ejecución:
Antes de que se registre un Subtipo de documento, se comprobara que no exista dentro
de la base de datos, Si existe en la base de datos aparecerá un mensaje que diga que
este Subtipo de documento ya se encuentra registrado, sino existe en la base de datos
se registrara de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un Subtipo de documento, se comprobará que los datos
obligatorios sean ingresados y además que dicho Subtipo de documento no exista
dentro de la base de datos, si existe en la base de datos aparecerá un mensaje que diga
que este Subtipo de documento ya ha sido registrado, sino existe en la base de datos se
registrara y aparecerá un mensaje de éxito diciendo: la modificación se realizó
exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un Subtipo de
documento.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de un nuevo
Subtipo de documento.
 Si existe el subtipo de documento aparecerá el mensaje los datos ya existen. Subtipo
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

443
Tabla 156: Prueba de aceptación 42
PRUEBA DE ACEPTACIÓN
Número: 42 Historia de usuario Nº: 20 Gestionar subtipo documento
Nombre de la tarea: Comprobar la eliminación de un subtipo de documento
Descripción:
Se comprobará la eliminación completa de un Subtipo de documento.
Condiciones de ejecución:
Para la eliminación de un subtipo de documento en la base datos en este caso, se deberá
escoger o seleccionar un Subtipo de documento que se quiere eliminar y aceptar el
mensaje de eliminación que aparecerá. Para luego dar por finalizado la operación
realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso
un Subtipo de documento.
 Se seleccionará el Subtipo de documento que se va a eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

444
Tabla 157: Prueba de aceptación 43
PRUEBA DE ACEPTACIÓN
Número: 43 Historia de usuario Nº: 21 Gestionar documento
Nombre de la tarea: Comprobar los mantenimientos para documento
Descripción:
Se comprobará que se puede registrar, modificar, recibir, derivar, resolver y finalizar
un documento.
Condiciones de ejecución:
Antes de que se registre un nuevo de documento, se comprobara que no exista dentro
de la base de datos, Si existe en la base de datos aparecerá un mensaje que diga que
este documento ya se encuentra registrado, sino existe en la base de datos se registrara
de forma correcta y aparecerá un mensaje de éxito en el registro.
Antes de que se modifique un documento, se comprobará que los datos obligatorios
sean ingresados y además que dicho documento no exista dentro de la base de datos, si
existe en la base de datos aparecerá un mensaje que diga que este documento ya ha sido
registrado, sino existe en la base de datos se registrara y aparecerá un mensaje de éxito
diciendo: la modificación se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) un Subtipo de
documento.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de un nuevo
documento.
 Si existe el documento aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

445
Tabla 158: Prueba de aceptación 44
PRUEBA DE ACEPTACIÓN
Número: 44 Historia de usuario Nº: 21 Gestionar documento
Nombre de la tarea: Comprobar el recibimiento o derivaciones de un documento
Descripción:
Se comprobará el recibir y el derivar un completa de un documento.
Condiciones de ejecución:
Para recibir un documento, tenemos que estar logado para poder en esos momentos
poder, trabajar con el documento.
Antes de derivar un documento tenemos que seleccionar quien va ser la persona o el
área que recibirá el documento, si el área tienes dicho documento aparecerá un mensaje
que diga que este documento ya ha sido derivado, caso contrario aparecerá un mensaje
diciendo: que él envió del archivo se realizó exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Recibidos o derivar). En este caso un
documento.
 Se seleccionará el documento que se recibió o que se eliminara.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

446
Tabla 159: Prueba de aceptación 45
PRUEBA DE ACEPTACIÓN
Número: 45 Historia de usuario Nº: 21 Gestionar documento
Nombre de la tarea: Comprobar resolver o finalizar
Descripción:
Se comprobará el resolver y el finalizar un documento.
Condiciones de ejecución:
Antes de resolver un documento tenemos que leer las especiaciones que se les
atribuyeron a dichos documentos para pasar a resolver o documento. Si el documento
ya fue resuelto en la área correspondiente, aparecerá un mensaje diciendo que este
documento ya ha sido trabajado o resuelto. Caso contario se procederá a resolver dicho
documento, que una realizado a parecerá un mensaje diciendo que el documento se
resolvió con éxito
Antes de finalizar el recorrido de un documento por todas las demás áreas, debemos
comprobar que el documento cumplió con todas las especificaciones requeridas. Lo
cual al momento de finalizarlo, aparecerá un mensaje diciendo que el documento se
finalizó con éxito.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (resolver o finalizar). En este caso un
documento.
 Se seleccionará el documento que se resolverá o que se finalizara.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

Tabla 160: Prueba de aceptación 46


PRUEBA DE ACEPTACIÓN
Número: 46 Historia de usuario Nº: 21 Gestionar documento
Nombre de la tarea: Comprobar la eliminación de un documento
Descripción:
Se comprobará la eliminación completa de un documento.
Condiciones de ejecución:
Para la eliminación de un documento en la base datos en este caso, se deberá escoger o
seleccionar un documento que se quiere eliminar y aceptar el mensaje de eliminación
que aparecerá. Para luego dar por finalizado la operación realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso
un documento.
 Se seleccionará el documento que se va a eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

447
Tabla 161: Prueba de aceptación 47
PRUEBA DE ACEPTACIÓN
Número: 47 Historia de usuario Nº: 22 Gestionar rutas
Nombre de la tarea: Comprobar los mantenimientos para rutas
Descripción:
Se comprobara que se van a registrar y a modificar las rutas
Condiciones de ejecución:
Antes de que se registre una ruta para el recorrido del documento, se comprobara que
no exista dentro de la base de datos dicha ruta, Si existe en la base de datos aparecerá
un mensaje que diga que este esta ruta para este documento ya se encuentra registrado,
sino existe en la base de datos se registrara de forma correcta y aparecerá un mensaje
de éxito en el registro.
Antes de que se modifique una nueva ruta para el documento, se comprobará que los
datos obligatorios sean ingresados y además que dicha ruta del documento no exista
dentro de la base de datos, si existe en la base de datos aparecerá un mensaje que diga
que este ruta de documento ya ha sido registrado, sino existe en la base de datos se
registrara y aparecerá un mensaje de éxito diciendo: la modificación se realizó
exitosamente.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Registrar o modificar) una nueva ruta
para el documento.
 Se digitarán todos los datos obligatorios para el nuevo registro.
 Si están todos los datos obligatorios ingresados se procederá al registro de una ruta
del documento.
 Si existe la ruta para este documento aparecerá el mensaje los datos ya existen.
 Se ingresaran datos correctos y que no se repitan.
 Si esta todo conforme se guardará o modificará en la base de datos
 Aparecerá un mensaje de confirmación
 Aceptar el mensaje
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

448
Tabla 162: Prueba de aceptación 48
PRUEBA DE ACEPTACIÓN
Número: 48 Historia de usuario Nº: 22 Gestionar rutas
Nombre de la tarea: Comprobar la eliminación de una ruta o recorrido del
documento
Descripción:
Se comprobará la eliminación completa de una ruta del documento
Condiciones de ejecución:
Para la eliminación de una ruta de un documento en la base datos en este caso, se deberá
escoger o seleccionar una ruta del documento que se quiere eliminar y aceptar el
mensaje de eliminación que aparecerá. Para luego dar por finalizado la operación
realizada.
Entrada / pasos de ejecución:
 Se ejecutará la opción que el usuario escoja (Eliminar o dar de baja). En este caso
una ruta de un documento.
 Se seleccionará la ruta de un documento que se va a eliminar.
 Aparecerá un mensaje de aviso en pantalla.
 Aceptar el mensaje de confirmación ante la acción realizada
 Finalizar comprobación.
Evaluación de la prueba: Satisfactoria

449
V. DISCUSIÓN
En este capítulo se realizó el análisis de los resultados de la implementación de una
Aplicación web que permita gestionar los trámites documentarios en la Universidad
Privada. El análisis estará enfocado a evaluar los indicadores planteados en el
capítulo III.

Estos indicadores son:


 Índice de Cantidad de documentos recibidos por día en las áreas
 Índice del número de documentos emitidos por día a las áreas
 Índice de Cantidad de documentos por atender en un día
 Índice de Cantidad de documentos resueltos al día
 Índice de Cantidad de documentos almacenados en un departamento de archivos
general o dependencias de la institución
 Tiempo promedio en resolver un documento
 Tiempo promedio en transferir un documento al área

450
Casos analizados
 Cantidad de documentos recibidos por día en las áreas
Se realizó un análisis de la cantidad de documentos recibidos por días en las
áreas, teniendo así como resultado lo siguiente:

Gráfico Pre-Test y Post-Test de la Cantidad de documentos recibidos por


día en las áreas.

Antes: El número de documentos recibidos por día en las áreas de 11 a 20


documentos, estaba con un promedio del 19%, siendo esto un problema debido
a que se tenía que esperar a que lleguen los documentos, lo cual hacia que el
tiempo para la solución final del mismo se prolongue. Esto incomodaba para el
usuario.

Después: El número de documentos recibidos por día en las áreas que era de 11
a 20 documentos, había aumentado a un 50%, con lo cual se puede lograr una
mejora notable.

Gráfico 2: Numero de documentos recibidos por día.


NÚMERO DE DOCUMENTOS RECIBIDOS POR
DÍA
ANTES DESPUÉS

90% 81%
80%
70%
60% 50% 50%
50%
40%
30% 19%
20%
10% 0% 0% 0% 0%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

1 a 10 11 a 20 21 a 30
31 a mas
Documentos Documentos Documentos
ANTES 81% 19% 0% 0%
DESPUÉS 50% 50% 0% 0%

En el gráfico muestra como que de un 19% se ha logrado aumentar en 50% el


número de documentos recibidos, siendo esto lo mejor para el proceso de trámite
documentario.

451
 Número de documentos emitidos por día

Se realizó un análisis de la cantidad de documentos que se envían a las áreas por


días, teniendo así como resultado lo siguiente:

Gráfico Pre-Test y Post-Test de la Cantidad de documentos enviados por


día a las demás áreas.

Antes: El número de documentos enviados por día a las demás áreas de 11 a 20


documentos, estaba en un promedio de 17%. Siendo esto un problema, ya que
se estaban derivando muy pocos documentos. Causando una espera en otra área
afectando de manera negativa al usuario

Después: El número de documentos enviados o emitidos por día de un área a


otra es de 11 a 20 documentos, con lo que se logró un aumento de un 38%.

Gráfico 3: Número de documentos emitidos por día


NÚMERO DE DOCUMENTOS EMITIDOS POR
DÍA
ANTES DESPUÉS

90% 83%
80%
70% 62%
60%
50%
38%
40%
30%
17%
20%
10% 0% 0% 0% 0%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

1 a 10 11 a 20 21 a 30
31 a mas
Documentos Documentos Documentos
ANTES 83% 17% 0% 0%
DESPUÉS 62% 38% 0% 0%

En el gráfico muestra como de un 17% se ha logrado aumentar en 38% el número


de documentos enviados a una determinada área, siendo esto una mejora
considerable para el proceso de trámite documentario.

452
 Cantidad de documentos por atender en un día

Se realizó un análisis de la cantidad de documentos por atender en un día


teniendo así como resultado lo siguiente:

Gráfico Pre-Test y Post-Test de la Cantidad de documentos por atender en


un día.

Antes: El número de documentos pendientes por día, se encontraban en un rango


de 21 a 30 documentos pendientes, lo cual estaban en un promedio del 52%
convirtiéndose esto en cuello de botella, generándose una cola excesiva de
documentos en espera.

Después: El número de documentos pendiente por día en las áreas de 21 a 30


documentos, había disminuido de forma satisfactoria a un 16%, esto significó un
gran apoyo para agilizar el proceso.

Gráfico 4: Cantidad de documentos por atender en un día


CANTIDAD DE DOCUMENTOS POR
ATENDER EN UN DÍA.
ANTES DESPUÉS

60%

50%
40%
30%
20%
10%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

1 a 10 11 a 20 21 a 30
31 a mas
Documentos Documentos Documentos
ANTES 10% 35% 52% 3%
DESPUÉS 49% 35% 16% 0%

En el gráfico muestra como que de un 52% se ha logrado disminuir en un 16%


el número de documentos pendientes, siendo esto lo mejor para el proceso de
trámite documentario. Ya con ello se logra reducir de forma considerable el
número de documentos pendientes.

453
 Cantidad de documentos resueltos al día
Se realizó un análisis de la cantidad de documentos resueltos al día, teniendo así
como resultado lo siguiente:

Gráfico Pre-Test y Post-Test de la Cantidad de documentos resueltos al día.

Antes: El número de documentos resueltos al día de 11 a 15 documentos, estaba


con un promedio del 18%, siendo esto un problema que generaba una
acumulación de documentos pendientes.

Después: El número de documentos resueltos al día de 11 a 15 documentos,


había aumentado a un 44%, lo cual generaba que el número de documentos
pendientes disminuya.

Gráfico 5: Cantidad de documentos resueltos al día


CANTIDAD DE DOCUMENTOS RESUELTOS AL
DÍA
ANTES DESPUÉS

50%
40%
30%
20%
10%
0%

6 a 10 11 a 15
1 a 5 Documentos 16 a mas
Documentos Documentos
ANTES 40% 38% 18% 5%
DESPUÉS 8% 31% 44% 18%

En el gráfico muestra como que de un 18% se ha logrado aumentar en 44% el


número de documentos resueltos al día, mejorando así la relación con los
usuarios.

454
 Cantidad de documentos almacenados en un departamento de archivos
general o dependencias de la institución

Se realizó un análisis de la Cantidad de documentos almacenados en un


departamento de archivos general o dependencias de la institución teniendo así
como resultado lo siguiente:

Gráfico Pre-Test y Post-Test de la Cantidad de documentos almacenados en


un departamento de archivos general o dependencias de la institución.

Antes: La Cantidad de documentos almacenados en un departamento de archivos


general o dependencias de la institución era de 63 a más documentos, lo cual
estaba en un promedio del 55%, ocasionando un problema debido a que existe
una gran cantidad de documentos almacenados en un departamento de archivos
general o dependencias de la institución.

Después: La Cantidad de documentos almacenados en un departamento de


archivos general o dependencias de 63 a más documentos, había disminuido a
un 50%. Con esto se redujo el almacenamiento físico de los archivos, lo cual
significo un mejor manejo y control de los documentos.

Gráfico 6: Cantidad de documentos almacenados en un departamento de archivos


general o dependencias
CANTIDAD DE DOCUMENTOS
ALMACENADOS EN UN DEPARTAMENTO DE
ARCHIVOS GENERAL O DEPENDENCIAS
ANTES DESPUÉS
55%
60%
50% 41%
40% 27% 26%
30%
20% 10% 12% 12% 8%
4% 5%
10%
0%

1 a 16 17 a 32 33 a 48 48 a 63
63 a mas
Documentos Documentos Documentos Documentos
ANTES 4% 5% 10% 26% 55%
DESPUÉS 41% 27% 12% 12% 8%

En el gráfico muestra como de un 55% se ha logrado disminuir en un 8% la


Cantidad de documentos almacenados en un departamento de archivos general
o dependencias, siendo esto lo mejor para las áreas debido a que ya no contaran
con mucha documentación física, lo cual esto antes dificultaba llevar un control
adecuado.

455
 Tiempo promedio en resolver un documento
Se realizó un análisis del Tiempo promedio en resolver un documento, teniendo
así como resultado lo siguiente:

Gráfico Pre-Test y Post-Test del Tiempo promedio en resolver un


documento

Antes: El Tiempo en resolver un documento era de 11 a más días, lo cual estaba


en un promedio del 36%, esto afectaba mucho al usuario generando incomodidad
a la esperar de la respuesta de su trámite más de lo previsto.

Después: El Tiempo en resolver un documento de 11 a más días, había


disminuido a un 16%. Esto hacia que la relación con el usuario haya mejorado
de manera satisfecha.

Gráfico 7: Tiempo promedio en resolver un documento


TIEMPO PROMEDIO EN RESOLVER UN
DOCUMENTO
ANTES DESPUÉS

40% 36%
35% 31%
30%
30% 28%
24%
25%
20%
20% 16%
14%
15%
10%
5%
0%
1 a 3 Días 4 a 6 días 7 a 10 días 11 a más días

1 a 3 Días 4 a 6 días 7 a 10 días 11 a más días


ANTES 14% 20% 30% 36%
DESPUÉS 31% 28% 24% 16%

En el gráfico muestra como de un 36% se ha logrado disminuir en un 16% el


Tiempo promedio en resolver un documento. Lo cual significa que se cumplió
con el objetivo, y con esto mejoramos nuestra relaciones entre las áreas y los
usuarios.

456
 Tiempo promedio en transferir un documento al área correspondiente.

Se realizó un análisis del Tiempo promedio en transferir un documento al área


correspondiente teniendo así como resultado lo siguiente:

Gráfico Pre-Test y Post-Test del Tiempo promedio en transferir un


documento al área correspondiente.

Antes: El Tiempo en transferir un documento al área correspondiente de 10 días,


estaba en un promedio del 22%, siendo esto una deficiencia para cada una de las
áreas debido a que su labor se vía retrasada.

Después: El Tiempo en transferir un documento al área correspondiente de 10


días, había disminuido a un 7%. Generando con esto que las áreas agilicen su
trabajo manteniendo satisfecho al usuario.

Gráfico 8: Tiempo promedio en transferir un documento al área correspondiente


TIEMPO PROMEDIO EN TRANSFERIR UN
DOCUMENTO AL ÁREA CORRESPONDIENTE
ANTES DESPUÉS

50% 47%
45%
40%
35%
27% 28%
30% 25% 25%
25% 22%
19%
20%
15%
10% 7%
5%
0%
1 a 3 Días 4 a 6 días 7 a 9 días 10 a más días

1 a 3 Días 4 a 6 días 7 a 9 días 10 a más días


ANTES 25% 25% 28% 22%
DESPUÉS 47% 27% 19% 7%

En el gráfico muestra como de un 22% se ha logrado disminuir en 7% el tiempo


promedio en transferir un documento al área correspondiente, lo cual con esto lo
que hacemos es agilizar el proceso del documento entre las diferentes áreas. Y
con ello lograr resolver el documento en el menor tiempo posible esto mejorando
el proceso de trámite documentario.

457
VI. CONCLUSIONES
Del trabajo de investigación realizado se puede concluir que:

Con el uso del Aplicación Web se pudo ver que el incremento de documentos que
reciben cada una de las áreas por día, para el grupo experimental, en el pre-test se
obtuvo que de 11 a 20 documentos eran lo que se solía recibir, con un porcentaje
de 19%, y en el post-test con un 50%, significando que tiene un efecto en la
aplicación del sistema workflow.

Con respecto al aumento del envió de número de documentos, se logró incrementar


este número, obteniéndose como resultado que en el grupo experimental en el pre-
test se obtuvo que de 20 a 30 documentos solo se envían en un porcentaje del 17%
y en el post-test con un 38%, como se puede ver con la aplicación del sistema
workflow los resultados fueron favorables cumpliéndose dicho objetivo específico.

En cuanto a disminuir el número de documentos pendientes al día, se obtuvo como


resultado del pre-test que los documentos pendientes eran de 21 a 30 con un
porcentaje de 52% y en el post-test con un 16% con la aplicación del sistema
workflow.

Con el uso del Aplicación Web se pudo ver el incremento del número de
documentos resueltos al día, para el grupo experimental, en el pre-test se obtuvo
que de 11 a 15 documentos era el número máximo de documentos resueltos, con un
porcentaje de 18%, y en el post-test con un 44%, cumpliéndose con el objetivo.

Se disminuyó la cantidad de documentos almacenados en un departamento de


archivos general o dependencias de la institución, donde en el pre-test el número
mínimo de documentos almacenados eran de 63 a más documentos, con un
porcentaje de 55% y en el post-test con un porcentaje del 8%.

Con respecto al tiempo para resolver un documento, se logró disminuir, donde en


el pre-test el tiempo en resolver estaba entre 11 a más días, con un 36%, mientras
que el post-test se disminuyó en un 16%. Esto indica que la aplicación web tuvo un
efecto positivo.

Se logró disminuir el tiempo en transferir un documento a las áreas involucradas,


donde en el pre-test el tiempo en transferir un documento era de 10 a más días, con
porcentaje de 22%, mientras que en el post-test los resultados fueron satisfactorios
con un porcentaje de 7%.

En un aspecto más general la presente investigación sirve de base para promover la


mejora continua tanto de la aplicación web (SGD) como de la aplicación de
workflow en otros procesos de la organización logrando la integración con otras
aplicaciones que apoyen la automatización de la secuencia de actividades.

458
VII. REFERENCIAS BIBLIOGRÁFICAS

Beck, k. (2002). Una explicacion de la programacion extrema: aceptar el cambio.


Addison-wesley.
Cockbun, A. (2001). Agile Software Development. Addison-Wesley.
Fowler, M. (2004). Is Design Dead. www.martinfowler.com/articles/designDead.html.
Gutiérrez, J., Escalona, M. J., & M., M. (2001). PRUEBAS DEL SISTEMA EN
PROGRAMACIÓN.
http://www.lsi.us.es/~javierj/investigacion_ficheros/PSISEXTREMA.pdf.
Jeffries, R., Anderson, A., & Hendrickson, C. (2001). Extreme Programming Installed.
Addison-Wesley.
LORCA, J. G. (2006). Sistemas workflow: Funcionamiento y metodología de
implantacion. España: Trea, S.L.
Magg. (1997). Reusing tasks between workflow applications. Wiley.
Robert C. , M. (2002). Continuous Care Vs. Initial Design.
http://www.objectmentor.com/resources/articles/Continuous_Care.pdf.
Stark. (1985). Information payoff: the transformation of work in the electronic. Free
Press.
THE. (1995). Adentrarse en el flujo de trabajo. Datamation , 107.
Ultimus. (1998). An introducction to workFlow automation . Carolina del norte.
v1.1, E. (1998). Especificaciones para el tratamiento de de flujo automatizado.
Recuperado el 1 de octubre de 1998, de
http://www.map.es/csi/pg5e30.htm,pg5e31.htm
Wake, W. (2002). Extreme Programming Explored. Addison-Wesley.
WFM. (1998). Workflow management coalition. Recuperado el 1 de Diciembre de
1999, de www.aiim.org/wfmc/standars/docs/if2v29.pdf

459
VIII. ANEXOS

Anexo 01

ENCUESTA SOBRE EL NIVEL DE EFICIENCIA Y USO DE


LOS PROCESOS DE TRÁMITE DOCUMENTARIO

Objetivo:
Determinar y conocer los aspectos actuales, en cuanto al proceso de trámite documentario
de la Universidad.

Instrucciones:
Con la finalidad de saber el nivel de eficiencia del proceso de trámite documentario y su
nivel de su satisfacción con la misma, se solicita de la manera más atenta su cooperación.
 Marca con un aspa “X” la(s) alternativa(s) que creas conveniente según sea el caso.
 Encuesta dirigida al personal administrativo que labora la Universidad César Vallejo

Preguntas:

1. ¿Cuál es la cantidad de documentos recibidos por día?

 01 a 10 documentos  21 a 30 documentos
 11 a 20 documentos  31 a más documentos

2. ¿Cuál es el número de documentos emitidos por día?

 01 a 10 documentos  21 a 30 documentos
 11 a 20 documentos  31 a más documentos

3. ¿Cuál es la cantidad de documentos por atender en un día?

 01 a 10 documentos  21 a 30 documentos
 11 a 20 documentos  31 a más documentos

4. ¿Cuál es la cantidad de documentos resueltos al día?

 01 a 05 documentos  11 a 15 documentos
 06 a 10 documentos  16 a más documentos

5. ¿Cuál es la cantidad de documentos almacenados en un departamento de


archivos general o dependencias de la institución?

 01 a 16 documentos  48 a 63 documentos
 17 a 32 documentos  64 a más documentos
 33 a 48 documentos

460
6. ¿Cuál es el tiempo promedio en resolver un documento?

 01 a 03 días  07 a 10 días
 04 a 06 días  11 días a más

7. ¿Cuál es el tiempo promedio en transferir un documento al área


correspondiente?

 01 a 03 días  07 a 10 días
 04 a 06 días  11 días a más

461
Anexo 02

ENTREVISTA

La presente entrevista se dirige hacia los administradores de las diferentes áreas y cada
uno tiene el objeto de dar a conocer como se realiza el trámite documentario en esta
entidad.

1. ¿Qué tipo de documentos son los que se manejan en las diferentes áreas?
………………………………………………………………………………………

2. ¿Existen algún tipo de formato para los documentos que se gestiona en las áreas?
………………………………………………………………………………………

3. ¿Utilizan algún tipo de sistema para organizar los documentos que se gestionan?
………………………………………………………………………………………

4. ¿Existen algunas políticas de uso para la creación de documentos?


………………………………………………………………………………………

5. ¿Existen algún tipo de sistema para consultar los expedientes digitalizados?


………………………………………………………………………………………

6. ¿Considera usted que un sistema de tramite documentario interconecte todas las


áreas de la universidad?
………………………………………………………………………………………

7. ¿Cree usted que al ver un sistema de trámite documentario, los trabajadores le


darían un uso adecuado?
………………………………………………………………………………………

8. ¿Existe algún manual para el uso del trámite documentario?


………………………………………………………………………………………

9. ¿Usted considera que sería más adecuado manejar todos sus documentos de manera
virtual?
………………………………………………………………………………………

10. Final mente. ¿Cree usted que un sistema de trámite documentario beneficiaria o
apoyaría a la gestión de documentos en la Universidad Privada César Vallejo?
………………………………………………………………………………………

462
Anexo 03

Gráfico 9: Cantidad de documentos recibidos por día


CANTIDAD DE DOCUMENTOS RECIBIDOS
POR DÍA

90%
81%
80%

70%

60%

50%
40%
30%
19%
20%
10%
0% 0%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

Anexo 04

Gráfico 10: Número de documentos emitidos por día


NÚMERO DE DOCUMENTOS EMITIDOS POR
DÍA

90% 83%
80%

70%

60%

50%
40%
30%
20% 17%

10%
0% 0%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

463
Anexo 05

Gráfico 11: Cantidad de documentos por atender en un día


CANTIDAD DE DOCUMENTOS POR
ATENDER EN UN DÍA

60%
52%
50%

40%
35%

30%

20%
10%
10%
3%
0%
1 a 10 11 a 20 21 a 30 31 a mas
Documentos Documentos Documentos

Anexo 06

Gráfico 12: Cantidad de documentos resueltos al día


CANTIDAD DE DOCUMENTOS RESUELTOS
AL DÍA
40%
40% 38%

35%

30%

25%

20% 18%

15%

10%
5%
5%

0%
1a5 6 a 10 11 a 15 16 a mas
Documentos Documentos Documentos

464
Anexo 07

Gráfico 13: Cantidad de documentos almacenados en un departamento de archivos


general o dependecias
CANTIDAD DE DOCUMENTOS
ALMACENADOS EN UN DEPARTAMENTO DE
ARCHIVOS GENERAL O DEPENDENCIAS

60%
55%

50%

40%

30% 26%

20%

10%
10%
4% 5%

0%
1 a 16 17 a 32 33 a 48 48 a 63 63 a mas
Documentos Documentos Documentos Documentos

Anexo 08

Gráfico 14: Tiempo promedio en resolver un documento


TIEMPO PROMEDIO EN RESOLVER UN
DOCUMENTO
Tiempo

40%
36%
35%
30%
30%

25%
20%
20%
14%
15%

10%

5%
0%
1 a 3 Días 4 a 6 días 7 a 10 días 11 a más días

465
Anexo 09

Gráfico 15: Tiempo promedio en transferir un documento al área correspondiente


TIEMPO PROMEDIO EN TRANSFERIR UN
DOCUMENTO AL ÁREA CORRESPONDIENTE
Tiempo

30% 28%

25% 25%
25%
22%

20%

15%

10%

5%

0%
1 a 3 Días 4 a 6 días 7 a 9 días 10 a más días

466

También podría gustarte