Exemplo n.º 1
0
        //Método para la Modificación de los diferentes aspectos de un trabajador en concreto
        public static void ModificarTrabajador(ref Trabajador[] listaTrabajadores)
        {
            int    posicion = 0;
            string eleccion = null;
            string dni = null;
            bool   salir = false, existe = false;
            bool   error    = false;
            string pregunta = null;
            string mensaje  = null;

            if (error == false)
            {
                dni    = Interfaz.PlantillaPedirDni(); //Pedimos el DNI a modificar con la plantilla de la intefaz
                existe = ExisteTrabajador(listaTrabajadores, dni, ref posicion);
            }
            if (existe)
            {
                do
                {
                    try
                    {
                        //Llamamos a la plantilla para ver la elección escogida
                        eleccion = Interfaz.PlantillaEleccionModificar();

                        switch (eleccion) //Según la elección escogida realiza una acción u otra
                        {
                        //Caso 1: Modificación del DNI
                        case "1":
                            listaTrabajadores[posicion].dni_pre = Interfaz.ElementoModificar(eleccion);
                            break;

                        //Caso 2: Modificación del NOMBRE
                        case "2":
                            listaTrabajadores[posicion].nombre_pre = Interfaz.ElementoModificar(eleccion);
                            break;

                        //Caso 1: Modificación de los APELLIDOS
                        case "3":
                            listaTrabajadores[posicion].apellidos_pre = Interfaz.ElementoModificar(eleccion);
                            break;
                        }
                        error    = false;
                        mensaje  = "Operación realizada con éxito.";
                        pregunta = "¿Quieres modificar otro aspecto? s/n >> ";
                        Interfaz.Continuar(mensaje);
                        Interfaz.Pregunta(ref pregunta, ref salir);
                        Ficheros.GuardarTrabajadores(listaTrabajadores);
                        // Si todo ha sido validado, lo guardamos en el fichero
                    }
                    catch (Exception ex)
                    {
                        Interfaz.Error(ex.Message);
                        Interfaz.Continuar();
                        salir = false;
                        error = true;
                    }
                } while (!salir);
            }
        }
Exemplo n.º 2
0
        // Método para mostrar a todos los trabajadores que hay en la nómina

        public static void ListarTrabajadores(Trabajador[] arr)
        {
            arr = Ficheros.getTrabajadores(); //Cogemos los trabajadores del fichero
            Interfaz.Header();
            for (int i = 0; i < arr.Length; i++)
            {
                Interfaz.FormatoLeerXML(arr[i].dni_pre, arr[i].nombre_pre, arr[i].apellidos_pre);
            }
            Interfaz.Continuar();
        }
Exemplo n.º 3
0
        //Método utilizado para la creación de nuevos trabajadores
        public static void NuevoTrabajador(ref Trabajador[] listaTrabajadores, int mode)
        {
            Trabajador trabtemp;

            Trabajador[] copia    = null;
            bool         salida   = false; //Inicialización de variables
            string       mensaje  = null;
            string       mensaje2 = null;
            bool         existe   = false;

            // Entrada de Datos
            do
            {
                // ENTRADA
                trabtemp = Interfaz.PlantillaCrearTrabajador();
                existe   = ExisteTrabajador(listaTrabajadores, trabtemp.dni_pre); //Comprueba si existe o no el trabajador

                if (listaTrabajadores == null)                                    //Si la lista de trabajadores está vacía, le asigna una posición
                {
                    listaTrabajadores = new Trabajador[1];
                }
                if (listaTrabajadores != null) //Como no es nula, debido a la anterior creación de la posición
                {
                    if (existe == false)
                    {
                        //Gestión dinámica de la memoria
                        copia = new Trabajador[listaTrabajadores.Length];                 //Copiamos el tamaño del array de trabajadores
                        listaTrabajadores.CopyTo(copia, 0);                               //Volcamos el contenido del array de trabajadores en copia
                        listaTrabajadores = new Trabajador[listaTrabajadores.Length + 1]; //Asignamos una posición más
                        copia.CopyTo(listaTrabajadores, 0);                               //Copiamos todo de nuevo al array de trabajadores
                        copia = null;                                                     //Volvemos copia a null para ahorrar memoria

                        listaTrabajadores[listaTrabajadores.Length - 1] = trabtemp;       //Asignamos el nuevo trabajador al array

                        mensaje = "Trabajador registrado correctamente";
                        if (mode == 1)// Modo 1: Creamos empleados por NuevoTrabajadors
                        {
                            mensaje2 = "Desea registrar otro Trabajador (s/n): ";
                            salida   = Interfaz.Continuar(mensaje);
                            Interfaz.Pregunta(ref mensaje2, ref salida);
                            Ficheros.GuardarTrabajadores(listaTrabajadores);
                        }
                        else //Creamos empleados desde la nómina.
                        {
                            salida = true;
                        }
                    }

                    else //Si existe el trabajador, asignamos que salga del bucle
                    {
                        salida = true;
                    }
                }
            } while (!salida);
        }
 public static bool ValidarContraseña(string password)
 {
     string originalpassword = null;
     Ficheros.CheckPass(ref originalpassword);
     if (Encriptacion.Encriptar(password).Equals(originalpassword))
     {
         return true;
     }
     else
     {
         return false;
     }
 }
        private static float retenciones  = 0.0F; //Calculo de retenciones salariales


        #region GESTION NOMINAS - ANTONIO BAENA


        //Inicialización de nóminas
        public static void InicializaNomina(ref Nomina nomina)
        {
            //Cargamos los datos en el objeto nomina desde la referencia
            horas        = nomina.Horas_pre;
            extra        = nomina.HExtra_pre;
            precio       = nomina.PrecioPre;
            salarioExtra = nomina.SalExtra_pre;
            bruto        = nomina.SalBruto_pre;
            neto         = nomina.SalNeto_pre;
            //Cargamos los datos por defecto de app.config
            Ficheros.getConfig(ref jornada, ref horasExtra, ref retenciones);
            nomina.HextrasPre   = horasExtra;
            nomina.JornadaPre   = jornada;
            nomina.RetencionPre = retenciones;
        }
