private void workerImporta_DoWork(object sender, DoWorkEventArgs e) { int contador = dgvCargaEmpleados.Rows.Count; int progreso = 0; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; foreach (DataGridViewRow fila in dgvCargaEmpleados.Rows) { workerImporta.ReportProgress((progreso * 100) / contador); progreso++; dh = new Departamento.Core.DeptoHelper(); dh.Command = cmd; puestoh = new Puestos.Core.PuestosHelper(); puestoh.Command = cmd; ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; try { cnx.Open(); idDepto = (int)dh.obtenerIdDepartamento(fila.Cells["departamento"].Value.ToString(), GLOBALES.IDEMPRESA); idPuesto = (int)puestoh.obtenerIdPuesto(fila.Cells["puesto"].Value.ToString(), GLOBALES.IDEMPRESA); idPeriodo = (int)ph.obtenerIdPeriodo(fila.Cells["periodo"].Value.ToString(), GLOBALES.IDEMPRESA); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener los datos del Departamento, Puesto y/o Periodo.", "Error"); cnx.Dispose(); return; } Empleados.Core.Empleados empleado = new Empleados.Core.Empleados(); empleado.noempleado = fila.Cells["noempleado"].Value.ToString(); empleado.nombres = fila.Cells["nombre"].Value.ToString(); empleado.paterno = fila.Cells["paterno"].Value.ToString(); empleado.materno = fila.Cells["materno"].Value.ToString(); empleado.nombrecompleto = String.Format("{0} {1} {2}", empleado.paterno, empleado.materno, empleado.nombres); empleado.idempresa = GLOBALES.IDEMPRESA; empleado.idperiodo = idPeriodo; empleado.idsalario = 1; empleado.iddepartamento = idDepto; empleado.idpuesto = idPuesto; empleado.fechaingreso = DateTime.Parse(fila.Cells["fechaingreso"].Value.ToString()); empleado.antiguedad = 0; empleado.fechaantiguedad = DateTime.Parse(fila.Cells["fechaingreso"].Value.ToString()); empleado.antiguedadmod = 0; empleado.fechanacimiento = ObtieneFecha(fila.Cells["curp"].Value.ToString()); empleado.edad = ObtieneEdad(empleado.fechanacimiento); empleado.rfc = ObtenerRfc(empleado.paterno, empleado.materno, empleado.nombres, empleado.fechanacimiento); empleado.curp = fila.Cells["curp"].Value.ToString(); empleado.nss = fila.Cells["nss"].Value.ToString(); empleado.digitoverificador = int.Parse(fila.Cells["dv"].Value.ToString()); empleado.tiposalario = 19; empleado.sdi = decimal.Parse(fila.Cells["sdi"].Value.ToString()); empleado.sd = ObtieneSD(decimal.Parse(fila.Cells["sdi"].Value.ToString())); empleado.sueldo = ObtieneSueldo(empleado.sd); empleado.estatus = 1; empleado.idusuario = GLOBALES.IDUSUARIO; empleado.cuenta = "0000000000"; empleado.clabe = "000000000000000000"; empleado.idbancario = "0000"; empleado.metodopago = "TRANSFERENCIA"; empleado.tiporegimen = 60; //Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus(); //ee.estatus = GLOBALES.ACTIVO; //ee.idempresa = GLOBALES.IDEMPRESA; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; Empleados.Core.Empleados nss = new Empleados.Core.Empleados(); nss.nss = empleado.nss; nss.digitoverificador = empleado.digitoverificador; int existeEmpleado = 0; try { cnx.Open(); existeEmpleado = (int)emph.existeEmpleado(nss); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la existencia del empleado.", "Error"); cnx.Dispose(); return; } if (existeEmpleado == 0) { try { cnx.Open(); emph.insertaEmpleado(empleado); //ee.idtrabajador = (int)emph.obtenerIdTrabajador(empleado); //emph.insertaEmpleadoEstatus(ee); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al ingresar al empleado. No. empleado: " + fila.Cells["noempleado"].Value.ToString(), "Error"); cnx.Dispose(); return; } int idEmpleado = 0; try { cnx.Open(); idEmpleado = (int)emph.obtenerIdTrabajador(fila.Cells["noempleado"].Value.ToString(), GLOBALES.IDEMPRESA); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener el ID del empleado. No. empleado: " + fila.Cells["noempleado"].Value.ToString(), "Error"); cnx.Dispose(); return; } //cnx = new SqlConnection(cdn); //cmd = new SqlCommand(); //cmd.Connection = cnx; //hh = new Historial.Core.HistorialHelper(); //hh.Command = cmd; //Historial.Core.Historial historial = new Historial.Core.Historial(); //historial.idtrabajador = idEmpleado; //historial.tipomovimiento = GLOBALES.mALTA; //historial.valor = empleado.sdi; //historial.fecha_imss = DateTime.Parse(fila.Cells["fechaingreso"].Value.ToString()); //historial.fecha_sistema = DateTime.Now.Date; //historial.idempresa = GLOBALES.IDEMPRESA; //historial.motivobaja = 0; //try //{ // cnx.Open(); // hh.insertarHistorial(historial); // cnx.Close(); //} //catch (Exception) //{ // MessageBox.Show("Error: Al ingresar historial del trabajador. No. empleado: " + fila.Cells["noempleado"].Value.ToString(), "Error"); // cnx.Dispose(); // return; //} //cnx = new SqlConnection(cdn); //cmd = new SqlCommand(); //cmd.Connection = cnx; //eh = new Empresas.Core.EmpresasHelper(); //eh.Command = cmd; //Empresas.Core.Empresas empresa = new Empresas.Core.Empresas(); //empresa.idempresa = GLOBALES.IDEMPRESA; //try //{ // cnx.Open(); // registroPatronal = eh.obtenerRegistroPatronal(empresa).ToString(); // cnx.Close(); //} //catch (Exception) //{ // MessageBox.Show("Error: Al obtener el registro patronal. NoEmpleado: " + fila.Cells["noempleado"].Value.ToString() + ".", "Error"); // cnx.Dispose(); // return; //} //Altas.Core.Altas alta = new Altas.Core.Altas(); //alta.idtrabajador = idEmpleado; //alta.idempresa = GLOBALES.IDEMPRESA; //alta.registropatronal = registroPatronal; //alta.nss = empleado.nss + empleado.digitoverificador.ToString(); //alta.rfc = empleado.rfc; //alta.curp = empleado.curp; //alta.paterno = empleado.paterno; //alta.materno = empleado.materno; //alta.nombre = empleado.nombres; //alta.contrato = 4; //alta.jornada = 12; //alta.fechaingreso = empleado.fechaingreso; //alta.diasproporcionales = ObtenerDiasProporcionales(empleado.fechaingreso); //alta.sdi = empleado.sdi; //alta.cp = "0"; //alta.fechanacimiento = empleado.fechanacimiento; //alta.estado = ObtenerEstado(empleado.curp); //alta.noestado = ObtenerIdEstado(alta.estado); //alta.clinica = "0"; //alta.sexo = ObtenerSexo(empleado.curp); //alta.periodoInicio = periodoInicio; //alta.periodoFin = periodoFin; //cnx = new SqlConnection(cdn); //cmd = new SqlCommand(); //cmd.Connection = cnx; //ah = new Altas.Core.AltasHelper(); //ah.Command = cmd; //try //{ // cnx.Open(); // ah.insertaAlta(alta); // cnx.Close(); //} //catch (Exception) //{ // MessageBox.Show("Error: Al ingresar alta del trabajador. No. empleado: " + fila.Cells["noempleado"].Value.ToString(), "Error"); // cnx.Dispose(); // return; //} } } cnx.Dispose(); }
private void toolAplicar_Click(object sender, EventArgs e) { if (dgvCargaFaltas.Rows.Count == 0) { MessageBox.Show("No se puede aplicar verifique.", "Error"); return; } int idEmpleado = 0; bool EsAlta = false, EsReingreso = false, EsBaja = false; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; fh = new Faltas.Core.FaltasHelper(); fh.Command = cmd; emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; Altas.Core.AltasHelper ah = new Altas.Core.AltasHelper(); ah.Command = cmd; Reingreso.Core.ReingresoHelper rh = new Reingreso.Core.ReingresoHelper(); rh.Command = cmd; Bajas.Core.BajasHelper bh = new Bajas.Core.BajasHelper(); bh.Command = cmd; Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; List<Altas.Core.Altas> lstAlta; List<Reingreso.Core.Reingresos> lstReingreso; List<Bajas.Core.Bajas> lstBaja; foreach (DataGridViewRow fila in dgvCargaFaltas.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 empleado. \r\n \r\n" + error.Message, "Error"); return; } int idperiodo = 0; try { cnx.Open(); idperiodo = (int)emph.obtenerIdPeriodo(idEmpleado); cnx.Close(); } catch { MessageBox.Show("Error: al obtener el Id del Periodo.", "Error"); cnx.Dispose(); return; } Altas.Core.Altas alta = new Altas.Core.Altas(); alta.idempresa = GLOBALES.IDEMPRESA; alta.idtrabajador = idEmpleado; alta.periodoInicio = _inicioPeriodo.Date; alta.periodoFin = _finPeriodo.Date; Reingreso.Core.Reingresos reingreso = new Reingreso.Core.Reingresos(); reingreso.idempresa = GLOBALES.IDEMPRESA; reingreso.idtrabajador = idEmpleado; reingreso.periodoinicio = _inicioPeriodo.Date; reingreso.periodofin = _finPeriodo.Date; Bajas.Core.Bajas baja = new Bajas.Core.Bajas(); baja.idempresa = GLOBALES.IDEMPRESA; baja.idtrabajador = idEmpleado; baja.periodoinicio = _inicioPeriodo.Date; baja.periodofin = _finPeriodo.Date; lstAlta = new List<Altas.Core.Altas>(); lstReingreso = new List<Reingreso.Core.Reingresos>(); lstBaja = new List<Bajas.Core.Bajas>(); Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = idperiodo; int periodo = 0; try { cnx.Open(); periodo = (int)ph.DiasDePago(p); lstAlta = ah.obtenerAlta(alta); lstReingreso = rh.obtenerReingreso(reingreso); lstBaja = bh.obtenerBaja(baja); cnx.Close(); } catch { MessageBox.Show("Error: al obtener los dias de pago.", "Error"); cnx.Dispose(); return; } if (lstAlta.Count != 0) EsAlta = true; if (lstBaja.Count != 0) EsBaja = true; if (lstReingreso.Count != 0) EsReingreso = true; int falta = int.Parse(fila.Cells["faltas"].Value.ToString()); DateTime fecha = DateTime.Parse(fila.Cells["fechainicio"].Value.ToString()); if (falta > 15) falta = 15; for (int i = 0; i < falta; i++) { int existe = 0; int existeFalta = 0; int existeVacacion = 0; try { cnx.Open(); existeFalta = (int)fh.existeFalta(idEmpleado, fecha.AddDays(i).Date); cnx.Close(); } catch { MessageBox.Show("Error: Al verificar existencia de falta.", "Error"); cnx.Dispose(); return; } if (existeFalta == 0) { Incidencias.Core.IncidenciasHelper ih = new Incidencias.Core.IncidenciasHelper(); ih.Command = cmd; Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper(); vh.Command = cmd; bool FLAG_FALTAS = false; if (EsAlta) { if (fecha.AddDays(i).Date < lstAlta[0].fechaingreso.Date) { MessageBox.Show("Error: Alta del empleado: " + fila.Cells["noempleado"].Value.ToString() + ", Fecha de Ingreso = " + lstAlta[0].fechaingreso.Date.ToShortDateString() + "\r\n Fecha de la falta es menor.", "Error"); FLAG_FALTAS = true; } else FLAG_FALTAS = false; } if (EsReingreso) { if (fecha.AddDays(i).Date < lstReingreso[0].fechaingreso.Date) { MessageBox.Show("Error: Alta del empleado: " + fila.Cells["noempleado"].Value.ToString() + ", Fecha de Reingreso = " + lstReingreso[0].fechaingreso.Date.ToShortDateString() + "\r\n Fecha de la falta es menor.", "Error"); FLAG_FALTAS = true; } else FLAG_FALTAS = false; } if (EsBaja) { if (fecha.AddDays(i).Date > lstBaja[0].fecha.Date) { MessageBox.Show("Error: Alta del empleado " + fila.Cells["noempleado"].Value.ToString() + ", Fecha de Reingreso = " + lstBaja[0].fecha.Date.ToShortDateString() + "\r\n Fecha de la falta es mayor.", "Error"); FLAG_FALTAS = true; } else FLAG_FALTAS = false; } if (!FLAG_FALTAS) { try { cnx.Open(); existe = (int)ih.existeIncidenciaEnFalta(idEmpleado, fecha.AddDays(i).Date); existeVacacion = (int)vh.existeVacacionEnFalta(idEmpleado, fecha.AddDays(i).Date); cnx.Close(); } catch { MessageBox.Show("Error: Al guardar la falta.", "Error"); cnx.Dispose(); return; } if (existe == 0 && existeVacacion == 0) try { Faltas.Core.Faltas f = new Faltas.Core.Faltas(); f.idempresa = GLOBALES.IDEMPRESA; f.idtrabajador = idEmpleado; f.periodo = periodo; f.faltas = 1; f.fechainicio = DateTime.Parse(dgvCargaFaltas.Rows[0].Cells["fechainicio"].Value.ToString()); f.fechafin = DateTime.Parse(dgvCargaFaltas.Rows[0].Cells["fechafin"].Value.ToString()); f.fecha = fecha.AddDays(i).Date; cnx.Open(); fh.insertaFalta(f); cnx.Close(); } catch { MessageBox.Show("Error: Al guardar la falta.", "Error"); cnx.Dispose(); } else MessageBox.Show("La falta ingresada, se empalma con una incapacidad y/o dia de vacación del trabajador.", "Error"); } } } EsAlta = false; EsReingreso = false; EsBaja = false; } MessageBox.Show("Faltas importadas", "Confirmación"); cnx.Dispose(); dgvCargaFaltas.Rows.Clear(); }
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"); } }
private void guardar(int tipoGuardar) { int existe = 0; //SE VALIDA SI TODOS LOS CAMPOS HAN SIDO LLENADOS. string control = GLOBALES.VALIDAR(this, typeof(TextBox)); if (!control.Equals("")) { MessageBox.Show("Falta el campo: " + control, "Información"); return; } control = GLOBALES.VALIDAR(this, typeof(MaskedTextBox)); if (!control.Equals("")) { MessageBox.Show("Falta el campo: " + control, "Información"); return; } if (txtNSS.Text.Length != 11) { MessageBox.Show("El campo NSS es mayor o meno a 11 dígitos.", "Error"); return; } int idtrabajador; cnx = new SqlConnection(); cnx.ConnectionString = cdn; cmd = new SqlCommand(); cmd.Connection = cnx; eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Empleados.Core.Empleados existeEmpleado = new Empleados.Core.Empleados(); existeEmpleado.nss = txtNSS.Text.Trim().Substring(0, 10); existeEmpleado.digitoverificador = int.Parse(txtNSS.Text.Trim().Substring(10, 1)); existeEmpleado.idempresa = GLOBALES.IDEMPRESA; int existeNss; try { cnx.Open(); existeNss = (int)eh.existeEmpleado(existeEmpleado); cnx.Close(); } catch { MessageBox.Show("Error al validar existencia de empleado.", "Error"); return; } Empleados.Core.Empleados em = new Empleados.Core.Empleados(); em.nombres = txtNombre.Text; em.paterno = txtApPaterno.Text; em.materno = txtApMaterno.Text; em.noempleado = mtxtNoEmpleado.Text; em.nombrecompleto = txtApPaterno.Text + (string.IsNullOrEmpty(txtApMaterno.Text) ? "" : " " + txtApMaterno.Text) + " " + txtNombre.Text; em.fechaingreso = dtpFechaIngreso.Value; em.antiguedad = int.Parse(txtAntiguedad.Text); em.fechaantiguedad = dtpFechaAntiguedad.Value; em.fechanacimiento = dtpFechaNacimiento.Value; em.antiguedadmod = int.Parse(txtAntiguedadMod.Text); em.edad = int.Parse(txtEdad.Text); em.idempresa = GLOBALES.IDEMPRESA; em.rfc = txtRFC.Text; em.curp = txtCURP.Text; em.nss = txtNSS.Text.Trim().Substring(0, 10); em.digitoverificador = int.Parse(txtNSS.Text.Trim().Substring(10, 1)); em.idperiodo = int.Parse(cmbPeriodo.SelectedValue.ToString()); em.idsalario = int.Parse(cmbZona.SelectedValue.ToString()); em.tiposalario = int.Parse(cmbTipoSalario.SelectedValue.ToString()); em.tiporegimen = int.Parse(cmbTipoRegimen.SelectedValue.ToString()); em.sdi = decimal.Parse(txtSDI.Text); em.sd = decimal.Parse(txtSD.Text); em.sueldo = decimal.Parse(txtSueldo.Text); em.cuenta = mtxtCuentaBancaria.Text; em.clabe = mtxtCuentaClabe.Text; em.idbancario = mtxtIdBancario.Text; em.metodopago = cmbMetodoPago.Text; //em.metodopago = int.Parse(cmbMetodoPago.SelectedValue.ToString()); if (chkObraCivil.Checked) em.obracivil = true; else em.obracivil = false; //hh = new Historial.Core.HistorialHelper(); //hh.Command = cmd; //Historial.Core.Historial h = new Historial.Core.Historial(); //h.idempresa = GLOBALES.IDEMPRESA; //h.tipomovimiento = GLOBALES.mALTA; //h.valor = decimal.Parse(txtSDI.Text); //h.fecha_imss = dtpFechaIngreso.Value; //h.fecha_sistema = DateTime.Now; //h.motivobaja = 0; //h.iddepartamento = int.Parse(cmbDepartamento.SelectedValue.ToString()); //h.idpuesto = int.Parse(cmbPuesto.SelectedValue.ToString()); ih = new Imagen.Core.ImagenesHelper(); ih.Command = cmd; Imagen.Core.Imagenes img = null; //Empresas.Core.EmpresasHelper empresash = new Empresas.Core.EmpresasHelper(); //empresash.Command = cmd; //Empresas.Core.Empresas empresa = new Empresas.Core.Empresas(); //empresa.idempresa = GLOBALES.IDEMPRESA; try { if (ImagenAsignada == true) { img = new Imagen.Core.Imagenes(); img.imagen = GLOBALES.IMAGEN_BYTES(bmp); img.tipopersona = GLOBALES.pEMPLEADO; } } catch (Exception error) { MessageBox.Show("Error: " + error.Message, "Error"); } switch (_tipoOperacion) { case 0: try { //Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus(); //ee.estatus = GLOBALES.ACTIVO; //ee.idempresa = GLOBALES.IDEMPRESA; em.estatus = GLOBALES.ACTIVO; em.idusuario = GLOBALES.IDUSUARIO; em.iddepartamento = int.Parse(cmbDepartamento.SelectedValue.ToString()); em.idpuesto = int.Parse(cmbPuesto.SelectedValue.ToString()); if (existeNss != 0) { MessageBox.Show("El empleado que desea ingresar ya existe actualmente. \r\n \r\n Es necesario realizar un reingreso.", "Error"); return; } cnx.Open(); eh.insertaEmpleado(em); idtrabajador = (int)eh.obtenerIdTrabajador(em); //h.idtrabajador = idtrabajador; //hh.insertarHistorial(h); //ee.idtrabajador = idtrabajador; //eh.insertaEmpleadoEstatus(ee); //a.idtrabajador = idtrabajador; //a.registropatronal = empresash.obtenerRegistroPatronal(empresa).ToString(); //ah.insertaAlta(a); if (ImagenAsignada == true) { img.idpersona = idtrabajador; ih.insertaImagen(img); } cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error al ingresar el empleado. \r\n \r\n Error: " + error.Message); } break; case 2: try { em.idtrabajador = _idempleado; em.iddepartamento = idDepto; em.idpuesto = idPuesto; pdh = new Periodos.Core.PeriodosHelper(); pdh.Command = cmd; Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = int.Parse(cmbPeriodo.SelectedValue.ToString()); int diasPago = 0; try { cnx.Open(); diasPago = (int)pdh.DiasDePago(p); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener los dias de pago.", "Error"); } DateTime dt = dtpFechaIngreso.Value.Date; DateTime periodoInicio, periodoFin; int diasProporcionales = 0; if (diasPago == 7) { while (dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1); periodoInicio = dt; periodoFin = dt.AddDays(6); diasProporcionales = (int)(periodoFin.Date - dtpFechaIngreso.Value.Date).TotalDays + 1; } else { if (dt.Day <= 15) { periodoInicio = new DateTime(dt.Year, dt.Month, 1); periodoFin = new DateTime(dt.Year, dt.Month, 15); diasProporcionales = (int)(periodoFin.Date - dtpFechaIngreso.Value.Date).TotalDays + 1; } else { int diasMes = DateTime.DaysInMonth(dt.Year, dt.Month); int diasNoLaborados = 0; periodoInicio = new DateTime(dt.Year, dt.Month, 16); periodoFin = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month)); diasNoLaborados = (int)(dtpFechaIngreso.Value.Date - periodoInicio).TotalDays; switch (diasMes) { case 28: diasProporcionales = 15 - diasNoLaborados; break; case 29: diasProporcionales = 15 - diasNoLaborados; break; case 30: diasProporcionales = (diasMes - 15) - diasNoLaborados; break; case 31: diasProporcionales = (diasMes - 16) - diasNoLaborados; break; } } } Altas.Core.AltasHelper ah = new Altas.Core.AltasHelper(); ah.Command = cmd; Altas.Core.Altas a = new Altas.Core.Altas(); a.idempresa = GLOBALES.IDEMPRESA; a.contrato = 4; a.jornada = 12; a.nss = txtNSS.Text; a.rfc = txtRFC.Text; a.curp = txtCURP.Text; a.paterno = txtApPaterno.Text; a.materno = txtApMaterno.Text; a.nombre = txtNombre.Text; a.fechaingreso = dtpFechaIngreso.Value; a.diasproporcionales = diasProporcionales; a.sdi = decimal.Parse(txtSDI.Text); a.fechanacimiento = dtpFechaNacimiento.Value; a.estado = cmbEstado.Text; a.noestado = int.Parse(cmbEstado.SelectedValue.ToString()); a.sexo = ObtieneSexo(); a.periodoInicio = periodoInicio; a.periodoFin = periodoFin; cnx.Open(); eh.actualizaEmpleado(em); a.idtrabajador = _idempleado; ah.actualizaAlta(a); if (ImagenAsignada == true) { img.idpersona = _idempleado; img.tipopersona = GLOBALES.pEMPLEADO; existe = (int)ih.ExisteImagen(img); if (existe != 0) ih.actualizaImagen(img); else ih.insertaImagen(img); } cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error al actualizar el empleado. \r\n \r\n Error: " + error.Message); } break; } switch (tipoGuardar) { case 0: GLOBALES.LIMPIAR(this, typeof(TextBox)); GLOBALES.LIMPIAR(this, typeof(MaskedTextBox)); GLOBALES.REFRESCAR(this, typeof(ComboBox)); break; case 1: if (OnNuevoEmpleado != null) OnNuevoEmpleado(_tipoOperacion); this.Dispose(); break; } }
private void workMovimientos_DoWork(object sender, DoWorkEventArgs e) { string formulaexento = ""; int idConcepto = 0, idEmpleado = 0; int existeConcepto = 0; int idPeriodo = 0, diasPeriodo = 0; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; List<CalculoNomina.Core.tmpPagoNomina> lstMovimientos = new List<CalculoNomina.Core.tmpPagoNomina>(); List<Movimientos.Core.Movimientos> lstOtrasDeducciones = new List<Movimientos.Core.Movimientos>(); CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Movimientos.Core.MovimientosHelper mh = new Movimientos.Core.MovimientosHelper(); mh.Command = cmd; ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; foreach (DataGridViewRow fila in dgvMovimientos.Rows) { Empleados.Core.EmpleadosHelper empleadosHelper = new Empleados.Core.EmpleadosHelper(); empleadosHelper.Command = cmd; cnx.Open(); idEmpleado = (int)emph.obtenerIdTrabajador(fila.Cells["noempleado"].Value.ToString(), idEmpresa); idPeriodo = int.Parse(empleadosHelper.obtenerIdPeriodo(idEmpleado).ToString()); cnx.Close(); Periodos.Core.PeriodosHelper periodoHelper = new Periodos.Core.PeriodosHelper(); periodoHelper.Command = cmd; Periodos.Core.Periodos periodos = new Periodos.Core.Periodos(); periodos.idperiodo = idPeriodo; cnx.Open(); diasPeriodo = int.Parse(periodoHelper.DiasDePago(periodos).ToString()); cnx.Close(); try { cnx.Open(); idConcepto = (int)ch.obtenerIdConcepto(fila.Cells["concepto"].Value.ToString().TrimStart().TrimEnd(), idEmpresa, diasPeriodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Obtener ID del concepto. \r\n " + fila.Cells["concepto"].Value.ToString() + "\r\n" + "No. Empleado: " + fila.Cells["noempleado"].Value.ToString() + "\r\n" + error.Message, "Error"); return; } Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = idConcepto; List<Conceptos.Core.Conceptos> lstConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch { MessageBox.Show("Error al obtener el concepto. \r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); this.Dispose(); } CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.idtrabajador = idEmpleado; pn.idconcepto = idConcepto; pn.noconcepto = lstConcepto[0].noconcepto; pn.tipoconcepto = lstConcepto[0].tipoconcepto; pn.fechainicio = DateTime.Parse(dgvMovimientos.Rows[0].Cells["inicio"].Value.ToString()); pn.fechafin = DateTime.Parse(dgvMovimientos.Rows[0].Cells["fin"].Value.ToString()); pn.modificado = true; pn.guardada = false; pn.tiponomina = _tipoNomina; CalculoNomina.Core.tmpPagoNomina pne; switch (lstConcepto[0].tipoconcepto) { #region PERCEPCIONES case "P": Conceptos.Core.Conceptos _concepto = new Conceptos.Core.Conceptos(); concepto.noconcepto = lstConcepto[0].noconcepto; concepto.idempresa = GLOBALES.IDEMPRESA; try { cnx.Open(); formulaexento = ch.obtenerFormulaExento(concepto).ToString(); cnx.Close(); } catch { MessageBox.Show("Error al obtener la formula de exento.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } if (formulaexento == "0") { pn.cantidad = decimal.Parse(fila.Cells["cantidad"].Value.ToString()); pn.exento = 0; pn.gravado = decimal.Parse(fila.Cells["cantidad"].Value.ToString()); } else { CalculoFormula cf = new CalculoFormula(idEmpleado, DateTime.Parse(dgvMovimientos.Rows[0].Cells["inicio"].Value.ToString()), DateTime.Parse(dgvMovimientos.Rows[0].Cells["fin"].Value.ToString()), formulaexento); decimal exento = decimal.Parse(cf.calcularFormula().ToString()); decimal cantidad = decimal.Parse(fila.Cells["cantidad"].Value.ToString()); decimal gravado = 0; if (cantidad <= exento) { exento = cantidad; gravado = 0; } else { gravado = cantidad - exento; } pn.cantidad = cantidad; pn.exento = exento; pn.gravado = gravado; } pne = new CalculoNomina.Core.tmpPagoNomina(); pne.idempresa = GLOBALES.IDEMPRESA; pne.idtrabajador = idEmpleado; pne.fechainicio = DateTime.Parse(dgvMovimientos.Rows[0].Cells["inicio"].Value.ToString()); pne.fechafin = DateTime.Parse(dgvMovimientos.Rows[0].Cells["fin"].Value.ToString()); pne.noconcepto = lstConcepto[0].noconcepto; try { cnx.Open(); existeConcepto = (int)nh.existeConcepto(pne); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } if (existeConcepto == 0) { lstMovimientos.Add(pn); } else { try { cnx.Open(); nh.actualizaConceptoModificado(pn); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error al obtener la actualizar el concepto.\r\n \r\n Esta ventana se cerrará.\r\n" + error.Message, "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } } break; #endregion #region DEDUCCIONES case "D": //*****SE OBTIENE LA FORMULA DEL CONCEPTO DE DEDUCCION string formula = ""; Conceptos.Core.ConceptosHelper conceptoh = new Conceptos.Core.ConceptosHelper(); conceptoh.Command = cmd; Conceptos.Core.Conceptos conceptoDeduccion = new Conceptos.Core.Conceptos(); conceptoDeduccion.idempresa = GLOBALES.IDEMPRESA; conceptoDeduccion.noconcepto = lstConcepto[0].noconcepto; conceptoDeduccion.periodo = diasPeriodo; try { cnx.Open(); formula = conceptoh.obtenerFormula(conceptoDeduccion).ToString(); cnx.Close(); } catch { MessageBox.Show("Error al obtener la formula del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); return; } //*****FIN if (formula != "[Deduccion]") { pn.cantidad = decimal.Parse(fila.Cells["cantidad"].Value.ToString()); pn.exento = 0; pn.gravado = 0; pne = new CalculoNomina.Core.tmpPagoNomina(); pne.idempresa = GLOBALES.IDEMPRESA; pne.idtrabajador = idEmpleado; pne.fechainicio = DateTime.Parse(dgvMovimientos.Rows[0].Cells["inicio"].Value.ToString()); pne.fechafin = DateTime.Parse(dgvMovimientos.Rows[0].Cells["fin"].Value.ToString()); pne.noconcepto = lstConcepto[0].noconcepto; try { cnx.Open(); existeConcepto = (int)nh.existeConcepto(pne); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } if (existeConcepto == 0) { lstMovimientos.Add(pn); } else { try { cnx.Open(); nh.actualizaConceptoModificado(pn); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } } } else { Movimientos.Core.Movimientos mov = new Movimientos.Core.Movimientos(); mov.idtrabajador = idEmpleado; mov.idempresa = GLOBALES.IDEMPRESA; mov.idconcepto = lstConcepto[0].id; mov.cantidad = decimal.Parse(fila.Cells["cantidad"].Value.ToString()); mov.fechainicio = DateTime.Parse(fila.Cells["inicio"].Value.ToString()); mov.fechafin = DateTime.Parse(fila.Cells["fin"].Value.ToString()); try { cnx.Open(); existeConcepto = (int)mh.existeMovimientoConcepto(mov); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } if (existeConcepto == 0) { lstOtrasDeducciones.Add(mov); } else { try { cnx.Open(); mh.actualizaMovimiento(mov); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.\r\n \r\n Esta ventana se cerrará.", "Error"); cnx.Dispose(); workMovimientos.CancelAsync(); this.Dispose(); } } } break; #endregion } } if (lstMovimientos.Count != 0) { bulk = new SqlBulkCopy(cnx); nh.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("idconcepto", typeof(Int32)); dt.Columns.Add("noconcepto", typeof(Int32)); dt.Columns.Add("tipoconcepto", typeof(String)); dt.Columns.Add("exento", typeof(Decimal)); dt.Columns.Add("gravado", typeof(Decimal)); dt.Columns.Add("cantidad", typeof(Decimal)); dt.Columns.Add("fechainicio", typeof(DateTime)); dt.Columns.Add("fechafin", typeof(DateTime)); dt.Columns.Add("noperiodo", typeof(Int32)); dt.Columns.Add("diaslaborados", typeof(Int32)); dt.Columns.Add("guardada", typeof(Boolean)); dt.Columns.Add("tiponomina", typeof(Int32)); dt.Columns.Add("modificado", typeof(Boolean)); dt.Columns.Add("fechapago", typeof(DateTime)); dt.Columns.Add("obracivil", typeof(Boolean)); dt.Columns.Add("periodo", typeof(Int32)); 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["idconcepto"] = lstMovimientos[i].idconcepto; dtFila["noconcepto"] = lstMovimientos[i].noconcepto; dtFila["tipoconcepto"] = lstMovimientos[i].tipoconcepto; dtFila["exento"] = lstMovimientos[i].exento; dtFila["gravado"] = lstMovimientos[i].gravado; dtFila["cantidad"] = lstMovimientos[i].cantidad; dtFila["fechainicio"] = lstMovimientos[i].fechainicio; dtFila["fechafin"] = lstMovimientos[i].fechafin; dtFila["noperiodo"] = 0; dtFila["diaslaborados"] = 0; dtFila["guardada"] = lstMovimientos[i].guardada; dtFila["tiponomina"] = lstMovimientos[i].tiponomina; dtFila["modificado"] = lstMovimientos[i].modificado; dtFila["fechapago"] = new DateTime(1900,1,1); dtFila["obracivil"] = false; dtFila["periodo"] = _periodo; dt.Rows.Add(dtFila); index++; } try { cnx.Open(); nh.bulkNomina(dt, "tmpPagoNomina"); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error (DataTable): \r\n \r\n" + error.Message, "Error"); } } if (lstOtrasDeducciones.Count != 0) { bulk = new SqlBulkCopy(cnx); mh.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("idconcepto", typeof(Int32)); dt.Columns.Add("cantidad", typeof(Decimal)); dt.Columns.Add("fechainicio", typeof(DateTime)); dt.Columns.Add("fechafin", typeof(DateTime)); int index = 1; for (int i = 0; i < lstOtrasDeducciones.Count; i++) { dtFila = dt.NewRow(); dtFila["id"] = i + 1; dtFila["idtrabajador"] = lstOtrasDeducciones[i].idtrabajador; dtFila["idempresa"] = lstOtrasDeducciones[i].idempresa; dtFila["idconcepto"] = lstOtrasDeducciones[i].idconcepto; dtFila["cantidad"] = lstOtrasDeducciones[i].cantidad; dtFila["fechainicio"] = lstOtrasDeducciones[i].fechainicio; dtFila["fechafin"] = lstOtrasDeducciones[i].fechafin; dt.Rows.Add(dtFila); index++; } try { cnx.Open(); mh.bulkMovimientos(dt, "tmpMovimientos"); mh.stpMovimientos(); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error (DataTable): \r\n \r\n" + error.Message, "Error"); } } }