예제 #1
0
        public override AnalisisDeLicenciaOrdinaria GetAnalisisCalculoVacacionesPara(IRepositorioLicencia repositorio_licencia, IRepositorioDePersonas repositorio_personas, Persona unaPersona, DateTime fecha_de_consulta)
        {
            var analisis       = new AnalisisDeLicenciaOrdinaria();
            var vacas_perdidas = new List <VacacionesPermitidas>();
            var saldo          = new SaldoLicencia();

            saldo.Detalle = new List <SaldoLicenciaDetalle>();

            unaPersona.TipoDePlanta = repositorio_personas.GetTipoDePlantaActualDe(unaPersona);
            var calculador_de_vacaciones = new CalculadorDeVacaciones(repositorio_licencia);

            var aprobadas = this.LicenciasAprobadasPara(repositorio_licencia, unaPersona);
            List <SolicitudesDeVacaciones> solicitudes = new List <SolicitudesDeVacaciones>(aprobadas.ToArray());

            this.LicenciasPendientesPara(repositorio_licencia, unaPersona).ForEach(pendiente => solicitudes.Add(pendiente));
            solicitudes = solicitudes.OrderBy(s => s.Persona.Documento).ThenBy(t => t.Desde()).ToList();
            var permitidas_descontando_perdidas = this.LicenciasPermitidasPara(repositorio_licencia, unaPersona, vacas_perdidas);
            var vacaciones_solicitables         = calculador_de_vacaciones.DiasSolicitables(permitidas_descontando_perdidas, solicitudes, fecha_de_consulta, unaPersona, analisis, vacas_perdidas);
            var permitidas_calculadas           = this.LicenciasCalculadasPara(repositorio_licencia, unaPersona);

            vacaciones_solicitables.ForEach(vac_solic => saldo.Detalle.Add(new SaldoLicenciaDetalle {
                Periodo = vac_solic.Periodo(), Disponible = vac_solic.CantidadDeDias()
            }));
            analisis.SetCalculoSinDescuento(permitidas_calculadas);
            analisis.Saldo = vacaciones_solicitables;
            return(analisis);
        }
예제 #2
0
        public override SaldoLicencia RealizarCalculoDeSaldo(IRepositorioLicencia repositorio_licencia, IRepositorioDePersonas repositorio_personas, Persona unaPersona, DateTime fecha_de_consulta)
        {
            SaldoLicencia saldo = new SaldoLicencia();

            saldo.Detalle = new List <SaldoLicenciaDetalle>();
            //ProrrogaLicenciaOrdinaria prorroga;
            unaPersona.TipoDePlanta = repositorio_personas.GetTipoDePlantaActualDe(unaPersona);
            CalculadorDeVacaciones         calculador_de_vacaciones = new CalculadorDeVacaciones(repositorio_licencia);
            List <SolicitudesDeVacaciones> solicitudes = new List <SolicitudesDeVacaciones>(this.LicenciasAprobadasPara(repositorio_licencia, unaPersona).ToArray());

            this.LicenciasPendientesPara(repositorio_licencia, unaPersona).ForEach(pendiente => solicitudes.Add(pendiente));
            var vacas_perdidas = new List <VacacionesPermitidas>();
            List <VacacionesSolicitables> vacaciones_solicitables = calculador_de_vacaciones.DiasSolicitables(this.LicenciasPermitidasPara(repositorio_licencia, unaPersona, vacas_perdidas), solicitudes, fecha_de_consulta, unaPersona, new AnalisisDeLicenciaOrdinaria(), vacas_perdidas);

            vacaciones_solicitables.ForEach(vac_solic => saldo.Detalle.Add(new SaldoLicenciaDetalle {
                Periodo = vac_solic.Periodo(), Disponible = vac_solic.CantidadDeDias()
            }));

            return(saldo);
        }
예제 #3
0
 internal SaldoLicencia Restar(SaldoLicencia licencia_en_tramite)
 {
     this._SaldoMensual = this._SaldoMensual + licencia_en_tramite._SaldoMensual;
     this._SaldoAnual   = this._SaldoAnual + licencia_en_tramite._SaldoAnual;
     return(this);
 }