Ver Fonte

Propagated required KanbanCategory to KanbanStatus changes

frogsoftware há 1 ano atrás
pai
commit
bd4bade072

+ 1 - 1
prs.desktop/Dashboards/Common/IncompleteTasksDashboard.xaml.cs

@@ -73,7 +73,7 @@ namespace PRSDesktop
             columns.Add<Kanban, int>(x => x.Number, 100, "Number", "", Alignment.MiddleLeft);
             columns.Add<Kanban, string>(x => x.Title, 0, "Title", "", Alignment.MiddleLeft);
             columns.Add<Kanban, DateTime>(x => x.DueDate, 100, "DueDate", "", Alignment.MiddleCenter);
-            columns.Add<Kanban, KanbanCategory>(x => x.Status, 200, "Status", "", Alignment.MiddleLeft);
+            columns.Add<Kanban, KanbanStatus>(x => x.Status, 200, "Status", "", Alignment.MiddleLeft);
             columns.Add<Kanban, string>(x => x.EmployeeLink.Name, 200, "Assigned To", "", Alignment.MiddleLeft);
             return columns;
         }

+ 16 - 16
prs.desktop/Panels/DailyReports/DailyReport.xaml.cs

@@ -175,7 +175,7 @@ namespace PRSDesktop
     {
         private DailyActivityScreenSettings _settings;
 
-        private KanbanCategory _taskcategory = KanbanCategory.Open;
+        private KanbanStatus _taskcategory = KanbanStatus.Open;
 
         private bool bProgramaticallyChanging = false;
 
@@ -328,7 +328,7 @@ namespace PRSDesktop
                 
                 GotoCurrentRequiredReport();
                 
-                LoadKanbans(KanbanCategory.Open);
+                LoadKanbans(KanbanStatus.Open);
             }
             finally
             {
@@ -1044,7 +1044,7 @@ namespace PRSDesktop
             SetCurrentDay(RequiredReports[RequiredReportIndex].Date);
         }
 
