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); } }
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!"); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }