Вы находитесь на странице: 1из 39

Datos de prueba:

Ambiente de trabajo.

Funcionarios:
Nombre: Acua Cedula: 12345678 Direccin: 18 de Julio 123 Fecha Nac: 1/09/2011 Cargo: Jefe Afap: No Nombre: Azziz Cedula: 87654321 Direccin: Artigas 123 Fecha Nac: 9/09/2011 Cargo: Empleado Afap: No Cargos: Nombre: Jefe Descripcin: Oficina 501 Remuneracin: 40000 Nombre: Empleado Descripcin: Primer piso Remuneracin: 15000

Valores Remuneracin e Impuestos


Montepo Descuento (%): 15 Tope: 1000 IRPF Tope 1: 10000 Tope 2: 20000 Tope 3: 30000 Tope 1 Prima: 5000 Tope 2 Prima: 5000 Valor 1: 100 Valor 3: 300 Declaracion fonasa Sueldo Base (%): 3 Sin Hijos a cargo (%):1,5 Con Hijos a cargo (%):3 Con Cnyuge a cargo (%):2 Caja Profesional Categora A: 500 Categora B: 600 Categora C: 700 Categora D: 800 Categora E: 900

Categora F: 1000

Usuario Agregar Funcionario: Juan, 1122aabb, Bolivia 4455, 01 setiembre 1999, Jefe

Agregar Funcionario: Juan, 11223322, Bolivia 4455, 01 setiembre 1999, Sin cargo Agregar Funcionario: Juan, 12345678, Bolivia 4455, 01 setiembre 1999, Jefe

Agregar Funcionario: Juan, 99887766, Bolivia 4455, 01 setiembre 1999, Jefe

Modificar Usuario: El usuario anterior creado por: Sin nombre, Zorrilla 558, 05 setiembre, Jefe. Modificar Usuario: el usuario anterior creado por: Pedro, Sin direccin, 05 setiembre, Jefe. Modificar Usuario: el usuario anterior creado por: Pedro, Zorrilla 667, 05 setiembre, Jefe. Estados Usuario: Baja del usuario Pedro Estados usuario: Alta del usuario Pedro Remuneracin e impuestos, modificacin: Modificacion

Sistema Controla existencia de usuario por su cedula, verifica los datos ingresados y que todos los campos completos. Controla existencia de usuario por su cedula, verifica los datos ingresados y que todos los campos completos. Controla existencia de usuario por su cedula, verifica los datos ingresados y que todos los campos completos. Controla existencia de usuario por su cedula, verifica los datos ingresados y que todos los campos completos. Verifica los datos ingresados.

Lo que se espera ERROR

Resultado Los campos no pueden ser vacios y deben ser correctos

ERROR

Los campos no pueden ser vacios y deben ser correctos

ERROR

Ya existe usuario registrado con esa cedula.

Carga el funcionario al sistema

El usuario fue registrado con xito.

ERROR

Los campos no pueden ser vacios y deben ser correctos

Verifica los datos ingresados.

ERROR

Los campos no pueden ser vacios y deben ser correctos

Verifica los datos ingresados.

Modifica el usuario en el sistema

Datos actualizados con xito.

Verifica la seleccin de dicho usuario Verifica la seleccin de dicho usuario Verifica los datos ingresados y que ningn campo este vaco.

Pasa el usuario Pedro a la lista de bajas Pasa el usuario Pedro a la lista de altas ERROR

OK OK Los datos del descuento montepo se encuentran mal ingresados.

descuento montepo por 200. Remuneracin e impuestos, modificacin: Modificacion sueldo base por 120 Remuneracin e impuestos, modificacin: Modificacion sin hijos a cargo por 220 Remuneracin e impuestos, modificacin: Modificacion con hijos a cargo por 2200 Remuneracin e impuestos, modificacin: Modificacion con cnyuge a cargo por 1000 Remuneracin e impuestos, modificacin: Modificacin de tope 1 por 150000 Remuneracin e impuestos, modificacin: Modificacin de tope 2 por 500 Remuneracin e impuestos, modificacin: Modificacin de tope 1 prima por 665 Remuneracin e impuestos, modificacin: descuento montepo por 50, top2 montepo por 500, sueldo base por 80, tope 1 por 500, tope 2 por 600, tope 3 por 700 Remuneracin e impuestos,

Verifica los datos ingresados y que ningn campo este vaco. Verifica los datos ingresados y que ningn campo este vaco. Verifica los datos ingresados y que ningn campo este vaco.

ERROR

El sueldo base se encuentran mal ingresados

ERROR

El campo sin hijos a cargo se encuentran mal ingresados

ERROR

El campo con hijos a cargo se encuentran mal ingresados

Verifica los datos ingresados y que ningn campo este vaco.

ERROR

El campo con cnyuge a cargo se encuentran mal ingresados

Verifica los datos ingresados y que ningn campo este vaco. Verifica los datos ingresados y que ningn campo este vaco. Verifica los datos ingresados y que ningn campo este vaco. Verifica los datos ingresados y que ningn campo este vaco.

ERROR

Los datos de los topes se encuentran mal ingresados

ERROR

Los datos de los topes se encuentran mal ingresados

ERROR

Los campos de los topes prima se encuentran mal ingresados Los datos se actualizaron correctamente

Modifica todos los datos que se modificaron.

Verifica los datos ingresados y que

Modifica todos los datos que se

Los datos se actualizaron

modificacin: restauro los datos por defecto Agregar cargo: Gerente, Segundo Piso, 44aaa Agregar cargo: Gerente, Segundo Piso, sin remuneracin Agregar cargo: sin nombre, Segundo Piso, 44000 Agregar cargo: Gerente, Segundo Piso,58000 Modificar cargo: Cargo jefe, remuneracin 44aaa

ningn campo este vaco.

modificaron.

correctamente

Verifica los datos ingresados Verifica los datos ingresados

ERROR

ERROR

La remuneracin debe ser numrica y no vaca. La remuneracin debe ser numrica y no vaca. Debe ingresar un no nombre.

Verifica los datos ingresados Verifica los datos ingresados Verifica los datos ingresados y no vacios

ERROR

Registra el cargo en el OK Sistema ERROR La remuneracin debe de ser solo numrica y todos los campos no deben ser vacios La remuneracin debe de ser solo numrica y todos los campos no deben ser vacios OK

Modificar cargo: Cargo jefe, vacio campo nombre, remuneracin 12000 Modificar cargo: Cargo jefe, remuneracin 54000 Eliminar cargo: clic en el botn eliminar sin seleccionar cargo Eliminar cargo: Elimino cargo jefe Crear declaracin Fonasa: Sin funcionario, Con hijos a cargo, sin cnyuge a cargo, 30 setiembre 2011 Crear declaracin Fonasa: Acua, Con hijos a cargo, sin cnyuge a cargo, 30 setiembre 2011 Modificacin declaracin Fonasa: Acua, con hijos a cargo y con conyugue cargo, 20 setiembre

Verifica los datos ingresados y no vacios

ERROR

Verifica los datos ingresados y no vacios Verifica la seleccin de un cargo Verifica la seleccin de un cargo Verifica el usuario seleccionado y la correccin de la fecha.

ERROR