-        private void LoadKanbans(KanbanCategory? category = null)
+        private void LoadKanbans(KanbanStatus? category = null)
         {
             if (category.HasValue)
                 _taskcategory = category.Value;
@@ -1096,7 +1096,7 @@ namespace PRSDesktop
 
         private void OpenTasks_Click(object sender, RoutedEventArgs e)
         {
-            LoadKanbans(KanbanCategory.Open);
+            LoadKanbans(KanbanStatus.Open);
             CurrentTasks.SetValue(Grid.RowProperty, 6);
             WaitingTasks.SetValue(Grid.RowProperty, 7);
             ClosedTasks.SetValue(Grid.RowProperty, 8);
@@ -1104,7 +1104,7 @@ namespace PRSDesktop
 
         private void CurrentTasks_Click(object sender, RoutedEventArgs e)
         {
-            LoadKanbans(KanbanCategory.InProgress);
+            LoadKanbans(KanbanStatus.InProgress);
             CurrentTasks.SetValue(Grid.RowProperty, 2);
             WaitingTasks.SetValue(Grid.RowProperty, 7);
             ClosedTasks.SetValue(Grid.RowProperty, 8);
@@ -1112,7 +1112,7 @@ namespace PRSDesktop
 
         private void WaitingTasks_Click(object sender, RoutedEventArgs e)
         {
-            LoadKanbans(KanbanCategory.Waiting);
+            LoadKanbans(KanbanStatus.Waiting);
             CurrentTasks.SetValue(Grid.RowProperty, 2);
             WaitingTasks.SetValue(Grid.RowProperty, 3);
             ClosedTasks.SetValue(Grid.RowProperty, 8);
@@ -1120,7 +1120,7 @@ namespace PRSDesktop
 
         private void ClosedTasks_Click(object sender, RoutedEventArgs e)
         {
-            LoadKanbans(KanbanCategory.Complete);
+            LoadKanbans(KanbanStatus.Complete);
             CurrentTasks.SetValue(Grid.RowProperty, 2);
             WaitingTasks.SetValue(Grid.RowProperty, 3);
             ClosedTasks.SetValue(Grid.RowProperty, 4);
@@ -1180,7 +1180,7 @@ namespace PRSDesktop
             task.EmployeeLink.ID = Employee.ID;
             task.ManagerLink.ID = Employee.ID;
             task.Private = true;
-            task.Status = KanbanCategory.Open;
+            task.Status = KanbanStatus.Open;
 
             if(DynamicGridUtils.CreateDynamicGrid(typeof(DynamicDataGrid<>), typeof(Kanban)).EditItems(new[] { task }))
             {
@@ -1237,20 +1237,20 @@ namespace PRSDesktop
             var menu = (sender as Border).ContextMenu;
             menu.Items.Clear();
 
-            if (_taskcategory != KanbanCategory.Open)
+            if (_taskcategory != KanbanStatus.Open)
                 MoveToOpen = CreateTaskMenu(menu, "Move To [Open Tasks]", kanban, MoveTask_Click);
 
-            if (_taskcategory != KanbanCategory.InProgress)
+            if (_taskcategory != KanbanStatus.InProgress)
                 MoveToCurrent = CreateTaskMenu(menu, "Move To [Tasks In Progress]", kanban, MoveTask_Click);
             else
                 menu.Items.Add(new Separator());
 
-            if (_taskcategory != KanbanCategory.Waiting)
+            if (_taskcategory != KanbanStatus.Waiting)
                 MoveToWaiting = CreateTaskMenu(menu, "Move To [Waiting For Others]", kanban, MoveTask_Click);
             else
                 menu.Items.Add(new Separator());
 
-            if (_taskcategory != KanbanCategory.Complete)
+            if (_taskcategory != KanbanStatus.Complete)
                 MoveToComplete = CreateTaskMenu(menu, "Move To [Completed Tasks]", kanban, MoveTask_Click);
 
             menu.Items.Add(new Separator());
@@ -1287,12 +1287,12 @@ namespace PRSDesktop
             if (kanban == null)
                 return;
             var category = sender == MoveToComplete
-                ? KanbanCategory.Complete
+                ? KanbanStatus.Complete
                 : sender == MoveToWaiting
-                    ? KanbanCategory.Waiting
+                    ? KanbanStatus.Waiting
                     : sender == MoveToCurrent
-                        ? KanbanCategory.InProgress
-                        : KanbanCategory.Open;
+                        ? KanbanStatus.InProgress
+                        : KanbanStatus.Open;
             kanban.Status = category;
             new Client<Kanban>().Save(kanban, "");
             LoadKanbans();

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

@@ -2525,7 +2525,7 @@ namespace PRSDesktop
                 {
                     var task = new Kanban();
                     task.DueDate = DateTime.Today;
-                    task.Status = KanbanCategory.Open;
+                    task.Status = KanbanStatus.Open;
                     task.EmployeeLink.ID = form.EmployeeID;
                     task.ManagerLink.ID = myID;
                     task.Title = "QA Issues : " + CurrentSection.Factory.Name + ": " + CurrentSection.Name;

+ 7 - 7
prs.desktop/Panels/Jobs/DocumentSets/JobDocumentSetMilestoneTasks.cs

@@ -56,16 +56,16 @@ namespace PRSDesktop
         private void TaskMenuOpening(DynamicMenuColumn column, CoreRow? row)
         {
             var status = column.AddItem("Set Status", PRSDesktop.Resources.kanban, null);
-            column.AddItem("To Do", null, (r) => SetTaskStatus(r, KanbanCategory.Open,false), status);
-            column.AddItem("In Progress", null, (r) => SetTaskStatus(r, KanbanCategory.InProgress,false), status);
-            column.AddItem("Waiting", null, (r) => SetTaskStatus(r, KanbanCategory.Waiting,false), status);
-            column.AddItem("Complete", null, (r) => SetTaskStatus(r, KanbanCategory.Complete,true), status);
+            column.AddItem("To Do", null, (r) => SetTaskStatus(r, KanbanStatus.Open,false), status);
+            column.AddItem("In Progress", null, (r) => SetTaskStatus(r, KanbanStatus.InProgress,false), status);
+            column.AddItem("Waiting", null, (r) => SetTaskStatus(r, KanbanStatus.Waiting,false), status);
+            column.AddItem("Complete", null, (r) => SetTaskStatus(r, KanbanStatus.Complete,true), status);
             column.AddSeparator();
             column.AddItem("Email Task", PRSDesktop.Resources.email, EmailTask);
 
         }
         
-        private void SetTaskStatus(CoreRow row, KanbanCategory category, bool complete)
+        private void SetTaskStatus(CoreRow row, KanbanStatus category, bool complete)
         {
             using (new WaitCursor())
             {
@@ -138,7 +138,7 @@ namespace PRSDesktop
                 },
                 new DynamicGridColumn()
                 {
-                    ColumnName = CoreUtils.GetFullPropertyName<JobDocumentSetMileStoneKanban, KanbanCategory>(x => x.Kanban.Status, "."), 
+                    ColumnName = CoreUtils.GetFullPropertyName<JobDocumentSetMileStoneKanban, KanbanStatus>(x => x.Kanban.Status, "."), 
                     Caption = "Status",
                     Width = 70,
                     Alignment = Alignment.MiddleCenter
@@ -181,7 +181,7 @@ namespace PRSDesktop
             kanban.EmployeeLink.ID = App.EmployeeID;
             kanban.ManagerLink.ID = App.EmployeeID;
             kanban.JobLink.ID = JobID;
-            kanban.Status = KanbanCategory.Open;
+            kanban.Status = KanbanStatus.Open;
             var settings = GetJobPanelSettings?.Invoke();
             kanban.Type.ID = settings?.DocumentMilestoneKanbanType.ID ?? Guid.Empty;
 

+ 1 - 1
prs.desktop/Panels/Jobs/JobRequisitionGrid.cs

@@ -95,7 +95,7 @@ namespace PRSDesktop
             kanban.JobLink.ID = Job.ID;
             kanban.JobLink.Synchronise(Job);
             kanban.Title = "New Job Requisition Raised for Ordering (Job " + jobnumber + " (" + jobrequi.Number + ")" + ")";
-            kanban.Status = KanbanCategory.Open;
+            kanban.Status = KanbanStatus.Open;
             kanban.Description = "Requisition number: " + jobnumber + " (" + jobrequi.Number + "):" + System.Environment.NewLine;
             CoreTable table = new Client<JobRequisitionItem>().Query
                 (

+ 1 - 1
prs.desktop/Panels/Notifications/NotificationUtils.cs

@@ -203,7 +203,7 @@ namespace PRSDesktop
                     Title = notification.Title,
                     Notes = new[] { notification.Description },
 
-                    Status = KanbanCategory.Open
+                    Status = KanbanStatus.Open
                 };
                 task.JobLink.ID = notification.Job.ID;
                 task.EmployeeLink.ID = employeeid;

+ 6 - 6
prs.desktop/Panels/Tasks/KanbanResources.xaml.cs

@@ -103,16 +103,16 @@ public class ViewModeToKanbanTemplateConverter : IValueConverter
     }
 }
 
-public class KanbanStatusToStringConverter : UtilityConverter<KanbanCategory, string>
+public class KanbanStatusToStringConverter : UtilityConverter<KanbanStatus, string>
 {
-    public override string Convert(KanbanCategory value)
+    public override string Convert(KanbanStatus value)
     {
         return value switch
         {
-            KanbanCategory.InProgress => "In Progress",
-            KanbanCategory.Waiting => "Waiting for Others",
-            KanbanCategory.Complete => "Completed",
-            KanbanCategory.Open or _ => "To Do",
+            KanbanStatus.InProgress => "In Progress",
+            KanbanStatus.Waiting => "Waiting for Others",
+            KanbanStatus.Complete => "Completed",
+            KanbanStatus.Open or _ => "To Do",
         };
     }
 }

+ 1 - 1
prs.desktop/Panels/Tasks/TaskModel.cs

@@ -28,7 +28,7 @@ public class TaskModel
     public string JobName { get; set; }
     public bool Checked { get; set; }
 
-    public KanbanCategory Status { get; set; }
+    public KanbanStatus Status { get; set; }
     public Guid EmployeeCategory { get; set; }
     public KanbanType Type { get; set; }
     public int Number { get; set; }

+ 9 - 9
prs.desktop/Panels/Tasks/TaskPanel.xaml.cs

@@ -124,19 +124,19 @@ namespace PRSDesktop
                 foreach (var kanban in kanbans)
                 {
                     kanban.Completed = completed;
-                    kanban.Status = KanbanCategory.Complete;
+                    kanban.Status = KanbanStatus.Complete;
                 }
 
                 Client.Save(kanbans, $"Kanban Marked as Complete");
             });
             control.Refresh();
         }
-        private void AddChangeStatusButton(ITaskControl control, TaskModel[] models, MenuItem menu, string header, KanbanCategory status)
+        private void AddChangeStatusButton(ITaskControl control, TaskModel[] models, MenuItem menu, string header, KanbanStatus status)
         {
             menu.AddItem(header, null, Tuple.Create(control, models, status), ChangeStatus_Click);
         }
 
-        private void ChangeStatus_Click(Tuple<ITaskControl, TaskModel[], KanbanCategory> obj)
+        private void ChangeStatus_Click(Tuple<ITaskControl, TaskModel[], KanbanStatus> obj)
         {
             var (control, tasks, status) = obj;
             if (MessageBox.Show($"Are you sure you want to mark the selected tasks as {status}?", "Confirm Change Status",
@@ -147,7 +147,7 @@ namespace PRSDesktop
                 var kanbans = LoadKanbans(tasks, new Columns<Kanban>(x => x.ID, x => x.Completed, x => x.Status));
                 foreach (var kanban in kanbans)
                 {
-                    if (status == KanbanCategory.Complete)
+                    if (status == KanbanStatus.Complete)
                     {
                         kanban.Completed = DateTime.Now;
                     }
@@ -441,7 +441,7 @@ namespace PRSDesktop
                                 new Client<RequisitionKanban>().Save(link, "Converting Task -> Requisition", (_, __) => { });*/
 
                                 progress.Report("Updating Task");
-                                kanban.Status = KanbanCategory.Open;
+                                kanban.Status = KanbanStatus.Open;
                                 kanban.Completed = DateTime.MinValue;
                                 kanban.Title += $" (Requi #{result.Number})";
                                 new Client<Kanban>().Save(kanban, "Converted to Requisition", (_, __) => { });
@@ -483,9 +483,9 @@ namespace PRSDesktop
 
                 var changeStatus = new MenuItem { Header = "Change Status" };
 
-                AddChangeStatusButton(control, models, changeStatus, "Open", KanbanCategory.Open);
-                AddChangeStatusButton(control, models, changeStatus, "In Progress", KanbanCategory.InProgress);
-                AddChangeStatusButton(control, models, changeStatus, "Waiting", KanbanCategory.Waiting);
+                AddChangeStatusButton(control, models, changeStatus, "Open", KanbanStatus.Open);
+                AddChangeStatusButton(control, models, changeStatus, "In Progress", KanbanStatus.InProgress);
+                AddChangeStatusButton(control, models, changeStatus, "Waiting", KanbanStatus.Waiting);
 
                 if (models.Any(x => x.CompletedDate.IsEmpty()))
                 {
@@ -1016,7 +1016,7 @@ namespace PRSDesktop
                 {
                     kanban.Title = "New Task";
                     kanban.Description = "";
-                    kanban.Status = KanbanCategory.Open;
+                    kanban.Status = KanbanStatus.Open;
                     kanban.DueDate = DateTime.Today;
                     kanban.Private = false;
                     kanban.JobLink.ID = Job?.ID ?? Guid.Empty;

+ 11 - 11
prs.desktop/Panels/Tasks/TasksByStatusControl.xaml.cs

@@ -33,7 +33,7 @@ namespace PRSDesktop;
 
 public class TasksByStatusColumn : INotifyPropertyChanged
 {
-    public KanbanCategory Status { get; }
+    public KanbanStatus Status { get; }
 
     public string Title { get; }
 
@@ -43,7 +43,7 @@ public class TasksByStatusColumn : INotifyPropertyChanged
 
     public ObservableCollection<TaskModel> Tasks { get; } = new();
 
-    public TasksByStatusColumn(KanbanCategory status, string title)
+    public TasksByStatusColumn(KanbanStatus status, string title)
     {
         Status = status;
         Title = title;
@@ -194,19 +194,19 @@ public partial class TasksByStatusControl : UserControl, ITaskControl, INotifyPr
 
         Columns.Clear();
 
-        Columns.Add(new TasksByStatusColumn(KanbanCategory.Open, "To Do"));
+        Columns.Add(new TasksByStatusColumn(KanbanStatus.Open, "To Do"));
 
-        Columns.Add(new TasksByStatusColumn(KanbanCategory.InProgress, "In Progress"));
+        Columns.Add(new TasksByStatusColumn(KanbanStatus.InProgress, "In Progress"));
 
-        Columns.Add(new TasksByStatusColumn(KanbanCategory.Waiting, "Waiting for Others"));
+        Columns.Add(new TasksByStatusColumn(KanbanStatus.Waiting, "Waiting for Others"));
 
         if (Host.KanbanSettings.StatusSettings.IncludeCompleted)
-            Columns.Add(new TasksByStatusColumn(KanbanCategory.Complete, "Completed"));
+            Columns.Add(new TasksByStatusColumn(KanbanStatus.Complete, "Completed"));
 
         Columns.SupressNotification = false;
     }
 
-    private TasksByStatusColumn? GetColumn(KanbanCategory category)
+    private TasksByStatusColumn? GetColumn(KanbanStatus category)
     {
         return Columns.FirstOrDefault(x => x.Status.Equals(category));
     }
@@ -483,7 +483,7 @@ public partial class TasksByStatusControl : UserControl, ITaskControl, INotifyPr
         }
     }
 
-    private void ChangeStatus(IEnumerable<TaskModel> tasks, KanbanCategory status)
+    private void ChangeStatus(IEnumerable<TaskModel> tasks, KanbanStatus status)
     {
         var models = tasks
             .Where(x => !x.Status.Equals(status))
@@ -493,7 +493,7 @@ public partial class TasksByStatusControl : UserControl, ITaskControl, INotifyPr
         {
             return;
         }
-        if(status == KanbanCategory.Complete)
+        if(status == KanbanStatus.Complete)
         {
             if (!MessageWindow.ShowYesNo($"Are you sure you want to complete the selected tasks?", "Confirm Completion"))
                 return;
@@ -506,7 +506,7 @@ public partial class TasksByStatusControl : UserControl, ITaskControl, INotifyPr
         {
             kanban.Status = status;
         }
-        if (status == KanbanCategory.Complete)
+        if (status == KanbanStatus.Complete)
         {
             foreach (var kanban in kanbans)
             {
@@ -526,7 +526,7 @@ public partial class TasksByStatusControl : UserControl, ITaskControl, INotifyPr
             model.Checked = false;
             model.Status = status;
         }
-        if (status == KanbanCategory.Complete)
+        if (status == KanbanStatus.Complete)
         {
             foreach (var model in models)
             {

+ 11 - 11
prs.desktop/Panels/Tasks/TasksByUserControl.xaml.cs

@@ -75,11 +75,11 @@ public class TasksByUserEmployeeCategory
 {
     public Guid EmployeeID { get; set; }
 
-    public KanbanCategory Status { get; set; }
+    public KanbanStatus Status { get; set; }
 
     public SuspendableObservableCollection<TaskModel> Tasks { get; set; } = new();
 
-    public TasksByUserEmployeeCategory(Guid employeeID, KanbanCategory status)
+    public TasksByUserEmployeeCategory(Guid employeeID, KanbanStatus status)
     {
         EmployeeID = employeeID;
         Status = status;
@@ -99,13 +99,13 @@ public class TasksByUserCategory : INotifyPropertyChanged
         }
     }
 
-    public KanbanCategory Status { get; set; }
+    public KanbanStatus Status { get; set; }
 
     public IEnumerable<TasksByUserEmployeeCategory> EmployeeCategories => EmployeeCategoryDictionary.Values;
 
     public Dictionary<Guid, TasksByUserEmployeeCategory> EmployeeCategoryDictionary { get; set; } = new();
 
-    public TasksByUserCategory(KanbanCategory status, bool collapsed)
+    public TasksByUserCategory(KanbanStatus status, bool collapsed)
     {
         Status = status;
         Collapsed = collapsed;
@@ -376,7 +376,7 @@ public partial class TasksByUserControl : UserControl, INotifyPropertyChanged, I
 
         foreach (var status in _statusOrder)
         {
-            if (status == KanbanCategory.Complete && !Host.KanbanSettings.UserSettings.IncludeCompleted)
+            if (status == KanbanStatus.Complete && !Host.KanbanSettings.UserSettings.IncludeCompleted)
             {
                 continue;
             }
@@ -399,12 +399,12 @@ public partial class TasksByUserControl : UserControl, INotifyPropertyChanged, I
         Model.Categories.SupressNotification = false;
     }
 
-    private static readonly KanbanCategory[] _statusOrder = new[]
+    private static readonly KanbanStatus[] _statusOrder = new[]
             {
-                KanbanCategory.Open,
-                KanbanCategory.InProgress,
-                KanbanCategory.Waiting,
-                KanbanCategory.Complete
+                KanbanStatus.Open,
+                KanbanStatus.InProgress,
+                KanbanStatus.Waiting,
+                KanbanStatus.Complete
             };
 
     private Columns<Kanban> GetKanbanColumns()
@@ -687,7 +687,7 @@ public partial class TasksByUserControl : UserControl, INotifyPropertyChanged, I
                 return;
             }
             var changingCategory = models.Any(x => !x.Status.Equals(category.Status));
-            var completing = changingCategory && category.Status == KanbanCategory.Complete;
+            var completing = changingCategory && category.Status == KanbanStatus.Complete;
             var completed = DateTime.Now;
 
             if (completing)

+ 1 - 1
prs.desktop/Utils/FormUtils.cs

@@ -57,7 +57,7 @@ namespace PRSDesktop
             kanban.DueDate = DateTime.Today;
             kanban.Title = $"Form - {form.Description}";
             kanban.Notes = new[] { "Created by desktop forms" };
-            kanban.Status = KanbanCategory.InProgress;
+            kanban.Status = KanbanStatus.InProgress;
             return kanban;
         }
 

+ 1 - 1
prs.scheduler/SchedulePlugin.cs

@@ -34,7 +34,7 @@ namespace Comal.TaskScheduler.Shared
             kanban.Title = Entity.ToString() + " - " + schedule.Title;
             kanban.Notes = new string[] { schedule.Description };
             kanban.ScheduleLink.ID = schedule.ID;
-            kanban.Status = KanbanCategory.Open;
+            kanban.Status = KanbanStatus.Open;
             kanban.EmployeeLink.ID = schedule.EmployeeLink.ID;
             kanban.ManagerLink.ID = schedule.ManagerLink.ID;
             kanban.DueDate = schedule.DueDate;

+ 18 - 29
prs.shared/Database Update Scripts/Update_7_54.cs

@@ -13,43 +13,32 @@ public class Update_7_54 : DatabaseUpdateScript
 {
     public override VersionNumber Version => new VersionNumber(7, 54);
 
-    private KanbanCategory? CalculateStatus(string category)
+    private KanbanStatus CalculateStatus(string? category)
     {
-        if (category.Equals("Open"))
-        {
-            return KanbanCategory.Open;
-        }
-        else if(category.Equals("In Progress"))
-        {
-            return KanbanCategory.InProgress;
-        }
-        else if (category.Equals("Waiting"))
-        {
-            return KanbanCategory.Waiting;
-        }
-        else if (category.Equals("Complete"))
-        {
-            return KanbanCategory.Complete;
-        }
-        else
-        {
-            return null;
-        }
+        if (String.IsNullOrWhiteSpace(category) || category.Equals("Open"))
+            return KanbanStatus.Open;
+        if(category.Equals("In Progress"))
+            return KanbanStatus.InProgress;
+        if (category.Equals("Waiting"))
+            return KanbanStatus.Waiting;
+        if (category.Equals("Complete"))
+            return KanbanStatus.Complete;
+        return KanbanStatus.Open;
     }
 
     public override bool Update()
     {
         var kanbans = DbFactory.Provider.Query(
-            new Filter<Kanban>(x => x.Category).IsNotEqualTo("").And(x => x.Category).IsNotEqualTo(null),
-            new Columns<Kanban>(x => x.Category).Add(x => x.ID).Add(x => x.Status)).ToList<Kanban>();
+            typeof(Kanban),
+            new Filter<Kanban>("Category").IsNotEqualTo(""),
+            new Columns<Kanban>(x => x.ID).Add(x => x.Status).Add("Category")
+            ).ToList<Kanban>();
         foreach(var kanban in kanbans)
         {
-            var newStatus = CalculateStatus(kanban.Category);
-            if (newStatus != null && kanban.Status != newStatus.Value)
-            {
-                kanban.Status = newStatus.Value;
-            }
-            kanban.Category = "";
+            var newStatus = CalculateStatus(CoreUtils.GetPropertyValue(kanban,"Category") as String);
+            if (kanban.Status != newStatus)
+                kanban.Status = newStatus;
+            CoreUtils.SetPropertyValue(kanban, "Category", "");
         }
         DbFactory.Provider.Save(kanbans);
 

+ 3 - 3
prs.stores/BaseStore.cs

@@ -112,7 +112,7 @@ namespace Comal.Stores
             Provider.Save(kanban);
         }
 
-        protected void UpdateTrackingKanban<TEntityKanban, TEntity, TEntityLink>(TEntity entity, Func<TEntity, KanbanCategory> category)
+        protected void UpdateTrackingKanban<TEntityKanban, TEntity, TEntityLink>(TEntity entity, Func<TEntity, KanbanStatus> status)
             where TEntityKanban : EntityKanban<TEntity, TEntityLink>, new()
             where TEntity : Entity
             where TEntityLink : IEntityLink<TEntity>, new()
@@ -134,8 +134,8 @@ namespace Comal.Stores
             );
             if (!kanbans.Rows.Any())
                 return;
-            var oldcategory = kanbans.Rows.First().Get<TEntityKanban, KanbanCategory>(c => c.Kanban.Status);
-            var newcategory = category(entity);
+            var oldcategory = kanbans.Rows.First().Get<TEntityKanban, KanbanStatus>(c => c.Kanban.Status);
+            var newcategory = status(entity);
             if (!Equals(newcategory, oldcategory))
             {
                 var kanban = kanbans.Rows.First().ToObject<RequisitionKanban, KanbanLink, Kanban>(x => x.Kanban);

+ 4 - 4
prs.stores/DeliveryStore.cs

@@ -128,10 +128,10 @@ namespace Comal.Stores
             UpdateTrackingKanban<DeliveryKanban, Delivery, DeliveryLink>(entity, d =>
             {
                 return !entity.Delivered.IsEmpty()
-                    ? KanbanCategory.Complete
+                    ? KanbanStatus.Complete
                     : entity.Assignment.IsValid()
-                        ? KanbanCategory.InProgress
-                        : KanbanCategory.Open;
+                        ? KanbanStatus.InProgress
+                        : KanbanStatus.Open;
             });
 
             //requi tracking kanban is usually updated in RequisitionStore, the requi is not necessarily saved when a delivery is completed
@@ -143,7 +143,7 @@ namespace Comal.Stores
                     foreach (CoreRow row in table.Rows)
                     {
                         Requisition requisition = row.ToObject<Requisition>();
-                        UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(requisition, e => { return KanbanCategory.Complete; });
+                        UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(requisition, e => { return KanbanStatus.Complete; });
                     }
                 }
             }

+ 5 - 5
prs.stores/JobRequisitionStore.cs

@@ -43,21 +43,21 @@ namespace PRSStores
             //                {
             //                    if (item.Status != JobRequisitionItemStatus.NotChecked) //no purchase order but at least one item has been checked
             //                    {
-            //                        return KanbanCategory.InProgress;
+            //                        return KanbanStatus.InProgress;
             //                    }
             //                    else
             //                        keepKanbanOpen = true;
             //                }
             //                else
-            //                    return KanbanCategory.Waiting; //at least one purchase order item not received, but also at least one purchase order has been raised
+            //                    return KanbanStatus.Waiting; //at least one purchase order item not received, but also at least one purchase order has been raised
             //            }
             //        }
             //        if (keepKanbanOpen)
-            //            return KanbanCategory.Open; //no purchase orders raised and no items have been checked to arrive here
+            //            return KanbanStatus.Open; //no purchase orders raised and no items have been checked to arrive here
             //        else
-            //            return KanbanCategory.Complete; //all jobrequiitem.purchaseorderitems have to be received AND keepKanbanOpen must have remained false to arrive here
+            //            return KanbanStatus.Complete; //all jobrequiitem.purchaseorderitems have to be received AND keepKanbanOpen must have remained false to arrive here
             //    }
-            //    return KanbanCategory.Open;
+            //    return KanbanStatus.Open;
             //});
         }
     }

+ 3 - 3
prs.stores/ManufacturingPacketStore.cs

@@ -17,10 +17,10 @@ namespace Comal.Stores
             UpdateTrackingKanban<ManufacturingPacketKanban, ManufacturingPacket, ManufacturingPacketLink>(entity, m => 
             {
                 if (entity.Completed != DateTime.MinValue || entity.Archived != DateTime.MinValue)
-                    return KanbanCategory.Complete;
+                    return KanbanStatus.Complete;
                 if (entity.Issued != DateTime.MinValue)
-                    return KanbanCategory.InProgress;
-                return KanbanCategory.Open;
+                    return KanbanStatus.InProgress;
+                return KanbanStatus.Open;
             });
         }
 

+ 3 - 3
prs.stores/PurchaseOrderStore.cs

@@ -16,10 +16,10 @@ namespace Comal.Stores
             UpdateTrackingKanban<PurchaseOrderKanban, PurchaseOrder, PurchaseOrderLink>(entity, p =>
             {
                 return p.Status == PurchaseOrderStatus.Closed
-                    ? KanbanCategory.Complete
+                    ? KanbanStatus.Complete
                     : p.Status.Equals(PurchaseOrderStatus.Issued)
-                        ? KanbanCategory.Waiting
-                        : KanbanCategory.Open;
+                        ? KanbanStatus.Waiting
+                        : KanbanStatus.Open;
             });
         }
 

+ 4 - 4
prs.stores/RequisitionItemStore.cs

@@ -15,17 +15,17 @@ namespace Comal.Stores
             UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(requi, r =>
             {
                 if (!r.Archived.Equals(DateTime.MinValue))
-                    return KanbanCategory.Complete;
+                    return KanbanStatus.Complete;
                 if (!r.Filled.Equals(DateTime.MinValue))
-                    return KanbanCategory.Waiting;
+                    return KanbanStatus.Waiting;
                 if (Provider.Query(
                         new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(r.ID)
                             .And(x=>x.Picked).IsNotEqualTo(DateTime.MinValue),
                         new Columns<RequisitionItem>(x => x.ID)
                     ).Rows.Any()
                    )
-                    return KanbanCategory.InProgress;
-                return KanbanCategory.Open;
+                    return KanbanStatus.InProgress;
+                return KanbanStatus.Open;
             });
         }
 

+ 5 - 5
prs.stores/RequisitionStore.cs

@@ -126,23 +126,23 @@ namespace Comal.Stores
             UpdateTrackingKanban<RequisitionKanban, Requisition, RequisitionLink>(entity, e =>
             {
                 if (!entity.Archived.Equals(DateTime.MinValue) || entity.TakenBy.IsValid())
-                    return KanbanCategory.Complete;
+                    return KanbanStatus.Complete;
                 if (entity.Delivery.IsValid())
                 {
                     if (entity.Delivery.Completed != DateTime.MinValue)
                     {
-                        return KanbanCategory.Complete;
+                        return KanbanStatus.Complete;
                     }
                 }
                 if (!entity.Filled.Equals(DateTime.MinValue))
-                    return KanbanCategory.Waiting;
+                    return KanbanStatus.Waiting;
                 if (Provider.Query(
                         new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(entity.ID),
                         new Columns<RequisitionItem>(x => x.ID)
                     ).Rows.Any()
                    )
-                    return KanbanCategory.InProgress;
-                return KanbanCategory.Open;
+                    return KanbanStatus.InProgress;
+                return KanbanStatus.Open;
             });
         }