You are on page 1of 179

UNIVERSIDAD TCNICA ESTATAL DE QUEVEDO UNIDAD DE ESTUDIO A DISTANCIA MODALIDAD SEMIPRESENCIAL

CARRERA INGENIERA EN SISTEMAS, SEXTO SEMESTRE - PARALELO ST PROYECTO INTEGRADOR MDULOS: APLICACIN A LA PROGRAMACION - CALCULOS MATEMATICOS FINANCIEROS Y ESTADISTICOS, APLICADOS A LA INFORMATICA,
TEMA: APLICACIN EN VISUAL STUDIO Y SQL PARA LLEVAR REGISTRO DE ROL DE PAGOS PARA EL GOBIERNO AUTONOMO DESCENTRALIZADOS DE VALENCIA.
AUTORES: TATIANA VANESSA SANTILLAN MENA HAROLD ANTONIO JACHO CHICO WASHINGTON FEDERICO TACHON ALENCASTRO

TUTORES: Ing. NORMANDI ROCIO TIRADO RIOS. Ing. CRISTHIAN GABRIEL ZAMBRANO VEGA.

QUEVEDO LOS RIOS ECUADOR 2013 2014

INDICE
i RESUMEN EJECUTIVO ii INTRODUCCIN I ANTECEDENTES 1.1 MISIN 1.2 VISIN 1.3 BENEFICIARIOS II PROBLEMATIZACIN 2.1 PLANTEAMIENTO DEL PROBLEMA 2.2 DELIMITACIN DEL PROBLEMA III OBJETIVOS 3.1 GENERAL 3.2 ESPECFICOS IV JUSTIFICACIN Y FACTIBILIDAD V MARCO TERICO 5.1 SISTEMA DE INFORMACIN 5.1.1 DEFINICIN 5.1.2 IMPORTANCIA 5.2 ROL DE PAGOS 5.3 SUELDO Y SALARIOS 5.4 SUELDO Y REMUNERACIONES 5.4.1 QUE COMPRENDE LA REMUNERACION 5.5 GARANTIAS DE LA REMUNERACIN 5.5.1 IGUALDAD 5.5.2 INTEGRIDAD 5.5.3 OPORTUNIDAD IX XI 72 72 73 73 74 74 75 76 76 76 77 78 78 78 79 79 80 80 81 82 83 83 83

5.5.4 PRIVILEGIO 5.5.5 INEMBARGABILIDAD 5.5.6 IRRENUNCIABILIDAD 5.6 CUANTA Y PAGO 5.7 MONEDA EN CURSO 5.8 DEDUCCIONES LEGALES Y JUDICIALES 5.9 APORTE PERSONAL IESS 5.10 PRSTAMO AL IESS 5.11 RETENCIONES EN LA FUENTE EN RELACIN DE DEPENDENCIA 5.12 ANTICIPOS O PRSTAMOS 5.13 DEDUCCIONES JUDICIALES 5.14 JORNADA DE TRABAJO, DESCANSOS Y DAS FESTIVOS 5.14.1 DE LA JORNADA MXIMA 5.14.2 DE LA JORNADA ESPECIAL 5.14.3 DE LA JORNADA NOCTURNA 5.14.4 LMITE DE JORNADA Y DESCANSO FORZOSOS 5.14.5 DURACIN DEL DESCANSO 5.14.6 TRABAJO EN SBADO Y DOMINGOS 5.14.7 DESCANSO SEMANAL REMUNERADO 5.14.8 PRDIDA DE LA REMUNERACIN 5.14.9 DE LAS FIESTAS CVICAS 5.14.10 PAGO EN CASO DE LICENCIAMIENTO 5.14.11 PROHIBICIN DE TRABAJO 5.15 HORAS SUPLEMENTARIAS Y HORAS EXTRAORDINARIAS 5.16 BENEFICIOS SOCIALES, LIQUIDACIN Y PAGO 5.16.1 DERECHO A LA DCIMA TERCERA REMUNERACIN O BONO NAVIDEO 5.16.2 DERECHO A LA DECIMOCUARTA REMUNERACIN 5.16.3 VACACIONES 5.16.4 LIQUIDACIN PARA PAGO DE VACACIONES 5.16.5 VACACIONES ANUALES IRRENUNCIABLES 5.16.6 FIJACIN PERIODO VACACIONAL 5.16.7 POSTERGACIN DE VACACIONES POR EL EMPLEADOR 5.16.8 ACUMULACIN DE VACACIONES 5.16.9 COMPENSACIN POR VACACIONES

84 84 85 85 86 86 87 87 87 88 88 89 89 89 90 90 90 91 92 92 92 93 93 94 95 95 96 97 98 98 99 99 99 100

II

