瀏覽代碼

DESKTOP - staging panel to implement grouping for setouts

Nick-PRSDigital@bitbucket.org 2 年之前
父節點
當前提交
1bab1dbf4f

+ 0 - 32
prs.desktop/Panels/Products/Reservation Management/JobRequisitionReviewGrid.cs

@@ -112,12 +112,8 @@ namespace PRSDesktop
             }
 
             OnFilterSelected += GridOnFilterSelected;
-
-            //Migrate();
         }
 
-        
-
 
         private bool GridOnFilterSelected(DynamicGridFilter filter)
         {
@@ -126,34 +122,6 @@ namespace PRSDesktop
             return true;
         }
 
-        private void Migrate()
-        {
-            CoreTable table = new Client<JobRequisitionItem>().Query(null, new Columns<JobRequisitionItem>(x => x.ID, x => x.PurchaseOrderItem.PurchaseOrderLink.ID));
-            Dictionary<Guid, Guid> reqPOids = new Dictionary<Guid, Guid>();
-            List<JobRequisitionItem> affected = new List<JobRequisitionItem>();
-            foreach (CoreRow row in table.Rows)
-            {
-                var item = row.ToObject<JobRequisitionItem>();
-                if (item.PurchaseOrderItem.PurchaseOrderLink.ID != Guid.Empty)
-                {
-                    reqPOids.Add(row.Get<JobRequisitionItem, Guid>(x => x.ID), item.PurchaseOrderItem.PurchaseOrderLink.ID);
-                    affected.Add(row.ToObject<JobRequisitionItem>());
-                }
-            }
-            List<JobRequisitionItem> list = new List<JobRequisitionItem>();
-            CoreTable POs = new Client<PurchaseOrder>().Query(new Filter<PurchaseOrder>(x => x.ID).InList(reqPOids.Values.ToArray()), new Columns<PurchaseOrder>(x => x.ID, x => x.Created));
-            foreach (CoreRow row in POs.Rows)
-            {
-                var items = affected.Where(x => x.PurchaseOrderItem.PurchaseOrderLink.ID == row.Get<PurchaseOrder, Guid>(x => x.ID));
-                foreach (var item in items)
-                {
-                    item.Ordered = row.Get<PurchaseOrder, DateTime>(x => x.Created);
-                    list.Add(item);
-                }
-            }
-            new Client<JobRequisitionItem>().Save(list, "Migrate");
-        }
-
         private void LoadStockMovements()
         {
             CoreTable table = new Client<StockMovement>().Query(

+ 46 - 1
prs.desktop/Panels/Staging/Setouts/StagingSetoutGrid.cs

@@ -1,8 +1,10 @@
 using Comal.Classes;
+using Comal.Classes.Entities;
 using InABox.Clients;
 using InABox.Core;
 using InABox.DynamicGrid;
 using javax.print.attribute.standard;
+using Syncfusion.UI.Xaml.Grid;
 using System;
 using System.Collections.Generic;
 using System.IO;
@@ -10,6 +12,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows;
+using System.Windows.Controls;
 
 namespace PRSDesktop
 {
@@ -23,14 +26,56 @@ namespace PRSDesktop
         {
             HiddenColumns.Add(x => x.Setout.ID);
             HiddenColumns.Add(x => x.JobLink.ID);
+            HiddenColumns.Add(x => x.Group.ID);
             Options.Add(DynamicGridOption.FilterRows);
             Options.Add(DynamicGridOption.SelectColumns);
             Options.Add(DynamicGridOption.RecordCount);
+            Options.Remove(DynamicGridOption.ImportData);
 
             if (Security.IsAllowed<CanApproveSetouts>())
                 Options.Add(DynamicGridOption.DeleteRows);
 
             LoadJobs();
+
+            AddButton("Create Group", null, CreateGroup);
+        }
+
+        private bool CreateGroup(Button arg1, CoreRow[] rows)
+        {
+            if (!rows.Any())
+            {
+                MessageBox.Show("Please select at least one row to add to group");
+                return false;
+            }
+
+            List<StagingSetout> list = new List<StagingSetout>();
+            foreach (var row in rows)
+                list.Add(row.ToObject<StagingSetout>());
+
+            string message = "";
+            foreach (var staging in list)
+                message = message + staging.Number + Environment.NewLine;
+
+            if (MessageBox.Show("Create group for the following items?" + Environment.NewLine + message, "Proceed?", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
+                return false;
+
+            var group = new SetoutGroup();
+            var page = new DynamicDataGrid<SetoutGroup>();
+            page.OnAfterSave += (editor, items) => 
+            {
+                foreach (var staging in list)
+                { 
+                    staging.Group.ID = group.ID;
+                }
+                new Client<StagingSetout>().Save(list, "Updated group");
+                Refresh(false, true);
+            };
+            return page.EditItems(new[] { group });
+        }
+
+        private void Page_OnAfterSave(IDynamicEditorForm editor, BaseObject[] items)
+        {
+           
         }
 
         private void LoadJobs()
@@ -189,7 +234,7 @@ namespace PRSDesktop
                 }
             }
             else
-                MessageBox.Show("Could not find file!");  
+                MessageBox.Show("Could not find file!");
         }
     }
 }

+ 4 - 4
prs.desktop/Panels/Staging/StagingPanel.xaml

@@ -8,10 +8,10 @@
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800">
 
-    <dynamicgrid:DynamicSplitPanel x:Name="mainPanel" View="Combined" MasterCaption="Setouts Folder" AnchorWidth="250">
+    <dynamicgrid:DynamicSplitPanel x:Name="mainPanel" View="Combined" MasterCaption="Setouts Folder" AnchorWidth="500">
 
         <dynamicgrid:DynamicSplitPanel.Master>
-            <local:StagingSetoutGrid x:Name="stagingSetoutGrid"/>
+            <local:StagingSetoutGrid Grid.Column="0" x:Name="stagingSetoutGrid"/>
         </dynamicgrid:DynamicSplitPanel.Master>
             
         <dynamicgrid:DynamicSplitPanel.Detail>
@@ -38,8 +38,8 @@
                                 <RowDefinition Height="auto"/>
                                 <RowDefinition Height="*"/>
                             </Grid.RowDefinitions>
-                            <Label Grid.Row="0" Content="Manufacturing Packets" FontWeight="DemiBold" HorizontalAlignment="Center"/>
-                            <local:ManufacturingPacketApprovalControl Grid.Row="1" x:Name="manufacturingControl"/>
+                            <Label Grid.Row="0" Content="Manufacturing Packets" FontWeight="DemiBold" HorizontalAlignment="Center" Visibility="Hidden"/>
+                            <local:ManufacturingPacketApprovalControl Grid.Row="1" x:Name="manufacturingControl" Visibility="Hidden"/>
                         </Grid>
                     </Border>
                 </dynamicgrid:DynamicSplitPanel.Detail>

+ 23 - 7
prs.desktop/Panels/Staging/StagingPanel.xaml.cs

@@ -49,6 +49,21 @@ namespace PRSDesktop
         }
         private void DocumentPreviewer_OnApproved(IEntityDocument stagingsetoutdocument)
         {
+            if (_item.Group.ID == Guid.Empty)
+            {
+                var message = "Setout has no group assigned";
+                if (Security.IsAllowed<CanApproveSetoutsWithoutGroup>())
+                {
+                    if (MessageBox.Show(message + ", continue?", "Continue?", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
+                        return;
+                }
+                else
+                {
+                    MessageBox.Show(message + ", please assign a group!");
+                    return;
+                }
+            }
+
             var table = new Client<Setout>().Query(new Filter<Setout>(x => x.Number).IsEqualTo(_item.Number),
                 new Columns<Setout>(x => x.ID));
 
@@ -61,6 +76,8 @@ namespace PRSDesktop
 
                 setout = table.Rows.FirstOrDefault().ToObject<Setout>();
 
+                setout.Group.ID = _item.Group.ID;
+
                 _item.Setout.ID = setout.ID;
 
                 var setoutdoc = new SetoutDocument();
@@ -83,6 +100,7 @@ namespace PRSDesktop
                     }
                 }
                 new Client<SetoutDocument>().Save(setoutdocs, "Updated from Staging Screen");
+                new Client<Setout>().Save(setout, "Updated from Staging Screen");
 
                 MessageBox.Show("Document for setout " + _item.Number + " superceded.", "Success");
 
@@ -92,12 +110,9 @@ namespace PRSDesktop
             //no setout for this pdf - create new
             else
             {
-                if (manufacturingControl.Data.Rows.Count == 0)
-                    if (MessageBox.Show("No Packets created for this setout. Continue?", "Proceed?", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
-                        return;
-
                 setout.Number = _item.Number;
                 setout.JobLink.ID = _item.JobLink.ID;
+                setout.Group.ID = _item.Group.ID;
 
                 var editor = new DynamicDataGrid<Setout>();
                 editor.OnAfterSave += (editor, items) =>
@@ -122,7 +137,8 @@ namespace PRSDesktop
                 }
             }
 
-            CreatePackets(setout);
+            //currently not creating packets due to temporary change in requirements - to uncomment and check for validity when required
+            //CreatePackets(setout);
         }
 
         private void CreatePackets(Setout setout)
@@ -193,7 +209,7 @@ namespace PRSDesktop
 
         private void CreateComponents(Guid stagingPacketID, Guid packetID, Dictionary<StagingManufacturingPacketComponent, ManufacturingPacketComponent> stagingToActualComponents)
         {
-           var components = new List<ManufacturingPacketComponent>();
+            var components = new List<ManufacturingPacketComponent>();
             CoreTable table = new Client<StagingManufacturingPacketComponent>().Query(
                 new Filter<StagingManufacturingPacketComponent>(x => x.StagingPacket.ID).IsEqualTo(stagingPacketID)
                 .And(x => x.ComponentID).IsEqualTo(Guid.Empty),
@@ -205,7 +221,7 @@ namespace PRSDesktop
                     x => x.Width
                 ));
             foreach (var row in table.Rows)
-            { 
+            {
                 var stagingComponent = row.ToObject<StagingManufacturingPacketComponent>();
                 var component = stagingComponent.CreateComponent(packetID);
                 components.Add(component);