//usado calculo de nomina public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextAdapter dbContextSimple, DBContextAdapter dbContextMaster) { this.dbContextSimple = (DBContextSimple)dbContextSimple.context; this.dbContextMaster = (DBContextMaster)dbContextMaster.context; mensajeResultado = calcularVacacionesDevengadasEmpleados(razonesSociales, factorIntegracion, (DBContextSimple)dbContextSimple.context, (DBContextMaster)dbContextMaster.context, true); dbContextSimple = null; dbContextMaster = null; return(mensajeResultado); }
public Mensaje buscaEmpleadoPTU(string claveRazonSocial, decimal idEmpleado, DBContextSimple dbContextSimple) { try { ptuEmpleado = (from ptuEm in dbContextSimple.Set <PtuEmpleados>() where ptuEm.razonesSociales.clave == claveRazonSocial && ptuEm.empleados.id == idEmpleado select ptuEm).SingleOrDefault(); mensajeResultado.noError = 0; mensajeResultado.resultado = ptuEmpleado; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaEmpleadoPTU()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; dbContextSimple.Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
public Mensaje buscarValoresPTU(String campo, string claveEmpleado, string claveRazonSocial, int ejercicio, DBContextSimple dbContextSimple) { inicializaVariableMensaje(); Object resultado = null; try { StringBuilder query = new StringBuilder(0); if (string.Equals(campo, "PTUDIAS", StringComparison.OrdinalIgnoreCase)) { resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>() where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio select ptu.ptuDias).SingleOrDefault(); } else if (string.Equals(campo, "PTUPERCEPCIONES", StringComparison.OrdinalIgnoreCase)) { resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>() where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio select ptu.ptuPercepciones).SingleOrDefault(); } else if (string.Equals(campo, "PTUTOTAL", StringComparison.OrdinalIgnoreCase)) { resultado = (from ptu in dbContextSimple.Set <PtuEmpleados>() where ptu.empleados.clave == claveEmpleado && ptu.razonesSociales.clave == claveRazonSocial && ptu.ejercicio == ejercicio select ptu.ptuDias + ptu.ptuPercepciones).SingleOrDefault(); } if (resultado == null) { mensajeResultado.resultado = 0; } else { mensajeResultado.resultado = resultado; } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscarValoresPTU()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(mensajeResultado); }
public Mensaje buscaCalculoPTU(string claveRazonsocial, DateTime fechaInicio, DateTime fechaFin, DBContextSimple dbContextSimple) { inicializaVariableMensaje(); isCalculoPTU = false; try { ptuDatosGenerales = (from ptu in dbContextSimple.Set <PtuDatosGenerales>() where (fechaInicio >= ptu.fechaCalculo && fechaFin <= ptu.fechaCalculo) && ptu.razonesSociales.clave.Equals(claveRazonsocial) select ptu).SingleOrDefault <PtuDatosGenerales>(); if (ptuDatosGenerales != null) { DateTime fechaDeCalculo = ptuDatosGenerales.fechaCalculo.GetValueOrDefault(), fechaPeriodoInicial = fechaInicio, fechaPeriodoFinal = fechaFin; if ((DateTime.Compare(fechaDeCalculo, fechaPeriodoInicial) > 0 || DateTime.Compare(fechaDeCalculo, fechaPeriodoInicial) == 0) && (DateTime.Compare(fechaDeCalculo, fechaPeriodoFinal) < 0 || DateTime.Compare(fechaDeCalculo, fechaPeriodoFinal) == 0)) { isCalculoPTU = true; } } mensajeResultado.noError = 0; mensajeResultado.resultado = ptuDatosGenerales; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaCalculoPTU()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; dbContextSimple.Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
private List <RegistroIncapacidad> obtenerIncapacidadesPorEnfermedad(DateTime fechaInicial, DateTime fechaFinal, string claveEmpleado, string razonSocial, DBContextSimple dbContextSimple) { List <RegistroIncapacidad> listRegistroIncapacidad = null; try { int ramoEnfermedadGeneral = (int)RamoSeguro.ENFERMEDAD_GENERAL; listRegistroIncapacidad = (from a in dbContextSimple.Set <RegistroIncapacidad>() where a.ramoSeguro == ramoEnfermedadGeneral && a.empleados.clave == claveEmpleado && a.empleados.razonesSociales.clave == razonSocial && ((a.fechaInicial >= fechaInicial && a.fechaInicial <= fechaFinal) || (a.fechaFinal >= fechaInicial && a.fechaInicial <= fechaFinal)) orderby a.fechaInicial select a).ToList(); listRegistroIncapacidad = listRegistroIncapacidad == null ? new List <RegistroIncapacidad>() : listRegistroIncapacidad; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerIncapacidadesPorEnfermedad()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); listRegistroIncapacidad = new List <RegistroIncapacidad>(); } return(listRegistroIncapacidad); }
private List <Asistencias> obtenerAsistencias(DateTime fechaInicial, DateTime fechaFinal, PeriodosNomina periodoNomina, DateTime?fechaBajaFiniq, string claveEmpleado, string claveRazonSocial, string claveTipoNomina, string claveTipoCorrida, DateTime fechaRangoInicial, DateTime fechaRangoFinal, DBContextSimple dbContextSimple) { List <Asistencias> listAsistencias = null; try { if (periodoNomina == null) { return(new List <Asistencias>()); } if (fechaBajaFiniq != null) { PeriodosNomina periodoNomTemp = (from p in dbContextSimple.Set <PeriodosNomina>() where p.tipoNomina.clave == claveTipoNomina && p.tipoCorrida.clave == claveTipoCorrida && (fechaBajaFiniq >= p.fechaInicial && fechaBajaFiniq <= p.fechaFinal) select p).SingleOrDefault(); if (periodoNomTemp == null) { fechaInicial = fechaRangoInicial; fechaFinal = fechaRangoFinal; } else { fechaInicial = periodoNomTemp.fechaInicial.GetValueOrDefault(); fechaFinal = periodoNomTemp.fechaFinal.GetValueOrDefault(); } } listAsistencias = (from a in dbContextSimple.Set <Asistencias>() where a.empleados.clave == claveEmpleado && a.tipoNomina.clave == claveTipoNomina && a.razonesSociales.clave == claveRazonSocial && a.periodosNomina.tipoCorrida.clave == claveTipoCorrida && (a.fecha >= fechaInicial && a.fecha <= fechaFinal) select a).ToList(); listAsistencias = listAsistencias == null ? new List <Asistencias>() : listAsistencias; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerAsistencias()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); listAsistencias = new List <Asistencias>(); } return(listAsistencias); }
public Mensaje cargarVariablesEmpleadoAsistencias(DateTime fechaInicial, DateTime fechaFinal, CalculoUnidades calculoUnidades, PeriodosNomina periodoNomina, DateTime?fechaBajaFiniq, bool?modificarDiasTrabajados, bool acumularAsis, string claveEmpleado, string claveRazonSocial, string claveTipoNomina, string claveTipoCorrida, DateTime fechaRangoInicial, DateTime fechaRangoFinal, Dictionary <string, object> valoresConceptosEmpleados, DBContextSimple dbContextSimple) { try { inicializaVariableMensaje(); pagarPrimero3Dias = 0; if (valoresConceptosEmpleados == null) { valoresConceptosEmpleados = new Dictionary <string, object>(); } double diasAusencias = 0, diasIncapacidadEnfermedad = 0, diasIncapacidadAccidente = 0, diasIncapacidadMaternidad = 0, diasOtrasIncapacidad = 0, festivo = 0, descanso = 0, laborados = 0; double hrsExtraDoble = 0.0, hrsExtraTriple = 0.0, retardos = 0.0, permisoSinSueldo = 0.0, permisoConSueldo = 0.0, descansoLaborado = 0.0, festivoLaborado = 0.0, domingoLaborado = 0.0, diasRetardos = 0.0, diasFaltas = 0.0; List <Asistencias> listAsistencias = obtenerAsistencias(fechaInicial, fechaFinal, periodoNomina, fechaBajaFiniq, claveEmpleado, claveRazonSocial, claveTipoNomina, claveTipoCorrida, fechaRangoInicial, fechaRangoFinal, dbContextSimple); if (mensajeResultado.noError != 0) { return(mensajeResultado); } List <Asistencias> listAsistenciaIncapacidadEnfermedad = new List <Asistencias>(); int i; for (i = 0; i < listAsistencias.Count; i++) { switch (Convert.ToInt16(listAsistencias[i].excepciones.clave)) { case 0: laborados++; break; case 1: retardos += listAsistencias[i].cantidad.GetValueOrDefault(); diasRetardos++; break; case 2: if (listAsistencias[i].cantidad == null) { diasFaltas++; } else if (listAsistencias[i].cantidad.GetValueOrDefault() == 0.50) { diasFaltas = diasFaltas + 0.5; } else { diasFaltas++; } break; case 3: diasAusencias++; break; case 4: permisoConSueldo++; break; case 5: permisoSinSueldo++; break; case 6: listAsistenciaIncapacidadEnfermedad.Add(listAsistencias[i]); diasIncapacidadEnfermedad++; break; case 7: diasIncapacidadAccidente++; break; case 8: diasIncapacidadMaternidad++; break; case 9: diasOtrasIncapacidad++; break; case 10: descansoLaborado = listAsistencias[i].cantidad.GetValueOrDefault(); break; case 11: if (listAsistencias[i].excepciones.tipoDatoExcepcion == TipoDatoExcepcion.SINDATO) { festivoLaborado++; } else { festivoLaborado = listAsistencias[i].cantidad.GetValueOrDefault(); } break; case 12: domingoLaborado = listAsistencias[i].cantidad.GetValueOrDefault(); break; case 13: ///"Tiempo extra == 13" falta break; case 14: hrsExtraDoble = listAsistencias[i].cantidad.GetValueOrDefault(); break; case 15: hrsExtraTriple = listAsistencias[i].cantidad.GetValueOrDefault(); break; case 16: descanso++; break; case 17: festivo++; break; } } if (listAsistencias.Count == 0) { if (fechaRangoInicial.CompareTo(fechaRangoFinal) == 0) { laborados = 1; } else { laborados = cantidadDiasEntreDosFechas(fechaRangoInicial, fechaRangoFinal) + 1; } } if (!acumularAsis) { if (modificarDiasTrabajados == null ? true : modificarDiasTrabajados.GetValueOrDefault()) { if (valoresConceptosEmpleados.ContainsKey("Laborado".ToUpper())) { valoresConceptosEmpleados["Laborado".ToUpper()] = laborados; } else { valoresConceptosEmpleados.Add("Laborado".ToUpper(), laborados); } } valoresConceptosEmpleados["HorasExtrasDobles".ToUpper()] = hrsExtraDoble; //valoresConceptosEmpleados.Add("HorasExtrasDobles".ToUpper(), hrsExtraDoble); valoresConceptosEmpleados["HorasExtrasTriples".ToUpper()] = hrsExtraTriple; } int diasAPagar = 0; int diasApagarIMSS = 0; pagarPrimero3Dias = 0; if (listAsistenciaIncapacidadEnfermedad.Count > 0) { listAsistenciaIncapacidadEnfermedad = (from list in listAsistenciaIncapacidadEnfermedad orderby list.fecha select list).ToList(); List <RegistroIncapacidad> listRegistroIncapacidad = obtenerIncapacidadesPorEnfermedad(listAsistenciaIncapacidadEnfermedad[0].fecha.GetValueOrDefault(), listAsistenciaIncapacidadEnfermedad[listAsistenciaIncapacidadEnfermedad.Count - 1].fecha.GetValueOrDefault(), claveEmpleado, claveRazonSocial, dbContextSimple); if (mensajeResultado.noError != 0) { return(mensajeResultado); } for (i = 0; i < listRegistroIncapacidad.Count; i++) { if (listRegistroIncapacidad[i].pagarTresPrimeroDias) { int diasIncapacidadEnf = listRegistroIncapacidad[i].diasIncapacidad.GetValueOrDefault(); diasApagarIMSS = diasIncapacidadEnf; if (diasIncapacidadEnf <= 3) { diasAPagar = diasIncapacidadEnf; } else { diasAPagar = 3; } DateTime fechaIncap = listRegistroIncapacidad[i].fechaInicial.GetValueOrDefault(); for (int dias = 0; dias < diasIncapacidadEnf; dias++) { if ((fechaIncap.CompareTo(periodoNomina.fechaInicial) > 0 || fechaIncap.CompareTo(periodoNomina.fechaInicial) == 0) & (fechaIncap.CompareTo(periodoNomina.fechaFinal) == 0 || fechaIncap.CompareTo(periodoNomina.fechaFinal) < 0)) { if (diasAPagar > 0) { pagarPrimero3Dias++; } diasAPagar--; diasApagarIMSS--; } else if (fechaIncap.CompareTo(periodoNomina.fechaInicial) < 0) { diasAPagar--; diasApagarIMSS--; } else if (fechaIncap.CompareTo(periodoNomina.fechaFinal) > 0) { break; } if (diasAPagar == 0 | pagarPrimero3Dias == 3) { break; } fechaIncap.AddDays(fechaIncap.Day + 1); } //diasIncapacidadEnfermedad = diasIncapacidadEnfermedad > 3 ? diasIncapacidadEnfermedad - 3 : 0; ///diasIncapacidadEnfermedad = diasIncapacidadEnfermedad - diasUsadosPagar; } } } if (acumularAsis) { valoresConceptosEmpleados["DiasIncapacidadEmpleadoAcum".ToUpper()] = diasIncapacidadEnfermedad + diasIncapacidadAccidente + diasIncapacidadMaternidad + diasOtrasIncapacidad; valoresConceptosEmpleados["FaltasAcum".ToUpper()] = diasFaltas; valoresConceptosEmpleados["AusentismoAcum".ToUpper()] = diasAusencias; } else { valoresConceptosEmpleados["IncapacidadEnfermedad".ToUpper()] = diasIncapacidadEnfermedad; valoresConceptosEmpleados["IncapacidadAccidente".ToUpper()] = diasIncapacidadAccidente; valoresConceptosEmpleados["IncapacidadMaternidad".ToUpper()] = diasIncapacidadMaternidad; valoresConceptosEmpleados["OtrasIncapacidad".ToUpper()] = diasOtrasIncapacidad; valoresConceptosEmpleados["DiasIncapacidadEmpleado".ToUpper()] = diasIncapacidadEnfermedad + diasIncapacidadAccidente + diasIncapacidadMaternidad + diasOtrasIncapacidad; valoresConceptosEmpleados["Faltas".ToUpper()] = diasFaltas;//Parametro 128 0 dias dias faltas if (modificarDiasTrabajados == null ? true : !modificarDiasTrabajados.GetValueOrDefault()) { valoresConceptosEmpleados["Ausentismo".ToUpper()] = diasAusencias; } valoresConceptosEmpleados["TExtrasDiaDescanso".ToUpper()] = descansoLaborado; valoresConceptosEmpleados["TExtrasDiaFestivo".ToUpper()] = festivoLaborado; valoresConceptosEmpleados["TExtrasDiaDomingo".ToUpper()] = domingoLaborado; valoresConceptosEmpleados["Retardos".ToUpper()] = retardos; valoresConceptosEmpleados["DiasRetardos".ToUpper()] = diasRetardos; valoresConceptosEmpleados["PermisoConSueldo".ToUpper()] = permisoConSueldo; valoresConceptosEmpleados["PermisoSinSueldo".ToUpper()] = permisoSinSueldo; valoresConceptosEmpleados["DiasFestivos".ToUpper()] = festivo; valoresConceptosEmpleados["DiasDescanso".ToUpper()] = descanso; valoresConceptosEmpleados["DiasIncapacidadEmpresa".ToUpper()] = pagarPrimero3Dias; valoresConceptosEmpleados["DiasIncapacidadIMSS".ToUpper()] = diasApagarIMSS; if (calculoUnidades != null) { if (modificarDiasTrabajados == null ? true : modificarDiasTrabajados.GetValueOrDefault()) { calculoUnidades.diasTrabajados = laborados; } calculoUnidades.hrsExtraDoble = hrsExtraDoble; calculoUnidades.hrsExtraTriple = hrsExtraTriple; calculoUnidades.diasIncapacidadEnfermedad = Convert.ToInt32(diasIncapacidadEnfermedad); calculoUnidades.diasIncapacidadAccidente = Convert.ToInt32(diasIncapacidadAccidente); calculoUnidades.diasIncapacidadMaternidad = Convert.ToInt32(diasIncapacidadMaternidad); calculoUnidades.diasOtrasIncapacidades = Convert.ToInt32(diasOtrasIncapacidad); calculoUnidades.diasFalta = diasFaltas; if (modificarDiasTrabajados == null ? true : !modificarDiasTrabajados.GetValueOrDefault()) { calculoUnidades.diasAusentismo = Convert.ToInt32(diasAusencias); } calculoUnidades.diasDescansoLaborado = descansoLaborado; calculoUnidades.diasFestivoLaborado = festivoLaborado; calculoUnidades.diasDomingoLaborado = domingoLaborado; calculoUnidades.diasRetardo = retardos; calculoUnidades.diasPermisoConSueldo = permisoConSueldo; calculoUnidades.diasPermisoSinSueldo = permisoSinSueldo; calculoUnidades.diasFestivo = Convert.ToInt32(festivo); calculoUnidades.diasDescanso = Convert.ToInt32(descanso); } } mensajeResultado.noError = 0; mensajeResultado.resultado = valoresConceptosEmpleados; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("cargarVariablesEmpleadoAsistencias()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); } return(mensajeResultado); }
public Mensaje agregarVacacionesAuto(RazonesSociales razonSocial, PlazasPorEmpleadosMov plaEmp, PeriodosNomina periodoNomina, object[,] tablaFactorIntegracion, PagarPrimaVacionalyVacacionesAuto pagarVacaAuto, DBContextSimple dbContextSimple) { try { VacacionesDisfrutadas vacDis = new VacacionesDisfrutadas(); Mensaje vacDisgau = new Mensaje(); VacacionesDisfrutadas vacDisconId = new VacacionesDisfrutadas(); VacacionesDisfrutadasDAO vacaDisfrutadas = new VacacionesDisfrutadasDAO(); VacacionesAplicacion VacAplic = new VacacionesAplicacion(); VacacionesDevengadas vacacionesDeven = null; DateTime fechaEmplado = new DateTime(); if (vacDev.getDevengadaActual() == null || vacDev.getDevengadaActual().Count == 0) { mensajeResultado = calcularVacacionesDevengadasEmpleados(razonSocial, tablaFactorIntegracion, dbContextSimple, null); if (mensajeResultado.noError != 0) { return(mensajeResultado); } } if (vacDev.getDevengadaActual().Count > 0) { vacacionesDeven = vacDev.getDevengadaActual()[plaEmp.plazasPorEmpleado.empleados.clave]; DateTime calfecha = new DateTime(); DateTime fechaActual = DateTime.Now.Date; DateTime calfechaActual = DateTime.Now; if (vacacionesDeven != null) { vacacionAplicacionActual = new VacacionesAplicacion(); calfecha = plaEmp.plazasPorEmpleado.fechaPrestaciones.Value; calfecha.AddYears(calfecha.Year + vacacionesDeven.ejercicio.Value); fechaEmplado = calfecha.Date; DateTime fechaPerIni = periodoNomina.fechaInicial.Value.Date; DateTime fechaPerFinal = periodoNomina.fechaFinal.Value.Date; if (fechaEmplado.CompareTo(fechaPerIni) >= 0 && fechaEmplado.CompareTo(fechaPerFinal) <= 0) { if (pagarVacaAuto == PagarPrimaVacionalyVacacionesAuto.PRIMACACIONALALANIVERSARIO) { vacDis.empleados = plaEmp.plazasPorEmpleado.empleados; vacDis.diasPrimaDisfrutados = vacacionesDeven.diasPrimaVaca; vacDis.diasVacDisfrutados = (0); vacDis.ejercicioAplicacion = calfechaActual.Year; vacDis.pagarPrimaVacacional = true; vacDis.pagarVacaciones = false; vacDis.periodoAplicacion = periodoNomina; vacDis.periodoPago = periodoNomina; vacDis.razonesSociales = razonSocial; vacDis.registroInicial = false; vacDis.regresoVac = calfechaActual; vacDis.salidaVacac = calfechaActual; vacDis.statusVacaciones = StatusVacaciones.PORCALCULAR; vacDis.tipoNominaAplicacion = periodoNomina.tipoNomina; vacDis.tipoCorridaAplicacion = periodoNomina.tipoCorrida; dbContextSimple.Set <VacacionesDisfrutadas>().Add(vacDis); dbContextSimple.SaveChanges(); vacDisconId = vacDis; VacAplic.diasPrima = vacacionesDeven.diasPrimaVaca; VacAplic.diasVac = 0; VacAplic.vacacionesDevengadas = vacacionesDeven; VacAplic.vacacionesDisfrutadas = vacDisconId; dbContextSimple.Set <VacacionesAplicacion>().AddOrUpdate(VacAplic); dbContextSimple.SaveChanges(); vacacionAplicacionActual = VacAplic; } else if (pagarVacaAuto == PagarPrimaVacionalyVacacionesAuto.PRIMACACIONALYVACACIONESALANIVERSARIO) { vacDis.empleados = plaEmp.plazasPorEmpleado.empleados; vacDis.diasPrimaDisfrutados = vacacionesDeven.diasPrimaVaca; vacDis.diasVacDisfrutados = vacacionesDeven.diasVacaciones; vacDis.ejercicioAplicacion = calfechaActual.Year; vacDis.pagarPrimaVacacional = true; vacDis.pagarVacaciones = false; vacDis.periodoAplicacion = periodoNomina; vacDis.periodoPago = periodoNomina; vacDis.razonesSociales = razonSocial; vacDis.registroInicial = false; vacDis.regresoVac = calfechaActual; vacDis.salidaVacac = calfechaActual; vacDis.statusVacaciones = StatusVacaciones.PORCALCULAR; vacDis.tipoNominaAplicacion = periodoNomina.tipoNomina; dbContextSimple.Set <VacacionesDisfrutadas>().Add(vacDis); dbContextSimple.SaveChanges(); vacDisconId = vacDis; VacAplic.diasPrima = vacacionesDeven.diasPrimaVaca; VacAplic.diasVac = vacacionesDeven.diasVacaciones; VacAplic.vacacionesDevengadas = vacacionesDeven; VacAplic.vacacionesDisfrutadas = vacDisconId; dbContextSimple.Set <VacacionesAplicacion>().AddOrUpdate(VacAplic); dbContextSimple.SaveChanges(); vacacionAplicacionActual = VacAplic; } } } } mensajeResultado.resultado = vacacionAplicacionActual; mensajeResultado.noError = 0; mensajeResultado.error = ""; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("agregarVacacionesAuto()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; dbContextSimple.Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
private List <VacacionesAplicacion> obtenerVacaciones(PeriodosNomina periodo, PlazasPorEmpleadosMov plazasPorEmpleadosMovEjecutandose, DateTime?fechaBajaFiniq, string claveTipoNomina, string claveTipoCorrida, bool isCorridaVacaciones, DBContextSimple dbContextSimple) { List <VacacionesAplicacion> listVacacionesAplicacion = null; try { if (periodo == null) { return(new List <VacacionesAplicacion>()); } if (fechaBajaFiniq != null) { PeriodosNomina periodosNominaTmp = null; if (fechaBajaFiniq != null) { periodosNominaTmp = (from p in dbContextSimple.Set <PeriodosNomina>() where p.tipoNomina.clave == claveTipoNomina && p.tipoCorrida.clave == claveTipoCorrida && (fechaBajaFiniq >= p.fechaInicial && fechaBajaFiniq <= p.fechaFinal) select p).SingleOrDefault(); } decimal idPeriodo = periodo.id; if (periodosNominaTmp != null) { idPeriodo = periodosNominaTmp.id; } listVacacionesAplicacion = (from va in dbContextSimple.Set <VacacionesAplicacion>() //join vd in dbContextSimple.Set<VacacionesDisfrutadas>() on va.vacacionesDisfrutadas.id equals vd.id //join em in dbContextSimple.Set<Empleados>() on vd.empleados.id equals em.id //join pa in dbContextSimple.Set<PeriodosNomina>() on vd.periodoAplicacion.id equals pa.id where va.vacacionesDisfrutadas.periodoAplicacion_ID == idPeriodo && va.vacacionesDisfrutadas.empleados_ID == plazasPorEmpleadosMovEjecutandose.plazasPorEmpleado.empleados.id select va).ToList(); } else { listVacacionesAplicacion = (from va in dbContextSimple.Set <VacacionesAplicacion>() join vd in dbContextSimple.Set <VacacionesDisfrutadas>() on va.vacacionesDisfrutadas.id equals vd.id join em in dbContextSimple.Set <Empleados>() on vd.empleados.id equals em.id join pa in dbContextSimple.Set <PeriodosNomina>() on vd.periodoAplicacion.id equals pa.id where em.id == plazasPorEmpleadosMovEjecutandose.plazasPorEmpleado.empleados.id && (vd.fechaPago >= periodo.fechaInicial && vd.fechaPago <= periodo.fechaFinal) select va).ToList(); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("obtenerVacaciones()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(listVacacionesAplicacion); }
public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] tablaFactorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaster) { mensajeResultado = vacDev.calcularVacacionesDevengadasEmpleados(razonesSociales, tablaFactorIntegracion, dbContextSimple, dbContextMaster, false); return(mensajeResultado); }
public Mensaje cargarVariablesEmpleadoVacaciones(CalculoUnidades calculoUnidades, PlazasPorEmpleadosMov plazasPorEmpleadosMovEjecutandose, bool acumularVac, PeriodosNomina periodoNomina, DateTime?fechaBajaFiniq, string claveTipoNomina, string claveCorrida, Dictionary <string, object> valoresConceptosEmpleados, DBContextSimple dbContextSimple) { int x; int diasVacaciones = 0; double diasPrimaVacacional = 0.0; try { bool corridaVacaciones = false; if (String.Equals(claveCorrida, "VAC", StringComparison.OrdinalIgnoreCase)) { corridaVacaciones = true; } List <VacacionesAplicacion> vacacionesAplicacion = obtenerVacaciones(periodoNomina, plazasPorEmpleadosMovEjecutandose, fechaBajaFiniq, claveTipoNomina, claveCorrida, corridaVacaciones, dbContextSimple); if (mensajeResultado.noError != 0) { return(mensajeResultado); } if (vacacionAplicacionActual != null) { // vacacionesAplicacion.add(vacacionAplicacionActual); } vacacionesAplicacionStatus = vacacionesAplicacion; DateTime fechaSalidaVacaciones = new DateTime(), fechaRegresoVacaciones = new DateTime(); fechaSalidaVacaciones.AddYears(1900); fechaRegresoVacaciones.AddYears(1900); TiposVacaciones tipoVacaciones = null; if (vacacionesAplicacion != null) { for (x = 0; x < vacacionesAplicacion.Count; x++) { fechaSalidaVacaciones = vacacionesAplicacion[x].vacacionesDisfrutadas.salidaVacac.GetValueOrDefault(); if (vacacionesAplicacion[x].vacacionesDisfrutadas.regresoVac != null) { fechaRegresoVacaciones = vacacionesAplicacion[x].vacacionesDisfrutadas.regresoVac.GetValueOrDefault(); } if (vacacionesAplicacion[x].diasVac == null) { vacacionesAplicacion[x].diasVac = 0; } diasVacaciones += vacacionesAplicacion[x].diasVac.GetValueOrDefault(); if (vacacionesAplicacion[x].diasPrima == null) { vacacionesAplicacion[x].diasPrima = 0.0; } diasPrimaVacacional += vacacionesAplicacion[x].diasPrima.GetValueOrDefault(); tipoVacaciones = vacacionesAplicacion[x].vacacionesDisfrutadas.tiposVacaciones; if (corridaVacaciones) { bool asigno = false; if (vacacionesAplicacion[x].diasPrima > 0.0) { vacacionesAplicacion[x].vacacionesDisfrutadas.periodoPago = periodoNomina; asigno = true; } if (vacacionesAplicacion[x].diasVac > 0) { vacacionesAplicacion[x].vacacionesDisfrutadas.periodoPago = periodoNomina; asigno = true; } if (asigno) { dbContextSimple.Set <VacacionesDisfrutadas>().AddOrUpdate(vacacionesAplicacion[x].vacacionesDisfrutadas); } } // fechaContador.setTime(fechaInicialVacaciones.getTime()); // while (!fechaContador.after(fechaRegresoVacaciones)) { // if ((fechaContador.getTime().compareTo(fechaInicial) > 0 || fechaContador.getTime().compareTo(fechaInicial) == 0) // & (fechaContador.getTime().compareTo(fechaFinal) == 0 || fechaContador.getTime().compareTo(fechaFinal) < 0)) { // diasVacacionesDisfPeriodo += 1; // } // // fechaContador.add(Calendar.DATE, 1); // } } } if (acumularVac) { valoresConceptosEmpleados["diasVacacionesAcum".ToUpper()] = diasVacaciones; } else { valoresConceptosEmpleados["fechaSalidaVacaciones".ToUpper()] = fechaSalidaVacaciones; valoresConceptosEmpleados["fechaRegresoVacaciones".ToUpper()] = fechaRegresoVacaciones; //////// valoresConceptosEmpleados.put("fechaInicialTrabajadas".toUpperCase(), (Date) fechaInicialTrabajadas.getTime()); //////// valoresConceptosEmpleados.put("fechaFinalTrabajadas".toUpperCase(), (Date) fechaFinalTrabajadas.getTime()); //////////// valoresConceptosEmpleados.put("diasVacacionesDisfrutadas".toUpperCase(), (Integer) diasVacacionesDisfrutadas); //////////// valoresConceptosEmpleados.put("diasVacacionesTrabajadas".toUpperCase(), (Integer) diasVacacionesTrabajadas); //////// valoresConceptosEmpleados.put("diasVacacionesDisfrutadas".toUpperCase(), (Integer) diasVacacionesDisfPeriodo); //////// valoresConceptosEmpleados.put("diasVacacionesTrabajadas".toUpperCase(), (Integer) diasVacacionesTrabPeriodo); //////////// valoresConceptosEmpleados.put("diasVacacionesDisfPeriodo".toUpperCase(), (Integer) diasVacacionesDisfPeriodo); //////////// valoresConceptosEmpleados.put("diasVacacionesTrabPeriodo".toUpperCase(), (Integer) diasVacacionesTrabPeriodo); valoresConceptosEmpleados["diasVacaciones".ToUpper()] = Convert.ToDouble(diasVacaciones); valoresConceptosEmpleados["diasPrima".ToUpper()] = diasPrimaVacacional; valoresConceptosEmpleados["tipoVacaciones".ToUpper()] = tipoVacaciones == null ? "" : tipoVacaciones.nombre; if (calculoUnidades != null) { calculoUnidades.diasPrimaVacacional = diasPrimaVacacional; calculoUnidades.diasVacaciones = diasVacaciones; calculoUnidades.tiposVacaciones = tipoVacaciones; } } mensajeResultado.noError = 0; mensajeResultado.resultado = valoresConceptosEmpleados; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("cargarVariablesEmpleadoVacaciones()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(mensajeResultado); }
//List<PeriodosNomina> public Mensaje buscarPeriodosPorRangoMeses(int rangoDeMes, DateTime fechaPeriodoNomina, string claveTipoNomina, string claveTipoCorrida, DBContextSimple dbContextSimple) { inicializaVariableMensaje(); List <PeriodosNomina> periodos = null; try { DateTime fechaRango = fechaPeriodoNomina; fechaRango.AddMonths(fechaPeriodoNomina.Month + rangoDeMes); int mesIni = -1, mesFin = -1; int yearPeriodo = fechaPeriodoNomina.Year; int mesPeriodo; int mesPeriodoRango; int mesEnero = -1; var query = from p in dbContextSimple.Set <PeriodosNomina>() select new { p }; if (mesIni == -1 & mesFin == -1) { mesIni = fechaPeriodoNomina.Month; mesFin = fechaRango.Month; mesEnero = ENERO; } mesPeriodo = mesIni; mesPeriodoRango = mesFin; if (fechaPeriodoNomina.Year > fechaRango.Year) { query = from sub in query where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month <= mesPeriodo || (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month == mesEnero && sub.p.acumularAMes.Value.Year == yearPeriodo) || (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month >= mesPeriodoRango) select sub; } else if (fechaPeriodoNomina.Year < fechaRango.Year) { query = from sub in query where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month == mesPeriodo || (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && sub.p.acumularAMes.Value.Month == mesEnero && sub.p.acumularAMes.Value.Year == yearPeriodo + 1) || (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo + 1 && sub.p.acumularAMes.Value.Month <= mesPeriodoRango && sub.p.acumularAMes.Value.Year == yearPeriodo + 2) select sub; } else { if (rangoDeMes < 0) { mesFin = fechaPeriodoNomina.Month; mesIni = fechaRango.Month; } else { mesIni = fechaPeriodoNomina.Month; mesFin = fechaRango.Month; } mesPeriodo = mesIni; mesPeriodoRango = mesFin; if (fechaRango.Month == ENERO) //Mes Enero { mesPeriodo = fechaPeriodoNomina.Month; mesPeriodoRango = fechaRango.Month; query = from sub in query where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && (sub.p.acumularAMes.Value.Month <= mesPeriodo && sub.p.acumularAMes.Value.Year == yearPeriodo) || (sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo - 1 && sub.p.acumularAMes.Value.Month == mesPeriodoRango && sub.p.acumularAMes.Value.Year == yearPeriodo) select sub; } else { query = from sub in query where sub.p.tipoNomina.clave == claveTipoNomina && sub.p.tipoCorrida.clave == claveTipoCorrida && sub.p.año == yearPeriodo && (sub.p.acumularAMes.Value.Month >= mesPeriodo && sub.p.acumularAMes.Value.Month <= mesPeriodoRango) select sub; } } periodos = (from sub in query select sub.p).ToList(); mensajeResultado.noError = 0; mensajeResultado.resultado = periodos; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscarPeriodosPorRangoMeses()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(mensajeResultado); }
public Mensaje buscaPeriodoNominaActual(String claveTipoNomina, String claveTipoCorrida, decimal?idPeriodo, DateTime fechaActual, DBContextSimple dbContextSimple) { inicializaVariableMensaje(); PeriodosNomina periodos = null; try { var query = from p in dbContextSimple.Set <PeriodosNomina>() join t in dbContextSimple.Set <TipoNomina>() on p.tipoNomina.id equals t.id join c in dbContextSimple.Set <TipoCorrida>() on p.tipoCorrida.id equals c.id select new { p, t, c }; if (idPeriodo == null) { query = from sub in query where (fechaActual >= sub.p.fechaInicial && fechaActual <= sub.p.fechaFinal) && sub.t.clave == claveTipoNomina && sub.c.clave == (claveTipoCorrida == null ? "PER" : claveTipoCorrida) select sub; } else { query = from sub in query where sub.p.id == idPeriodo select sub; } periodos = query.Select(p => p.p).Single(); mensajeResultado.noError = 0; mensajeResultado.error = ""; mensajeResultado.resultado = periodos; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaPeriodoNominaActual()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(mensajeResultado); }
public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra, bool usaCommit) { Object[,] reglaFactor = factorIntegracion; bool usoBDMaestra = false; devengadaActual = new Dictionary <string, VacacionesDevengadas>(); try { //inicializaVariableMensaje(); //if (dbContextSimple == null) //{ // setSession(dbContext); //} //else //{ // setSession(dbContextSimple); //} // dbContextSimple.Database.BeginTransaction(); ControlVacDeveng control = (from c in dbContextSimple.Set <ControlVacDeveng>() where c.razonesSociales.clave == razonesSociales.clave && c.fecha == (from ct in dbContextSimple.Set <ControlVacDeveng>() select new { ct.fecha }).Max(p => p.fecha) select c).SingleOrDefault(); DateTime fechaUltimDev; List <DateTime> diasPendientes = null; if (control == null) { diasPendientes = new List <DateTime>(); diasPendientes.Add(DateTime.Now); } else { fechaUltimDev = Convert.ToDateTime(control.fecha); diasPendientes = getDaysBetweenDates(fechaUltimDev, new DateTime()); } int d = 0; ControlVacDeveng controlCalculadas = null; for (d = 0; d < diasPendientes.Count; d++) { if (diasPendientes.Count > 0) { //Obtiene empleados que cumplen aniversario en la empresa al día List <PlazasPorEmpleado> plazasEmpleados = null; DateTime fechapen = diasPendientes[d]; plazasEmpleados = (from o in dbContextSimple.Set <PlazasPorEmpleadosMov>() where (from m in dbContextSimple.Set <PlazasPorEmpleadosMov>() where m.plazasPorEmpleado.razonesSociales.clave == razonesSociales.clave && m.plazasPorEmpleado.fechaFinal >= fechapen && o.plazasPorEmpleado.fechaPrestaciones.Value.Month == fechapen.Month && o.plazasPorEmpleado.fechaPrestaciones.Value.Day == fechapen.Day group new { m.plazasPorEmpleado.empleados, m } by new { m.plazasPorEmpleado.empleados.clave } into g select new { Column1 = g.Max(p => p.m.id) }).Contains(new { Column1 = o.id }) select o.plazasPorEmpleado).ToList(); plazasEmpleados = plazasEmpleados == null ? new List <PlazasPorEmpleado>() : plazasEmpleados; if (plazasEmpleados.Count > 0) { if (reglaFactor == null) {//Obtiene los factores de integracion usoBDMaestra = true; //if (dbContextMaster == null) //{ // setSession(dbContext); //} //else //{ // setSession(dbContextMaster); //} List <TablaDatos> values; values = (from o in dbContextMaster.Set <TablaDatos>() where o.tablaBase.clave == ClavesParametrosModulos.claveTipoTablaFactorIntegracion.ToString() && o.id == (from t in dbContextMaster.Set <TablaDatos>() where t.tablaBase.id == o.tablaBase.id select new { t.id }).Max(p => p.id) select o).ToList(); values = values == null ? new List <TablaDatos>() : values; if (values.Count > 0) { byte[] convert = ((TablaDatos)values[0]).fileXml; XDocument doc = UtilidadesXML.convierteBytesToXML(convert); reglaFactor = UtilidadesXML.extraeValoresNodos(doc); } } //Llenar tabla de Vacaciones Devengadas por día VacacionesDevengadas vd = null; if (usoBDMaestra) { if (dbContextSimple == null) { setSession(dbContextSimple); } else { getSession().Database.Connection.Close(); setSession(dbContextSimple); } } for (int i = 0; i < plazasEmpleados.Count; i++) { Double antiguedad = (Double)calcularAntiguedadExacta(Convert.ToDateTime(plazasEmpleados[i].fechaPrestaciones)); //Obtiene vacaciones devengadas por año a ese empleado VacacionesDevengadas vaca = (from a in dbContextSimple.Set <VacacionesDevengadas>() where a.empleados.id == plazasEmpleados[i].empleados.id && a.ejercicio == Convert.ToInt32(antiguedad) select a).SingleOrDefault(); if (vaca == null) { vd = new VacacionesDevengadas(); vd.razonesSociales = plazasEmpleados[i].razonesSociales; vd.empleados = plazasEmpleados[i].empleados; vd.ejercicio = Convert.ToInt32(antiguedad); Object[] factorEmpleado = (Object[])obtieneFactorIntegracion(reglaFactor, Convert.ToInt32(antiguedad)); Object[] salarioAniv = (from sdi in dbContextSimple.Set <SalariosIntegrados>() where sdi.empleados.id == plazasEmpleados[i].empleados.id && sdi.fecha <= plazasEmpleados[i].fechaPrestaciones group sdi by new { sdi.salarioDiarioFijo } into g select new { Column1 = g.Max(p => p.fecha), g.Key.salarioDiarioFijo }).ToArray(); if (salarioAniv == null) { vd.salarioAniversario = 0.0; } else { vd.salarioAniversario = (double)salarioAniv[1]; } vd.factorPrima = Convert.ToDouble(factorEmpleado[4].ToString()); vd.diasVacaciones = Convert.ToInt32(factorEmpleado[3].ToString()); vd.registroInicial = false; double primaVac = Convert.ToDouble(factorEmpleado[4].ToString()) / 100 * Convert.ToInt32(factorEmpleado[3].ToString()); vd.diasPrimaVaca = primaVac; dbContextSimple.Set <VacacionesDevengadas>().Add(vd); devengadaActual.Add(plazasEmpleados[i].empleados.clave, vd); } } } } controlCalculadas = new ControlVacDeveng(); controlCalculadas.fecha = diasPendientes[d]; controlCalculadas.razonesSociales_ID = razonesSociales.id; dbContextSimple.Set <ControlVacDeveng>().Add(controlCalculadas); dbContextSimple.SaveChanges(); } if (usaCommit) { dbContextSimple.Database.CurrentTransaction.Commit(); } mensajeResultado.resultado = true; mensajeResultado.noError = 0; mensajeResultado.error = ""; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("calcularVacacionesDevengadasEmpleados()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; dbContextSimple.Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
//usado calculo de nomina public Mensaje calcularVacacionesDevengadasEmpleados(RazonesSociales razonesSociales, object[,] factorIntegracion, DBContextSimple dbContextSimple, DBContextMaster dbContextMaestra) { return(calcularVacacionesDevengadasEmpleados(razonesSociales, factorIntegracion, dbContextSimple, dbContextMaestra, true)); }