فهرست منبع

Improved cancelling options for PO export

Kenric Nugteren 1 سال پیش
والد
کامیت
a422b08607
1فایلهای تغییر یافته به همراه56 افزوده شده و 42 حذف شده
  1. 56 42
      prs.shared/Posters/Timberline/PurchaseOrderTimberlinePoster.cs

+ 56 - 42
prs.shared/Posters/Timberline/PurchaseOrderTimberlinePoster.cs

@@ -412,65 +412,79 @@ public class Module
                     }
                 }
 
-                var logDlg = new OpenFileDialog
+                while (true)
                 {
-                    InitialDirectory = Path.GetDirectoryName(dlg.FileName),
-                    FileName = "JCREJECT.JCC",
-                    Filter = "Rejected Item Files (*.jcc) | *.jcc;*.JCC | All Files (*.*) | *.*",
-                    Title = "Please select JCREJECT.JCC"
-                };
-                if (logDlg.ShowDialog() == true)
-                {
-                    var rejectedHeaders = new List<PurchaseOrderTimberlineHeader?>();
-                    var rejectedLines = new List<PurchaseOrderTimberlineLine?>();
-                    using (var reader = new StreamReader(logDlg.FileName))
+                    var logDlg = new OpenFileDialog
+                    {
+                        InitialDirectory = Path.GetDirectoryName(dlg.FileName),
+                        FileName = "JCREJECT.JCC",
+                        Filter = "Rejected Item Files (*.jcc) | *.jcc;*.JCC | All Files (*.*) | *.*",
+                        Title = "Please select JCREJECT.JCC"
+                    };
+                    if (logDlg.ShowDialog() == true)
                     {
-                        using var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
+                        var rejectedHeaders = new List<PurchaseOrderTimberlineHeader?>();
+                        var rejectedLines = new List<PurchaseOrderTimberlineLine?>();
+                        using (var reader = new StreamReader(logDlg.FileName))
                         {
-                            HasHeaderRecord = false
-                        });
+                            using var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
+                            {
+                                HasHeaderRecord = false
+                            });
 
-                        while (csv.Read())
-                        {
-                            var id = csv.GetField(0);
-                            if(id == "C")
+                            while (csv.Read())
                             {
-                                var header = csv.GetRecord<PurchaseOrderTimberlineHeader>();
-                                if(header is not null)
+                                var id = csv.GetField(0);
+                                if (id == "C")
                                 {
-                                    var entry = POs.Items.FirstOrDefault(x => x.Item2?.CommitmentID.Equals(header.CommitmentID) == true);
-                                    if(entry is not null)
+                                    var header = csv.GetRecord<PurchaseOrderTimberlineHeader>();
+                                    if (header is not null)
                                     {
-                                        (entry.Item1 as IPostable).FailPost("");
+                                        var entry = POs.Items.FirstOrDefault(x => x.Item2?.CommitmentID.Equals(header.CommitmentID) == true);
+                                        if (entry is not null)
+                                        {
+                                            (entry.Item1 as IPostable).FailPost("");
+                                        }
                                     }
-                                }
-                                else
-                                {
-                                    Logger.Send(LogType.Error, "", "PO Timberline export: Unable to parse header from CSV line in rejection file.");
-                                    MessageBox.Show("Invalid line in file; skipping.");
-                                }
-                            }
-                            else if(id == "CI")
-                            {
-                                var line = csv.GetRecord<PurchaseOrderTimberlineLine>();
-                                if (line is not null)
-                                {
-                                    var entry = POs.Items.FirstOrDefault(x => x.Item2?.CommitmentID.Equals(line.CommitmentID) == true);
-                                    if (entry is not null)
+                                    else
                                     {
-                                        (entry.Item1 as IPostable).FailPost("");
+                                        Logger.Send(LogType.Error, "", "PO Timberline export: Unable to parse header from CSV line in rejection file.");
+                                        MessageBox.Show("Invalid line in file; skipping.");
                                     }
                                 }
-                                else
+                                else if (id == "CI")
                                 {
-                                    Logger.Send(LogType.Error, "", "PO Timberline export: Unable to parse line from CSV line in rejection file.");
-                                    MessageBox.Show("Invalid line in file; skipping.");
+                                    var line = csv.GetRecord<PurchaseOrderTimberlineLine>();
+                                    if (line is not null)
+                                    {
+                                        var entry = POs.Items.FirstOrDefault(x => x.Item2?.CommitmentID.Equals(line.CommitmentID) == true);
+                                        if (entry is not null)
+                                        {
+                                            (entry.Item1 as IPostable).FailPost("");
+                                        }
+                                    }
+                                    else
+                                    {
+                                        Logger.Send(LogType.Error, "", "PO Timberline export: Unable to parse line from CSV line in rejection file.");
+                                        MessageBox.Show("Invalid line in file; skipping.");
+                                    }
                                 }
                             }
                         }
+                        return POs;
+                    }
+                    else
+                    {
+                        if (MessageBox.Show("Do you wish to cancel the export?", "Cancel Export?", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
+                        {
+                            throw new PostCancelledException();
+                        }
+                        else if (MessageBox.Show("Did everything post successfully?", "Successful?", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
+                        {
+                            return POs;
+                        }
                     }
                 }
-                return POs;
             }
             else
             {