|  | @@ -20,35 +20,35 @@ internal class Update_8_23 : DatabaseUpdateScript
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          CheckDimensions<StockMovement>(_provider);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        var holdings = _provider.Query(
 | 
	
		
			
				|  |  | -            null,
 | 
	
		
			
				|  |  | -            Columns.None<StockHolding>()
 | 
	
		
			
				|  |  | -                .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Job.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.AverageValue)
 | 
	
		
			
				|  |  | -        ).Rows.ToObjects<StockHolding>().ToArray();
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        var instances = _provider.Query(
 | 
	
		
			
				|  |  | -            null,
 | 
	
		
			
				|  |  | -            Columns.None<ProductInstance>()
 | 
	
		
			
				|  |  | -                .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.AverageCost)
 | 
	
		
			
				|  |  | -        ).Rows.ToObjects<ProductInstance>().ToArray();
 | 
	
		
			
				|  |  | +        // var holdings = _provider.Query(
 | 
	
		
			
				|  |  | +        //     null,
 | 
	
		
			
				|  |  | +        //     Columns.None<StockHolding>()
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Job.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.AverageValue)
 | 
	
		
			
				|  |  | +        // ).Rows.ToObjects<StockHolding>().ToArray();
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +        // var instances = _provider.Query(
 | 
	
		
			
				|  |  | +        //     null,
 | 
	
		
			
				|  |  | +        //     Columns.None<ProductInstance>()
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +        //         .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +        //         .Add("AverageCost")
 | 
	
		
			
				|  |  | +        // ).Rows.ToObjects<ProductInstance>().ToArray();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //CheckStockMovementCosts(_provider, holdings, instances);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -66,123 +66,123 @@ internal class Update_8_23 : DatabaseUpdateScript
 | 
	
		
			
				|  |  |      //     }
 | 
	
		
			
				|  |  |      // }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void CheckStockMovementCosts(IProvider provider, StockHolding[] holdings, ProductInstance[] instances)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        var items = provider.Query(
 | 
	
		
			
				|  |  | -            new Filter<StockMovement>(x=>x.Product.ID).IsNotEqualTo(Guid.Empty).And(x=>x.Cost).IsEqualTo(0.0),
 | 
	
		
			
				|  |  | -            Columns.None<StockMovement>()
 | 
	
		
			
				|  |  | -                .Add(x => x.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Job.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Cost)
 | 
	
		
			
				|  |  | -        ).Rows.ToQueue();
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        while (items.Any())
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            Logger.Send(LogType.Information,"",$"Updating {nameof(StockMovement)} Costs ({items.Count} remaining)..");
 | 
	
		
			
				|  |  | -            var updates = items.Dequeue(100).ToObjects<StockMovement>().ToArray();
 | 
	
		
			
				|  |  | -            foreach (var item in updates)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                var holding = holdings.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | -                    Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Location.ID, item.Location.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                );
 | 
	
		
			
				|  |  | -                if (holding != null)
 | 
	
		
			
				|  |  | -                    item.Cost = holding.AverageValue;
 | 
	
		
			
				|  |  | -                else
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    var instance = instances.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | -                        Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | -                        && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | -                        && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                    );
 | 
	
		
			
				|  |  | -                    if (instance != null)
 | 
	
		
			
				|  |  | -                        item.Cost = instance.AverageCost;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            provider.Save(updates.Where(x=>x.IsChanged()));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -       private void CheckRequisitionItemCosts(IProvider provider, StockHolding[] holdings, ProductInstance[] instances)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        var items = provider.Query(
 | 
	
		
			
				|  |  | -            new Filter<RequisitionItem>(x=>x.Product.ID).IsNotEqualTo(Guid.Empty).And(x=>x.Cost).IsEqualTo(0.0),
 | 
	
		
			
				|  |  | -            Columns.None<RequisitionItem>()
 | 
	
		
			
				|  |  | -                .Add(x => x.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.RequisitionLink.JobLink.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | -                .Add(x => x.Cost)
 | 
	
		
			
				|  |  | -        ).Rows.ToObjects<RequisitionItem>().ToQueue();
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        while (items.Any())
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            Logger.Send(LogType.Information,"",$"Updating {nameof(RequisitionItem)} Costs ({items.Count} remaining)..");
 | 
	
		
			
				|  |  | -            var updates = items.Dequeue(100).ToArray();
 | 
	
		
			
				|  |  | -            foreach (var item in updates)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                var holding = holdings.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | -                    Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Location.ID, item.Location.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | -                    && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | -                    && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                );
 | 
	
		
			
				|  |  | -                if (holding != null)
 | 
	
		
			
				|  |  | -                    item.Cost = holding.AverageValue;
 | 
	
		
			
				|  |  | -                else
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    var instance = instances.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | -                        Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | -                        && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | -                        && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | -                        && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | -                    );
 | 
	
		
			
				|  |  | -                    if (instance != null)
 | 
	
		
			
				|  |  | -                        item.Cost = instance.AverageCost;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            provider.Save(updates.Where(x=>x.IsChanged()));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    // private void CheckStockMovementCosts(IProvider provider, StockHolding[] holdings, ProductInstance[] instances)
 | 
	
		
			
				|  |  | +    // {
 | 
	
		
			
				|  |  | +    //     
 | 
	
		
			
				|  |  | +    //     var items = provider.Query(
 | 
	
		
			
				|  |  | +    //         new Filter<StockMovement>(x=>x.Product.ID).IsNotEqualTo(Guid.Empty).And(x=>x.Cost).IsEqualTo(0.0),
 | 
	
		
			
				|  |  | +    //         Columns.None<StockMovement>()
 | 
	
		
			
				|  |  | +    //             .Add(x => x.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Job.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Cost)
 | 
	
		
			
				|  |  | +    //     ).Rows.ToQueue();
 | 
	
		
			
				|  |  | +    //     
 | 
	
		
			
				|  |  | +    //     while (items.Any())
 | 
	
		
			
				|  |  | +    //     {
 | 
	
		
			
				|  |  | +    //         Logger.Send(LogType.Information,"",$"Updating {nameof(StockMovement)} Costs ({items.Count} remaining)..");
 | 
	
		
			
				|  |  | +    //         var updates = items.Dequeue(100).ToObjects<StockMovement>().ToArray();
 | 
	
		
			
				|  |  | +    //         foreach (var item in updates)
 | 
	
		
			
				|  |  | +    //         {
 | 
	
		
			
				|  |  | +    //             var holding = holdings.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | +    //                 Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Location.ID, item.Location.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //             );
 | 
	
		
			
				|  |  | +    //             if (holding != null)
 | 
	
		
			
				|  |  | +    //                 item.Cost = holding.AverageValue;
 | 
	
		
			
				|  |  | +    //             else
 | 
	
		
			
				|  |  | +    //             {
 | 
	
		
			
				|  |  | +    //                 var instance = instances.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | +    //                     Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | +    //                     && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | +    //                     && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //                 );
 | 
	
		
			
				|  |  | +    //                 if (instance != null)
 | 
	
		
			
				|  |  | +    //                     item.Cost = (double)(CoreUtils.GetPropertyValue(instance,"AverageCost") ?? 0.0);
 | 
	
		
			
				|  |  | +    //             }
 | 
	
		
			
				|  |  | +    //         }
 | 
	
		
			
				|  |  | +    //         provider.Save(updates.Where(x=>x.IsChanged()));
 | 
	
		
			
				|  |  | +    //     }
 | 
	
		
			
				|  |  | +    // }
 | 
	
		
			
				|  |  | +    //
 | 
	
		
			
				|  |  | +    //    private void CheckRequisitionItemCosts(IProvider provider, StockHolding[] holdings, ProductInstance[] instances)
 | 
	
		
			
				|  |  | +    // {
 | 
	
		
			
				|  |  | +    //     
 | 
	
		
			
				|  |  | +    //     var items = provider.Query(
 | 
	
		
			
				|  |  | +    //         new Filter<RequisitionItem>(x=>x.Product.ID).IsNotEqualTo(Guid.Empty).And(x=>x.Cost).IsEqualTo(0.0),
 | 
	
		
			
				|  |  | +    //         Columns.None<RequisitionItem>()
 | 
	
		
			
				|  |  | +    //             .Add(x => x.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Location.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Product.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.RequisitionLink.JobLink.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Style.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //             .Add(x => x.Cost)
 | 
	
		
			
				|  |  | +    //     ).Rows.ToObjects<RequisitionItem>().ToQueue();
 | 
	
		
			
				|  |  | +    //     
 | 
	
		
			
				|  |  | +    //     while (items.Any())
 | 
	
		
			
				|  |  | +    //     {
 | 
	
		
			
				|  |  | +    //         Logger.Send(LogType.Information,"",$"Updating {nameof(RequisitionItem)} Costs ({items.Count} remaining)..");
 | 
	
		
			
				|  |  | +    //         var updates = items.Dequeue(100).ToArray();
 | 
	
		
			
				|  |  | +    //         foreach (var item in updates)
 | 
	
		
			
				|  |  | +    //         {
 | 
	
		
			
				|  |  | +    //             var holding = holdings.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | +    //                 Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Location.ID, item.Location.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | +    //                 && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | +    //                 && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //             );
 | 
	
		
			
				|  |  | +    //             if (holding != null)
 | 
	
		
			
				|  |  | +    //                 item.Cost = holding.AverageValue;
 | 
	
		
			
				|  |  | +    //             else
 | 
	
		
			
				|  |  | +    //             {
 | 
	
		
			
				|  |  | +    //                 var instance = instances.FirstOrDefault(x =>
 | 
	
		
			
				|  |  | +    //                     Guid.Equals(x.Product.ID, item.Product.ID)
 | 
	
		
			
				|  |  | +    //                     && Guid.Equals(x.Style.ID, item.Style.ID)
 | 
	
		
			
				|  |  | +    //                     && Guid.Equals(x.Dimensions.Unit.ID, item.Dimensions.Unit.ID)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Length.IsEffectivelyEqual(item.Dimensions.Length)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Width.IsEffectivelyEqual(item.Dimensions.Width)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Height.IsEffectivelyEqual(item.Dimensions.Height)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Weight.IsEffectivelyEqual(item.Dimensions.Weight)
 | 
	
		
			
				|  |  | +    //                     && x.Dimensions.Quantity.IsEffectivelyEqual(item.Dimensions.Quantity)
 | 
	
		
			
				|  |  | +    //                 );
 | 
	
		
			
				|  |  | +    //                 if (instance != null)
 | 
	
		
			
				|  |  | +    //                     item.Cost = (double)(CoreUtils.GetPropertyValue(instance,"AverageCost") ?? 0.0);
 | 
	
		
			
				|  |  | +    //             }
 | 
	
		
			
				|  |  | +    //         }
 | 
	
		
			
				|  |  | +    //         provider.Save(updates.Where(x=>x.IsChanged()));
 | 
	
		
			
				|  |  | +    //     }
 | 
	
		
			
				|  |  | +    // }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      private void CheckDimensions<T>(IProvider provider) where T : StockEntity, new()
 | 
	
		
			
				|  |  |      {
 |