private void toolMostrarDatos_Click(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.fechainicio = periodoInicio.Date; pn.fechafin = periodoFin.Date; pn.obracivil = _obracivil; List<CalculoNomina.Core.tmpPagoNomina> lstPreNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); lstPreNomina = nh.obtenerPreNomina(pn, _periodo); cnx.Close(); cnx.Dispose(); } catch { MessageBox.Show("Error: Al obtener los valores de la prenomina. (Mostrar Datos).", "Error"); cnx.Dispose(); return; } foreach (DataGridViewRow fila in dgvEmpleados.Rows) { for (int i = 0; i < lstPreNomina.Count; i++) { if (int.Parse(fila.Cells["idtrabajador"].Value.ToString()) == lstPreNomina[i].idtrabajador) { switch (lstPreNomina[i].noconcepto) { case 1: fila.Cells["sueldo"].Value = lstPreNomina[i].cantidad; break; case 2: fila.Cells["horas"].Value = lstPreNomina[i].cantidad; break; case 3: fila.Cells["asistencia"].Value = lstPreNomina[i].cantidad; break; case 5: fila.Cells["puntualidad"].Value = lstPreNomina[i].cantidad; break; case 6: fila.Cells["despensa"].Value = lstPreNomina[i].cantidad; break; } } } } }
void da_OnDespensa(decimal cantidad) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina despensa = new CalculoNomina.Core.tmpPagoNomina(); despensa.idempresa = GLOBALES.IDEMPRESA; despensa.idtrabajador = idTrabajador; despensa.noconcepto = 6; //CONCEPTO DESPENSA despensa.fechainicio = _inicioPeriodo.Date; despensa.fechafin = _finPeriodo.Date; despensa.cantidad = cantidad; despensa.exento = 0; despensa.gravado = cantidad; despensa.modificado = true; try { cnx.Open(); nh.actualizaHorasExtrasDespensa(despensa); cnx.Close(); cnx.Dispose(); muestraDatos(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } }
private void ChecaFechaAltaReingreso() { DateTime inicio = DateTime.Now.Date, fin = DateTime.Now.Date; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; Altas.Core.AltasHelper ah = new Altas.Core.AltasHelper(); ah.Command = cmd; Reingreso.Core.ReingresoHelper rh = new Reingreso.Core.ReingresoHelper(); rh.Command = cmd; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstUltimaNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); lstUltimaNomina = nh.obtenerUltimaNomina(GLOBALES.IDEMPRESA, false); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } if (lstUltimaNomina.Count != 0) { if (Periodo == 7) { inicio = lstUltimaNomina[0].fechafin.AddDays(1); fin = lstUltimaNomina[0].fechafin.AddDays(7); } else { inicio = lstUltimaNomina[0].fechafin.AddDays(1); if (inicio.Day <= 15) fin = lstUltimaNomina[0].fechafin.AddDays(15); else fin = new DateTime(inicio.Year, inicio.Month, DateTime.DaysInMonth(inicio.Year, inicio.Month)); } } Altas.Core.Altas a = new Altas.Core.Altas(); a.idtrabajador = _idEmpleado; a.periodoInicio = inicio.Date; a.periodoFin = fin.Date; Reingreso.Core.Reingresos r = new Reingreso.Core.Reingresos(); r.idtrabajador = _idEmpleado; r.periodoinicio = inicio.Date; r.periodofin = fin.Date; int existeAlta = 0; int existeReingreso = 0; try { cnx.Open(); existeAlta = (int)ah.existeAlta(a); existeReingreso = (int)rh.existeReingreso(r); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la existencia de la alta.", "Error"); cnx.Dispose(); } DateTime fechaAlta = DateTime.Now.Date; DateTime fechaReingreso = DateTime.Now.Date; if (existeAlta != 0) { try { cnx.Open(); fechaAlta = DateTime.Parse(ah.fechaAlta(a).ToString()); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la fecha de alta.", "Error"); cnx.Dispose(); } if (dtpFechaAplicacion.Value.Date < fechaAlta) dtpFechaAplicacion.Value = fechaAlta; } if (existeReingreso != 0) { try { cnx.Open(); fechaReingreso = DateTime.Parse(rh.fechaReingreso(r).ToString()); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la fecha de alta.", "Error"); cnx.Dispose(); } if (dtpFechaAplicacion.Value.Date < fechaReingreso) dtpFechaAplicacion.Value = fechaReingreso; } }
private void toolCalcular_Click(object sender, EventArgs e) { int existeConcepto = 0; int estatus = 0; int existeAltaReingreso = 0; //string noConceptosPercepciones = "", noConceptosDeducciones = ""; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; List<CalculoNomina.Core.Nomina> lstConceptosPercepciones = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosDeducciones = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosPercepcionesModificados = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosDeduccionesModificados = new List<CalculoNomina.Core.Nomina>(); CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; Altas.Core.AltasHelper ah = new Altas.Core.AltasHelper(); ah.Command = cmd; Reingreso.Core.ReingresoHelper rh = new Reingreso.Core.ReingresoHelper(); rh.Command = cmd; if (_periodo == 7) { periodoInicioPosterior = _finPeriodo.AddDays(1); periodoFinPosterior = _finPeriodo.AddDays(7); } else { periodoInicioPosterior = _finPeriodo.AddDays(1); if (periodoInicioPosterior.Day <= 15) periodoFinPosterior = _finPeriodo.AddDays(15); else periodoFinPosterior = new DateTime(periodoInicioPosterior.Year, periodoInicioPosterior.Month, DateTime.DaysInMonth(periodoInicioPosterior.Year, periodoInicioPosterior.Month)); } try { cnx.Open(); estatus = int.Parse(eh.obtenerEstatus(idTrabajador).ToString()); cnx.Close(); if (estatus == 0) { cnx.Open(); nh.eliminaPreNomina(idTrabajador); cnx.Close(); } else { cnx.Open(); existeAltaReingreso = ah.existeAlta(GLOBALES.IDEMPRESA, idTrabajador, periodoInicioPosterior, periodoFinPosterior); cnx.Close(); if (existeAltaReingreso != 0) { cnx.Open(); nh.eliminaPreNomina(idTrabajador); cnx.Close(); MessageBox.Show("INFORMACION:\r\n\r\nEl trabajador a calcular fue dado de alta con fecha posterior al calculo actual.\r\nNo se calcula el trabajador.", "Información"); return; } cnx.Open(); existeAltaReingreso = rh.existeReingreso(GLOBALES.IDEMPRESA, idTrabajador, periodoInicioPosterior, periodoFinPosterior); cnx.Close(); if (existeAltaReingreso != 0) { cnx.Open(); nh.eliminaPreNomina(idTrabajador); cnx.Close(); MessageBox.Show("INFORMACION:\r\n\r\nEl trabajador a calcular fue dado de alta con fecha posterior al calculo actual.\r\nNo se calcula el trabajador.", "Información"); return; } } } catch (Exception error) { MessageBox.Show("Error al verificar el estatus del trabajador(ID): " + idTrabajador + "\r\n\r\n" + error.Message, "Error"); cnx.Close(); } #region CONCEPTOS Y FORMULAS DEL TRABAJADOR try { /************************************************************* * Se obtienen los conceptos con el campo modificado en 1 * de la tabla tmpPagoNomina con el SP stp_DatosNominaRecalculoTrabajador *************************************************************/ //cnx.Open(); //lstConceptosPercepcionesModificados = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "P", idTrabajador, // _tipoNormalEspecial, _inicioPeriodo.Date, _finPeriodo.Date); //lstConceptosDeduccionesModificados = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "D", idTrabajador, // _tipoNormalEspecial, _inicioPeriodo.Date, _finPeriodo.Date); //cnx.Close(); /***************** TERMINA *****************************/ /********************************************************* * Se verifica si las listas de los conceptos modificados * son diferentes de 0, si son diferentes, se acumulan en la varible * noConceptosPercepciones y noConceptosDeducciones *********************************************************/ //if (lstConceptosPercepcionesModificados.Count != 0) //{ // for (int i = 0; i < lstConceptosPercepcionesModificados.Count; i++) // if (lstConceptosPercepcionesModificados[i].modificado) // noConceptosPercepciones += lstConceptosPercepcionesModificados[i].noconcepto + ","; // if (noConceptosPercepciones != "") // noConceptosPercepciones = noConceptosPercepciones.Substring(0, noConceptosPercepciones.Length - 1); //} //else // noConceptosPercepciones = ""; //if (lstConceptosDeduccionesModificados.Count != 0) //{ // for (int i = 0; i < lstConceptosDeduccionesModificados.Count; i++) // if (lstConceptosDeduccionesModificados[i].modificado) // noConceptosDeducciones += lstConceptosDeduccionesModificados[i].noconcepto + ","; // if (noConceptosDeducciones != "") // noConceptosDeducciones = noConceptosDeducciones.Substring(0, noConceptosDeducciones.Length - 1); //} //else // noConceptosDeducciones = ""; /************************TERMINA***************************/ /***************************************************************** * Se llenan las listas con los conceptos que no estan modificados * con el SP stp_DatosNominaTrabajador para el calculo. *****************************************************************/ cnx.Open(); nh.eliminaNominaTrabajador(idTrabajador, _inicioPeriodo, _finPeriodo, _tipoNormalEspecial); lstConceptosPercepciones = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "P", idTrabajador, _inicioPeriodo, _finPeriodo, _periodo); lstConceptosDeducciones = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "D", idTrabajador, _inicioPeriodo, _finPeriodo, _periodo); cnx.Close(); /**************************TERMINA*********************************/ } catch { MessageBox.Show("Error: Al Obtener los conceptos del trabajador.\r\n \r\n La ventan se cerrara.", "Error"); this.Dispose(); } #endregion #region CALCULO DE PERCEPCIONES List<CalculoNomina.Core.tmpPagoNomina> lstPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>(); lstPercepciones = CALCULO.PERCEPCIONES(lstConceptosPercepciones, _inicioPeriodo.Date, _finPeriodo.Date, _tipoNormalEspecial); #endregion #region BULK DATOS PERCEPCIONES BulkData(lstPercepciones); #endregion #region OBTENCION DE PERCEPCIONES lstPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>(); CalculoNomina.Core.tmpPagoNomina per = new CalculoNomina.Core.tmpPagoNomina(); per.idempresa = GLOBALES.IDEMPRESA; per.idtrabajador = idTrabajador; per.fechainicio = _inicioPeriodo.Date; per.fechafin = _finPeriodo.Date; per.tipoconcepto = "P"; per.tiponomina = _tipoNormalEspecial; cnx = new SqlConnection(cdn); cnx.Open(); lstPercepciones = nh.obtenerPercepcionesTrabajador(per); cnx.Close(); #endregion #region CALCULO DE DEDUCCIONES List<CalculoNomina.Core.tmpPagoNomina> lstDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>(); lstDeducciones = CALCULO.DEDUCCIONES(lstConceptosDeducciones, lstPercepciones, _inicioPeriodo.Date, _finPeriodo.Date, _tipoNormalEspecial); #endregion #region BULK DATOS DEDUCCIONES BulkData(lstDeducciones); #endregion #region PROGRAMACION DE MOVIMIENTOS List<CalculoNomina.Core.tmpPagoNomina> lstOtrasDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>(); decimal percepciones = lstPercepciones.Where(f => f.tipoconcepto == "P").Sum(f => f.cantidad); if (percepciones != 0) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; int existe = 0; ProgramacionConcepto.Core.ProgramacionHelper pch = new ProgramacionConcepto.Core.ProgramacionHelper(); pch.Command = cmd; ProgramacionConcepto.Core.ProgramacionConcepto programacion = new ProgramacionConcepto.Core.ProgramacionConcepto(); programacion.idtrabajador = idTrabajador; List<ProgramacionConcepto.Core.ProgramacionConcepto> lstProgramacion = new List<ProgramacionConcepto.Core.ProgramacionConcepto>(); try { cnx.Open(); existe = (int)pch.existeProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } if (existe != 0) { try { cnx.Open(); lstProgramacion = pch.obtenerProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } for (int i = 0; i < lstProgramacion.Count; i++) { if (_finPeriodo.Date <= lstProgramacion[i].fechafin) { Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = lstProgramacion[i].idconcepto; List<Conceptos.Core.Conceptos> lstNoConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstNoConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } CalculoNomina.Core.tmpPagoNomina pne = new CalculoNomina.Core.tmpPagoNomina(); pne.idempresa = GLOBALES.IDEMPRESA; pne.idtrabajador = idTrabajador; pne.fechainicio = _inicioPeriodo.Date; pne.fechafin = _finPeriodo.Date; pne.noconcepto = lstNoConcepto[0].noconcepto; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; try { cnx.Open(); existeConcepto = (int)nh.existeConcepto(pne); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error al obtener la existencia del concepto." + error.Message + "\r\n" + error.Source, "Error"); cnx.Dispose(); } CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = idTrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstProgramacion[i].idconcepto; vn.noconcepto = lstNoConcepto[0].noconcepto; vn.tipoconcepto = lstNoConcepto[0].tipoconcepto; vn.fechainicio = _inicioPeriodo.Date; vn.fechafin = _finPeriodo.Date; vn.exento = 0; vn.gravado = 0; vn.cantidad = lstProgramacion[i].cantidad; vn.guardada = true; vn.tiponomina = _tipoNormalEspecial; vn.modificado = false; if (lstNoConcepto[0].gravado && !lstNoConcepto[0].exento) { vn.gravado = lstProgramacion[i].cantidad; vn.exento = 0; } if (lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { CalculoFormula formulaExcento = new CalculoFormula(idTrabajador, _inicioPeriodo.Date, _finPeriodo.Date, lstNoConcepto[0].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (existeConcepto == 0) { lstOtrasDeducciones.Add(vn); } else { try { cnx.Open(); nh.actualizaConceptoModificado(vn); cnx.Close(); } catch { MessageBox.Show("Error al actualizar el concepto.", "Error"); cnx.Dispose(); } } } } } } else { decimal vacacion = lstPercepciones.Where(f => f.noconcepto == 7).Sum(f => f.cantidad); if (vacacion != 0) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; int existe = 0; ProgramacionConcepto.Core.ProgramacionHelper pch = new ProgramacionConcepto.Core.ProgramacionHelper(); pch.Command = cmd; ProgramacionConcepto.Core.ProgramacionConcepto programacion = new ProgramacionConcepto.Core.ProgramacionConcepto(); programacion.idtrabajador = idTrabajador; List<ProgramacionConcepto.Core.ProgramacionConcepto> lstProgramacion = new List<ProgramacionConcepto.Core.ProgramacionConcepto>(); try { cnx.Open(); existe = (int)pch.existeProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } if (existe != 0) { try { cnx.Open(); lstProgramacion = pch.obtenerProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } for (int i = 0; i < lstProgramacion.Count; i++) { if (_finPeriodo.Date <= lstProgramacion[i].fechafin) { Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = lstProgramacion[i].idconcepto; List<Conceptos.Core.Conceptos> lstNoConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstNoConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } CalculoNomina.Core.tmpPagoNomina pne = new CalculoNomina.Core.tmpPagoNomina(); pne.idempresa = GLOBALES.IDEMPRESA; pne.idtrabajador = idTrabajador; pne.fechainicio = _inicioPeriodo.Date; pne.fechafin = _finPeriodo.Date; pne.noconcepto = lstNoConcepto[0].noconcepto; try { cnx.Open(); existeConcepto = (int)nh.existeConcepto(pne); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.", "Error"); cnx.Dispose(); } CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = idTrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstProgramacion[i].idconcepto; vn.noconcepto = lstNoConcepto[0].noconcepto; vn.tipoconcepto = lstNoConcepto[0].tipoconcepto; vn.fechainicio = _inicioPeriodo.Date; vn.fechafin = _finPeriodo.Date; vn.exento = 0; vn.gravado = 0; vn.cantidad = lstProgramacion[i].cantidad; vn.guardada = true; vn.tiponomina = _tipoNormalEspecial; vn.modificado = false; if (lstNoConcepto[0].gravado && !lstNoConcepto[0].exento) { vn.gravado = lstProgramacion[i].cantidad; vn.exento = 0; } if (lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { CalculoFormula formulaExcento = new CalculoFormula(idTrabajador, _inicioPeriodo.Date, _finPeriodo.Date, lstNoConcepto[0].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (existeConcepto == 0) { lstOtrasDeducciones.Add(vn); } else { try { cnx.Open(); nh.actualizaConceptoModificado(vn); cnx.Close(); } catch { MessageBox.Show("Error al actualizar el concepto.", "Error"); cnx.Dispose(); } } } } } } } #endregion #region MOVIMIENTOS cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; Movimientos.Core.MovimientosHelper mh = new Movimientos.Core.MovimientosHelper(); mh.Command = cmd; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; percepciones = lstPercepciones.Where(f => f.tipoconcepto == "P").Sum(f => f.cantidad); if (percepciones != 0) { int existe = 0; Movimientos.Core.Movimientos mov = new Movimientos.Core.Movimientos(); mov.idtrabajador = idTrabajador; mov.fechainicio = _inicioPeriodo.Date; mov.fechafin = _finPeriodo.Date; List<Movimientos.Core.Movimientos> lstMovimiento = new List<Movimientos.Core.Movimientos>(); try { cnx.Open(); existe = (int)mh.existeMovimiento(mov); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } if (existe != 0) { try { cnx.Open(); lstMovimiento = mh.obtenerMovimiento(mov); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } for (int i = 0; i < lstMovimiento.Count; i++) { Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = lstMovimiento[i].idconcepto; List<Conceptos.Core.Conceptos> lstNoConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstNoConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = idTrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstMovimiento[i].idconcepto; vn.noconcepto = lstNoConcepto[0].noconcepto; vn.tipoconcepto = lstNoConcepto[0].tipoconcepto; vn.fechainicio = _inicioPeriodo.Date; vn.fechafin = _finPeriodo.Date; vn.exento = 0; vn.gravado = 0; vn.cantidad = lstMovimiento[i].cantidad; vn.guardada = true; vn.tiponomina = _tipoNormalEspecial; vn.modificado = false; if (lstNoConcepto[0].gravado && !lstNoConcepto[0].exento) { vn.gravado = lstMovimiento[i].cantidad; vn.exento = 0; } if (lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { CalculoFormula formulaExcento = new CalculoFormula(idTrabajador, _inicioPeriodo.Date, _finPeriodo.Date, lstNoConcepto[0].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (!lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { vn.gravado = 0; vn.exento = lstMovimiento[i].cantidad; } try { cnx.Open(); existe = (int)nh.existeConcepto(vn); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al verificar existencia de los movimientos. \r\n" + error.Message, "Error"); } if (existe == 0) { lstOtrasDeducciones.Add(vn); } else { try { cnx.Open(); nh.actualizaConcepto(vn); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al actualizar los movimientos. " + error.Message, "Error"); } } } } } #endregion #region BULK DATOS PROGRAMACION DE MOVIMIENTOS BulkData(lstOtrasDeducciones); #endregion #region MOSTRAR DATOS muestraDatos(); #endregion #region PERIODO cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; int noPeriodo = 0; try { if (_tipoNormalEspecial == GLOBALES.NORMAL) { cnx.Open(); noPeriodo = int.Parse(nh.obtenerNoPeriodo(_periodo, _inicioPeriodo).ToString()); nh.actualizarNoPeriodo(GLOBALES.IDEMPRESA, _inicioPeriodo.Date, _finPeriodo.Date, noPeriodo); cnx.Close(); } else if (_tipoNormalEspecial == GLOBALES.EXTRAORDINARIO_NORMAL) { cnx.Open(); noPeriodo = (int)(nh.obtenerNoPeriodoExtraordinario(GLOBALES.IDEMPRESA, _tipoNormalEspecial)); noPeriodo = noPeriodo + 1; nh.actualizarNoPeriodo(GLOBALES.IDEMPRESA, _inicioPeriodo.Date, _finPeriodo.Date, noPeriodo); cnx.Close(); } } catch (Exception) { MessageBox.Show("Error: Al actualizar el No. de Periodo", "Error"); cnx.Dispose(); return; } #endregion }
private void BulkData(List<CalculoNomina.Core.tmpPagoNomina> lstValores) { #region BULK DATA 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)); for (int i = 0; i < lstValores.Count; i++) { dtFila = dt.NewRow(); dtFila["id"] = i + 1; dtFila["idtrabajador"] = lstValores[i].idtrabajador; dtFila["idempresa"] = lstValores[i].idempresa; dtFila["idconcepto"] = lstValores[i].idconcepto; dtFila["noconcepto"] = lstValores[i].noconcepto; dtFila["tipoconcepto"] = lstValores[i].tipoconcepto; dtFila["exento"] = lstValores[i].exento; dtFila["gravado"] = lstValores[i].gravado; dtFila["cantidad"] = lstValores[i].cantidad; dtFila["fechainicio"] = lstValores[i].fechainicio; dtFila["fechafin"] = lstValores[i].fechafin; dtFila["noperiodo"] = 0; dtFila["diaslaborados"] = 0; dtFila["guardada"] = lstValores[i].guardada; dtFila["tiponomina"] = lstValores[i].tiponomina; dtFila["modificado"] = lstValores[i].modificado; dtFila["fechapago"] = new DateTime(1900,1,1); dtFila["obracivil"] = _obracivil; dtFila["periodo"] = _periodo; dt.Rows.Add(dtFila); } cnx = new SqlConnection(cdn); SqlBulkCopy bulk = new SqlBulkCopy(cnx); CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.bulkCommand = bulk; try { cnx.Open(); nh.bulkNomina(dt, "tmpPagoNomina"); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message + "\r\n \r\n Error Bulk Nomina.", "Error"); } #endregion #region PERIODO cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; int noPeriodo = 0; try { cnx.Open(); noPeriodo = int.Parse(nh.obtenerNoPeriodo(_periodo, _inicioPeriodo).ToString()); nh.actualizarNoPeriodo(GLOBALES.IDEMPRESA, _inicioPeriodo.Date, _finPeriodo.Date, noPeriodo); cnx.Close(); cnx.Dispose(); } catch (Exception) { MessageBox.Show("Error: Al actualizar el No. de Periodo", "Error"); cnx.Dispose(); return; } #endregion }
private void cmbPeriodo_SelectedIndexChanged(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos p = new Periodos.Core.Periodos(); if (!FLAG_COMBOBOX) { Periodos.Core.Periodos a = (Periodos.Core.Periodos)cmbPeriodo.SelectedValue; p.idperiodo = a.idperiodo; } else p.idperiodo = int.Parse(cmbPeriodo.SelectedValue.ToString()); List<CalculoNomina.Core.tmpPagoNomina> lstPeriodos = new List<CalculoNomina.Core.tmpPagoNomina>(); lstvPeriodos.Items.Clear(); try { cnx.Open(); periodo = int.Parse(ph.DiasDePago(p).ToString()); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } switch (cmbTipoNomina.Text) { case "Normal": try { cnx.Open(); lstPeriodos = nh.obtenerPeriodosNomina(GLOBALES.IDEMPRESA, GLOBALES.NORMAL, periodo); cnx.Close(); cnx.Dispose(); } catch (Exception) { MessageBox.Show("Error: Al obtener los periodos de la empresa.", "Error"); cnx.Dispose(); return; } break; case "Extraordinaria normal": try { cnx.Open(); lstPeriodos = nh.obtenerPeriodosNomina(GLOBALES.IDEMPRESA, GLOBALES.EXTRAORDINARIO_NORMAL, periodo); cnx.Close(); cnx.Dispose(); } catch (Exception) { MessageBox.Show("Error: Al obtener los periodos de la empresa.", "Error"); cnx.Dispose(); return; } break; } for (int i = 0; i < lstPeriodos.Count; i++) { ListViewItem Lista; Lista = lstvPeriodos.Items.Add(lstPeriodos[i].fechainicio.ToShortDateString()); Lista.SubItems.Add(lstPeriodos[i].fechafin.ToShortDateString()); } }
private void toolEliminar_Click(object sender, EventArgs e) { int fila = dgvBajasSua.CurrentCell.RowIndex; int idPeriodo = 0, diasPeriodo = 0; string cdn = ConfigurationManager.ConnectionStrings["cdnNomina"].ConnectionString; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; Bajas.Core.BajasHelper bh = new Bajas.Core.BajasHelper(); bh.Command = cmd; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos periodo = new Periodos.Core.Periodos(); Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; List<Bajas.Core.Bajas> lstBaja = new List<Bajas.Core.Bajas>(); List<CalculoNomina.Core.tmpPagoNomina> lstNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); idPeriodo = int.Parse(eh.obtenerIdPeriodo(int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString())).ToString()); periodo.idperiodo = idPeriodo; diasPeriodo = int.Parse(ph.DiasDePago(periodo).ToString()); lstBaja = bh.obtenerBaja(int.Parse(dgvBajasSua.Rows[fila].Cells[0].Value.ToString())); lstNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString()), diasPeriodo); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener los datos de la baja.", "Error"); cnx.Dispose(); return; } if (lstNomina.Count != 0) if (lstBaja[0].periodoinicio == lstNomina[0].fechainicio && lstBaja[0].periodofin == lstNomina[0].fechafin) { MessageBox.Show("La baja pertenece a un periodo cerrado. No se puede eliminar.", "Información"); return; } DialogResult respuesta = MessageBox.Show("¿Quiere eliminar la baja?. \r\n \r\n CUIDADO. Esta acción eliminará permanentemente el registro.", "Confirmación", MessageBoxButtons.YesNo); if (respuesta == DialogResult.Yes) { Historial.Core.HistorialHelper hh = new Historial.Core.HistorialHelper(); hh.Command = cmd; Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus(); ee.idtrabajador = int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString()); ee.idempresa = GLOBALES.IDEMPRESA; ee.estatus = GLOBALES.ACTIVO; Bajas.Core.Bajas baja = new Bajas.Core.Bajas(); baja.idtrabajador = int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString()); baja.idempresa = GLOBALES.IDEMPRESA; baja.fecha = DateTime.Parse(dgvBajasSua.Rows[fila].Cells[8].Value.ToString()).Date; Historial.Core.Historial historial = new Historial.Core.Historial(); historial.idtrabajador = int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString()); historial.idempresa = GLOBALES.IDEMPRESA; historial.fecha_imss = DateTime.Parse(dgvBajasSua.Rows[fila].Cells[8].Value.ToString()).Date; try { cnx.Open(); bh.eliminaBaja(baja); eh.bajaEmpleado(ee); eh.actualizaEstatus(int.Parse(dgvBajasSua.Rows[fila].Cells[1].Value.ToString())); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al eliminar la baja. \r\n" + error.Message, "Error"); cnx.Dispose(); return; } try { cnx.Open(); hh.eliminaHistorial(historial); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: Al eliminar el movimiento del historial.\r\n" + error.Message, "Error"); cnx.Dispose(); return; } MessageBox.Show("Registro eliminado.", "Confirmación"); ListaEmpleados(); } }
private void CargaPreNomina(DateTime inicio, DateTime fin) { cargaEmpleados(); cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pnCargar = new CalculoNomina.Core.tmpPagoNomina(); pnCargar.idempresa = GLOBALES.IDEMPRESA; pnCargar.fechainicio = inicio; pnCargar.fechafin = fin; pnCargar.obracivil = _obracivil; //CalculoNomina.Core.tmpPagoNomina pnGuardada = new CalculoNomina.Core.tmpPagoNomina(); //pnGuardada.idempresa = GLOBALES.IDEMPRESA; //pnGuardada.fechainicio = periodoInicio.Date; //pnGuardada.fechafin = periodoFin.Date; //pnGuardada.guardada = false; List<CalculoNomina.Core.tmpPagoNomina> lstPreNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); lstPreNomina = nh.obtenerPreNomina(pnCargar, _periodo); //nh.cargaPreNomina(pnGuardada); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } if (lstPreNomina.Count == 0) FLAGPRIMERCALCULO = true; else { FLAGPRIMERCALCULO = false; EXISTEPRENOMINA = true; } foreach (DataGridViewRow fila in dgvEmpleados.Rows) { for (int i = 0; i < lstPreNomina.Count; i++) { if ((int)fila.Cells["idtrabajador"].Value == lstPreNomina[i].idtrabajador) { switch (lstPreNomina[i].noconcepto) { case 1: fila.Cells["sueldo"].Value = lstPreNomina[i].cantidad; break; case 2: fila.Cells["horas"].Value = lstPreNomina[i].cantidad; break; case 3: fila.Cells["asistencia"].Value = lstPreNomina[i].cantidad; break; case 5: fila.Cells["puntualidad"].Value = lstPreNomina[i].cantidad; break; case 6: fila.Cells["despensa"].Value = lstPreNomina[i].cantidad; break; } } } } }
void cp_OnNuevoPeriodo(DateTime inicio, DateTime fin) { periodoInicio = inicio; periodoFin = fin; borraGridFaltas(); disenoGridFaltas(); cargaEmpleadosFaltas(); if (_tipoNomina != GLOBALES.EXTRAORDINARIO_NORMAL) { this.Text = String.Format("Periodo de Pago: Del {0} al {1}.", periodoInicio.ToShortDateString(), periodoFin.ToShortDateString()); toolPeriodo.Text = String.Format("Periodo de Pago: Del {0} al {1}.", periodoInicio.ToShortDateString(), periodoFin.ToShortDateString()); } else { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; int existeNominaExtraordinaria = 0; try { cnx.Open(); existeNominaExtraordinaria = (int)nh.existeNomina(GLOBALES.IDEMPRESA, periodoInicio, periodoFin, _periodo); cnx.Close(); cnx.Dispose(); } catch (Exception) { MessageBox.Show("Error: Al obtener la existencia de la nomina extraordinaria.\r\n \r\n SE CERRARÁ LA VENTANA.", "Error"); cnx.Dispose(); this.Dispose(); } if (existeNominaExtraordinaria == 0) { this.Text = String.Format("Pago extraordinario: Del {0}.", periodoInicio.ToShortDateString()); toolPeriodo.Text = String.Format("Pago extraordinario: Del {0}.", periodoInicio.ToShortDateString()); movimientosEspeciales(); } else { MessageBox.Show("La fecha seleccionada ya ha sido calculada. \r\n \r\n SE CERRARÁ LA VENTANA.", "Información"); this.Dispose(); } } }
private void workExcel_DoWork(object sender, DoWorkEventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.fechainicio = periodoInicio.Date; pn.fechafin = periodoFin.Date; pn.tiponomina = _tipoNomina; DataTable dt = new DataTable(); try { cnx.Open(); dt = nh.obtenerPreNominaTabular(pn, NetoCero, Orden, _periodo); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Workbooks.Add(); Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet; excel.Cells[1, 1] = dt.Rows[0][0]; excel.Cells[1, 6] = "Periodo"; excel.Cells[2, 1] = "RFC:"; excel.Cells[3, 1] = "REG. PAT:"; excel.Cells[2, 2] = dt.Rows[0][1]; excel.Cells[3, 2] = dt.Rows[0][2]; excel.Cells[2, 6] = dt.Rows[0][3]; excel.Cells[2, 7] = dt.Rows[0][4]; //SE COLOCAN LOS TITULOS DE LAS COLUMNAS int iCol = 1; for (int i = 6; i < dt.Columns.Count; i++) { excel.Cells[5, iCol] = dt.Columns[i].ColumnName; iCol++; } //SE COLOCAN LOS DATOS int contadorDt = dt.Rows.Count; int contador = 0; int progreso = 0; iCol = 1; int iFil = 6; Microsoft.Office.Interop.Excel.Range rng; for (int i = 0; i < dt.Rows.Count; i++) { progreso = (contador * 100) / contadorDt; workExcel.ReportProgress(progreso, "Reporte a Excel"); contador++; if (i != dt.Rows.Count - 1) { for (int j = 6; j < dt.Columns.Count; j++) { excel.Cells[iFil, iCol] = dt.Rows[i][j]; iCol++; } iFil++; #region AGRUPADO POR DEPARTAMENTO //if (dt.Rows[i][5].ToString() == dt.Rows[i + 1][5].ToString()) // for (int j = 6; j < dt.Columns.Count; j++) // { // excel.Cells[iFil, iCol] = dt.Rows[i][j]; // iCol++; // } //else //{ // for (int j = 6; j < dt.Columns.Count; j++) // { // excel.Cells[iFil, iCol] = dt.Rows[i][j]; // iCol++; // } // iFil++; // rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 1]; // rng.Font.Bold = true; // excel.Cells[iFil, 1] = dt.Rows[i][5]; // rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 9]; // rng.NumberFormat = "#,##0.00"; // rng.Font.Bold = true; // excel.Cells[iFil, 9] = totalPercepciones.ToString(); // rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 15]; // rng.NumberFormat = "#,##0.00"; // rng.Font.Bold = true; // excel.Cells[iFil, 15] = totalDeducciones.ToString(); // iFil++; // totalPercepciones = 0; // totalDeducciones = 0; //} #endregion } else { for (int j = 6; j < dt.Columns.Count; j++) { excel.Cells[iFil, iCol] = dt.Rows[i][j]; iCol++; } } iCol = 1; } iFil++; for (int i = 6; i < iFil; i++) { rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[i, 2]; rng.Columns.AutoFit(); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[i, 14]; rng.NumberFormat = "#,##0.00"; rng.Formula = string.Format("=C{0}+D{0}+E{0}+F{0}+G{0}+H{0}+I{0}+J{0}+K{0}+L{0}+M{0}", i); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[i, 23]; rng.NumberFormat = "#,##0.00"; rng.Formula = string.Format("=O{0}+P{0}+Q{0}+R{0}+S{0}+T{0}+V{0}", i); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[i, 24]; rng.NumberFormat = "#,##0.00"; rng.Formula = string.Format("=N{0}+U{0}-W{0}", i); } int suma = iFil - 1; iFil++; rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 3]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(C6:C{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 4]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(D6:D{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 5]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(E6:E{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 6]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(F6:F{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 7]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(G6:G{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 8]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(H6:H{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 9]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(I6:I{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 10]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(J6:J{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 11]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(K6:K{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 12]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(L6:L{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 13]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(M6:M{0})", suma.ToString()); //TOTAL PERCEPCIONES rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 14]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(N6:N{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 15]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(O6:O{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 16]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(P6:P{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 17]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(Q6:Q{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 18]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(R6:R{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 19]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(S6:S{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 20]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(T6:T{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 21]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(U6:U{0})", suma.ToString()); rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 22]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(V6:V{0})", suma.ToString()); //TOTAL DEDUCCIONES rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 23]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(W6:W{0})", suma.ToString()); //TOTAL NETO rng = (Microsoft.Office.Interop.Excel.Range)excel.Cells[iFil, 24]; rng.NumberFormat = "#,##0.00"; rng.Font.Bold = true; rng.Formula = string.Format("=SUM(X6:X{0})", suma.ToString()); excel.Range["A1", "G3"].Font.Bold = true; excel.Range["A5", "X5"].Font.Bold = true; excel.Range["B:X"].EntireColumn.AutoFit(); excel.Range["A6"].Select(); excel.ActiveWindow.FreezePanes = true; excel.Range["A5", "X5"].Interior.ColorIndex = 36; excel.Range["A5", "M5"].Font.ColorIndex = 1; excel.Range["O5", "V5"].Font.ColorIndex = 1; excel.Range["N5"].Font.ColorIndex = 32; excel.Range["W5"].Font.ColorIndex = 32; excel.Range["X5"].Font.ColorIndex = 32; excel.Range["B6", "X" + iFil.ToString()].NumberFormat = "#,##0.00"; workSheet.SaveAs("Reporte_Tabular.xlsx"); excel.Visible = true; workExcel.ReportProgress(100, "Reporte a Excel"); }
private void cargaEmpleadosFaltas() { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; #region LISTADO DE EMPLEADOS GRID FALTAS nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; lstEmpleadosFaltaIncapacidad = new List<CalculoNomina.Core.DatosFaltaIncapacidad>(); DateTime fecha; DateTime fechaf; try { cnx.Open(); if (_tipoNomina == GLOBALES.NORMAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_NORMAL) { if (_periodo == 7) { fecha = periodoInicio.AddDays(7); fechaf = periodoFin.AddDays(7); } else { if (periodoInicio.Day < 15) { fecha = periodoInicio.AddDays(15); fechaf = periodoFin.AddDays(DateTime.DaysInMonth(periodoInicio.Year, periodoInicio.Month) - 15); } else { fecha = periodoInicio.AddDays( DateTime.DaysInMonth(periodoInicio.Year, periodoInicio.Month) - 15); fechaf = periodoFin.AddDays(15); } } lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.ACTIVO, _obracivil, fecha, fechaf, _periodo); } //if (_tipoNomina == GLOBALES.ESPECIAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_ESPECIAL) // lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.INACTIVO, _obracivil); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } dgvFaltas.DataSource = lstEmpleadosFaltaIncapacidad; for (int i = 1; i < dgvFaltas.Columns.Count; i++) dgvFaltas.AutoResizeColumn(i); #endregion }
private void workerGravadosExentos_DoWork(object sender, DoWorkEventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.fechainicio = periodoInicio.Date; pn.fechafin = periodoFin.Date; DataTable dt = new DataTable(); try { cnx.Open(); dt = nh.obtenerPreGravadosExentos(pn, _periodo); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } if (dt.Rows.Count == 0) { MessageBox.Show("No es posible generar el reporte. \r\n \r\n Verifique los parametros del reporte.", "Error"); return; } Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Workbooks.Add(); Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet; excel.Cells[1, 1] = dt.Rows[0][0]; excel.Cells[2, 1] = "RFC:"; excel.Cells[3, 1] = "REG. PAT:"; excel.Cells[2, 2] = dt.Rows[0][1]; excel.Cells[3, 2] = dt.Rows[0][2]; //SE COLOCAN LOS TITULOS DE LAS COLUMNAS int iCol = 1; for (int i = 3; i < dt.Columns.Count; i++) { excel.Cells[5, iCol] = dt.Columns[i].ColumnName; iCol++; } //SE COLOCAN LOS DATOS int contadorDt = dt.Rows.Count; int contador = 0; int progreso = 0; iCol = 1; int iFil = 6; for (int i = 0; i < dt.Rows.Count; i++) { progreso = (contador * 100) / contadorDt; workerGravadosExentos.ReportProgress(progreso, "Reporte a Excel"); contador++; if (i != dt.Rows.Count - 1) { for (int j = 3; j < dt.Columns.Count; j++) { excel.Cells[iFil, iCol] = dt.Rows[i][j]; iCol++; } iFil++; } else { for (int j = 3; j < dt.Columns.Count; j++) { excel.Cells[iFil, iCol] = dt.Rows[i][j]; iCol++; } } iCol = 1; } iFil++; excel.Range["A1", "B3"].Font.Bold = true; excel.Range["B:J"].EntireColumn.AutoFit(); excel.Range["A6"].Select(); excel.ActiveWindow.FreezePanes = true; excel.Range["A5", "J5"].Font.Bold = true; excel.Range["A5", "J5"].Interior.ColorIndex = 36; excel.Range["C6", "G" + iFil.ToString()].NumberFormat = "#,##0.00"; workSheet.SaveAs("Reporte_GravadosExentos.xlsx"); excel.Visible = true; }
private void cargaEmpleados() { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; #region DISEÑO DEL GRIDVIEW dgvEmpleados.Columns["idtrabajador"].DataPropertyName = "idtrabajador"; dgvEmpleados.Columns["iddepartamento"].DataPropertyName = "iddepartamento"; dgvEmpleados.Columns["idpuesto"].DataPropertyName = "idpuesto"; dgvEmpleados.Columns["noempleado"].DataPropertyName = "noempleado"; dgvEmpleados.Columns["nombres"].DataPropertyName = "nombres"; dgvEmpleados.Columns["paterno"].DataPropertyName = "paterno"; dgvEmpleados.Columns["materno"].DataPropertyName = "materno"; dgvEmpleados.Columns["sueldo"].DataPropertyName = "sueldo"; dgvEmpleados.Columns["despensa"].DataPropertyName = "despensa"; dgvEmpleados.Columns["asistencia"].DataPropertyName = "asistencia"; dgvEmpleados.Columns["puntualidad"].DataPropertyName = "puntualidad"; dgvEmpleados.Columns["horas"].DataPropertyName = "horas"; DataGridViewCellStyle estilo = new DataGridViewCellStyle(); estilo.Alignment = DataGridViewContentAlignment.MiddleRight; dgvEmpleados.Columns[7].DefaultCellStyle = estilo; dgvEmpleados.Columns[8].DefaultCellStyle = estilo; dgvEmpleados.Columns[9].DefaultCellStyle = estilo; dgvEmpleados.Columns[10].DefaultCellStyle = estilo; dgvEmpleados.Columns[11].DefaultCellStyle = estilo; dgvEmpleados.Columns["noempleado"].ReadOnly = true; dgvEmpleados.Columns["nombres"].ReadOnly = true; dgvEmpleados.Columns["paterno"].ReadOnly = true; dgvEmpleados.Columns["materno"].ReadOnly = true; #endregion #region LISTADO DE EMPLEADOS GRID nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; lstEmpleadosNomina = new List<CalculoNomina.Core.DatosEmpleado>(); lstEmpleadosFaltaIncapacidad = new List<CalculoNomina.Core.DatosFaltaIncapacidad>(); DateTime fecha = new DateTime(1900,1,1); DateTime fechaf = new DateTime(1900, 1, 1); try { //if (_tipoNomina == GLOBALES.NORMAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_NORMAL) //{ //} if (_periodo == 7) { fecha = periodoFin.AddDays(1); fechaf = periodoFin.AddDays(7); } else { if (periodoInicio.Day < 15) { fecha = periodoFin.AddDays(1); fechaf = periodoFin.AddDays(DateTime.DaysInMonth(periodoInicio.Year, periodoInicio.Month) - 15); } else { fecha = periodoFin.AddDays(1); fechaf = periodoFin.AddDays(15); } } cnx.Open(); lstEmpleadosNomina = nh.obtenerDatosEmpleado(GLOBALES.IDEMPRESA, GLOBALES.ACTIVO, _obracivil, fecha, fechaf, _periodo); lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.ACTIVO, _obracivil, fecha, fechaf, _periodo); //if (_tipoNomina == GLOBALES.ESPECIAL || _tipoNomina == GLOBALES.EXTRAORDINARIO_ESPECIAL) //{ // lstEmpleadosNomina = nh.obtenerDatosEmpleado(GLOBALES.IDEMPRESA, GLOBALES.INACTIVO, _obracivil); // lstEmpleadosFaltaIncapacidad = nh.obtenerDatosFaltaInc(GLOBALES.IDEMPRESA, GLOBALES.INACTIVO, _obracivil); //} cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } dgvEmpleados.DataSource = lstEmpleadosNomina; dgvFaltas.DataSource = lstEmpleadosFaltaIncapacidad; for (int i = 1; i < dgvEmpleados.Columns.Count; i++) dgvEmpleados.AutoResizeColumn(i); for (int i = 1; i < dgvFaltas.Columns.Count; i++) dgvFaltas.AutoResizeColumn(i); #endregion }
private void workerCalculo_DoWork(object sender, DoWorkEventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; Altas.Core.AltasHelper ah = new Altas.Core.AltasHelper(); ah.Command = cmd; Reingreso.Core.ReingresoHelper rh = new Reingreso.Core.ReingresoHelper(); rh.Command = cmd; int estatus = 0; int existeAltaReingreso = 0; #region LISTAS List<CalculoNomina.Core.Nomina> lstConceptosPercepciones = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosDeducciones = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosPercepcionesModificados = new List<CalculoNomina.Core.Nomina>(); List<CalculoNomina.Core.Nomina> lstConceptosDeduccionesModificados = new List<CalculoNomina.Core.Nomina>(); #endregion int progreso = 0, total = 0, indice = 0; int existeConcepto = 0; total = dgvEmpleados.Rows.Count; StreamWriter swLog = new StreamWriter(@"C:\Temp\LogHealthTrabajador" + DateTime.Now.Year.ToString() + "_" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Day.ToString() + "_" + DateTime.Now.Minute.ToString() + ".txt", true); swLog.WriteLine(String.Format("Calculo de Nómina: Del {0} al {1}", periodoInicio.ToShortDateString(), periodoFin.ToShortDateString())); foreach (DataGridViewRow fila in dgvEmpleados.Rows) { try { cnx.Open(); estatus = int.Parse(eh.obtenerEstatus(int.Parse(fila.Cells["idtrabajador"].Value.ToString())).ToString()); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Estatus: {1}", fila.Cells["idtrabajador"].Value.ToString(), estatus.ToString())); if (estatus == 0) { cnx.Open(); nh.eliminaPreNomina(int.Parse(fila.Cells["idtrabajador"].Value.ToString())); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Se elimina Prenomina", fila.Cells["idtrabajador"].Value.ToString())); continue; } else { cnx.Open(); existeAltaReingreso = ah.existeAlta(GLOBALES.IDEMPRESA, int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicioPosterior, periodoFinPosterior); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Existencia de Alta: {1}, Fecha Inicio: {2}, Fecha Fin: {3} ", fila.Cells["idtrabajador"].Value.ToString(), existeAltaReingreso, periodoInicioPosterior.ToShortDateString(), periodoFinPosterior.ToShortDateString())); if (existeAltaReingreso != 0) { cnx.Open(); nh.eliminaPreNomina(int.Parse(fila.Cells["idtrabajador"].Value.ToString())); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Se elimina Prenomina", fila.Cells["idtrabajador"].Value.ToString())); continue; } cnx.Open(); existeAltaReingreso = rh.existeReingreso(GLOBALES.IDEMPRESA, int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicioPosterior, periodoFinPosterior); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Existencia de Reingreso: {1}, Fecha Inicio: {2}, Fecha Fin: {3} ", fila.Cells["idtrabajador"].Value.ToString(), existeAltaReingreso, periodoInicioPosterior.ToShortDateString(), periodoFinPosterior.ToShortDateString())); if (existeAltaReingreso != 0) { cnx.Open(); nh.eliminaPreNomina(int.Parse(fila.Cells["idtrabajador"].Value.ToString())); cnx.Close(); swLog.WriteLine(String.Format("Empleado: {0}, Se elimina Prenomina", fila.Cells["idtrabajador"].Value.ToString())); continue; } } } catch (Exception error) { MessageBox.Show("Error al verificar el estatus del trabajador: " + fila.Cells["noempleado"].Value.ToString() + "\r\n\r\n" + error.Message, "Error"); cnx.Close(); continue; } progreso = (indice * 100) / total; indice++; if (FLAGPRIMERCALCULO) { workerCalculo.ReportProgress(progreso, "CARGANDO DATOS DE LOS TRABAJADORES. ESPERE A QUE TERMINE EL PROCESO."); } else workerCalculo.ReportProgress(progreso, "CALCULANDO."); #region CONCEPTOS Y FORMULAS DEL TRABAJADOR try { cnx.Open(); nh.eliminaNominaTrabajador(int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio.Date, periodoFin.Date, _tipoNomina); lstConceptosPercepciones = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "P", int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio.Date, periodoFin.Date, _periodo); lstConceptosDeducciones = nh.conceptosNominaTrabajador(GLOBALES.IDEMPRESA, "D", int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio.Date, periodoFin.Date, _periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: CONCEPTOS Y FORMULAS DEL TRABAJADOR. Primer Calculo." + " ID Trabajador: " + int.Parse(fila.Cells["idtrabajador"].Value.ToString()) + "\r\n \r\n" + error.Message, "Error"); cnx.Dispose(); return; } #endregion #region CALCULO DE PERCEPCIONES List<CalculoNomina.Core.tmpPagoNomina> lstPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>(); lstPercepciones = CALCULO.PERCEPCIONES(lstConceptosPercepciones, periodoInicio.Date, periodoFin.Date, _tipoNomina); #endregion #region BULK DATOS PERCEPCIONES BulkData(lstPercepciones); #endregion #region OBTENCION DE PERCEPCIONES lstPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>(); CalculoNomina.Core.tmpPagoNomina per = new CalculoNomina.Core.tmpPagoNomina(); per.idempresa = GLOBALES.IDEMPRESA; per.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); per.fechainicio = periodoInicio.Date; per.fechafin = periodoFin; per.tipoconcepto = "P"; per.tiponomina = _tipoNomina; cnx.Open(); lstPercepciones = nh.obtenerPercepcionesTrabajador(per); cnx.Close(); #endregion #region CALCULO DE DEDUCCIONES List<CalculoNomina.Core.tmpPagoNomina> lstDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>(); lstDeducciones = CALCULO.DEDUCCIONES(lstConceptosDeducciones, lstPercepciones, periodoInicio.Date, periodoFin.Date, _tipoNomina); #endregion #region BULK DATOS DEDUCCIONES BulkData(lstDeducciones); #endregion #region PROGRAMACION DE MOVIMIENTOS List<CalculoNomina.Core.tmpPagoNomina> lstOtrasDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>(); ProgramacionConcepto.Core.ProgramacionHelper pch = new ProgramacionConcepto.Core.ProgramacionHelper(); pch.Command = cmd; decimal percepciones = lstPercepciones.Where(f => f.tipoconcepto == "P").Sum(f => f.cantidad); if (percepciones != 0) { int existe = 0; ProgramacionConcepto.Core.ProgramacionConcepto programacion = new ProgramacionConcepto.Core.ProgramacionConcepto(); programacion.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); List<ProgramacionConcepto.Core.ProgramacionConcepto> lstProgramacion = new List<ProgramacionConcepto.Core.ProgramacionConcepto>(); try { cnx.Open(); existe = (int)pch.existeProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } if (existe != 0) { try { cnx.Open(); lstProgramacion = pch.obtenerProgramacion(programacion); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } for (int i = 0; i < lstProgramacion.Count; i++) { if (periodoFin.Date <= lstProgramacion[i].fechafin) { Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = lstProgramacion[i].idconcepto; List<Conceptos.Core.Conceptos> lstNoConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstNoConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } CalculoNomina.Core.tmpPagoNomina pne = new CalculoNomina.Core.tmpPagoNomina(); pne.idempresa = GLOBALES.IDEMPRESA; pne.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); pne.fechainicio = periodoInicio.Date; pne.fechafin = periodoFin.Date; pne.noconcepto = lstNoConcepto[0].noconcepto; try { cnx.Open(); existeConcepto = (int)nh.existeConcepto(pne); cnx.Close(); } catch { MessageBox.Show("Error al obtener la existencia del concepto.", "Error"); cnx.Dispose(); } CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstProgramacion[i].idconcepto; vn.noconcepto = lstNoConcepto[0].noconcepto; vn.tipoconcepto = lstNoConcepto[0].tipoconcepto; vn.fechainicio = periodoInicio.Date; vn.fechafin = periodoFin.Date; vn.exento = 0; vn.gravado = 0; vn.cantidad = lstProgramacion[i].cantidad; vn.guardada = false; vn.tiponomina = _tipoNomina; vn.modificado = false; vn.obracivil = _obracivil; if (lstNoConcepto[0].gravado && !lstNoConcepto[0].exento) { vn.gravado = lstProgramacion[i].cantidad; vn.exento = 0; } if (lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { CalculoFormula formulaExcento = new CalculoFormula(int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio.Date, periodoFin.Date, lstNoConcepto[0].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (!lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { vn.gravado = 0; vn.exento = lstProgramacion[i].cantidad; } if (existeConcepto == 0) { lstOtrasDeducciones.Add(vn); } else { try { cnx.Open(); nh.actualizaConceptoModificado(vn); cnx.Close(); } catch { MessageBox.Show("Error al actualizar el concepto.", "Error"); cnx.Dispose(); } } } } } } #endregion #region MOVIMIENTOS Movimientos.Core.MovimientosHelper mh = new Movimientos.Core.MovimientosHelper(); mh.Command = cmd; if (percepciones != 0) { int existe = 0; Movimientos.Core.Movimientos mov = new Movimientos.Core.Movimientos(); mov.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); mov.fechainicio = periodoInicio.Date; mov.fechafin = periodoFin.Date; List<Movimientos.Core.Movimientos> lstMovimiento = new List<Movimientos.Core.Movimientos>(); try { cnx.Open(); existe = (int)mh.existeMovimiento(mov); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } if (existe != 0) { try { cnx.Open(); lstMovimiento = mh.obtenerMovimiento(mov); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } for (int i = 0; i < lstMovimiento.Count; i++) { Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.id = lstMovimiento[i].idconcepto; List<Conceptos.Core.Conceptos> lstNoConcepto = new List<Conceptos.Core.Conceptos>(); try { cnx.Open(); lstNoConcepto = ch.obtenerConcepto(concepto); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); ; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstMovimiento[i].idconcepto; vn.noconcepto = lstNoConcepto[0].noconcepto; vn.tipoconcepto = lstNoConcepto[0].tipoconcepto; vn.fechainicio = periodoInicio.Date; vn.fechafin = periodoFin.Date; vn.exento = 0; vn.gravado = 0; vn.cantidad = lstMovimiento[i].cantidad; vn.guardada = false; vn.tiponomina = _tipoNomina; vn.modificado = false; if (lstNoConcepto[0].gravado && !lstNoConcepto[0].exento) { vn.gravado = lstMovimiento[i].cantidad; vn.exento = 0; } if (lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { CalculoFormula formulaExcento = new CalculoFormula(int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio.Date, periodoFin.Date, lstNoConcepto[0].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (!lstNoConcepto[0].gravado && lstNoConcepto[0].exento) { vn.gravado = 0; vn.exento = lstMovimiento[i].cantidad; } cnx.Open(); existe = (int)nh.existeConcepto(vn); cnx.Close(); if (existe == 0) { lstOtrasDeducciones.Add(vn); } else { cnx.Open(); nh.actualizaConcepto(vn); cnx.Close(); } } } } #endregion #region BULK DATOS PROGRAMACION DE MOVIMIENTOS BulkData(lstOtrasDeducciones); #endregion #region APLICACION DE DEPTOS/PUESTOS Aplicaciones.Core.AplicacionesHelper aplicah = new Aplicaciones.Core.AplicacionesHelper(); aplicah.Command = cmd; Aplicaciones.Core.Aplicaciones aplicacion = new Aplicaciones.Core.Aplicaciones(); aplicacion.periodoinicio = periodoInicio; aplicacion.periodofin = periodoFin; aplicacion.idempresa = GLOBALES.IDEMPRESA; List<Aplicaciones.Core.Aplicaciones> lstAplicaciones = new List<Aplicaciones.Core.Aplicaciones>(); try { cnx.Open(); lstAplicaciones = aplicah.obtenerFechasDeAplicacion(aplicacion); cnx.Close(); } catch (Exception) { throw; } if (lstAplicaciones.Count != 0) { for (int i = 0; i < lstAplicaciones.Count; i++) { Empleados.Core.EmpleadosHelper emph = new Empleados.Core.EmpleadosHelper(); emph.Command = cmd; try { cnx.Open(); emph.actualizaDeptoPuesto(lstAplicaciones[i].iddeptopuesto, lstAplicaciones[i].idtrabajador, lstAplicaciones[i].deptopuesto); aplicah.eliminaAplicacion(lstAplicaciones[i].id); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al modificar y/o eliminar el depto/puesto o aplicación.", "Error"); cnx.Dispose(); } } } #endregion } swLog.Close(); #region PERIODO calculoNoPeriodo(); #endregion #region NETOS NEGATIVOS nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.NetosNegativos> lstNetos; int contadorNetosNegativos = 0; StreamWriter sw = new StreamWriter(@"C:\Temp\NetosNegativos" + periodoInicio.Year.ToString() + "_" + periodoInicio.Month.ToString() + "_" + periodoInicio.Day.ToString() + ".txt", true); foreach (DataGridViewRow fila in dgvEmpleados.Rows) { lstNetos = new List<CalculoNomina.Core.NetosNegativos>(); try { cnx.Open(); lstNetos = nh.obtenerNetosNegativos(GLOBALES.IDEMPRESA, periodoInicio.Date, periodoFin.Date, int.Parse(fila.Cells["idtrabajador"].Value.ToString())); cnx.Close(); decimal sumaPercepciones = lstNetos.Where(n => n.tipoconcepto == "P").Sum(n => n.cantidad); decimal sumaDeducciones = lstNetos.Where(n => n.tipoconcepto == "D").Sum(n => n.cantidad); decimal subsidio = lstNetos.Where(d => d.noconcepto == 16).Sum(d => d.cantidad); decimal netoPagar = 0; sumaPercepciones = sumaPercepciones + subsidio; sumaDeducciones = sumaDeducciones - subsidio; netoPagar = sumaPercepciones - sumaDeducciones; string linea1 = ""; string noEmpleado = "", nombreCompleto = ""; noEmpleado = fila.Cells["noempleado"].Value.ToString(); nombreCompleto = fila.Cells["nombres"].Value.ToString() + " " + fila.Cells["paterno"].Value.ToString() + " " + fila.Cells["materno"].Value.ToString(); if (netoPagar < 0) { contadorNetosNegativos++; linea1 = noEmpleado + ", " + nombreCompleto + ", Cantidad Neta Negativa: " + netoPagar.ToString(); sw.WriteLine(linea1); } } catch (Exception error) { MessageBox.Show("Error: Lista de Netos. \r\n \r\n" + error.Message, "Error"); cnx.Dispose(); } } sw.WriteLine("TOTAL CANTIDADES NEGATIVAS: " + contadorNetosNegativos.ToString()); sw.Close(); if (contadorNetosNegativos != 0) { MessageBox.Show("CANTIDADES NEGATIVAS. VERIFIQUE ARCHIVO EN C:\\Temp\\NetosNegativos" + periodoInicio.Year.ToString() + "_" + periodoInicio.Month.ToString() + "_" + periodoInicio.Day.ToString() + ".txt", "Información"); } #endregion }
private void dtpFecha_ValueChanged(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstUltimaNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos periodo = new Periodos.Core.Periodos(); int dias = 0; try { cnx.Open(); periodo.idperiodo = (int)eh.obtenerIdPeriodo(_idempleado); dias = int.Parse(ph.DiasDePago(periodo).ToString()); lstUltimaNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, _idempleado, dias); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la ultima nómina del trabajador.", "Error"); cnx.Dispose(); } if (lstUltimaNomina.Count != 0) if (dtpFecha.Value.Date <= lstUltimaNomina[0].fechafin) { MessageBox.Show("La fecha de aplicación seleccionada no es valida.\r\n\r\n" + "Se empalma con la ultima nomina del trabajador, por favor verifique.", "Información"); } if (dias == 7) { DateTime dt = dtpFecha.Value; while (dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1); inicioPeriodo = dt; finPeriodo = dt.AddDays(6); } else { if (dtpFecha.Value.Day <= 15) { inicioPeriodo = new DateTime(dtpFecha.Value.Year, dtpFecha.Value.Month, 1); finPeriodo = new DateTime(dtpFecha.Value.Year, dtpFecha.Value.Month, 15); } else { inicioPeriodo = new DateTime(dtpFecha.Value.Year, dtpFecha.Value.Month, 16); finPeriodo = new DateTime(dtpFecha.Value.Year, dtpFecha.Value.Month, DateTime.DaysInMonth(dtpFecha.Value.Year, dtpFecha.Value.Month)); } } }
private void dgvEmpleados_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (lstValoresNomina == null) return; cnx = new SqlConnection(cdn); cmd.Connection = cnx; if (dgvEmpleados.Columns[e.ColumnIndex].Name == "horas") { for (int i = 0; i < lstValoresNomina.Count(); i++) { if (int.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["idtrabajador"].Value.ToString()) == lstValoresNomina[i].idtrabajador && lstValoresNomina[i].noconcepto == 2) { nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.noconcepto = 2; concepto.idempresa = GLOBALES.IDEMPRESA; cnx.Open(); string formulaexento = ch.obtenerFormulaExento(concepto).ToString(); cnx.Close(); CalculoFormula cf = new CalculoFormula(lstValoresNomina[i].idtrabajador, periodoInicio.Date, periodoFin.Date, formulaexento); decimal exento = decimal.Parse(cf.calcularFormula().ToString()); decimal cantidad = decimal.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["horas"].Value.ToString()); decimal gravado = 0; if (cantidad <= exento) { exento = cantidad; gravado = 0; } else { gravado = cantidad - exento; } CalculoNomina.Core.tmpPagoNomina hora = new CalculoNomina.Core.tmpPagoNomina(); hora.idempresa = GLOBALES.IDEMPRESA; hora.idtrabajador = int.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["idtrabajador"].Value.ToString()); hora.noconcepto = 2; //CONCEPTO HORAS EXTRAS DOBLES hora.fechainicio = periodoInicio.Date; hora.fechafin = periodoFin.Date; hora.cantidad = cantidad; hora.exento = exento; hora.gravado = gravado; hora.modificado = true; try { cnx.Open(); nh.actualizaHorasExtrasDespensa(hora); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } } } } if (dgvEmpleados.Columns[e.ColumnIndex].Name == "despensa") { for (int i = 0; i < lstValoresNomina.Count(); i++) { if (int.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["idtrabajador"].Value.ToString()) == lstValoresNomina[i].idtrabajador && lstValoresNomina[i].noconcepto == 6) { nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; lstValoresNomina[i].cantidad = decimal.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["despensa"].Value.ToString()); lstValoresNomina[i].gravado = decimal.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["despensa"].Value.ToString()); CalculoNomina.Core.tmpPagoNomina despensa = new CalculoNomina.Core.tmpPagoNomina(); despensa.idempresa = GLOBALES.IDEMPRESA; despensa.idtrabajador = int.Parse(dgvEmpleados.Rows[e.RowIndex].Cells["idtrabajador"].Value.ToString()); despensa.noconcepto = 6; //CONCEPTO DESPENSA despensa.fechainicio = periodoInicio.Date; despensa.fechafin = periodoFin.Date; despensa.cantidad = lstValoresNomina[i].cantidad; despensa.gravado = lstValoresNomina[i].gravado; despensa.modificado = true; try { cnx.Open(); nh.actualizaHorasExtrasDespensa(despensa); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } } } } }
private void workerEnvio_DoWork(object sender, DoWorkEventArgs e) { int existeNullCodeQR = 0; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; workerEnvio.ReportProgress(0, "Generando códigos QR."); try { cnx.Open(); existeNullCodeQR = nh.existeNullQR(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener existencia de nulos Code QR." + error.Message, "Error"); cnx.Dispose(); return; } if (existeNullCodeQR != 0) { List<CalculoNomina.Core.CodigoBidimensional> lstQR = new List<CalculoNomina.Core.CodigoBidimensional>(); try { cnx.Open(); lstQR = nh.obtenerListaQr(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener el listado de los XML." + error.Message, "Error"); cnx.Dispose(); return; } string codigoQR = ""; string[] valores = null; string numero = ""; string vEntero = ""; string vDecimal = ""; for (int i = 0; i < lstQR.Count; i++) { numero = lstQR[i].tt.ToString(); valores = numero.Split('.'); vEntero = valores[0]; vDecimal = valores[1]; codigoQR = string.Format("?re={0}&rr={1}&tt={2}.{3}&id={4}", lstQR[i].re, lstQR[i].rr, vEntero.PadLeft(10, '0'), vDecimal.PadRight(6, '0'), lstQR[i].uuid); var qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); var qrCode = qrEncoder.Encode(codigoQR); var renderer = new GraphicsRenderer(new FixedModuleSize(2, QuietZoneModules.Two), Brushes.Black, Brushes.White); using (var stream = new FileStream(lstQR[i].uuid + ".png", FileMode.Create)) renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream); Bitmap bmp = new Bitmap(lstQR[i].uuid + ".png"); Byte[] qr = GLOBALES.IMAGEN_BYTES(bmp); bmp.Dispose(); File.Delete(lstQR[i].uuid + ".png"); try { cnx.Open(); nh.actualizaXml(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date, lstQR[i].idtrabajador, qr); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al actualizar el código QR.", "Error"); cnx.Dispose(); return; } } } int existeRecibo = 0; if (fecha != "") { for (int i = 0; i < dgvEmpleados.Rows.Count; i++) { try { cnx.Open(); existeRecibo = (int)nh.existeXMLTrabajador(GLOBALES.IDEMPRESA, int.Parse(dgvEmpleados.Rows[i].Cells["idtrabajador"].Value.ToString()), DateTime.Parse(fecha).Date); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener existencia del XML", "Error"); cnx.Dispose(); return; } if (existeRecibo != 0) { dsReportes.NominaRecibosDataTable dtImpresionNomina = new dsReportes.NominaRecibosDataTable(); SqlDataAdapter daImpresionNomina = new SqlDataAdapter(); cmd.CommandText = "exec stp_rptNominaImpresionTrabajador @idempresa, @fechainicio, @tiponomina, @idtrabajador, @periodo"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("idempresa", GLOBALES.IDEMPRESA); cmd.Parameters.AddWithValue("fechainicio", DateTime.Parse(fecha).Date); cmd.Parameters.AddWithValue("tiponomina", tipoNomina); cmd.Parameters.AddWithValue("idtrabajador", int.Parse(dgvEmpleados.Rows[i].Cells["idtrabajador"].Value.ToString())); cmd.Parameters.AddWithValue("periodo", periodo); cmd.CommandTimeout = 300; daImpresionNomina.SelectCommand = cmd; daImpresionNomina.Fill(dtImpresionNomina); ReportDataSource rd = new ReportDataSource(); rd.Value = dtImpresionNomina; rd.Name = "dsNominaRecibo"; Visor.LocalReport.DataSources.Clear(); Visor.LocalReport.DataSources.Add(rd); Visor.LocalReport.ReportEmbeddedResource = "rptNominaRecibos.rdlc"; Visor.LocalReport.ReportPath = @"rptNominaRecibos.rdlc"; Warning[] warnings; string[] streamids; string mimeType; string encoding; string extension; byte[] bytes = Visor.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings); if (!Directory.Exists(ruta + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA.ToString())) Directory.CreateDirectory(ruta + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA.ToString()); using (FileStream fs = new FileStream(string.Format(@"{0}\{1}.{2}", ruta + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA.ToString(), dgvEmpleados.Rows[i].Cells["nombrecompleto"].Value.ToString() + "_" + DateTime.Parse(fecha).ToString("yyyyMMdd"), "pdf"), FileMode.Create)) { fs.Write(bytes, 0, bytes.Length); fs.Flush(); fs.Close(); fs.Dispose(); } List<CalculoNomina.Core.XmlCabecera> lstXml = new List<CalculoNomina.Core.XmlCabecera>(); try { cnx.Open(); lstXml = nh.obtenerXmlTrabajador(GLOBALES.IDEMPRESA, int.Parse(dgvEmpleados.Rows[i].Cells["idtrabajador"].Value.ToString()), DateTime.Parse(fecha).Date); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener el XML del Trabajador", "Error"); cnx.Dispose(); return; } using (StreamWriter sw = new StreamWriter(ruta + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA.ToString() + "\\" + dgvEmpleados.Rows[i].Cells["nombrecompleto"].Value.ToString() + "_" + DateTime.Parse(fecha).ToString("yyyyMMdd") + ".xml")) { sw.WriteLine(lstXml[0].xml); } workerEnvio.ReportProgress(i, "Recibo generado."); } else { workerEnvio.ReportProgress(i, "Recibo no existe."); } } try { using (ZipFile zip = new ZipFile()) { if (File.Exists(ruta + "RecibosNomina_" + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA + ".zip")) File.Delete(ruta + "RecibosNomina_" + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA + ".zip"); zip.AddDirectory(ruta + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA.ToString() + "\\"); zip.Save(ruta + "RecibosNomina_" + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA + ".zip"); } } catch (Exception) { MessageBox.Show("Error: Al crear el archivo comprimido.", "Error"); } MailMessage email = new MailMessage(); SmtpClient smtp = new SmtpClient(); Attachment comprimido = new Attachment(ruta + "RecibosNomina_" + DateTime.Parse(fecha).ToString("yyyyMMdd") + "_" + GLOBALES.IDEMPRESA + ".zip"); email.IsBodyHtml = true; email.From = new MailAddress(correoEnvio, "Recibos electrónicos de nómina"); email.To.Add(txtCorreoElectronico.Text); email.Subject = "RecibosNomina_" + DateTime.Parse(fecha).ToString("yyyyMMdd"); email.Body = "Correo automatico enviado por el sistema de administración de nómina. \r\n \r\n No responder."; email.Priority = MailPriority.Normal; email.Attachments.Add(comprimido); smtp.Host = servidorEnvio; smtp.Port = puertoEnvio; smtp.EnableSsl = usaSSL; smtp.Credentials = new NetworkCredential(correoEnvio, passwordEnvio); try { workerEnvio.ReportProgress(0, "Enviando recibos de nómina"); smtp.Send(email); smtp.Dispose(); comprimido.Dispose(); } catch (Exception msg) { MessageBox.Show("Error al enviar el correo: " + msg.Message, "Error"); } } }
private void guardaPreNomina() { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.fechainicio = periodoInicio.Date; pn.fechafin = periodoFin.Date; pn.guardada = true; pn.tiponomina = _tipoNomina; pn.obracivil = _obracivil; try { cnx.Open(); nh.guardaPreNomina(pn, _periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } try { cnx.Open(); nh.aplicaBajaObraCivil(pn, _periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } string formulaDiasAPagar = "[DiasLaborados]-[Faltas]-[DiasIncapacidad]"; foreach (DataGridViewRow fila in dgvEmpleados.Rows) { CalculoFormula cf = new CalculoFormula(int.Parse(fila.Cells["idtrabajador"].Value.ToString()), periodoInicio, periodoFin, formulaDiasAPagar); int diasAPagar = int.Parse(cf.calcularFormula().ToString()); pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idtrabajador = int.Parse(fila.Cells["idtrabajador"].Value.ToString()); pn.diaslaborados = diasAPagar; pn.fechainicio = periodoInicio; pn.fechafin = periodoFin; try { cnx.Open(); nh.actualizaDiasFechaPago(pn, _periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al actualizar los dias laborados. \r\n \r\n" + error.Message, "Error"); return; } } cnx.Dispose(); MessageBox.Show("ATENCION: La Pre Nómina de Obra Civil se ha guardado, \r\n ésta ya no será modificada. \r\n\r\n Se cerrará la ventana para concluir.", "Información"); this.Dispose(); }
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 btnAceptar_Click(object sender, EventArgs e) { int existeNullCodeQR = 0; fecha = ""; fechafin = ""; cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; for (int i = 0; i < lstvPeriodos.SelectedItems.Count; i++) { fecha = lstvPeriodos.SelectedItems[i].Text; fechafin = lstvPeriodos.SelectedItems[i].SubItems[1].Text; } try { cnx.Open(); existeNullCodeQR = nh.existeNullQR(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener existencia de nulos Code QR. " + error.Message, "Error"); cnx.Dispose(); return; } if (existeNullCodeQR != 0) { List<CalculoNomina.Core.CodigoBidimensional> lstXml = new List<CalculoNomina.Core.CodigoBidimensional>(); try { cnx.Open(); lstXml = nh.obtenerListaQr(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener el listado de XMLs." + error.Message, "Error"); cnx.Dispose(); return; } string codigoQR = ""; string[] valores = null; string numero = ""; string vEntero = ""; string vDecimal = ""; for (int i = 0; i < lstXml.Count; i++) { numero = lstXml[i].tt.ToString(); valores = numero.Split('.'); vEntero = valores[0]; vDecimal = valores[1]; codigoQR = string.Format("?re={0}&rr={1}&tt={2}.{3}&id={4}", lstXml[i].re, lstXml[i].rr, vEntero.PadLeft(10, '0'), vDecimal.PadRight(6, '0'), lstXml[i].uuid); var qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); var qrCode = qrEncoder.Encode(codigoQR); var renderer = new GraphicsRenderer(new FixedModuleSize(2, QuietZoneModules.Two), Brushes.Black, Brushes.White); using (var stream = new FileStream(lstXml[i].uuid + ".png", FileMode.Create)) renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream); Bitmap bmp = new Bitmap(lstXml[i].uuid + ".png"); Byte[] qr = GLOBALES.IMAGEN_BYTES(bmp); bmp.Dispose(); File.Delete(lstXml[i].uuid + ".png"); try { cnx.Open(); nh.actualizaXml(GLOBALES.IDEMPRESA, DateTime.Parse(fecha).Date, DateTime.Parse(fechafin).Date, lstXml[i].idtrabajador, qr); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al actualizar el código QR.", "Error"); cnx.Dispose(); return; } } } if (todos) { for (int i = 0; i < lstvPeriodos.SelectedItems.Count; i++) fecha = lstvPeriodos.SelectedItems[i].Text; idEmpleados = ""; frmVisorReportes vr = new frmVisorReportes(); vr._tipoNomina = (cmbTipoNomina.SelectedIndex == 0 ? GLOBALES.NORMAL : GLOBALES.EXTRAORDINARIO_NORMAL); vr._departamentos = idDepartamentos; vr._empleados = idEmpleados; vr._todos = todos; vr._noReporte = 10; vr._inicioPeriodo = DateTime.Parse(fecha).Date; vr._periodo = periodo; vr.Show(); } else { idEmpleados = ""; for (int i = 0; i < lstvEmpleados.Items.Count; i++) { if (lstvEmpleados.Items[i].Checked) idEmpleados += lstvEmpleados.Items[i].Text + ","; } fecha = ""; if (idEmpleados != "") { for (int i = 0; i < lstvPeriodos.SelectedItems.Count; i++) fecha = lstvPeriodos.SelectedItems[i].Text; idEmpleados = idEmpleados.Substring(0, idEmpleados.Length - 1); frmVisorReportes vr = new frmVisorReportes(); vr._tipoNomina = (cmbTipoNomina.SelectedIndex == 0 ? GLOBALES.NORMAL : GLOBALES.EXTRAORDINARIO_NORMAL); vr._departamentos = idDepartamentos; vr._empleados = idEmpleados; vr._todos = todos; vr._noReporte = 10; vr._periodo = periodo; vr._inicioPeriodo = DateTime.Parse(fecha).Date; vr.Show(); } } }
private void muestraDatos() { dgvPercepciones.DataSource = null; dgvPercepciones.Columns.Clear(); dgvDeducciones.DataSource = null; dgvDeducciones.Columns.Clear(); cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstReciboPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>(); List<CalculoNomina.Core.tmpPagoNomina> lstReciboDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>(); CalculoNomina.Core.tmpPagoNomina pnp = new CalculoNomina.Core.tmpPagoNomina(); pnp.idtrabajador = idTrabajador; pnp.fechainicio = _inicioPeriodo.Date; pnp.fechafin = _finPeriodo.Date; pnp.tipoconcepto = "P"; CalculoNomina.Core.tmpPagoNomina pnd = new CalculoNomina.Core.tmpPagoNomina(); pnd.idtrabajador = idTrabajador; pnd.fechainicio = _inicioPeriodo.Date; pnd.fechafin = _finPeriodo.Date; pnd.tipoconcepto = "D"; try { cnx.Open(); lstReciboPercepciones = nh.obtenerDatosRecibo(pnp, _periodo); lstReciboDeducciones = nh.obtenerDatosRecibo(pnd, _periodo); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener la prenomina del trabajador. Se cerrará la ventana","Error"); this.Dispose(); } if (lstReciboPercepciones.Count != 0) { string formulaDiasAPagar = "[DiasLaborados]-[Faltas]-[DiasIncapacidad]"; Conceptos.Core.ConceptosHelper conceptoh = new Conceptos.Core.ConceptosHelper(); conceptoh.Command = cmd; Conceptos.Core.Conceptos c = new Conceptos.Core.Conceptos(); c.idempresa = GLOBALES.IDEMPRESA; List<Conceptos.Core.Conceptos> lstConceptos = new List<Conceptos.Core.Conceptos>(); CalculoFormula cf = new CalculoFormula(idTrabajador, _inicioPeriodo, _finPeriodo, formulaDiasAPagar); int diasAPagar = int.Parse(cf.calcularFormula().ToString()); try { cnx.Open(); lstConceptos = conceptoh.obtenerConceptos(c, _periodo); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error: Al obtener lista de conceptos. (Función Muestra Datos.)\r\n \r\n" + error.Message, "Error"); } var percepcion = from r in lstReciboPercepciones join co in lstConceptos on r.idconcepto equals co.id where co.visible == true && r.cantidad != 0 select new { NoConcepto = co.noconcepto, Concepto = co.concepto, Importe = r.cantidad }; var deduccion = from r in lstReciboDeducciones join co in lstConceptos on r.idconcepto equals co.id where co.visible == true && r.cantidad != 0 select new { NoConcepto = co.noconcepto, Concepto = co.concepto, Importe = r.cantidad }; DataGridViewCellStyle estilo = new DataGridViewCellStyle(); estilo.Alignment = DataGridViewContentAlignment.MiddleRight; estilo.Format = "C2"; dgvPercepciones.DataSource = percepcion.ToList(); dgvPercepciones.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dgvPercepciones.Columns[0].Width = 10; dgvPercepciones.Columns[1].Width = 70; dgvPercepciones.Columns[2].Width = 90; dgvPercepciones.Columns[2].DefaultCellStyle = estilo; dgvDeducciones.DataSource = deduccion.ToList(); dgvDeducciones.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dgvDeducciones.Columns[0].Width = 10; dgvDeducciones.Columns[1].Width = 70; dgvDeducciones.Columns[2].Width = 90; dgvDeducciones.Columns[2].DefaultCellStyle = estilo; decimal sumaPercepciones = 0, sumaDeducciones = 0, netoPagar = 0; decimal subsidio = lstReciboDeducciones.Where(d => d.noconcepto == 16).Sum(d => d.cantidad); foreach (DataGridViewRow fila in dgvPercepciones.Rows) { sumaPercepciones += decimal.Parse(fila.Cells[2].Value.ToString()); } foreach (DataGridViewRow fila in dgvDeducciones.Rows) { sumaDeducciones += decimal.Parse(fila.Cells[2].Value.ToString()); } sumaPercepciones += subsidio; sumaDeducciones = sumaDeducciones - subsidio; netoPagar = sumaPercepciones - sumaDeducciones; txtPercepciones.Text = "$ " + sumaPercepciones.ToString("#,##0.00"); txtDeducciones.Text = "$ " + sumaDeducciones.ToString("#,##0.00"); txtNeto.Text = "$ " + netoPagar.ToString("#,##0.00"); dgvPercepciones.Columns.Add("dias", "dias"); if (diasAPagar != 0) dgvPercepciones.Rows[0].Cells[3].Value = diasAPagar.ToString() + " dias"; if (netoPagar < 0) MessageBox.Show("El neto a pagar es negativo: " + netoPagar.ToString("#,##0.00"), "Información"); } }
private void guardar(int tipoGuardar) { int existe = 0; //SE VALIDA SI TODOS LOS TEXTBOX 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; } int idempresa; cnx = new SqlConnection(); cnx.ConnectionString = cdn; cmd = new SqlCommand(); cmd.Connection = cnx; eh = new Empresas.Core.EmpresasHelper(); eh.Command = cmd; Empresas.Core.Empresas em = new Empresas.Core.Empresas(); em.nombre = txtNombre.Text; em.rfc = txtRfc.Text; em.registro = txtRegistroPatronal.Text; em.digitoverificador = int.Parse(txtDigitoVerificador.Text); em.representante = txtRepresentante.Text; em.estatus = 1; em.regimen = txtRegimen.Text; em.certificado = txtCertificado.Text; em.llave = txtLlave.Text; em.password = txtPassword.Text; em.nocertificado = txtNoCertificado.Text; em.vigenciacertificado = dtpVigencia.Value.Date; em.observacion = txtObservacion.Text; dh = new Direccion.Core.DireccionesHelper(); dh.Command = cmd; Direccion.Core.Direcciones d = new Direccion.Core.Direcciones(); d.calle = txtCalle.Text; d.exterior = txtExterior.Text; d.interior = txtInterior.Text; d.colonia = txtColonia.Text; d.ciudad = txtMunicipio.Text; d.estado = txtEstado.Text; d.pais = txtPais.Text; d.cp = txtCP.Text; d.tipodireccion = GLOBALES.dFISCAL; d.tipopersona = GLOBALES.pEMPRESA; ih = new Imagen.Core.ImagenesHelper(); ih.Command = cmd; Imagen.Core.Imagenes img = null; Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos periodo = new Periodos.Core.Periodos(); periodo.dias = int.Parse(txtDias.Text); periodo.estatus = GLOBALES.ACTIVO; periodo.pago = cmbPago.Text; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.PagoNomina pn = new CalculoNomina.Core.PagoNomina(); pn.idtrabajador = 0; pn.idconcepto = 0; pn.noconcepto = 0; pn.tipoconcepto = "P"; pn.exento = 0; pn.gravado = 0; pn.cantidad = 0; pn.fechainicio = inicioPeriodo; pn.fechafin = finPeriodo; pn.noperiodo = 0; pn.diaslaborados = 0; pn.idusuario = 0; pn.tiponomina = 0; pn.fechapago = finPeriodo; pn.iddepartamento = 0; pn.idpuesto = 0; try { if (ImagenAsignada == true) { img = new Imagen.Core.Imagenes(); img.imagen = GLOBALES.IMAGEN_BYTES(bmp); img.tipopersona = GLOBALES.pEMPRESA; } } catch (Exception error) { MessageBox.Show("Error: " + error.Message, "Error"); } switch (_tipoOperacion) { case 0: try { cnx.Open(); eh.insertaEmpresa(em); idempresa = (int)eh.obtenerIdEmpresa(em); d.idpersona = idempresa; dh.insertaDireccion(d); if (ImagenAsignada == true) { img.idpersona = idempresa; ih.insertaImagen(img); } periodo.idempresa = idempresa; ph.insertaPeriodo(periodo); pn.idempresa = idempresa; nh.insertaPrimerPeriodoNomina(pn); cnx.Close(); cnx.Dispose(); } catch (Exception error) { MessageBox.Show("Error al ingresar la empresa. \r\n \r\n Error: " + error.Message); } break; case 2: try { em.idempresa = _idempresa; d.iddireccion = _iddireccion; d.idpersona = _idempresa; cnx.Open(); eh.actualizaEmpresa(em); dh.actualizaDireccion(d); if (ImagenAsignada == true) { img.idpersona = _idempresa; img.tipopersona = GLOBALES.pEMPRESA; 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 la empresa. \r\n \r\n Error: " + error.Message); } break; } switch (tipoGuardar) { case 0: GLOBALES.LIMPIAR(this,typeof(TextBox)); GLOBALES.LIMPIAR(this, typeof(MaskedTextBox)); //limpiar(this, typeof(TextBox)); break; case 1: if (OnNuevaEmpresa != null) OnNuevaEmpresa(_tipoOperacion); this.Dispose(); break; } }
private void toolEliminar_Click(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; CalculoNomina.Core.tmpPagoNomina pn = new CalculoNomina.Core.tmpPagoNomina(); pn.idempresa = GLOBALES.IDEMPRESA; pn.idtrabajador = idTrabajador; pn.fechainicio = _inicioPeriodo.Date; pn.fechafin = _finPeriodo.Date; try{ cnx.Open(); nh.eliminaCalculo(pn); cnx.Close(); dgvPercepciones.DataSource = null; dgvDeducciones.DataSource = null; dgvPercepciones.Columns.Clear(); dgvDeducciones.Columns.Clear(); } catch{ MessageBox.Show("Error: Al eliminar los datos de la nomina.", "Error"); this.Dispose(); } }
public static List<CalculoNomina.Core.tmpPagoNomina> DEDUCCIONES(List<CalculoNomina.Core.Nomina> lstConceptosDeducciones, List<CalculoNomina.Core.tmpPagoNomina> lstPercepciones, DateTime inicio, DateTime fin, int tipoNomina) { #region VARIABLES GLOBALES string cdn = ConfigurationManager.ConnectionStrings["cdnNomina"].ConnectionString; SqlConnection cnx = new SqlConnection(cdn); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnx; #endregion #region VARIABLES bool activoInfonavit = false; #endregion #region LISTA PARA DATOS DEL TRABAJADOR List<CalculoNomina.Core.tmpPagoNomina> lstValoresNomina; List<CalculoNomina.Core.tmpPagoNomina> lstValoresDefinitivos; #endregion #region CALCULO lstValoresNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); decimal isrAntes = 0, subsidioAntes = 0; for (int i = 0; i < lstConceptosDeducciones.Count; i++) { decimal percepciones = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.tipoconcepto == "P").Sum(e => e.cantidad); switch (lstConceptosDeducciones[i].noconcepto) { #region CONCEPTO IMSS case 99: int vsmdf, idsalario; decimal porcentajeImss, excedenteVsmdf, sm, sdiTrabajador; Configuracion.Core.ConfiguracionHelper ch = new Configuracion.Core.ConfiguracionHelper(); ch.Command = cmd; Imss.Core.ImssHelper ih = new Imss.Core.ImssHelper(); ih.Command = cmd; Imss.Core.Imss imss = new Imss.Core.Imss(); imss.secalcula = true; Empleados.Core.EmpleadosHelper empleadosHelper = new Empleados.Core.EmpleadosHelper(); empleadosHelper.Command = cmd; Empleados.Core.Empleados empleadoImss = new Empleados.Core.Empleados(); empleadoImss.idtrabajador = lstConceptosDeducciones[i].idtrabajador; Salario.Core.SalariosHelper sh = new Salario.Core.SalariosHelper(); sh.Command = cmd; Salario.Core.Salarios salario = new Salario.Core.Salarios(); cnx.Open(); vsmdf = int.Parse(ch.obtenerValorConfiguracion("VSMDF").ToString()); porcentajeImss = ih.CuotaObreroPatronal(imss); excedenteVsmdf = ih.ExcedenteVSM(5); idsalario = int.Parse(empleadosHelper.obtenerIdSalarioMinimo(lstConceptosDeducciones[i].idtrabajador).ToString()); salario.idsalario = idsalario; sm = decimal.Parse(sh.obtenerSalarioValor(salario).ToString()); sdiTrabajador = decimal.Parse(empleadosHelper.obtenerSalarioDiarioIntegrado(empleadoImss).ToString()); cnx.Close(); string formulaDiasAPagar = "[DiasLaborados]-[Faltas]-[DiasIncapacidad]"; CalculoFormula cfImss = new CalculoFormula(lstConceptosDeducciones[i].idtrabajador, inicio, fin, formulaDiasAPagar); int diasAPagar = int.Parse(cfImss.calcularFormula().ToString()); decimal tresVSMG = vsmdf * sm; decimal excedenteImss = 0; decimal valorImss = (sdiTrabajador * (porcentajeImss / 100)) * diasAPagar; decimal totalImss = 0; if (sdiTrabajador > tresVSMG) { excedenteImss = (sdiTrabajador - tresVSMG) * (excedenteVsmdf / 100) * diasAPagar; totalImss = valorImss + excedenteImss; } else totalImss = valorImss; CalculoNomina.Core.tmpPagoNomina imssNomina = new CalculoNomina.Core.tmpPagoNomina(); imssNomina.idtrabajador = lstConceptosDeducciones[i].idtrabajador; imssNomina.idempresa = GLOBALES.IDEMPRESA; imssNomina.idconcepto = lstConceptosDeducciones[i].id; imssNomina.noconcepto = lstConceptosDeducciones[i].noconcepto; imssNomina.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; imssNomina.fechainicio = inicio.Date; imssNomina.fechafin = fin.Date; imssNomina.exento = 0; imssNomina.gravado = 0; imssNomina.cantidad = totalImss; imssNomina.diaslaborados = 0; imssNomina.guardada = false; imssNomina.tiponomina = tipoNomina; imssNomina.modificado = false; lstValoresNomina.Add(imssNomina); break; #endregion #region CONCEPTO ISR ANTES DE SUBSIDIO case 8: decimal excedente = 0, ImpMarginal = 0, isr = 0; List<TablaIsr.Core.TablaIsr> lstIsr = new List<TablaIsr.Core.TablaIsr>(); TablaIsr.Core.IsrHelper isrh = new TablaIsr.Core.IsrHelper(); isrh.Command = cmd; CalculoNomina.Core.tmpPagoNomina isrAntesSubsidio = new CalculoNomina.Core.tmpPagoNomina(); isrAntesSubsidio.idtrabajador = lstConceptosDeducciones[i].idtrabajador; isrAntesSubsidio.idempresa = GLOBALES.IDEMPRESA; isrAntesSubsidio.idconcepto = lstConceptosDeducciones[i].id; isrAntesSubsidio.noconcepto = lstConceptosDeducciones[i].noconcepto; isrAntesSubsidio.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; isrAntesSubsidio.fechainicio = inicio.Date; isrAntesSubsidio.fechafin = fin.Date; isrAntesSubsidio.exento = 0; isrAntesSubsidio.gravado = 0; if (percepciones != 0) { decimal baseGravableIsr = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador).Sum(e => e.gravado); Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; cnx.Open(); int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); cnx.Close(); Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = idperiodo; cnx.Open(); int dias = (int)ph.DiasDePago(p); cnx.Close(); TablaIsr.Core.TablaIsr _isr = new TablaIsr.Core.TablaIsr(); _isr.inferior = (baseGravableIsr / dias) * decimal.Parse((30.4).ToString()); cnx.Open(); lstIsr = isrh.isrCorrespondiente(_isr); cnx.Close(); excedente = ((baseGravableIsr / dias) * decimal.Parse((30.4).ToString())) - lstIsr[0].inferior; ImpMarginal = excedente * (lstIsr[0].porcentaje / 100); isr = ImpMarginal + lstIsr[0].cuota; isrAntesSubsidio.cantidad = (isr / decimal.Parse((30.4).ToString())) * dias; isrAntes = (isr / decimal.Parse((30.4).ToString())) * dias; } else { isrAntes = 0; isrAntesSubsidio.cantidad = 0; //double vacaciones = lstPercepciones.Where(e => e.idtrabajador == lstPercepciones[i].idtrabajador && e.noconcepto == 7).Sum(e => e.cantidad); //if (vacaciones != 0) //{ // double baseGravableIsr = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador).Sum(e => e.gravado); // Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); // eh.Command = cmd; // cnx.Open(); // int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); // cnx.Close(); // Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); // ph.Command = cmd; // Periodos.Core.Periodos p = new Periodos.Core.Periodos(); // p.idperiodo = idperiodo; // cnx.Open(); // int dias = (int)ph.DiasDePago(p); // cnx.Close(); // TablaIsr.Core.TablaIsr _isr = new TablaIsr.Core.TablaIsr(); // _isr.inferior = (baseGravableIsr / dias) * 30.4; // cnx.Open(); // lstIsr = isrh.isrCorrespondiente(_isr); // cnx.Close(); // excedente = ((baseGravableIsr / dias) * 30.4) - lstIsr[0].inferior; // ImpMarginal = excedente * (lstIsr[0].porcentaje / 100); // isr = ImpMarginal + lstIsr[0].cuota; // isrAntesSubsidio.cantidad = isr; // isrAntes = isr; //} //else //{ // isrAntes = 0; // isrAntesSubsidio.cantidad = 0; //} } isrAntesSubsidio.guardada = false; isrAntesSubsidio.tiponomina = tipoNomina; isrAntesSubsidio.modificado = false; lstValoresNomina.Add(isrAntesSubsidio); break; #endregion #region SUBSIDIO case 15: //double sueldoSubsidio = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 1).Sum(e => e.cantidad); CalculoNomina.Core.tmpPagoNomina subsidioNomina = new CalculoNomina.Core.tmpPagoNomina(); subsidioNomina.idtrabajador = lstConceptosDeducciones[i].idtrabajador; subsidioNomina.idempresa = GLOBALES.IDEMPRESA; subsidioNomina.idconcepto = lstConceptosDeducciones[i].id; subsidioNomina.noconcepto = lstConceptosDeducciones[i].noconcepto; subsidioNomina.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; subsidioNomina.fechainicio = inicio.Date; subsidioNomina.fechafin = fin.Date; subsidioNomina.exento = 0; subsidioNomina.gravado = 0; if (percepciones != 0) { decimal baseGravableSubsidio = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador).Sum(e => e.gravado); Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; cnx.Open(); int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); cnx.Close(); Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = idperiodo; cnx.Open(); int dias = (int)ph.DiasDePago(p); cnx.Close(); TablaSubsidio.Core.SubsidioHelper ts = new TablaSubsidio.Core.SubsidioHelper(); ts.Command = cmd; TablaSubsidio.Core.TablaSubsidio subsidio = new TablaSubsidio.Core.TablaSubsidio(); subsidio.desde = (baseGravableSubsidio / dias) * decimal.Parse((30.4).ToString()); decimal cantidad = 0; cnx.Open(); cantidad = decimal.Parse(ts.obtenerCantidadSubsidio(subsidio).ToString()); cnx.Close(); subsidioNomina.cantidad = (cantidad / decimal.Parse((30.4).ToString())) * dias; subsidioAntes = (cantidad / decimal.Parse((30.4).ToString())) * dias; } else { subsidioNomina.cantidad = 0; subsidioAntes = 0; //double vacacionesSubsidio = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 7).Sum(e => e.cantidad); //if (vacacionesSubsidio != 0) //{ // double baseGravableSubsidio = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador).Sum(e => e.gravado); // Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); // eh.Command = cmd; // cnx.Open(); // int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); // cnx.Close(); // Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); // ph.Command = cmd; // Periodos.Core.Periodos p = new Periodos.Core.Periodos(); // p.idperiodo = idperiodo; // cnx.Open(); // int dias = (int)ph.DiasDePago(p); // cnx.Close(); // TablaSubsidio.Core.SubsidioHelper ts = new TablaSubsidio.Core.SubsidioHelper(); // ts.Command = cmd; // TablaSubsidio.Core.TablaSubsidio subsidio = new TablaSubsidio.Core.TablaSubsidio(); // subsidio.desde = (baseGravableSubsidio / dias) * 30.4; // double cantidad = 0; // cnx.Open(); // cantidad = double.Parse(ts.obtenerCantidadSubsidio(subsidio).ToString()); // cnx.Close(); // subsidioNomina.cantidad = cantidad; // subsidioAntes = cantidad; //} //else //{ // subsidioNomina.cantidad = 0; // subsidioAntes = 0; //} } subsidioNomina.guardada = false; subsidioNomina.tiponomina = tipoNomina; subsidioNomina.modificado = false; lstValoresNomina.Add(subsidioNomina); break; #endregion #region SUBSIDIO DEFINITIVO case 16: CalculoNomina.Core.tmpPagoNomina subsidioDefinitivo = new CalculoNomina.Core.tmpPagoNomina(); subsidioDefinitivo.idtrabajador = lstConceptosDeducciones[i].idtrabajador; subsidioDefinitivo.idempresa = GLOBALES.IDEMPRESA; subsidioDefinitivo.idconcepto = lstConceptosDeducciones[i].id; subsidioDefinitivo.noconcepto = lstConceptosDeducciones[i].noconcepto; subsidioDefinitivo.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; subsidioDefinitivo.fechainicio = inicio.Date; subsidioDefinitivo.fechafin = fin.Date; subsidioDefinitivo.exento = 0; subsidioDefinitivo.gravado = 0; //double sueldoSubsidioDefinitivo = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 1).Sum(e => e.cantidad); if (percepciones != 0) { Empleados.Core.EmpleadosHelper esh = new Empleados.Core.EmpleadosHelper(); esh.Command = cmd; cnx.Open(); int idperiodoSubsidio = (int)esh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); cnx.Close(); Periodos.Core.PeriodosHelper psh = new Periodos.Core.PeriodosHelper(); psh.Command = cmd; Periodos.Core.Periodos ps = new Periodos.Core.Periodos(); ps.idperiodo = idperiodoSubsidio; cnx.Open(); int diasSubsidio = (int)psh.DiasDePago(ps); cnx.Close(); if (subsidioAntes > isrAntes) subsidioDefinitivo.cantidad = subsidioAntes - isrAntes; else subsidioDefinitivo.cantidad = 0; } else { subsidioDefinitivo.cantidad = 0; //double vacacionSubsidioDefinitivo = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 7).Sum(e => e.cantidad); //if (vacacionSubsidioDefinitivo != 0) //{ // Empleados.Core.EmpleadosHelper esh = new Empleados.Core.EmpleadosHelper(); // esh.Command = cmd; // cnx.Open(); // int idperiodoSubsidio = (int)esh.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); // cnx.Close(); // Periodos.Core.PeriodosHelper psh = new Periodos.Core.PeriodosHelper(); // psh.Command = cmd; // Periodos.Core.Periodos ps = new Periodos.Core.Periodos(); // ps.idperiodo = idperiodoSubsidio; // cnx.Open(); // int diasSubsidio = (int)psh.DiasDePago(ps); // cnx.Close(); // if (subsidioAntes > isrAntes) // subsidioDefinitivo.cantidad = subsidioAntes - isrAntes; // else // subsidioDefinitivo.cantidad = 0; //} //else // subsidioDefinitivo.cantidad = 0; } subsidioDefinitivo.guardada = false; subsidioDefinitivo.tiponomina = tipoNomina; subsidioDefinitivo.modificado = false; lstValoresNomina.Add(subsidioDefinitivo); break; #endregion #region ISR DEFINITIVO case 17: CalculoNomina.Core.tmpPagoNomina isrDefinitivo = new CalculoNomina.Core.tmpPagoNomina(); isrDefinitivo.idtrabajador = lstConceptosDeducciones[i].idtrabajador; isrDefinitivo.idempresa = GLOBALES.IDEMPRESA; isrDefinitivo.idconcepto = lstConceptosDeducciones[i].id; isrDefinitivo.noconcepto = lstConceptosDeducciones[i].noconcepto; isrDefinitivo.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; isrDefinitivo.fechainicio = inicio.Date; isrDefinitivo.fechafin = fin.Date; isrDefinitivo.exento = 0; isrDefinitivo.gravado = 0; //double sueldoIsrDefinitivo = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 1).Sum(e => e.cantidad); if (percepciones != 0) { Empleados.Core.EmpleadosHelper eih = new Empleados.Core.EmpleadosHelper(); eih.Command = cmd; cnx.Open(); int idperiodoIsr = (int)eih.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); cnx.Close(); Periodos.Core.PeriodosHelper pih = new Periodos.Core.PeriodosHelper(); pih.Command = cmd; Periodos.Core.Periodos pi = new Periodos.Core.Periodos(); pi.idperiodo = idperiodoIsr; cnx.Open(); int diasIsr = (int)pih.DiasDePago(pi); cnx.Close(); if (subsidioAntes > isrAntes) { isrDefinitivo.cantidad = 0; } else { isrDefinitivo.cantidad = isrAntes - subsidioAntes; } } else { isrDefinitivo.cantidad = 0; //double vacacionIsrDefinitivo = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 7).Sum(e => e.cantidad); //if (vacacionIsrDefinitivo != 0) //{ // Empleados.Core.EmpleadosHelper eih = new Empleados.Core.EmpleadosHelper(); // eih.Command = cmd; // cnx.Open(); // int idperiodoIsr = (int)eih.obtenerIdPeriodo(lstConceptosDeducciones[i].idtrabajador); // cnx.Close(); // Periodos.Core.PeriodosHelper pih = new Periodos.Core.PeriodosHelper(); // pih.Command = cmd; // Periodos.Core.Periodos pi = new Periodos.Core.Periodos(); // pi.idperiodo = idperiodoIsr; // cnx.Open(); // int diasIsr = (int)pih.DiasDePago(pi); // cnx.Close(); // double isptIsr = 0; // if (subsidioAntes > isrAntes) // { // isrDefinitivo.cantidad = 0; // } // else // { // isptIsr = ((isrAntes - subsidioAntes) / 30.4) * diasIsr; // if (isptIsr <= 0) // { // isrDefinitivo.cantidad = 0; // } // else // { // isrDefinitivo.cantidad = isptIsr; // } // } //} //else // isrDefinitivo.cantidad = 0; } isrDefinitivo.guardada = false; isrDefinitivo.tiponomina = tipoNomina; isrDefinitivo.modificado = false; lstValoresNomina.Add(isrDefinitivo); break; #endregion #region OTRAS DEDUCCIONES default: //double sueldoDeducciones = lstPercepciones.Where(e => e.idtrabajador == lstConceptosDeducciones[i].idtrabajador && e.noconcepto == 1).Sum(e => e.cantidad); CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = lstConceptosDeducciones[i].idtrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstConceptosDeducciones[i].id; vn.noconcepto = lstConceptosDeducciones[i].noconcepto; vn.tipoconcepto = lstConceptosDeducciones[i].tipoconcepto; vn.fechainicio = inicio.Date; vn.fechafin = fin.Date; vn.guardada = false; vn.tiponomina = tipoNomina; vn.modificado = false; #region SUELDO DIFERENTE DE CERO if (percepciones != 0) { Infonavit.Core.InfonavitHelper infh = new Infonavit.Core.InfonavitHelper(); infh.Command = cmd; Infonavit.Core.Infonavit inf = new Infonavit.Core.Infonavit(); inf.idtrabajador = lstConceptosDeducciones[i].idtrabajador; inf.idempresa = GLOBALES.IDEMPRESA; if (lstConceptosDeducciones[i].noconcepto == 9 || lstConceptosDeducciones[i].noconcepto == 21) { cnx.Open(); activoInfonavit = (bool)infh.activoInfonavit(inf); cnx.Close(); if (activoInfonavit) { CalculoFormula cf = new CalculoFormula(lstConceptosDeducciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosDeducciones[i].formula); vn.cantidad = decimal.Parse(cf.calcularFormula().ToString()); vn.exento = 0; vn.gravado = 0; } else { vn.cantidad = 0; vn.exento = 0; vn.gravado = 0; } } else { CalculoFormula cf = new CalculoFormula(lstConceptosDeducciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosDeducciones[i].formula); vn.cantidad = decimal.Parse(cf.calcularFormula().ToString()); vn.exento = 0; vn.gravado = 0; } lstValoresNomina.Add(vn); } else { vn.cantidad = 0; vn.exento = 0; vn.gravado = 0; lstValoresNomina.Add(vn); } break; #endregion #endregion } } #endregion #region EXISTENCIA DEL CONCEPTO EN TABLA int existe = 0; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; lstValoresDefinitivos = new List<CalculoNomina.Core.tmpPagoNomina>(); for (int i = 0; i < lstValoresNomina.Count; i++) { CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = lstValoresNomina[i].idtrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstValoresNomina[i].idconcepto; vn.noconcepto = lstValoresNomina[i].noconcepto; vn.tipoconcepto = lstValoresNomina[i].tipoconcepto; vn.fechainicio = lstValoresNomina[i].fechainicio; vn.fechafin = lstValoresNomina[i].fechafin; vn.guardada = lstValoresNomina[i].guardada; vn.tiponomina = lstValoresNomina[i].tiponomina; vn.modificado = lstValoresNomina[i].modificado; vn.exento = lstValoresNomina[i].exento; vn.gravado = lstValoresNomina[i].gravado; vn.cantidad = lstValoresNomina[i].cantidad; cnx.Open(); existe = (int)nh.existeConcepto(vn); cnx.Close(); if (existe == 0) { lstValoresDefinitivos.Add(vn); } else { cnx.Open(); nh.actualizaConcepto(vn); cnx.Close(); } } #endregion return lstValoresDefinitivos; }
void da_OnCantidad(decimal cantidad) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos concepto = new Conceptos.Core.Conceptos(); concepto.noconcepto = 2; //HORAS EXTRAS DOBLES concepto.idempresa = GLOBALES.IDEMPRESA; cnx.Open(); string formulaexento = ch.obtenerFormulaExento(concepto).ToString(); cnx.Close(); CalculoFormula cf = new CalculoFormula(idTrabajador, _inicioPeriodo, _finPeriodo, formulaexento); decimal exento = decimal.Parse(cf.calcularFormula().ToString()); decimal gravado = 0; if (cantidad <= exento) { exento = cantidad; gravado = 0; } else { gravado = cantidad - exento; } CalculoNomina.Core.tmpPagoNomina hora = new CalculoNomina.Core.tmpPagoNomina(); hora.idempresa = GLOBALES.IDEMPRESA; hora.idtrabajador = idTrabajador; hora.noconcepto = 2; //CONCEPTO HORAS EXTRAS DOBLES hora.fechainicio = _inicioPeriodo.Date; hora.fechafin = _finPeriodo.Date; hora.cantidad = cantidad; hora.exento = exento; hora.gravado = gravado; hora.modificado = true; try { cnx.Open(); nh.actualizaHorasExtrasDespensa(hora); cnx.Close(); cnx.Dispose(); muestraDatos(); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } }
public static List<CalculoNomina.Core.tmpPagoNomina> PERCEPCIONES(List<CalculoNomina.Core.Nomina> lstConceptosPercepciones, DateTime inicio, DateTime fin, int tipoNomina) { #region VARIABLES GLOBALES string cdn = ConfigurationManager.ConnectionStrings["cdnNomina"].ConnectionString; SqlConnection cnx = new SqlConnection(cdn); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnx; #endregion #region LISTA PARA DATOS DEL TRABAJADOR List<CalculoNomina.Core.tmpPagoNomina> lstValoresNomina; List<CalculoNomina.Core.tmpPagoNomina> lstValoresDefinitivos; #endregion #region CALCULO lstValoresNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); for (int i = 0; i < lstConceptosPercepciones.Count; i++) { CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = lstConceptosPercepciones[i].idtrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstConceptosPercepciones[i].id; vn.noconcepto = lstConceptosPercepciones[i].noconcepto; vn.tipoconcepto = lstConceptosPercepciones[i].tipoconcepto; vn.fechainicio = inicio.Date; vn.fechafin = fin.Date; vn.guardada = false; vn.tiponomina = tipoNomina; vn.modificado = false; CalculoFormula formula = new CalculoFormula(lstConceptosPercepciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosPercepciones[i].formula); vn.cantidad = decimal.Parse(formula.calcularFormula().ToString()); CalculoFormula formulaExcento = new CalculoFormula(lstConceptosPercepciones[i].idtrabajador, inicio.Date, fin.Date, lstConceptosPercepciones[i].formulaexento); vn.exento = decimal.Parse(formulaExcento.calcularFormula().ToString()); Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; cnx.Open(); int idperiodo = (int)eh.obtenerIdPeriodo(lstConceptosPercepciones[i].idtrabajador); cnx.Close(); Periodos.Core.PeriodosHelper ph = new Periodos.Core.PeriodosHelper(); ph.Command = cmd; Periodos.Core.Periodos p = new Periodos.Core.Periodos(); p.idperiodo = idperiodo; cnx.Open(); int dias = (int)ph.DiasDePago(p); cnx.Close(); Conceptos.Core.ConceptosHelper ch = new Conceptos.Core.ConceptosHelper(); ch.Command = cmd; Conceptos.Core.Conceptos c = new Conceptos.Core.Conceptos(); c.idempresa = GLOBALES.IDEMPRESA; c.noconcepto = lstConceptosPercepciones[i].noconcepto; c.tipoconcepto = lstConceptosPercepciones[i].tipoconcepto; c.periodo = dias; cnx.Open(); bool grava = (bool)ch.gravaConcepto(c); bool exenta = (bool)ch.exentaConcepto(c); cnx.Close(); if (grava && !exenta) vn.gravado = vn.cantidad; if (grava && exenta) { if (vn.cantidad <= vn.exento) { vn.exento = vn.cantidad; vn.gravado = 0; } else { vn.gravado = vn.cantidad - vn.exento; } } if (!grava && exenta) { vn.gravado = 0; vn.exento = vn.cantidad; } #region SWITCH SUELDO CERO switch (lstConceptosPercepciones[i].noconcepto) { case 1: if (vn.cantidad == 0) { vn.gravado = 0; lstValoresNomina.Add(vn); Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper(); vh.Command = cmd; Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = lstConceptosPercepciones[i].idtrabajador; vp.idempresa = GLOBALES.IDEMPRESA; vp.periodofin = fin.Date; vp.periodoinicio = inicio.Date; vp.vacacionesprima = "V"; cnx.Open(); int diasVacaciones = (int)vh.pagoVacacionesPrima(vp); cnx.Close(); if (diasVacaciones == 0) { i++; int contadorDatosNomina = i; for (int j = i; j < lstConceptosPercepciones.Count; j++) { contadorDatosNomina = j; if (lstConceptosPercepciones[j].idtrabajador == vn.idtrabajador) { CalculoNomina.Core.tmpPagoNomina vnCero = new CalculoNomina.Core.tmpPagoNomina(); vnCero.idtrabajador = lstConceptosPercepciones[j].idtrabajador; vnCero.idempresa = GLOBALES.IDEMPRESA; vnCero.idconcepto = lstConceptosPercepciones[j].id; vnCero.noconcepto = lstConceptosPercepciones[j].noconcepto; vnCero.tipoconcepto = lstConceptosPercepciones[j].tipoconcepto; vnCero.fechainicio = inicio.Date; vnCero.fechafin = fin.Date; vnCero.guardada = false; vnCero.tiponomina = tipoNomina; vnCero.modificado = false; vnCero.cantidad = 0; vnCero.exento = 0; vnCero.gravado = 0; lstValoresNomina.Add(vnCero); } else { --contadorDatosNomina; break; } } i = contadorDatosNomina; } } else lstValoresNomina.Add(vn); break; default: lstValoresNomina.Add(vn); break; } #endregion } #endregion #region EXISTENCIA DEL CONCEPTO EN TABLA int existe = 0; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; lstValoresDefinitivos = new List<CalculoNomina.Core.tmpPagoNomina>(); for (int i = 0; i < lstValoresNomina.Count; i++) { CalculoNomina.Core.tmpPagoNomina vn = new CalculoNomina.Core.tmpPagoNomina(); vn.idtrabajador = lstValoresNomina[i].idtrabajador; vn.idempresa = GLOBALES.IDEMPRESA; vn.idconcepto = lstValoresNomina[i].idconcepto; vn.noconcepto = lstValoresNomina[i].noconcepto; vn.tipoconcepto = lstValoresNomina[i].tipoconcepto; vn.fechainicio = lstValoresNomina[i].fechainicio; vn.fechafin = lstValoresNomina[i].fechafin; vn.guardada = lstValoresNomina[i].guardada; vn.tiponomina = lstValoresNomina[i].tiponomina; vn.modificado = lstValoresNomina[i].modificado; vn.exento = lstValoresNomina[i].exento; vn.gravado = lstValoresNomina[i].gravado; vn.cantidad = lstValoresNomina[i].cantidad; cnx.Open(); existe = (int)nh.existeConcepto(vn); cnx.Close(); if (existe == 0) { lstValoresDefinitivos.Add(vn); } else { cnx.Open(); nh.actualizaConcepto(vn); cnx.Close(); } } #endregion return lstValoresDefinitivos; }
private void dtpSeleccionaFecha_ValueChanged(object sender, EventArgs e) { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; int existe = 0; CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; if (_tipoNomina != GLOBALES.EXTRAORDINARIO_NORMAL) { if (_periodo == 7) { DateTime dt = dtpSeleccionaFecha.Value.Date; while (dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1); dtpPeriodoInicio.Value = dt; dtpPeriodoFin.Value = dt.AddDays(6); periodoInicio = dtpPeriodoInicio.Value.Date; periodoFin = dtpPeriodoFin.Value.Date; } else { if (dtpSeleccionaFecha.Value.Day <= 15) { dtpPeriodoInicio.Value = new DateTime(dtpSeleccionaFecha.Value.Year, dtpSeleccionaFecha.Value.Month, 1); dtpPeriodoFin.Value = new DateTime(dtpSeleccionaFecha.Value.Year, dtpSeleccionaFecha.Value.Month, 15); } else { dtpPeriodoInicio.Value = new DateTime(dtpSeleccionaFecha.Value.Year, dtpSeleccionaFecha.Value.Month, 16); dtpPeriodoFin.Value = new DateTime(dtpSeleccionaFecha.Value.Year, dtpSeleccionaFecha.Value.Month, DateTime.DaysInMonth(dtpSeleccionaFecha.Value.Year, dtpSeleccionaFecha.Value.Month)); } periodoInicio = dtpPeriodoInicio.Value.Date; periodoFin = dtpPeriodoFin.Value.Date; } try { cnx.Open(); existe = (int)nh.existeNomina(GLOBALES.IDEMPRESA, periodoInicio.Date, periodoFin.Date, _periodo); cnx.Close(); if (existe != 0) { MessageBox.Show("NOMINA CALCULADA \r\n \r\n " + "El periodo seleccionado se encuenta: \r\n " + "Calculado y Autorizado.", "Información"); btnAceptar.Enabled = false; } else { btnAceptar.Enabled = true; } } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n" + error.Message, "Error"); } } else { periodoInicio = dtpSeleccionaFecha.Value.Date; periodoFin = dtpSeleccionaFecha.Value.Date; btnAceptar.Enabled = true; } }
private void btnAceptar_Click(object sender, EventArgs e) { int existeVacaciones = 0, existeIncapacidad = 0; int diasProporcionales = 0; int existeBaja = 0; DialogResult respuesta = MessageBox.Show("¿Desea dar de baja al empleado?","Confirmación",MessageBoxButtons.YesNo); if (respuesta == DialogResult.Yes) { //if (ausentismo) //{ // frmDiasAusentismo da = new frmDiasAusentismo(); // da.OnDiasAusentismo += da_OnDiasAusentismo; // da.ShowDialog(); //} //if (diasAusentismo == 0 && ausentismo) //{ // MessageBox.Show("El número de dias es 0 o se presionó el boton cancelar. Por favor revisar.", "Error"); // return; //} cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; PeriodoFechaAplicacion(); #region EXISTENCIA DE INCAPACIDAD Incidencias.Core.IncidenciasHelper ih = new Incidencias.Core.IncidenciasHelper(); ih.Command = cmd; Incidencias.Core.Incidencias incidencia = new Incidencias.Core.Incidencias(); incidencia.idtrabajador = _idempleado; incidencia.fechainicio = periodoInicio.Date; incidencia.fechafin = periodoFin.Date; try { cnx.Open(); existeIncapacidad = (int)ih.existeIncidenciaBaja(incidencia); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener existencia de Incapacidad.","Error"); cnx.Dispose(); return; } #endregion #region EXISTENCIA DE VACACIONES Vacaciones.Core.VacacionesHelper vh = new Vacaciones.Core.VacacionesHelper(); vh.Command = cmd; Vacaciones.Core.VacacionesPrima vp = new Vacaciones.Core.VacacionesPrima(); vp.idtrabajador = _idempleado; vp.periodoinicio = periodoInicio; vp.periodofin = periodoFin; vp.vacacionesprima = "V"; try { cnx.Open(); existeVacaciones = (int)vh.existeVacacionesPrima(vp); cnx.Close(); } catch { MessageBox.Show("Error: Al obtener existencia de Vacaciones.", "Error"); cnx.Dispose(); return; } #endregion #region VALIDACION DE INCAPACIDAD if (existeIncapacidad != 0) { DateTime fechaInicioIncidencia; DateTime fechaFinIncidencia; try { cnx.Open(); fechaInicioIncidencia = DateTime.Parse(ih.fechaInicio(incidencia).ToString()); fechaFinIncidencia = DateTime.Parse(ih.fechaFin(incidencia).ToString()); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener las fechas de incapacidad.", "Error"); cnx.Dispose(); return; } if (dtpFechaBaja.Value.Date >= fechaInicioIncidencia.Date && dtpFechaBaja.Value.Date <= fechaFinIncidencia.Date) { MessageBox.Show("No se puede dar de baja. La fecha de baja esta entre una incapacidad.", "Error"); return; } if (dtpFechaBaja.Value.Date <= fechaInicioIncidencia.Date) { MessageBox.Show("No se puede dar de baja. Existe una incapacidad.", "Error"); return; } } #endregion #region VALIDACION DE VACACIONES if (existeVacaciones != 0) { DateTime fechaInicioVac; DateTime fechaFinVac; try { cnx.Open(); fechaInicioVac = DateTime.Parse(vh.fechaInicio(vp).ToString()); fechaFinVac = DateTime.Parse(vh.fechaFin(vp).ToString()); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener las fechas de las vacaciones.", "Error"); cnx.Dispose(); return; } if (dtpFechaBaja.Value.Date >= fechaInicioVac.Date && dtpFechaBaja.Value.Date <= fechaFinVac.Date) { MessageBox.Show("No se puede dar de baja. La fecha de baja coninciden con vacaciones.", "Error"); return; } if (dtpFechaBaja.Value.Date <= fechaInicioVac.Date) { MessageBox.Show("No se puede dar de baja. El trabajador tiene vacaciones.", "Error"); return; } } #endregion Empresas.Core.EmpresasHelper ep = new Empresas.Core.EmpresasHelper(); ep.Command = cmd; Empresas.Core.Empresas empresa = new Empresas.Core.Empresas(); empresa.idempresa = GLOBALES.IDEMPRESA; Empleados.Core.EmpleadosHelper eh = new Empleados.Core.EmpleadosHelper(); eh.Command = cmd; Empleados.Core.Empleados emp = new Empleados.Core.Empleados(); emp.idtrabajador = _idempleado; Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus(); ee.idtrabajador = _idempleado; ee.idempresa = GLOBALES.IDEMPRESA; ee.estatus = GLOBALES.INACTIVO; Historial.Core.HistorialHelper hp = new Historial.Core.HistorialHelper(); hp.Command = cmd; Historial.Core.Historial h = new Historial.Core.Historial(); h.idtrabajador = _idempleado; h.tipomovimiento = GLOBALES.mBAJA; h.fecha_imss = dtpFechaBaja.Value; h.fecha_sistema = DateTime.Now; h.idempresa = GLOBALES.IDEMPRESA; h.motivobaja = int.Parse(cmbMotivoBaja.SelectedValue.ToString()); h.iddepartamento = 0; h.idpuesto = 0; //Ausentismo.Core.AusentismoHelper ah = new Ausentismo.Core.AusentismoHelper(); //ah.Command = cmd; //Ausentismo.Core.Ausentismo a = new Ausentismo.Core.Ausentismo(); //a.idtrabajador = _idempleado; //a.idempresa = GLOBALES.IDEMPRESA; //a.fecha_imss = dtpFechaBaja.Value; //a.dias = diasAusentismo; Bajas.Core.BajasHelper bh = new Bajas.Core.BajasHelper(); bh.Command = cmd; Bajas.Core.Bajas baja = new Bajas.Core.Bajas(); baja.idtrabajador = _idempleado; baja.idempresa = GLOBALES.IDEMPRESA; baja.motivo = int.Parse(cmbMotivoBaja.SelectedValue.ToString()); baja.fecha = dtpFechaBaja.Value.Date; //baja.diasproporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1; baja.periodoinicio = periodoInicio.Date; baja.periodofin = periodoFin.Date; baja.observaciones = txtObservaciones.Text; baja.registro = DateTime.Now; diasProporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1; if (diasProporcionales == 16) baja.diasproporcionales = diasProporcionales - 1; else baja.diasproporcionales = (int)(dtpFechaBaja.Value.Date - periodoInicio.Date).TotalDays + 1; try { cnx.Open(); existeBaja = (int)bh.existeBaja(baja); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al verificar la existencia de la baja.", "Error"); cnx.Dispose(); return; } if (existeBaja != 0) { MessageBox.Show( string.Format("El trabajador ya cuenta con una baja en el periodo del: \r\n \r\n {0} al {1}", periodoInicio.Date.ToShortDateString(), periodoFin.Date.ToShortDateString()), "Información"); return; } bool obraCivil = false; try { cnx.Open(); obraCivil = bool.Parse(eh.esObraCivil(GLOBALES.IDEMPRESA, _idempleado).ToString()); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener dato de obra civil. \r\n \r\n" + error.Message, "Error"); return; } if (obraCivil) { nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstPreNominaGuardada = new List<CalculoNomina.Core.tmpPagoNomina>(); List<CalculoNomina.Core.tmpPagoNomina> lstUltimaNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); lstUltimaNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, _idempleado, periodo); lstPreNominaGuardada = nh.fechaPreNominaObraCivil(GLOBALES.IDEMPRESA, _idempleado, periodoInicio, periodoFin); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener las fechas de pago. \r\n \r\n" + error.Message, "Error"); return; } if (lstUltimaNomina.Count != 0) { if (dtpFechaBaja.Value.Date >= lstUltimaNomina[0].fechainicio || dtpFechaBaja.Value.Date <= lstUltimaNomina[0].fechafin) { MessageBox.Show("La baja corresponde a un periodo cerrado.", "Información"); return; } } if (lstPreNominaGuardada.Count != 0) { if (dtpFechaBaja.Value.Date <= lstPreNominaGuardada[0].fechafin) { try { Bajas.Core.Bajas bajaTrabajador = new Bajas.Core.Bajas(); bajaTrabajador.idtrabajador = _idempleado; cnx.Open(); bh.bajaEmpleado(bajaTrabajador); nh.eliminaPreNomina(_idempleado, periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al dar baja del empleado. \r\n \r\n" + error.Message, "Error"); return; } } } } else { nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstNomina = new List<CalculoNomina.Core.tmpPagoNomina>(); try { cnx.Open(); lstNomina = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, _idempleado, periodo); cnx.Close(); } catch (Exception error) { MessageBox.Show("Error: Al obtener las fechas de pago. \r\n \r\n" + error.Message, "Error"); return; } if (lstNomina.Count != 0) { if (dtpFechaBaja.Value.Date <= lstNomina[0].fechainicio || dtpFechaBaja.Value.Date <= lstNomina[0].fechafin) { try { Bajas.Core.Bajas bajaTrabajador = new Bajas.Core.Bajas(); bajaTrabajador.idtrabajador = _idempleado; cnx.Open(); bh.bajaEmpleado(bajaTrabajador); nh.eliminaPreNomina(_idempleado, periodo); cnx.Close(); baja.fecha = lstNomina[0].fechafin; baja.diasproporcionales = 1; MessageBox.Show("La baja corresponde a un periodo cerrado. \r\n\r\n Se dará con la fecha de termino del periodo cerrado: " + lstNomina[0].fechafin.ToShortDateString(), "Información"); } catch (Exception error) { MessageBox.Show("Error: Al dar baja del empleado. \r\n \r\n" + error.Message, "Error"); return; } } } } try { cnx.Open(); h.valor = (decimal)eh.obtenerSalarioDiarioIntegrado(emp); hp.insertarHistorial(h); //ACTUALIZA TABLA trabajadoresestatus eh.bajaEmpleado(ee); baja.registropatronal = (string)ep.obtenerRegistroPatronal(empresa); baja.nss = (string)eh.obtenerNss(emp); bh.insertaBaja(baja); //if (ausentismo) //{ // a.registropatronal = (string)ep.obtenerRegistroPatronal(empresa); // a.nss = (string)eh.obtenerNss(emp); // ah.insertaAusentismo(a); //} cnx.Close(); cnx.Dispose(); if(OnBajaEmpleado != null) OnBajaEmpleado(GLOBALES.ACTIVO); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n " + error.Message, "Error"); } MessageBox.Show("Baja exitosa.", "Información"); btnAceptar.Enabled = false; this.Dispose(); } }
private void btnAceptar_Click(object sender, EventArgs e) { string rp; //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; } cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; Empleados.Core.EmpleadosHelper empleadoh = new Empleados.Core.EmpleadosHelper(); Historial.Core.HistorialHelper hh = new Historial.Core.HistorialHelper(); Reingreso.Core.ReingresoHelper rh = new Reingreso.Core.ReingresoHelper(); Empresas.Core.EmpresasHelper eh = new Empresas.Core.EmpresasHelper(); Infonavit.Core.InfonavitHelper ih = new Infonavit.Core.InfonavitHelper(); empleadoh.Command = cmd; hh.Command = cmd; rh.Command = cmd; eh.Command = cmd; ih.Command = cmd; Empleados.Core.Empleados empleado = new Empleados.Core.Empleados(); Empleados.Core.EmpleadosEstatus ee = new Empleados.Core.EmpleadosEstatus(); Historial.Core.Historial historia = new Historial.Core.Historial(); Reingreso.Core.Reingresos reingreso = new Reingreso.Core.Reingresos(); Empresas.Core.Empresas empresa = new Empresas.Core.Empresas(); empleado.idtrabajador = _idempleado; empleado.idempresa = lstEmpleado[0].idempresa; empleado.fechaingreso = dtpFechaReingreso.Value; empleado.fechaantiguedad = dtpFechaAntiguedad.Value; empleado.antiguedad = int.Parse(txtAntiguedad.Text); empleado.antiguedadmod = int.Parse(txtAntiguedadMod.Text); empleado.iddepartamento = int.Parse(cmbDepartamento.SelectedValue.ToString()); empleado.idpuesto = int.Parse(cmbPuesto.SelectedValue.ToString()); empleado.idperiodo = int.Parse(cmbPeriodo.SelectedValue.ToString()); empleado.sueldo = decimal.Parse(txtSueldo.Text); empleado.sd = decimal.Parse(txtSalarioDiario.Text); empleado.sdi = decimal.Parse(txtSDI.Text); empleado.idusuario = GLOBALES.IDUSUARIO; empleado.estatus = GLOBALES.ACTIVO; empleado.cuenta = mtxtCuentaBancaria.Text; empleado.clabe = mtxtCuentaClabe.Text; empleado.idbancario = mtxtIdBancario.Text; empleado.metodopago = cmbMetodoPago.Text; if (chkObraCivil.Checked) empleado.obracivil = true; else empleado.obracivil = false; ee.idtrabajador = _idempleado; ee.idempresa = GLOBALES.IDEMPRESA; ee.estatus = GLOBALES.REINGRESO; historia.idtrabajador = _idempleado; historia.idempresa = lstEmpleado[0].idempresa; historia.valor = decimal.Parse(txtSDI.Text); historia.fecha_imss = dtpFechaReingreso.Value; historia.fecha_sistema = DateTime.Now; historia.motivobaja = 0; historia.tipomovimiento = GLOBALES.mREINGRESO; historia.iddepartamento = int.Parse(cmbDepartamento.SelectedValue.ToString()); historia.idpuesto = int.Parse(cmbPuesto.SelectedValue.ToString()); empresa.idempresa = lstEmpleado[0].idempresa; reingreso.idtrabajador = _idempleado; reingreso.idempresa = lstEmpleado[0].idempresa; reingreso.fechaingreso = dtpFechaReingreso.Value; reingreso.sdi = decimal.Parse(txtSDI.Text); reingreso.registro = DateTime.Now; Periodos.Core.PeriodosHelper 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 = dtpFechaReingreso.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 - dtpFechaReingreso.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 - dtpFechaReingreso.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)(dtpFechaReingreso.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; } } } CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; List<CalculoNomina.Core.tmpPagoNomina> lstFechas = new List<CalculoNomina.Core.tmpPagoNomina>(); bool verificaFechas = false; try { cnx.Open(); lstFechas = nh.obtenerUltimaNominaTrabajador(GLOBALES.IDEMPRESA, GLOBALES.NORMAL, diasPago, _idempleado); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la fecha de la ultima nómina calculada", "Error"); } if (lstFechas.Count != 0) { if (dtpFechaReingreso.Value.Date <= lstFechas[0].fechainicio.Date || dtpFechaReingreso.Value.Date <= lstFechas[0].fechafin.Date) verificaFechas = false; else verificaFechas = true; if (!verificaFechas) { MessageBox.Show("La fecha de ingreso es invalida. Fecha menor al ultimo periodo calculado, verifique.", "Error"); return; } } try { cnx.Open(); empleadoh.reingreso(empleado); empleadoh.bajaEmpleado(ee); rp = (string)eh.obtenerRegistroPatronal(empresa); reingreso.registropatronal = rp; reingreso.nss = lstEmpleado[0].nss + lstEmpleado[0].digitoverificador; reingreso.diasproporcionales = diasProporcionales; reingreso.periodoinicio = periodoInicio; reingreso.periodofin = periodoFin; rh.insertaReingreso(reingreso); hh.insertarHistorial(historia); cnx.Close(); MessageBox.Show("Empleado reingresado con éxito.", "Información"); if (OnReingreso != null) OnReingreso(GLOBALES.NUEVO); } catch (Exception error) { MessageBox.Show("Error: \r\n \r\n " + error.Message, "Error"); } int existeInfonavit = 0; try { cnx.Open(); existeInfonavit = (int)ih.existeInfonavit(_idempleado); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la existencia del Infonavit.\r\n AVISO: INGRESAR O MODIFICAR MANUALMENTE EL CREDITO DE INFONAVIT", "Error"); cnx.Dispose(); } List<Infonavit.Core.Infonavit> lstInfonavit = new List<Infonavit.Core.Infonavit>(); if (existeInfonavit != 0) { try { cnx.Open(); lstInfonavit = ih.obtenerInfonavitTrabajador(_idempleado); cnx.Close(); } catch (Exception) { MessageBox.Show("Error: Al obtener la información de infonavit.\r\n AVISO: INGRESAR O MODIFICAR MANUALMENTE EL CREDITO DE INFONAVIT", "Error"); cnx.Dispose(); } try { cnx.Open(); ih.actualizaEstatusInfonavit(lstInfonavit[0].idinfonavit, _idempleado); cnx.Close(); MessageBox.Show("Trabajador cuenta con Infonavit. Crédito: " + lstInfonavit[0].credito, "Información"); } catch (Exception) { MessageBox.Show("Error: Al obtener al activar el crédito de infonavit.\r\n AVISO: INGRESAR O MODIFICAR MANUALMENTE EL CREDITO DE INFONAVIT", "Error"); cnx.Dispose(); } } this.Dispose(); }
private void calculoNoPeriodo() { cnx = new SqlConnection(cdn); cmd = new SqlCommand(); cmd.Connection = cnx; nh = new CalculoNomina.Core.NominaHelper(); nh.Command = cmd; int noPeriodo = 0; try { if (_tipoNomina == GLOBALES.NORMAL ) { cnx.Open(); noPeriodo = int.Parse(nh.obtenerNoPeriodo(_periodo, periodoInicio).ToString()); nh.actualizarNoPeriodo(GLOBALES.IDEMPRESA, periodoInicio.Date, periodoFin.Date, noPeriodo); cnx.Close(); } else if (_tipoNomina == GLOBALES.EXTRAORDINARIO_NORMAL) { cnx.Open(); noPeriodo = (int)(nh.obtenerNoPeriodoExtraordinario(GLOBALES.IDEMPRESA, _tipoNomina)); noPeriodo = noPeriodo + 1; nh.actualizarNoPeriodo(GLOBALES.IDEMPRESA, periodoInicio.Date, periodoFin.Date, noPeriodo); cnx.Close(); } } catch (Exception) { MessageBox.Show("Error: Al actualizar el No. de Periodo", "Error"); cnx.Dispose(); return; } }