ソースを参照

DESKTOP - additions to manufacturing for issuing packets as a group

Nick-PRSDigital@bitbucket.org 2 年 前
コミット
f396d3c388

+ 8 - 0
prs.classes/Entities/Setout/SetoutLink.cs

@@ -30,5 +30,13 @@ namespace Comal.Classes
 
         [NullEditor]
         public JobLink JobLink { get; set; }
+
+        public SetoutGroupLink Group { get; set; }
+
+        protected override void Init()
+        {
+            Group = new SetoutGroupLink();
+            base.Init();
+        }
     }
 }

+ 3 - 1
prs.desktop/Panels/Factory/FactoryPanel.xaml.cs

@@ -2139,6 +2139,7 @@ namespace PRSDesktop
             var estimateddate = packet.Get<ManufacturingPacket, DateTime>(c => c.EstimatedDate);
             var distributed = packet.Get<ManufacturingPacket, bool>(c => c.Distributed);
             var packetsection = packet.Get<ManufacturingPacket, string>(c => c.StageLink.Section);
+            var groupid = packet.Get<ManufacturingPacket, Guid>(c => c.SetoutLink.Group.ID);
 
             model.TemplateID = packet.Get<ManufacturingPacket, Guid>(c => c.ManufacturingTemplateLink.ID);
 
@@ -2154,7 +2155,7 @@ namespace PRSDesktop
             model.Quantity = barcodes;
             model.JobName = string.Format("{0}: {1}", setoutnumber, jobname);
             model.DueDate = duedate;
-
+            model.GroupID = groupid;
 
             var descrip = new List<string>
             {
@@ -2307,6 +2308,7 @@ namespace PRSDesktop
                         .Add(x => x.SetoutLink.Number)
                         .Add(x => x.SetoutLink.JobLink.JobNumber)
                         .Add(x => x.SetoutLink.JobLink.Name)
+                        .Add(x => x.SetoutLink.Group.ID)
                         .Add(x => x.DueDate)
                         .Add(x => x.SetoutLink.Location)
                         //.Add(x => x.SetoutLink.Reference)

+ 2 - 1
prs.desktop/Panels/Manufacturing/ManufacturingAllocationPanel.xaml.cs

@@ -151,6 +151,7 @@ namespace PRSDesktop
                 var barqty = row.Get<ManufacturingPacket, int>(c => c.BarcodeQty);
                 var duedate = row.Get<ManufacturingPacket, DateTime>(c => c.DueDate);
                 var estdate = row.Get<ManufacturingPacket, DateTime>(c => c.EstimatedDate);
+                
 
                 var sectionid = row.Get<ManufacturingPacket, Guid>(c => c.StageLink.SectionID);
                 var pktsection = row.Get<ManufacturingPacket, string>(c => c.StageLink.Section);
@@ -217,7 +218,7 @@ namespace PRSDesktop
                 model.Flags = row.Get<ManufacturingPacket, bool>(c => c.Distributed)
                     ? !sectionid.Equals(section) ? string.IsNullOrEmpty(pktsection) ? "" : pktsection.ToUpper().Trim() : "DISTRIB"
                     : "";
-
+                model.GroupID = row.Get<ManufacturingPacket, Guid>(c => c.SetoutLink.Group.ID);
 
                 Kanbans.Add(model);
             }

+ 1 - 0
prs.desktop/Panels/Manufacturing/ManufacturingKanban.cs

@@ -29,6 +29,7 @@ namespace PRSDesktop
         public string Issues { get; set; }
         public BitmapImage IssuesImage { get; set; }
         public Guid TemplateID { get; set; }
+        public Guid GroupID { get; set; }
     }
 }
 

+ 2 - 0
prs.desktop/Panels/Manufacturing/ManufacturingPanel.xaml.cs

@@ -725,6 +725,7 @@ namespace PRSDesktop
             columns.Add(x => x.SetoutLink.Description);
             columns.Add(x => x.SetoutLink.Location);
             columns.Add(x => x.SetoutLink.JobLink.ID);
+            columns.Add(x => x.SetoutLink.Group.ID);
 
             columns.Add(x => x.OrderItem.ID);
             //columns.Add(x => x.OrderItem.ReceivedDate);
