/// <summary> /// Agrega un registro a la tabla del analisis para las vacaciones permitidas consumibles /// </summary> /// <param name="analisis">la coleccion de registros del analisis en curso</param> /// <param name="permitidas_consumibles">la cantidad de dias consumibles con su periodo</param> public void Add(VacacionesPermitidas permitidas_consumibles) { lineas.Add(new LogCalculoVacaciones() { PeriodoAutorizado = permitidas_consumibles.Periodo, CantidadDiasAutorizados = permitidas_consumibles.CantidadDeDias() }); }
private void ImputarA(SolicitudesDeVacaciones aprobadas, List <VacacionesPermitidas> permitidas_consumibles, Persona persona, DateTime fecha_calculo, AnalisisDeLicenciaOrdinaria analisis) { //permitidas_consumibles.RemoveAll(consumible => aprobadas.AnioMinimoImputable() > consumible.Periodo && aprobadas.AnioMaximoImputable().Last().Periodo() <= consumible.Periodo); var permitidas_consumibles_log = new List <VacacionesPermitidas>(permitidas_consumibles); //quito las vacaciones que fueron permitidas, pero no se las puede tomar porque ya las perdió. permitidas_consumibles.RemoveAll(consumible => aprobadas.AnioMinimoImputable(persona) > consumible.Periodo); var permitidas_consumibles2 = new List <VacacionesPermitidas>(permitidas_consumibles); var permitidas_log = new List <VacacionesPermitidas>(permitidas_consumibles2); //me quedo solo con la parte que puedo consumir, de las vacaciones que se aprobaron. permitidas_consumibles2.RemoveAll(consumible => aprobadas.AnioMaximoImputable().Last().Periodo() < consumible.Periodo); var permitidas_aplicables = permitidas_consumibles2.FindAll(consumible => consumible.CantidadDeDias() > 0); var primera_permitida_aplicable = new VacacionesPermitidas(); if (permitidas_aplicables.Count() == 0) { _repositorio_licencia.LoguearError(permitidas_log, aprobadas, persona, fecha_calculo); return; //throw new SolicitudInvalidaException(); } primera_permitida_aplicable = permitidas_aplicables.First(); if (primera_permitida_aplicable.CantidadDeDias() > aprobadas.CantidadDeDias()) { primera_permitida_aplicable.RestarDias(aprobadas.CantidadDeDias()); analisis.Add(aprobadas, primera_permitida_aplicable); //_repositorio_licencia.LoguearDetalleCalculoLicencia(aprobadas, primera_permitida_aplicable.Periodo, persona, fecha_calculo, false, false); } else { aprobadas.DiasYaImputados(primera_permitida_aplicable.CantidadDeDias()); primera_permitida_aplicable.RestarDias(primera_permitida_aplicable.CantidadDeDias()); //_repositorio_licencia.LoguearDetalleCalculoLicencia(aprobadas, primera_permitida_aplicable.Periodo, persona, fecha_calculo, true, false); if (primera_permitida_aplicable.CantidadDeDias() == 0) { permitidas_consumibles.Remove(primera_permitida_aplicable); analisis.Add(primera_permitida_aplicable, aprobadas, analisis); } if (aprobadas.CantidadDeDias() > 0) { ImputarA(aprobadas, permitidas_consumibles, persona, fecha_calculo, analisis); } } }
public void Add(VacacionesPermitidas permitidas_consumibles, SolicitudesDeVacaciones solicitud, AnalisisDeLicenciaOrdinaria analisis) { var log = this.lineas.Find(l => l.PeriodoAutorizado == permitidas_consumibles.Periodo); if (analisis.LineaCompleta(log)) { log = new LogCalculoVacaciones() { PeriodoAutorizado = 0, CantidadDiasAutorizados = 0, CantidadDiasDescontados = solicitud.DiasYaImputados(), LicenciaDesde = solicitud.Desde(), LicenciaHasta = solicitud.Hasta() }; analisis.AddALaAuthorizacionDelPeriodo(log, permitidas_consumibles.Periodo); } else { log.CantidadDiasDescontados = solicitud.DiasYaImputados(); log.LicenciaDesde = solicitud.Desde(); log.LicenciaHasta = solicitud.Hasta(); } //var log = new LogCalculoVacaciones() { PeriodoAutorizado = 0, CantidadDiasAutorizados = 0, CantidadDiasDescontados = solicitud.DiasYaImputados(), LicenciaDesde = solicitud.Desde(), LicenciaHasta = solicitud.Hasta() }; //lineas.Add(log); }
public void Add(SolicitudesDeVacaciones aprobadas, VacacionesPermitidas primera_permitida_aplicable) { var linea = lineas.Find(l => l.PeriodoAutorizado.Equals(primera_permitida_aplicable.Periodo)); int index_of_primer_linea_proximo_periodo = IndexOfPrimerLineaProximoPeriodo(primera_permitida_aplicable.Periodo); if (LineaCompleta(linea)) { if (lineas.Count > index_of_primer_linea_proximo_periodo) { linea = lineas[index_of_primer_linea_proximo_periodo]; } if (lineaConAcarreoDeLineaAnterior(linea)) { index_of_primer_linea_proximo_periodo++; } linea = new LogCalculoVacaciones(); if (index_of_primer_linea_proximo_periodo > this.lineas.Count) { this.lineas.Add(linea); } else { this.lineas.Insert(index_of_primer_linea_proximo_periodo, linea); } } linea.CantidadDiasDescontados = aprobadas.CantidadDeDias(); if (!lineas.Any(l => l.LicenciaDesde.Equals(aprobadas.Desde()))) { linea.LicenciaDesde = aprobadas.Desde(); linea.LicenciaHasta = aprobadas.Hasta(); } }
public object DiasRestantes(VacacionesPermitidas permitidas, VacacionesAprobadas aprobadas, VacacionesPendientesDeAprobacion pendientes_de_aprobar) { return(permitidas.CantidadDeDias() - aprobadas.CantidadDeDias() - pendientes_de_aprobar.CantidadDeDias()); }