Kenric Nugteren 1 год назад
Родитель
Сommit
8603b31d6f

+ 21 - 22
prs.desktop/Panels/Staging/Manufacturing/StagingManufacturingPacketList.xaml.cs

@@ -50,28 +50,27 @@ namespace PRSDesktop
                 }
                 else
                 {
-                    var results = new Client<StagingManufacturingPacket>()
-                        .Query(
-                            new Filter<StagingManufacturingPacket>(x => x.StagingSetout.ID).IsEqualTo(value.ID),
-                            DynamicGridUtils.LoadEditorColumns<StagingManufacturingPacket>(
-                                new Columns<StagingManufacturingPacket>(x => x.ID)
-                                    .Add(x => x.Serial)
-                                    .Add(x => x.Title)
-                                    .Add(x => x.Quantity)
-                                    .Add(x => x.BarcodeQuantity)
-                                    .Add(x => x.Watermark)
-                                    .Add(x => x.Location)
-                                    .Add(x => x.ITP.ID)
-                                    .Add(x => x.ITP.Code)
-                                    .Add(x => x.ITP.Description)
-                                    .Add(x => x.Job.ID)
-                                    .Add(x => x.Group.ID)
-                                    .Add(x => x.Group.Code)
-                                    .Add(x => x.Group.Description)
-                                    .Add(x => x.Group.Watermark)
-                                    .Add(x => x.Template.ID)
-                                    .Add(x => x.Template.Code)
-                                    .Add(x => x.ManufacturingPacket.ID)));
+                    var results = Client.Query(
+                        new Filter<StagingManufacturingPacket>(x => x.StagingSetout.ID).IsEqualTo(value.ID),
+                        DynamicGridUtils.LoadEditorColumns(
+                            new Columns<StagingManufacturingPacket>(x => x.ID)
+                                .Add(x => x.Serial)
+                                .Add(x => x.Title)
+                                .Add(x => x.Quantity)
+                                .Add(x => x.BarcodeQuantity)
+                                .Add(x => x.Watermark)
+                                .Add(x => x.Location)
+                                .Add(x => x.ITP.ID)
+                                .Add(x => x.ITP.Code)
+                                .Add(x => x.ITP.Description)
+                                .Add(x => x.Job.ID)
+                                .Add(x => x.Group.ID)
+                                .Add(x => x.Group.Code)
+                                .Add(x => x.Group.Description)
+                                .Add(x => x.Group.Watermark)
+                                .Add(x => x.Template.ID)
+                                .Add(x => x.Template.Code)
+                                .Add(x => x.ManufacturingPacket.ID)));
 
                     ManufacturingPacketList.Children.Clear();
                     foreach(var packet in results.ToObjects<StagingManufacturingPacket>())

+ 39 - 31
prs.desktop/Panels/Staging/StagingPanel.xaml.cs

@@ -1127,46 +1127,54 @@ public class Module
 
         private void stagingSetoutGrid_OnParseComponentFile(string componentFileName, Guid setoutID)
         {
-            var entityName = typeof(StagingSetoutComponent).EntityName();
-            var importers = new Client<Importer>()
-                .Query(
-                    new Filter<Importer>(x => x.EntityName).IsEqualTo(entityName),
-                    new Columns<Importer>(x => x.ID));
-            if(importers.Rows.Count == 0)
+            try
             {
-                var importer = new Importer
+                var entityName = typeof(StagingSetoutComponent).EntityName();
+                var importers = new Client<Importer>()
+                    .Query(
+                        new Filter<Importer>(x => x.EntityName).IsEqualTo(entityName),
+                        new Columns<Importer>(x => x.ID));
+                if (importers.Rows.Count == 0)
                 {
-                    EntityName = entityName,
-                    FileName = componentFileName
-                };
+                    var importer = new Importer
+                    {
+                        EntityName = entityName,
+                        FileName = componentFileName
+                    };
 
-                var form = new DynamicImportForm(importer);
-                if (form.ShowDialog() == true)
-                {
-                    new Client<Importer>().Save(importer, "");
+                    var form = new DynamicImportForm(importer);
+                    if (form.ShowDialog() == true)
+                    {
+                        new Client<Importer>().Save(importer, "");
 
-                    DoImport(importer, componentFileName, setoutID);
+                        DoImport(importer, componentFileName, setoutID);
 
-                    return;
+                        return;
+                    }
                 }
-            }
-            else if(importers.Rows.Count == 1)
-            {
-                var importer = new Client<Importer>().Load(new Filter<Importer>(x => x.ID).IsEqualTo(importers.Rows[0].Get<Importer, Guid>(x => x.ID))).First();
-                DoImport(importer, componentFileName, setoutID);
-            }
-            else
-            {
-                var list = new PopupList(
-                    typeof(Importer),
-                    Guid.Empty,
-                    Array.Empty<string>());
-                list.OnDefineFilter += t => new Filter<Importer>(x => x.EntityName).IsEqualTo(entityName);
-                if(list.ShowDialog() == true)
+                else if (importers.Rows.Count == 1)
                 {
-                    var importer = new Client<Importer>().Load(new Filter<Importer>(x => x.ID).IsEqualTo(list.ID)).First();
+                    var importer = new Client<Importer>().Load(new Filter<Importer>(x => x.ID).IsEqualTo(importers.Rows[0].Get<Importer, Guid>(x => x.ID))).First();
                     DoImport(importer, componentFileName, setoutID);
                 }
+                else
+                {
+                    var list = new PopupList(
+                        typeof(Importer),
+                        Guid.Empty,
+                        Array.Empty<string>());
+                    list.OnDefineFilter += t => new Filter<Importer>(x => x.EntityName).IsEqualTo(entityName);
+                    if (list.ShowDialog() == true)
+                    {
+                        var importer = new Client<Importer>().Load(new Filter<Importer>(x => x.ID).IsEqualTo(list.ID)).First();
+                        DoImport(importer, componentFileName, setoutID);
+                    }
+                }
+            }
+            catch(Exception e)
+            {
+                Logger.Send(LogType.Error, "", $"Error in file {componentFileName}: {CoreUtils.FormatException(e)}");
+                MessageBox.Show($"Error opening {componentFileName}: {e.Message}");
             }
         }
     }

+ 2 - 1
prs.desktop/Utils/CustomImporter.cs

@@ -54,13 +54,14 @@ using System.Runtime;
 using System.Windows;
 using System.Windows.Media;
 using InABox.Core;
+using InABox.Scripting;
 using Comal.Classes;
 using PRSDesktop;
 
 public class Module
 {
     // Initialise a table with the necessary columns.
-    public CoreTable CreateTable(CreateTableArgs args)
+    public CoreTable? CreateTable(CreateTableArgs args)
     {
         var table = new CoreTable();
         table.Columns.Add(new CoreColumn { ColumnName = ..., DataType = typeof(string) });