Exemple #1
0
 /// <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()
     });
 }
Exemple #2
0
        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);
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
            }
        }
Exemple #5
0
 public object DiasRestantes(VacacionesPermitidas permitidas, VacacionesAprobadas aprobadas, VacacionesPendientesDeAprobacion pendientes_de_aprobar)
 {
     return(permitidas.CantidadDeDias() - aprobadas.CantidadDeDias() - pendientes_de_aprobar.CantidadDeDias());
 }