NO REALIZA TAREA

OK

Se d de baja en el sistema ERROR

OK Debe seleccionar un funcionario

Verifica el usuario seleccionado y la correccin de la fecha. Verifica el usuario seleccionado y la correccin de la fecha.

Registra la declaracin Fonasa al usuario seleccionado y la registra en el sistema ERROR

OK

La fecha de vigencia debe de ser mayor a la fecha actual de vigencia

2011 Modificacin declaracin Fonasa: Acua, con hijos a cargo y con conyugue cargo, 5 Octubre 2011 Crear Formulario 3100: Sin funcionario, 4 setiembre 2011, cant. Hijos 5, con caja jub, categora a Crear Formulario 3100: Azziz, 4 setiembre 2011, cant. Hijos vacio, con caja jub, categora a Crear Formulario 3100: Azziz, 4 setiembre 2011, cant. Hijos vacio 0, con caja jub,minimo imponible, sin categora Crear Formulario 3100: Azziz, 4 setiembre 2011, cant. Hijos 0, con caja jub, mnimo imponible, categora F Modificar Formulario 3100: Azziz, 4 setiembre 2011, cant. Hijos 0, con caja jub, mnimo imponible, sin categoria Modificar Formulario 3100: Azziz, 30 agosto 2011, cant. Hijos 0, con caja jub, mnimo imponible, categora F Modifica formulario 3100: Azziz, 19 de setiembre, cant hijos 3, minimo imponible, categora B Genero Excel: con el

Verifica el usuario seleccionado y la correccin de la fecha.

Modifica la declaracin y la almacena en el sistema

La fecha de vigencia debe de ser mayor a la fecha actual de vigencia

Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica el usuario seleccionado, control de todos los campos completos y la correccin de la fecha. Verifica la existencia

ERROR

Debe seleccionar un funcionario

ERROR

No puede haber campos sin completar.

ERROR

No puede haber campos sin completar.

Registra el formulario 3100 al funcionario y lo almacena en el sistema.

OK

ERROR

No puede haber campos sin completar.

ERROR La fecha de vigencia debe de ser mayor a la fecha actual de vigencia Registra la modificacin del formulario 3100 del funcionario seleccionado ERROR OK

No hay datos en el

sistema vacio Genero Excel:

Genero Excel:

de funcionarios en el sistema Verifica la existencia de funcionarios en el sistema Verifica la existencia de funcionarios en el sistema Verifica la existencia de funcionarios en el sistema Verifica la existencia de datos en el sistema Verifica la existencia de datos en el sistema

sistema Carga la ventana de Excel con el listado de funcionarios activos Carga la ventana de Excel con el listado de funcionarios activos (Acua, Azziz, Pedro) Carga la ventana de Excel con el listado de funcionarios activos (Acua, Azziz) ERROR Carga ventana de Excel Carga ventana de Excel, los funcionarios Acua, Azziz y Pedro Carga ventana de Excel, los funcionarios Acua, Azziz No hay datos en el sistema El archivo fue generado con xito, genera BPS.txt con el usuario Acua y Azziz

Genero Excel: Doy de baja el usuario Pedro

Genero documento BPS: con el sistema vacio Genero documento BPS: con el sistema con datos

Carga el archivo BPS.txt con los datos de los funcionarios activos

Ambiente de trabajo para consultas y modificacin de Impuestos Funcionario: Azziz Cargo con remuneracin 25000 Formulario 3100: 1 hijo a cargo, fondo solidaridad Valores Imp.: Tope 1 es 10000, tope 2 es 20000, tope 3 es 30000, porcentajes descuento son de hasta tope 1 es 0%, hasta tope 2 es 10%, hasta tope 3 es 15%, por cada hijo es 1000, por fondo de solidaridad es 500, tope 1 prima es de 5000, tope 2 prima es de 5000, hasta tope 1 prima el descuento es de 10%, hasta tope 2 prima el descuento es de 15%.

Usuario Consulta remuneracin e impuesto: Funcionario Azziz Modifico remuneracin cargo: 3000 Consulta remuneracin e impuesto: Funcionario Azziz

Sistema Calcula los datos

Calcula los datos

Lo que se espera Resultado Montepo = 3750 OK Medico Fonasa =1125 IRPF = 1600 Saldo final=18525 Modifica el valor de OK la remuneracin Montepo = 4500 OK Medico Fonasa =1350 IRPF = 2350 Saldo final=21800

Calcula los datos

Caso de Uso
Nombre: Autor: Crear Usuario Empleado

Descripcin: Permite crear un usuario en el Sistema. Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Funcionario, Agregar. 2. El sistema pide el ingreso de: Nombre, Cedula, Direccion, Fecha de nacimiento, Cargo, Foto del usuario a registrar 3. El actor introduce todos los datos. 4. El sistema comprueba la validez de los datos y los almacena. Flujo Alternativo: 1. El sistema comprueba que exista un cargo ya creado para podes asignrselo al funcionario a crear, no permite crear sin cargos ya creados con aterioridad. 2. El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al actor de ello permitindole que los corrija Los errores posibles son: 1- Debe completar todos los datos, con excepcin de la foto que no es obligatoria. 2- La cedula debe de ser numrica y de 8 dgitos Nombre: Autor: Modificacin de Usuario Empleado

Descripcin: Permite modificar los usuarios del Sistema. Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Funcionario, Modificar. 2. El usuario selecciona un funcionario de la lista. Carga los datos ya cargados de dicho funcionario seleccionado. 3. El actor introduce todos los datos a modificar 4. El sistema comprueba la validez de los datos y los almacena. Flujo Alternativo: 1. Si no existen funcionarios creados, no permite modificar. 2. Debe seleccionar un funcionario para modificar los datos del mismo. 3. El sistema comprueba la validez de los datos, si los datos no son correctos, se avisa al actor de ello permitindole que los corrija. Los errores posibles son: 1No debe dejar ningn campo vacio.

2- La cedula debe de ser numrica y de 8 digitos.

Nombre: Autor:

Alta y baja de Usuario Empleado

Descripcin: Permite dar de baja los usuarios del Sistema. Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Funcionario, Estados. 2. El usuario selecciona un funcionario de la lista y presiona el botn da de alta 3. El sistema modifica el usuario seleccionar como dado de baja y los almacena. Flujo Alternativo: 2. Si no selecciona ningn funcionario y presiona el boto, el sistema no realiza nada.

Nombre: Autor:

Consulta de impuestos Empleado

Descripcin: Permite consultar los impuestos que le corresponde a cada funcionario registrado en el sistema dependiendo de su remuneracin. Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Funcionario, remuneracin e impuesto. 2. El usuario selecciona un funcionario de la lista y se carga automticamente los impuestos, el nombre y la remuneracin del funcionario seleccionado 3. Calcula el saldo final, la remuneracin. Flujo Alternativo:

Nombre: Autor:

Modificacion de los impuestos Empleado

Descripcin: Permite modificar los rangos de los impuestos a calcular, tanto el montepo , el medico Fonasa como el IRPF Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Funcionario, remuneracin e impuesto, modificar valores. 2. El usuario modifica todos los datos de los valores para calcular los impuestos 3. Hace clic en el botn actualizar y almacena todos los valores en el sistema Flujo Alternativo: 2.1 El usuario ingresa cualquier descuento (%) mayor a 100. 2.2 El usuario ingresa cualquier tope o descuento negativo. 2.3 El usuario deja cualquier campos en blanco.