Exemplo n.º 6
0
        //Método para comprobar si el DNI existe ya en la Base de datos de empleados.
        public static bool ComprobarDni(string dni)
        {
            Trabajador[] temp     = null;
            bool         correcto = false;
            int          i        = 0;         //Inicialización de variables

            temp = Ficheros.getTrabajadores(); //Cogemos los trabajadores del fichero
            for (i = 0; i < temp.Length; i++)  //Recorremos los DNI de los trabajadores buscando el solicitado
            {
                if (dni.Equals(temp[i].dni_pre))
                {
                    correcto = true;
                    return(correcto);
                }
                else
                {
                    correcto = false;
                }
            }
            return(correcto); //Devolvemos si ha sido encontrado o no
        }
        public static void GestionOperaciones(int numb, ref bool flag, int mode)
        {
            Trabajador[] listaTrabajador = null;
            listaTrabajador = Ficheros.getTrabajadores();

            switch (numb)
            {
                //Agregar trabajadores
                case 1: // *AGREGAR TRABAJADORES FUNCIONA CORRECTAMENTE*
                    Gestion_Empleado.NuevoTrabajador(ref listaTrabajador, mode);
                    Ficheros.GuardarTrabajadores(listaTrabajador);
                    break;
                //Modificar trabajadores
                case 2:
                    // LLAMAR A MÉTODO MODIFICAR USUARIO (REF ARRAY)----
                    // LLAMAR A MÉTODO FICHERO MODIFICAR
                    Gestion_Empleado.ModificarTrabajador(ref listaTrabajador);
                    Ficheros.GuardarTrabajadores(listaTrabajador);
                    break;

                //Eliminar trabajadores 
                case 3: // *BORRADO FUNCIONA CORRECTAMENTE*
                    Gestion_Empleado.BorrarTrabajador(ref listaTrabajador);
                    Ficheros.GuardarTrabajadores(listaTrabajador);
                    break;

                //Modificar Contraseña
                case 4:
                    ModificarContraseña();
                    break;
                case 5: // * MOSTRAR TRABAJADORES FUNCIONA CORRECTAMENTE
                    Gestion_Empleado.ListarTrabajadores(listaTrabajador);
                    break;
                case 6: // SALIR
                    flag = true;
                    break;
            }
        }
        //Métodos que controlan el funcionamiento de la clase GestionNomina y la Interfaz
        public static void GestionNominas(int numb, ref bool flag, string dni)
        {
            string fecha;
            Nomina[] Nomina = null;
            Nomina semana = null;
            try
            {
                //Recuperamos la nómina del trabajador y la cargamos en un Array de Nóminas de trabajo.
                Nomina = Ficheros.GetNomina(dni);
                //Ordenamos el array y lo redimensionamos, dejando huecos en las semanas no creadas aún
                Gestion_Nomina.OrdenaNomina(ref Nomina);

                switch (numb)
                {
                    case 0:
                        flag = true;
                        break;
                    //Introducir nóminas
                    case 1:
                        /*Comprobamos que el array no ha llenado los seis espacios que es el máximo de semanas
                        * que tiene un mes. En caso de haber huecos, lanzamos los métodos para pedir la semana
                        *  e introducirla en el array nómina, tras lo cual se almacena en el fichero.*/
                        if (!Gestion_Nomina.LimiteSemanas(Nomina))
                        {
                            semana = Interfaz.AgregarSemana(Nomina);
                            Gestion_Nomina.CreaSemana(ref Nomina, ref semana);
                            Ficheros.GuardarNominaTemporal(ref Nomina);
                        }
                        else
                        {
                            Interfaz.Error("No se pueden agregar más semanas, se ha alcanzado el máximo posible de semanas de un mes");
                        }
                        break;
                    //Modificar Nóminas
                    case 2:
                        /*Con esta opción vamos a cambiar los parámetros de la nómina, para lo que lanzamos el 
                        * método de cambio de la semana. Y, una vez terminado, se guarda la nómina en el fichero.*/
                        Gestion_Nomina.CambiaSemana(ref Nomina);
                        Ficheros.GuardarNominaTemporal(ref Nomina);
                        break;

                    //Modificar archivo de configuracion
                    case 3:
                        /* Esta opción lanza una interfaz que nos va a permitir modificar los parámetros almacenados en 
                        * app.config, previa validación de la contraseña de administrador*/
                        int option = 0;
                        float valor = 0;
                        string pass = null;
                        pass = Interfaz.PedirContraseña();
                        if (GestionNegocio.ValidarContraseña(pass))
                        {
                            Interfaz.PedirDatosArchivoConf(ref option, ref valor);
                            Ficheros.ModConfig(option, valor);
                            Interfaz.Continuar("Valor modificado con éxito");
                        }
                        else
                        {
                            Interfaz.Error("La contraseña no coincide.");
                            Interfaz.Continuar();
                            break;
                        }
                        break;
                    //Eliminar nominas
                    case 4:
                        /*La opción de eliminar nóminas a su vez lanza un menú por interfaz que permite eliminar una sóla semana
                        * del array de nóminas o, por el contrario, eliminar todas las posiciones de dicho array.
                        * Tanto en un método como en el otro, se lanza un método en gestión de nómina que es el que se encarga de 
                        * hacer la eliminación y redimensión del array. */
                        int ordinal = 0, opcion = 0;
                        opcion = Interfaz.EliminarSemanaOpcion();
                        if (opcion == 1)
                        {
                            ordinal = Interfaz.ElegirSemana(); // Pide la semana a eliminar
                            Gestion_Nomina.ProcesoEliminarSemana(ref Nomina, ordinal);
                        }
                        else
                        {
                            Gestion_Nomina.ProcesoEliminarNomina(ref Nomina);
                        }
                        Ficheros.GuardarNominaTemporal(ref Nomina);
                        break;
                    //Mostrar Nómina Temporal
                    case 5:
                        /*En esta opción se muestra la nómina temporal, con el número de semanas
                        * como los parámetros tales como número de horas, horas extra, 
                        * precio de la hora extra, porcentaje de retencion, etc.*/
                        Console.WriteLine(Interfaz.MostrarNominaTemporal(Nomina, dni));
                        Console.ReadLine();
                        break;
                    //Cerrar Nómina del Mes
                    case 6:
                        /*Este método sirve para guardar la nómina del mes, exportándola a un archivo de texto 
                        * (después de mostrarla en pantalla y pedir confirmación) y eliminar el archivo temporal*/
                        string cadena = null;
                        /*Se calculan los parámetros tales como horas extra trabajadas, salario base, extra, 
                        * retenciones y neto, y se almacenan en él array de nóminas*/
                        Gestion_Nomina.CalculaParcial(ref Nomina);
                        //La interfaz muestra por pantalla los parciales semanales y se devuelve en la variable cadena.
                        cadena = Interfaz.MostrarNomina(Nomina, dni);
                        //El método cierreMes devuelve (y concatena) en la variable cadena el resultado del cálculo de los totales de cada semana.
                        cadena += Interfaz.CierreMes(Nomina);
                        if (!Confirmar())//se pide confirmación para guardar los cambios.
                        {
                            //Almacena en el fichero
                            fecha = Interfaz.Pidefecha();//En este método vamos a pedir la fecha de mes y año de la nómina para almacenarla.
                            Ficheros.CerrarNomina(cadena, fecha);//En este método almacenamos la cadena de texto en un archivo nombrado con la fecha y el dni del trabajador.
                            //Eliminar fichero
                            Ficheros.BorrarTemporal(dni); //Eliminamos el fichero temporal de la nómina del sistema.
                            Interfaz.Continuar("Nómina Exportada Correctamente \n \t\tPulsa una tecla para continuar...");
                        }
                        else
                        {
                            Interfaz.Continuar();
                        }

                        break;
                }
            }
            catch (Exception e)
            {
                Interfaz.Error(e.Message);
                Interfaz.Continuar("Pulsa una tecla para continuar...");
            }
        }
 public static void InicializarComponentes()
 {
     Ficheros.CheckConfig();
     Ficheros.ExistOrEmptyEMP();
     Ficheros.CheckArchivoPass();
 }
 public static void ModificarContraseña()
 {
     string pass = null;
     pass = Interfaz.PedirContraseñaModificar();
     Ficheros.ModPass(pass);
 }