@@ -742,6 +743,7 @@ namespace PRSDesktop
             columns.Add(x => x.StageLink.Time);
             columns.Add(x => x.StageLink.PercentageComplete);
             columns.Add(x => x.StageLink.Deleted);
+            
             return columns;
         }
 

+ 1 - 0
prs.desktop/Panels/Manufacturing/ManufacturingPanelColumn.xaml

@@ -109,6 +109,7 @@
                         <Separator x:Name="ViewSetoutSeparator" />
 
                         <MenuItem x:Name="IssueSetout" Header="Issue Item" Click="IssueSetout_Click" Tag="{Binding}" />
+                        <MenuItem x:Name="IssueGroup" Header="Issue Cutting Group" Click="IssueGroup_Click" Tag="{Binding}" />
                         <MenuItem x:Name="ProgressSetout" Header="Progress Item" Click="ProgressSetout_Click"
                                   Tag="{Binding}" />
                         <MenuItem x:Name="SplitSetout" Header="Split Manufacturing" Click="SplitSetout_Click"

+ 56 - 29
prs.desktop/Panels/Manufacturing/ManufacturingPanelColumn.xaml.cs

@@ -224,6 +224,8 @@ namespace PRSDesktop
                 var templateid = packet.ManufacturingTemplateLink.ID;
                 var templatecode = Data.Templates.FirstOrDefault(x => x.ID.Equals(templateid))?.Code;
 
