|
@@ -4,6 +4,7 @@ using System.Linq;
|
|
|
using System.Linq.Expressions;
|
|
|
using System.Reflection;
|
|
|
using System.Windows;
|
|
|
+using System.Windows.Controls;
|
|
|
using System.Windows.Media;
|
|
|
using System.Windows.Media.Imaging;
|
|
|
using Comal.Classes;
|
|
@@ -35,6 +36,8 @@ public class StockSummaryGrid : DynamicDataGrid<StockSummary>, IDataModelSource
|
|
|
public Guid[] SupplierIDs { get; set; }
|
|
|
|
|
|
private StockSummaryMinimumStockBehaviour MinStockBehaviour { get; set; }
|
|
|
+
|
|
|
+ private Button OrderButton;
|
|
|
|
|
|
public StockSummaryGrid() : base()
|
|
|
{
|
|
@@ -47,6 +50,7 @@ public class StockSummaryGrid : DynamicDataGrid<StockSummary>, IDataModelSource
|
|
|
|
|
|
HiddenColumns.Add(x => x.Product.ID);
|
|
|
HiddenColumns.Add(x => x.Product.Issues);
|
|
|
+ HiddenColumns.Add(x => x.Product.Supplier.SupplierLink.ID);
|
|
|
HiddenColumns.Add(x => x.Issues);
|
|
|
HiddenColumns.Add(x => x.Style.ID);
|
|
|
HiddenColumns.Add(x => x.Job.ID);
|
|
@@ -73,6 +77,70 @@ public class StockSummaryGrid : DynamicDataGrid<StockSummary>, IDataModelSource
|
|
|
OnCellDoubleClick += StockSummaryGrid_OnCellDoubleClick;
|
|
|
|
|
|
MinStockBehaviour = new GlobalConfiguration<StockSummaryPanelSettings>().Load().MinimumStockBehaviour;
|
|
|
+
|
|
|
+ OrderButton = AddButton("Order Stock", PRSDesktop.Resources.purchase.ToBitmapImage(), OrderStock_Click);
|
|
|
+ OrderButton.IsEnabled = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void SelectItems(CoreRow[]? rows)
|
|
|
+ {
|
|
|
+ base.SelectItems(rows);
|
|
|
+
|
|
|
+ OrderButton.IsEnabled = rows is not null && rows.Length > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool OrderStock_Click(Button button, CoreRow[] rows)
|
|
|
+ {
|
|
|
+ if(rows.Length == 0)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ var items = rows.ToObjects<StockSummary>().ToArray();
|
|
|
+
|
|
|
+ var order = new PurchaseOrder();
|
|
|
+ order.Description = "Purchase Order created from Stock Forecast Screen";
|
|
|
+ order.RaisedBy.ID = App.EmployeeID;
|
|
|
+ order.IssuedBy.ID = App.EmployeeID;
|
|
|
+ order.IssuedDate = DateTime.Today;
|
|
|
+
|
|
|
+ var orderItems = new List<PurchaseOrderItem>();
|
|
|
+
|
|
|
+ foreach(var stockSummary in items)
|
|
|
+ {
|
|
|
+ var orderItem = new PurchaseOrderItem();
|
|
|
+ orderItem.Product.ID = stockSummary.Product.ID;
|
|
|
+ orderItem.Style.ID = stockSummary.Style.ID;
|
|
|
+ orderItem.Job.ID = stockSummary.Job.ID;
|
|
|
+ orderItem.Dimensions.CopyFrom(stockSummary.Dimensions);
|
|
|
+ orderItem.Qty = Math.Max(-stockSummary.BalanceAvailable, 0);
|
|
|
+ orderItems.Add(orderItem);
|
|
|
+ }
|
|
|
+ LookupFactory.DoLookups<PurchaseOrderItem, Product, ProductLink>(
|
|
|
+ orderItems.Select(x => new Tuple<PurchaseOrderItem, Guid>(x, x.Product.ID)),
|
|
|
+ x => x.Product);
|
|
|
+ LookupFactory.DoLookups<PurchaseOrderItem, ProductStyle, ProductStyleLink>(
|
|
|
+ orderItems.Select(x => new Tuple<PurchaseOrderItem, Guid>(x, x.Style.ID)),
|
|
|
+ x => x.Style);
|
|
|
+ LookupFactory.DoLookups<PurchaseOrderItem, Job, JobLink>(
|
|
|
+ orderItems.Select(x => new Tuple<PurchaseOrderItem, Guid>(x, x.Job.ID)),
|
|
|
+ x => x.Job);
|
|
|
+
|
|
|
+ if (DynamicGridUtils.EditEntity(order, t =>
|
|
|
+ {
|
|
|
+ if (t == typeof(PurchaseOrderItem))
|
|
|
+ {
|
|
|
+ var table = new CoreTable();
|
|
|
+ table.LoadColumns(typeof(PurchaseOrderItem));
|
|
|
+ table.LoadRows(orderItems);
|
|
|
+ return table;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }, preloadPages: true))
|
|
|
+ {
|
|
|
+ MessageWindow.ShowMessage("Purchase order created.", "Success.");
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
private BitmapImage? Issues_Image(CoreRow? row)
|
|
@@ -486,13 +554,12 @@ public class StockSummaryGrid : DynamicDataGrid<StockSummary>, IDataModelSource
|
|
|
);
|
|
|
query.Query();
|
|
|
var holdings = query.Get<StockHolding>();
|
|
|
- Columns<StockHolding> holdingcolumns = new Columns<StockHolding>(holdings.Columns.Select(x => x.ColumnName));
|
|
|
+ var holdingcolumns = new Columns<StockHolding>(holdings.Columns.Select(x => x.ColumnName));
|
|
|
|
|
|
var orders = query.Get<PurchaseOrderItem>();
|
|
|
- Columns<PurchaseOrderItem> ordercolumns = new Columns<PurchaseOrderItem>(orders.Columns.Select(x => x.ColumnName));
|
|
|
+ var ordercolumns = new Columns<PurchaseOrderItem>(orders.Columns.Select(x => x.ColumnName));
|
|
|
|
|
|
-
|
|
|
- CoreTable table = new CoreTable();
|
|
|
+ var table = new CoreTable();
|
|
|
table.LoadColumns(columns);
|
|
|
|
|
|
if (o != null)
|