Browse Source

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

frogsoftware 1 year ago
parent
commit
549a5f4d4b

+ 16 - 11
prs.classes/Entities/PurchaseOrder/PurchaseOrderItem.cs

@@ -247,21 +247,26 @@ namespace Comal.Classes
             if (bChanging)
                 return;
 
-            bChanging = true;
-
-            if (qty.IsEqualTo(name))
-                ExTax = (double)after /* * Dimensions.Value */ * Cost;
+            try
+            {
+                bChanging = true;
 
-            else if (cost.IsEqualTo(name))
-                ExTax = Qty /* * Dimensions.Value */ * (double)after;
+                if (qty.IsEqualTo(name))
+                    ExTax = (double)after /* * Dimensions.Value */ * Cost;
 
-            else if (inctax.IsEqualTo(name))
-                Balance = ReceivedDate.IsEmpty() ? (double)after : 0.00F;
+                else if (cost.IsEqualTo(name))
+                    ExTax = Qty /* * Dimensions.Value */ * (double)after;
 
-            else if (received.IsEqualTo(name))
-                Balance = ((DateTime)after).IsEmpty() ? IncTax : 0.00F;
+                else if (inctax.IsEqualTo(name))
+                    Balance = ReceivedDate.IsEmpty() ? (double)after : 0.00F;
 
-            bChanging = false;
+                else if (received.IsEqualTo(name))
+                    Balance = ((DateTime)after).IsEmpty() ? IncTax : 0.00F;
+            }
+            finally
+            {
+                bChanging = false;
+            }
             base.DoPropertyChanged(name, before, after);
         }
     }

+ 9 - 2
prs.desktop/Panels/Factory/FactoryPanel.xaml.cs

