Explorar o código

Added Treatment PO settings

Kenric Nugteren hai 2 semanas
pai
achega
e2dafdce9f

+ 16 - 0
prs.classes/Settings/TreatmentPOSettings.cs

@@ -0,0 +1,16 @@
+using InABox.Configuration;
+using InABox.Core;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Comal.Classes
+{
+    public class TreatmentPOSettings : BaseObject, IGlobalConfigurationSettings
+    {
+        [Comment("Default purchase order category to use for treatment purchase orders")]
+        [Caption("Treatment PO Category")]
+        [EditorSequence(6)]
+        public PurchaseOrderCategoryLink DefaultTreatmentPurchaseOrderCategory { get; set; }
+    }
+}

+ 3 - 0
prs.desktop/Panels/Factory/FactoryPanel.xaml.cs

@@ -297,6 +297,8 @@ namespace PRSDesktop
 
             Progress.Show("Creating Purchase Order");
 
+            var treatmentPOSettings = new GlobalConfiguration<TreatmentPOSettings>().Load();
+
             var order = new PurchaseOrder();
             order.Supplier.ID = window.SupplierID;
             order.Supplier.Name = window.SupplierName; //supplier != null ? supplier.Name : "Unknown Supplier";
@@ -304,6 +306,7 @@ namespace PRSDesktop
             order.IssuedBy.ID = App.EmployeeID;
             order.IssuedDate = DateTime.Today;
             order.DueDate = DateTime.Today.AddDays(7);
+            order.Category.CopyFrom(treatmentPOSettings.DefaultTreatmentPurchaseOrderCategory);
             Client.Save(order, $"Materials Processing Request raised by {App.EmployeeName} from Factory Floor");
 
             Progress.SetMessage("Processing Order");

+ 14 - 1
prs.desktop/Panels/Reservation Management/ReservationManagementPanel.xaml.cs

@@ -13,6 +13,7 @@ using InABox.Wpf;
 using Columns = InABox.Core.Columns;
 using PRSDesktop.Panels.ReservationManagement.TreatmentPO;
 using Syncfusion.UI.Xaml.Grid;
+using PRSDimensionUtils;
 
 namespace PRSDesktop;
 
@@ -48,7 +49,16 @@ public partial class ReservationManagementPanel : UserControl, IPanel<JobRequisi
         host.CreateSetupAction(new PanelAction() { Caption = "Reservation Management Settings", Image = PRSDesktop.Resources.specifications, OnExecute = ConfigSettingsClick });
 
         if (Security.IsAllowed<CanCreateTreatmentPO>())
-          host.CreatePanelAction(new PanelAction("Treatment PO", PRSDesktop.Resources.purchase, TreatmentPO_Click));
+            host.CreatePanelAction(new PanelAction("Treatment PO", PRSDesktop.Resources.purchase, TreatmentPO_Click));
+        host.CreateSetupActionIf<CanCreateTreatmentPO>("Treatment PO settings", PRSDesktop.Resources.purchase, (action) =>
+        {
+            var config = new GlobalConfiguration<TreatmentPOSettings>();
+            var settings = config.Load();
+            if(DynamicGridUtils.EditObject(settings))
+            {
+                config.Save(settings);
+            }
+        });
     }
 
     private void ConfigSettingsClick(PanelAction obj)
@@ -333,6 +343,8 @@ public partial class ReservationManagementPanel : UserControl, IPanel<JobRequisi
                 window?.AfterSave();
             };
 
+            var treatmentPOSettings = new GlobalConfiguration<TreatmentPOSettings>().Load();
+
             foreach(var (supplierID, perSupplier) in results)
             {
                 var order = perSupplier.First().PurchaseOrder;
@@ -345,6 +357,7 @@ public partial class ReservationManagementPanel : UserControl, IPanel<JobRequisi
                     order.Notes = [$"Treatment purchase order raised by {App.EmployeeName} from Reservation Management screen"];
 
                     LookupFactory.DoLookup<PurchaseOrder, Supplier, SupplierLink>(order, x => x.Supplier, supplierID);
+                    LookupFactory.DoLookup<PurchaseOrder, PurchaseOrderCategory, PurchaseOrderCategoryLink>(order, x => x.Category, treatmentPOSettings.DefaultTreatmentPurchaseOrderCategory.ID);
                 }
                 else
                 {

+ 10 - 0
prs.desktop/Setups/ManufacturingSetupActions.cs

@@ -1,4 +1,5 @@
 using Comal.Classes;
+using InABox.Configuration;
 using InABox.DynamicGrid;
 using InABox.Wpf;
 using PRSDesktop.Components.Spreadsheet;
@@ -33,5 +34,14 @@ public static class ManufacturingSetupActions
             var list = new MasterList(typeof(ManufacturingLostTime));
             list.ShowDialog();
         });
+        host.CreateSetupActionIf<CanCreateTreatmentPO>("Treatment PO settings", PRSDesktop.Resources.purchase, (action) =>
+        {
+            var config = new GlobalConfiguration<TreatmentPOSettings>();
+            var settings = config.Load();
+            if(DynamicGridUtils.EditObject(settings))
+            {
+                config.Save(settings);
+            }
+        });
     }
 }