private void btnGuardarVP_Click(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; Empleados.Core.EmpleadosHelper emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper(); vh.Command = cmd; Complementos.Core.ComplementoHelper ch = new Complementos.Core.ComplementoHelper(); ch.Command = cmd; Empleados.Core.Empleados empleado = new Empleados.Core.Empleados(); empleado.idtrabajador = idTrabajador; Complementos.Core.Complemento c = new Complementos.Core.Complemento(); c.idtrabajador = idTrabajador; c.observaciones = txtObservaciones.Text; List<Empleados.Core.Empleados> lstEmpleado = new List<Empleados.Core.Empleados>(); try { cnx.Open(); lstEmpleado = emph.obtenerEmpleado(empleado); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la antigüedad del empleado.", "Error"); cnx.Dispose(); return; } Vacaciones.Core.DiasDerecho dd = new Vacaciones.Core.DiasDerecho(); dd.anio = lstEmpleado[0].antiguedadmod; int dias = 0; try { cnx.Open(); dias = (int)vh.diasDerecho(dd); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener los dias por derecho del empleado.", "Error"); cnx.Dispose(); return; } int existePrima = 0; int existeVacacion = 0; if (cmbConceptoVacaciones.SelectedIndex == 0) // PRIMA VACACIONAL Y VACACIONES { Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.vacacionesprima = "P"; try { cnx.Open(); existePrima = (int)vh.existeVacacionesPrima(vp); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la existencia de prima vacacional del empleado.", "Error"); cnx.Dispose(); return; } vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.vacacionesprima = "V"; try { cnx.Open(); existeVacacion = (int)vh.existeVacacionesPrima(vp); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la existencia de vacaciones del empleado.", "Error"); cnx.Dispose(); return; } //VALIDACION DE EXISTENCIA DE PRIMA VACACIONAL Y VACACIONES if (existePrima != 0 || existeVacacion != 0) { MessageBox.Show("Error: Los datos a ingresar ya existen y/o existe la Prima Vacaciona o Vacaciones.", "Error"); cnx.Dispose(); return; } else { Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper(); fh.Command = cmd; Faltas.Core.Faltas falta = new Faltas.Core.Faltas(); falta.idempresa = GLOBALES.IDEMPRESA; falta.idtrabajador = idTrabajador; falta.fechainicio = _inicioPeriodo.Date; falta.fechafin = _finPeriodo.Date; int existeFaltas = 0; try { cnx.Open(); existeFaltas = (int)fh.existeFalta(falta); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } int diasPagoReales = int.Parse(txtDiasPagoPV.Text) + existeFaltas; if (diasPagoReales > _periodo) { diasPagoReales = _periodo - existeFaltas; MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información"); } else { diasPagoReales = int.Parse(txtDiasPagoPV.Text); } vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.idempresa = GLOBALES.IDEMPRESA; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.diasderecho = dias; vp.diaspago = diasPagoReales; vp.diaspendientes = dias - diasPagoReales; vp.fechapago = DateTime.Now.Date; vp.fechainicio = DateTime.Now.Date; vp.fechafin = DateTime.Now.Date; vp.vacacionesprima = "P"; try { cnx.Open(); vh.insertaVacacion(vp); cnx.Close(); } catch { MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error"); cnx.Dispose(); return; } diasPagoReales = int.Parse(txtDiasPagoV.Text) + existeFaltas; if (diasPagoReales > _periodo) { diasPagoReales = _periodo - existeFaltas; MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información"); } else { diasPagoReales = int.Parse(txtDiasPagoV.Text); } vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.idempresa = GLOBALES.IDEMPRESA; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.diasderecho = dias; vp.diaspago = diasPagoReales; vp.diaspendientes = dias - diasPagoReales; vp.fechapago = DateTime.Now.Date; vp.fechainicio = dtpFechaInicioVacaciones.Value.Date; vp.fechafin = dtpFechaInicioVacaciones.Value.AddDays(diasPagoReales - 1); vp.vacacionesprima = "V"; try { cnx.Open(); vh.insertaVacacion(vp); cnx.Close(); cnx.Dispose(); muestraVacaciones(); } catch { MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error"); cnx.Dispose(); return; } } } else // SOLO PRIMA VACACIONAL { Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.vacacionesprima = "P"; try { cnx.Open(); existePrima = (int)vh.existeVacacionesPrima(vp); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la existencia de vacaciones del empleado.", "Error"); cnx.Dispose(); return; } //VALIDACION DE EXISTENCIA DE PRIMA VACACIONAL if (existePrima != 0) { MessageBox.Show("Error: Los datos a ingresar ya existen.", "Error"); cnx.Dispose(); return; } else { Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper(); fh.Command = cmd; Faltas.Core.Faltas falta = new Faltas.Core.Faltas(); falta.idempresa = GLOBALES.IDEMPRESA; falta.idtrabajador = idTrabajador; falta.fechainicio = _inicioPeriodo.Date; falta.fechafin = _finPeriodo.Date; int existeFaltas = 0; try { cnx.Open(); existeFaltas = (int)fh.existeFalta(falta); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } int diasPagoReales = int.Parse(txtDiasPagoPV.Text) + existeFaltas; if (diasPagoReales > _periodo) { diasPagoReales = _periodo - existeFaltas; MessageBox.Show("Existen faltas del trabajador, se ajustaron las vacaciones a: " + diasPagoReales.ToString() + " dia(s).", "Información"); } else { diasPagoReales = int.Parse(txtDiasPagoPV.Text); } vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idTrabajador; vp.idempresa = GLOBALES.IDEMPRESA; vp.periodoinicio = _inicioPeriodo; vp.periodofin = _finPeriodo; vp.diasderecho = dias; vp.diaspago = diasPagoReales; vp.diaspendientes = dias - diasPagoReales; vp.fechapago = DateTime.Now.Date; vp.fechainicio = DateTime.Now.Date; vp.fechafin = DateTime.Now.Date; vp.vacacionesprima = "P"; try { cnx.Open(); vh.insertaVacacion(vp); cnx.Close(); cnx.Dispose(); muestraVacaciones(); } catch { MessageBox.Show("Error: Al ingresar el registro de prima vacacional.", "Error"); cnx.Dispose(); return; } } } }
private void workVacaciones_DoWork(object sender, DoWorkEventArgs e) { int idEmpleado = 0; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; List<Vacaciones.Core.VacacionesPrima> lstMovimientos = new List<Vacaciones.Core.VacacionesPrima>(); vh = new Vacaciones.Core.VacacionesHelper(); vh.Command = cmd; emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; foreach (DataGridViewRow fila in dgvCargaVacaciones.Rows) { try { cnx.Open(); idEmpleado = (int)emph.obtenerIdTrabajador(fila.Cells["noempleado"].Value.ToString(), idEmpresa); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Obtener ID del concepto. \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); this.Dispose(); } Empleados.Core.Empleados empleado = new Empleados.Core.Empleados(); empleado.idtrabajador = idEmpleado; List<Empleados.Core.Empleados> lstEmpleado = new List<Empleados.Core.Empleados>(); try { cnx.Open(); lstEmpleado = emph.obtenerEmpleado(empleado); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la antigüedad del empleado.", "Error"); cnx.Dispose(); this.Dispose(); } Vacaciones.Core.DiasDerecho dd = new Vacaciones.Core.DiasDerecho(); dd.anio = lstEmpleado[0].antiguedadmod; int dias = 0; try { cnx.Open(); dias = (int)vh.diasDerecho(dd); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener los dias por derecho del empleado.", "Error"); cnx.Dispose(); return; } Faltas.Core.FaltasHelper fh = new Faltas.Core.FaltasHelper(); fh.Command = cmd; Faltas.Core.Faltas falta = new Faltas.Core.Faltas(); falta.idempresa = GLOBALES.IDEMPRESA; falta.idtrabajador = idEmpleado; falta.fechainicio = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["inicio"].Value.ToString()); falta.fechafin = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["fin"].Value.ToString()); int existeFaltas = 0; try { cnx.Open(); existeFaltas = (int)fh.existeFalta(falta); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener las faltas del trabajador. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } int idperiodo = 0; try { cnx.Open(); idperiodo = (int)emph.obtenerIdPeriodo(idEmpleado); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener el id del periodo. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = idperiodo; int diasPeriodo = 0; try { cnx.Open(); diasPeriodo = (int)ph.DiasDePago(p); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener los dias del periodo. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } int diasPagoReales = int.Parse(fila.Cells["diaspago"].Value.ToString()) + existeFaltas; if (diasPagoReales >= diasPeriodo) { diasPagoReales = diasPeriodo - existeFaltas; MessageBox.Show("Existen faltas del trabajador, se ajustarán las vacaciones.", "Información"); } else { diasPagoReales = int.Parse(fila.Cells["diaspago"].Value.ToString()); } Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = idEmpleado; vp.idempresa = GLOBALES.IDEMPRESA; vp.periodoinicio = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["inicio"].Value.ToString()); vp.periodofin = DateTime.Parse(dgvCargaVacaciones.Rows[0].Cells["fin"].Value.ToString()); vp.diasderecho = dias; vp.fechapago = DateTime.Now.Date; vp.vacacionesprima = fila.Cells["concepto"].Value.ToString() == "Prima Vacacional" ? "P" : "V"; if (fila.Cells["concepto"].Value.ToString() == "Prima Vacacional") { vp.diaspago = diasPagoReales; vp.diaspendientes = dias - diasPagoReales; vp.fechainicio = DateTime.Now.Date; vp.fechafin = DateTime.Now.Date; } else { vp.diaspago = diasPagoReales; vp.diaspendientes = dias - diasPagoReales; vp.fechainicio = DateTime.Parse(fila.Cells["fechaaplicacion"].Value.ToString()); vp.fechafin = DateTime.Parse(fila.Cells["fechaaplicacion"].Value.ToString()).AddDays(diasPagoReales - 1); } lstMovimientos.Add(vp); } bulk = new SqlBulkCopy(cnx); vh.bulkCommand = bulk; DataTable dt = new DataTable(); DataRow dtFila; dt.Columns.Add("id", typeof(Int32)); dt.Columns.Add("idtrabajador", typeof(Int32)); dt.Columns.Add("idempresa", typeof(Int32)); dt.Columns.Add("periodoinicio", typeof(DateTime)); dt.Columns.Add("periodofin", typeof(DateTime)); dt.Columns.Add("diasderecho", typeof(Int32)); dt.Columns.Add("diaspago", typeof(Int32)); dt.Columns.Add("diaspendientes", typeof(Int32)); dt.Columns.Add("fechapago", typeof(DateTime)); dt.Columns.Add("vacacionesprima", typeof(String)); dt.Columns.Add("fechainicio", typeof(DateTime)); dt.Columns.Add("fechafin", typeof(DateTime)); int index = 1; for (int i = 0; i < lstMovimientos.Count; i++) { dtFila = dt.NewRow(); dtFila["id"] = i + 1; dtFila["idtrabajador"] = lstMovimientos[i].idtrabajador; dtFila["idempresa"] = lstMovimientos[i].idempresa; dtFila["periodoinicio"] = lstMovimientos[i].periodoinicio; dtFila["periodofin"] = lstMovimientos[i].periodofin; dtFila["diasderecho"] = lstMovimientos[i].diasderecho; dtFila["diaspago"] = lstMovimientos[i].diaspago; dtFila["diaspendientes"] = lstMovimientos[i].diaspendientes; dtFila["fechapago"] = lstMovimientos[i].fechapago; dtFila["vacacionesprima"] = lstMovimientos[i].vacacionesprima; dtFila["fechainicio"] = lstMovimientos[i].fechainicio; dtFila["fechafin"] = lstMovimientos[i].fechafin; dt.Rows.Add(dtFila); index++; } try { cnx.Open(); vh.bulkVacaciones(dt, "tmpVacacionesPrima"); vh.stpVacaciones(); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error (DataTable): \r\n \r\n" + error.Message, "Error"); } }