@@ -1186,8 +1186,15 @@ namespace PRSDesktop
                 if (stage != null)
                 {
                     stage.Completed = DateTime.Now;
-                    stage.FormCompleted = DateTime.Now;
-                    stage.FormCompletedBy.ID = ClientFactory.UserGuid;
+                    if(stage.Form.ID == Guid.Empty)
+                    {
+                        stage.Form.ID = CurrentSection.QAForm.ID;
+                    }
+                    if(stage.Form.ID != Guid.Empty)
+                    {
+                        stage.FormCompleted = DateTime.Now;
+                        stage.FormCompletedBy.ID = ClientFactory.UserGuid;
+                    }
                     stage.PercentageComplete = 100.0F;
                     if (!stage_updates.Contains(stage))
                         stage_updates.Add(stage);

+ 7 - 29
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketComponentGrid.cs

@@ -14,9 +14,7 @@ namespace PRSDesktop
 {
     public class StagingManufacturingPacketComponentGrid : DynamicDataGrid<StagingManufacturingPacketComponent>, ISpecificGrid
     {
-        public StagingManufacturingPacket Packet { get; private set; } = new();
-
-        private CoreTable? _data;
+        public StagingManufacturingPacket Packet { get; set; } = new();
 
         private bool _readOnly = false;
         public bool ReadOnly
@@ -34,18 +32,6 @@ namespace PRSDesktop
             IsEnabledChanged += (sender, args) => Reconfigure(); 
             HiddenColumns.Add(x=>x.Product.Code);
             HiddenColumns.Add(x => x.Packet.ID);
-            Refresh(true, false);
-        }
-
-        public void InitialiseData(StagingManufacturingPacket packet, CoreTable? data)
-        {
-            Packet = packet;
-            if (data is not null)
-            {
-                _data = new CoreTable();
-                _data.LoadColumns(data.Columns);
-                _data.LoadRows(data.Rows.Where(x => x.Get<StagingManufacturingPacketComponent, Guid>(x => x.Packet.ID) == packet.ID));
-            }
         }
         
         protected override void DoReconfigure(FluentList<DynamicGridOption> options)
@@ -61,7 +47,7 @@ namespace PRSDesktop
                 options.Add(DynamicGridOption.AddRows);
                 options.Add(DynamicGridOption.EditRows);
                 options.Add(DynamicGridOption.DeleteRows);
-                options.Add(DynamicGridOption.DirectEdit);
+                //options.Add(DynamicGridOption.DirectEdit);
                 options.Add(DynamicGridOption.DragTarget);
             }
 
@@ -70,21 +56,13 @@ namespace PRSDesktop
 
         protected override void Reload(Filters<StagingManufacturingPacketComponent> criteria, Columns<StagingManufacturingPacketComponent> columns, ref SortOrder<StagingManufacturingPacketComponent>? sort, Action<CoreTable?, Exception?> action)
         {
-            if (_data is not null)
-            {
-                action(_data, null);
-                _data = null;
-            }
-            else
-            {
-                if (Packet.ID == Guid.Empty)
-                    criteria.Add(new Filter<StagingManufacturingPacketComponent>(x => x.ID).IsEqualTo(Guid.Empty));
+            if (Packet.ID == Guid.Empty)
+                criteria.Add(new Filter<StagingManufacturingPacketComponent>(x => x.ID).IsEqualTo(Guid.Empty));
 
-                else
-                    criteria.Add(new Filter<StagingManufacturingPacketComponent>(x => x.Packet.ID).IsEqualTo(Packet.ID));
+            else
+                criteria.Add(new Filter<StagingManufacturingPacketComponent>(x => x.Packet.ID).IsEqualTo(Packet.ID));
 
-                base.Reload(criteria, columns, ref sort, action);
-            }
+            base.Reload(criteria, columns, ref sort, action);
         }
 
         protected override void OnDragEnd(Type entity, CoreTable table, DragEventArgs e)

+ 3 - 1
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketListItem.xaml

@@ -155,7 +155,9 @@
 
             <Border Grid.Row="1" BorderThickness="0,0.75,0,0" BorderBrush="Gray" />
 
-            <dynamicGrid:DynamicTabControl Grid.Row="2" Margin="5,0,5,5" TabStripPlacement="Bottom" Background="WhiteSmoke">
+            <dynamicGrid:DynamicTabControl Name="TabControl"
+                                           Grid.Row="2" Margin="5,0,5,5" TabStripPlacement="Bottom" Background="WhiteSmoke"
+                                           SelectionChanged="DynamicTabControl_SelectionChanged">
                 <dynamicGrid:DynamicTabItem Header="General" Background="WhiteSmoke">
                     <Grid
                         Background="WhiteSmoke">

+ 27 - 41
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketListItem.xaml.cs

@@ -100,17 +100,9 @@ namespace PRSDesktop
 
             UpdateTemplateButton();
 
-            StagesGrid.Refresh(true, false);
-            ComponentGrid.Refresh(true, false);
-            TreatmentGrid.Refresh(true, false);
-
-            StagesGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketStage>());
-            ComponentGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketComponent>());
-            TreatmentGrid.InitialiseData(packet, results?.Get<StagingManufacturingPacketTreatment>());
-
-            StagesGrid.Refresh(false, true);
-            ComponentGrid.Refresh(false, true);
-            TreatmentGrid.Refresh(false, true);
+            StagesGrid.Packet = packet;
+            ComponentGrid.Packet = packet;
+            TreatmentGrid.Packet = packet;
 
             ITPCode.Text = Packet.ITP.Code;
             ITPDescription.Text = Packet.ITP.Description;
@@ -123,11 +115,6 @@ namespace PRSDesktop
             IsEditable = packet.ManufacturingPacket.ID == Guid.Empty;
         }
 
-        // TODO: This sucks
-        private static StagingManufacturingPacketComponentGrid? componentColumnsGrid;
-        private static StagingManufacturingPacketTreatmentGrid? treatmentColumnsGrid;
-        private static StagingManufacturingPacketStageGrid? stageColumnsGrid;
-
         public static IEnumerable<IKeyedQueryDef> GetQueries(StagingSetout setout)
         {
             var packetFilter = new Filter<StagingManufacturingPacket>(x => x.StagingSetout.ID).IsEqualTo(setout.ID);
@@ -152,27 +139,6 @@ namespace PRSDesktop
                         .Add(x => x.Template.ID)
                         .Add(x => x.Template.Code)
                         .Add(x => x.ManufacturingPacket.ID)));
