|
@@ -16,6 +16,7 @@ using System.IO;
|
|
|
using System.Collections.ObjectModel;
|
|
|
using System.Windows.Media;
|
|
|
using System.Runtime.CompilerServices;
|
|
|
+using SuperSocket.ClientEngine;
|
|
|
|
|
|
namespace PRSDesktop;
|
|
|
|
|
@@ -46,6 +47,8 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
{
|
|
|
private SupplierBillPanelSettings settings;
|
|
|
|
|
|
+ private SupplierBillEditLayout EditLayout;
|
|
|
+
|
|
|
public SupplierBillPanel()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -69,6 +72,14 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
() => (DataModel(Selection.Selected) as IDataModel<Bill>)!,
|
|
|
() => Bills.Refresh(false, true),
|
|
|
true);
|
|
|
+
|
|
|
+ host.CreateSetupSeparator();
|
|
|
+
|
|
|
+ host.CreateSetupActionIfCanView<BillType>("Bill Types", PRSDesktop.Resources.bill, (action) =>
|
|
|
+ {
|
|
|
+ var list = new MasterList(typeof(BillType));
|
|
|
+ list.ShowDialog();
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
public string SectionName => "Supplier Bills";
|
|
@@ -98,12 +109,69 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
settings.ViewType == ScreenViewType.Details ? DynamicSplitPanelView.Detail : DynamicSplitPanelView.Combined;
|
|
|
SplitPanel.AnchorWidth = settings.AnchorWidth;
|
|
|
|
|
|
- Bill.SetLayoutType<VerticalDynamicEditorGridLayout>();
|
|
|
+ EditLayout = new();
|
|
|
+ EditLayout.Approve += EditLayout_Approve;
|
|
|
+
|
|
|
+ Bill.SetLayout(EditLayout);
|
|
|
Bills.Refresh(true, false);
|
|
|
|
|
|
BillPanelDocumentCache.Cache.ClearOld();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ #region Approval
|
|
|
+
|
|
|
+ private BillApproval? _approval = null;
|
|
|
+
|
|
|
+ private void EditLayout_Approve()
|
|
|
+ {
|
|
|
+ if (_approval is null) return;
|
|
|
+
|
|
|
+ if(_approval.Approved == DateTime.MinValue)
|
|
|
+ {
|
|
|
+ _approval.Approved = DateTime.Now;
|
|
|
+ EditLayout.IsApproved = true;
|
|
|
+ Client.Save(_approval, "Approved by user.");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _approval.Approved = DateTime.MinValue;
|
|
|
+ EditLayout.IsApproved = false;
|
|
|
+ Client.Save(_approval, "Unapproved by user.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateApproval()
|
|
|
+ {
|
|
|
+ if(_bills is not null && _bills.Length == 1)
|
|
|
+ {
|
|
|
+ _approval = Client.Query<BillApproval>(
|
|
|
+ new Filter<BillApproval>(x => x.Bill.ID).IsEqualTo(_bills[0].ID)
|
|
|
+ .And(x => x.Employee.ID).IsEqualTo(App.EmployeeID),
|
|
|
+ Columns.Required<BillApproval>()
|
|
|
+ .Add(x => x.ID)
|
|
|
+ .Add(x => x.Approved))
|
|
|
+ .ToObjects<BillApproval>().FirstOrDefault();
|
|
|
+ EditLayout.CanApprove = _approval is not null;
|
|
|
+ EditLayout.IsApproved = _approval is not null ? _approval.Approved != DateTime.MinValue : false;
|
|
|
+
|
|
|
+ var billLinePage = Bill.Pages.OfType<SupplierBillLineGrid>().FirstOrDefault();
|
|
|
+ if(billLinePage is not null)
|
|
|
+ {
|
|
|
+ EditLayout.BillAmount = billLinePage.Items.Sum(x => x.IncTax);
|
|
|
+ EditLayout.POAmount = billLinePage.Items.Sum(x =>
|
|
|
+ {
|
|
|
+ return x.OrderItem.IncTax + x.Consignment.IncTax;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _approval = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
private void CheckSaved(CancelEventArgs cancel)
|
|
|
{
|
|
|
if (!bChanged)
|
|
@@ -158,13 +226,18 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
|
|
|
private void ReloadBills()
|
|
|
{
|
|
|
- if (Bills.SelectedRows.Length != 0)
|
|
|
+ var newRows = Bills.SelectedRows;
|
|
|
+ if (newRows.Length != 0)
|
|
|
{
|
|
|
- _editRows = Bills.SelectedRows;
|
|
|
- _bills = Bills.LoadBills(_editRows);
|
|
|
- Bills.InitialiseEditorForm(Bill, _bills, null, true);
|
|
|
- Bill.Visibility = Visibility.Visible;
|
|
|
- LinkDocumentPage();
|
|
|
+ if(_editRows is null || !newRows.CompareTo(_editRows))
|
|
|
+ {
|
|
|
+ _editRows = Bills.SelectedRows;
|
|
|
+ _bills = Bills.LoadBills(_editRows);
|
|
|
+ Bills.InitialiseEditorForm(Bill, _bills, null, true);
|
|
|
+ Bill.Visibility = Visibility.Visible;
|
|
|
+ LinkDocumentPage();
|
|
|
+ UpdateApproval();
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -172,6 +245,7 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
_editRows = null;
|
|
|
Bill.Visibility = Visibility.Hidden;
|
|
|
ClearDocumentPage();
|
|
|
+ UpdateApproval();
|
|
|
}
|
|
|
}
|
|
|
|