Nombre: Autor:

Agregar cargo Empleado

Descripcin: Permite agregar cargo en el sistema. Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Cargo,agregar. 2. El usuario ingresa los datos. 3. Hace clic en el botn agregar y almacena todos los valores en el sistema Flujo Alternativo: 2.1 El Usuario deja el nombre vacio 2.2 El usuario no coloca valores numricos en la remuneracin 2.3 El usuario deja vacio el campo remuneracion

Nombre: Autor:

Modificar cargo Empleado

Descripcin: Permite modificar cualquier cargo ingresado en el sistema Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Cargo,Modificar. 2. El usuario selecciona cualquier cargo ingresado en el sistema, se le habilitan los campos para modificar todos los datos. 3. Hace clic en el botn Actualizar y almacena todos los valores en el sistema Flujo Alternativo: 2.1 El Usuario deja el nombre vacio 2.2 El usuario no coloca valores numricos en la remuneracin 2.3 El usuario deja vacio el campo remuneracin

Nombre: Autor:

Eliminar cargo Empleado

Descripcin: Permite dar de baja cualquier cargo ingresado en el sistema que no tenga ningn funcionario asociado Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Cargo,Eliminar. 2. El usuario selecciona cualquier cargo ingresado en el sistema 3. Hace clic en el botn Eliminar , automticamente se da de baja en la lista y lo elimina del sistema Flujo Alternativo:

Nombre: Autor:

Declaracion Fonasa Empleado

Descripcin: Permite cargar o modificar cualquier declaracin Fonasa asociado a un usuario Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Declaracin, declaracin Fonasa. 2. El usuario selecciona cualquier funcionario de la lista y cargar todos los datos de dicha declaracin 3. Hace clic en el botn Aceptar y almacena todos los valores en el sistema Flujo Alternativo: 2.1 El Usuario no selecciona ningn funcionario 2.2- El Usuario selecciona una fecha anterior a la fecha actual de la declaracion Nombre: Autor: Formulario 3100 Empleado

Descripcin: Permite cargar o modificar cualquier Formulario 3100 asociado a un usuario Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Declaracin, Formulario 3100. 2. El usuario selecciona cualquier funcionario de la lista y cargar todos los datos de dicha declaracin. 3. Hace clic en el botn Aceptar y almacena todos los valores en el sistema Flujo Alternativo: 2.1 El Usuario no selecciona ningn funcionario 2.2 - El Usuario selecciona una fecha anterior a la fecha actual de la declaracin. 2.3 Si el usuario selecciono la opcin caja profesional y no selecciona categora

Nombre: Autor:

Generar archivo Excel Empleado

Descripcin: Permite crear un archivo de Excel con el listado de todos los usuarios activo que pertenecen al sistema Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Documento, Archivo Funcionario. 2. Se genera el archivo de Excel 3. Carga la pantalla de Excel con todo el listado de los funcionarios. Flujo Alternativo: 2.1 El Sistema se encuentra vacio 2.2 No existen funcionarios activos

Nombre: Autor:

Documento para el BPS Empleado

Descripcin: Permite crear un archivo con todo el listado de los funcionarios activos con la informacin del seguro de salud Actores: Usuario. Flujo Normal: 1. El actor pulsa sobre el men Documento, Documento BPS. 2. Se genera el archivo .txt Flujo Alternativo: 2.1 El Sistema se encuentra vacio 2.2 No existen funcionarios activos

Cdigo
Clase cargo
<Serializable()> Public Class Cargo #Region "VARIABLES DE CLASE" Private _nombreCargo As String Private _identificadorCargo As Integer Private _descripcion As String Private _remuneracion As Double Private _listaFuncionarios As List(Of Funcionario) #End Region #Region "METODOS DE ACCESO Y MODIFICACION" 'IDENTIFICADOR DE CARGO Public Property getSetIdentificador() As Integer Get Return Me._identificadorCargo End Get Set(ByVal value As Integer) Me._identificadorCargo = value End Set End Property 'DESCRIPCION DE CARGO Public Property getSetDescripcion() As String Get Return Me._descripcion End Get Set(ByVal value As String) Me._descripcion = value End Set End Property 'REMUNERACION DE CARGO Public Property getSetRemuneracion() As Double Get Return Me._remuneracion End Get Set(ByVal value As Double) Me._remuneracion = value End Set End Property 'NOMBRE DEL CARGO Public Property getSetNombre() As String Get Return Me._nombreCargo End Get Set(ByVal value As String) Me._nombreCargo = value End Set End Property #End Region #Region "METODOS DE FUNCIONARIO" 'METODO PARA AGREGAR FUNCIONARIO A LA LISTA Public Function agregarFun(ByVal unFuncionario As Funcionario) As Boolean

Dim registrado As Boolean = False If Me._listaFuncionarios.Count = 0 Then Me._listaFuncionarios.Add(unFuncionario) registrado = True Else For i As Integer = 0 To Me._listaFuncionarios.Count - 1 'VERIFICA QUE NO EXISTA UN FUNCIONARIO CON ESTA CEDULA If Not Me._listaFuncionarios.Item(i).cedula = unFuncionario.cedula Then Me._listaFuncionarios.Add(unFuncionario) registrado = True End If Next End If Return registrado End Function 'METODO PARA BUSCAR UN FUNCIONARIO EN LA LISTA Y RETORNARLO Public Function buscarFuncionario(ByVal nroFuncionario As Integer) As Funcionario Dim unFun As Funcionario = Nothing For i As Integer = 0 To Me._listaFuncionarios.Count - 1 If Me._listaFuncionarios.Item(i).numFunc = nroFuncionario Then unFun = Me._listaFuncionarios.Item(i) End If Next Return unFun End Function 'METODO PARA RETORNAR LA LISTA DE FUNCIONARIOS Public ReadOnly Property getListaFuncionarios() As List(Of Funcionario) Get Return _listaFuncionarios End Get End Property #End Region 'CONSTRUCTOR POR PARAMETROS Public Sub New(ByVal nombre As String, ByVal descripcion As String, ByVal remuneracion As Double, ByVal identifi As Integer) Me._nombreCargo = nombre Me._descripcion = descripcion Me._identificadorCargo = identifi Me._remuneracion = remuneracion Me._listaFuncionarios = New List(Of Funcionario) End Sub 'METODO PARA ACTUALIZAR LOS DATOS DE UN CARGO AL SER MODIFICADOS Public Function actualizarDatos(ByVal nomb As String, ByVal desc As String, ByVal remun As Integer) As Boolean Me.getSetNombre = nomb Me.getSetDescripcion = desc Me.getSetRemuneracion = remun End Function 'METODO PARA ELIMINAR UN FUNCIONARIO DE LA LISTA DE CARGO Public Function eliminarFuncionario(ByVal unFuncionario As Funcionario) As Boolean

Me.getListaFuncionarios.Remove(unFuncionario) End Function Public Overrides Function ToString() As String Return String.Format(Me.getSetNombre.ToString) End Function End Class

Clase declaracin Fonasa:


<Serializable()> Public Class DeclaracionFonasa Inherits Formulario Private _tieneHijos As Boolean Private _conyugeCargo As Boolean Private _fechaVigencia As Date Public Sub New() Me.tieneHijos = True Me.conyugeCargo = False End Sub #Region "METODOS DE ACCESO Y MODIFICACION" Public Property fechaVigencia() As Date Get Return Me._fechaVigencia End Get Set(ByVal value As Date) Me._fechaVigencia = value End Set End Property Public Property tieneHijos() As Boolean Get Return Me._tieneHijos End Get Set(ByVal value As Boolean) Me._tieneHijos = value End Set End Property Public Property conyugeCargo() As Boolean Get Return Me._conyugeCargo End Get Set(ByVal value As Boolean) Me._conyugeCargo = value End Set End Property #End Region 'METODO PARA AGREGAR UNA DECLARACION Public Function agregoDec(ByVal tienehijos As Boolean, ByVal conyCargo As Boolean, ByVal fecha As Date) As Boolean If fecha > Me.fechaVigencia Then Me.conyugeCargo = conyCargo Me.tieneHijos = tienehijos fechaVigencia = fecha Return True Else Return False End If End Function

End Class

Clase formulario:
<Serializable()> Public Class Formulario #Region "VARIABLES DE CLASE" Private _funcionario As Funcionario Private _maxFecha As Date = Now #End Region #Region "METODOS DE ACCESO Y MODIFICACION" 'FUNNCIONARIO Public Property funcionario() As Funcionario Get Return Me._funcionario End Get Set(ByVal value As Funcionario) Me._funcionario = value End Set End Property 'MAXIMA FECHA Public Property maximoFecha() As Date Get Return Me._maxFecha End Get Set(ByVal value As Date) Me._maxFecha = value End Set End Property #End Region End Class

Clase Formulario 3100:


<Serializable()> Public Class Formulario3100 Inherits Formulario #Region "VARIABLES DE CLASE" Private _cantHijos As Integer Private _cajaJub As Boolean Private _fondoSol As Boolean Private _minImponible As Boolean Private _categoria As String Private _fechaVigencia As Date #End Region #Region "METODOS DE ACCESO Y MODIFICACION" 'CANTIDAD DE HIJOS Public Property cantHijos() As Integer Get Return Me._cantHijos End Get Set(ByVal value As Integer) Me._cantHijos = value End Set End Property 'CAJA JUBILACION Public Property cajaJub() As Boolean Get Return Me._cajaJub End Get Set(ByVal value As Boolean) Me._cajaJub = value End Set End Property 'FONDO SOLIDARIO Public Property FondoSol() As Boolean Get Return Me._fondoSol End Get Set(ByVal value As Boolean) Me._fondoSol = value End Set End Property 'MINIMO IMPONIBLE Public Property minImponible() As Boolean Get Return Me._minImponible End Get Set(ByVal value As Boolean) Me._minImponible = value End Set End Property 'CATEGORIA Public Property categoria() As String Get Return Me._categoria End Get Set(ByVal value As String) Me._categoria = value

End Set End Property 'FECHA VIGENCIA Public Property fechaVigencia() As Date Get Return Me._fechaVigencia End Get Set(ByVal value As Date) Me._fechaVigencia = value End Set End Property #End Region 'METODO PARA ASIGNAR UN FORM 3100 A UN FUNCIONARIO Public Function agregarForm(ByVal chijos As Integer, ByVal cjub As Boolean, ByVal fsol As Boolean, ByVal min As Boolean, ByVal cat As String, ByVal fecha As Date) As Boolean If fecha > fechaVigencia Then Me.cantHijos = chijos Me.cajaJub = cjub Me.FondoSol = fsol Me.minImponible = min Me.categoria = cat fechaVigencia = fecha Return True Else Return False End If End Function End Class

Clase Funcionario:
<Serializable()> Public Class Funcionario #Region "VARIABLES DE CLASE" Private _nroFuncionario As Integer Private _nombre As String Private _cedula As Integer Private _direccion As String Private _diaNacimiento As Integer Private _mesNacimiento As String Private _anoNaciemiento As Integer Private _cargo As Cargo Private _afiliadoAfap As Boolean Private _foto As String Private _declaracionFonasa As DeclaracionFonasa Private _formulario3100 As Formulario3100 Private _activo As Boolean Private _montepio As Double Private _medicoFonsa As Double Private _irpf As Double #End Region #Region "METODOS DE ACCESO Y MODIFICACION" 'NUMERO DE FUNCIONARIO Public Property numFunc() As Integer Get Return Me._nroFuncionario End Get Set(ByVal value As Integer) Me._nroFuncionario = value End Set End Property 'CEDULA DE FUNCIONARIO Public Property cedula() As Integer Get Return Me._cedula End Get Set(ByVal value As Integer) Me._cedula = value End Set End Property 'NOMBRE DE FUNCIONARIO Public Property nombre() As String Get Return Me._nombre End Get Set(ByVal value As String) Me._nombre = value End Set End Property 'DIRECCION DE FUNCIONARIO Public Property direccion() As String Get Return Me._direccion End Get

Set(ByVal value As String) Me._direccion = value End Set End Property 'DIA NACIMIENTO FUNCIONARIO Public Property diaNacimiento() As Integer Get Return Me._diaNacimiento End Get Set(ByVal value As Integer) Me._diaNacimiento = value End Set End Property 'MES NACIMIENTO FUNCIONARIO Public Property mesNacimiento() As String Get Return Me._mesNacimiento End Get Set(ByVal value As String) Me._mesNacimiento = value End Set End Property 'ANO NACIMIENTO FUNCIONARIO Public Property anoNacimiento() As Integer Get Return Me._anoNaciemiento End Get Set(ByVal value As Integer) Me._anoNaciemiento = value End Set End Property 'CARGO DE FUNCIONARIO Public Property cargo() As Cargo Get Return Me._cargo End Get Set(ByVal value As Cargo) Me._cargo = value End Set End Property 'FUNCIONARIO ACTIVO Public Property activo() As Boolean Get Return Me._activo End Get Set(ByVal value As Boolean) Me._activo = value End Set End Property 'AFILIADO A AFAP Public Property afiliado() As Boolean Get Return Me._afiliadoAfap End Get Set(ByVal value As Boolean)

Me._afiliadoAfap = value End Set End Property 'DECLARACION FONASA Public Property declaracionFonasa() As DeclaracionFonasa Get Return Me._declaracionFonasa End Get Set(ByVal value As DeclaracionFonasa) Me._declaracionFonasa = value End Set End Property 'FORMULARIO 3100 Public Property formulario3100() As Formulario3100 Get Return Me._formulario3100 End Get Set(ByVal value As Formulario3100) Me._formulario3100 = value End Set End Property 'MONTEPIO Public Property montepio() As Double Get Return Me._montepio End Get Set(ByVal value As Double) Me._montepio = value End Set End Property 'MEDICO FONASA Public Property medicoFonasa() As Double Get Return Me._medicoFonsa End Get Set(ByVal value As Double) Me._medicoFonsa = value End Set End Property 'MEDICO FONASA Public Property irpf() As Double Get Return Me._irpf End Get Set(ByVal value As Double) Me._irpf = value End Set End Property 'FOTO DE FUNCIONARIO Public Property imagen() As String Get Return Me._foto End Get Set(ByVal value As String) Me._foto = value End Set End Property

