| 12345678910111213141516171819202122232425262728293031323334353637383940 | using Comal.Classes;using Comal.Stores;using InABox.Clients;using InABox.Core;namespace PRSStores;public class ForeignCurrencyStore : BaseStore<ForeignCurrency>{    protected override void AfterSave(ForeignCurrency entity)    {        base.AfterSave(entity);        var queue = Provider.Query(            new Filter<SupplierProduct>(x => x.SupplierLink.Currency.ID).IsEqualTo(entity.ID),            Columns.None<SupplierProduct>()                .Add(x => x.ID)                .Add(x=>x.SupplierLink.Currency.ID)                .Add(x => x.SupplierLink.Currency.ExchangeRate)                .Add(x => x.TaxCode.ID)                .Add(x => x.ForeignCurrencyPrice)                .Add(x => x.TradePrice)                .Add(x => x.Discount)                .Add(x => x.CostPrice)        ).ToObjects<SupplierProduct>().ToQueue();        while (queue.Any())        {            var products = queue.Dequeue(100).ToArray();            foreach (var product in products)            {                var price = product.ForeignCurrencyPrice;                if (price.IsEffectivelyEqual(0.0))                    price = product.TradePrice * product.SupplierLink.Currency.ExchangeRate;                product.ForeignCurrencyPrice = 0.0;                product.CommitChanges();                product.ForeignCurrencyPrice = price;            }            Provider.Save(products.Where(x=>x.IsChanged()));        }    }}
 |