Jelajahi Sumber

Fixed Job Bill Of Materials Script Setup (missing Job Table)
Fixed Completed / Unarchive Manufacturing packets showing up as "To Be Issued" again

Frank van den Bos 2 tahun lalu
induk
melakukan
4af25ef7d3

+ 16 - 3
prs.desktop/Panels/Jobs/JobBillOfMaterialsPanel.xaml.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Windows.Controls;
 using Comal.Classes;
+using InABox.Clients;
 using InABox.Core;
 using InABox.DynamicGrid;
 
@@ -28,15 +29,22 @@ public partial class JobBillOfMaterialsPanel : UserControl, IBasePanel, IJobCont
 
     public DataModel DataModel(Selection selection)
     {
+        BaseDataModel<JobBillOfMaterials> model = null;
         if (selection == Selection.Selected)
         {
             var bomid = BillsOfMaterials.SelectedRows.Any()
                 ? BillsOfMaterials.SelectedRows.First().Get<JobBillOfMaterials, Guid>(x => x.ID)
                 : CoreUtils.FullGuid;
-            return new BaseDataModel<JobBillOfMaterials>(new Filter<JobBillOfMaterials>(x => x.ID).IsEqualTo(bomid));
+            model = new BaseDataModel<JobBillOfMaterials>(new Filter<JobBillOfMaterials>(x => x.ID).IsEqualTo(bomid));
         }
-
-        return new BaseDataModel<JobBillOfMaterials>(new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(ParentID));
+        else
+            model = new BaseDataModel<JobBillOfMaterials>(new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(ParentID));
+
+        var jobfilter = ((ParentID == Guid.Empty) || (ParentID == CoreUtils.FullGuid))
+            ? new Filter<Job>().None()
+            : new Filter<Job>(x => x.ID).IsEqualTo(ParentID);
+        model.AddTable<Job>(jobfilter, null, true, "Job", true);
+        return model;
     }
 
     public void CreateToolbarButtons(IPanelHost host)
@@ -60,8 +68,13 @@ public partial class JobBillOfMaterialsPanel : UserControl, IBasePanel, IJobCont
 
     public Dictionary<string, object[]> Selected()
     {
+        
+        var jobfilter = ((ParentID == Guid.Empty) || (ParentID == CoreUtils.FullGuid))
+            ? new Filter<Job>().None()
+            : new Filter<Job>(x => x.ID).IsEqualTo(ParentID);
         return new Dictionary<string, object[]>
         {
+            { typeof(Job).EntityName(), new Client<Job>().Query(jobfilter).Rows.ToArray() },
             { typeof(JobBillOfMaterials).EntityName(), BillsOfMaterials.SelectedRows },
             { typeof(JobBillOfMaterialsItem).EntityName(), BillOfMaterialsItems.SelectedRows }
         };

+ 12 - 8
prs.desktop/Panels/Manufacturing/ManufacturingPanel.xaml.cs

@@ -612,10 +612,9 @@ namespace PRSDesktop
             Logger.Send(LogType.Information, ClientFactory.UserID,
                 string.Format("Retrieved {0} packets in {1}ms", packets.Rows.Count, profiler.Restart()));
 
-            var results = packets
-                .ToObjects<ManufacturingPacket>()
-                .GroupBy(x => x.StageLink.SectionID)
-                .ToDictionary(x => x.Key, x => x);
+            var objects = packets.ToObjects<ManufacturingPacket>();
+            var groups =  objects.GroupBy(x => !x.Completed.IsEmpty() ? CoreUtils.FullGuid : x.StageLink.SectionID);
+            var results = groups.ToDictionary(x => x.Key, x => x);
 
             Logger.Send(LogType.Information, ClientFactory.UserID, string.Format("Processed Kanbans in {0}ms", profiler.Restart()));
 
@@ -656,10 +655,15 @@ namespace PRSDesktop
             if (!bSkipJobCheck && Job.SelectedValue != null && !Job.SelectedValue.Equals(CoreUtils.FullGuid))
                 filter = filter.And(x => x.SetoutLink.JobLink.ID).IsEqualTo((Guid)Job.SelectedValue);
 
-            var sctflt = new Filter<ManufacturingPacket>(x => x.StageLink).NotLinkValid();
-
-            foreach (var section in Data.Sections.Where(x => CurrentFactory.Equals(Guid.Empty) || x.Factory.ID.Equals(CurrentFactory)))
-                sctflt = sctflt.Or(x => x.StageLink.SectionID).IsEqualTo(section.ID);
+            var sections = Data.Sections.Where(x => CurrentFactory.Equals(Guid.Empty) || x.Factory.ID.Equals(CurrentFactory)).Select(x => x.ID)
+                .ToList();
+            var sctflt = new Filter<ManufacturingPacket>(x => x.StageLink.SectionID).IsEqualTo(Guid.Empty)
+                    .Or(x => x.StageLink.SectionID).InList(sections.ToArray());
+            /*
+             var sctflt = new Filter<ManufacturingPacket>(x => x.StageLink).NotLinkValid();
+             foreach (var section in Data.Sections.Where(x => CurrentFactory.Equals(Guid.Empty) || x.Factory.ID.Equals(CurrentFactory)))
+                sctflt = sctflt.Or(x => x.StageLink.SectionID).IsEqualTo(section.ID); 
+            */
             filter.Ands.Add(sctflt);
 
             if (CurrentFactory != Guid.Empty)

+ 1 - 1
prs.desktop/prsdesktop.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Desktop"
-#define MyAppVersion "7.05"
+#define MyAppVersion "7.05a"
 #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.05"
+#define MyAppVersion "7.05a"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSServer.exe"