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);
        }
Exemplo n.º 3
0
        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
                });
            }
        }