|
@@ -3,6 +3,7 @@ using InABox.Clients;
|
|
|
using InABox.Core;
|
|
|
using InABox.DynamicGrid;
|
|
|
using Microsoft.CodeAnalysis.VisualBasic.Syntax;
|
|
|
+using Org.BouncyCastle.Asn1.Mozilla;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
@@ -30,6 +31,25 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
|
|
|
{
|
|
|
public StockHolding From { get; private init; }
|
|
|
|
|
|
+ public enum RelocationMode
|
|
|
+ {
|
|
|
+ Issue,
|
|
|
+ Transfer,
|
|
|
+ ReleaseAllocations
|
|
|
+ }
|
|
|
+
|
|
|
+ private RelocationMode _mode;
|
|
|
+ public RelocationMode Mode
|
|
|
+ {
|
|
|
+ get => _mode;
|
|
|
+ set
|
|
|
+ {
|
|
|
+ _mode = value;
|
|
|
+
|
|
|
+ UpdateMode();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public bool ShowHeader => ShowFrom || IsTargetEditable || IsJobEditable;
|
|
|
|
|
|
private bool _showFrom = true;
|
|
@@ -102,23 +122,10 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
|
|
|
OnPropertyChanged($"{nameof(Job)}.{nameof(Job.JobNumber)}");
|
|
|
OnPropertyChanged($"{nameof(Job)}.{nameof(Job.Name)}");
|
|
|
|
|
|
- var jobID = value?.ID ?? Guid.Empty;
|
|
|
- foreach(var item in Grid.Items)
|
|
|
- {
|
|
|
- if(item.JRI.ID != Guid.Empty && item.JRI.Job.ID != jobID)
|
|
|
- {
|
|
|
- item.Editable = false;
|
|
|
- item.Issued = 0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- item.Editable = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ UpdateMode();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private StockLocation? _to;
|
|
|
public StockLocation? To
|
|
|
{
|
|
@@ -134,6 +141,9 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
|
|
|
}
|
|
|
|
|
|
private bool _requireChangeTarget = false;
|
|
|
+ /// <summary>
|
|
|
+ /// Require that the target location be changed before allowing the "Save" button to be clicked.
|
|
|
+ /// </summary>
|
|
|
public bool RequireChangeTarget
|
|
|
{
|
|
|
get => _requireChangeTarget;
|
|
@@ -177,7 +187,7 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public StockHoldingRelocationWindow(StockHolding from, IEnumerable<JobRequisitionItem> items)
|
|
|
+ public StockHoldingRelocationWindow(StockHolding from, IEnumerable<JobRequisitionItem> items, RelocationMode mode)
|
|
|
{
|
|
|
Client.EnsureColumns(from, Columns.None<StockHolding>().Add(x => x.Location.Code));
|
|
|
|
|
@@ -186,6 +196,50 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
|
|
|
InitializeComponent();
|
|
|
|
|
|
SetRequisitionItems(items);
|
|
|
+ Mode = mode;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateMode()
|
|
|
+ {
|
|
|
+ if(Mode == RelocationMode.Issue)
|
|
|
+ {
|
|
|
+ var jobID = Job?.ID ?? Guid.Empty;
|
|
|
+ foreach(var item in Grid.Items)
|
|
|
+ {
|
|
|
+ if(item.JRI.ID != Guid.Empty && item.JRI.Job.ID != jobID)
|
|
|
+ {
|
|
|
+ item.Editable = false;
|
|
|
+ item.Issued = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ item.Editable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Title = "Issue Items";
|
|
|
+ IsJobEditable = true;
|
|
|
+ IsTargetEditable = false;
|
|
|
+ ShowFrom = true;
|
|
|
+ }
|
|
|
+ else if(Mode == RelocationMode.Transfer)
|
|
|
+ {
|
|
|
+ foreach(var item in Grid.Items)
|
|
|
+ {
|
|
|
+ item.Editable = item.JRI.ID == Guid.Empty || Security.IsAllowed<CanEditAllocatedJobRequisitions>();
|
|
|
+ }
|
|
|
+ IsJobEditable = true;
|
|
|
+ IsTargetEditable = true;
|
|
|
+ ShowFrom = false;
|
|
|
+ RequireChangeTarget = true;
|
|
|
+ Title = "Transfer Stock";
|
|
|
+ }
|
|
|
+ else if(Mode == RelocationMode.ReleaseAllocations)
|
|
|
+ {
|
|
|
+ ShowFrom = false;
|
|
|
+ IsTargetEditable = false;
|
|
|
+ IsJobEditable = false;
|
|
|
+ Title = "Release Stock";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void Grid_PropertyChanged(object sender, PropertyChangedEventArgs e)
|