private void toolGuardar_Click(object sender, EventArgs e) { //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; } if (_idEmpleado == 0) { MessageBox.Show("No se puede guardar no ha seleccionado al Empleado", "Error"); return; } //bool alta_reingreso = ChecaFechaAltaReingreso(); //if (dtpFechaAplicacion.Value.Date > dtpFinPeriodo.Value.Date) //{ // MessageBox.Show("La fecha de aplicacion es mayor al periodo.", "Error"); // return; //} //if (dtpFechaAplicacion.Value.Date < dtpInicioPeriodo.Value.Date) //{ // MessageBox.Show("La fecha de aplicacion es menor al periodo.", "Error"); // return; //} cnx = new SqlConnection(); cnx.ConnectionString = cdn; cmd = new SqlCommand(); cmd.Connection = cnx; ih = new Infonavit.Core.InfonavitHelper(); ih.Command = cmd; PeriodoFechaAplicacion(); Infonavit.Core.Infonavit i = new Infonavit.Core.Infonavit(); i.idtrabajador = _idEmpleado; i.idempresa = GLOBALES.IDEMPRESA; i.credito = txtNumeroCredito.Text; i.descuento = Descuento; i.activo = chkInactivo.Checked == true ? false : true; i.descripcion = txtDescripcion.Text; i.dias = (int)(periodoFin.Date - dtpFechaAplicacion.Value.Date).TotalDays + 1; i.fecha = dtpFechaAplicacion.Value.Date; i.inicio = periodoInicio.Date; i.fin = periodoFin.Date; i.registro = DateTime.Now; i.idusuario = GLOBALES.IDUSUARIO; i.estatus = int.Parse(cmbEstatusInfonavit.SelectedValue.ToString()); if (rbtnPesos.Checked) if (Periodo == 7) i.valordescuento = (decimal.Parse(txtValor.Text) / decimal.Parse((30.4).ToString())) * Periodo; else i.valordescuento = decimal.Parse(txtValor.Text) / 2; if (rbtnVsmdf.Checked) i.valordescuento = decimal.Parse(txtValor.Text); if (rbtnPorcentaje.Checked) i.valordescuento = decimal.Parse(txtValor.Text); Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.ConceptoTrabajador ctInfonavit = new Conceptos.Core.ConceptoTrabajador(); ctInfonavit.idempleado = _idEmpleado; Conceptos.Core.ConceptoTrabajador ctSeguroInfonavit = new Conceptos.Core.ConceptoTrabajador(); ctSeguroInfonavit.idempleado = _idEmpleado; try { cnx.Open(); ctInfonavit.idconcepto = (int)ch.obtenerIdConcepto(9, GLOBALES.IDEMPRESA, Periodo); ctSeguroInfonavit.idconcepto = (int)ch.obtenerIdConcepto(21, GLOBALES.IDEMPRESA, Periodo); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener el ID del Concepto Infonavit.", "Error"); cnx.Dispose(); return; } switch (_tipoOperacion) { case 0: try { int existeCredito = 0; cnx.Open(); existeCredito = int.Parse(ih.existeInfonavit(_idEmpleado, txtNumeroCredito.Text.Trim()).ToString()); if (existeCredito != 0) { MessageBox.Show("El número de credito que desea ingresar ya existe.\r\n" + "Si es una modificación del crédito use la opción \"Modificación\""); this.Dispose(); } else { ih.insertaInfonavit(i); ch.insertaConceptoTrabajador(ctInfonavit); ch.insertaConceptoTrabajador(ctSeguroInfonavit); } cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error al ingresar los datos. \r\n \r\n Error: " + error.Message); this.Dispose(); } break; case 2: try { cnx.Open(); if (_modificar == 0) { i.idinfonavit = IdInfonavit; ih.actualizaInfonavit(i); } else if (_modificar == 1) { ih.insertaInfonavit(i); ih.actualizaEstatusInfonavit(IdInfonavit, DateTime.Now, GLOBALES.IDUSUARIO); } cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error al actualizar los datos. \r\n \r\n Error: " + error.Message); this.Dispose(); } break; } if (OnNuevoInfonavit != null) OnNuevoInfonavit(_tipoOperacion); this.Dispose(); }
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"); } } }