#End Region 'CONSTRUCTOR POR PARAMETROS Public Sub New(ByVal cedula As Integer, ByVal nombre As String, ByVal direccion As String, ByVal diaNaci As Integer, ByVal mesNaci As String, ByVal anoNaci As Integer, ByVal cargo As Cargo, ByVal afAfap As Boolean, ByVal numeroFun As Integer, ByVal foto As String) Me._afiliadoAfap = afAfap Me._anoNaciemiento = anoNaci Me._cargo = cargo Me._cedula = cedula Me._diaNacimiento = diaNaci Me._direccion = direccion Me._mesNacimiento = mesNaci Me._nombre = nombre Me._nroFuncionario = numeroFun Me._formulario3100 = New Formulario3100 Me._declaracionFonasa = New DeclaracionFonasa Me._activo = True Me._foto = foto

End Sub 'TOSTRING Public Overrides Function ToString() As String Return String.Format(Me.nombre & " Numero: " & Me.numFunc & " Cargo: " & Me.cargo.getSetNombre) End Function 'METODO PARA ACTUALIZAR DATOS DE UN FUNCIONARIO AL SER MODIFICADO Public Function actualizarDatos(ByVal nom As String, ByVal dir As String, ByVal diaNac As Integer, ByVal mesNac As String, ByVal anioNac As Integer, ByVal cargo As Cargo, ByVal imag As String) As Boolean Me.nombre = nom Me.direccion = dir Me.diaNacimiento = diaNac Me.mesNacimiento = mesNac Me.anoNacimiento = anioNac Me.cargo = cargo If imag <> Nothing Then Me.imagen = imag End If End Function 'CARGAR FORMULARIO 3100 Public Function cargarForm3100(ByVal chijos As Integer, ByVal cjub As Boolean, ByVal fsol As Boolean, ByVal min As Boolean, ByVal cat As String, ByVal fecha As Date) As Boolean Return Me.formulario3100.agregarForm(chijos, cjub, fsol, min, cat, fecha) End Function 'CARGAR DECLARACION FONASA Public Function cargarDecFonasa(ByVal hijCargo As Boolean, ByVal conyCargo As Boolean, ByVal fecha As Date) As Boolean Return Me.declaracionFonasa.agregoDec(hijCargo, conyCargo, fecha) End Function

End Class

Clase iObservable:
Public Interface Iobservable Sub actualizar() Sub registrar(ByVal unObservador As Iobservador) Sub desregistrar(ByVal unObservador As Iobservador) End Interface

Clase iObservador:
Public Interface Iobservador Sub actualizar() End Interface

Clase Sistema
Imports System.IO Imports System.Drawing.Printing <Serializable()> Public Class Sistema #Region "VARIABLES DE CLASE" Private _listaCargos As List(Of Cargo) Private _listaFuncionarios As List(Of Funcionario) Private _identificadorCargo As Integer = 1 Private _identificadorFuncionario As Integer = 1 Private Private Private Private Private Private _desMontepio As Double _topeMontepio As Double _desnoHijoCargo As Double _desTieneHijosCargo As Double _desConyCargo As Double _sueldoBase As Double

Private _tope1 As Double Private _tope2 As Double Private _tope3 As Double Private Private Private Private Private _tope1Descuento As Double _tope2Descuento As Double _tope3Descuento As Double _tope4Descuento As Double _cajaProfesional(6) As Integer

Private _tope1prima As Double Private _tope2prima As Double Private _tope3prima As Double Private _valor1 As Double Private _valor3 As Double Private _tope1DescuentoPrima As Double Private _tope2DescuentoPrima As Double

Private _tope3DescuentoPrima As Double Private listaErrores As List(Of String) Private Shared _elSistema As Sistema #End Region Public Shared ReadOnly Property elSistema() As Sistema Get If Sistema._elSistema Is Nothing Then Sistema._elSistema = Serializar.deserializar() If Sistema._elSistema Is Nothing Then Sistema._elSistema = New Sistema End If End If Return Sistema._elSistema End Get End Property Public Sub New() _listaCargos = New List(Of Cargo) _listaFuncionarios = New List(Of Funcionario) _desMontepio = 0.15 _topeMontepio = 1000 _sueldoBase = 0.03 _desnoHijoCargo = 0.015 _desTieneHijosCargo = 0.03 _desConyCargo = 0.02 _tope1 = 10000 _tope2 = 20000 _tope3 = 30000 _tope2Descuento _tope2Descuento _tope3Descuento _tope4Descuento = = = = 0 0.1 0.15 0.2

Dim monto As Integer = 500 For i As Integer = 0 To Me._cajaProfesional.Length - 1 Step 1 _cajaProfesional(i) = monto monto += 100 Next _tope1prima = 5000 _tope2prima = 5000 _tope1DescuentoPrima = 0.1 _tope2DescuentoPrima = 0.15 _tope3DescuentoPrima = 0.2 _valor1 = 100 _valor3 = 300 End Sub #Region "METODOS DE ACCESO Y MODIFICACION" Public Property identCargo() As Integer

Get Return Me._identificadorCargo End Get Set(ByVal value As Integer) Me._identificadorCargo = value End Set End Property Public Property identFuncionario() As Integer Get Return Me._identificadorFuncionario End Get Set(ByVal value As Integer) Me._identificadorFuncionario = value End Set End Property Public Property desMontepio() As Double Get Return Me._desMontepio End Get Set(ByVal value As Double) Me._desMontepio = value End Set End Property Public Property topeMontepio() As Double Get Return Me._topeMontepio End Get Set(ByVal value As Double) Me._topeMontepio = value End Set End Property Public Property desNoHijoCargo() As Double Get Return Me._desnoHijoCargo End Get Set(ByVal value As Double) Me._desnoHijoCargo = value End Set End Property Public Property desTieneHijosCargo() As Double Get Return Me._desTieneHijosCargo End Get Set(ByVal value As Double) Me._desTieneHijosCargo = value End Set End Property Public Property desConyCargo() As Double Get Return Me._desConyCargo End Get Set(ByVal value As Double) Me._desConyCargo = value End Set End Property

Public Property sueldoBase() As Double Get Return Me._sueldoBase End Get Set(ByVal value As Double) Me._sueldoBase = value End Set End Property Public Property tope1() As Double Get Return Me._tope1 End Get Set(ByVal value As Double) Me._tope1 = value End Set End Property Public Property tope2() As Double Get Return Me._tope2 End Get Set(ByVal value As Double) Me._tope2 = value End Set End Property Public Property tope3() As Double Get Return Me._tope3 End Get Set(ByVal value As Double) Me._tope3 = value End Set End Property Public Property tope1Descuento() As Double Get Return Me._tope1Descuento End Get Set(ByVal value As Double) Me._tope1Descuento = value End Set End Property Public Property tope2Descuento() As Double Get Return Me._tope2Descuento End Get Set(ByVal value As Double) Me._tope2Descuento = value End Set End Property Public Property tope3Descuento() As Double Get Return Me._tope3Descuento End Get Set(ByVal value As Double) Me._tope3Descuento = value