5.17 FONDOS DE RESERVAS 5.17.1 DERECHO AL FONDO DE RESERVA 5.18 INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA 5.19 CARACTERSTICAS DE LOS ALGORITMOS 5.20 CONCEPTO DE VISUAL STUDIO 5.21 RESEA HISTRICA VISUAL STUDIO 5.22 IDE DE VISUAL BASIC 2012 5.23 PALABRAS RESERVADAS VISUAL BASIC 2012 5.24 TIPOS DE DATOS 5.25 TIPOS DE VARIABLES 5.26 NOMBRES DE LAS VARIABLES 5.27 COMPILADOR DE VISUAL BASIC 5.28 FORMULARIOS 5.29 INSTRUCCIONES BSICAS 5.29.1 IF ELSE 5.29.2 ELSEIF 5.29.3 FOR NEXT 5.29.4 DO WHILE LOOP 5.29.5 FOR EACH 5.29.6 SELECT CASE 5.30 PROCEDIMIENTOS 5.31 FUNCIONES 5.32 CONTROLES COMUNES VISUAL STUDIO 2012 5.32.1 EL PUNTERO DEL MOUSE 5.32.2 BACKGROUNDWORKER 5.32.3 BINDINGNAVIGATOR: 5.32.4 BINDINGSOURCE 5.32.5 BUTTON (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.6 CONTROLES DE FORMULARIOS WINDOWS FORMS POR FUNCIN: 5.32.7 CONTROLES COMPATIBLES CON DIBUJOS PROPIETARIOS INTEGRADOS: 5.32.8 CHECKBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.9 CHECKEDLISTBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.10 COLORDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.11 COMBOBOX (CONTROL, FORMULARIOS WINDOWS FORMS):

100 100 101 102 103 103 104 105 106 107 108 108 108 110 110 110 111 111 111 111 112 112 113 113 114 114 114 114 114 115 115 115 115 115

III

5.32.12 CONTEXTMENU (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.13 CONTEXTMENUSTRIP (CONTROL): 5.32.14 DATAGRID (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.15 DATAGRIDVIEW (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.16 DATETIMEPICKER (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.17 CONTROLES Y COMPONENTES DE CUADROS DE DILOGO (FORMULARIOS WINDOWS FORMS): 5.32.18 DOMAINUPDOWN (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.19 ERRORPROVIDER (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.20 FILEDIALOG (CLASE): 5.32.21 FLOWLAYOUTPANEL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.22 FOLDERBROWSERDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.23 FONTDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.24 CONTROL GROUPBOX (FORMULARIOS WINDOWS FORMS): 5.32.25 HELPPROVIDER (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.26 CONTROLES HSCROLLBAR Y VSCROLLBAR (FORMULARIOS WINDOWS FORMS): 5.32.27 IMAGELIST (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.28 LABEL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.29 LINKLABEL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.30 LISTBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.31 LISTVIEW (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.32 MAINMENU (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.33 MASKEDTEXTBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.34 MENUSTRIP (CONTROL DE FORMULARIOS WINDOWS FORMS): 5.32.35 MONTHCALENDAR (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.36 NOTIFYICON (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.37 NUMERICUPDOWN (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.38 OPENFILEDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.39 PAGESETUPDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.40 CONTROL PANEL (WINDOWS FORMS): 5.32.41 PICTUREBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.42 PRINTDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.43 PRINTDOCUMENT (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.44 PRINTPREVIEWCONTROL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.45 PRINTPREVIEWDIALOG (CONTROL, FORMULARIOS WINDOWS FORMS):

116 116 116 116 117 117 117 117 118 118 118 118 118 119 119 119 119 119 120 120 120 120 121 121 121 121 122 122 122 122 123 123 123 123

IV

5.32.46 PROGRESSBAR (CONTROL DE FORMULARIOS WINDOWS FORMS): 5.32.47 RADIOBUTTON (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.48 RICHTEXTBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.49 SAVEFILEDIALOG (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.50 SOUNDPLAYER (CLASE): 5.32.51 SPLITCONTAINER (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.52 SPLITTER (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.53 STATUSBAR (CONTROL DE FORMULARIOS WINDOWS FORMS): 5.32.54 STATUSSTRIP (CONTROL): 5.32.55 TABCONTROL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.56 TABLELAYOUTPANEL (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.57 TEXTBOX (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.58 TIMER (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.59 BARRA DE HERRAMIENTAS (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.60 TOOLSTRIP (CONTROL DE FORMULARIOS WINDOWS FORMS): 5.32.61 TOOLSTRIPCONTAINER (CONTROL): 5.32.62 TOOLSTRIPPANEL (CONTROL): 5.32.63 INFORMACIN GENERAL DEL CONTROL TOOLSTRIPPROGRESSBAR: 5.32.64 TOOLSTRIPSTATUSLABEL (CONTROL): 5.32.65 TOOLTIP (COMPONENTE, FORMULARIOS WINDOWS FORMS): 5.32.66 TRACKBAR (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.67 TREEVIEW (CONTROL, FORMULARIOS WINDOWS FORMS): 5.32.68 WEBBROWSER (CONTROL, WINDOWS FORMS): 5.32.69 CONTROLES DE FORMULARIOS WINDOWS FORMS USADOS PARA MOSTRAR OPCIONES: VI MARCO METODOLGICO 6.1 METODOLOGA DE LA INVESTIGACIN 6.2 MATERIALES Y EQUIPOS 6.3 TIPOS DE INVESTIGACIN 6.3.1 CAMPO 6.3.2 BIBLIOGRFICA 6.3.3 MTODOS. 6.3.4 TCNICAS DE INVESTIGACIN

124 124 124 124 124 125 125 125 125 126 126 126 126 126 127 127 127 128 128 128 128 128 129 129 130 130 130 131 131 131 131 132

6.3.4 1 OBSERVACIN VII RESULTADOS 7.1 CLASES 7.1.1 CLASS CLSGEOGRAFICO 7.1.2 CLASS CLSSQLACCESODATOS 7.1.3 CLASS CLSVALIDARDATOS 7.2 FORMULARIOS 7.2.1 FRMCREACIONCARGOS 7.2.2 FRMCREARRUBROS 7.2.3 FRMCREARUSUARIOS 7.2.4 FRMDEPARTAMENTOS 7.2.5 FRMDETALLENOMINA 7.2.6 FRMEDIFICACIONES 7.2.7 FRMENCABEZADOSNOMINA 7.2.8 FRMENLISTANOMINA 7.2.9 FRMENLISTARRUBROS 7.2.10 FRMGASTOSDEDUCIBLES 7.2.11 FRMKARDEXROLES 7.2.12 FRMLISTADOFUNCIONARIOS 7.2.13 FRMLOGIN 7.2.14 FRMMODIFICARFUNCIONARIO 7.2.15 FRMNOMINA 7.2.16 FRMNUEVOFUNCIONARIO 7.2.17 FRMPARAMETROSLEGALES 7.2.18 FRMSECCIONES 7.2.19 FRMTABLASALARIAL 7.2.20 FRMTIPOSRUBROS 7.2.21 FRMTIPOSROL 7.2.22 MDIPRINCIPAL 7.3 MODULOS 7.3.1 MODULE MDGENERAL

132 133 133 133 134 137 140 140 143 147 150 152 158 159 160 163 165 169 170 175 178 180 185 189 191 192 194 195 196 199 199

VI

VIII CONCLUSIONES IX RECOMENDACIONES X BIBLIOGRAFIA Y ANEXOS 10.1 BIBLIOGRAFA BSICA 10.2 FUENTE PRIMARIA 10.1 ANEXOS 10.1.1 FORMA DE CALCULOS FONDOS RESERVAS, XIII XIV SUELDO 10.1.2 TASAS DE APORTACIN AL IESS HASTA MARZO 2014 10.2 INTERFASE DEL PROGRAMA 10.2.1 MENU PRINCIPAL (SISTEMA ROL DE PAGO) 10.2.2 PARAMETROS LEGALES 10.2.3 FUNCIONARIOS 10.2.4 TIPOS DE RUBROS 10.2.5 ENLISTAR RUBROS 10.2.6 CARGOS 10.2.7 TABLA SALARIAL 10.2.8 TIPOS DE ROL 10.2.9 DEPARTAMENTOS 10.2.10 EDIFICIOS 10.2.11 SECCIONES 10.2.12 CREACION DE USUARIOS 10.2.13 CREACION DE ENCABEZADOS NMINAS 10.2.14 SELECCIN DE NMINAS 10.2.15 LISTA DE FUNCIONARIOS 10.2.16 DETALLE NOMINA 10.2.17 NOMINA 10.2.18 GENERAR NOMINA 10.2.19 GENERAR NOMINA OK 10.2.20 REPORTE NOMINA MENSUAL 10.2.21 REPORTE INDIVIDUAL 10.2.22 MATRIZ DE DATOS

200 201 202 202 202 206 206 207 210 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 230 231 232

VII

10.4 GLOSARIO

233

VIII

RESUMEN EJECUTIVO

Visual Studio es un conjunto de herramientas de desarrollo basadas en componentes y tecnologas para compilar aplicaciones eficaces de alto rendimiento, optimizado para el diseo, desarrollo e implementacin de soluciones empresariales. Llevado de la mano con Microsoft SQL Server el mismo que se considera un sistema para la gestin de bases de datos producido por Microsoft basado en el modelo relacional, la conexin entre los dos nos permitirn crear una herramienta eficaz de acuerdo al objetivo principal del presente proyecto integrador.

La satisfaccin de los estudiantes, debe empezar por la transformacin de una sociedad organizada cumpliendo la misin y visin de la institucin, por ende en esta propuesta su objetivo principal ser contribuir mediante la descripcin de la metodologa utilizada tales como induccin, deduccin, anlisis, y descripcin llegar a las conclusiones y recomendaciones de la Aplicacin en visual studio y sql para llevar registro de rol de pagos para el gobierno autnomo descentralizado de Valencia.

IX

EXECUTIVE SUMMARRY

Visual Studio is a set of development tools based on components and technologies to build effective applications of high performance, optimized for the design, development and implementation of business solutions. Taken together with Microsoft SQL Server which is considered a system for the management of databases produced by Microsoft based on the relational model, the connection between the two will allow us to create an effective tool in accordance with the main objective of the present project.

The satisfaction of students, must start with the transformation of a society fulfilling the mission and vision of the institution, therefore this proposal their main objective shall be to contribute through la description of the methodology used such as induction, deduction, analysis, and description to reach the conclusions and recommendations of the "application in visual studio and sql" to keep record of role of payments for the decentralized autonomous Government of Valencia.

ii

INTRODUCCIN

Los constantes cambios e innovaciones que rodean al mundo en la actualidad el xito de una empresa o cualquier tipo de negocio por pequeo que este sea, est reflejado en la administracin, siendo la base fundamental para que exista una adecuada organizacin, direccin, y control de la misma.

Un control eficiente sirve para disear y plantear, acciones u objetivos mediante mtodos o propuestas a futuro, acorto, mediano o largo plazo segn la amplitud que lo caracterice. La creciente automatizacin de las empresas y a la mayor competencia que enfrentan los productos en el mercado, ha trado consigo efectos en el modo en que las empresas conducen sus negocios, exigiendo a las sociedades automatizarse para seguir creciendo, los comercios se tornan ms competitivos. Lo que a su vez genera un impacto profundo en el rea de desarrollos de sistemas.

En el Ecuador se utiliza este lenguaje de herramientas y sistemas de gestin, en los planes de estudios preliminares de programacin, control de flujos y descomposicin de los programas, en funciones y conceptos de programacin orientada a objetos.

En nuestro entorno la unidad de estudios a distancia de la Universidad Tcnica Estatal de Quevedo modalidad semipresencial lo implementa dentro de su malla curricular orientado a la enseanza terica prctica de sus estudiantes de la carrera de sistemas dentro del proceso de los mdulos de Aplicacin en visual studio y sql para llevar registro de rol de pagos para el gobierno autnomo descentralizado de Valencia.

XI

Esta investigacin consta de la siguiente estructura. En su Primer Captulo se encuentra los antecedentes de la investigacin, en el Segundo Capitulo consta de la problematizacin, a travs de su planteamiento, formulacin, delimitacin. En el Tercer Captulo los Objetivos, en el Cuarto Capitulo la justificacin y factibilidad del proyecto. En el Quinto Captulo el respectivo marco terico, y para concluir el Sexto, Sptimo, Octavo, Noveno y Dcimo Capitulo, el marco metodolgico, respectivamente. resultados, conclusiones, recomendacin y bibliografa

XII

ANTECEDENTES

La universidad Tcnica Estatal de Quevedo, su unidad de Estudios a Distancia modalidad semipresencial, la carrera de Ingeniera en Sistemas paralelo ST y los desarrolladores de este trabajo de investigacin, buscan automatizar el sistema de rol de pagos en el gobierno municipal autnomo y descentralizado del cantn Valencia, debido a que su control actual es una hoja de Excel, el cual en corto plazo colapsara por el incremento de informacin. Y de esta manera entregar un control de rol de pagos eficaz, proactivo, sencillo y ligero.

Para tal efecto los autores de la presente propuesta de solucin bajo la tutora de los ingenieros Normandi Roco Tirado Ros, y Cristhian Gabriel Zambrano Vega; realizaran una Aplicacin en Visual Studio y SQL para llevar registro de rol de pagos para el gobierno autnomo descentralizado de Valencia. Por la defensa del proyecto integrador de finalizacin del mdulo.

1.1 Misin

Implementar un programa desarrollado en Visual studio y SQL Server, para el registro de rol de pagos del gobierno autnomo descentralizados de Valencia.

72

1.2 Visin

Desarrollar nuestra capacidad de anlisis lgico y pensamiento ordenado, en la bsqueda y gestin de la solucin del problema con la creacin de un programa que permita alcanzar los estndares del buen vivir

institucionalizada en nuestra constitucin.

1.3 Beneficiarios

El potencial beneficiario ser el departamento de talento humano del gobierno municipal autnomo descentralizado de Valencia

73

II PROBLEMATIZACIN

2.1 Planteamiento del Problema

A nivel mundial los avances tecnolgicos son determinantes para que las instituciones y/o usuarios avancen o se detengan en su objetivo, hoy en da para ser competitivos deben estar a la vanguardia de la tecnologa, por ende a cualquier situacin social a la que pertenezcan requieren como soporte dicha estructura.

El rol de pagos, tambin denominado nmina, es un registro que realiza toda empresa para llevar el control de los pagos y descuentos que debe realizar a sus empleados consideran cada dos mes, de manera una general, en

este documento se

secciones,

para registrar los

ingresos como sueldos, horas extras, comisiones, bonos, etc. y otra para registrar los descuentos como aportes para el seguro social, cuotas por prstamos concedidos por la compaa, anticipos, etc.

Esta propuesta de solucin se enfocar en la implementacin de una aplicacin que permita el registro de los datos del rol de pagos de una entidad pblica de acuerdo a los estndares de autorizacin por usuarios.

74

El planteamiento se lo realiza debido a la necesidad y problemtica que genera un control manual de informacin hasta tal punto llegar en un futuro no muy lejano colapsar por el incremento del mismo.

Lo expuesto lleva a generar como pregunta general de investigacin la siguiente:

Cmo desarrollar una aplicacin en Visual studio y SQL para el respectivo ingreso de los datos de rol de pagos, del proyecto de solucin en un tiempo aproximado de 22 das?

2.2 Delimitacin del Problema

Este trabajo investigativo se circunscribe en la ciudad de Valencia ubicada Av. 13 de Diciembre 624 - 628 y 2 de Agosto, Valencia Los Ros Ecuador.

75

III OBJETIVOS

3.1 General

Desarrollar una aplicacin en Visual Studio y Sql, para llevar el registro de rol de pagos para el Gobierno Autnomo Descentralizado de Valencia.

3.2 Especficos

Analizar el proceso e informacin vigente en el registro de datos de los roles de pagos del municipio.

Disear la base de datos en SQL Server 2008

Desarrollar el software mediante la herramienta Visual Studio 2010.

Efectuar las pruebas pertinentes

76

IV JUSTIFICACIN Y FACTIBILIDAD

Los motivos por los cuales se lleva a cabo esta investigacin, se origina en la necesidad de parte del municipio de Valencia de contar con un programa que permita entregar los reportes de manera gil y oportuna a sus usuarios, debido a que por el momento su control es manual y hojas de Excel.

Justificndose esta propuesta en el desarrollo de una aplicacin utilizando el lenguaje y herramientas ya descritas que permitirn dar solucin a los inconvenientes de hoy buscando la solucin del maana con un sistema robusto, de buen desempeo, alta calidad, fiabilidad y confiabilidad.

Siendo factible el presente proyecto, debido a que se cuenta con la informacin relevante del departamento respectivo, el apoyo y gestin del estudiante Harold Jacho servidor pblico empleado del municipio.

77

V MARCO TERICO

5.1 Sistema de Informacin

5.1.1 Definicin

Wiky (2013), Un sistema de informacin es un conjunto de elementos orientados al tratamiento y administracin de datos e informacin, organizados y listos para su uso posterior, generados para cubrir una necesidad u objetivo; dichos elementos formarn parte de alguna de las siguientes categoras: Personas, Datos, Actividades o tcnicas de trabajo, Recursos materiales en general (generalmente recursos informticos y de comunicacin, aunque no necesariamente).

Todos estos elementos interactan para procesar los datos (incluidos los procesos manuales y automticos) y dan lugar a informacin ms elaborada, que se distribuye de la manera ms adecuada posible en una determinada organizacin, en funcin de sus objetivos.

Habitualmente el trmino se usa de manera errnea como sinnimo de sistema de informacin informtico, en parte porque en la mayora de los casos los recursos materiales de un sistema de informacin estn constituidos casi en su totalidad por sistemas informticos.

Estrictamente hablando, un sistema de informacin no tiene por qu disponer de dichos recursos (aunque en la prctica esto no suela ocurrir).

78

Se podra decir entonces que los sistemas de informacin informticos son una subclase o un subconjunto de los sistemas de informacin en general.

5.1.2 Importancia

La importancia de tener una comprensin bsica de los sistemas de informacin para entender cualquier otra rea funcional en la empresa, por eso es importante tambin, tener una cultura informtica en nuestras organizaciones que permitan y den las condiciones necesarias para que los sistemas de informacin logren los objetivos citados anteriormente.

Muchas veces las organizaciones no han entrado en la etapa de cambio haca la era de la informacin sin saber que es un riesgo muy grande de fracaso debido a las amenazas del mercado y su incapacidad de competir.

5.2 Rol de pagos

Cdigo Trabajo (2013), El rol de pagos, tambin denominado nmina, es un registro que realiza toda empresa para llevar el control de los pagos y descuentos que debe realizar a sus empleados cada mes, de manera general, en este documento se consideran dos secciones, una

para registrar los ingresos como sueldos, horas, extras, comisiones, bonos, etc. y otra para registrar los descuentos como aportes para el seguro social, cuotas por prstamos concedidos por la compaa, anticipos, etc.

79

5.3 Sueldo y Salarios

Cdigo Trabajo (2013), Salario es el estipendio que paga el empleador al obrero en virtud del contrato de trabajo. Sueldo es la remuneracin que por igual concepto corresponde al empleado.

El Salario se paga por jornadas de labor y en tal caso se llama jornal; por unidades obra o por tareas. El Sueldo, por meses, sin suprimir los das no laborables.

5.4 Sueldo y Remuneraciones

Cdigo Trabajo

(2013),

La remuneracin es uno de los elementos

fundamentales del contrato de trabajo. Pagarla, en forma completa y oportuna, es la primera obligacin del empleador frente al trabajador y, simultneamente, es el derecho bsico de ste. Frente al trabajo desempeado por el trabajador, el pago de la remuneracin es la contraprestacin esencial de la relacin laboral (Art. 42 CT).

Adems, debe ser justa, con un salario digno que cubra al menos las necesidades bsicas de la persona trabajadora, as como las de su familia; ser inembargable, salvo para el pago de pensiones por alimentos. Es obligacin del Estado fijar y revisar anualmente el salario bsico establecido en la ley, de aplicacin general y obligatoria (Art. 328 CRE). 80

Los sueldos, salarios y remuneracin bsica mnima unificada se estipularn libremente, pero en ningn caso podrn ser inferiores a los mnimos legales, de conformidad con lo prescrito en el artculo 117 del Cdigo de Trabajo. (Actualmente el sueldo bsico es $340,00

TRESCIENTOS CUARENTA DLARES).

5.4.1 Que comprende la Remuneracion

Cdigo Trabajo (2013), El sistema legal respecto a remuneraciones ha ido cambiando en los ltimos aos, estableciendo nuevos conceptos de pago. Resulta por lo tanto esencial determinar cules de esos rubros forman parte de la remuneracin permanente del trabajador. Este sealamiento es importante para efectos legales como los siguientes:

Pago de los aportes al IESS; Pago del fondo de reserva; Clculo de las indemnizaciones y bonificaciones a las que el trabajador podra tener derecho en determinadas circunstancias; Pago de vacaciones no gozadas; Pensiones de jubilacin;

Para todos estos efectos, el Art. 95 del Cdigo del Trabajo considera remuneracin del trabajador solamente:

Su sueldo o salario bsico;

81

Lo

percibido

en

dinero

por

trabajos

extraordinarios

suplementarios; Las comisiones u otras participaciones en beneficios establecidas contractualmente; Cualquier otra retribucin accesoria que tenga el carcter de normal en la empresa; Lo que el trabajador reciba del empleador en servicios o en especies, siempre que tengan idntico carcter de normalidad en la empresa (Art. 95 CT).

Otros ingresos no se consideran como parte de la remuneracin ordinaria y permanente del trabajador:

Las remuneraciones decimotercera, decimocuarta; Los viticos y subsidios ocasionales; El porcentaje legal de utilidades de la empresa que se deben distribuir a los trabajadores; Los servicios de orden social (Art. 95 CT, inc. 2).

5.5 Garantias de la remuneracin

Cdigo Trabajo

(2013),

Las Garantas de las remuneraciones se

determinan por los siguientes factores.

82

5.5.1 Igualdad

Un principio bsico del rgimen laboral establece que a igual trabajo corresponde igual remuneracin, sin distincin de sexo, raza, nacionalidad o religin; aunque la especializacin y la experiencia o prctica en la ejecucin de un trabajo se deben tomar en cuenta para los efectos de la remuneracin (Art. 79 CT).

5.5.2 Integridad

Es as mismo un principio bsico del Derecho Laboral que la remuneracin del trabajador no puede ser disminuida ni descontada sino en los casos y con las limitaciones establecidas legalmente. Por la importancia que tiene este punto, ms adelante nos referiremos a l en detalle.

Tmese en cuenta, adems, como ya se ha indicado, que la remuneracin comprende tambin los das de descanso obligatorio, con las salvedades hechas respecto a la "semana integral", en el caso de los salarios (Art. 93 CT).

5.5.3 Oportunidad

El sueldo o salario del trabajador debe ser pagado oportunamente. Esto quiere decir una vez cumplidos los plazos que se han establecido en el contrato: un mes como mximo, cuando se trata de sueldos, y una semana 83

como mximo cuando se trata de salarios. La falta de puntualidad en el pago (debemos entender que sea reiterada) es una de las causas para que el trabajador pueda pedir la terminacin del contrato mediante "visto bueno", con lo cual tendr derecho a indemnizaciones como si se tratara de un despido intempestivo (Art. 173 CT).

Debe tomarse en cuenta, adems, que si el empleador no hubiere pagado las remuneraciones al trabajador y ste ha debido recurrir a la accin judicial para reclamarlas, el empleador deber pagar el triple de las remuneraciones adeudadas del ltimo trimestre (Art. 94 CT).

5.5.4 Privilegio

Lo que el empleador adeude al trabajador por salarios o sueldos constituye crdito privilegiado de primera clase, con preferencia aun sobre los crditos hipotecarios. Esto significa que los trabajadores deben ser preferidos en el pago de sus remuneraciones frente a cualesquiera otros acreedores que pudieran presentarse reclamando del empleador el pago de las obligaciones contradas con ellos; aun en el caso de que estas obligaciones estuvieren garantizadas con hipotecas (Art. 88 CT).

5.5.5 Inembargabilidad

As mismo, entre las garantas de la remuneracin se incluye su inembargabilidad, esto es que los acreedores del trabajador no pueden ejercer sobre ella el mecanismo judicial del embargo, para hacerse pago de sus crditos. 84

Hay dos excepciones a este principio: s procede el embargo para el pago de pensiones alimenticias adeudadas y la retencin por crditos contrados con el Instituto Ecuatoriano de Seguridad Social (IESS), especialmente en el caso de prstamos hipotecarios y quirografarios concedidos por tal entidad (Art. 91 CT) (Art. 82 LSS).

5.5.6 Irrenunciabilidad

En general, los derechos de los trabajadores son irrenunciables; esto quiere decir que el trabajador no puede voluntariamente aceptar una disminucin o supresin de cualquiera de los derechos que le corresponden. Esto comprende por supuesto los derechos relativos a la remuneracin, la cual debe ser pagada al trabajador con las especificaciones determinadas por la ley y las establecidas en el contrato, que no pueden desmejorar las condiciones legales. Sin embargo, la irrenunciabilidad no se opone a que se pueda llegar a una transaccin sobre el alcance o monto concreto de los derechos laborales (Art. 4 CT).

5.6 Cuanta y pago

Cdigo Trabajo (2013), Las partes pueden libremente estipular la cuanta de los sueldos y salarios a percibir por parte del trabajador; pero en ningn caso se podr pactar montos que sean inferiores a los sueldos o salarios bsicos unificados legalmente establecidos. De esta manera la libertad contractual para determinar la cuanta de la remuneracin queda limitada

85

por la fijacin de sueldos y salarios bsicos unificados realizada a travs de distintos mecanismos legales.

5.7 Moneda en curso

Cdigo Trabajo

(2013),

Las remuneraciones que deban pagarse en legal, y se

efectivo se pagarn exclusivamente en moneda de curso

prohbe el pago con pagars, vales, cupones o en cualquier otra forma que se considere representativa de la moneda de curso legal, y que excedan a perodos de un mes.

La autoridad competente podr permitir o prescribir el pago de la remuneracin por cheque contra un banco o por giro postal, cuando este modo de pago sea de uso corriente o sea necesario a causa de circunstancias especiales, cuando un contrato colectivo o un laudo arbitral a si lo establezca, o cuando, en defecto de dichas disposiciones, el trabajador interesado preste su consentimiento. Tampoco ser disminuida ni descontada sino en la forma autorizada por la ley.

5.8 Deducciones legales y judiciales

Cdigo Trabajo (2013), Normalmente en el rol de pagos se encuentran las siguientes deducciones:

86

Aporte personal al IESS, prstamos al IESS, retenciones en la fuente en relacin de dependencia, anticipos, prstamos, comisariatos, asociaciones, sindicato, multas, otros descuentos.

5.9 Aporte personal IESS

Cdigo Trabajo (2013), Para calcular los aportes para la Seguridad Social (IESS), segn la Ley, cada trabajador o empleado debe estar asegurado, el patrono aporta con una parte y otra parte se debe descontar al trabajador, en el caso de Ecuador, se descuenta el 9,35% del total de ingresos. Por decreto a partir del mes de marzo el descuento es de 9.45%

5.10 Prstamo al IESS

Cdigo Trabajo (2013), Para descontar a las personas que han realizado Prstamos Quirografarios, las cuotas que corresponda en el mes, estos prstamos son otorgados por el IESS, Instituto Ecuatoriano de Seguridad Social.

5.11 Retenciones en la fuente en relacin de dependencia

El empleador es agente de retencin en la fuente del impuesto a la renta que sus trabajadores deban pagar por los ingresos que reciben por su trabajo en relacin de dependencia. 87

5.12 Anticipos o Prstamos

Cdigo Trabajo

(2013),

Para descontar los anticipos y prstamos

otorgados por la empresa, por lo general los empleados solicitan un valor a mitad del mes en calidad de anticipo, otros en cambio deben un monto mayor por prstamo solicitado a la compaa y por este concepto se les debe descontar en el rol la cuota pactada.

5.13 Deducciones Judiciales

Cdigo Trabajo (2013), Si el empleador no cancela los dcimos a sus trabajadores y no justifiquen el cumplimiento de esta obligacin estipulada en el Cdigo del Trabajo se realizarn las visitas por parte de los Inspectores de Trabajo, y en el caso de que se verifique incumplimiento de sta disposicin, el Inspector de Trabajo puede imponer una multa de hasta tres salarios bsicos unificados.

Mientras que el Director Regional de Trabajo puede imponer una multa de hasta veinte salarios, sin perjuicio de que los patronos adems paguen a sus empleados el dcimo cuarto o tercer sueldo

88

5.14 Jornada de trabajo, descansos y das festivos

5.14.1 De la Jornada Mxima

Cdigo Trabajo (2013), La jornada mxima de trabajo ser de 8 horas diarias, de manera que no exceda de cuarenta horas semanales, salvo disposicin de la Ley en contrario.

El tiempo mximo de trabajo efectivo en el subsuelo ser de seis horas diarias y solamente por concepto de horas suplementarias, extraordinarias o de recuperacin, podr prolongarse por una hora ms, con la remuneracin y los recargos correspondientes.

5.14.2 De la Jornada Especial

Cdigo Trabajo (2013), Las comisiones sectoriales y las comisiones de trabajo determinarn las industrias en que no sea permitido el trabajo durante la jornada completa, y fijarn el nmero de horas de labor.

La jornada de trabajo para los adolescentes, no podr exceder de seis horas diarias durante un periodo mximo de cinco das a la semana.

89

5.14.3 De la Jornada Nocturna

Cdigo Trabajo (2013), La jornada nocturna, entendindose por tal la que se realiza entre las 19H00, y las 06H00, del da siguiente, podr tener la misma duracin y dar derecho a igual remuneracin que la diurna, aumentada en un veinticinco por ciento.

5.14.4 Lmite de jornada y descanso forzosos

Cdigo Trabajo (2013), Las jornadas de trabajo obligatorio no pueden exceder de cinco en la semana, o sea de cuarenta horas hebdomadarias.

Los das sbados y domingos sern de descanso forzoso, y si en razn de las circunstancias, no pudiere interrumpirse el trabajo en tales das, se designar otro tiempo igual de la semana para el descanso, mediante acuerdo entre empleador y trabajadores.

5.14.5 Duracin del Descanso

Cdigo Trabajo (2013), El descanso de que trata el artculo anterior lo gozarn a la vez todos los trabajadores, o por turnos si as lo exigiere la ndole de las labores que realicen. Comprender un mnimo de cuarenta y ocho horas consecutivas. 90

5.14.6 Trabajo en sbado y domingos

Cdigo Trabajo

(2013),

Las circunstancias por las que, accidental o

permanentemente, se autorice el trabajo en los das sbados y domingos, no podrn ser otras que stas:

1. Necesidad de evitar un grave dao al establecimiento

explotacin amenazado por la inminencia de un accidente; y, en general por caso fortuito o fuerza mayor que demande atencin impostergable.

Cuando esto ocurra no es necesario que preceda autorizacin del Inspector de trabajo, pero el empleador quedar obligado a comunicrselo dentro de las 24 horas siguientes al peligro o accidente, bajo multa que ser impuesta de conformidad con lo previsto en el artculo 628 del Cdigo de Trabajo, que impondr el Inspector de Trabajo.

En estos casos, el trabajo deber limitarse al tiempo estrictamente necesario para atender al dao o peligro.

2. La condicin manifiesta de que la industria, explotacin o labor no pueda interrumpirse por la naturaleza de las necesidades que satisfacen, por razones de carcter tcnico o porque su interrupcin irrogue perjuicios al inters pblico.

91

5.14.7 Descanso semanal remunerado

Cdigo Trabajo (2013), El descanso semanal forzoso ser pagado con la cantidad equivalente a la remuneracin ntegra, o sea de dos das, de acuerdo con la naturaleza de la labor o industria.

En caso de trabajadores a destajo, dicho pago se har tomando como base el promedio de la remuneracin devengada de lunes a viernes; y, en ningn caso, ser inferior a la remuneracin mnima.

5.14.8 Prdida de la remuneracin

Cdigo Trabajo

(2013),

El trabajador que faltare injustificadamente a

media jornada continua de trabajo en el curso de la semana, tendr derecho a la remuneracin de 6 das, y el trabajador que faltare injustificadamente a una jornada completa de trabajo en la semana, solo tendr derecho a la remuneracin de cinco jornadas.

5.14.9 De las fiestas cvicas

Cdigo Trabajo (2013), Adems de los sbados y domingos, son das de descanso obligatorio los siguientes: 1 de Enero, Viernes Santo, 1 de Mayo, 24 de Mayo, 10 de Agosto, 9 de Octubre, 2 de Noviembre, 3 de Noviembre, 25 de Diciembre, Lo son tambin para las respectivas circunstancias territoriales y ramas de trabajo, los sealados en las correspondientes leyes especiales. 92

Estas jornadas se considerar como realizada, para los efectos del pago de la remuneracin, siempre que no coincida con los das de descanso

semanal. La disposicin del inciso anterior comprende tambin a los trabajadores de destajo, de acuerdo a lo previsto en el artculo 93 del Cdigo de trabajo.

5.14.10 Pago en caso de licenciamiento

Cdigo Trabajo

(2013),

Cuando por razn de cualquier fiesta no

determinada en el artculo 65 de este Cdigo, el empleador licenciare a los trabajadores, estar obligado a pagarles la remuneracin de ese da, como si el trabajo se hubiere realizado, a menos que entre empleador y trabajador hubiere mediado convenio expreso para la suspensin del trabajo, pues en tal caso nada deber el primero al segundo por este concepto.

5.14.11 Prohibicin de trabajo

Cdigo Trabajo

(2013),

En los das de descanso obligatorio queda

prohibido el trabajo que se haga por cuestin propia y pblicamente en fbricas, talleres, casas de comercio y dems establecimientos de trabajo, sin ms excepciones que las determinadas en artculo 52 del Cdigo de Trabajo y en las regulaciones legales sobre el trabajo en boticas, farmacias y drogueras

93

5.15 Horas suplementarias y horas extraordinarias

Cdigo Trabajo (2013), Por convenio escrito entre las partes, la jornada de trabajo podr exceder del lmite fijado en los artculos 47 y 49 del Cdigo de Trabajo, siempre que se proceda con autorizacin del Inspector del Trabajo y se observen las siguientes prescripciones:

1. Las horas suplementarias no podrn exceder de cuatro en un da, ni de doce en la semana.

2. Si tuvieren lugar durante el da o hasta las 24H00, el empleador pagar la remuneracin correspondiente a cada una de las horas suplementarias con ms un cincuenta por ciento de recargo. Si dichas horas estuvieren comprendidas entre las 24H00 y las 06H00, el trabajador tendr derecho a un ciento por ciento de recargo. Para calcularlo se tomar como base la remuneracin que corresponda a la hora de trabajo diurno.

3. En el trabajo a destajo se tomarn en cuenta para el recargo de la remuneracin las unidades de obra ejecutadas durante las horas excedentes de las ocho obligatorias; en tal caso, se aumentar la remuneracin correspondiente a cada unidad en un cincuenta por ciento o en un ciento por ciento, respectivamente, de acuerdo a la regla anterior. Para calcular este recargo, se tomara como base el valor de la unidad de la obra realizada durante el trabajo diurno y.

94

4. El trabajo que se ejecutare el sbado o el domingo deber ser pagado con el 100% de recargo.

5.16 Beneficios sociales, liquidacin y pago

5.16.1 Derecho a la dcima tercera remuneracin o bono navideo

Cdigo Trabajo

(2013),

Los trabajadores tienen derecho a que sus

empleadores les paguen, hasta el veinticuatro de diciembre de cada ao, una remuneracin equivalente a la doceava parte de las remuneraciones que hubieren percibido durante el ao calendario.

La remuneracin a que se refiere el inciso anterior se calcular de acuerdo a lo dispuesto en el artculo 95 del Cdigo de Trabajo.

Exclusin de la decimotercera remuneracin prevista en el artculo anterior no se considerar como parte de la remuneracin anual para el efecto del pago de aportes al Instituto Ecuatoriano de Seguridad Social, ni para la determinacin del fondo de reserva y jubilacin, ni para el pago de las indemnizaciones y vacaciones prescritas en este Cdigo. Tampoco se tomar en cuenta para el clculo del impuesto a la renta del trabajo.

Estos valores corresponden a una doceava parte del total de ingresos del empleado, se calcula desde el 1 de diciembre del ao anterior, hasta el 30

95

de noviembre del ao en que se procede al pago, se cancela hasta el 23 de diciembre de cada ao.

5.16.2 Derecho a la decimocuarta remuneracin

Cdigo Trabajo (2013), Los trabajadores percibirn, adems, sin perjuicio de todas las remuneraciones a las que actualmente tienen derecho, una bonificacin adicional anual equivalente a una remuneracin bsica mnima unificada para los trabajadores en general y una remuneracin bsica mnima unificada de los trabajadores del servicio domstico,

respectivamente, vigentes a la fecha de pago, que ser pagada hasta el 15 de abril en las regiones de la Costa e Insular; y, hasta el 15 de septiembre en las regiones de la Sierra y Oriente. Para el pago de esta bonificacin se observar el rgimen escolar adoptado en cada una de las

circunscripciones territoriales.

La bonificacin a la que se refiere el inciso anterior se pagar tambin a los jubilados por sus empleadores, a los jubilados del IESS, pensionistas del Seguro Militar y de la Polica Nacional.

Si un trabajador, por cualquier

causa, saliere o fuese separado de su

trabajo antes de las fechas mencionadas, recibir la parte proporcional de la dcima cuarta remuneracin al momento del retiro o separacin.

Este bono equivale a la doceava parte de un salario mnimo vital general (SMVG) y es una ayuda econmica que recibe cada empleado para el 96

ingreso de sus hijos cuando inician clases, se paga en abril para la regin costa y en agosto para la regin sierra, cabe anotar que este bono reciben todos por igual, independientemente de si tienen hijos o no.

5.16.3 Vacaciones

Cdigo Trabajo

(2013),

Todo

trabajador tendr derecho a gozar

anualmente de un perodo ininterrumpido de quince das de descanso, incluidos los das no laborables. Los trabajadores que hubieren prestado servicios por ms de cinco aos en la misma empresa o al mismo empleador, tendrn derecho a gozar adicionalmente de un da de vacaciones por cada uno de los aos excedentes o recibirn en dinero la remuneracin correspondiente a los das excedentes.

El trabajador recibir por adelantado la remuneracin correspondiente al perodo de vacaciones.

Los trabajadores menores de diecisis aos tendrn derecho a veinte das de vacaciones y los mayores de diecisis y menores de dieciocho, lo tendrn a dieciocho das de vacaciones anuales.

Los das de vacaciones adicionales por antigedad no excedern de quince, salvo que las partes, mediante contrato individual o colectivo, convinieren en ampliar tal beneficio.

97

El derecho al goce del beneficio por antigedad de servicios rige desde el 2 de noviembre de mil novecientos sesenta y cuatro.

El pago corresponde a la 24ava. Parte del total de ingresos, se cancela antes de que el trabajador salga en goce de sus vacaciones anuales.

5.16.4 Liquidacin para pago de vacaciones

Cdigo Trabajo (2013), La liquidacin para el pago de vacaciones se har en forma general y nica, computando la veinticuatroava parte de lo percibido por el trabajador durante un ao completo de trabajo, tomando en cuenta lo pagado al trabajador por horas ordinarias, suplementarias y extraordinarias de labor y toda otra retribucin accesoria que haya tenido el carcter de normal en la empresa en el mismo perodo, como lo dispone el artculo 95 de este Cdigo.

Si el trabajador fuere separado o saliere del trabajo sin haber gozado de vacaciones, percibir por tal concepto la parte proporcional al tiempo de servicios.

5.16.5 Vacaciones anuales irrenunciables

Cdigo Trabajo (2013), Las vacaciones anuales constituyen un derecho irrenunciable que no puede ser compensado con su valor en dinero. Ningn contrato de trabajo podr terminar sin que el trabajador con derecho a 98

vacaciones las haya gozado, salvo lo dispuesto en el artculo 74 de este Cdigo.

5.16.6 Fijacin periodo vacacional

Cdigo Trabajo (2013), En el contrato se har constar el perodo en que el trabajador comenzar a gozar de vacaciones. No habiendo contrato

escrito o tal sealamiento, el empleador har conocer al trabajador, con tres meses de anticipacin, el perodo en que le conceder la vacacin.

5.16.7 Postergacin de vacaciones por el empleador

Cdigo Trabajo

(2013),

Cuando se trate de labores tcnicas o de

confianza para las que sea difcil reemplazar al trabajador por corto tiempo, el empleador podr negar la vacacin en un ao, para acumularla

necesariamente a la del ao siguiente. En este caso, si el trabajador no llegare a gozar de las vacaciones por salir del servicio, tendr derecho a las remuneraciones correspondientes a las no gozadas, con el ciento por ciento de recargo.

5.16.8 Acumulacin de vacaciones

Cdigo Trabajo

(2013),

El trabajador podr no hacer uso de las

vacaciones hasta por tres aos consecutivos, a fin de acumularlas en el cuarto ao. 99

5.16.9 Compensacin por vacaciones

Cdigo Trabajo

(2013),

Si el trabajador no hubiere gozado de las

vacaciones tendr derecho al equivalente de las remuneraciones que correspondan al tiempo de las no gozadas, sin recargo. La liquidacin se efectuar en la forma prevista en el artculo 71 de este Cdigo.

5.17 Fondos de Reservas

5.17.1 Derecho al fondo de reserva

Cdigo Trabajo (2013), Todo trabajador que preste servicios por ms de un ao tiene derecho a que el empleador le abone una suma equivalente a un mes de sueldo o salario por cada ao completo posterior al primero de sus servicios. Estas sumas constituirn su fondo de reserva o trabajo capitalizado.

El trabajador no perder este derecho por ningn motivo. La determinacin de la cantidad que corresponda por cada ao de servicio se har de acuerdo con lo dispuesto en el artculo 95 del Cdigo de Trabajo.

A este fondo tiene derecho todo empleado cuya permanencia en una misma empresa sea superior a un ao; es decir gana a partir del segundo ao y corresponde a la doceava parte del total de ingresos, se calcula desde el 1 de julio del ao anterior, hasta el 30 de junio del ao en que se procede al

100

pago, se paga hasta el 15 de septiembre y equivale a la doceava parte del total de ingresos.

5.18 Introduccin a la Programacin Estructurada

Fundamentos de Informtica, (2012).

Para realizar un proceso en la

computadora se le debe suministrar al procesador un algoritmo adecuado, en la computadora el algoritmo ha de expresarse de una forma que recibe el nombre de programa, un programa se escribe en un lenguaje de programacin, y a la actividad programa se llama Programacin. de expresar un algoritmo en forma de

Un algoritmo se puede definir como una secuencia de instrucciones que representan un modelo de solucin para determinado tipo de problemas; Esas instrucciones son las operaciones que debe realizar la computadora.

Grupo de instrucciones que realizadas en orden conducen a obtener la solucin de un problema. En esencia, todo problema se puede describir por medio de un algoritmo.

Los algoritmos son independientes de los lenguajes de programacin. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje diferente de programacin. El algoritmo es la infraestructura de cualquier solucin, escrita en cualquier lenguaje.

101

5.19 Caractersticas de los algoritmos

Fundamentos de Informtica, (2012).

Preciso. Definirse de manera rigurosa, sin dar lugar a ambigedades.

Definido. Si se sigue un algoritmo dos veces, se obtendr el mismo resultado.

Finito. Debe terminar en algn momento.

Debe tener cero o ms elementos de entrada, es decir, debe tener por lo menos una instruccin que ordene averiguar el dato o los datos.

Debe producir un resultado. Los datos de salida sern los resultados de efectuar las instrucciones. Los datos de entrada pueden ser ninguno, pero los de la salida deben ser alguno o algunos.

Se concluye que un algoritmo debe ser suficiente y breve , es decir, no exceder en las instrucciones ni quedarse corto. Entre dos algoritmos que lleven a un mismo objetivo, siempre ser mejor el ms corto.

102

No ambiguo

5.20 Concepto de Visual Studio

Microsoft.com/visualstudio/esn, (2013). Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en ingls) para sistemas operativos Windows. Soporta varios lenguajes de programacin tales como Visual C++, Visual C#, Visual J#, y Visual Basic .NET, al igual que entornos de desarrollo web como ASP.NET. Aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, as como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versin .NET 2002). As se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, pginas web y dispositivos mviles.

5.21 Resea Histrica Visual Studio

En 1964, John Kemeny y Thomas Kurtz se propusieron crear una variante del lenguaje de programacin denominado BASIC (Beginners All-Purpose Symbolic Instruction Code, Cdigo de instrucciones simblicas para principiantes orientado a todo propsito).

Si bien ya haba en el mercado varias versiones de BASIC, la generada en Dartmouth College por Kemeny y Kurtz fue la que ms se populariz. 103

BASIC lleg para reducir de una manera notable los tiempos de aprendizaje y de escritura de un programa para computadoras. As, gracias a la visin de futuro de sus propulsores, muchos estudiantes pudieron desarrollar aplicaciones en tiempo rcord, algo muy valioso para esa poca.

Al momento de disear el lenguaje, sus creadores tomaron como filosofa ocho principios que deban destacar a BASIC por sobre los dems:

1. Ser fcil de usar. 2. Ser un lenguaje de propsito general. 3. Permitir la incorporacin de caractersticas avanzadas por expertos, priorizando su facilidad para principiantes. 4. Gozar de interactividad. 5. Ofrecer claros mensajes de error. 6. Brindar rpida respuesta en programas pequeos. 7. No requerir que los usuarios tengan conocimientos sobre hardware. 8. Alejar al usuario de la complejidad del sistema operativo.

5.22 IDE de Visual Basic 2012

El IDE agrupa todo lo que necesitamos para trabajar dentro del entorno de desarrollo de Visual Basic 2012.

1. Mens: agrupa las funciones de personalizacin del IDE, la ayuda, la visualizacin de las ventanas contenedoras de herramientas, el acceso a propiedades, y la funcin de compilacin de proyectos. 104

2. Barra de herramientas: en ella se pueden agrupar los principales botones equivalentes a las funciones ms utilizadas de los mens. La barra principal incluye las funciones de iniciar un nuevo proyecto, guardar, agregar uno o ms objetos al proyecto, compilar y depurar, entre otras. 3. Cuadro de herramientas: agrupa los controles que permiten disear la interfaz grfica de las aplicaciones (botones, cajas de texto, grilla de datos, etc.). Algunos controles pueden no estar visibles al momento de ejecutar nuestro software. 4. Editor de cdigo: es el rea de trabajo donde escribimos las sentencias que ejecutar el programa para funcionar. 5. Explorador de soluciones: en l se listarn todos los archivos y

recursos internos y externos que componen un proyecto. 6. Ventana de propiedades: desde ella podemos asignar el nombre a formularios y controles, y ajustar las propiedades de cada uno de ellos, la posicin en pantalla, las fuentes y los colores, entre otras caractersticas.
7. Ventana de inmediato: aqu veremos en modo depuracin los valores

asignados a variables o a las propiedades de nuestros controles y objetos.


8. Lista de errores: la lista de errores, advertencias y mensajes nos

mantendr informados sobre las equivocaciones cometidas al escribir el cdigo y que el motor de depuracin detecte. Evala datos de variables o espacios de nombre no declarados, entre otras advertencias.

5.23 Palabras reservadas Visual Basic 2012

Las palabras reservadas tienen un significado gramatical especfico para el lenguaje que estamos utilizando y no podrn ser empleadas como otro 105

identificador del lenguaje. En ellas se agrupan constantes, funciones, tipos de datos, variables y sentencias; no pueden ser utilizadas como nombres de otros elementos de programacin, por ejemplo, variables o

procedimientos.

AddHandler, AddressOf, Alias, And, AndAlso, As, Boolean,

ByRef,

Byte,

ByVal, Call, Case, Catch, CBool, CByte, CChar, CDate, CDec, CDbl, Char, CInt, Class, CLng, CObj, Const, Continue, CSByte, CShort, CSng, CStr, CType, CUInt, CULng, CUShort, Date, Decimal, Declare, Default, Delegate, Dim,DirectCast, Do, Double, Each, Else, ElseIf, End, EndIf, Enum, Erase, Error, Event, Exit, False, Finally, For, Friend, Function, Get, GetType, Global, GoSub, GoTo, Handles, If, Implements, Imports, In, Inherits, Integer, Interface, Is, IsNot, Let, Lib, Like, Long, Loop, Me, Mod, Module, MustInherit, MustOverride, MyBase, MyClass, Namespace, Narrowing, New, Next, Not, Nothing, NotInheritable, NotOverridable, Object, Of, On, Operator, Option, Optional, Or, OrElse, Overloads, Overridable, Overrides, ParamArray, Partial, Private, Property, Protected, Public, RaiseEvent, ReadOnly, ReDim, REM, RemoveHandler, Resume, Return, SByte, Select, Set, Shadows, Shared, Short, Single, Static, Step, Stop, String, Structure, Sub, SyncLock, Then, Throw, To, True, Try, TryCast, TypeOf, Variant, Wend, UInteger, ULong, UShort, Using, When, While, Widening, With, WithEvents, WriteOnly, Xor, #Const, #Else, #ElseIf, #End, #If, -, &, &=, *, *=, /, /=, \, \=, ^, ^=, +

5.24 Tipos de Datos

Visual Basic clasifica los tipos de datos en dos grupos principales: los Tipos por valor y los Tipos por referencia. Los primeros almacenan datos que pueden ser accedidos de manera directa, y que, a su vez, se organizan en 106

subgrupos: los Tipos de datos nativos de .NET, los Tipos de datos creados por el programador y los Tipos de datos enumerados.

Visual Basic 2012 permite emplear la mayora de los tipos de datos que estaban disponibles en sus versiones anteriores, salvo casos como el tipo de datos Variant, que dej de existir cuando Visual Basic se transform en un lenguaje orientado a objetos, y fue reemplazado por Object. Podemos entender esto mejor a travs de algunos ejemplos.

El tipo de datos Object proviene del espacio de nombres System.Object, y en l se puede almacenar cualquier tipo de valor. Como este, el resto de los tipos de datos bsicos se encuentran definidos dentro del namespace System, lo que hace que hereden directamente de System.Object.

5.25 Tipos de Variables

Las variables son espacios de memoria reservados para alojar un determinado tipo de valor que ser utilizado durante la ejecucin de una aplicacin. Dicho valor almacenado puede cambiar si es necesario, en cualquier momento que lo dispongamos. Las variables tambin cuentan con un modificador de acceso, que determina su alcance dentro de nuestro proyecto.

Dim: Indica que la variable puede ser usada dentro de una estructura de control o clase donde haya sido creada. Private: La variable podr ser usada en una clase o mdulo donde fue creada. 107

Public: La variable ser accesible dentro de la solucin donde fue declarada. Friend: Este modificador es similar al anterior, y se restringe solo al proyecto al que pertenece.

5.26 Nombres de las variables

Todo nombre de variable debe comenzar con una letra, no con un nmero, y tampoco pueden quedar espacios intermedios dentro de l. Es una buena prctica asignar al nombre, como primera letra, la misma del tipo de datos que vamos a declarar. Por ejemplo, Dim strNotas as String, sTotal as single.

5.27 Compilador de Visual Basic

En Visual Basic, un Analizador de sintaxis se ejecuta en segundo plano todo el tiempo, y revisa constantemente el cdigo que escribimos. Por ejemplo, si llega a detectar un error tan comn como la asignacin de un valor a una variable que an no fue creada, nos dar algunas

sugerencias para corregirlo y no permitir su ejecucin.

5.28 Formularios

Esta rea de trabajo se denomina formulario (Form). Los formularios son objetos del tipo contenedor, ya que en ellos se distribuye toda la interfaz de 108

nuestras aplicaciones, las cuales interactuarn mediante eventos o entrada de datos con los usuarios que las utilicen.

Siendo el formulario un objeto que oficia de ventana contenedora dentro de Windows. Dispone de propiedades, eventos y mtodos que permiten potenciar su uso al mximo.

Name: Especifica el nombre del formulario. Text: Especifica el ttulo de la ventana. BackColor: Especifica el color del formulario. ControlBox: Especifica si el formulario tiene un cuadro de men. Enabled: Especifica si el formulario habilita la funcin de sus controles contenidos o no. Font: Especifica la fuente predefinida del formulario y todos los controles que este contenga. Icon: Especifica un icono distintivo. Location: Especifica las coordenadas X e Y en pantalla donde aparecer. MaximizeBox: Especifica si tiene un botn para maximizarlo. MinimizeBox: Especifica si tiene un botn para minimizarlo. MaximunSize: Especifica el tamao mximo (ancho y largo) que tendr. MinimunSize: Especifica el tamao mnimo (ancho y largo) que tendr. Opacity: Especifica su grado de opacidad. ShowInTaskBar: Especifica si se mostrar en la barra de tareas de Windows. WindowState: maximizado. Especifica si se inicia minimizado, normal o

109

5.29 Instrucciones Bsicas

Todo lenguaje de programacin posee instrucciones bsicas, que son las necesarias para que el programa cumpla su ciclo de procesamiento de datos y entrega de resultados. Al principio de este captulo hablamos de algoritmos, y dijimos que est compuesto por estas rdenes que permiten llevar a cabo una o ms tareas.

5.29.1 If Else

A instruccin IF permite determinar si una condicin se cumple o no, y sobre esa base, ejecutar otra orden; if siempre va acompaada por THEN, que es la que indica la accin a ejecutar segn.

A su vez, podemos agregar un segundo actor, denominado ELSE, que permite establecer qu ocurre si lo anterior no cumple la condicin. Con la misma podremos ejecutar otra orden si es que la primera no se ejecut.

5.29.2 ElseIf

Se denomina ELSEIF a una condicin que se anida dentro de if, con el fin tener ms de una posible alternativa para procesar otro cdigo.

110

5.29.3 For Next

La sentencia FOR crea un bucle que va desde un valor mnimo hasta el mximo Especificado, ejecutando el cdigo que tenga en su interior. Asimismo FOR puede contener otras instrucciones condicionales en su interior; Para ejecutar correctamente la instruccin For, debemos especificar un valor inicial y un valor final a la sentencia.

5.29.4 Do While Loop

Do while es una estructura repetitiva que permite crear un bucle que se ejecutar mientras una condicin sea cierta o no cambie su valor.

5.29.5 For Each

Hemos utilizado For Each cuando trabajamos con colecciones. Esta sentencia crea un bucle que interacta con determinados valores y devuelve una referencia a ellos.

5.29.6 Select Case

Esta sentencia se asimila a If Else, aunque le agrega la posibilidad de evaluar ms de una condicin al mismo tiempo y ejecutar una accin sobre cada una de ellas.

111

5.30 Procedimientos

Los procedimientos se componen de una serie de instrucciones o algoritmos que se ejecutan de manera consecutiva con un principio y un fin. Cada objeto que compone nuestro proyecto contiene procedimientos internos vinculados a sus eventos para que realicen determinadas acciones.

Los procedimientos nos facilitan tambin dividir nuestro programa en porciones pequeas de cdigo que nos permiten comprender mejor qu es lo que hacen. A su vez, son reutilizables; es decir, podemos crear un procedimiento y usarlo en distintas partes de un programa sin tener que repetir el cdigo. Un procedimiento puede ser declarado de distintas maneras: Public, Private y Friend.

5.31 Funciones

Las funciones son iguales a los procedimientos, con la diferencia de que ejecutan su cdigo interno y deben devolver un resultado. Dicho resultado puede ser de cualquier tipo de dato: String, Boolean, Integer, Double, y otros. Al igual que los procedimientos, las funciones pueden recibir parmetros adicionales o no.

Las Funciones son instrucciones que encapsulan un conjunto de lneas de cdigo para ser invocadas las veces que se requieran durante la ejecucin del programa. Los procedimientos SI devuelven un valor y por lo tanto 112

deben declararse como las variables. Las funciones se identifican con la expresin reservada:

Por ejemplo: MsgBox es una funcin por que devuelve un objeto de tipo: MsgBoxResult. Un ejemplo de una funcin construida por el usuario: FunctionSumaValores (ByVal X As Integer, ByVal Y As Integer) As Integer Las funciones requieren de argumentos o parmetros con los cuales realizan los correspondientes procesos de ejecucin. Estos van encerrados en parntesis. Una funcin se invoca con sus propios parmetros.

5.32 Controles Comunes Visual Studio 2012

Breve descripcin de los controles comunes en visual Studio 2012.

5.32.1 El puntero del mouse

El puntero del mouse, al que a veces se denomina cursor, es un mapa de bits que especifica un punto de foco en la pantalla para la entrada de datos proporcionados por el usuario a travs del mouse.

Este tema proporciona informacin general sobre el puntero del mouse en formularios Windows Forms y describe algunas formas de modificarlo y controlarlo.

113

5.32.2 BackgroundWorker

Permite que el formulario o control ejecute operaciones de forma asincrnica.

5.32.3 BindingNavigator:

Proporciona la interfaz de usuario (IU) de navegacin y manipulacin para controles que se enlazan a datos.

5.32.4 BindingSource

Encapsula un origen de datos para enlazarlo a controles.

5.32.5 Button (Control, formularios Windows Forms):

Presenta un botn estndar en el que el usuario puede hacer clic para realizar acciones.

5.32.6 Controles de formularios Windows Forms por funcin:

Enumera y describe los controles de formularios Windows Forms basados en NET Framework. 114

5.32.7 Controles compatibles con dibujos propietarios integrados:

Describe cmo modificar aspectos de la apariencia de un control que no estn disponibles mediante las propiedades.

5.32.8 CheckBox (Control, formularios Windows Forms):

Indica si una condicin est activa o inactiva.

5.32.9 CheckedListBox (Control, formularios Windows Forms):

Muestra una lista de elementos con una casilla junto a cada uno de ellos. 5.32.10 ColorDialog (Componente, formularios Windows Forms):

Permite que el usuario seleccione un color de una paleta en un cuadro de dilogo preconfigurado y que agregue colores personalizados a la paleta.

5.32.11 ComboBox (Control, formularios Windows Forms):

Muestra datos en un cuadro combinado desplegable.

115

5.32.12 ContextMenu (Componente, formularios Windows Forms):

Proporciona a los usuarios un men de fcil acceso con los comandos de uso ms frecuente asociados al objeto seleccionado. Aunque el control ContextMenuStrip viene a reemplazar y a agregar funcionalidad al control ContextMenu de las versiones anteriores, ContextMenu se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si as lo desea.

5.32.13 ContextMenuStrip (Control):

Representa un men contextual. Aunque el control ContextMenuStrip viene a reemplazar y a agregar funcionalidad al control ContextMenu de las versiones anteriores, ContextMenu se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si as lo desea.

5.32.14 DataGrid (Control, formularios Windows Forms):

Muestra datos organizados en formato de tabla procedentes de un conjunto de datos y permite actualizar el origen de datos.

5.32.15 DataGridView (Control, formularios Windows Forms):

Proporciona un sistema flexible y ampliable para mostrar y editar datos en formato de tabla. 116

5.32.16 DateTimePicker (Control, formularios Windows Forms):

Permite al usuario seleccionar un solo elemento de una lista de fechas y horas.

5.32.17 Controles y componentes de cuadros de dilogo (formularios Windows Forms):

Describe un conjunto de controles que permite a los usuarios llevar a cabo interacciones estndar con la aplicacin o el sistema.

5.32.18 DomainUpDown (Control, formularios Windows Forms):

Muestra cadenas de texto que un usuario puede examinar y seleccionar.

5.32.19 ErrorProvider (Componente, Formularios Windows Forms):

Muestra informacin de error al usuario de forma no intrusiva.

117

5.32.20 FileDialog (Clase):

Proporciona funcionalidad de clase base para los cuadros de dilogo de archivos.

5.32.21 FlowLayoutPanel (Control, formularios Windows Forms):

Representa un panel que dispone dinmicamente su contenido en posicin horizontal o vertical. 5.32.22 FolderBrowserDialog Forms): (Componente, Formularios Windows

Muestra una interfaz con la que los usuarios pueden buscar y seleccionar un directorio o crear uno nuevo.

5.32.23 FontDialog (Componente, formularios Windows Forms):

Expone las fuentes actualmente instaladas en el sistema.

5.32.24 Control GroupBox (formularios Windows Forms):

Proporciona una agrupacin identificable para otros controles.

118

5.32.25 HelpProvider (Componente, formularios Windows Forms):

Asocia un archivo de Ayuda HTML a una aplicacin basada en Windows.

5.32.26 Controles HScrollBar y VScrollBar (formularios Windows Forms):

Permiten la navegacin por una lista de elementos o un gran volumen de informacin; ste puede ser de forma horizontal o vertical dentro de una aplicacin o control.

5.32.27 ImageList (Componente, formularios Windows Forms):

Muestra imgenes en otros controles.

5.32.28 Label (Control, formularios Windows Forms):

Muestra texto que no puede ser modificado por el usuario.

5.32.29 LinkLabel (Control, formularios Windows Forms):

Permite agregar vnculos de tipo Web a aplicaciones de Windows Forms.

119

5.32.30 ListBox (Control, formularios Windows Forms):

Permite a los usuarios seleccionar uno o ms elementos de una lista predefinida.

5.32.31 ListView (Control, formularios Windows Forms):

Muestra una lista de elementos con iconos, al estilo del Explorador de Windows.

5.32.32 MainMenu (Componente, formularios Windows Forms):

Muestra un men en tiempo de ejecucin. Aunque el control MenuStrip reemplaza y agrega funcionalidad al control MainMenu de las versiones anteriores, MainMenu se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

5.32.33 MaskedTextBox (Control, formularios Windows Forms):

Restringe el formato de los datos proporcionados por el usuario en formularios.

120

5.32.34 MenuStrip (Control de formularios Windows Forms):

Proporciona un sistema de mens para formularios. Aunque el control MenuStrip reemplaza y agrega funcionalidad al control MainMenu de las versiones anteriores, MainMenu se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

5.32.35 MonthCalendar (Control, formularios Windows Forms):

Muestra una intuitiva interfaz grfica para que los usuarios vean y establezcan informacin de fechas.

5.32.36 NotifyIcon (Componente, formularios Windows Forms):

Muestra iconos para procesos que se ejecutan en segundo plano y que, de otro modo, no tendran interfaz de usuario.

5.32.37 NumericUpDown (Control, formularios Windows Forms):

Muestra nmeros que un usuario puede examinar y seleccionar.

121

5.32.38 OpenFileDialog (Componente, formularios Windows Forms):

Permite que los usuarios abran archivos mediante un cuadro de dilogo preconfigurado.

5.32.39 PageSetupDialog (Componente, formularios Windows Forms):

Establece los detalles de impresin de la pgina a travs de un cuadro de dilogo preconfigurado.

5.32.40 Control Panel (Windows Forms):

Proporciona una agrupacin identificable para otros controles y permite su desplazamiento.

5.32.41 PictureBox (Control, formularios Windows Forms):

Muestra grficos en formato de mapa de bits, GIF, JPEG, metarchivo o icono.

122

5.32.42 PrintDialog (Componente, formularios Windows Forms):

Selecciona una impresora, elige las pginas que se van a imprimir y determina otros valores de configuracin relacionados con la impresin.

5.32.43 PrintDocument (Componente, formularios Windows Forms):

Establece las propiedades que describen qu se va a imprimir e imprime el documento en aplicaciones basadas en Windows.

5.32.44 PrintPreviewControl (Control, formularios Windows Forms):

Permite crear un componente o cuadro de dilogo PrintPreview propio en lugar de utilizar la versin preconfigurada.

5.32.45 PrintPreviewDialog (Control, formularios Windows Forms):

Muestra un documento tal como aparecer cuando se imprima.

123

5.32.46 ProgressBar (Control de formularios Windows Forms):

Indica grficamente el progreso de una accin hacia su finalizacin.

5.32.47 RadioButton (Control, formularios Windows Forms):

Presenta al usuario un conjunto de dos o ms opciones excluyentes entre s.

5.32.48 RichTextBox (Control, formularios Windows Forms):

Permite que los usuarios escriban, muestren y manipulen texto con formato.

5.32.49 SaveFileDialog (Componente, formularios Windows Forms):

Selecciona los archivos que se van a guardar y el lugar en el que se guardarn.

5.32.50 SoundPlayer (Clase):

Permite incluir con facilidad sonidos en las aplicaciones.

124

5.32.51 SplitContainer (Control, formularios Windows Forms):

Permite al usuario cambiar el tamao de un control acoplado.

5.32.52 Splitter (Control, formularios Windows Forms):

Permite al usuario cambiar el tamao de un control acoplado (.NET Framework versin 1.x).

5.32.53 StatusBar (Control de formularios Windows Forms):

Muestra informacin de estado relacionada con el control que tiene el foco. Aunque el control StatusStrip reemplaza y ampla al control StatusBar respecto a las versiones anteriores, StatusBar se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

5.32.54 StatusStrip (Control):

Representa un control de barra de estado de Windows. Aunque el control StatusStrip reemplaza y ampla al control StatusBar respecto a las versiones anteriores, StatusBar se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

125

5.32.55 TabControl (Control, formularios Windows Forms):

Muestra mltiples fichas que pueden contener imgenes u otros controles.

5.32.56 TableLayoutPanel (Control, formularios Windows Forms):

Representa un panel que dispone dinmicamente su contenido en una cuadrcula que se compone de filas y columnas.

5.32.57 TextBox (Control, formularios Windows Forms):

Permite que el usuario proporcione en varias lneas datos que se puedan editar.

5.32.58 Timer (Componente, formularios Windows Forms):

Provoca un evento a intervalos regulares.

5.32.59 Barra de herramientas (Control, formularios Windows Forms):

Muestra mens y botones de mapa de bits que activan comandos. Puede ampliar las funciones del control y modificar su apariencia y

126

comportamiento. Aunque el control

ToolStrip

reemplaza

y agrega

funcionalidad al control ToolBar de las versiones anteriores, ToolBar se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

5.32.60 ToolStrip (Control de formularios Windows Forms):

Crea barras de herramientas y mens personalizados en las aplicaciones de Windows Forms. Aunque el control ToolStrip reemplaza y agrega funcionalidad al control ToolBar de las versiones anteriores, ToolBar se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, si se desea.

5.32.61 ToolStripContainer (Control):

Proporciona paneles a cada lado de un formulario para acoplar, compartir espacio y organizar los controles ToolStrip y un panel

ToolStripContentPanel para los controles tradicionales.

5.32.62 ToolStripPanel (Control):

Proporciona un panel para acoplar, compartir espacio y organizar controles ToolStrip.

127

5.32.63 Informacin general del control ToolStripProgressBar:

Indica grficamente el progreso de una accin hacia su finalizacin. ToolStripProgressBar est contenido normalmente en StatusStrip.

5.32.64 ToolStripStatusLabel (Control):

Representa un panel de un control StatusStrip.

5.32.65 ToolTip (Componente, formularios Windows Forms):

Muestra texto cuando el usuario apunta a otros controles.

5.32.66 TrackBar (Control, formularios Windows Forms):

Permite la navegacin por un gran volumen de informacin o el ajuste visual de una configuracin numrica.

5.32.67 TreeView (Control, formularios Windows Forms):

Muestra una jerarqua de nodos que se puede expandir o contraer. 128

5.32.68 WebBrowser (Control, Windows Forms):

Hospeda pginas Web y proporciona recursos de exploracin Web de Internet a la aplicacin.

5.32.69 Controles de formularios Windows Forms usados para mostrar opciones:

Describe un conjunto de controles que se utiliza para proporcionar a los usuarios una lista de opciones entre las que elegir.

129

VI MARCO METODOLGICO

6.1 Metodologa de la investigacin

El presente trabajo se lo efectu en el Gobierno Autnomo Descentralizado de Valencia, cuya actividad principal es servir a sus conciudadanos, el mismo que tuvo una duracin de 22 das.

6.2 Materiales y Equipos

Detalle

Cantidad

Materiales Lapiceros Lpiz portaminas Resmas de Papel Hardware Computador core 2 duo Impresora Hp Deskjet 2050 Software Sistema operativo Windows 8 Microsoft office 2013 Lenguaje de Consulta Estructurado SQL SERVER 2008 Lenguaje de Programacin Visual Basic .Net 2010 1 1 1 1 1 1 5 1 4

130

6.3 Tipos de investigacin

6.3.1 Campo

Se realiz esta investigacin de campo en la oficina de Talento humano del GAD-VALENCIA Cantn Valencia provincia de Los Ros, con este tipo de investigacin se logr conocer los flujos de procesos de la misma y as recopilar datos ms transcendentes.

6.3.2 Bibliogrfica

Se revis documentos bibliogrficos como libros, y todo material que permiti reforzar la propuesta investigativa y tener el sustento terico necesario para la solucin del problema planteado.

6.3.3 Mtodos.

Se aplicaron los siguientes mtodos:

Inductivo, porque se analiz factores a considerar en el estudio o la aplicacin de un plan de mejora que contribuya a brindar un servicio satisfactorio a los usuarios.

Deductivo, donde detallamos la estructura para su futura aplicacin. 131

Analtico-Sinttico,

porque

este

mtodo

hizo

posible

la

comprensin de todos los hechos, factibilidad y justificacin del problema, etc.

Descriptivo- Sistmico, observacin actual de los fenmenos y casos, procurando la interpretacin racional.

6.3.4 Tcnicas De Investigacin La tcnica ms factible para la elaboracin de esta investigacin fue mediante la conversacin directa con el gerente de talento humano GADVALENCIA.

6.3.4 1 Observacin La observacin es una tcnica que consisti en observar atentamente el fenmeno, hecho o caso, tomar informacin y registrarla para su posterior anlisis, la misma que se utiliz durante todas las fases de diseo del Sistema y de la Base de Datos.

132

VII RESULTADOS

7.1 Clases

7.1.1 Class clsGeografico


Public Class clsGeografico Public objAccesoADatos As clsSQLAccesoDatos Public SQLQuery As String Public Sub New(_objAccesoADatos As clsSQLAccesoDatos) objAccesoADatos = _objAccesoADatos End Sub 'Public Sub LlenarPais(ByRef cbPais As ComboBox) ' objAccesoADatos.LlenarComboBox("select id, nombre as CampoMostrar from TbPais " & _ ' "order by id", cbPais) 'End Sub Public Sub LlenarProvincias(cbprovincia As ComboBox) SQLQuery = "Select id, nombre as CampoMostrar from TBProvincia Order by Nombre" objAccesoADatos.LlenarComboBox(SQLQuery, cbProvincia) End Sub Public Sub LlenarCantones(cbProvincia As ComboBox, ByRef cbCanton As ComboBox) If Not IsNumeric(cbProvincia.SelectedValue.ToString) Then Exit Sub SQLQuery = "Select id, nombre as CampoMostrar from TbCanton Where IDProvincia=" & cbProvincia.SelectedValue.ToString & " Order by Nombre" objAccesoADatos.LlenarComboBox(SQLQuery, cbCanton) End Sub Public Sub LlenarParroquias(cbCanton As ComboBox, ByRef cbParroquia As ComboBox) If Not IsNumeric(cbCanton.SelectedValue.ToString) Then Exit Sub SQLQuery = "Select id, nombre as CampoMostrar from TbParroquia Where IDCanton=" & cbCanton.SelectedValue.ToString & " Order by Nombre" objAccesoADatos.LlenarComboBox(SQLQuery, cbParroquia) End Sub End Class

133

7.1.2 Class clsSQLAccesoDatos

Public Class clsSQLAccesoDatos Dim objCnn As SqlConnection Dim objCmd As SqlCommand Dim objDR As SqlDataReader Dim objDA As SqlDataAdapter Dim objDS As DataSet Dim TB As DataTable Public Sub New(Servidor As String, BD As String) 'Consctructor de la Clase objCnn = New SqlConnection("Data Source=" & Servidor & ";Initial Catalog=" & BD & ";Integrated Security=True") End Sub Public Function AbrirConexion() As Boolean Try objCnn.Open() Return True Catch ex As SqlException MsgBox("Error al Conectar a la BD " & ex.Message, MsgBoxStyle.Critical) End Try Return False End Function Public Function CerrarConexion() As Boolean Try objCnn.Close() Return True Catch ex As SqlException MsgBox("Error al Cerrar la Conexin a la BD " & ex.Message, MsgBoxStyle.Critical) End Try Return False End Function Public Sub LlenarComboBox(SQLQuery As String, ByRef Cb As ComboBox) Try objDA = New SqlDataAdapter(SQLQuery, objCnn) objDS = New DataSet objDA.Fill(objDS) Cb.DataSource = objDS.Tables(0) Cb.DisplayMember = "CampoMostrar" Cb.ValueMember = "ID" Catch ex As SqlException MsgBox("Error al Llenar ComboBox: " & ex.Message, MsgBoxStyle.Critical) End Try End Sub 'Mtodo que ejecuta SQL (Insert,Delete,Updates) Public Function EjecutarSQL(SQL As String) As Integer EjecutarSQL = 0 Try 'Ejecutar Setencia SQL INSERT sobre la Base de Datos objCmd = New SqlCommand(SQL, objCnn)

134

EjecutarSQL = objCmd.ExecuteNonQuery() Catch er As SqlException 'Validando cualquier error de Conexin BD MsgBox("Error al Ejecutar SQL. Desc " & er.Message, MsgBoxStyle.Critical) End Try End Function Public Function LlenarDataSet(SQL As String, ByRef ds As DataSet) As Boolean Try objDA = New SqlDataAdapter(SQL, objCnn) ds = New DataSet objDA.Fill(ds) LlenarDataSet = True Catch ex As SqlException MsgBox("Error al Llenar DataTable " & ex.Message, MsgBoxStyle.Critical) LlenarDataSet = False End Try End Function Public Function LlenarDataTable(SQL As String, ByRef Tb As DataTable) As Boolean Try LlenarDataSet(SQL, objDS) Tb = objDS.Tables(0) LlenarDataTable = True Catch ex As SqlException MsgBox("Error al Llenar DataTable " & ex.Message, MsgBoxStyle.Critical) LlenarDataTable = False End Try End Function Public Function boolExiste(SQL As String) As Boolean Try LlenarDataTable(SQL, TB) Return TB.Rows.Count > 0 Catch ex As SqlException MsgBox("Error al Llenar DataTable " & ex.Message, MsgBoxStyle.Critical) boolExiste = False End Try End Function Public Function getScalar(SQL As String, ByRef Valor As Double) As Boolean Try LlenarDataTable(SQL, TB) If TB.Rows.Count > 0 Then If (Not IsDBNull(TB.Rows(0)(0))) Then If (IsNumeric(TB.Rows(0)(0))) Then Valor = CDbl(TB.Rows(0)(0)) Return True End If End If End If Catch ex As SqlException MsgBox("Error al Obtener Escalar " & ex.Message, MsgBoxStyle.Critical)

135

End Try Return False End Function End Class

136

7.1.3 Class clsValidarDatos

Imports iTextSharp.text Imports iTextSharp.text.pdf Imports System.IO Public Class clsValidarDatos Public Function txtvacio(ByVal txtcadena As String) As Boolean If String.IsNullOrEmpty(txtcadena) Then Return True Else Return False End If End Function Public Function digitosletras(ByRef e As System.Windows.Forms.KeyPressEventArgs) 'funcion que controla el ingreso de numeros y letras If Char.IsDigit(e.KeyChar) Then e.Handled = False Else If Char.IsControl(e.KeyChar) Then e.Handled = False Else If Char.IsControl(e.KeyChar) Or Char.IsLetter(e.KeyChar) Or Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End If Return e End Function Public Function valores(ByRef e As System.Windows.Forms.KeyPressEventArgs) 'funcion que controla el ingreso de numeros y letras If Char.IsDigit(e.KeyChar) Then e.Handled = False Else If Char.IsControl(e.KeyChar) Then e.Handled = False Else If Char.IsControl(e.KeyChar) Or e.KeyChar = "." Or Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End If Return e End Function Public Function solodigitos(ByVal e As System.Windows.Forms.KeyPressEventArgs) 'funcion que controla el ingreso de numeros If Char.IsDigit(e.KeyChar) Then e.Handled = False Else

137

If Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If Return e End Function Public Function sololetras(ByVal e As System.Windows.Forms.KeyPressEventArgs) 'funcion que controla el ingreso de letras If Char.IsControl(e.KeyChar) Or Char.IsLetter(e.KeyChar) Or Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If Return e End Function Public Function validacedula(ByVal txtcedula As String) As Boolean Dim Spar As Integer Dim Simpar As Integer Dim stotal As Integer Dim txtdigito As Integer For i = 0 To 8 If (i Mod 2) = 0 Then If Val(txtcedula(i)) * 2 > 9 Then Spar = Spar + ((Val(txtcedula(i)) * 2) - 9) Else Spar = Spar + (Val(txtcedula(i)) * 2) End If Else Simpar = Simpar + Val(txtcedula(i)) End If Next stotal = Spar + Simpar If (stotal Mod 10) = 0 Then txtdigito = 0 Else txtdigito = 10 - (stotal Mod 10) End If If Val(Strings.Mid(txtcedula, 10, 1)) = txtdigito Then Return True Else Return False End If End Function Public Function Encriptar(ByVal UserKey As String, ByVal Text As String, ByVal Action As Integer) As String 'Dim UserKeyX As String Dim Temp As Integer 'Dim Times As Integer Dim i As Integer Dim j As Integer Dim n As Integer Dim rtn As String 'Dim UserKeyASCIIS As Array

138

'Dim TextASCIIS As Array Dim ENCRYPT = 1 Dim DECRYPT = 2 rtn = 0 n = Len(UserKey) Dim UserKeyASCIIS(n) As Integer For i = 1 To n UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1)) Next '//Get Text characters Dim TextASCIIS(Len(Text)) As Integer For i = 1 To Len(Text) TextASCIIS(i) = Asc(Mid$(Text, i, 1)) Next '//Encryption/Decryption If Action = ENCRYPT Then For i = 1 To Len(Text) j = IIf(j + 1 >= n, 1, Temp = TextASCIIS(i) + If Temp > 255 Then Temp = Temp - 255 End If rtn = rtn + Chr(Temp) Next ElseIf Action = DECRYPT Then For i = 1 To Len(Text) j = IIf(j + 1 >= n, 1, Temp = TextASCIIS(i) If Temp < 0 Then Temp = Temp + 255 End If rtn = rtn + Chr(Temp) Next End If '//Return Encriptar = rtn End Function End Class

j + 1) UserKeyASCIIS(j)

j + 1) UserKeyASCIIS(j)

139

7.2 Formularios

7.2.1 frmCreacionCargos

Public Class frmCreacionCargos Private Sub frmCreacionCargos_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarCargos() 'SQLQuery = "select ID,Grupo as CampoMostar from tbTablaSalarial" objAccesoDatos.LlenarComboBox("select ID, Grupo as CampoMostrar from tbTablaSalarial", cbSalario) objAccesoDatos.LlenarComboBox("select ID, Departamento as CampoMostrar from tbDepartamento", cbDepartamentos) End Sub Private Sub cbSalario_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbSalario.SelectedIndexChanged If Not IsNumeric(cbSalario.SelectedValue.ToString) Then Exit Sub Dim tb As New DataTable SQLQuery = "select * from tbTablaSalarial where ID=" & cbSalario.SelectedValue objAccesoDatos.LlenarDataTable(SQLQuery, tb) txtgrado.Text = tb.Rows(0)(2) txtrmu.Text = tb.Rows(0)(3) End Sub Private Sub EnlistarCargos() SQLQuery = "Select C.Descripcion, T.Grupo, T.RMU , C.IDgrupo, C.IDDepartamento, C.ID from tbCargos C,TbTablaSalarial T where C.IDGrupo=T.ID order by C.Descripcion" Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaCargos .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .Columns(3).Visible = False : .Columns(4).Visible = False End With End Sub Private Sub btguardar_Click(sender As Object, e As EventArgs) Handles btguardar.Click If objValidarDatos.txtvacio(txtcargo.Text) Or objValidarDatos.txtvacio(txtgrado.Text) Or objValidarDatos.txtvacio(txtrmu.Text) Then MsgBox("Falta informacion.......") Else

140

SQLQuery = "select * from tbcargos where descripcion='" & txtcargo.Text & "' and IDGrupo=" & cbSalario.SelectedValue & " and IDDepartamento=" & cbDepartamentos.SelectedValue If objAccesoDatos.boolExiste(SQLQuery) Then MsgBox("El Cargo ya existe .........", MsgBoxStyle.Information) Else SQLQuery = "insert into tbCargos(Descripcion,IDGrupo,IDDepartamento) values('" & txtcargo.Text & "'," & cbSalario.SelectedValue & "," & cbDepartamentos.SelectedValue & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Cargo ingresado correctamente", MsgBoxStyle.Information) End If End If End If EnlistarCargos() End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txtcargo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtcargo.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtcargo_TextChanged(sender As Object, e As EventArgs) Handles txtcargo.TextChanged End Sub Private Sub dgvListaCargos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaCargos.CellContentClick btguardar.Visible = False btActualizar.Visible = True SQLQuery = "Select C.Descripcion, T.Grupo, T.RMU from tbCargos C,TbTablaSalarial T where C.IDGrupo=T.ID order by C.Descripcion" txtcargo.Text = dgvListaCargos.CurrentRow.Cells(0).Value cbSalario.SelectedValue = dgvListaCargos.CurrentRow.Cells(3).Value txtrmu.Text = dgvListaCargos.CurrentRow.Cells(2).Value cbDepartamentos.SelectedValue = dgvListaCargos.CurrentRow.Cells(4).Value End Sub Private Sub btActualizar_Click(sender As Object, e As EventArgs) Handles btActualizar.Click btActualizar.Visible = False btguardar.Visible = True SQLQuery = "update tbCargos set Descripcion='" & txtcargo.Text & "',IDGrupo=" & cbSalario.SelectedValue & ",IDDepartamento=" & cbDepartamentos.SelectedValue & " where ID=" & dgvListaCargos.CurrentRow.Cells(5).Value objAccesoDatos.EjecutarSQL(SQLQuery) txtcargo.Text = "" txtgrado.Text = "" txtrmu.Text = "" EnlistarCargos()

141

End Sub End Class

142

7.2.2 frmCrearRubros

public Class frmCrearRubros Dim periodopago As String Private Sub frmCrearRubros_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) SQLQuery = "Select ID, str(ID)+' '+TipoRubro as CampoMostrar from TbTipoRubro order by CampoMostrar" objAccesoDatos.LlenarComboBox(SQLQuery, cbxTipo) llenarol() End Sub Private Sub llenarol() SQLQuery = "Select ID, str(ID)+' '+Descripcion as CampoMostrar from TbTipoRol order by CampoMostrar" objAccesoDatos.LlenarComboBox(SQLQuery, cbxRol) End Sub Private Sub chbmensual_Click(sender As Object, e As EventArgs) Handles chbmensual.Click If chbmensual.Checked Then chbenero.Checked = True chbfebrero.Checked = True chbmarzo.Checked = True chbabril.Checked = True chbmayo.Checked = True chbjunio.Checked = True chbjulio.Checked = True chbagosto.Checked = True chbseptiembre.Checked = True chboctubre.Checked = True chbnoviembre.Checked = True chbdiciembre.Checked = True periodopago = "111111111111" txtperiodopago.Text = periodopago Else chbenero.Checked = False chbfebrero.Checked = False chbmarzo.Checked = False chbabril.Checked = False chbmayo.Checked = False chbjunio.Checked = False chbjulio.Checked = False chbagosto.Checked = False chbseptiembre.Checked = False chboctubre.Checked = False chbnoviembre.Checked = False chbdiciembre.Checked = False periodopago = "000000000000" txtperiodopago.Text = periodopago End If End Sub Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles btnguardar.Click

143

If String.IsNullOrEmpty(txtdescripcionrubro.Text) Or String.IsNullOrEmpty(txtnombrecorto.Text) Or Not (chbenero.Checked Or chbfebrero.Checked Or chbmarzo.Checked Or chbabril.Checked Or chbmayo.Checked Or chbjunio.Checked Or chbjulio.Checked Or chbagosto.Checked Or chbseptiembre.Checked Or chboctubre.Checked Or chbnoviembre.Checked Or chbdiciembre.Checked) Then MsgBox("Informacion incompleta......", MsgBoxStyle.Exclamation) Else SQLQuery = "select * from tbRubros where tiporol=" & cbxRol.SelectedValue & " and tiporubro=" & cbxTipo.SelectedValue & " and Descripcion='" & txtdescripcionrubro.Text & "' and NombreCorto ='" & txtnombrecorto.Text & "'" If objAccesoDatos.boolExiste(SQLQuery) Then MsgBox("El Rubro ya existe...........", MsgBoxStyle.Information) Else SQLQuery = "Insert into tbRubros (Descripcion,TipoRubro,TipoRol,PeriodoPago,NombreCorto,AplicaD3,FormaCalculo) " & _ "values('" & txtdescripcionrubro.Text & "', '" & cbxTipo.SelectedValue & "','" & cbxRol.SelectedValue & "','" & periodopago & "','" & txtnombrecorto.Text & "'," & IIf(chkDecimo3.CheckState, 1, 0) & "," & IIf(rbManual.Checked, 2, 1) & ")" If (objAccesoDatos.EjecutarSQL(SQLQuery) > 0) Then MsgBox(" El registro se inserto exitosamente....... ", MsgBoxStyle.Information) End If rbManual.Checked = False chkDecimo3.Checked = False txtdescripcionrubro.Text = "" txtnombrecorto.Text = "" txtperiodopago.Text = "" End If End If End Sub Private Sub frmcrearubros_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed End Sub Private Sub chbenero_CheckedChanged(sender As Object, e As EventArgs) Handles chbenero.CheckedChanged agregameses() End Sub Private Sub chbfebrero_CheckedChanged(sender As Object, e As EventArgs) Handles chbfebrero.CheckedChanged agregameses() End Sub Private Sub chbmarzo_CheckedChanged(sender As Object, e As EventArgs) Handles chbmarzo.CheckedChanged agregameses() End Sub Private Sub chbabril_CheckedChanged(sender As Object, e As EventArgs) Handles chbabril.CheckedChanged agregameses() End Sub Private Sub chbmayo_CheckedChanged(sender As Object, e As EventArgs) Handles chbmayo.CheckedChanged agregameses() End Sub Private Sub chbjunio_CheckedChanged(sender As Object, e As EventArgs) Handles chbjunio.CheckedChanged agregameses()

144

End Sub Private Sub chbjulio_CheckedChanged(sender As Object, e As EventArgs) Handles chbjulio.CheckedChanged agregameses() End Sub Private Sub chbagosto_CheckedChanged(sender As Object, e As EventArgs) Handles chbagosto.CheckedChanged agregameses() End Sub Private Sub chbseptiembre_CheckedChanged(sender As Object, e As EventArgs) Handles chbseptiembre.CheckedChanged agregameses() End Sub Private Sub chboctubre_CheckedChanged(sender As Object, e As EventArgs) Handles chboctubre.CheckedChanged agregameses() End Sub Private Sub chbnoviembre_CheckedChanged(sender As Object, e As EventArgs) Handles chbnoviembre.CheckedChanged agregameses() End Sub Private Sub chbdiciembre_CheckedChanged(sender As Object, e As EventArgs) Handles chbdiciembre.CheckedChanged agregameses() End Sub Private Sub agregameses() chbmensual.Checked = IIf(chbenero.Checked And chbfebrero.Checked And chbmarzo.Checked And chbabril.Checked And chbmayo.Checked And chbjunio.Checked And chbjulio.Checked And chbagosto.Checked And chbseptiembre.Checked And chboctubre.Checked And chbnoviembre.Checked And chbdiciembre.Checked, 1, 0) periodopago = Convert.ToString(chbenero.CheckState) & Convert.ToString(chbfebrero.CheckState) & Convert.ToString(chbmarzo.CheckState) & Convert.ToString(chbabril.CheckState) periodopago = periodopago & Convert.ToString(chbmayo.CheckState) & Convert.ToString(chbjunio.CheckState) & Convert.ToString(chbjulio.CheckState) & Convert.ToString(chbagosto.CheckState) periodopago = periodopago & Convert.ToString(chbseptiembre.CheckState) & Convert.ToString(chboctubre.CheckState) & Convert.ToString(chbnoviembre.CheckState) & Convert.ToString(chbdiciembre.CheckState) txtperiodopago.Text = periodopago End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub cbxTipo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxTipo.SelectedIndexChanged btnguardar.Enabled = True End Sub Private Sub gbxmeses_Enter(sender As Object, e As EventArgs) Handles gbxmeses.Enter End Sub Private Sub txtdescripcionrubro_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtdescripcionrubro.KeyPress objValidarDatos.digitosletras(e)

145

End Sub End Class

146

7.2.3 frmCrearUsuarios

Public Class frmCrearUsuarios Private Sub frmCrearUsuarios_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) Select Case usrNivel Case 1 SQLQuery = "select ID,Descripcion as CampoMostrar from tbTipoUser where ID>" & usrNivel Case 2 SQLQuery = "select ID,Descripcion as CampoMostrar from tbTipoUser where ID>=" & usrNivel End Select objAccesoDatos.LlenarComboBox(SQLQuery, cbtipousuario) End Sub Private Sub btnguardarclave_Click(sender As Object, e As EventArgs) Handles btnguardarclave.Click Dim txtclaveEnc As String If String.IsNullOrEmpty(txtnombres.Text) Or String.IsNullOrEmpty(txtapellidos.Text) Or String.IsNullOrEmpty(txtCedula.Text) Or String.IsNullOrEmpty(txttelefono.Text) Or String.IsNullOrEmpty(txtuser.Text) Or String.IsNullOrEmpty(txtclave.Text) Or String.IsNullOrEmpty(txtconfirmar.Text) Then MsgBox("Informacion incompleta......", MsgBoxStyle.Exclamation) Else If txtclave.Text = txtconfirmar.Text Then txtclaveEnc = objValidarDatos.Encriptar(txtuser.Text, txtclave.Text, 1) SQLQuery = "insert into tbUsuarios(cedula,nombres,apellidos,Usuario,telefono,Clave,idtipouser) " & _ "values('" & txtCedula.Text & "','" & txtnombres.Text & "','" & txtapellidos.Text & "'," & _ "'" & txtuser.Text & "','" & txttelefono.Text & "','" & txtclaveEnc & "'," & cbtipousuario.SelectedValue & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Informacion guardada correctamente...", MsgBoxStyle.Information) limpiar() End If Else MsgBox("Informacion no coincide......", MsgBoxStyle.Information) End If End If End Sub Private Sub txtnombres_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtnombres.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtnombres_TextChanged(sender As Object, e As EventArgs) Handles txtnombres.TextChanged

147

End Sub Private Sub txtapellidos_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtapellidos.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtapellidos_TextChanged(sender As Object, e As EventArgs) Handles txtapellidos.TextChanged End Sub Private Sub txtCedula_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCedula.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtCedula_TextChanged(sender As Object, e As EventArgs) Handles txtCedula.TextChanged If Len(txtCedula.Text) = 10 Then If objValidarDatos.validacedula(txtCedula.Text) Then If objAccesoDatos.boolExiste("Select * from tbUsuarios where cedula=" & txtCedula.Text) Then MsgBox("Cedula ya existe.... verifique informacion...", MsgBoxStyle.Exclamation) Else txttelefono.Focus() End If Else MsgBox("Cedula mal digitada......", MsgBoxStyle.Exclamation) End If End If End Sub Private Sub txttelefono_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txttelefono.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txttelefono_TextChanged(sender As Object, e As EventArgs) Handles txttelefono.TextChanged End Sub Private Sub txtuser_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtuser.KeyPress objValidarDatos.digitosletras(e) End Sub Private Sub txtuser_TextChanged(sender As Object, e As EventArgs) Handles txtuser.TextChanged End Sub Private Sub limpiar() txtnombres.Text = "" txtapellidos.Text = "" txtCedula.Text = "" txttelefono.Text = "" txtuser.Text = ""

148

txtclave.Text = "" txtconfirmar.Text = "" End Sub End Class

149

7.2.4 frmDepartamentos

Public Class frmDepartamentos Private Sub frmDepartamentos_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarDepartamentos() 'SQLQuery = "select ID,Grupo as CampoMostar from tbTablaSalarial" objAccesoDatos.LlenarComboBox("select ID, Descripcion as CampoMostrar from tbEdificios", cbEdificios) objAccesoDatos.LlenarComboBox("select ID, Seccion as CampoMostrar from tbSeccion", cbSeccion) End Sub Private Sub btguardar_Click(sender As Object, e As EventArgs) Handles btguardar.Click If objValidarDatos.txtvacio(txtDepartamento.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "Select * from tbDepartamento where Departamento='" & txtDepartamento.Text & "' And idEdificio = " & cbEdificios.SelectedValue & " And idSeccion = " & cbSeccion.SelectedValue If objAccesoDatos.boolExiste(SQLQuery) Then MsgBox("El Departamento ya existe......", MsgBoxStyle.Information) Else SQLQuery = "insert into tbDepartamento(Departamento,idEdificio,idSeccion) values('" & txtDepartamento.Text & "'," & cbEdificios.SelectedValue & "," & cbSeccion.SelectedValue & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Cargo ingresado correctamente", MsgBoxStyle.Information) End If End If End If EnlistarDepartamentos() End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub EnlistarDepartamentos() SQLQuery = "Select D.ID, D.Departamento, E.Descripcion, S.Seccion from tbDepartamento D,tbEdificios E,tbSeccion S where idedificio=E.ID and idseccion=S.ID order by D.Departamento" Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaDepartamentos .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub

150

Private Sub txtDepartamento_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtDepartamento.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtDepartamento_TextChanged(sender As Object, e As EventArgs) Handles txtDepartamento.TextChanged End Sub End Class

151

7.2.5 frmDetalleNomina

Public Class frmDetalleNomina Public IDNomina As Integer Public IDTipoNomina As Integer Public IDTipoRol As Integer Public valoriess As Double Dim Tb As DataTable Dim i As Integer Private Sub EnlistarRubros() If Not IsNumeric(cbTipoRubro.SelectedValue) Then Exit Sub SQLQuery = "SELECT ID, Descripcion as CampoMostrar FROM tbRubros " & _ " Where TipoRubro = " & cbTipoRubro.SelectedValue & _ " And TipoRol = " & IDTipoRol & " And TipoNomina = " & IDTipoNomina & _ " order By FormaCalculo " objAccesoDatos.LlenarComboBox(SQLQuery, cbRubro) End Sub Private Sub frmDetalleNomina_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) If IDTipoRol = 3 Then objAccesoDatos.getScalar("select valor from tbRubroslegales where id=3", valoriess) Else objAccesoDatos.getScalar("select valor from tbRubroslegales where id=2", valoriess) End If 'valoriess = Replace(valoriess, ",", ".") If valoriess > 1 Then valoriess = valoriess / 100 End If Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) objAccesoDatos.LlenarComboBox("Select ID, TipoRubro as CampoMostrar from tbtipoRubro", cbTipoRubro) EnlistarFuncionarios() rubroscreados() End Sub Private Sub rubroscreados() SQLQuery = "Select distinct r.descripcion from tbdetallenomina d,tbrubros r where d.idnomina=" & IDNomina & " and d.rubro=r.id" Dim tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, tb) With dgvRubroCreado .Columns.Clear() .DataSource = tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub cbTipoRubro_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbTipoRubro.SelectedIndexChanged EnlistarRubros() End Sub

152

Private Sub cbRubro_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbRubro.SelectionChangeCommitted If Not IsNumeric(cbRubro.SelectedValue) Then Exit Sub Dim i As Integer dgvListaFuncionarios.Columns(5).ReadOnly = True objAccesoDatos.getScalar("Select FormaCalculo from tbRubros where id=" & cbRubro.SelectedValue, i) btnonoff(0) Select Case cbRubro.SelectedValue Case 1, 5, 9, 13 'sueldo limpiar() If dgvListaFuncionarios.Columns.Count() = 7 Then dgvListaFuncionarios.Columns.RemoveAt(6) End If For i = 0 To dgvListaFuncionarios.Rows.Count - 1 dgvListaFuncionarios.Rows(i).Cells(5).Value = getSueldo(dgvListaFuncionarios.Rows(i).Cells(0).Value) Next btnonoff(0) Case 17, 26, 34, 42 'aporte iess limpiar() If dgvListaFuncionarios.Columns.Count() = 7 Then dgvListaFuncionarios.Columns.RemoveAt(6) End If For i = 0 To dgvListaFuncionarios.Rows.Count - 1 dgvListaFuncionarios.Rows(i).Cells(5).Value = getSueldo(dgvListaFuncionarios.Rows(i).Cells(0).Value) * valoriess Next btnonoff(0) Case 18, 27, 35, 43 'impuesto a la renta limpiar() If dgvListaFuncionarios.Columns.Count() = 7 Then dgvListaFuncionarios.Columns.RemoveAt(6) End If For i = 0 To dgvListaFuncionarios.Rows.Count - 1 dgvListaFuncionarios.Rows(i).Cells(5).Value = getIR(dgvListaFuncionarios.Rows(i).Cells(0).Value, txtPeriodo.Text.Substring(0, 4)) Next btnonoff(0) Case 2, 6, 10, 14 'horas extras limpiar() If dgvListaFuncionarios.Columns.Count() = 7 Then dgvListaFuncionarios.Columns.RemoveAt(6) End If If dgvListaFuncionarios.Columns.Count() < 7 Then Dim Col As New DataGridViewTextBoxColumn Col.HeaderText = "HORAS" Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col.DefaultCellStyle.Format = "N2" dgvListaFuncionarios.Columns.Add(Col) btGrabar.Enabled = False btBorrar.Enabled = False btcalcular.Visible = True End If

153

Then

btnonoff(1) Case 50, 52, 57, 58 'fondo reserva limpiar() If dgvListaFuncionarios.Columns.Count() = 7 Then dgvListaFuncionarios.Columns.RemoveAt(6) End If Dim factorFR As Double = 0 With dgvListaFuncionarios For Each row As DataGridViewRow In dgvListaFuncionarios.Rows If row.Cells(2).Value >= 1 And row.Cells(3).Value = 0

objAccesoDatos.getScalar("Select valor from tbRubrosLegales where id=4", factorFR) If factorFR > 1 Then factorFR = factorFR / 100 End If row.Cells(5).Value = row.Cells(1).Value * factorFR End If Next End With btnonoff(0) Case Else limpiar() dgvListaFuncionarios.Columns(5).ReadOnly = False End Select End Sub Private Function getIR(IDFuncionario As Integer, Periodo As Integer) As Double Dim GastoIR, SueldoAnual, IESSAnual, BaseImponible, FB, IFB, IFE As Double SueldoAnual = getSueldo(IDFuncionario) * 12 IESSAnual = SueldoAnual * valoriess GastoIR = getGastosDeducibles(IDFuncionario, Periodo) BaseImponible = SueldoAnual - IESSAnual - GastoIR Call getDatosTablaIR(Periodo, BaseImponible, FB, IFB, IFE) Return (((BaseImponible - FB) * (IFE / 100)) + IFB) / 12 End Function Private Function getGastosDeducibles(IDFuncionario As Integer, Periodo As Integer) As Double SQLQuery = "select (Salud+ Vivienda+ Alimentacion + Educacion + Vestimenta) as TotalGastosIR " & _ "from tbGastosDeduciblesIR where Funcionario = " & IDFuncionario & " and Periodo=" & Periodo Dim TotalGastos As Double If objAccesoDatos.getScalar(SQLQuery, TotalGastos) Then : Return TotalGastos : Else : Return 0 : End If End Function Private Function getSueldo(IDFuncionario As Integer) As Double SQLQuery = "select Sueldo from TbFuncionario where ID = " & IDFuncionario Dim Sueldo As Double If objAccesoDatos.getScalar(SQLQuery, Sueldo) Then : Return Sueldo : Else : Return 0 : End If End Function Private Sub getDatosTablaIR(Periodo As Integer, BaseImponibleIR As Double, ByRef FB As Double, ByRef IFB As Double, ByRef IFE As Double)

154

SQLQuery = "SELECT FB, IFB, IFE FROM tbTablasIR where " & Replace(BaseImponibleIR, ",", ".") & " between FB and FE" objAccesoDatos.LlenarDataTable(SQLQuery, Tb) If Tb.Rows.Count = 0 Then SQLQuery = "SELECT FB, IFB, IFE FROM tbTablasIR where FB=0" objAccesoDatos.LlenarDataTable(SQLQuery, Tb) End If FB = CDbl(Tb.Rows(0)("FB").ToString) IFB = CDbl(Tb.Rows(0)("IFB").ToString) IFE = CDbl(Tb.Rows(0)("IFE").ToString) End Sub Private Sub EnlistarFuncionarios() SQLQuery = "Select ID, Sueldo, YEAR(GETDATE()) - YEAR (FechaIngreso) as AniosA,FormaPagoFR, nombres as FUNCIONARIO " & _ " from Tbfuncionario where Estado=1 and rol=" & IDTipoRol & " Order by Nombres " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaFuncionarios .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .Columns(0).Visible = False : .Columns(1).Visible = False : .Columns(2).Visible = False : .Columns(3).Visible = False Dim Col As New DataGridViewTextBoxColumn Col.HeaderText = "VALOR" Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col.DefaultCellStyle.Format = "N2" .Columns.Add(Col) End With End Sub Private Sub btGrabar_Click(sender As Object, e As EventArgs) Handles btGrabar.Click Dim cuentacasos As Integer = 0 If Not objAccesoDatos.boolExiste("select * from tbDetalleNomina where IDNomina=" & IDNomina & " and rubro=" & cbRubro.SelectedValue & "") Then For Each row As DataGridViewRow In dgvListaFuncionarios.Rows SQLQuery = "insert into tbDetalleNomina(IDNomina,Funcionario,Rubro,valor) values(" & IDNomina & "," & row.Cells(0).Value & "," & cbRubro.SelectedValue & "," & Replace(row.Cells(5).Value, ",", ".") & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then cuentacasos = cuentacasos + 1 End If Next If cuentacasos > 0 Then MsgBox("Rubro creado exitosamente.....", MsgBoxStyle.Information) End If btnonoff(3) rubroscreados() limpiar()

MsgBox("Detalle ya creado, por favor primero proceda a borrar.....", MsgBoxStyle.Exclamation) btnonoff(2) End If

Else

155

End Sub Private Sub btBorrar_Click(sender As Object, e As EventArgs) Handles btBorrar.Click SQLQuery = "delete from tbDetalleNomina where IDNomina =" & IDNomina & " and rubro=" & cbRubro.SelectedValue & "" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Detalle borrado exitosamente.....", MsgBoxStyle.Exclamation) dgvListaFuncionarios.Rows.Item(4).SetValues(0) dgvListaFuncionarios.ClearSelection() rubroscreados() limpiar() btnonoff(3) End If End Sub Private Sub btnonoff(ByVal onoff As Integer) Select Case onoff Case 0 btBorrar.Enabled = False btGrabar.Enabled = True btcalcular.Visible = False Case 1 btBorrar.Enabled = False btGrabar.Enabled = False btcalcular.Visible = True Case 2 btBorrar.Enabled = True btGrabar.Enabled = False btcalcular.Visible = False Case 3 btBorrar.Enabled = False btGrabar.Enabled = False btcalcular.Visible = False End Select End Sub Private Sub btcalcular_Click(sender As Object, e As EventArgs) Handles btcalcular.Click Dim i As Integer Dim factorhe As Double If IDTipoRol = 3 Then objAccesoDatos.getScalar("select valor from tbRubroslegales where id=6", factorhe) Else objAccesoDatos.getScalar("select valor from tbRubroslegales where id=5", factorhe) End If For i = 0 To dgvListaFuncionarios.Rows.Count - 1 dgvListaFuncionarios.Rows(i).Cells(5).Value = (getSueldo(dgvListaFuncionarios.Rows(i).Cells(0).Value) / 240) * factorhe * IIf(String.IsNullOrEmpty(dgvListaFuncionarios.Rows(i).Cells(6).Value), 0, dgvListaFuncionarios.Rows(i).Cells(6).Value) Next btnonoff(0) dgvListaFuncionarios.Columns.RemoveAt(6) End Sub Private Sub limpiar() With dgvListaFuncionarios For Each row As DataGridViewRow In dgvListaFuncionarios.Rows row.Cells(5).Value = 0 Next End With

156

End Sub End Class

157

7.2.6 frmEdificaciones
Public Class frmEdificaciones Private Sub frmEdificaciones_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarEdificios() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btgrabar.Click If objValidarDatos.txtvacio(txtedificio.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "insert into tbEdificios (Descripcion) values('" & txtedificio.Text & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Edificio ingresado correctamente", MsgBoxStyle.Information) End If End If EnlistarEdificios() End Sub Private Sub EnlistarEdificios() SQLQuery = "Select * from tbEdificios order by descripcion " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaEdificios .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txtedificio_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtedificio.KeyPress objValidarDatos.digitosletras(e) End Sub Private Sub txtedificio_TextChanged(sender As Object, e As EventArgs) Handles txtedificio.TextChanged End Sub End Class

158

7.2.7 frmEncabezadosNomina

Public Class frmEncabezadoNomina Private Sub frmEncabezadoNomina_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) 'Llenar COmboBoxes de Tipo Nminas y Tipo Roles objAccesoDatos.LlenarComboBox("select ID, descripcion as CampoMostrar from TbTipoRol", cbTipoRol) objAccesoDatos.LlenarComboBox("select IDTipoNomina as ID, descripcion as CampoMostrar from TbTipoNomina", cbTipoNomina) 'seleccionar por defectos Mes - Ao actual cbMes.SelectedIndex = Now.Month - 1 : cbAnio.SelectedIndex = Now.Year 2009 End Sub Private Sub btGrabar_Click(sender As Object, e As EventArgs) Handles btGrabar.Click SQLQuery = "Insert into TbEncabezadoNomina (Anio, Mes, TipoNomina, Rol, Estado, Descripcion) values(" & _ cbAnio.SelectedItem.ToString & "," & cbMes.SelectedIndex + 1 & "," & cbTipoNomina.SelectedValue & _ "," & cbTipoRol.SelectedValue & ",1,'" & txtDescripcion.Text & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Se cre el Encabezado de Nmina Correctamente", MsgBoxStyle.Information) btGrabar.Enabled = False Else MsgBox("Error al Insertar Encabezado de Nmina", MsgBoxStyle.Critical) End If End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub End class

159

7.2.8 frmEnlistaNomina

Public Class frmEnlistaNomina Private Sub frmEnlistaNomina_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) objAccesoDatos.LlenarComboBox("select IDTipoNomina as ID, descripcion as CampoMostrar from TbTipoNomina ", cbTipoNomina) cbMes.SelectedIndex = Now.Month - 1 cbAnio.SelectedIndex = Now.Year - 2009 cbAnio.Items.Add("*- Todos") : cbMes.Items.Add("*- Todos") 'cbTipoNomina.Items.Add("*- Todos") End Sub Private Sub btBuscar_Click(sender As Object, e As EventArgs) Handles btBuscar.Click SQLQuery = "select E.IDNomina, TN.IDTipoNomina, TR.ID, cast(E.Anio as varchar(4)) + ' - ' + cast(E.mes as varchar(2)) as Periodo, " & _ "TN.Descripcion as TipoNomina, TR.descripcion as TipoROl, " & _ "case E.estado when 1 then 'DEFINICION' WHEN 2 THEN 'APROBADA' " & _ "when 3 then 'GENERADA' end As Estado " & _ "from tbEncabezadoNomina E, TbTipoRol TR, tbTipoNomina TN " & _ "where e.TipoNomina = TN.IDTipoNomina And e.Rol = TR.ID and e.Estado<>3" 'Agregamos Filtros especificados por el usuario If Not cbAnio.SelectedIndex >= cbAnio.Items.Count - 1 Then _ SQLQuery &= " and E.Anio=" & cbAnio.SelectedItem.ToString If Not cbMes.SelectedIndex >= cbMes.Items.Count - 1 Then _ SQLQuery &= " and E.mes=" & cbMes.SelectedIndex + 1 SQLQuery &= " and E.TipoNomina=" & cbTipoNomina.SelectedValue SQLQuery &= " Order by E.Anio, E.Mes " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaNominas .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .Columns(3).Visible = False : .Columns(4).Visible = False : .Columns(5).Visible = False End With If cbTipoNomina.SelectedValue = 4 Or cbTipoNomina.SelectedValue = 3 Then dgvListaNominas.Columns("ColDetallar").Visible = False Else dgvListaNominas.Columns("ColDetallar").Visible = True End If End Sub Private Sub dgvListaNominas_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaNominas.CellClick Select Case e.ColumnIndex

160

Case 0 If dgvListaNominas.Rows(e.RowIndex).Cells(dgvListaNominas.Columns.Count() - 1).Value = "APROBADA" Then SQLQuery = "Update tbEncabezadoNomina set Estado=1 where IDNomina=" & dgvListaNominas.Rows(e.RowIndex).Cells(3).Value If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Proceso realizado exitosamente", MsgBoxStyle.Information) End If dgvListaNominas.Rows(e.RowIndex).Cells(dgvListaNominas.Columns.Count() - 1).Value = "DEFINICION" If dgvListaNominas.Rows(e.RowIndex).Cells(4).Value = 3 Or dgvListaNominas.Rows(e.RowIndex).Cells(4).Value = 4 Then SQLQuery = "Delete from tbDetalleNomina where IDNomina=" & dgvListaNominas.Rows(e.RowIndex).Cells(3).Value objAccesoDatos.EjecutarSQL(SQLQuery) End If End If Case 1 If dgvListaNominas.Rows(e.RowIndex).Cells(dgvListaNominas.Columns.Count() - 1).Value = "DEFINICION" Then Dim frm As New frmDetalleNomina With dgvListaNominas.Rows(e.RowIndex) frm.IDNomina = .Cells(3).Value frm.IDTipoNomina = .Cells(4).Value frm.IDTipoRol = .Cells(5).Value frm.txtPeriodo.Text = .Cells(6).Value frm.txtTipoNomina.Text = .Cells(7).Value frm.txtTipoRol.Text = .Cells(8).Value frm.txtEstado.Text = .Cells(9).Value End With frm.Show() End If Case 2 Dim frm As New frmNomina With dgvListaNominas.Rows(e.RowIndex) frm.IDNomina = .Cells(3).Value frm.IDTipoNomina = .Cells(4).Value frm.IDTipoRol = .Cells(5).Value frm.txtperiodo.Text = .Cells(6).Value frm.txttiponomina.Text = .Cells(7).Value frm.txttiporol.Text = .Cells(8).Value frm.txtestado.Text = .Cells(9).Value End With frm.Show() End Select End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub

161

Private Sub cbTipoNomina_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbTipoNomina.SelectedIndexChanged End Sub End Class

162

7.2.9 frmEnlistarRubros
Public Class frmEnlistarRubros Dim periodopago As String Dim ObjDS As DataSet Private Sub frmEnlistarRubros_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed End Sub Private Sub frmEnlistarRubros_Load(sender As Object, e As EventArgs) Handles MyBase.Load dgvrubros.Columns(1).Visible = False Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) SQLQuery = "Select ID,str(ID)+' '+TipoRubro as CampoMostrar from TbTipoRubro order by CampoMostrar" objAccesoDatos.LlenarComboBox(SQLQuery, cbxTipo) SQLQuery = "Select ID,str(ID)+' '+Descripcion as CampoMostrar from TbTipoRol order by CampoMostrar" 'cbxRol = objAccesoDatos.LlenarComboBox(SQLQuery, cbxRol) End Sub Private Sub btBuscar_Click(sender As Object, e As EventArgs) Handles btBuscar.Click Dim i As Integer SQLQuery = "select ID,PeriodoPago,Descripcion,TipoRol,TipoRubro" & _ " from tbrubros " & _ " where tbRubros.TipoRol = '" & cbxRol.SelectedValue.ToString & "' And tbRubros.TipoRubro = '" & cbxTipo.SelectedValue.ToString & "'" SQLQuery = SQLQuery & " order by Descripcion" If objAccesoDatos.LlenarDataSet(SQLQuery, ObjDS) Then dgvrubros.DataSource = ObjDS.Tables(0) dgvrubros.Refresh() dgvrubros.Columns(14).Visible = False dgvrubros.Columns(1).Visible = False dgvrubros.Columns(15).ReadOnly = True End If 'aqui se procede a cargar los valores para los checkbox de cada mes, en cada fila del datagrid If dgvrubros.RowCount > 1 Then For Each row As DataGridViewRow In dgvrubros.Rows 'este for lo aplico para recorrer las columnas, asi ya no escribo cada columna... For i = 2 To 13 row.Cells(i).Value = Val(Strings.Mid(row.Cells("PeriodoPago").Value, i - 1, 1)) Next 'row.Cells("Enero").Value = Val(Strings.Mid(row.Cells("PeriodoPago").Value, 1, 1)) antes Next End If End Sub Private Sub btnnuevo_Click(sender As Object, e As EventArgs) Handles btnnuevo.Click frmCrearRubros.Show()

163

End Sub Private Sub dgvrubros_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvrubros.CellContentClick Dim i As Integer 'valida si hizo clic en eliminar If dgvrubros.Columns(e.ColumnIndex).Name = "Eliminar" Then If MsgBox("Desea Eliminar el rubro " & dgvrubros.Rows(e.RowIndex).Cells(16).Value() & " ?", vbQuestion + vbYesNo) = MsgBoxResult.Yes Then SQLQuery = " delete from tbRubros where ID= " & dgvrubros.Rows(e.RowIndex).Cells(14).Value() If (objAccesoDatos.EjecutarSQL(SQLQuery) > 0) Then 'eliminar del datagrid dgvrubros.Rows.RemoveAt(e.RowIndex) End If End If End If 'modificar If dgvrubros.Columns(e.ColumnIndex).Name = "Modificar" Then If MsgBox("Desea Modificar el rubro " & dgvrubros.Rows(e.RowIndex).Cells(16).Value() & " ?", vbQuestion + vbYesNo) = MsgBoxResult.Yes Then SQLQuery = " Update tbRubros set PeriodoPago = '" & dgvrubros.Rows(e.RowIndex).Cells(15).Value() & "',Descripcion = '" & dgvrubros.Rows(e.RowIndex).Cells(16).Value() & "',TipoRol = '" & dgvrubros.Rows(e.RowIndex).Cells(17).Value() & "',TipoRubro = '" & dgvrubros.Rows(e.RowIndex).Cells(18).Value() & "' where ID= " & dgvrubros.Rows(e.RowIndex).Cells(14).Value() If (objAccesoDatos.EjecutarSQL(SQLQuery) > 0) Then MsgBox(" El registro se actualizo exitosamente. ", MsgBoxStyle.Critical) End If End If End If 'aqui se valida si se hizo click en los checkbox, que son las columnas 2 al 13 If dgvrubros.Columns(e.ColumnIndex).Index > 1 And dgvrubros.Columns(e.ColumnIndex).Index < 14 Then periodopago = "" For i = 2 To 13 periodopago = periodopago & dgvrubros.Rows(e.RowIndex).Cells(i).Value().ToString Next dgvrubros.Rows(e.RowIndex).Cells(15).Value() = periodopago End If End Sub Private Sub dgvrubros_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgvrubros.CurrentCellDirtyStateChanged If dgvrubros.IsCurrentCellDirty Then dgvrubros.CommitEdit(DataGridViewDataErrorContexts.Commit) End If End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub End Class

164

7.2.10 frmGastosDeducibles

Public Class frmGastosDeducibles Public IDFuncionario As Integer Dim objDS As DataSet Dim TB As DataTable Private Sub frmGastosDeducibles_Load(sender As Object, e As EventArgs) Handles MyBase.Load MostrarGastosDeducibles() btGrabar.Enabled = False : btModificar.Enabled = False : btBorrar.Enabled = False End Sub Private Sub MostrarGastosDeducibles() SQLQuery = "SELECT Periodo, Salud, Vivienda, Alimentacion, Educacion, Vestimenta " & _ " from tbGastosDeduciblesIR where Funcionario= " & IDFuncionario & _ " Order by periodo desc" objAccesoDatos.LlenarDataSet(SQLQuery, objDS) With dgvGastosDeducibles .DataSource = objDS.Tables(0) .Refresh() .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells Dim i As Integer .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter For i = 2 To 6 .Columns(i).DefaultCellStyle.Format = "N2" .Columns(i).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Next End With

End Sub Private Sub dgvGastosDeducibles_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvGastosDeducibles.CellClick 'validar que haya sido sobre la COlumna del Botn Eliminar If e.ColumnIndex = 0 Then With dgvGastosDeducibles.Rows(e.RowIndex) cbPeriodo.SelectedIndex = .Cells(1).Value - 2009 txtSalud.Text = .Cells(2).Value txtVivienda.Text = .Cells(3).Value txtAlimentacion.Text = .Cells(4).Value txtEducacion.Text = .Cells(5).Value txtVestimenta.Text = .Cells(6).Value

165

btGrabar.Enabled = False btModificar.Enabled = True btBorrar.Enabled = True End With End If End Sub

Private Sub dgvGastosDeducibles_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvGastosDeducibles.CellContentClick End Sub Private Sub cbPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbPeriodo.SelectedIndexChanged SQLQuery = "Select * from tbGastosDeduciblesIR where Funcionario= " & IDFuncionario & _ " and periodo =" & cbPeriodo.SelectedItem.ToString If Not objAccesoDatos.boolExiste(SQLQuery) Then txtSalud.Text = "" txtVivienda.Text = "" txtAlimentacion.Text = "" txtEducacion.Text = "" txtVestimenta.Text = "" btGrabar.Enabled = True btModificar.Enabled = False btBorrar.Enabled = False objAccesoDatos.LlenarDataTable(SQLQuery, TB) With TB txtSalud.Text = .Rows(0)("Salud").ToString txtVivienda.Text = .Rows(0)("Vivienda").ToString txtAlimentacion.Text = .Rows(0)("Alimentacion").ToString txtEducacion.Text = .Rows(0)("Educacion").ToString txtVestimenta.Text = .Rows(0)("Vestimenta").ToString End With btGrabar.Enabled = False btModificar.Enabled = True btBorrar.Enabled = True

Else

End If End Sub Private Sub txtVivienda_TextChanged(sender As Object, e As EventArgs) Handles txtVivienda.TextChanged CalcularTotal() End Sub Private Sub CalcularTotal() txtTotal.Text = ConvertirADouble(txtAlimentacion.Text) + ConvertirADouble(txtSalud.Text) + ConvertirADouble(txtVivienda.Text) + ConvertirADouble(txtVestimenta.Text) + ConvertirADouble(txtEducacion.Text) End Sub

166

Private Function ConvertirADouble(valorTexto As String) As Double If valorTexto = "" Then Return 0 If (IsNumeric(valorTexto)) Then Return CDbl(valorTexto) Else Return 0 End If ' Return IIf(, , 0) End Function Private Sub txtSalud_TextChanged(sender As Object, e As EventArgs) Handles txtSalud.TextChanged CalcularTotal() End Sub Private Sub GroupBox2_Enter(sender As Object, e As EventArgs) Handles GroupBox2.Enter End Sub Private Sub txtEducacion_TextChanged(sender As Object, e As EventArgs) Handles txtEducacion.TextChanged CalcularTotal() End Sub Private Sub txtAlimentacion_TextChanged(sender As Object, e As EventArgs) Handles txtAlimentacion.TextChanged CalcularTotal() End Sub Private Sub txtVestimenta_TextChanged(sender As Object, e As EventArgs) Handles txtVestimenta.TextChanged CalcularTotal() End Sub Private Sub btGrabar_Click(sender As Object, e As EventArgs) Handles btGrabar.Click SQLQuery = "Select * from tbGastosDeduciblesIR where Funcionario= " & IDFuncionario & _ " and periodo =" & cbPeriodo.SelectedItem.ToString If Not objAccesoDatos.boolExiste(SQLQuery) Then SQLQuery = "Insert into tbGastosDeduciblesIR (Funcionario,Periodo, Salud, vivienda, Alimentacion,Educacion,Vestimenta) " & _ " values (" & IDFuncionario & "," & _ cbPeriodo.SelectedItem.ToString & "," & ConvertirADouble(txtSalud.Text) & _ "," & ConvertirADouble(txtVivienda.Text) & "," & ConvertirADouble(txtAlimentacion.Text) & _ "," & ConvertirADouble(txtEducacion.Text) & "," & ConvertirADouble(txtVestimenta.Text) & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then btGrabar.Enabled = False btModificar.Enabled = True btBorrar.Enabled = True Else MostrarGastosDeducibles()

167

MsgBox("Error al Registrar de Gastos Deducibles Perodo " & cbPeriodo.SelectedItem.ToString(), MsgBoxStyle.Critical) End If MsgBox("Error, Ya existe una declaracin de Gastos Deducibles Perodo " & cbPeriodo.SelectedItem.ToString(), MsgBoxStyle.Critical) End If End Sub Private Sub btBorrar_Click(sender As Object, e As EventArgs) Handles btBorrar.Click If MsgBox("Esta seguro que desea borrar la Declaracin de Gastos Deducibles del Periodo " & cbPeriodo.SelectedItem.ToString(), MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then SQLQuery = "Delete from tbGastosDeduciblesIR where Funcionario =" & IDFuncionario & " and periodo=" & cbPeriodo.SelectedItem.ToString If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then txtSalud.Text = "" txtVivienda.Text = "" txtAlimentacion.Text = "" txtEducacion.Text = "" txtVestimenta.Text = "" btGrabar.Enabled = True btModificar.Enabled = False btBorrar.Enabled = False Else MostrarGastosDeducibles() Else

MsgBox("Error al Eliminar de Gastos Deducibles Perodo " & cbPeriodo.SelectedItem.ToString(), MsgBoxStyle.Critical) End If End If End Sub Private Sub btModificar_Click(sender As Object, e As EventArgs) Handles btModificar.Click SQLQuery = "Update tbGastosDeduciblesIR Set Salud=" & ConvertirADouble(txtSalud.Text) & _ ", Alimentacion=" & ConvertirADouble(txtAlimentacion.Text) & _ ", vivienda=" & ConvertirADouble(txtVivienda.Text) & _ ", Educacion=" & ConvertirADouble(txtEducacion.Text) & _ ", Vestimenta=" & ConvertirADouble(txtVestimenta.Text) & _ " Where Funcionario = " & IDFuncionario & " And periodo = " & cbPeriodo.SelectedItem.ToString If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MostrarGastosDeducibles() Else MsgBox("Error al Modificar de Gastos Deducibles Perodo " & cbPeriodo.SelectedItem.ToString(), MsgBoxStyle.Critical) End If End Sub End Class

168

7.2.11 frmKardexRoles

Public Class frmKardexRoles Private Sub frmKardexRoles_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) SQLQuery = "select distinct Anio as id, Anio as campomostrar from tbEncabezadoNomina" objAccesoDatos.LlenarComboBox(SQLQuery, cbPeriodo) End Sub Private Sub cbPeriodo_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbPeriodo.SelectionChangeCommitted SQLQuery = "select ID, Descripcion as CampoMostrar from tbTipoRol" objAccesoDatos.LlenarComboBox(SQLQuery, cbTipoRol) End Sub Private Sub cbTipoRol_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbTipoRol.SelectionChangeCommitted SQLQuery = "select ID, Nombres as CampoMostrar from tbFuncionario where rol=" & cbTipoRol.SelectedValue objAccesoDatos.LlenarComboBox(SQLQuery, cbFuncionario) End Sub Private Sub cbFuncionario_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbFuncionario.SelectionChangeCommitted SQLQuery = "Select IDNomina from tbEncabezadoNomina where anio=" & cbPeriodo.SelectedValue & " and rol=" & cbTipoRol.SelectedValue & " and Estado=3 order by mes" Dim tbnominas As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, tbnominas) SQLQuery = "Select distinct rubro from tbDetalle Nomina where " For i = 0 To tbnominas.Rows.Count() - 1 SQLQuery = SQLQuery & " IDNomina=" & tbnominas.Rows(i)(0).value If i <> tbnominas.Rows.Count() - 1 Then SQLQuery = SQLQuery & " and " End If Next MsgBox(SQLQuery) End Sub End Class

169

7.2.12 frmListadoFuncionarios

Imports iTextSharp.text Imports iTextSharp.text.pdf Imports System.IO Public Class frmListadoFuncionarios Dim objDS As DataSet Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) 'objGeografico.LlenarPais(cbPais) objGeografico.LlenarProvincias(cbProvincia) dgvListaFuncionarios.Columns(1).Visible = False End Sub Private Sub cbProvincia_SelectedIndexChanged(sender As Object, e EventArgs) Handles cbProvincia.SelectedIndexChanged objGeografico.LlenarCantones(cbProvincia, cbCanton) End Sub Private Sub cbCanton_SelectedIndexChanged(sender As Object, e As Handles cbCanton.SelectedIndexChanged objGeografico.LlenarParroquias(cbCanton, cbParroquia) End Sub Private Sub cbParroquia_SelectedIndexChanged(sender As Object, e EventArgs) Handles cbParroquia.SelectedIndexChanged

MyBase.Load

As

EventArgs)

As

End Sub Private Sub cbParroquia_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbParroquia.SelectionChangeCommitted btEnlistar.Enabled = True End Sub Private Sub btEnlistar_Click(sender As Object, e As EventArgs) Handles btEnlistar.Click If Not IsNumeric(cbParroquia.SelectedValue.ToString) Then Exit Sub btReporte.Enabled = True Dim SQL As String = "SELECT F.ID, F.Cedula, F.Nombres, F.Genero, Pr.Nombre as Provinca, " & _ " C.nombre as Canton, P.Nombre as Parroquia, Email,F.Estado" & _ " FROM TbFuncionario F, TbParroquia P, TbCanton C, TbProvincia PR " & _ " where F.IDParroquia = P.ID And P.IDCanton = C.ID " & _ " and Pr.ID = C.IDProvincia and F.IDParroquia = " & cbParroquia.SelectedValue.ToString If Not rbTodos.Checked Then If rbHombres.Checked Then SQL = SQL & " and F.Genero = 'M'" End If If rbMujeres.Checked Then SQL = SQL & " and F.Genero = 'F'" End If If rbTrabajador.Checked Then SQL = SQL & " and F.rol = 3" End If If rbEmpleado.Checked Then SQL = SQL & " and F.rol = 1" End If End If 'Filtro por Nombres

170

If txtNombres.Text <> "" Then SQL = SQL & " and Nombres like '" & txtNombres.Text & "%'" 'Filtro por Cdula If txtCedula.Text <> "" Then SQL = SQL & " and Cedula like '" & txtCedula.Text & "%'" SQL = SQL & " Order by Nombres " objAccesoDatos.LlenarDataSet(SQL, objDS) 'Mtodo para llenar DataSet With dgvListaFuncionarios dgvListaFuncionarios.DataSource = objDS.Tables(0) dgvListaFuncionarios.Refresh() dgvListaFuncionarios.Columns(2).Visible = False 'Oculta la Columna ID del Funcionario dgvListaFuncionarios.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill dgvListaFuncionarios.Columns(dgvListaFuncionarios.Columns.Count() 1).ReadOnly = False For Each row As DataGridViewRow In dgvListaFuncionarios.Rows If Not row.Cells(dgvListaFuncionarios.Columns.Count() - 1).Value Then row.DefaultCellStyle.BackColor = Color.OrangeRed Next End With End Sub Private Sub dgvListaFuncionarios_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaFuncionarios.CellClick If e.ColumnIndex < 0 Then Exit Sub 'validar que haya sido sobre la COlumna del Botn Eliminar If dgvListaFuncionarios.Columns(e.ColumnIndex).Name = "colDesactivar" Then If MsgBox("Desea Desactivar al Funcionari@ " & _ dgvListaFuncionarios.Rows(e.RowIndex).Cells(4).Value & " ?", vbQuestion + vbYesNo) = MsgBoxResult.Yes Then 'rmando la Sentencia SQL para Eliminar Funcionario por ID SQLQuery = "Update TbFuncionario set estado=0 where ID=" & dgvListaFuncionarios.Rows(e.RowIndex).Cells(2).Value 'MsgBox(SQLQuery) If (objAccesoDatos.EjecutarSQL(SQLQuery) > 0) Then dgvListaFuncionarios.Rows.RemoveAt(e.RowIndex) End If End If End If 'Si Clik en la columna de EDITAR If dgvListaFuncionarios.CurrentRow.Cells(dgvListaFuncionarios.Columns.Count() 1).Value Then If dgvListaFuncionarios.Columns(e.ColumnIndex).Name = "colIRenta" Then Dim frm As frmGastosDeducibles = New frmGastosDeducibles With frm .IDFuncionario = dgvListaFuncionarios.Rows(e.RowIndex).Cells(2).Value End If

171

.txtNombres.Text = dgvListaFuncionarios.Rows(e.RowIndex).Cells(4).Value .txtCedula.Text = dgvListaFuncionarios.Rows(e.RowIndex).Cells(3).Value .Show() End With End If End If If e.ColumnIndex = dgvListaFuncionarios.Columns.Count() - 1 Then If dgvListaFuncionarios.CurrentCell.Value Then dgvListaFuncionarios.CurrentCell.Value = False dgvListaFuncionarios.CurrentRow.DefaultCellStyle.BackColor = Color.OrangeRed Else dgvListaFuncionarios.CurrentCell.Value = True dgvListaFuncionarios.CurrentRow.DefaultCellStyle.BackColor = Color.White End If End If End Sub Private Sub btNuevo_Click(sender As Object, e As EventArgs) Handles btNuevo.Click 'Abrir el Formulario de NUEVO FUNCIONARIO Dim frm As New frmNuevoFuncionario frm.Show() End Sub Private Sub txtNombres_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNombres.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtNombres_TextChanged(sender As Object, e As EventArgs) Handles txtNombres.TextChanged End Sub Private Sub txtCedula_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCedula.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtCedula_TextChanged(sender As Object, e As EventArgs) Handles txtCedula.TextChanged End Sub Private Sub dgvListaFuncionarios_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgvListaFuncionarios.CurrentCellDirtyStateChanged If dgvListaFuncionarios.IsCurrentCellDirty Then dgvListaFuncionarios.CommitEdit(DataGridViewDataErrorContexts.Commit) End If End Sub Private Sub btReporte_Click(sender As Object, e As EventArgs) Handles btReporte.Click If dgvListaFuncionarios.Visible Then 'este proceso fue conseguido en, luego adaptado......... 'http://jossm03.blogspot.com/2012/06/exportar-datagridview-pdf.html Try

172

(Desktop).

'Intentar generar el documento. Dim doc As New Document(PageSize.A4.Rotate(), 10, 10, 10, 10) 'Path que guarda el reporte en el escritorio de windows

Dim filename As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\Funcinarios" + Now.Day.ToString + Now.Month.ToString + Now.Year.ToString + "-" + Now.TimeOfDay.Hours.ToString + Now.TimeOfDay.Minutes.ToString + ".pdf" Dim file As New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite) PdfWriter.GetInstance(doc, file) doc.Open() ExportarDatosPDF(dgvListaFuncionarios, doc, " Reporte Listado Funcionarios ") doc.Close() Process.Start(filename) Catch ex As Exception 'Si el intento es fallido, mostrar MsgBox. MessageBox.Show("No se puede generar el documento PDF.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub Public Sub ExportarDatosPDF(ByVal dg As DataGridView, document As Document, ByVal tema As String) 'Se crea un objeto PDFTable con el numero de columnas del DataGridView. Dim datatable As New PdfPTable(dg.ColumnCount) 'Se asignan algunas propiedades para el diseo del PDF. datatable.DefaultCell.Padding = 3 Dim headerwidths As Single() = GetColumnasSize(dg) datatable.SetWidths(headerwidths) datatable.WidthPercentage = 100 datatable.DefaultCell.BorderWidth = 2 datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER 'Se crea el encabezado en el PDF. Dim encabezado As New Paragraph(tema, New Font(Font.Name = "Tahoma", 20, Font.Bold)) 'Se crea el texto abajo del encabezado. Dim texto As New Phrase("Reporte Funcionarios:" + Now.Date(), New Font(Font.Name = "Tahoma", 14, Font.Bold)) 'Se capturan los nombres de las columnas del DataGridView. For i As Integer = 3 To dg.ColumnCount - 1 datatable.AddCell(dg.Columns(i).HeaderText) Next datatable.HeaderRows = 1 datatable.DefaultCell.BorderWidth = 1 datatable.CompleteRow() 'Se generan las columnas del DataGridView. For i As Integer = 0 To dg.RowCount - 1 For j As Integer = 3 To dg.ColumnCount - 1 Dim celda As New Phrase(dg(j, i).Value.ToString(), New Font(Font.Name = "Tahoma", 8, Font.Bold)) datatable.AddCell(celda) Next datatable.CompleteRow() Next 'Se agrega el PDFTable al documento. document.Add(encabezado)

173

document.Add(texto) document.Add(datatable) End Sub Public Function GetColumnasSize(ByVal dg As DataGridView) As Single() Dim values As Single() = New Single(dg.ColumnCount - 1) {} For i As Integer = 0 To dg.ColumnCount - 1 values(i) = CSng(dg.Columns(i).Width) Next Return values End Function End Class

174

7.2.13 frmLogin

Public Class frmLogin Public nveces As Integer Private Sub frmLogin_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed If usrNivel = 0 Then End End If End Sub Private Sub frmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load mdiPrincipal.ControlBox = False nveces = 0 Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) SQLQuery = "select * from tbUsuarios" If Not objAccesoDatos.boolExiste(SQLQuery) Then txtnombres.Visible = True lblNombres.Visible = True txtapellidos.Visible = True lblApellidos.Visible = True lblcedula.Visible = True txtCedula.Visible = True lbltelefono.Visible = True txttelefono.Visible = True lblcreacion.Visible = True btnaceptarclave.Visible = False lblConfirma.Visible = True txtconfirmar.Visible = True btnguardarclave.Visible = True lblcreacion.Text = "Primer Uso: Creacin de Super Usuario" lblcreacion.Text = "L O G I N:" btnaceptarclave.Visible = True End If txtnombres.Focus() End Sub Private Sub btnaceptarclave_Click(sender As Object, e As EventArgs) Handles btnaceptarclave.Click Dim txtclaveEnc As String If String.IsNullOrEmpty(txtuser.Text) Or String.IsNullOrEmpty(txtclave.Text) Or String.IsNullOrEmpty(txtconfirmar.Text) Then MsgBox("Informacion incompleta......", MsgBoxStyle.Exclamation) Else If txtclave.Text = txtconfirmar.Text Then txtclaveEnc = objValidarDatos.Encriptar(txtuser.Text, txtclave.Text, 1) SQLQuery = "select * from tbUsuarios where Usuario='" & txtuser.Text & "' and Clave='" & txtclaveEnc & "'" If objAccesoDatos.boolExiste(SQLQuery) Then mdiPrincipal.MenuStrip.Enabled = True usrBD = txtuser.Text Else

175

usrBD

mdiPrincipal.stUser.Text = mdiPrincipal.stUser.Text & ":" &

MsgBox("Bienvenido............", MsgBoxStyle.Exclamation) mdiPrincipal.ControlBox = True Dim tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, tb) usrNivel = tb.Rows(0)(7) If usrNivel > 2 Then mdiPrincipal.UsuariosToolStripMenuItem.Enabled = False End If Me.Close() Else MsgBox("Usuario o Clave erronea....", MsgBoxStyle.Exclamation) nveces = nveces + 1 If nveces = 3 Then End End If Else End If

MsgBox("Informacion no coincide......", MsgBoxStyle.Information) End If End If End Sub Private Sub btnguardarclave_Click(sender As Object, e As EventArgs) Handles btnguardarclave.Click Dim txtclaveEnc As String If String.IsNullOrEmpty(txtnombres.Text) Or String.IsNullOrEmpty(txtapellidos.Text) Or String.IsNullOrEmpty(txtCedula.Text) Or String.IsNullOrEmpty(txttelefono.Text) Or String.IsNullOrEmpty(txtuser.Text) Or String.IsNullOrEmpty(txtclave.Text) Or String.IsNullOrEmpty(txtconfirmar.Text) Then MsgBox("Informacion incompleta......", MsgBoxStyle.Exclamation) Else If txtclave.Text = txtconfirmar.Text Then txtclaveEnc = objValidarDatos.Encriptar(txtuser.Text, txtclave.Text, 1) SQLQuery = "insert into tbUsuarios(cedula,nombres,apellidos,Usuario,telefono,Clave,idtipouser) values('" & txtCedula.Text & "','" & txtnombres.Text & "','" & txtapellidos.Text & "','" & txtuser.Text & "','" & txttelefono.Text & "','" & txtclaveEnc & "',1)" objAccesoDatos.EjecutarSQL(SQLQuery) Application.Restart() Else MsgBox("Informacion no coincide......", MsgBoxStyle.Information) End If End If End Sub Private Sub txtnombres_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtnombres.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtnombres_TextChanged(sender As Object, e As EventArgs) Handles txtnombres.TextChanged End Sub

176

Private Sub txtapellidos_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtapellidos.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtapellidos_TextChanged(sender As Object, e As EventArgs) Handles txtapellidos.TextChanged End Sub Private Sub txtuser_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtuser.KeyPress objValidarDatos.digitosletras(e) End Sub Private Sub txtuser_TextChanged(sender As Object, e As EventArgs) Handles txtuser.TextChanged End Sub Private Sub txtCedula_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCedula.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtCedula_TextChanged(sender As Object, e As EventArgs) Handles txtCedula.TextChanged End Sub Private Sub txttelefono_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txttelefono.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txttelefono_TextChanged(sender As Object, e As EventArgs) Handles txttelefono.TextChanged End Sub Private Sub txtclave_TextChanged(sender As Object, e As EventArgs) Handles txtclave.TextChanged End Sub End Class

177

7.2.14 frmModificarFuncionario

Public Class frmModificarFuncionario Dim objDS As DataSet Private Sub frmModificarFuncionario_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 2.5) - (Me.Height / 2)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) objGeografico.LlenarProvincias(cbProvincia) End Sub Private Sub cbProvincia_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbProvincia.SelectedIndexChanged objGeografico.LlenarCantones(cbProvincia, cbCanton) End Sub Private Sub cbCanton_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbCanton.SelectedIndexChanged objGeografico.LlenarParroquias(cbCanton, cbParroquia) End Sub Private Sub btEnlistar_Click(sender As Object, e As EventArgs) Handles btEnlistar.Click If Not IsNumeric(cbParroquia.SelectedValue.ToString) Then Exit Sub Dim SQL As String = "SELECT F.ID, Cedula, Nombres, Genero, Pr.Nombre as Provinca, " & _ "C.nombre as Canton, P.Nombre as Parroquia, Email " & _ "FROM TbFuncionario F, TbParroquia P, TbCanton C, TbProvincia PR " & _ "where F.IDParroquia = P.ID And P.IDCanton = C.ID " & _ "and Pr.ID = C.IDProvincia and F.IDParroquia = " & cbParroquia.SelectedValue.ToString If Not rbTodos.Checked Then If rbHombres.Checked Then SQL = SQL & " and F.Genero = 'M'" Else SQL = SQL & " and F.Genero = 'F'" End If End If 'Filtro por Nombres If txtNombres.Text <> "" Then SQL = SQL & " and Nombres like '" & txtNombres.Text & "%'" 'Filtro por Cdula If txtCedula.Text <> "" Then SQL = SQL & " and Cedula like '" & txtCedula.Text & "%'" SQL = SQL & " Order by Nombres " objAccesoDatos.LlenarDataSet(SQL, objDS) 'Mtodo para llenar DataSet dgvListaFuncionarios.DataSource = objDS.Tables(0) dgvListaFuncionarios.Refresh() dgvListaFuncionarios.Columns(0).Visible = False 'Oculta la Columna ID del Funcionario dgvListaFuncionarios.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill End Sub Private Sub dgvListaFuncionarios_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaFuncionarios.CellClick With dgvListaFuncionarios frmNuevoFuncionario.txtcedula.Text = .Rows(e.RowIndex).Cells(1).Value End With Me.Close() End Sub

178

Private Sub txtNombres_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNombres.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtNombres_TextChanged(sender As Object, e As EventArgs) Handles txtNombres.TextChanged End Sub Private Sub txtCedula_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCedula.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtCedula_TextChanged(sender As Object, e As EventArgs) Handles txtCedula.TextChanged End Sub End Class

179

7.2.15 frmNomina

Public Class frmNomina Public IDNomina As Integer Public IDTipoNomina As Integer Public IDTipoRol As Integer Dim Tb As DataTable Dim i As Integer Private Sub frmNomina_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) If txtestado.Text = "APROBADA" Then btaprobar.Visible = False btgenerar.Visible = True Else btaprobar.Visible = True btgenerar.Visible = False End If Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) Call EnlistarFuncionarios() Dim tb As New DataTable Dim i As Integer Select Case IDTipoNomina Case 1 agregarcolumna(dgvlistafuncionarios) With dgvlistafuncionarios For Each row As DataGridViewRow In dgvlistafuncionarios.Rows SQLQuery = "select distinct rubro,valor,TipoRubro from tbdetallenomina, tbrubros where idnomina=" & IDNomina & " and funcionario=" & row.Cells(0).Value & " and rubro=id order by tbRubros.TipoRubro" MsgBox(SQLQuery) objAccesoDatos.LlenarDataTable(SQLQuery, tb) For i = 0 To tb.Rows.Count() - 1 row.Cells(i + 4).Value = tb.Rows(i)(1) If tb.Rows(i)(2) = 1 Then row.Cells(.ColumnCount() - 2).Value = row.Cells(.ColumnCount() - 2).Value + row.Cells(i + 4).Value Else row.Cells(.ColumnCount() - 2).Value = row.Cells(.ColumnCount() - 2).Value - row.Cells(i + 4).Value End If Next If row.Cells(.ColumnCount() - 2).Value < 0 Then btaprobar.Enabled = False End If Next End With Case 3 'decim tercer Dim Col As New DataGridViewTextBoxColumn Col.HeaderText = "DECIMO 3ER" Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col.DefaultCellStyle.Format = "N2" dgvlistafuncionarios.Columns.Add(Col)

180

If txtestado.Text = "DEFINICION" Then With dgvlistafuncionarios For Each row As DataGridViewRow In dgvlistafuncionarios.Rows Dim dias As Integer Dim periodo As Integer Dim j As Integer Dim k As Integer Dim totali As Double totali = 0 dias = DateDiff(DateInterval.Day, row.Cells(2).Value, Today()) periodo = Val(Strings.Mid(txtperiodo.Text, 1, 4)) Dim tbnominas As New DataTable SQLQuery = "select * from tbEncabezadoNomina where tiponomina=1 and rol=" & IDTipoRol & " and anio=" & periodo & " and Estado=3" objAccesoDatos.LlenarDataTable(SQLQuery, tbnominas) For j = 0 To tbnominas.Rows.Count() - 1 SQLQuery = "select d.valor from tbDetalleNomina d,tbRubros r where d.Rubro=r.id and r.AplicaD3=1 and r.TipoRubro='1' and d.Funcionario=" & row.Cells(0).Value & " and d.IDNomina=" & tbnominas.Rows(j).Item(0) Dim tbingresos As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, For k = 0 To tbingresos.Rows.Count() - 1

tbingresos)

totali = totali + tbingresos.Rows(k).Item(0) Next Next 'If dias > 360 Then row.Cells(4).Value = totali / 12 'Else 'row.Cells(4).Value = CDbl(totali / 360) * dias 'End If Next End With Else With dgvlistafuncionarios For Each row As DataGridViewRow In dgvlistafuncionarios.Rows objAccesoDatos.getScalar("Select valor from tbDetalleNomina where IDNomina=" & IDNomina & " and Funcionario=" & row.Cells(0).Value, row.Cells(4).Value) Next End With End If Case 4 'decim cuarto Dim Col As New DataGridViewTextBoxColumn Col.HeaderText = "DECIMO 4TO" Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col.DefaultCellStyle.Format = "N2" dgvlistafuncionarios.Columns.Add(Col) If txtestado.Text = "DEFINICION" Then With dgvlistafuncionarios For Each row As DataGridViewRow In dgvlistafuncionarios.Rows

181

Today())

Dim dias As Integer dias = DateDiff(DateInterval.Day, row.Cells(2).Value, If dias >= 360 Then row.Cells(4).Value = 340 Else row.Cells(4).Value = (340 / 360) * dias End If

Next End With Else With dgvlistafuncionarios For Each row As DataGridViewRow In dgvlistafuncionarios.Rows objAccesoDatos.getScalar("Select valor from tbDetalleNomina where IDNomina=" & IDNomina & " and Funcionario=" & row.Cells(0).Value, row.Cells(4).Value) Next End With End If End Select End Sub Private Sub EnlistarFuncionarios() SQLQuery = "Select ID, Sueldo, FechaIngreso, nombres as FUNCIONARIO " & _ " from Tbfuncionario where Estado=1 and rol=" & IDTipoRol & " Order by Nombres " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaFuncionarios .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .Columns(0).Visible = False : .Columns(1).Visible = False : .Columns(2).Visible = False End With End Sub Private Sub agregarcolumna(ByRef dgvlistafuncionarios) Dim tb As New DataTable Dim tb1 As New DataTable Dim i As Integer SQLQuery = "select distinct rubro,TipoRubro from tbdetallenomina, tbrubros where idnomina=" & IDNomina & " and rubro=id order by tbRubros.TipoRubro" objAccesoDatos.LlenarDataTable(SQLQuery, tb) With dgvlistafuncionarios For i = 0 To tb.Rows.Count() - 1 SQLQuery = "select nombrecorto from tbRubros where id=" & tb.Rows(i)(0) objAccesoDatos.LlenarDataTable(SQLQuery, tb1) Dim Col1 As New DataGridViewTextBoxColumn Col1.HeaderText = tb1.Rows(0)(0) Col1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col1.DefaultCellStyle.Format = "N2" .Columns.Add(Col1) Next Dim Col As New DataGridViewTextBoxColumn Col.HeaderText = "LIQUIDO"

182

Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Col.DefaultCellStyle.Format = "N2" .Columns.Add(Col) 'agrega check Dim dgvColumnCheck As New DataGridViewCheckBoxColumn 'dgvColumnCheck.Name = "colComprobante" dgvColumnCheck.HeaderText = "Comprobante" dgvColumnCheck.ReadOnly = False 'Aca se agrega la columna tipo CheckBox .Columns.Add(dgvColumnCheck) ' ojo row.Cells[dgvlistafuncionarios.rows.count()-1].Value = true; End With End Sub Private Sub dgvlistafuncionarios_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvlistafuncionarios.CellClick Select Case e.ColumnIndex Case dgvlistafuncionarios.Columns.Count() - 1 'o la columan que tenga el checkbox Dim Celda As DataGridViewCheckBoxCell = dgvlistafuncionarios(e.ColumnIndex, e.RowIndex) Dim CE As CheckState = Celda.Value If CE = CheckState.Checked Then Celda.Value = CheckState.Unchecked Else Celda.Value = CheckState.Checked End Select End Sub Private Sub dgvlistafuncionarios_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dgvlistafuncionarios.CurrentCellDirtyStateChanged If dgvlistafuncionarios.IsCurrentCellDirty Then dgvlistafuncionarios.CommitEdit(DataGridViewDataErrorContexts.Commit) End If End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub dgvlistafuncionarios_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvlistafuncionarios.CellContentClick End Sub Private Sub btaprobar_Click(sender As Object, e As EventArgs) Handles btaprobar.Click Dim casos As Integer = 0 SQLQuery = "Update tbEncabezadoNomina set Estado=2 where IDNomina=" & IDNomina objAccesoDatos.EjecutarSQL(SQLQuery) txtestado.Text = "APROBADA" If IDTipoNomina = 3 Or IDTipoNomina = 4 Then For Each row As DataGridViewRow In dgvlistafuncionarios.Rows SQLQuery = "Insert into tbDetalleNomina(IDNomina,Funcionario,Rubro,Valor) values(" & IDNomina & "," & row.Cells(0).Value & ",NULL," & Replace(row.Cells(4).Value, ",", ".") & ")" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then casos = casos + 1 End If

Next

183

If casos > 0 Then MsgBox("Nomina guardada correctamente......", MsgBoxStyle.Information) End If End If frmEnlistaNomina.dgvListaNominas.CurrentRow.Cells(0).Value = txtestado.Text Me.Close() End Sub Private Sub btgenerar_Click(sender As Object, e As EventArgs) Handles btgenerar.Click SQLQuery = "Update tbEncabezadoNomina set Estado=3 where IDNomina=" & IDNomina If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Proceso realizado exitosamente", MsgBoxStyle.Information) End If txtestado.Text = "GENERADA" Me.Close() End Sub End Class

184

7.2.16 frmNuevoFuncionario

Imports System.Data.SqlClient Public Class frmNuevoFuncionario Private Sub frmNuevoFuncionario_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 2.5) - (Me.Height / 2)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) btModificar.Enabled = False btGrabar.Enabled = True objGeografico.LlenarProvincias(cbProvincia) 'LLenar ComboBox de Tipos de Roles objAccesoDatos.LlenarComboBox("select ID, descripcion as CampoMostrar from TbTipoRol " & _ " order by descripcion", cbTipoRol) 'Llenar comboBox de Cargos objAccesoDatos.LlenarComboBox("select ID, Descripcion as CampoMostrar from TbCargos", cbCargo) 'Llenar comboBox de Banco objAccesoDatos.LlenarComboBox("select ID, Nombre as CampoMostrar from tbBancos", cbBanco) txtcedula.Focus() End Sub Private Sub btGrabar_Click(sender As Object, e As EventArgs) Handles btGrabar.Click Dim SQL As String 'Armar Sentencia SQL INSERT con todos los campos SQL = "insert into TbFuncionario (Cedula,Nombres,Genero,IDParroquia, Email,Sueldo,Cargo," & _ "Area, Rol,FechaIngreso,FormaPagoFR,NumCuenta,TipoCuenta,Banco,Estado,Direccion,Telefono ) values ('" & _ txtcedula.Text & "','" & txtNombres.Text & "','" & IIf(cbGenero.SelectedIndex = 0, "M", "F") & "'," & _ cbParroquia.SelectedValue & ",'" & txtCorreo.Text & "'," & txtSueldo.Text & "," & cbCargo.SelectedValue & "," & _ cbTipoRol.SelectedValue & ",'" & dtpFechaIngreso.Value & "'," & _ IIf(chkFormaPagoFR.Checked, 1, 2) & ",'" & txtNumCuenta.Text & "'," & _ cbTipoCuenta.SelectedIndex & "," & cbBanco.SelectedValue & ",1,'" & txtdireccion.Text & "','" & txttelefono.Text & "')" If (objAccesoDatos.EjecutarSQL(SQL) > 0) Then MsgBox("Se Ingreso correctamente los datos del funcionario.", MsgBoxStyle.Information) End If limpiar() End Sub Private Sub btCancelar_Click(sender As Object, e As EventArgs) Handles btCancelar.Click Me.Close() End Sub Private Sub txtcedula_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtcedula.KeyPress objValidarDatos.solodigitos(e)

185

End Sub Private Sub txtcedula_TextChanged(sender As Object, e As EventArgs) Handles txtcedula.TextChanged Dim provincia, canton As Integer If Len(txtcedula.Text) = 10 Then If objValidarDatos.validacedula(txtcedula.Text) Then If objAccesoDatos.boolExiste("Select * from tbFuncionario where cedula=" & txtcedula.Text) Then If MsgBox("Desea Modificar Datos..... ", vbQuestion + vbYesNo) = MsgBoxResult.Yes Then btModificar.Enabled = True btGrabar.Enabled = False txtcedula.Enabled = False Dim tb As New DataTable SQLQuery = "select * from tbfuncionario where cedula='" & txtcedula.Text & "'" If objAccesoDatos.LlenarDataTable(SQLQuery, tb) Then chkEnFunciones.Visible = True txtNombres.Text = tb.Rows(0)(2) cbGenero.SelectedIndex = IIf(tb.Rows(0)(3) = "M", 0, 1) txtCorreo.Text = tb.Rows(0)(5) objAccesoDatos.getScalar("select idcanton from tbParroquia where id=" & tb.Rows(0)(4), canton) objAccesoDatos.getScalar("select idprovincia from tbcanton where id=" & canton, provincia) cbProvincia.SelectedValue = provincia cbCanton.SelectedValue = canton cbParroquia.SelectedValue = tb.Rows(0)(4) cbTipoRol.SelectedIndex = tb.Rows(0)(9) dtpFechaIngreso.Value = tb.Rows(0)(10) cbCargo.SelectedValue = tb.Rows(0)(7) txtNumCuenta.Text = tb.Rows(0)(12) cbBanco.SelectedValue = tb.Rows(0)(14) cbTipoCuenta.SelectedIndex = tb.Rows(0)(13) txtdireccion.Text = tb.Rows(0)(16) txttelefono.Text = tb.Rows(0)(17) chkFormaPagoFR.Checked = tb.Rows(0)(11) chkEnFunciones.Checked = tb.Rows(0)(15) End If End If Else txtNombres.Focus() End If

MsgBox("Cedula mal digitada......", MsgBoxStyle.Exclamation) End If End If End Sub Private Sub txtNombres_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNombres.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtNombres_TextChanged(sender As Object, e As EventArgs) Handles txtNombres.TextChanged End Sub

Else

186

Private Sub cbCargo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbCargo.SelectedIndexChanged If Not IsNumeric(cbCargo.SelectedValue.ToString) Then Exit Sub Dim tb As New DataTable SQLQuery = "select c.ID, c.Descripcion, t.RMU,D.Departamento,E.Descripcion,S.Seccion from tbCargos c,tbTablaSalarial t,tbDepartamento D,tbEdificios E,tbSeccion S where c.id=" & cbCargo.SelectedValue & " and c.IDGrupo=t.ID and c.IDDepartamento=d.id and d.idedificio=e.id and d.idseccion=s.id" objAccesoDatos.LlenarDataTable(SQLQuery, tb) txtSueldo.Text = tb.Rows(0)(2) txtDepartamento.Text = tb.Rows(0)(3) txtEdificio.Text = tb.Rows(0)(4) txtSeccion.Text = tb.Rows(0)(5) End Sub Private Sub cbProvincia_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbProvincia.SelectedIndexChanged objGeografico.LlenarCantones(cbProvincia, cbCanton) End Sub Private Sub cbCanton_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbCanton.SelectedIndexChanged objGeografico.LlenarParroquias(cbCanton, cbParroquia) End Sub Private Sub btModificar_Click(sender As Object, e As EventArgs) Handles btModificar.Click btGrabar.Enabled = True chkEnFunciones.Visible = False btModificar.Enabled = False SQLQuery = "update tbfuncionario set Nombres = '" & txtNombres.Text & "', Genero = '" & IIf(cbGenero.SelectedIndex = 0, "M", "F") & "', " & _ "IDParroquia=" & cbParroquia.SelectedValue & ", Email='" & txtCorreo.Text & "', Sueldo=" & txtSueldo.Text & " , Cargo=" & cbCargo.SelectedValue & ", " & _ " Rol=" & cbTipoRol.SelectedValue & ",FechaIngreso='" & dtpFechaIngreso.Value & "',FormaPagoFR= " & IIf(chkFormaPagoFR.Checked, 1, 2) & ", NumCuenta='" & txtNumCuenta.Text & "'," & _ " TipoCuenta=" & cbTipoCuenta.SelectedIndex & ",Banco=" & cbBanco.SelectedValue & ",Direccion='" & txtdireccion.Text & "',Telefono='" & txttelefono.Text & "'," & _ " Estado=" & chkEnFunciones.CheckState & " where cedula='" & txtcedula.Text & "'" If objAccesoDatos.EjecutarSQL(SQLQuery) Then MsgBox("Registro actualizado correctamente......", MsgBoxStyle.Information) End If txtcedula.Enabled = True limpiar() End Sub Private Sub btbuscar_Click(sender As Object, e As EventArgs) Handles btbuscar.Click frmModificarFuncionario.MdiParent = mdiPrincipal frmModificarFuncionario.Show() End Sub Private Sub limpiar() txtcedula.Text = "" txtNombres.Text = "" txtCorreo.Text = "" txtDepartamento.Text = ""

187

txtdireccion.Text = "" txtEdificio.Text = "" txtSeccion.Text = "" txtNumCuenta.Text = "" txttelefono.Text = "" txtSueldo.Text = "" chkFormaPagoFR.Checked = False chkEnFunciones.Checked = False End Sub Private Sub txttelefono_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txttelefono.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtNumCuenta_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNumCuenta.KeyPress objValidarDatos.solodigitos(e) End Sub End Class

188

7.2.17 frmParametrosLegales

Public Class frmParametrosLegales Private Sub frmRubrosLegales_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarParametrosLegales() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btguardar.Click If objValidarDatos.txtvacio(txtparametro.Text) Or objValidarDatos.txtvacio(txtperiodo.Text) Or objValidarDatos.txtvacio(txtporcentaje.Text) Then MsgBox("Falta informacion.......") Else If Not objAccesoDatos.boolExiste("select * from tbRubrosLegales where Descripcion='" & txtparametro.Text & "'") Then SQLQuery = "insert into tbRubrosLegales(Descripcion,Periodo,Valor) values('" & txtparametro.Text & "','" & txtperiodo.Text & "','" & Replace(txtporcentaje.Text, ",", ".") & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Rubro legal ingresado correctamente", MsgBoxStyle.Information) limpiar() End If Else MsgBox("Rubro ya existe......", MsgBoxStyle.Exclamation) End If End If EnlistarParametrosLegales() End Sub Private Sub btActualizar_Click(sender As Object, e As EventArgs) Handles btActualizar.Click If objValidarDatos.txtvacio(txtparametro.Text) Or objValidarDatos.txtvacio(txtperiodo.Text) Or objValidarDatos.txtvacio(txtporcentaje.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "update tbRubrosLegales set Descripcion='" & txtparametro.Text & "',Periodo='" & txtperiodo.Text & "',Valor='" & Replace(txtporcentaje.Text, ",", ".") & "' where Descripcion='" & txtparametro.Text & "'" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Rubro legal actualizado correctamente.....", MsgBoxStyle.Information) btActualizar.Visible = False 'btguardar.Visible = True limpiar() End If End If EnlistarParametrosLegales() End Sub Private Sub EnlistarParametrosLegales() SQLQuery = "Select * from tbRubrosLegales order by Descripcion" Dim Tb As New DataTable

189

objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaParametros .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .Columns(0).ReadOnly = True .Columns(1).ReadOnly = True .Columns(2).ReadOnly = True .Columns(3).ReadOnly = True End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txtrubro_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtparametro.KeyPress objValidarDatos.digitosletras(e) End Sub Private Sub txtperiodo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtperiodo.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub limpiar() txtparametro.Text = "" txtperiodo.Text = "" txtporcentaje.Text = "" End Sub Private Sub txtporcentaje_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtporcentaje.KeyPress objValidarDatos.valores(e) End Sub Private Sub dgvListaParametros_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaParametros.CellClick 'btguardar.Visible = False btActualizar.Visible = True txtparametro.Text = dgvListaParametros.CurrentRow.Cells(1).Value txtperiodo.Text = dgvListaParametros.CurrentRow.Cells(3).Value txtporcentaje.Text = dgvListaParametros.CurrentRow.Cells(2).Value End Sub Private Sub txtporcentaje_TextChanged(sender As Object, e As EventArgs) Handles txtporcentaje.TextChanged End Sub End Class

190

7.2.18 frmSecciones

Public Class frmSecciones Private Sub frmSecciones_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarSecciones() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btgrabar.Click If objValidarDatos.txtvacio(txtseccion.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "insert into tbSeccion (Seccion) values('" & txtseccion.Text & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Seccion ingresado correctamente", MsgBoxStyle.Information) End If End If EnlistarSecciones() End Sub Private Sub EnlistarSecciones() SQLQuery = "Select * from tbSeccion " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaSecciones .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txtseccion_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtseccion.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txtseccion_TextChanged(sender As Object, e As EventArgs) Handles txtseccion.TextChanged End Sub End Class

191

7.2.19 frmTablaSalarial

Public Class frmTablaSalarial Private Sub frmTablaSalarial_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarTablaSalarial() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btguardar.Click If objValidarDatos.txtvacio(txtgrupo.Text) Or objValidarDatos.txtvacio(txtgrado.Text) Or objValidarDatos.txtvacio(txtrmu.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "insert into tbTablaSalarial(Grupo,Grado,RMU) values('" & txtgrupo.Text & "','" & txtgrado.Text & "','" & Replace(txtrmu.Text, ",", ".") & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Grupo Salarial ingresado correctamente", MsgBoxStyle.Information) End If End If EnlistarTablaSalarial() End Sub Private Sub EnlistarTablaSalarial() SQLQuery = "Select * from tbTablaSalarial order by RMU desc" Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaTablaSalarial .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txtgrupo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtgrupo.KeyPress objValidarDatos.digitosletras(e) End Sub Private Sub txtgrupo_TextChanged(sender As Object, e As EventArgs) Handles txtgrupo.TextChanged End Sub Private Sub txtgrado_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtgrado.KeyPress objValidarDatos.solodigitos(e) End Sub

192

Private Sub txtgrado_TextChanged(sender As Object, e As EventArgs) Handles txtgrado.TextChanged End Sub Private Sub txtrmu_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtrmu.KeyPress objValidarDatos.solodigitos(e) End Sub Private Sub txtrmu_TextChanged(sender As Object, e As EventArgs) Handles txtrmu.TextChanged End Sub Private Sub dgvListaTablaSalarial_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaTablaSalarial.CellContentClick btguardar.Visible = False btActualizar.Visible = True txtgrupo.Text = dgvListaTablaSalarial.CurrentRow.Cells(1).Value txtgrado.Text = dgvListaTablaSalarial.CurrentRow.Cells(2).Value txtrmu.Text = dgvListaTablaSalarial.CurrentRow.Cells(3).Value End Sub Private Sub btActualizar_Click(sender As Object, e As EventArgs) Handles btActualizar.Click btActualizar.Visible = False btguardar.Visible = True SQLQuery = "update tbTablaSalarial set Grupo='" & txtgrupo.Text & "',grado=" & txtgrado.Text & ",RMU=" & txtrmu.Text & " where ID=" & dgvListaTablaSalarial.CurrentRow.Cells(0).Value objAccesoDatos.EjecutarSQL(SQLQuery) txtgrado.Text = "" txtgrado.Text = "" txtrmu.Text = "" EnlistarTablaSalarial() End Sub End Class

193

7.2.20 frmTiposRubros

Public Class frmTiposdeRubros Private Sub frmTiposdeRubros_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarRubros() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btgrabar.Click If objValidarDatos.txtvacio(txttiporubro.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "insert into tbTipoRubro (TipoRubro) values('" & txttiporubro.Text & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Tipo de Rubro ingresado correctamente", MsgBoxStyle.Information) End If End If EnlistarRubros() End Sub Private Sub EnlistarRubros() SQLQuery = "Select * from tbTipoRubro order by TipoRubro " Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaTipoRubros .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txttiporubro_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txttiporubro.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txttiporubro_TextChanged(sender As Object, e As EventArgs) Handles txttiporubro.TextChanged End Sub End Class

194

7.2.21 frmTiposRol

Public Class frmTiposRol Private Sub frmTiposRol_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Top = ((mdiPrincipal.Height / 3) - (Me.Height / 3)) Me.Left = ((mdiPrincipal.Width / 2) - (Me.Width / 2)) EnlistarRol() End Sub Private Sub btgrabar_Click(sender As Object, e As EventArgs) Handles btgrabar.Click If objValidarDatos.txtvacio(txttiporol.Text) Then MsgBox("Falta informacion.......") Else SQLQuery = "insert into tbTipoRol (Descripcion) values('" & txttiporol.Text & "')" If objAccesoDatos.EjecutarSQL(SQLQuery) > 0 Then MsgBox("Tipo de Rol ingresado correctamente", MsgBoxStyle.Information) End If End If EnlistarRol() End Sub Private Sub EnlistarRol() SQLQuery = "Select * from tbTipoRol order by Descripcion" Dim Tb As New DataTable objAccesoDatos.LlenarDataTable(SQLQuery, Tb) With dgvListaTipoRol .Columns.Clear() .DataSource = Tb .Refresh() .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells End With End Sub Private Sub btsalir_Click(sender As Object, e As EventArgs) Handles btsalir.Click Me.Close() End Sub Private Sub txttiporol_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txttiporol.KeyPress objValidarDatos.sololetras(e) End Sub Private Sub txttiporol_TextChanged(sender As Object, e As EventArgs) Handles txttiporol.TextChanged End Sub End Class

195

7.2.22 mdiPrincipal

Imports System.Windows.Forms Public Class mdiPrincipal Private Sub mdiPrincipal_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed objAccesoDatos.CerrarConexion() End Sub Private Sub mdiPrincipal_Load(sender As Object, e As EventArgs) Handles MyBase.Load Servidor = "FTACHON" 'Variables Globales del Sistemas BaseDatos = "RolGADV" objAccesoDatos = New clsSQLAccesoDatos(Servidor, BaseDatos) 'Instanciar la Clase objAccesoDatos.AbrirConexion() objGeografico = New clsGeografico(objAccesoDatos) objValidarDatos = New clsValidarDatos stServidor.Text = stServidor.Text & ":" & Servidor 'Me.MenuStrip.Enabled = False 'frmLogin.MdiParent = Me 'frmLogin.Show() End Sub Private Sub OptionsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FuncionarioToolStripMenuItem.Click frmNuevoFuncionario.MdiParent = Me frmNuevoFuncionario.Show() End Sub Private Sub FuncionariosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FuncionariosToolStripMenuItem.Click frmListadoFuncionarios.MdiParent = Me frmListadoFuncionarios.Show() End Sub Private Sub RubrosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RubrosToolStripMenuItem.Click frmEnlistarRubros.MdiParent = Me frmEnlistarRubros.Show() End Sub Private Sub TiposRolesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TiposRolesToolStripMenuItem.Click frmTiposRol.MdiParent = Me frmTiposRol.Show() End Sub Private Sub CrearEncabezadoNminaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CrearEncabezadoNminaToolStripMenuItem.Click frmEncabezadoNomina.MdiParent = Me frmEncabezadoNomina.Show() End Sub

196

Private Sub DetalleNminaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DetalleNminaToolStripMenuItem.Click frmEnlistaNomina.MdiParent = Me frmEnlistaNomina.Show() End Sub Private Sub TiposDeRubrosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TiposDeRubrosToolStripMenuItem.Click frmTiposdeRubros.MdiParent = Me frmTiposdeRubros.Show() End Sub Private Sub CargosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CargosToolStripMenuItem.Click frmCreacionCargos.MdiParent = Me frmCreacionCargos.Show() End Sub Private Sub UsuariosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UsuariosToolStripMenuItem.Click frmCrearUsuarios.MdiParent = Me frmCrearUsuarios.Show() End Sub Private Sub TablasSalarialesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TablasSalarialesToolStripMenuItem.Click frmTablaSalarial.MdiParent = Me frmTablaSalarial.Show() End Sub Private Sub DepartamentosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DepartamentosToolStripMenuItem.Click frmDepartamentos.MdiParent = Me frmDepartamentos.Show() End Sub Private Sub EdificacionesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EdificacionesToolStripMenuItem.Click frmEdificaciones.MdiParent = Me frmEdificaciones.Show() End Sub Private Sub SeccionesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SeccionesToolStripMenuItem.Click frmSecciones.MdiParent = Me frmSecciones.Show() End Sub Private Sub ParametrosLegalesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ParametrosLegalesToolStripMenuItem.Click frmParametrosLegales.MdiParent = Me frmParametrosLegales.Show() End Sub Private Sub TablaImpRentaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TablaImpRentaToolStripMenuItem.Click frmTablaIR.MdiParent = Me frmTablaIR.Show() End Sub Private Sub KardexToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KardexToolStripMenuItem.Click

197

frmKardexRoles.MdiParent = Me frmKardexRoles.Show() End Sub Private Sub ReportesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ReportesToolStripMenuItem.Click End Sub End Class

198

7.3 Modulos

7.3.1 Module mdGeneral

Module mdlGeneral 'Variables GLOBALES se usan en todo el sistema Public objAccesoDatos As clsSQLAccesoDatos Public objGeografico As clsGeografico Public objValidarDatos As clsValidarDatos Public SQLQuery As String Public Servidor As String Public BaseDatos As String Public usrBD As String Public usrclaveBD As String Public usrApp As String Public usrNivel As Integer End Module

199

VIII CONCLUSIONES

El manejo de informacin debe ser un proceso, que incluya seguridad, agilidad, y confiabilidad. Basndonos en el anlisis del proceso vigente se concluye que es necesario la implementacin de una aplicacin que permita cumplir con estos requerimientos, permitiendo a la institucin beneficiada brindar un mejor servicio a quieren la requieran.

Tras la realizacin de un estudio para una solucin del problema,

se

procedi al dise la base de datos pudimos observar que la misma es necesaria, teniendo en cuenta la informacin que se vaya a utilizar.

En relacin al diseo de la base de datos se procedi al desarrollo del software mediante la herramienta Visual Studio 2012, la misma que nos brinda facilidades, implementando sistemas seguros y poco costosos.

Se considera que el nuevo programa automatice de una manera eficaz la obtencin de roles de pagos, logrando un mejor rendimiento en el rea que se utilice, cumpliendo a su vez, con los objetivos planteados en el trabajo.

200

IX RECOMENDACIONES

Sugerimos el uso de la aplicacin realizada con la finalidad de cumplir con el objetivo general de esta investigacin, la misma que provee una herramienta gil, flexible y fcil de manejar, con sus respectivos formularios e interfaces y especificaciones para el efecto.

Se recomienda implementar y poner en practica la debida utilizacin de la base de datos, la cual que va de la mano con las herramientas de Visual Studio 2012.

Segn las condiciones con las que realizan los roles de pago sugerimos la utilizacin de este programa ya que optimiza la obtencin de la informacin requerida.

201

BIBLIOGRAFIA Y ANEXOS

10.1 Bibliografa Bsica

Libro:

Users Visual Basic: Luna Fernando O. Visual Basic. 1ra edicin. Buenos Aires: Fox Andina; Dalaga, 2011. v. 215, 352 p. 24x17 cm. (Manual Users) ISBN 997788 - 998877-11777733 - 5577 - 22

Casale Juan Carlos

Introduccin a la programacin. - 1ra edicin. -

Buenos Aires: Fox Andina; Dlaga, 2012. 384 p. 24x17 cm. - (Manual Users; 235) ISBN 978-987-1857-69-2

10.2 Fuente Primaria


Institucin:

Gobierno Autnomo Descentralizado de Valencia GAD-VALENCIA.

202

8.1.3 Complementaria

Linkografa:

1 2 3 4 5 6 7 8 9

http://msdn.microsoft.com/es-es/library/s0scsyfb.aspx http://msdn.microsoft.com/es-es/library/xfak08ea.aspx http://msdn.microsoft.com/es-es/library/yyfab68k.aspx http://msdn.microsoft.com/es-es/library/dzddyc7z.aspx http://msdn.microsoft.com/es-es/library/3ss05xx6.aspx http://msdn.microsoft.com/es-es/library/h20tc2c9.aspx http://msdn.microsoft.com/es-es/library/9h80cyht.aspx http://msdn.microsoft.com/es-es/library/2961245e.aspx http://msdn.microsoft.com/es-es/library/ms229641.aspx http://msdn.microsoft.com/es-es/library/keb37h7b.aspx http://msdn.microsoft.com/es-es/library/e0ywh3cz.aspx http://msdn.microsoft.com/es-es/library/4xyy1csh.aspx http://msdn.microsoft.com/es-es/library/6t3a1fcc.aspx http://msdn.microsoft.com/es-es/library/6xe2szb3.aspx http://msdn.microsoft.com/es-es/library/95ysxkwy.aspx http://msdn.microsoft.com/es-es/library/bb397853.aspx http://msdn.microsoft.com/es-es/library/zah8ywcc.aspx http://msdn.microsoft.com/es-es/library/z9xd9461.aspx http://msdn.microsoft.com/es-es/library/b086749c.aspx http://msdn.microsoft.com/es-es/library/scx9dha5.aspx http://msdn.microsoft.com/es-es/library/2ksk25ts.aspx http://msdn.microsoft.com/es-es/library/4zfkbw2e.aspx http://msdn.microsoft.com/es-es/library/yf5cywb3.aspx http://msdn.microsoft.com/es-es/library/4k7d0bhs.aspx http://msdn.microsoft.com/es-es/library/897fcdkf.aspx http://msdn.microsoft.com/es-es/library/h5a2t8d9.aspx 203

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

http://msdn.microsoft.com/es-es/library/6dwb14tw.aspx http://msdn.microsoft.com/es-es/library/tc73wss1.aspx http://msdn.microsoft.com/es-es/library/bbabas53.aspx http://msdn.microsoft.com/es-es/library/ms171649.aspx http://msdn.microsoft.com/es-es/library/3ehzhyst.aspx http://msdn.microsoft.com/es-es/library/7yyz6s5c.aspx http://msdn.microsoft.com/es-es/library/729xt55s.aspx http://msdn.microsoft.com/es-es/library/sf0cyy2s.aspx http://msdn.microsoft.com/es-es/library/db5y99f9.aspx http://msdn.microsoft.com/es-es/library/e63s4df3.aspx http://msdn.microsoft.com/es-es/library/37xzwa15.aspx http://msdn.microsoft.com/es-es/library/z9yx67hb.aspx http://msdn.microsoft.com/es-es/library/se805s02.aspx http://msdn.microsoft.com/es-es/library/zfk9y17w.aspx http://msdn.microsoft.com/es-es/library/36dhht1y.aspx http://msdn.microsoft.com/es-es/library/3e51y26z.aspx http://msdn.microsoft.com/es-es/library/8k52wyw2.aspx http://msdn.microsoft.com/es-es/library/3tdc88y7.aspx http://msdn.microsoft.com/es-es/library/w6sh4y16.aspx http://msdn.microsoft.com/es-es/library/w5bfdtza.aspx http://msdn.microsoft.com/es-es/library/h0w5ctby.aspx http://msdn.microsoft.com/es-es/library/z2cede5z.aspx http://msdn.microsoft.com/es-es/library/e8042es3.aspx http://msdn.microsoft.com/es-es/library/ms229738.aspx http://msdn.microsoft.com/es-es/library/4akwf92a.aspx http://msdn.microsoft.com/es-es/library/3a1tbfwd.aspx http://msdn.microsoft.com/es-es/library/sbxka1kb.aspx http://msdn.microsoft.com/es-es/library/h1c2h276.aspx http://msdn.microsoft.com/es-es/library/x53extbc.aspx http://msdn.microsoft.com/es-es/library/5daaw6hf.aspx http://msdn.microsoft.com/es-es/library/ms229623.aspx http://msdn.microsoft.com/es-es/library/ms229676.aspx http://msdn.microsoft.com/es-es/library/ms229739.aspx 204

60 61 62 63 64 65 66 66

http://msdn.microsoft.com/es-es/library/ms229621.aspx http://msdn.microsoft.com/es-es/library/he23h308.aspx http://msdn.microsoft.com/es-es/library/9z8yazex.aspx http://msdn.microsoft.com/es-es/library/ch6etkw4.aspx http://msdn.microsoft.com/es-es/library/2te2y1x6.aspx http://msdn.microsoft.com/es-es/library/zcbed30f.aspx http://www.slideshare.net/fre89/rol-de-pagosysusbeneficiossociales1 http://es.wikipedia.org/wiki/Sistema_de_informaci%C3%B3n

205

10.1 Anexos

10.1.1 Forma de Calculos Fondos Reservas, XIII XIV Sueldo

206

10.1.2 Tasas de aportacin al IESS hasta Marzo 2014

TASAS DE APORTACIN: (Resolucin CD. 261 de 2009-05-26)


TRABAJADORES DEL SECTOR PRIV ADO BAJO RELACIN DE DEPENDENCIA, ASI COM O DE LOS M IEM BROS DEL CLERO SECULAR CONCEPTO S. INVALIDEZ VEJEZ Y MURTE S. SALUD S. RIESGOS DEL TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES PERSONAL 6.64 0.00 0.00 2.00 0.35 0.36 9.35 PATRONAL 3.10 5.71 0.55 1.00 0.35 0.44 11.15 TOTAL 9.74 5.71 0.55 3.00 0.70 0.80 20.50

EM PLEADOS BANCARIOS, M UNICIPALES, AUTONOM OS NOTARIOS, REGISTRADOSRES DE PROPIEDAD Y M ERCANTILES CONCEPTO S. INVALIDEZ VEJEZ Y MURTE S. SALUD S. RIESGOS DEL TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES PERSONAL 8.64 0.00 0.00 2.00 0.35 0.36 11.35 PATRONAL 3.10 5.71 0.55 1.00 0.35 0.44 11.15 TOTAL 11.74 5.71 0.55 3.00 0.70 0.80 22.50

SERV IDORES PUBLICOS, INCLUIDOS LOS DE LA FUNCION JUDICIAL QUE PERCIBEN REM UNERACION V ARIABLE COM O ARANCELES CONCEPTO S. INVALIDEZ VEJEZ Y MURTE S. SALUD S. RIESGOS DEL TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES PERSONAL 8.64 0.00 0.00 2.00 0.35 0.36 11.35 PATRONAL 1.10 5.71 0.55 1.00 0.35 0.44 9.15 TOTAL 9.74 5.71 0.55 3.00 0.70 0.80 20.50

FUNCIONARIOS DEL SERV ICIO EXTERIOR RSIDENTES EN EL EXTRANJERO CONCEPTO S. INVALIDEZ VEJEZ Y MURTE S. SALUD S. RIESGOS DEL TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES PERSONAL 6.64 0.00 0.00 2.00 0.35 0.36 9.35 PATRONAL 3.10 3.71 0.55 1.00 0.35 0.44 9.15 TOTAL 9.74 3.71 0.55 3.00 0.70 0.80 18.50

207

TRABAJADORES TEM PORALES INDUSTRIA AZUCARERA CONCEPTO S. INVALIDE Z VE JE Z Y MURTE S. SALUD S. RIE SGOS DE L TRABAJO S. CE SANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES PERSONAL 12.34 0.00 0.00 4.00 0.35 0.36 17.05 M AGISTERIO NACIONAL M AESTROS FISCALES Y DE BIESTAR SOCIAL CONCEPTO S. INVALIDE Z VE JE Z Y MURTE S. SALUD S. RIE SGOS DEL TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION S. ADICIONAL MAGISTERIO TOTAL APORTES PERSONAL 8.64 0.00 0.00 2.00 0.35 0.36 5.00 16.35 PATRONAL 1.10 5.71 0.55 1.00 0.35 0.44 5.00 14.15 TOTAL 9.74 5.71 0.55 3.00 0.70 0.80 10.00 30.50 PATRONAL 3.87 10.42 1.01 2.00 0.35 1.00 18.65 TOTAL 16.21 10.42 1.01 6.00 0.70 1.36 35.70

TRABAJADORES CON SEGURO ADICIONAL DE GRAFICOS CORTADORES DE CAA PERM ANENTES DESDE 2006-12-01 CONCEPTO S. INVALIDE Z VEJEZ Y MURTE S. SALUD S. RIESGOS DE L TRABAJO S. CESANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION S. ADICIONAL GRAFICOS TOT AL APORTES PERSONAL 8.64 0.00 0.00 2.00 0.35 0.36 2.00 13.35 PAT RONAL 1.10 5.71 0.55 1.00 0.35 0.44 6.00 15.15 TOT AL 9.74 5.71 0.55 3.00 0.70 0.80 8.00 28.50

CORTADORES DE CAA TEM PORALES DESDE 2006-12-01 CONCEPTO S. INVALIDE Z VE JE Z Y MURTE S. SALUD S. RIE SGOS DE L TRABAJO S. CE SANTIA S. SOCIAL CAMPESINO GASTOS ADMINISTRACION S. AICIONAL C.CAA TEM. TOTAL APORTES PERSONAL 8.64 0.00 0.00 2.00 0.35 0.36 4.00 15.35 PATRONAL 1.10 5.71 0.55 1.00 0.35 0.44 12.00 21.15 TOTAL 9.74 5.71 0.55 3.00 0.70 0.80 16.00 36.50

208

TRABAJADORES AUTONOM OS, SIN RELACION DE DEPENDENCIA VOLUNTARIOS CONCEPTO S. INVALIDE Z VE JE Z Y MURTE S. SALUD S. RIE SGOS DE L TRABAJO S. SOCIAL CAMPESINO GASTOS ADMINISTRACION TOTAL APORTES JUBILADOS Y PENSIONISTAS CONCEPTO 13VA. 14VA. Y F. MORTUORIO TOTAL APORTES TOTAL 2.76 2.76 TOTAL 9.74 5.71 0.55 0.70 0.80 17.50

209

10.2 Interfase del programa

10.2.1 Menu Principal (Sistema Rol de Pago)

210

10.2.2 Parametros Legales

211

10.2.3 Funcionarios

212

10.2.4 Tipos de rubros

213

10.2.5 Enlistar rubros

214

10.2.6 Cargos

215

10.2.7 Tabla Salarial

216

10.2.8 Tipos de rol

217

10.2.9 Departamentos

218

10.2.10 Edificios

219

10.2.11 Secciones

220

10.2.12 Creacion de Usuarios

221

10.2.13 Creacion de encabezados nminas

222

10.2.14 Seleccin de nminas

223

10.2.15 Lista de funcionarios

224

10.2.16 Detalle Nomina

225

10.2.17 Nomina

226

10.2.18 Generar Nomina

227

10.2.19 Generar Nomina ok

228

229

10.2.20 Reporte Nomina Mensual

230

10.2.21 Reporte Individual

231

10.2.22 Matriz de datos

232

10.4 Glosario

AddHandler

Asocia un evento a un controlador de eventos en tiempo de ejecucin.

Boolean

Contiene valores que pueden ser slo True o False. Las palabras clave True y False corresponden a los dos estados de las variables Boolean.

ByRef

Indica que un argumento se pasa de tal forma que el procedimiento al que se ha llamado puede cambiar el valor de una variable subyacente al argumento en el cdigo que realiza la llamada.

ByVal

Indica que un argumento se pasa de tal forma que el procedimiento o la propiedad a la que se ha llamado no pueden cambiar el valor de una variable subyacente al argumento en el cdigo que realiza la llamada.

233

Call

Transfiere el control a un procedimiento Function, a un procedimiento Sub o a un procedimiento de la biblioteca de vnculos dinmicos (DLL).

Double

Contiene nmeros IEEE de punto flotante de doble precisin de 64 bits (8 bytes) que van de un valor de 1,79769313486231570E+308 a 4,94065645841246544E-324 para nmeros negativos y de

4,94065645841246544E-324 a 1,79769313486231570E+308 para nmeros positivos. Los nmeros de doble precisin almacenan aproximaciones de nmeros reales.

Each

Especifica la variable de bucle que se va a utilizar en un bucle For Each.


8

From

Especifica una o ms variables de rango y una coleccin que se va a consultar.

GetType

234

Devuelve un objeto Type para el tipo especificado. El objeto Type proporciona informacin sobre el tipo como sus propiedades, mtodos y eventos.

10

Into

Identifica funciones de agregado o agrupaciones para aplicar a una coleccin.

11

IsNot

Compara dos variables de referencia de objeto.

12

Join

Combina dos colecciones en una sola. La operacin de combinacin se basa en claves coincidentes y usa el operador Equals.

13

Namespace

Declara el nombre de un espacio de nombres y determina que el cdigo fuente que sigue a la declaracin se compile dentro de ese espacio de nombres.

235

14

Order By

Especifica el criterio de ordenacin del resultado de una consulta.

15

Public

Especifica que uno o varios elementos de programacin declarados no tienen ninguna restriccin de acceso.

16

RemoveHandler

Quita la asociacin entre un evento y un controlador de eventos.

17

Return

Devuelve el control al cdigo que llam a un procedimiento Function, Sub, Get, Set u Operator.

18

String

Contiene secuencias de puntos de cdigo de 16 bits sin signo (2 bytes) que van de un valor de 0 a 65535. Cada punto de cdigo, o cdigo de carcter, representa un carcter Unicode nico. Una cadena puede contener de 0 a 2.000 millones (2^31) de caracteres Unicode, aproximadamente.

236

19

Text

Establece el mtodo de comparacin de cadenas para ordenar caracteres de texto equivalentes como iguales.

20

WithEvents

Especifica que una o ms variable miembro declaradas hacen referencia a una instancia de una clase que puede provocar eventos.

237

You might also like