Namespace OneStream.BusinessRule.Finance.CustomTranslation Public Class MainClass Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As FinanceRulesApi, ByVal args As FinanceRulesArgs) As Object Try ' Custom Translation For rate simulation members In UD8 If api.FunctionType = FinanceFunctionType.Translate Then 'execute DEFAULT translation for everything except the cases that follow the default translation api.ExecuteDefaultTranslation() 'execute rate simulation only for Actual scenario If api.Pov.Scenario.Name = "Actual" Then 'get time from POV to determine corresponding rate Dim priorTimeId As Integer = api.Time.GetPriorYearPeriodId(api.Pov.Time.MemberPk.MemberId) 'get scenario ID for source FX rates Dim BudScenarioId As Integer = api.Members.GetMemberId(dimTypeId.Scenario, "Budget") 'get previous BUDGET average and closing rates Dim RateTypeCloBudPre As FxRateType = api.FxRates.GetFxRateTypeForAssetLiability(,BudScenarioId) Dim cloRateBudPre As Decimal = api.FxRates.GetCalculatedFxRate(RateTypeCloBudPre,priorTimeId) Dim RateTypeAvgBudPre As FxRateType = api.FxRates.GetFxRateTypeForRevenueExp(,BudScenarioId) Dim avgRateBudPre As Decimal = api.FxRates.GetCalculatedFxRate(RateTypeAvgBudPre,priorTimeId) 'execute custom translation for rate simulation member in UD8 api.Data.Translate("U8#PreviousBUDRateACT", "U8#None", FxRuleType.Direct, avgRateBudPre, FxRuleType.Direct, cloRateBudPre) 'Actual @ previous Budget rates End If End If Return Nothing Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function End Class End Namespace