End Set End Property Public Property tope4Descuento() As Double Get Return Me._tope4Descuento End Get Set(ByVal value As Double) Me._tope4Descuento = value End Set End Property Public Property tope1prima() As Double Get Return Me._tope1prima End Get Set(ByVal value As Double) Me._tope1prima = value End Set End Property Public Property tope2prima() As Double Get Return Me._tope2prima End Get Set(ByVal value As Double) Me._tope2prima = value End Set End Property Public Property tope3prima() As Double Get Return Me._tope3prima End Get Set(ByVal value As Double) Me._tope3prima = value End Set End Property Public Property valor1() As Double Get Return Me._valor1 End Get Set(ByVal value As Double) Me._valor1 = value End Set End Property Public Property valor3() As Double Get Return Me._valor3 End Get Set(ByVal value As Double) Me._valor3 = value End Set End Property Public Property tope1DescuentoPrima() As Double Get Return Me._tope1DescuentoPrima End Get

Set(ByVal value As Double) Me._tope1DescuentoPrima = value End Set End Property Public Property tope2DescuentoPrima() As Double Get Return Me._tope2DescuentoPrima End Get Set(ByVal value As Double) Me._tope2DescuentoPrima = value End Set End Property Public Property tope3DescuentoPrima() As Double Get Return Me._tope3DescuentoPrima End Get Set(ByVal value As Double) Me._tope3DescuentoPrima = value End Set End Property #End Region #Region "METODOS DE CARGO" 'METODO PARA AGREGAR CARGO A LA LISTA Public Function agregarCargo(ByVal unCargo As Cargo) As Boolean Me._listaCargos.Add(unCargo) identCargo += 1 End Function 'METODO PARA RETORNAR LA LISTA DE CARGOS Public ReadOnly Property getListaCargo() As List(Of Cargo) Get Return _listaCargos End Get End Property 'METODO PARA BUSCAR CARGO POR IDENTIFICADOR Public Function buscarCargo(ByRef nroCargo As Integer) As Cargo Dim unCargo As Cargo = Nothing For i As Integer = 0 To Me._listaCargos.Count - 1 If Me._listaCargos.Item(i).getSetIdentificador = nroCargo Then unCargo = Me._listaCargos.Item(i) End If Next Return unCargo End Function 'METODO PARA ELIMINAR UN CARGO DE LISTA Public Function eliminarCargo(ByVal unCargo As Cargo) As Boolean Me.getListaCargo.Remove(unCargo) End Function 'METODO QUE DETERMINA SI HAY CARGOS PARA ELIMINAR Public Function hayCargosEliminar() As Boolean Dim hayCargos As Boolean = False For i As Integer = 0 To Sistema.elSistema.getListaCargo.Count - 1

If Sistema.elSistema.getListaCargo.Item(i).getListaFuncionarios.Count = 0 Then hayCargos = True End If Next Return hayCargos End Function #End Region #Region "METODOS DE FUNCIONARIO" 'METODO PARA AGREGAR FUNCIONARIO A LA LISTA Public Function agregarFuncionario(ByVal unFuncionario As Funcionario) As Boolean Me._listaFuncionarios.Add(unFuncionario) identFuncionario += 1 End Function 'METODO PARA RETORNAR LA LISTA DE FUNCIONARIOS Public ReadOnly Property getListaFuncionario() As List(Of Funcionario) Get Return Me._listaFuncionarios End Get End Property 'METODO PARA BUSCAR UN FUNCIONARIO POR SU NUMERO Public Function buscarFuncionarioPorNumero(ByVal numero As Integer) As Funcionario Dim unFuncionario As Funcionario = Nothing For i As Integer = 0 To Me._listaFuncionarios.Count - 1 If Me._listaFuncionarios.Item(i).numFunc = numero Then unFuncionario = Me._listaFuncionarios.Item(i) End If Next Return unFuncionario End Function 'METODO PARA VALIDAR EL REGISTRO DE UN FUNCIONARIO Public Function validarRegistroFun(ByVal nombre As String, ByVal cedula As Integer, ByVal direccion As String, ByVal diaNac As Integer, ByVal mesNacim As String, ByVal anoNac As Integer, ByVal cargo As Integer) As Boolean Dim ced As String = CStr(cedula) Dim valido As Boolean = False If Not nombre = "" Then If ced.Length = 8 Then If Not direccion = "" Then If Not diaNac = Nothing And Not mesNacim = Nothing And Not anoNac = Nothing Then If Not cargo = Nothing Then valido = True End If End If End If End If End If Return valido End Function

'METODO PARA CONTROL DE FUNCIONARIOS ACTIVOS Public Function funActivos() As List(Of Funcionario) Dim listaActivos As New List(Of Funcionario) For i As Integer = 0 To getListaFuncionario.Count - 1 If Me.getListaFuncionario.Item(i).activo Then listaActivos.Add(Me.getListaFuncionario.Item(i)) End If Next Return listaActivos End Function 'METODO PARA DETERMINAR SI HAY FUNCIONARIOS ACTIVOS EN EL SISTEMA Public Function hayFunActivos() As Boolean Dim hay = False If Me.funActivos.Count <> Nothing Then hay = True End If Return hay End Function 'METODO PARA ELIMINAR UN FUNCIONARIO DE LISTA Public Function eliminarFuncionario(ByVal unFuncionario As Funcionario) As Boolean Me.getListaFuncionario.Remove(unFuncionario) End Function #End Region #Region "METODOS DE IMPUESTOS Y FORMULARIO" 'METODO PARA VERIFICAR SI EXISTE UN OBJETO EN UNA LISTA Public Function existeObjeto(ByVal objeto As Integer, ByVal lista As Integer) As Boolean Dim existe As Boolean = False If lista = 1 Then For i As Integer = 0 To Me.getListaFuncionario.Count - 1 If Me.getListaFuncionario.Item(i).cedula = objeto Then existe = True End If Next Else For i As Integer = 0 To Me.getListaCargo.Count - 1 If Me.getListaCargo.Item(i).getSetIdentificador = objeto Then existe = True End If Next End If Return existe End Function 'METODO PARA DETERMINAR EL IMPUESTO MONTEPIO Public Function montepio(ByVal remun As Double, ByVal afap As Boolean) As Double If afap Then If (remun < Me.topeMontepio) Then Return (remun * desMontepio) Else Return (Me.topeMontepio * desMontepio) End If Else Return remun * desMontepio