-
-            stageColumnsGrid ??= new StagingManufacturingPacketStageGrid();
-            stageColumnsGrid.Refresh(true, false);
-
-            yield return new KeyedQueryDef<StagingManufacturingPacketStage>(
-                new Filter<StagingManufacturingPacketStage>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
-                DynamicGridUtils.LoadEditorColumns(stageColumnsGrid.DataColumns()));
-
-            componentColumnsGrid ??= new StagingManufacturingPacketComponentGrid();
-            componentColumnsGrid.Refresh(true, false);
-
-            yield return new KeyedQueryDef<StagingManufacturingPacketComponent>(
-                new Filter<StagingManufacturingPacketComponent>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
-                DynamicGridUtils.LoadEditorColumns(componentColumnsGrid.DataColumns()));
-
-            treatmentColumnsGrid ??= new StagingManufacturingPacketTreatmentGrid();
-            treatmentColumnsGrid.Refresh(true, false);
-
-            yield return new KeyedQueryDef<StagingManufacturingPacketTreatment>(
-                new Filter<StagingManufacturingPacketTreatment>(x => x.Packet.ID).InQuery(packetFilter, x => x.ID),
-                DynamicGridUtils.LoadEditorColumns(treatmentColumnsGrid.DataColumns()));
         }
 
         private void EditButton_Click(object sender, RoutedEventArgs e)
@@ -437,8 +403,8 @@ namespace PRSDesktop
 
         private bool ShowITPLookup()
         {
-            Dictionary<String, String>? code = null;
-            if (!String.IsNullOrWhiteSpace(ITPCode.Text))
+            Dictionary<string, string>? code = null;
+            if (!string.IsNullOrWhiteSpace(ITPCode.Text))
                 code = new Dictionary<string, string>() { { "Code", Packet.ITP.Code } };
 
             var itps = new PopupList(
@@ -450,7 +416,7 @@ namespace PRSDesktop
 
             itps.OnDefineFilter += type => new Filter<JobITP>(x => x.Job.ID).IsEqualTo(Packet.Job.ID);
 
-            bool result = (itps.ShowDialog() == true);
+            bool result = itps.ShowDialog() == true;
             if (result)
             {
                 Packet.ITP.ID = itps.ID;
@@ -465,7 +431,27 @@ namespace PRSDesktop
             }
             return result;
         }
-        
+
+        private void DynamicTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (e.OriginalSource != TabControl
+                || TabControl?.SelectedItem is not DynamicTabItem tab)
+                return;
+
+            if (tab.Content == StagesGrid && !StagesGrid.IsReady)
+            {
+                StagesGrid.Refresh(true, true);
+            }
+            else if(tab.Content == ComponentGrid && !ComponentGrid.IsReady)
+            {
+                ComponentGrid.Refresh(true, true);
+            }
+            else if (tab.Content == TreatmentGrid && !TreatmentGrid.IsReady)
+            {
+                TreatmentGrid.Refresh(true, true);
+            }
+        }
+
         // private void LocationBox_TextChanged(object sender, TextChangedEventArgs e)
         // {
         //     _locationChanged = true;

+ 8 - 25
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketStageGrid.cs

@@ -13,9 +13,7 @@ namespace PRSDesktop
 {
     public class StagingManufacturingPacketStageGrid : DynamicDataGrid<StagingManufacturingPacketStage>, ISpecificGrid
     {
-        public StagingManufacturingPacket Packet { get; private set; } = new();
-
-        private CoreTable? _data;
+        public StagingManufacturingPacket Packet { get; set; } = new();
 
         private bool _readOnly = false;
         public bool ReadOnly
@@ -32,18 +30,6 @@ namespace PRSDesktop
         {
             IsEnabledChanged += (sender, args) => Reconfigure();
             HiddenColumns.Add(x => x.Packet.ID);
-            Refresh(true, false);
-        }
-
-        public void InitialiseData(StagingManufacturingPacket packet, CoreTable? data)
-        {
-            Packet = packet;
-            if(data is not null)
-            {
-                _data = new CoreTable();
-                _data.LoadColumns(data.Columns);
-                _data.LoadRows(data.Rows.Where(x => x.Get<StagingManufacturingPacketStage, Guid>(x => x.Packet.ID) == packet.ID));
-            }
         }
 
         protected override void GenerateColumns(DynamicGridColumns columns)
@@ -81,16 +67,13 @@ namespace PRSDesktop
 
         protected override void Reload(Filters<StagingManufacturingPacketStage> criteria, Columns<StagingManufacturingPacketStage> columns, ref SortOrder<StagingManufacturingPacketStage>? sort, Action<CoreTable?, Exception?> action)
         {
-            if (_data is not null)
-            {
-                action(_data, null);
-                _data = null;
-            }
-            else
-            {
-                criteria.Add(new Filter<StagingManufacturingPacketStage>(x => x.Packet.ID).IsEqualTo(Packet.ID));
-                base.Reload(criteria, columns, ref sort, action);
-            }
+            criteria.Add(new Filter<StagingManufacturingPacketStage>(x => x.Packet.ID).IsEqualTo(Packet.ID));
+            base.Reload(criteria, columns, ref sort, action);
+        }
+
+        protected override void OnAfterRefresh()
+        {
+            base.OnAfterRefresh();
         }
     }
 }

