Example #1
0
        public void AddALaAuthorizacionDelPeriodo(LogCalculoVacaciones log, int periodo)
        {
            var lineas_del_periodo = lineas.FindAll(l => l.PeriodoAutorizado == periodo);
            var index_of_primer_linea_proximo_periodo = IndexOfPrimerLineaProximoPeriodo(periodo);

            lineas.Insert(index_of_primer_linea_proximo_periodo, log);
            //throw new NotImplementedException();
        }
Example #2
0
        public void LasAutorizadasSinDescontarSon(List <VacacionesPermitidas> vacas_perdidas, List <VacacionesPermitidas> permitidas)
        {
            List <LogCalculoVacaciones> perdidas = new List <LogCalculoVacaciones>();

            permitidas.ForEach(perm =>
            {
                var linea_del_periodo = lineas.Find(l => l.PeriodoAutorizado == perm.Periodo);
                if (linea_del_periodo != null)
                {
                    if (linea_del_periodo.CantidadDiasAutorizados != perm.CantidadDeDias())
                    {
                        var dias_perdidos = perm.CantidadDeDias() - linea_del_periodo.CantidadDiasAutorizados;
                        linea_del_periodo.CantidadDiasAutorizados = perm.CantidadDeDias();
                        var per = new LogCalculoVacaciones();
                        per.PeriodoAutorizado       = perm.Periodo;
                        per.CantidadDiasDescontados = dias_perdidos;
                        per.PerdidaExplicitamente   = true;

                        var vp = vacas_perdidas.Find(v => v.Periodo == perm.Periodo);
                        if (vp != null)
                        {
                            per.Observacion = vp.Observacion;
                        }

                        perdidas.Add(per);
                    }
                }
            });

            perdidas.ForEach(p =>
            {
                var index   = 0;
                var found   = false;
                var primera = lineas.Find(l => l.PeriodoAutorizado == p.PeriodoAutorizado);
                index       = lineas.IndexOf(primera) + 1;
                for (int i = lineas.IndexOf(primera) + 1; i < lineas.Count; i++)
                {
                    if (lineas[i].PeriodoAutorizado == 0 && !found)
                    {
                        index = i;
                    }
                    else
                    {
                        found = true;
                    }
                }
                p.PeriodoAutorizado = 0;
                lineas.Insert(index, p);
            });
        }
Example #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);
        }
Example #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();
            }
        }
Example #5
0
 private static bool lineaConAcarreoDeLineaAnterior(LogCalculoVacaciones linea)
 {
     return(linea.LicenciaDesde.Equals(DateTime.MinValue) && linea.CantidadDiasDescontados != 0);
 }
Example #6
0
        protected bool HaySolicitudPosteriorA(LogCalculoVacaciones logCalculoVacaciones)
        {
            var lineas_posteriores = lineas.GetRange(this.lineas.IndexOf(logCalculoVacaciones), lineas.Count - this.lineas.IndexOf(logCalculoVacaciones));

            return(lineas_posteriores.Any(l => !l.LicenciaDesde.Equals(DateTime.MinValue)));
        }
Example #7
0
 public void Add(LogCalculoVacaciones logCalculoVacaciones)
 {
     lineas.Add(logCalculoVacaciones);
 }
Example #8
0
 protected bool LineaCompleta(LogCalculoVacaciones linea)
 {
     return(!(linea.LicenciaDesde.Equals(DateTime.MinValue) && linea.CantidadDiasDescontados == 0));
 }