Переглянути джерело

Merge remote-tracking branch 'origin/kenric' into frank

frogsoftware 1 рік тому
батько
коміт
0b980bb9a6

+ 3 - 3
prs.classes/EnclosedEntities/Dimensions/Dimensions.cs

@@ -69,15 +69,15 @@ namespace Comal.Classes
             {
                 if (e.PropertyName == "ID")
                 {
-                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.ID);
+                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValueList.GetValueOrDefault("Unit." + e.PropertyName), Unit.ID);
                 }
                 else if (e.PropertyName == "Formula")
                 {
-                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.Formula);
+                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValueList.GetValueOrDefault("Unit." + e.PropertyName), Unit.Formula);
                 }
                 else if (e.PropertyName == "Format")
                 {
-                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.Format);
+                    DoPropertyChanged("Unit." + e.PropertyName, OriginalValueList.GetValueOrDefault("Unit." + e.PropertyName), Unit.Format);
                 }
             };
         }

+ 1 - 0
prs.classes/Entities/Stock/StockMovement/StockMovement.cs

@@ -79,6 +79,7 @@ namespace Comal.Classes
         [EntityRelationship(DeleteAction.SetNull)]
         public ProductStyleLink Style { get; set; }
         
+        // Allowed to be negative.
         [DoubleEditor(Summary = Summary.Sum)]
         [EditorSequence(4)]
         public double Received { get; set; }

+ 2 - 0
prs.desktop/Panels/Factory/FactoryPackGrid.cs

@@ -418,6 +418,8 @@ public class FactoryPackGrid : DynamicDataGrid<StockHolding>
             var requi = ffi.RequisitionItems.FirstOrDefault(x => x.ID == id);
             if (requi == null)
                 errors.Add("Please select an allocation!");
+            else if (ffi.Qty < 0)
+                errors.Add($"Qty must not be less than 0");
             else if (ffi.Qty > requi.Qty)
                 errors.Add($"Qty must not exceed {requi.Qty}");
         };

+ 4 - 15
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -362,22 +362,11 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
             min.Date = mout.Date;
             min.Transaction = mout.Transaction;
 
-            if(qty.Value > 0)
-            {
-                mout.Issued = qty.Value;
-                mout.Type = StockMovementType.TransferOut;
-
-                min.Received = qty.Value;
-                min.Type = StockMovementType.TransferIn;
-            }
-            else
-            {
-                min.Issued = -qty.Value;
-                min.Type = StockMovementType.TransferOut;
+            mout.Issued = qty.Value;
+            mout.Type = StockMovementType.TransferOut;
 
-                mout.Received = -qty.Value;
-                mout.Type = StockMovementType.TransferIn;
-            }
+            min.Received = qty.Value;
+            min.Type = StockMovementType.TransferIn;
 
             modify(requi, mout, min);
 

+ 5 - 0
prs.desktop/Panels/Products/Locations/StockTransformWindow.xaml

@@ -73,6 +73,7 @@
             IsReadOnly="True"/>
         <syncfusion:DoubleTextBox
             Value="{Binding NewDimensions.Height, Mode=TwoWay}"
+            MinValue="0"
             Grid.Row="1"
             Grid.Column="2"
             Margin="5,5,0,0"
@@ -103,6 +104,7 @@
             IsReadOnly="True"/>
         <syncfusion:DoubleTextBox
             Value="{Binding NewDimensions.Width, Mode=TwoWay}"
+            MinValue="0"
             Grid.Row="2"
             Grid.Column="2"
             Margin="5,5,0,0"
@@ -133,6 +135,7 @@
             IsReadOnly="True"/>
         <syncfusion:DoubleTextBox
             Value="{Binding NewDimensions.Length, Mode=TwoWay}"
+            MinValue="0"
             Grid.Row="3"
             Grid.Column="2"
             Margin="5,5,0,0"
@@ -163,6 +166,7 @@
             IsReadOnly="True"/>
         <syncfusion:DoubleTextBox
             Value="{Binding NewDimensions.Quantity, Mode=TwoWay}"
+            MinValue="0"
             Grid.Row="4"
             Grid.Column="2"
             Margin="5,5,0,0"
@@ -193,6 +197,7 @@
             IsReadOnly="True"/>
         <syncfusion:DoubleTextBox
             Value="{Binding NewDimensions.Weight, Mode=TwoWay}"
+            MinValue="0"
             Grid.Row="5"
             Grid.Column="2"
             Margin="5,5,0,0"

+ 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);

+ 1 - 1
prs.shared/Database Update Scripts/Update_7_31.cs

@@ -23,7 +23,7 @@ namespace PRS.Shared
                 foreach (var item in items)
                 {
                     item.PostedStatus = PostedStatus.NeverPosted;
-                    item.OriginalValues.TryAdd("PostedStatus", null);
+                    item.OriginalValueList.TryAdd("PostedStatus", null);
                 }
                 DbFactory.NewProvider(Logger.Main).Save(items);
                 Logger.Send(LogType.Information, "", $"{items.Count} {typeof(T).Name}s processed");

+ 1 - 1
prs.stores/KanbanStore.cs

@@ -120,7 +120,7 @@ namespace Comal.Stores
             {
                 sb.AppendLine();
                 sb.AppendLine(string.Format("- The due date for the task has been changed from {0} to {1}.",
-                    entity.OriginalValues["DueDate"],
+                    entity.OriginalValueList["DueDate"],
                     entity.DueDate));
             }
             if (entity.HasOriginalValue(x => x.Notes) && entity.Notes.Count() > 1)

+ 2 - 2
prs.stores/ProductStore.cs

@@ -32,13 +32,13 @@ namespace Comal.Stores
                 .ToObjects<ProductDimensionUnit>().FirstOrDefault() ?? new ProductDimensionUnit();
             foreach (var _stockentitytype in _stockentitytypes)
             {
-                var _children = (Provider.Query(
+                var _children = Provider.Query(
                     _stockentitytype,
                     new Filter<StockEntity>(x => x.Product.ID).IsEqualTo(entity.ID),
                     Columns.None<StockEntity>()
                         .Add(x => x.ID)
                         .AddSubColumns(x => x.Dimensions, null)
-                ).ToArray(_stockentitytype) as StockEntity[])!;
+                ).ToArray(_stockentitytype).Cast<StockEntity>().ToArray();
                 foreach (var _child in _children)
                     _child.Dimensions.Unit.CopyFrom(_uom);
                 Provider.Save(_stockentitytype, _children.Where(x => x.IsChanged()));