|
@@ -1,16 +1,21 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
using System.Windows.Controls;
|
|
|
+using System.Windows.Media.Imaging;
|
|
|
using Comal.Classes;
|
|
|
using InABox.Clients;
|
|
|
using InABox.Core;
|
|
|
using InABox.DynamicGrid;
|
|
|
+using InABox.Wpf;
|
|
|
using InABox.WPF;
|
|
|
|
|
|
namespace PRSDesktop
|
|
|
{
|
|
|
public class SupplierBillLineGrid : DynamicOneToManyGrid<Bill, BillLine>
|
|
|
{
|
|
|
+ private static readonly BitmapImage pencil = InABox.Wpf.Resources.pencil.AsBitmapImage();
|
|
|
+
|
|
|
public SupplierBillLineGrid()
|
|
|
{
|
|
|
Options
|
|
@@ -34,12 +39,57 @@ namespace PRSDesktop
|
|
|
HiddenColumns.Add(x => x.IncTax);
|
|
|
HiddenColumns.Add(x => x.Description);
|
|
|
|
|
|
+ ActionColumns.Add(new DynamicImageColumn(pencil, BillLineEdit_Click));
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void Load(object item, Func<Type, CoreTable>? PageDataHandler)
|
|
|
+ {
|
|
|
+ Refresh(true, false);
|
|
|
+ base.Load(item, type =>
|
|
|
+ {
|
|
|
+ var data = PageDataHandler?.Invoke(type);
|
|
|
+ if(data is null && type == typeof(BillLine))
|
|
|
+ {
|
|
|
+ data = new Client<BillLine>().Query(
|
|
|
+ new Filter<BillLine>(x => x.BillLink.ID).IsEqualTo(Item.ID),
|
|
|
+ DynamicGridUtils.LoadEditorColumns(DataColumns()),
|
|
|
+ LookupFactory.DefineSort<BillLine>());
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool BillLineEdit_Click(CoreRow? row)
|
|
|
+ {
|
|
|
+ if(row is null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var item = LoadItem(row);
|
|
|
+ if (EditItems(new BillLine[] { item }))
|
|
|
+ {
|
|
|
+ SaveItem(item);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void ConfigureColumns(DynamicGridColumns columns)
|
|
|
+ {
|
|
|
+ base.ConfigureColumns(columns);
|
|
|
+
|
|
|
+ var orderItemColumn = columns.Find(x => x.ColumnName == $"{nameof(BillLine.OrderItem)}.{nameof(BillLine.OrderItem.ID)}");
|
|
|
+ if (orderItemColumn != null)
|
|
|
+ {
|
|
|
+ orderItemColumn.Editor.Editable = Editable.DisabledOnDirectEdit;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private bool ImportPOLines(Button arg1, CoreRow[] arg2)
|
|
|
{
|
|
|
MultiSelectDialog<PurchaseOrderItem> dlg = new MultiSelectDialog<PurchaseOrderItem>(
|
|
|
- new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(Item.SupplierLink.ID).And(x => x.PurchaseOrderLink.ClosedDate).IsEqualTo(DateTime.MinValue),
|
|
|
+ new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(Item.SupplierLink.ID)
|
|
|
+ .And(x => x.PurchaseOrderLink.ClosedDate).IsEqualTo(DateTime.MinValue),
|
|
|
new Columns<PurchaseOrderItem>
|
|
|
(
|
|
|
x => x.ID,
|
|
@@ -72,7 +122,7 @@ namespace PRSDesktop
|
|
|
);
|
|
|
foreach (var row in items.Rows)
|
|
|
{
|
|
|
- var line = new BillLine();
|
|
|
+ var line = CreateItem();
|
|
|
|
|
|
line.OrderItem.ID = row.Get<PurchaseOrderItem, Guid>(x => x.ID);
|
|
|
line.OrderItem.PurchaseOrderLink.ID = row.Get<PurchaseOrderItem, Guid>(x => x.PurchaseOrderLink.ID);
|