using Comal.Classes; using Comal.Stores; using InABox.Clients; using InABox.Core; namespace PRSStores; public class ForeignCurrencyStore : BaseStore { protected override void AfterSave(ForeignCurrency entity) { base.AfterSave(entity); var queue = Provider.Query( new Filter(x => x.SupplierLink.Currency.ID).IsEqualTo(entity.ID), Columns.None() .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().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())); } } }