+                var groupid = packet.SetoutLink.Group.ID;
+
                 if (bOK)
                 {
                     var id = packet.ID;
@@ -341,6 +343,8 @@ namespace PRSDesktop
 
                     model.Template = templatecode;
 
+                    model.GroupID = groupid;
+
 
                     if (!stageValid || stageid.Equals(Guid.Empty) || stageid.Equals(CoreUtils.FullGuid))
                     {
@@ -421,42 +425,43 @@ namespace PRSDesktop
             var menu = sender as ContextMenu;
 
             var issue = menu.Items[2] as MenuItem;
-            var progress = menu.Items[3] as MenuItem;
-            var split = menu.Items[4] as MenuItem;
-            var revert = menu.Items[5] as MenuItem;
-            var progress_separator = menu.Items[6] as Separator;
-
-            var cancel = menu.Items[7] as MenuItem;
-            var cancel_separator = menu.Items[8] as Separator;
+            var issuegroup = menu.Items[3] as MenuItem;
+            var progress = menu.Items[4] as MenuItem;
+            var split = menu.Items[5] as MenuItem;
+            var revert = menu.Items[6] as MenuItem;
+            var progress_separator = menu.Items[7] as Separator;
+
+            var cancel = menu.Items[8] as MenuItem;
+            var cancel_separator = menu.Items[9] as Separator;
             var bHasCancel = false;
 
-            var complete = menu.Items[9] as MenuItem;
-            var complete_separator = menu.Items[10] as Separator;
+            var complete = menu.Items[10] as MenuItem;
+            var complete_separator = menu.Items[11] as Separator;
             var bHasComplete = false;
 
-            var template = menu.Items[11] as MenuItem;
-            var template_separator = menu.Items[12] as Separator;
+            var template = menu.Items[12] as MenuItem;
+            var template_separator = menu.Items[13] as Separator;
             var bHasTemplate = true;
 
-            var changedate = menu.Items[13] as MenuItem;
-            var changedate_separator = menu.Items[14] as Separator;
+            var changedate = menu.Items[14] as MenuItem;
+            var changedate_separator = menu.Items[15] as Separator;
 
-            var setpriority = menu.Items[15] as MenuItem;
-            var clearpriority = menu.Items[16] as MenuItem;
-            var priority_separator = menu.Items[17] as Separator;
+            var setpriority = menu.Items[16] as MenuItem;
+            var clearpriority = menu.Items[17] as MenuItem;
+            var priority_separator = menu.Items[18] as Separator;
 
-            var editissues = menu.Items[18] as MenuItem;
-            var sethold = menu.Items[19] as MenuItem;
-            var clearhold = menu.Items[20] as MenuItem;
-            var hold_separator = menu.Items[21] as Separator;
+            var editissues = menu.Items[19] as MenuItem;
+            var sethold = menu.Items[20] as MenuItem;
+            var clearhold = menu.Items[21] as MenuItem;
+            var hold_separator = menu.Items[22] as Separator;
 
-            var generate = menu.Items[22] as MenuItem;
-            var reprint = menu.Items[23] as MenuItem;
-            var revoke = menu.Items[24] as MenuItem;
-            var barcode_separator = menu.Items[25] as Separator;
+            var generate = menu.Items[23] as MenuItem;
+            var reprint = menu.Items[24] as MenuItem;
+            var revoke = menu.Items[25] as MenuItem;
+            var barcode_separator = menu.Items[26] as Separator;
             var bHasBarcode = false;
 
-            var archive = menu.Items[26] as MenuItem;
+            var archive = menu.Items[27] as MenuItem;
             var bHasArchive = false;
 
             var model = menu.Tag as ManufacturingKanban;
@@ -483,6 +488,7 @@ namespace PRSDesktop
                 current != null ? current.BarcodeType : BarcodeType.None; // row.Get<ManufacturingPacket, BarcodeType>(x => x.BarcodeType);
 
             issue.Visibility = !stageValid && Security.IsAllowed<CanIssuePackets>() ? Visibility.Visible : Visibility.Collapsed;
+            issuegroup.Visibility = !stageValid && Security.IsAllowed<CanIssuePackets>() ? Visibility.Visible : Visibility.Collapsed;
             progress.Visibility = stageid.Equals(CoreUtils.FullGuid) || !stageValid ? Visibility.Collapsed : Visibility.Visible;
             split.Visibility = !stageValid && qty > 1 && printed.IsEmpty() && OnlyOne ? Visibility.Visible : Visibility.Collapsed;
             revert.Visibility = !stageValid && completed.Equals(DateTime.MinValue) ? Visibility.Collapsed : Visibility.Visible;
@@ -694,20 +700,35 @@ namespace PRSDesktop
 
             var date = model.DueDate.IsEmpty() ? DateTime.Today.AddDays(14) : model.DueDate;
             if (DateEdit.Execute("Required Completion Date", ref date))
-                ProgressPacket(model, date);
+                ProgressPacket(model, date, Guid.Empty);
+        }
+
+        private void IssueGroup_Click(object sender, RoutedEventArgs e)
+        {
+            var item = (MenuItem)sender;
+            var model = (ManufacturingKanban)item.Tag;
+
+            var date = model.DueDate.IsEmpty() ? DateTime.Today.AddDays(14) : model.DueDate;
+            if (DateEdit.Execute("Required Completion Date", ref date))
+                ProgressPacket(model, date, model.GroupID);
         }
 
         private void ProgressSetout_Click(object sender, RoutedEventArgs e)
         {
             var item = (MenuItem)sender;
             var model = (ManufacturingKanban)item.Tag;
-            ProgressPacket(model, null);
+            ProgressPacket(model, null, Guid.Empty);
         }
 
-        private void ProgressPacket(ManufacturingKanban model, DateTime? date)
+        private void ProgressPacket(ManufacturingKanban model, DateTime? date, Guid groupID)
         {
             Progress.Show("");
-            var pkts = GetSelectedPackets(model.ID).ToList();
+            var pkts = groupID == Guid.Empty ? 
+                GetSelectedPackets(model.ID).ToList() 
+                : GetPacketsOfGroup(groupID);
+
+            if (pkts.Count == 0)
+                return;
 
             Progress.SetMessage("Loading Stages");
             Filter<ManufacturingPacketStage>? stgflt = null;
@@ -743,6 +764,11 @@ namespace PRSDesktop
             OnChanged?.Invoke(this, new EventArgs());
         }
 
+        private List<ManufacturingPacket> GetPacketsOfGroup(Guid groupID)
+        {
+            return Packets.Where(x => x.SetoutLink.Group.ID == groupID).ToList();
+        }
+
         private void SplitSetout_Click(object sender, RoutedEventArgs e)
         {
             var item = (MenuItem)sender;
@@ -1232,5 +1258,6 @@ namespace PRSDesktop
 
             }
         }
+
     }
 }