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 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); }