Explorar o código

Fixing logic for StockForecastGrid

Kenric Nugteren hai 1 ano
pai
achega
a876db34ea
Modificáronse 1 ficheiros con 18 adicións e 11 borrados
  1. 18 11
      prs.desktop/Panels/Stock Forecast/StockForecastGrid.cs

+ 18 - 11
prs.desktop/Panels/Stock Forecast/StockForecastGrid.cs

@@ -4,7 +4,6 @@ using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.Wpf;
 using InABox.WPF;
-using jdk.nashorn.@internal.ir;
 using PRSDesktop.Panels.StockForecast.OrderScreen;
 using System;
 using System.Collections.Generic;
@@ -53,7 +52,7 @@ public class StockForecastItem : BaseObject
     public void AddJobBOM(Guid jobID, double quantity)
     {
         var item = JobInfo.GetValueOrAdd(jobID);
-        item.BOM = Math.Max(0.0, item.BOM + quantity);
+        item.BOM += quantity;
     }
     public void AddJobPO(Guid jobID, double quantity)
     {
@@ -827,22 +826,30 @@ public class StockForecastGrid : DynamicItemsListGrid<StockForecastItem>, IDataM
                     var key = GetKey(bomItem);
                     var item = GetItem(key);
 
-                    item.JobBOM = Math.Max(0.0, item.JobBOM + bomItem.Get<JobBillOfMaterialsItem, double>(x => x.Quantity));
                     item.AddJobBOM(bomItem.Get<JobBillOfMaterialsItem, Guid>(x => x.Job.ID), bomItem.Get<JobBillOfMaterialsItem, double>(x => x.Quantity));
                 }
 
-                // var movements = results.Get<StockMovement>();
-                // foreach(var mvt in movements.Rows)
-                // {
-                //     var item = GetItem(GetKey(mvt));
-                //
-                //     item.JobBOM = Math.Max(0.0, item.JobBOM + mvt.Get<StockMovement, double>(x => x.Units));
-                //     item.AddJobBOM(mvt.Get<StockMovement, Guid>(x => x.Job.ID), mvt.Get<StockMovement, double>(x => x.Units));
-                // }
+                var movements = results.Get<StockMovement>();
+                foreach(var mvt in movements.Rows)
+                {
+                    var item = GetItem(GetKey(mvt));
+                
+                    item.AddJobBOM(mvt.Get<StockMovement, Guid>(x => x.Job.ID), mvt.Get<StockMovement, double>(x => x.Units));
+                }
 
                 _supplierProducts = results.GetArray<SupplierProduct>();
 
                 Items = items.Values.ToList();
+
+                foreach(var item in Items)
+                {
+                    foreach(var (job, info) in item.JobInfo)
+                    {
+                        info.BOM = Math.Max(info.BOM, 0.0);
+                    }
+                    item.JobBOM = item.JobInfo.Sum(x => x.Value.BOM);
+                }
+
                 Items.LoadForeignProperties(columns);
                 Items.Sort((a, b) => a.Product.Code.CompareTo(b.Product.Code));
                 //Items.Sort(x => x.Product.Code);