Explorar el Código

Fixed Crash in Employee Spreadsheets when no employee selected
Added Column Selection and Filtering to Job Form Grid
Added Order History to Product Details Grid

frogsoftware hace 1 año
padre
commit
2fe54d6182

+ 1 - 1
prs.desktop/Components/Spreadsheet/SpreadsheetGrid.cs

@@ -170,7 +170,7 @@ namespace PRSDesktop
         protected override void Reload(Filters<TSpreadsheet> criteria, Columns<TSpreadsheet> columns, ref SortOrder<TSpreadsheet>? sort,
             Action<CoreTable?, Exception?> action)
         {
-            if ((Entity.ID == Guid.Empty) || (Entity.ID == CoreUtils.FullGuid))
+            if ((Entity == null) || (Entity.ID == Guid.Empty) || (Entity.ID == CoreUtils.FullGuid))
                 criteria.Add(new Filter<TSpreadsheet>(x => x.ID).None());
             else
                 criteria.Add(new Filter<TSpreadsheet>(x => x.Parent.ID).IsEqualTo(Entity.ID));

+ 37 - 0
prs.desktop/Panels/Jobs/JobFormDefinitionGrid.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Linq;
+using System.Windows.Controls;
+using Comal.Classes;
+using InABox.Clients;
+using InABox.Core;
+using InABox.DynamicGrid;
+
+namespace PRSDesktop;
+
+public class JobFormDefinitionGrid : DynamicManyToManyGrid<JobFormDefinition, Job>
+{
+    public JobFormDefinitionGrid()
+    {
+        AddButton("Add All", null, AddAllClick);
+    }
+
+    private bool AddAllClick(Button arg1, CoreRow[] arg2)
+    {
+        var existingforms = ExtractValues(x => x.Form.ID, Selection.All).ToArray();
+        var newforms = new Client<DigitalForm>().Query(
+            new Filter<DigitalForm>(x => x.Active).IsEqualTo(true)
+                .And(x => x.AppliesTo).IsEqualTo("Job")
+                .And(x => x.ID).NotInList(existingforms)
+        );
+        foreach (var row in newforms.Rows)
+        {
+            var newitem = CreateItem();
+            newitem.Job.ID = Item.ID;
+            newitem.Form.ID = row.Get<DigitalForm, Guid>(x => x.ID);
+            newitem.Form.Synchronise(row.ToObject<DigitalForm>());
+            SaveItem(newitem);
+        }
+
+        return true;
+    }
+}

+ 10 - 30
prs.desktop/Panels/Jobs/JobFormGrid.cs

@@ -1,8 +1,6 @@
 using System;
 using System.Linq;
-using System.Windows.Controls;
 using Comal.Classes;
-using InABox.Clients;
 using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.WPF;
@@ -26,6 +24,16 @@ namespace PRSDesktop
             ActionColumns.Add(new DynamicImageColumn(PRSDesktop.Resources.pencil.AsBitmapImage(), EditAction));
         }
 
+        protected override void DoReconfigure(FluentList<DynamicGridOption> options)
+        {
+            base.DoReconfigure(options);
+            options
+                .BeginUpdate()
+                .Add(DynamicGridOption.SelectColumns)
+                .Add(DynamicGridOption.FilterRows)
+                .EndUpdate();
+        }
+
         public Job Job { get; set; }
         
         public JobPanelSettings Settings { get; set; }
@@ -57,32 +65,4 @@ namespace PRSDesktop
             return result;
         }
     }