End If End Function 'METODO PARA DETERMINAR EL DESCUENTO MEDICO FONASA Public Function medicoFonasa(ByVal remun As Double, ByVal sinHC As Boolean, ByVal conyC As Boolean) As Double Dim desc As Double = 0 desc += Me.sueldoBase If sinHC Then desc += Me.desNoHijoCargo Else desc += Me.desTieneHijosCargo End If If conyC Then desc += Me.desConyCargo End If Return remun * desc End Function 'METODO PARA EL CALUCLO DEL IRPF Public Function irpfPrimeraParte(ByVal remun As Double) As Double Dim result As Double = 0 If remun < tope1 Then Return remun * tope1Descuento Else result += tope1 * tope1Descuento End If If remun < tope2 Then Return result + ((remun - tope1) * tope2Descuento) Else result += (tope2 - tope1) * tope2Descuento End If If remun < tope3 Then Return result + ((tope1 + tope2 - remun) * tope3Descuento) Else result += (tope3 - tope2) * tope3Descuento result += ((remun - tope3) * tope4Descuento) End If Return result End Function 'METODO PARA EL CALUCLO DEL IRPF SEGUNDA PARTE Public Function irpfSegundaParte(ByVal irpf As Double) As Double Dim result As Double = 0 If irpf < tope1prima Then result = result + (irpf * tope1DescuentoPrima) Return result Else result += tope1prima * tope1DescuentoPrima End If If irpf < tope2prima Then Return result + ((irpf - tope1prima) * tope2DescuentoPrima) Else result += (tope3prima - tope2prima) * tope2DescuentoPrima result += ((irpf - tope3prima) * tope3DescuentoPrima) End If Return result

End Function Public Function calculoirpf(ByVal sueldo As Double, ByVal cantHijos As Integer, ByVal cajaProfesional As Double, ByVal fondosolidario As Boolean, ByVal cajProf As Boolean) As Double Dim primeraParte As Double = irpfPrimeraParte(sueldo) Dim segundaParte As Double = 0 Dim deduccion As Double = 0 If fondosolidario Then If cajProf Then deduccion = ((valor1 * cantHijos) + cajaProfesional + valor3) Else deduccion = (valor1 * cantHijos) + valor3 End If Else deduccion = ((valor1 * cantHijos)) End If segundaParte = irpfSegundaParte(deduccion) Dim irpfFinal As Double = primeraParte - segundaParte If irpfFinal > 0 Then Return irpfFinal Else Return 0 End If End Function 'METODO PARA ACTUALIZAR LOS DATOS CON LOS QUE EL SISTEMA REALIZA LOS CALCULOS CORRESPONDIENTES Public Function actualizarDatos(ByVal desMont As Double, ByVal topeMont As Double, ByVal tope1 As Double, ByVal tope2 As Double, ByVal tope3 As Double, ByVal sueldoBase As Double, ByVal noHijosCargo As Double, ByVal hijoCargo As Double, ByVal conyCargo As Double, ByVal valor1 As Double, ByVal valor3 As Double, ByVal t1prima As Double, ByVal t2prima As Double) As Boolean Me.desMontepio = desMont / 100 Me.topeMontepio = topeMont Me.tope1 = tope1 Me.tope2 = tope2 Me.tope3 = tope3 Me.sueldoBase = sueldoBase / 100 Me.desNoHijoCargo = noHijosCargo / 100 Me.desTieneHijosCargo = hijoCargo / 100 Me.desConyCargo = conyCargo / 100 Me.valor1 = valor1 Me.valor3 = valor3 Me.tope1prima = t1prima Me.tope2prima = t2prima End Function 'METODO PARA VALIDAR DATOS DE CONTROL EN CALCULO DE IMPUESTOS Public Function validarDatos(ByVal desMont As Double, ByVal topeMont As Double, ByVal tope1 As Double, ByVal tope2 As Double, ByVal tope3 As Double, ByVal sueldoBase As Double, ByVal noHijosCargo

As Double, ByVal hijoCargo As Double, ByVal conyCargo As Double, ByVal t1prima As Double, ByVal t2prima As Double) As Integer If (tope3 > tope2 And tope2 > tope1 And tope1 > 0) Then If (desMont > 0 And desMont < 100 And topeMont > 0) Then If (sueldoBase > 0 And sueldoBase < 100) Then If (noHijosCargo > 0 And noHijosCargo < 100) Then If (hijoCargo < 100 And hijoCargo > 0) Then If (conyCargo > 0 And conyCargo < 100) Then If t2prima >= t1prima Then Return 0 Else Return 7 End If Else Return 6 End If Else Return 5 End If Else Return 4 End If Else Return 3 End If Else Return 2 End If Else Return 1 End If End Function #End Region 'METODO PARA RETORNAR LOS MONTOS SEGUN LA CAJAPROFESIONAL SELECCIONADA Public Function montoCategoria(ByVal cat As String) As Integer Dim monto As Integer = Nothing If cat = "A" Then monto = Me._cajaProfesional(0) Return monto If cat = "B" Then monto = Me._cajaProfesional(1) Return monto If cat = "C" Then monto = Me._cajaProfesional(2) Return monto If cat = "D" Then monto = Me._cajaProfesional(3) Return monto If cat = "E" Then monto = Me._cajaProfesional(4) Return monto If cat = "F" Then monto = Me._cajaProfesional(5) Return monto End If End If

End If End If End If End If End Function 'METODO PARA ACTUALIZAR LOS MONTOS SEGUN LA CAJAPROFESIONAL SELECCIONADA Public Function montoCategoria(ByVal monto As Integer, ByVal cat As String) As Boolean If cat = "A" Then Me._cajaProfesional(0) = monto If cat = "B" Then Me._cajaProfesional(1) = monto If cat = "C" Then Me._cajaProfesional(2) = monto If cat = "D" Then Me._cajaProfesional(3) = monto If cat = "E" Then Me._cajaProfesional(4) = monto If cat = "F" Then Me._cajaProfesional(5) = monto End If End If End If End If End If End If End Function 'METODO QUE RETORNA EL CODIGO DE SEGURO DE SALUDO PARA CADA FUNCIONARIO Public Function codigoSeguroSalud(ByVal hijos As Boolean, ByVal conyu As Boolean) As Integer Dim codigo As Integer = Nothing If hijos And Not conyu Then codigo = 31 Return codigo Else If Not hijos And Not conyu Then codigo = 32 Return codigo Else If hijos And conyu Then codigo = 33 Return codigo Else If Not hijos And conyu Then codigo = 34 Return codigo End If End If End If End If End Function 'METODO PARA VALIDAR QUE UN FUNCIONARIO ESTA REGISTRADO Public Function estaFunRegistrado(ByVal numeroFun As Integer) As Boolean Dim esta As Boolean = False

Dim funAux As Funcionario = Nothing For i As Integer = 0 To Me.getListaFuncionario.Count - 1 funAux = Me.getListaFuncionario.Item(i) If funAux.activo Then If funAux.numFunc = numeroFun Then esta = True Return esta End If End If Next Return esta End Function 'METODO PARA PASAR LOS DATOS INGRESADOS DE HIJOS Y CONYUGE A BOLLEANOS Y CARGARLOS EN EL SISTEMA Public Function pasarDatosDeclaracion(ByVal hijos As Integer, ByVal conyuge As Integer, ByVal fun As Integer, ByVal unaFecha As Date) As Boolean Dim tieneHijos As Boolean = False Dim tieneConyuge As Boolean = False Dim funAux As Funcionario Dim fecha As Date If hijos = 1 Then tieneHijos = True End If If conyuge = 1 Then tieneConyuge = True End If funAux = Me.buscarFuncionarioPorNumero(fun) funAux.cargarDecFonasa(tieneHijos, tieneConyuge, fecha) End Function 'METODO PARA VALIDAR QUE LOS DATOS INGRESADOS SEAN 1 O 0 Public Function controlDatos(ByVal dato As Integer) As Boolean Dim valido As Boolean = False If dato = 0 Or dato = 1 Then valido = True Return valido End If Return valido End Function

