|
@@ -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()
|
|
|
{
|