-
-    public class JobFormDefinitionGrid : DynamicManyToManyGrid<JobFormDefinition, Job>
-    {
-        public JobFormDefinitionGrid()
-        {
-            AddButton("Add All", null, AddAllClick);
-        }
-
-        private bool AddAllClick(Button arg1, CoreRow[] arg2)
-        {
-            var existingforms = ExtractValues(x => x.Form.ID, Selection.All).ToArray();
-            var newforms = new Client<DigitalForm>().Query(
-                new Filter<DigitalForm>(x => x.Active).IsEqualTo(true)
-                    .And(x => x.AppliesTo).IsEqualTo("Job")
-                    .And(x => x.ID).NotInList(existingforms)
-            );
-            foreach (var row in newforms.Rows)
-            {
-                var newitem = CreateItem();
-                newitem.Job.ID = Item.ID;
-                newitem.Form.ID = row.Get<DigitalForm, Guid>(x => x.ID);
-                newitem.Form.Synchronise(row.ToObject<DigitalForm>());
-                SaveItem(newitem);
-            }
-
-            return true;
-        }
-    }
 }

+ 32 - 0
prs.desktop/Panels/Products/Master List/ProductOrderSummaryControl.cs

@@ -0,0 +1,32 @@
+using System;
+using Comal.Classes;
+using InABox.Core;
+using InABox.DynamicGrid;
+
+namespace PRSDesktop;
+
+public class ProductOrderSummaryControl : DynamicDataGrid<PurchaseOrderItem>, IProductControl
+{
+    public ProductOrderSummaryControl()
+    {
+        ColumnsTag = "ProductOrderSummary";
+    }
+    protected override void DoReconfigure(FluentList<DynamicGridOption> options)
+    {
+        base.DoReconfigure(options);
+        options
+            .BeginUpdate()
+            .Add(DynamicGridOption.SelectColumns)
+            .Add(DynamicGridOption.FilterRows)
+            .EndUpdate();
+    }
+
+    public Product Product { get; set; }
+
+    protected override void Reload(Filters<PurchaseOrderItem> criteria, Columns<PurchaseOrderItem> columns, ref SortOrder<PurchaseOrderItem>? sort,
+        Action<CoreTable?, Exception?> action)
+    {
+        criteria.Add(new Filter<PurchaseOrderItem>(x => x.Product.ID).IsEqualTo(Product.ID));
+        base.Reload(criteria, columns, ref sort, action);
+    }
+}

+ 4 - 0
prs.desktop/Panels/Products/Master List/ProductsPanel.xaml

@@ -40,6 +40,10 @@
                         <local:ProductMovementSummaryControl x:Name="ProductMovements" UseWaitCursor="false" />
                     </dynamicgrid:DynamicTabItem>
                     
+                    <dynamicgrid:DynamicTabItem x:Name="Orders" Header="Orders">
+                        <local:ProductOrderSummaryControl x:Name="ProductOrders" UseWaitCursor="false" />
+                    </dynamicgrid:DynamicTabItem>
+                    
                     <dynamicgrid:DynamicTabItem x:Name="Kits" Header="Kits">
                         <local:ProductKitControl x:Name="ProductKits" UseWaitCursor="false" />
                     </dynamicgrid:DynamicTabItem>

+ 1 - 0
prs.desktop/Panels/Products/Master List/ProductsPanel.xaml.cs

@@ -34,6 +34,7 @@ namespace PRSDesktop
             InitializeComponent();
             Holdings.Visibility = Security.CanView<StockLocation>() ? Visibility.Visible : Visibility.Collapsed;
             Movements.Visibility = Security.CanView<StockMovement>() ? Visibility.Visible : Visibility.Collapsed;
+            Movements.Visibility = Security.CanView<PurchaseOrderItem>() ? Visibility.Visible : Visibility.Collapsed;
             Suppliers.Visibility = Security.CanView<Supplier>() ? Visibility.Visible : Visibility.Collapsed;
             Customers.Visibility = Security.CanView<Customer>() ? Visibility.Visible : Visibility.Collapsed;
 

+ 1 - 1
prs.desktop/prsdesktop.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Desktop"
-#define MyAppVersion "7.33a"
+#define MyAppVersion "7.34c"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSDesktop.exe"

+ 1 - 1
prs.server/PRSServer.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Server"
-#define MyAppVersion "7.33a"
+#define MyAppVersion "7.34c"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSServer.exe"