'METODO PARA CARGAR DECLARACIONES DESDE UN ARCHIVO DE TEXTO 'FORMATO NROFUNCIONARIO,HIJOS(0,1),CONYUGES(0,1),DIA,MES,ANO Public Function cargarDecArchivo(ByVal direccion As String) As Boolean 'RUTA DEL ARCHIVO A LEER Dim declaraciones As New StreamReader(direccion) Dim Dim Dim Dim Dim Dim Dim Dim datos As String = "" tabla() As String numFuncionario As Integer hijos As Integer conyuge As Integer fecha As Date numeroLinea As Integer = 0 hayErrores As Boolean = False

listaErrores = New List(Of String) Do datos = declaraciones.ReadLine() numeroLinea += 1 If Not datos Is Nothing Then tabla = Split(datos, ",") If tabla.Length = 6 Then Try numFuncionario = CInt(tabla(0)) hijos = CInt(tabla(1)) conyuge = CInt(tabla(2)) Dim f As String = CStr(tabla(3) & "/" & tabla(4) & "/" & tabla(5) & " 00:00:00") fecha = CType(f, Date) If (numFuncionario And hijos And conyuge) > -1 Then If Sistema.elSistema.estaFunRegistrado(numFuncionario) Then If Sistema.elSistema.controlDatos(hijos) Then If Sistema.elSistema.controlDatos(conyuge) Then Sistema.elSistema.pasarDatosDeclaracion(hijos, conyuge, numFuncionario, fecha) End If Else hayErrores = True listaErrores.Add("ERROR EN VALOR DE CONYUGE " & " -EN LINEA- " & numeroLinea) End If Else hayErrores = True listaErrores.Add("ERROR EN VALOR DE HIJO " & " -EN LINEA- " & numeroLinea) End If Else hayErrores = True listaErrores.Add("ERROR DE DATOS NEGATIVOS " & " -EN LINEA- " & numeroLinea) End If Catch ex As Exception hayErrores = True listaErrores.Add("ERROR DE DATOS NUMERICOS " & " -EN LINEA- " & numeroLinea) End Try Else hayErrores = True listaErrores.Add("ERROR EN LARGO DE DATOS DE DOCUMENTO " & " -EN LINEA- " & numeroLinea) End If Else hayErrores = True listaErrores.Add("LINEA SIN DATOS " & " -EN LINEA- " & numeroLinea) End If Loop Until datos Is Nothing

declaraciones.Close() Dim pr As New PrintDocument AddHandler pr.PrintPage, AddressOf Me.pr_imprimirpagina pr.Print() Return hayErrores End Function 'METODO PARA IMPRIMIR PAGINA Private Sub pr_imprimirpagina(ByVal sender As Object, ByVal ev As PrintPageEventArgs) Dim tipoLetra As New Font("Arial", 10) Dim lineasXpagina = ev.MarginBounds.Height / tipoLetra.GetHeight(ev.Graphics) For i As Integer = 0 To listaErrores.Count - 1 Dim posy As Integer = ev.MarginBounds.Top + i * CInt(tipoLetra.GetHeight(ev.Graphics)) ev.Graphics.DrawString(listaErrores(i), tipoLetra, Brushes.Black, ev.MarginBounds.Left, posy, New StringFormat()) Next End Sub 'METODO PARA GRABAR ARCHIVO DE BPS Public Function documentoBPS() As Boolean Dim BPS As StreamWriter = Nothing Try BPS = New StreamWriter("Obligatorio\BPS.txt") Catch ex As Exception MsgBox("ERROR AL GENERAR EL ARCHIVO!") End Try Dim encabezado As String = "'''DATOS SEGURO SALUD PARA BPS'''" & vbNewLine & vbNewLine BPS.WriteLine(encabezado) For i As Integer = 0 To Sistema.elSistema.getListaFuncionario.Count - 1 Dim fun As Funcionario = Sistema.elSistema.getListaFuncionario.Item(i) If fun.activo Then Dim fechaNac As String = fun.diaNacimiento & "/" & fun.mesNacimiento & "/" & fun.anoNacimiento Dim numSeguro As Integer = Sistema.elSistema.codigoSeguroSalud(fun.declaracionFonasa.tieneHijos, fun.declaracionFonasa.conyugeCargo) Dim datos As String = "<" & fun.cedula & ">" & "," & "<" & fun.nombre & ">" & "," & "<" & fechaNac & ">" & "," & "<" & numSeguro & ">" & vbNewLine BPS.WriteLine(datos) BPS.Flush() End If Next End Function 'METODO PARA GENERAR UNA PLANILLA EXEL CON DATOS DE LOS FUNCIONARIOS Public Function cargarArchExcel() As Boolean Dim app As Microsoft.Office.Interop.Excel.Application Dim libroFuncionarios As Microsoft.Office.Interop.Excel.Workbook

Dim hojaFuncionarios As Microsoft.Office.Interop.Excel.Worksheet Dim linea As Integer = 1 app = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application) libroFuncionarios = CType(app.Workbooks.Add, Microsoft.Office.Interop.Excel.Workbook) hojaFuncionarios = CType(libroFuncionarios.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet) 'INSERTAR DATOS hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, hojaFuncionarios.Cells(1, 1) = "NOMBRE" 2) = "NUMERO" 3) = "FECHA DE NACIMIENTO" 4) = "CARGO" 5) = "CEDULA" 6) = "DIRECCIN" 7) = "SUELDO" 8) = "MONTEPIO" 9) = "MEDICO FONASA" 10) = "IRPF"

For i As Integer = 0 To Sistema.elSistema.getListaFuncionario.Count - 1 Dim fun As Funcionario = Sistema.elSistema.getListaFuncionario.Item(i) If fun.activo Then linea += 1 hojaFuncionarios.Cells(linea, 1) = fun.nombre hojaFuncionarios.Cells(linea, 2) = fun.numFunc hojaFuncionarios.Cells(linea, 3) = fun.diaNacimiento & "/" & fun.mesNacimiento & "/" & fun.anoNacimiento hojaFuncionarios.Cells(linea, 4) = fun.cargo.getSetNombre hojaFuncionarios.Cells(linea, 5) = fun.cedula hojaFuncionarios.Cells(linea, 6) = fun.direccion hojaFuncionarios.Cells(linea, 7) = fun.cargo.getSetRemuneracion hojaFuncionarios.Cells(linea, 8) = fun.montepio hojaFuncionarios.Cells(linea, 9) = fun.medicoFonasa hojaFuncionarios.Cells(linea, 10) = fun.irpf End If Next 'FORMATEAR LAS CELDAS hojaFuncionarios.Range("A1:J1").Font.Bold = True hojaFuncionarios.Range("A1:L1").ColumnWidth() = 20 hojaFuncionarios.Range("C1").ColumnWidth() = 25 'MOSTRAR LA HOJA DE TRABAJO hojaFuncionarios.Application.Visible = True End Function End Class

Вам также может понравиться