|
|
@@ -10,99 +10,98 @@ using InABox.DynamicGrid;
|
|
|
using InABox.WPF;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
|
-namespace PRSDesktop
|
|
|
+namespace PRSDesktop;
|
|
|
+
|
|
|
+public class StockLocationGrid : DynamicDataGrid<StockLocation>
|
|
|
{
|
|
|
- public class StockLocationGrid : DynamicDataGrid<StockLocation>
|
|
|
+ private bool bShowAll;
|
|
|
+ public Button ShowAllBtn;
|
|
|
+ public Button StockTakeBtn;
|
|
|
+
|
|
|
+ protected override void Init()
|
|
|
{
|
|
|
- private bool bShowAll;
|
|
|
- public Button ShowAllBtn;
|
|
|
- public Button StockTakeBtn;
|
|
|
+ base.Init();
|
|
|
+ ShowAllBtn = AddButton("Show All", PRSDesktop.Resources.parcel.AsBitmapImage(Color.White), ToggleHiddenJobs);
|
|
|
|
|
|
- protected override void Init()
|
|
|
- {
|
|
|
- base.Init();
|
|
|
- ShowAllBtn = AddButton("Show All", PRSDesktop.Resources.parcel.AsBitmapImage(Color.White), ToggleHiddenJobs);
|
|
|
+ if (Security.CanEdit<StockMovement>())
|
|
|
+ StockTakeBtn = AddButton("Stock Take", PRSDesktop.Resources.rack.AsBitmapImage(Color.White), DoStockTake);
|
|
|
+ HiddenColumns.Add(x => x.Job.ID);
|
|
|
|
|
|
- if (Security.CanEdit<StockMovement>())
|
|
|
- StockTakeBtn = AddButton("Stock Take", PRSDesktop.Resources.rack.AsBitmapImage(Color.White), DoStockTake);
|
|
|
- HiddenColumns.Add(x => x.Job.ID);
|
|
|
+ //HiddenColumns.Add(x => x.Movements);
|
|
|
|
|
|
- //HiddenColumns.Add(x => x.Movements);
|
|
|
+ OnCustomiseEditor += CustomiseEditor;
|
|
|
+ }
|
|
|
+ protected override void DoReconfigure(FluentList<DynamicGridOption> options)
|
|
|
+ {
|
|
|
+ base.DoReconfigure(options);
|
|
|
+ options.AddRange(
|
|
|
+ DynamicGridOption.MultiSelect,
|
|
|
+ DynamicGridOption.FilterRows,
|
|
|
+ DynamicGridOption.SelectColumns
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
- OnCustomiseEditor += CustomiseEditor;
|
|
|
- }
|
|
|
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
|
|
|
+ private bool DoStockTake(Button sender, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ if (!rows.Any())
|
|
|
{
|
|
|
- base.DoReconfigure(options);
|
|
|
- options.AddRange(
|
|
|
- DynamicGridOption.MultiSelect,
|
|
|
- DynamicGridOption.FilterRows,
|
|
|
- DynamicGridOption.SelectColumns
|
|
|
- );
|
|
|
+ MessageBox.Show("Please select at least one row for Stocktake!");
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- private bool DoStockTake(Button sender, CoreRow[] rows)
|
|
|
- {
|
|
|
- if (!rows.Any())
|
|
|
- {
|
|
|
- MessageBox.Show("Please select at least one row for Stocktake!");
|
|
|
- return false;
|
|
|
- }
|
|
|
+ var page = new StockTakeWindow(rows);
|
|
|
|
|
|
- var page = new StockTakeWindow(rows);
|
|
|
+ page.Show();
|
|
|
|
|
|
- page.Show();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- return true;
|
|
|
- }
|
|
|
|
|
|
+ private bool ToggleHiddenJobs(Button sender, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ bShowAll = !bShowAll;
|
|
|
+ UpdateButton(sender, PRSDesktop.Resources.parcel.AsBitmapImage(Color.White), bShowAll ? "Active Only" : "Show All");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- private bool ToggleHiddenJobs(Button sender, CoreRow[] rows)
|
|
|
- {
|
|
|
- bShowAll = !bShowAll;
|
|
|
- UpdateButton(sender, PRSDesktop.Resources.parcel.AsBitmapImage(Color.White), bShowAll ? "Active Only" : "Show All");
|
|
|
- return true;
|
|
|
- }
|
|
|
+ protected override void Reload(Filters<StockLocation> criteria, Columns<StockLocation> columns, ref SortOrder<StockLocation>? sort, Action<CoreTable?, Exception?> action)
|
|
|
+ {
|
|
|
+ if (!bShowAll)
|
|
|
+ criteria.Add(new Filter<StockLocation>(x => x.Active).IsEqualTo(true));
|
|
|
+ base.Reload(criteria, columns, ref sort, action);
|
|
|
+ }
|
|
|
|
|
|
- protected override void Reload(Filters<StockLocation> criteria, Columns<StockLocation> columns, ref SortOrder<StockLocation>? sort, Action<CoreTable?, Exception?> action)
|
|
|
+ protected override void DoValidate(StockLocation[] items, List<string> errors)
|
|
|
+ {
|
|
|
+ base.DoValidate(items, errors);
|
|
|
+ var bHoldings = false;
|
|
|
+ var bDefault = false;
|
|
|
+ var bTransient = false;
|
|
|
+ foreach (var item in items)
|
|
|
{
|
|
|
- if (!bShowAll)
|
|
|
- criteria.Add(new Filter<StockLocation>(x => x.Active).IsEqualTo(true));
|
|
|
- base.Reload(criteria, columns, ref sort, action);
|
|
|
+ bHoldings = bHoldings;
|
|
|
+ bDefault = bDefault || (item.Default && !item.Active);
|
|
|
+ bTransient = bTransient || (item.Default && item.Type.Equals(StockLocationType.Transient));
|
|
|
}
|
|
|
|
|
|
- protected override void DoValidate(StockLocation[] items, List<string> errors)
|
|
|
- {
|
|
|
- base.DoValidate(items, errors);
|
|
|
- var bHoldings = false;
|
|
|
- var bDefault = false;
|
|
|
- var bTransient = false;
|
|
|
- foreach (var item in items)
|
|
|
- {
|
|
|
- bHoldings = bHoldings;
|
|
|
- bDefault = bDefault || (item.Default && !item.Active);
|
|
|
- bTransient = bTransient || (item.Default && item.Type.Equals(StockLocationType.Transient));
|
|
|
- }
|
|
|
-
|
|
|
- if (bHoldings)
|
|
|
- errors.Add("Non-Empty locations must always be [Active]!");
|
|
|
- if (bDefault)
|
|
|
- errors.Add("Default locations must always be [Active]!");
|
|
|
- if (bTransient)
|
|
|
- errors.Add("Default locations must always be [Permanent]!");
|
|
|
- }
|
|
|
+ if (bHoldings)
|
|
|
+ errors.Add("Non-Empty locations must always be [Active]!");
|
|
|
+ if (bDefault)
|
|
|
+ errors.Add("Default locations must always be [Active]!");
|
|
|
+ if (bTransient)
|
|
|
+ errors.Add("Default locations must always be [Permanent]!");
|
|
|
+ }
|
|
|
|
|
|
- private void CustomiseEditor(IDynamicEditorForm sender, StockLocation[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
|
+ private void CustomiseEditor(IDynamicEditorForm sender, StockLocation[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
|
+ {
|
|
|
+ if (string.Equals(column.ColumnName, "Active"))
|
|
|
{
|
|
|
- if (string.Equals(column.ColumnName, "Active"))
|
|
|
- {
|
|
|
- //var bHasHoldings = items.FirstOrDefault().Holdings != 0;
|
|
|
- //editor.Editable = bHasHoldings ? Editable.Disabled : Editable.Enabled;
|
|
|
- //if (bHasHoldings)
|
|
|
- var item = items?.FirstOrDefault();
|
|
|
- if (item is not null)
|
|
|
- item.Active = true;
|
|
|
- }
|
|
|
+ //var bHasHoldings = items.FirstOrDefault().Holdings != 0;
|
|
|
+ //editor.Editable = bHasHoldings ? Editable.Disabled : Editable.Enabled;
|
|
|
+ //if (bHasHoldings)
|
|
|
+ var item = items?.FirstOrDefault();
|
|
|
+ if (item is not null)
|
|
|
+ item.Active = true;
|
|
|
}
|
|
|
}
|
|
|
}
|