예제 #1
0
        /// <summary>
        /// Devuelve dictionary con el importe que le corresponde a cada finca en este grupo.
        /// Si this.CoeficientesCustom == true y el parámetro coefGrupoReal != null, entonces se usará este parámetro como el total de coeficientes
        /// del grupo para los cálculos.
        /// </summary>
        /// <param name="tipo"></param>
        /// <param name="coefGrupoReal"></param>
        /// <returns></returns>
        public Dictionary <Finca, decimal> GetImportePorFinca(TipoRepartoPresupuesto tipo, double?coefGrupoReal = null)
        {
            switch (tipo)
            {
            case TipoRepartoPresupuesto.Lineal:
                decimal importe = this.Importe / this.FincasCoeficientes.Count;
                return((Dictionary <Finca, decimal>) this.FincasCoeficientes
                       .Select(x => new KeyValuePair <Finca, decimal>(x.Key, importe)));

            case TipoRepartoPresupuesto.SoloCoeficientes:
                return((Dictionary <Finca, decimal>) this.FincasCoeficientes
                       .Select(x => new KeyValuePair <Finca, decimal>(x.Key, Math.Round((decimal)x.Value * this.Importe, 2))));

            case TipoRepartoPresupuesto.CoeficientesYGrupos:

                double coefGrupo = (this.CoeficientesCustom && coefGrupoReal != null) ?
                                   (double)coefGrupoReal :
                                   this.FincasCoeficientes.Select(x => x.Value).Sum();

                return((Dictionary <Finca, decimal>) this.FincasCoeficientes
                       .Select(x =>
                {
                    double coefRelativo = x.Key.Coeficiente / coefGrupo;
                    double dImp = (double)this.Importe;
                    return new KeyValuePair <Finca, decimal>(x.Key, (decimal)Math.Round(dImp * coefRelativo, 2));
                }));

            default:
                return(null);
            }
        }
예제 #2
0
        public bool TrySetTipoReparto(TipoRepartoPresupuesto tipo)
        {
            if (this.Aceptado)
            {
                return(false);
            }

            this._TipoReparto = tipo;
            return(true);
        }
예제 #3
0
 public PresupuestoDLO(
     int id,
     int idCdad,
     string titulo,
     decimal total,
     bool aceptado,
     TipoRepartoPresupuesto tipoReparto,
     int codigo)
 {
     this.Id = id;
     this.IdOwnerComunidad = idCdad;
     this.Titulo           = titulo;
     this.Total            = total;
     this.Aceptado         = aceptado;
     this.TipoReparto      = tipoReparto;
     this.Codigo           = codigo;
 }
예제 #4
0
 public Presupuesto(
     int id, int idComunidad, int idEjercicio, int codigo, AutoCodigoData ACData, bool aceptado = false, TipoRepartoPresupuesto tipo = TipoRepartoPresupuesto.CoeficientesYGrupos)
 {
     this._Id = id;
     this._IdOwnerComunidad = idComunidad;
     this._IdOwnerEjercicio = idEjercicio;
     this.Codigo            = new AutoCodigoOwnerCdad <Presupuesto>(ACData, ACodigoCCheckType.Pptos, codigo);
     this._Aceptado         = aceptado;
     this._TipoReparto      = tipo;
     this._GruposDeGasto    = new List <iGrupoGastos>();
 }