private void DefinirFormulas() { #region Calculos comunes _calcManagerComun = CalculationManager<DatosProyecto>.Create(); _calcManagerComun.AfterFormulaExecution += CalcManager_AfterFormulaExecution; //Cant Dias = Horas Totales / Horas x Día _calcManagerComun.DefineFormula(x => x.Dias, x => (x.HorasTotales.ConvertirADecimal(0) / x.HorasPorDia.ConvertirADecimal()).ConvertirAString()); // %Evento = 1 / Cant Eventos _calcManagerComun.DefineFormula(x => x.PorcentajeEvento, x => (1 / x.CantidadEventos.ConvertirADecimal()).ConvertirAString(Formatos.FormatoPorcentajeConDecimales)); // Horas/Evento = Horas Totales / Cant Eventos _calcManagerComun.DefineFormula(x => x.HorasEvento, x => (x.HorasTotales.ConvertirADecimal(0) / x.CantidadEventos.ConvertirADecimal()).ConvertirAString()); //El Precio Bruto = Honorarios / (1-Factor o Tasa) + Gastos _calcManagerComun.DefineFormula(x => x.PrecioBruto, x => ((x.Honorarios.ConvertirADecimal(0) / (1 - x.Factor.ConvertirADecimal(0))) + x.Gastos.ConvertirADecimal(0)).ConvertirAString(Formatos.FormatoEntero)); #endregion #region Calculos de Hs #region Calculo de Hs - Tipo 1 _calcManagerHsTotales1 = CalculationManager<DatosProyecto>.Create() //Horas Totales = Cant Cursos * (Dias de la semana * Horas x Dia + Cant Participantes * Horas x Correccion) .DefineFormula(x => x.HorasTotales, x => (x.CantidadEventos.ConvertirADecimal(0) * (x.DiasPorSemana.ConvertirADecimal(0) * x.HorasPorDia.ConvertirADecimal(0) + x.CantidadParticipantes.ConvertirADecimal(0) * x.HorasCorreccion.ConvertirADecimal(0))).ConvertirAString()); _calcManagerHsTotales1.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Hs - Tipo 2 //TODO: Unificar con HsTotales1 (+ HorasAdicionales) _calcManagerHsTotales2 = CalculationManager<DatosProyecto>.Create() //Horas Totales = Cant Talleres * (Dias de la semana * Horas x Dia + Cant a corregir * Horas x Corrección) + Horas de customizado .DefineFormula(x => x.HorasTotales, x => ((x.CantidadEventos.ConvertirADecimal(0) * (x.DiasPorSemana.ConvertirADecimal(0) * x.HorasPorDia.ConvertirADecimal(0) + x.CantidadParticipantes.ConvertirADecimal(0) * x.HorasCorreccion.ConvertirADecimal(0))) + x.HorasAdicionales.ConvertirADecimal(0)).ConvertirAString()); _calcManagerHsTotales2.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Hs - Tipo 3 _calcManagerHsTotales3 = CalculationManager<DatosProyecto>.Create() //Horas Totales = Cant Eventos * Horas x Evento .DefineFormula(x => x.HorasTotales, x => (x.CantidadEventos.ConvertirADecimal(0) * x.HorasEventoIngresado.ConvertirADecimal(0)).ConvertirAString()); _calcManagerHsTotales3.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Hs - Tipo 4 _calcManagerHsTotales4 = CalculationManager<DatosProyecto>.Create() //Horas Totales= Cant Eventos*(DiasPorSemana * Horas x Dia +Cant participantes* Hs Corrección) .DefineFormula(x => x.HorasTotales, x => (x.CantidadEventos.ConvertirADecimal(0) * (x.DiasPorSemana.ConvertirADecimal(0) * x.HorasPorDia.ConvertirADecimal(0) + x.CantidadParticipantes.ConvertirADecimal(0) * x.HorasCorreccion.ConvertirADecimal(0))).ConvertirAString()); _calcManagerHsTotales4.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Hs - Tipo 5 _calcManagerHsTotales5 = CalculationManager<DatosProyecto>.Create(); //HoralTotales = HorasPorEventoIngresado _calcManagerHsTotales5.DefineFormula(x => x.HorasTotales, x => x.HorasEventoIngresado.ConvertirADecimal(0).ConvertirAString()); _calcManagerHsTotales5.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #endregion #region Calculos de Honorarios #region Calculo de Honorarios - Tipo 1 _calcManagerPrecioBruto1 = CalculationManager<DatosProyecto>.Create() //Honorarios = Rate Fijo .DefineFormula(x => x.Honorarios, x => (x.RateFijo.ConvertirADecimal(0)).ConvertirAString(Formatos.FormatoEntero)); _calcManagerPrecioBruto1.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Honorarios - Tipo 2 _calcManagerPrecioBruto2 = CalculationManager<DatosProyecto>.Create() // Honorarios = ( Rate Fijo + Rate Variable* Cant. Personas adicionales )* Cant Cursos .DefineFormula(x => x.Honorarios, x => ((x.RateFijo.ConvertirADecimal(0) + (x.RateVariable.ConvertirADecimal(0) * CalcularParticipantesAdicionales(x.CantidadTopeRateFijo.ConvertirADecimal(0), x.CantidadParticipantes.ConvertirADecimal(0))) ) * x.CantidadEventos.ConvertirADecimal(0) ).ConvertirAString(Formatos.FormatoEntero)); _calcManagerPrecioBruto2.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Honorarios - Tipo 3 _calcManagerPrecioBruto3 = CalculationManager<DatosProyecto>.Create() //Honorarios = (Horas Totales * RateVariable) .DefineFormula(x => x.Honorarios, x => (x.HorasTotales.ConvertirADecimal(0) * x.RateVariable.ConvertirADecimal(0)).ConvertirAString(Formatos.FormatoEntero)); _calcManagerPrecioBruto3.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #region Calculo de Honorarios - Tipo 4 _calcManagerPrecioBruto4 = CalculationManager<DatosProyecto>.Create() //Honorarios = (Cant Participantes * Precio x Participante* Cant Eventos) .DefineFormula(x => x.Honorarios, x => (x.CantidadParticipantes.ConvertirADecimal(0) * x.RateVariable.ConvertirADecimal(0) * x.CantidadEventos.ConvertirADecimal(0)).ConvertirAString(Formatos.FormatoEntero)); _calcManagerPrecioBruto4.AfterFormulaExecution += CalcManager_AfterFormulaExecution; #endregion #endregion }