private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                TimeSpan ts;
                var      hora_entrada = txtHoraEntrada.Text;
                var      hora_salida  = txtHoraSalida.Text;
                if (TimeSpan.TryParse(hora_entrada, out ts) && TimeSpan.TryParse(hora_salida, out ts))
                {
                    Turno turno = new Turno();
                    turno.Hora_Entrada  = hora_entrada;
                    turno.Hora_Salida   = hora_salida;
                    turno.Observaciones = txtObservaciones.Text;

                    datos.Turno.Add(turno);
                    datos.SaveChanges();
                    MessageBox.Show("Se guardo un horario de turno exitosamente!");
                    CargarDatos();
                }
                else
                {
                    MessageBox.Show("Debe ingresar en formato 24 horas (hh:mm)");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 2
0
 private void btnEliminar_Click(object sender, RoutedEventArgs e)
 {
     if (dgNomina.SelectedItem != null)
     {
         Empleado a = (Empleado)dgNomina.SelectedItem;
         datos.Empleado.Remove(a);
         datos.SaveChanges();
         MessageBox.Show("Se ha eliminado un registro exitosamente!");
         CargarDatosGrilla();
     }
     else
     {
         MessageBox.Show("Debe seleccionar un registro Empleado de la grilla para eliminar!");
     }
 }
Esempio n. 3
0
        private void BtnAsignarTurno_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgEmpleados.SelectedItem != null)
                {
                    if (dgTurnos.SelectedItem != null)
                    {
                        Empleado emp = (Empleado)dgEmpleados.SelectedItem;
                        Turno    t   = (Turno)dgTurnos.SelectedItem;
                        emp.Turno_Id = t.Id_Turno;

                        datos.Entry(emp).State = System.Data.Entity.EntityState.Modified;
                        datos.SaveChanges();

                        MessageBox.Show("Se ha asignado el turno al empleado exitosamente!");
                        CargarDatosGrilla();
                    }
                    else
                    {
                        MessageBox.Show("Debe seleccionar algun turno desde la grilla");
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun empleado desde la grilla");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 4
0
        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string desc = txtDescripcion.Text;
                string tipo = txtTipo.Text;

                if (desc != null || tipo != null)
                {
                    if (desc.Length <= 100)
                    {
                        if ((tipo.Length == 1 && tipo == "+") || (tipo.Length == 1 && tipo == "-"))
                        {
                            Concepto c = new Concepto();
                            c.Descripcion = desc;
                            c.Tipo        = tipo;

                            datos.Concepto.Add(c);
                            datos.SaveChanges();
                            MessageBox.Show("Se ha agregado un registro exitosamente!");
                            CargarDatos();
                            LimpiarCampos();
                            txtDescripcion.Focus();
                        }
                        else
                        {
                            MessageBox.Show("En este campo debe cargarse el caracter '+' o '-'");
                        }
                    }
                    else
                    {
                        MessageBox.Show("El campo descripcion no puede exceder los 100 caracteres");
                    }
                }
                else
                {
                    MessageBox.Show("Hay campos vacios");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 5
0
        private void BtnHabilitar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtMes.Text != null && txtAnho.Text != null)
                {
                    if (int.Parse(txtMes.Text) > 0 && int.Parse(txtMes.Text) < 13 && txtAnho.Text.Length == 4)
                    {
                        Liquidacion_Mensual lmNew = new Liquidacion_Mensual();
                        short vMes  = short.Parse(txtMes.Text);
                        short vAnho = short.Parse(txtAnho.Text);

                        lmNew.Mes              = vMes;
                        lmNew.Anho             = vAnho;
                        lmNew.Fecha_Generacion = System.DateTime.Now;
                        lmNew.Usuario_Id       = usuarioID;
                        lmNew.Estado           = "A";

                        var lmdb = (from l in datos.Liquidacion_Mensual
                                    where l.Anho == vAnho && l.Mes == vMes
                                    select l).FirstOrDefault();

                        if (lmdb != null)
                        {
                            MessageBox.Show("Ya existe una liquidacion con el mes y año ingresados");
                            return;
                        }
                        else
                        {
                            datos.Liquidacion_Mensual.Add(lmNew);
                            datos.SaveChanges();
                            MessageBox.Show("Se ha habilitado una liquidacion exitosamente!");
                            CargarGrilla();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Uno de los campos tiene formato incorrecto");
                    }
                }
                else
                {
                    MessageBox.Show("Uno de los campos tiene formato incorrecto");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 6
0
        private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgPermisos.SelectedItem != null)
                {
                    Permisos p = (Permisos)dgPermisos.SelectedItem;

                    if (p.Estado == "Pendiente")
                    {
                        p.Estado = "Aprobado";

                        datos.Entry(p).State = System.Data.Entity.EntityState.Modified;
                        datos.SaveChanges();
                        MessageBox.Show("El permiso fue aprobado con exito!");
                        actualizarGrilla();
                    }
                    else if (p.Estado == "Aprobado")
                    {
                        MessageBox.Show("El permiso ya fue aprobado.");
                    }
                    else
                    {
                        MessageBox.Show("El permiso ya fue rechazado.");
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun registro de la grilla");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 7
0
        private void BtnAprobar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgDatosAnticipoSalarial.SelectedItem != null)
                {
                    Anticipo a = (Anticipo)dgDatosAnticipoSalarial.SelectedItem;

                    if (a.Estado == "Pendiente")
                    {
                        a.Estado = "Aprobado";

                        datos.Entry(a).State = System.Data.Entity.EntityState.Modified;
                        datos.SaveChanges();
                        MessageBox.Show("El anticipo fue aprobado con exito!");
                        actualizarGrilla();
                    }
                    else if (a.Estado == "Aprobado")
                    {
                        MessageBox.Show("El anticipo ya fue aprobado.");
                    }
                    else
                    {
                        MessageBox.Show("El anticipo ya fue rechazado.");
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun registro de la grilla");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 8
0
        private void BtnActualizarSalario_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgEmpleados.SelectedItem != null)
                {
                    Empleado emp             = (Empleado)dgEmpleados.SelectedItem;
                    int      nuevoSalario    = int.Parse(txtNuevoSalario.Text);
                    int      anteriorSalario = emp.Salario_Basico;


                    if (nuevoSalario > anteriorSalario)
                    {
                        Empleado_Salario_Historico historico = new Empleado_Salario_Historico();
                        historico.Empleado_Id             = emp.Id_Empleado;
                        historico.Salario_Basico_Anterior = anteriorSalario;
                        historico.Salario_Basico_Nuevo    = nuevoSalario;
                        historico.Fecha_Hora = System.DateTime.Now;

                        //var usuarioId = (from u in datos.Usuario
                        //                where u.Empleado_Id == emp.Id_Empleado
                        //                select u.Id_Usuario).FirstOrDefault(); UsuarioId correspondiente al EmpleadoId

                        historico.Usuario_Id = usuarioID; // UsuarioId correspondiente al usuario logueado
                        emp.Salario_Basico   = nuevoSalario;

                        datos.Empleado_Salario_Historico.Add(historico);
                        datos.Entry(emp).State = System.Data.Entity.EntityState.Modified;
                        datos.SaveChanges();
                        MessageBox.Show("La operacion se completado con exito! (:");

                        CargarDatosGrilla();
                    }
                    else
                    {
                        MessageBox.Show("El nuevo salario debe ser mayor al anterior.");
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun empleado.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 9
0
        private void BtnGuardar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgEmpleados.SelectedItem != null)
                {
                    if (dgLiquidaciones.SelectedItem != null)
                    {
                        if (cboConceptos.SelectedItem != null)
                        {
                            if (txtMonto.Text != null && int.Parse(txtMonto.Text) >= 0)
                            {
                                Liquidacion_Mensual_Detalle detalle = new Liquidacion_Mensual_Detalle();
                                Empleado            emp             = (Empleado)dgEmpleados.SelectedItem;
                                Liquidacion_Mensual lm = (Liquidacion_Mensual)dgLiquidaciones.SelectedItem;
                                int    vMonto          = int.Parse(txtMonto.Text);
                                string desc            = cboConceptos.SelectedItem.ToString();

                                var conceptoObjeto = (from c in datos.Concepto
                                                      where c.Descripcion == desc
                                                      select c).FirstOrDefault();

                                // Carga de columnas del objeto Liquidacion_Mensual_Detalle
                                detalle.Liquidacion_Id = lm.Id_Liquidacion;
                                detalle.Empleado_Id    = emp.Id_Empleado;
                                detalle.Concepto_Id    = conceptoObjeto.Id_Concepto;


                                if (conceptoObjeto.Tipo == "-")
                                {
                                    detalle.Monto = vMonto * (-1);
                                }
                                else
                                {
                                    detalle.Monto = vMonto;
                                }


                                int idLiquidacion = lm.Id_Liquidacion;
                                int idEmpleado    = emp.Id_Empleado;
                                int idConcepto    = conceptoObjeto.Id_Concepto;

                                Liquidacion_Empleados_Salarios_Totales lest =
                                    datos.Liquidacion_Empleados_Salarios_Totales.Find(idLiquidacion, idEmpleado);

                                //Validar que no se cargue un concepto para una liquidacion ya generada
                                if (lest != null)
                                {
                                    MessageBox.Show("No se puede cargar el concepto " + conceptoObjeto.Descripcion +
                                                    " en la liquidacion del anho " + lm.Anho + "y mes " + lm.Mes + ".");
                                    return;
                                }

                                // Validar si ya existe un detalle con la liquidacion, empleado y concepto seleccionados
                                foreach (Liquidacion_Mensual_Detalle det in datos.Liquidacion_Mensual_Detalle.ToList())
                                {
                                    if (det.Liquidacion_Id == idLiquidacion && det.Empleado_Id == idEmpleado && det.Concepto_Id == idConcepto)
                                    {
                                        MessageBox.Show("Ya existe un registro para la liquidacion, empleado y concepto seleccionados");
                                        return;
                                    }
                                }

                                datos.Liquidacion_Mensual_Detalle.Add(detalle);
                                datos.SaveChanges();
                                MessageBox.Show("Se ha creado un detalle para la liquidacion seleccionada exitosamente!");
                                LimpiarCampos();
                            }
                            else
                            {
                                MessageBox.Show("El campo monto no puede estar vacio");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Debe seleccionar algun concepto del combo");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Debe seleccionar alguna liquidacion de la grilla");
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun empleado de la grilla");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void BtnGenerarSalarios_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dgLiquidaciones.SelectedItem != null)
                {
                    Liquidacion_Mensual lm = (Liquidacion_Mensual)dgLiquidaciones.SelectedItem;


                    var existe = (from s in datos.Liquidacion_Empleados_Salarios_Totales
                                  where s.Liquidacion_Id == lm.Id_Liquidacion
                                  select s).ToList();

                    if (existe.Count > 0)
                    {
                        MessageBox.Show("Las liquidaciones de los empleados para la planilla de liquidacion seleccionada ya han sido creadas");
                        return;
                    }
                    Concepto c   = new Concepto();
                    Empleado emp = new Empleado();
                    Anticipo a   = new Anticipo();



                    var detalleLiquidacion = (from d in datos.Liquidacion_Mensual_Detalle
                                              where d.Liquidacion_Id == lm.Id_Liquidacion
                                              select d).ToList();

                    List <Liquidacion_Mensual_Detalle> detAux1 = new List <Liquidacion_Mensual_Detalle>(); //Copia del original
                    List <Liquidacion_Mensual_Detalle> detAux2 = new List <Liquidacion_Mensual_Detalle>(); //Lista vacia
                    detAux1.AddRange(detalleLiquidacion);
                    //detAux2.AddRange(detalleLiquidacion);

                    var anticipos = (from ant in datos.Anticipo
                                     select ant).ToList();


                    foreach (Liquidacion_Mensual_Detalle lmd1 in detalleLiquidacion)
                    {
                        // buscamos el empleado actual y la liquidacion actual en la tabla de salarios totales
                        Liquidacion_Empleados_Salarios_Totales detalleAux =
                            datos.Liquidacion_Empleados_Salarios_Totales.Find(lmd1.Liquidacion_Id, lmd1.Empleado_Id);

                        var salariosTotales = datos.Liquidacion_Empleados_Salarios_Totales.ToList();

                        // Si ya existe un registro de salariototal para el empleadoId entonces simplemente iterar
                        // al siguiente objeto detalle hasta que sea un empleadoId que aun no se le haya generado
                        // el salario total a cobrar
                        if (detalleAux != null)
                        {
                            continue;
                        }

                        // La idea es reiniciar las variables por cada empleado
                        int    ingresos      = 0;
                        int    egresos       = 0;
                        double ips           = 0;
                        int    anticipo      = 0;
                        int    salarioBasico = 0;
                        int    salarioTotal  = 0;

                        foreach (Liquidacion_Mensual_Detalle lmd2 in detAux1)
                        {
                            if (lmd1.Empleado_Id == lmd2.Empleado_Id)
                            {
                                // Se acumula los ingresos, egresos
                                c = datos.Concepto.Find(lmd2.Concepto_Id);

                                if (c.Tipo == "-")
                                {
                                    egresos += lmd2.Monto;
                                }
                                else
                                {
                                    ingresos += lmd2.Monto;
                                }

                                detAux2.Add(lmd2);
                            }
                        }

                        /* Una vez todos los montos acumulados en las respectivas variables
                         * ya se puede borrar el registro en la lista de detalles auxiliar()
                         * La idea es que no se vuelvan a recorrer varias veces los mismos registros cuyos
                         * valores ya han sido usados para calcular el salariototal de un empleadoId
                         * Ocasionando asi que se encimen los calculos acumulados
                         */


                        foreach (Liquidacion_Mensual_Detalle index in detAux2)
                        {
                            detAux1.Remove(index);
                        }
                        // Se vuelve a vaciar la lista de detalles auxiliar detAux2
                        detAux2.Clear();

                        // Calculo del IPS
                        emp           = datos.Empleado.Find(lmd1.Empleado_Id);
                        salarioBasico = emp.Salario_Basico;

                        ips = (salarioBasico + ingresos) * 0.09;

                        // Primero hay que buscar si existe un anticipo en el mes correspondiente a la liquidacion y empleado.
                        // Si existe, entonces se carga el valor del campo Monto_Aprobado a la variable anticipo.
                        // En caso contrario, la variable anticipo permanece en cero como se definio al principio.
                        foreach (Anticipo ant in anticipos)
                        {
                            if (ant.Empleado_Id == lmd1.Empleado_Id)
                            {
                                if (ant.Fecha_Solicitud.Month == lm.Mes && ant.Estado == "Aprobado")
                                {
                                    anticipo += ant.Monto_Aprobado; // anticipo total por empleado
                                }
                            }
                        }

                        // Ahora que se tiene todas las variables cargadas se puede proceder al calculo del salario total
                        // Los egresos siempre seran valores negativos. Por eso suma en lugar de restar
                        salarioTotal = (int)((salarioBasico + ingresos + egresos) - ips - anticipo);

                        Liquidacion_Empleados_Salarios_Totales lest = new Liquidacion_Empleados_Salarios_Totales();
                        lest.Liquidacion_Id = lmd1.Liquidacion_Id;
                        lest.Empleado_Id    = lmd1.Empleado_Id;
                        lest.SalarioTotal   = salarioTotal;

                        datos.Liquidacion_Empleados_Salarios_Totales.Add(lest);

                        // Ademas hay que crear dos registros de detalle_liquidacion mas para almacenar el monto de IPS y anticipo
                        Liquidacion_Mensual_Detalle detIps = new Liquidacion_Mensual_Detalle();
                        var idIps = (from con in datos.Concepto
                                     where con.Descripcion == "IPS"
                                     select con.Id_Concepto).FirstOrDefault();

                        detIps.Liquidacion_Id = lm.Id_Liquidacion;
                        detIps.Empleado_Id    = lmd1.Empleado_Id;
                        detIps.Concepto_Id    = idIps;
                        detIps.Monto          = (int)ips * (-1);

                        datos.Liquidacion_Mensual_Detalle.Add(detIps);

                        Liquidacion_Mensual_Detalle detAnticipo = new Liquidacion_Mensual_Detalle();
                        var idAnticipo = (from con in datos.Concepto
                                          where con.Descripcion == "Anticipo"
                                          select con.Id_Concepto).FirstOrDefault();

                        detAnticipo.Liquidacion_Id = lm.Id_Liquidacion;
                        detAnticipo.Empleado_Id    = lmd1.Empleado_Id;
                        detAnticipo.Concepto_Id    = idAnticipo;
                        detAnticipo.Monto          = anticipo * (-1);

                        datos.Liquidacion_Mensual_Detalle.Add(detAnticipo);
                    }
                    datos.SaveChanges();
                    MessageBox.Show("Se han generado correctamente las liquidaciones mensuales para cada empleado!");
                }
                else
                {
                    MessageBox.Show("Debe seleccionar algun registro de la grilla");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }