private void SetCurrencyRateInfosToLocalCollection(IEnumerable <CurrencyRateInfo> rates, DateTime date) { foreach (CurrencyRateInfo currencyRateInfo in rates) { currencyRateInfo.Rate = CurrencyRateHelper.SetMantissaToRate(currencyRateInfo.Rate, currencyRateInfo.RateMantissa); var key = GetLocalKey(currencyRateInfo.CurrencyId, date); if (!_localCurrencyRateInfos.ContainsKey(key)) { _localCurrencyRateInfos.Add(key, currencyRateInfo); } } }
public virtual bool CurrencyRateSavingTaskExecute(ProcessExecutingContext context) { var changedColumns = Entity.GetChangedColumnValues(); if (changedColumns.Any(c => c.Name == "Rate")) { EntitySchemaColumn rateColumn = Entity.Schema.Columns.FindByName("Rate"); FloatDataValueType dataValueType = rateColumn.DataValueType as FloatDataValueType; decimal currencyRate = Entity.GetTypedColumnValue <decimal>("Rate"); string mantissa = CurrencyRateHelper.GetRateMantissa(currencyRate); Entity.SetColumnValue("RateMantissa", mantissa); Entity.SetColumnValue("Rate", Math.Round(currencyRate, dataValueType.DBPrecision, MidpointRounding.AwayFromZero)); } return(true); }
public virtual void OnCurrencySavedHandler() { Store.Cache[CacheLevel.Application].ExpireGroup("Currency"); var currRateSchema = UserConnection.EntitySchemaManager.GetInstanceByName("CurrencyRate"); var currencyRateStorage = Terrasoft.Core.Factories.ClassFactory.Get <Terrasoft.Configuration.CurrencyRateStorage>( new Terrasoft.Core.Factories.ConstructorArgument("userConnection", UserConnection), new Terrasoft.Core.Factories.ConstructorArgument("schema", currRateSchema)); List <CurrencyRateInfo> rates = currencyRateStorage.GetActualCurrencyRates(Entity.PrimaryColumnValue); CurrencyRateInfo currentCurrenyRate = rates.FirstOrDefault(); if (currentCurrenyRate != null) { OldCurrencyRate = CurrencyRateHelper.SetMantissaToRate(currentCurrenyRate.Rate, currentCurrenyRate.RateMantissa); } if (CurrencyRate > 0.00m && OldCurrencyRate != CurrencyRate) { currencyRateStorage.SaveRates(new CurrencyRateInfo() { CurrencyId = Entity.PrimaryColumnValue, Rate = CurrencyRate }); } }