123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using NPOI.SS.Formula.Functions;
- namespace PRSDesktop
- {
- public class StockLocationGrid : DynamicDataGrid<StockLocation>
- {
- private bool bShowAll;
- public Button ShowAllBtn;
- public Button StockTakeBtn;
- public StockLocationGrid()
- {
- Options.AddRange(
- DynamicGridOption.MultiSelect,
- DynamicGridOption.FilterRows,
- DynamicGridOption.SelectColumns
- );
- 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);
- //HiddenColumns.Add(x => x.Movements);
- OnCustomiseEditor += CustomiseEditor;
- }
- 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);
- page.Show();
- 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 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]!");
- }
- private void CustomiseEditor(IDynamicEditorForm sender, StockLocation[]? items, DynamicGridColumn column, BaseEditor editor)
- {
- 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;
- }
- }
- }
- }
|