ソースを参照

JobSummaryGrid now calculates with Dimension.Value

Kenric Nugteren 2 週間 前
コミット
9763c428e2
1 ファイル変更40 行追加1 行削除
  1. 40 1
      prs.desktop/Panels/Jobs/Summary/JobSummaryGrid.cs

+ 40 - 1
prs.desktop/Panels/Jobs/Summary/JobSummaryGrid.cs

@@ -209,6 +209,7 @@ internal class JobSummaryGrid : DynamicDataGrid<JobMaterial>, IMasterDetailContr
         HiddenColumns.Add(x => x.Product.ID);
         HiddenColumns.Add(x => x.Style.ID);
         HiddenColumns.Add(x => x.Dimensions.UnitSize);
+        HiddenColumns.Add(x => x.Dimensions.Value);
 
         HiddenColumns.Add(x => x.BillOfMaterials);
         HiddenColumns.Add(x => x.Requisitions);
@@ -260,6 +261,25 @@ internal class JobSummaryGrid : DynamicDataGrid<JobMaterial>, IMasterDetailContr
         return VisibleColumns.Any(x => x.ColumnName.StartsWith(dimColumn));
     }
 
+    private bool? _hasUnitSize;
+    private bool UnitSizeColumnVisible()
+    {
+        if (_hasUnitSize.HasValue)
+        {
+            return _hasUnitSize.Value;
+        }
+        var dimColumn = CoreUtils.GetFullPropertyName<JobMaterial, string>(x => x.Dimensions.UnitSize, ".");
+
+        _hasUnitSize = VisibleColumns.Any(x => x.ColumnName.Equals(dimColumn));
+        return _hasUnitSize.Value;
+    }
+
+    protected override DynamicGridColumns LoadColumns()
+    {
+        _hasUnitSize = null;
+        return base.LoadColumns();
+    }
+
     public override DynamicGridColumns GenerateColumns()
     {
         var columns = new DynamicGridColumns();
@@ -751,14 +771,33 @@ internal class JobSummaryGrid : DynamicDataGrid<JobMaterial>, IMasterDetailContr
 
                     var hasStyle = StyleColumnVisible();
                     var hasDimensions = DimensionsColumnVisible();
+                    var hasUnitSize = UnitSizeColumnVisible();
                     var keys = GetKeys(data.Rows, columns, hasStyle, hasDimensions);
 
                     foreach (var key in keys)
                     {
 
                         var rows = GetRows(data.Rows, columns, key.JobID, key);
-                        if (rows.Any())
+                        if (rows.Length != 0)
                         {
+                            if (!hasUnitSize)
+                            {
+                                foreach(var row in rows)
+                                {
+                                    var multFactor = row.Get<JobMaterial, double>(x => x.Dimensions.Value);
+                                    row.Update<JobMaterial, double>(x => x.BillOfMaterials, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.Requisitions, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.PickingLists, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.Issued, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.ReservedStock, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.OnOrder, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.JobShortage, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.FreeOnHand, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.FreeOnOrder, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.FreeStockTotal, x => x * multFactor);
+                                    row.Update<JobMaterial, double>(x => x.FreeStockShortage, x => x * multFactor);
+                                }
+                            }
 
                             CoreRow newrow = table.NewRow();
                             newrow.LoadValues(rows.First().Values);