public void CalculationManager_Test()
        {
            var calcManager = CalculationManager<DatosProyecto>.Create();

            calcManager.DefineFormula(x => x.PrecioBruto,
                    x => ((((x.RateFijo.ConvertirADecimal(0) + (x.RateVariable.ConvertirADecimal(0) * CalcularParticipantesAdicionales(x.CantidadTopeRateFijo.ConvertirADecimal(0), x.CantidadParticipantes.ConvertirADecimal(0))))
                    * x.CantidadEventos.ConvertirADecimal(0)) + x.Gastos.ConvertirADecimal(0)) * x.Factor.ConvertirADecimal(1)).ConvertirAString());

            var datos = new DatosProyecto();
            calcManager.ApplyToItem(datos, false);

            datos.CantidadEventos = 1.ToString();
            datos.RateFijo = 250.ToString();
            datos.Factor = 1.ToString();

            Assert.AreEqual(250, datos.PrecioBruto.ConvertirADecimal(0));
        }
        /// <summary>
        /// Asocia las formulas correspondientes al item
        /// </summary>
        public void Aplicar(DatosProyecto itemDatoProyecto, bool ejecutarConstantes)
        {
            //aplica los calculos comunes
            _calcManagerComun.ApplyToItem(itemDatoProyecto, ejecutarConstantes);

            //aplica los calculos especificos del tipo de calculo de horas
            switch (itemDatoProyecto.TipoCalculoHoras)
            {
                case 1:
                    _calcManagerHsTotales1.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 2:
                    _calcManagerHsTotales2.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 3:
                    _calcManagerHsTotales3.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 4:
                    _calcManagerHsTotales4.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 5:
                    _calcManagerHsTotales5.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
            }

            //aplica los calculos especificos del tipo de calculo de precio
            switch (itemDatoProyecto.TipoCalculoPrecio)
            {
                case 1:
                    _calcManagerPrecioBruto1.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 2:
                    _calcManagerPrecioBruto2.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 3:
                    _calcManagerPrecioBruto3.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
                case 4:
                    _calcManagerPrecioBruto4.ApplyToItem(itemDatoProyecto, ejecutarConstantes);
                    break;
            }
        }
        /// <summary>
        /// Comprueba de que el item posea una formula asociada en su columna.
        /// </summary>
        /// <param name="itemDatoProyecto"></param>
        /// <param name="nombreColumna"></param>
        /// <returns></returns>
        public bool TieneFormula(DatosProyecto itemDatoProyecto, string nombreColumna)
        {
            bool tieneFormula = _calcManagerComun.HasFormula(nombreColumna);

            if (!tieneFormula)
            {
                switch (itemDatoProyecto.TipoCalculoHoras)
                {
                    case 1:
                        tieneFormula = _calcManagerHsTotales1.HasFormula(nombreColumna);
                        break;
                    case 2:
                        tieneFormula = _calcManagerHsTotales2.HasFormula(nombreColumna);
                        break;
                    case 3:
                        tieneFormula = _calcManagerHsTotales3.HasFormula(nombreColumna);
                        break;
                    case 4:
                        tieneFormula = _calcManagerHsTotales4.HasFormula(nombreColumna);
                        break;
                    case 5:
                        tieneFormula = _calcManagerHsTotales5.HasFormula(nombreColumna);
                        break;
                }
            }

            if (!tieneFormula)
            {
                switch (itemDatoProyecto.TipoCalculoPrecio)
                {
                    case 1:
                        tieneFormula = _calcManagerPrecioBruto1.HasFormula(nombreColumna);
                        break;
                    case 2:
                        tieneFormula = _calcManagerPrecioBruto2.HasFormula(nombreColumna);
                        break;
                    case 3:
                        tieneFormula = _calcManagerPrecioBruto3.HasFormula(nombreColumna);
                        break;
                    case 4:
                        tieneFormula = _calcManagerPrecioBruto4.HasFormula(nombreColumna);
                        break;
                }
            }
            return tieneFormula;
        }
 public DatoAsignacionSemanal(DatosProyecto actividadProyecto)
 {
     _actividadProyecto = actividadProyecto;
 }
 /// <summary>
 /// Create a new DatosProyecto object.
 /// </summary>
 /// <param name="esFilaDato">Initial value of the EsFilaDato property.</param>
 /// <param name="idTipoActividad">Initial value of the IdTipoActividad property.</param>
 /// <param name="ordenActividad">Initial value of the OrdenActividad property.</param>
 /// <param name="esFilaActiva">Initial value of the EsFilaActiva property.</param>
 public static DatosProyecto CreateDatosProyecto(global::System.Boolean esFilaDato, global::System.Int32 idTipoActividad, global::System.Int32 ordenActividad, global::System.Boolean esFilaActiva)
 {
     DatosProyecto datosProyecto = new DatosProyecto();
     datosProyecto.EsFilaDato = esFilaDato;
     datosProyecto.IdTipoActividad = idTipoActividad;
     datosProyecto.OrdenActividad = ordenActividad;
     datosProyecto.EsFilaActiva = esFilaActiva;
     return datosProyecto;
 }