+ 6 - 26
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketTreatmentGrid.cs

@@ -8,7 +8,7 @@ namespace PRSDesktop;
 
 public class StagingManufacturingPacketTreatmentGrid : DynamicDataGrid<StagingManufacturingPacketTreatment>, ISpecificGrid
 {
-    public StagingManufacturingPacket Packet { get; private set; } = new();
+    public StagingManufacturingPacket Packet { get; set; } = new();
 
     private CoreTable? _data;
 
@@ -28,18 +28,6 @@ public class StagingManufacturingPacketTreatmentGrid : DynamicDataGrid<StagingMa
         IsEnabledChanged += (sender, args) => Reconfigure(); 
         HiddenColumns.Add(x=>x.Product.Code);
         HiddenColumns.Add(x => x.Packet.ID);
-        Refresh(true, false);
-    }
-
-    public void InitialiseData(StagingManufacturingPacket packet, CoreTable? data)
-    {
-        Packet = packet;
-        if (data is not null)
-        {
-            _data = new CoreTable();
-            _data.LoadColumns(data.Columns);
-            _data.LoadRows(data.Rows.Where(x => x.Get<StagingManufacturingPacketTreatment, Guid>(x => x.Packet.ID) == packet.ID));
-        }
     }
 
     protected override void DoReconfigure(FluentList<DynamicGridOption> options)
@@ -63,21 +51,13 @@ public class StagingManufacturingPacketTreatmentGrid : DynamicDataGrid<StagingMa
 
     protected override void Reload(Filters<StagingManufacturingPacketTreatment> criteria, Columns<StagingManufacturingPacketTreatment> columns, ref SortOrder<StagingManufacturingPacketTreatment>? sort, Action<CoreTable?, Exception?> action)
     {
-        if(_data is not null)
-        {
-            action(_data, null);
-            _data = null;
-        }
-        else
-        {
-            if (Packet.ID == Guid.Empty)
-                criteria.Add(new Filter<StagingManufacturingPacketTreatment>(x => x.ID).IsEqualTo(Guid.Empty));
+        if (Packet.ID == Guid.Empty)
+            criteria.Add(new Filter<StagingManufacturingPacketTreatment>(x => x.ID).IsEqualTo(Guid.Empty));
 
-            else
-                criteria.Add(new Filter<StagingManufacturingPacketTreatment>(x => x.Packet.ID).IsEqualTo(Packet.ID));
+        else
+            criteria.Add(new Filter<StagingManufacturingPacketTreatment>(x => x.Packet.ID).IsEqualTo(Packet.ID));
 
-            base.Reload(criteria, columns, ref sort, action);
-        }
+        base.Reload(criteria, columns, ref sort, action);
     }
 
     protected override StagingManufacturingPacketTreatment CreateItem()

+ 6 - 1
prs.server/PRSServer.csproj

@@ -12,7 +12,7 @@
         <AssemblyName>PRSServer</AssemblyName>
         <RootNamespace>$(AssemblyName)</RootNamespace>
         <StartupObject>PRSServer.App</StartupObject>
-        <Configurations>Debug;Release</Configurations>
+        <Configurations>Debug;Release;Debug - DB</Configurations>
         <ApplicationIcon>hollow.ico</ApplicationIcon>
 		<PreserveCompilationContext>true</PreserveCompilationContext>
     </PropertyGroup>
@@ -22,6 +22,11 @@
         <Optimize>False</Optimize>
     </PropertyGroup>
 
+    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug - DB|AnyCPU'">
+      <NoWarn />
+      <Optimize>False</Optimize>
+    </PropertyGroup>
+
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
         <NoWarn></NoWarn>
         <Optimize>True</Optimize>