|
@@ -121,6 +121,8 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
#region Approval
|
|
|
|
|
|
private BillApproval? _approval = null;
|
|
|
+ private DynamicOneToManyGrid<Bill, BillApproval>? _approvalPage = null;
|
|
|
+ private SupplierBillLineGrid? _billLinePage = null;
|
|
|
|
|
|
private void EditLayout_Approve()
|
|
|
{
|
|
@@ -130,13 +132,17 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
{
|
|
|
_approval.Approved = DateTime.Now;
|
|
|
EditLayout.IsApproved = true;
|
|
|
- Client.Save(_approval, "Approved by user.");
|
|
|
+ _approvalPage?.SaveItem(_approval);
|
|
|
+ _approvalPage?.Refresh(false, true);
|
|
|
+ _approvalPage?.DoChanged();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_approval.Approved = DateTime.MinValue;
|
|
|
EditLayout.IsApproved = false;
|
|
|
- Client.Save(_approval, "Unapproved by user.");
|
|
|
+ _approvalPage?.SaveItem(_approval);
|
|
|
+ _approvalPage?.Refresh(false, true);
|
|
|
+ _approvalPage?.DoChanged();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -144,32 +150,48 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
|
|
|
{
|
|
|
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)
|
|
|
+ if(Bill.Pages.TryGetPage<DynamicOneToManyGrid<Bill, BillApproval>>(out _approvalPage))
|
|
|
{
|
|
|
- EditLayout.BillAmount = billLinePage.Items.Sum(x => x.IncTax);
|
|
|
- EditLayout.POAmount = billLinePage.Items.Sum(x =>
|
|
|
+ _approval = _approvalPage.Items.FirstOrDefault(x => x.Employee.ID == App.EmployeeID);
|
|
|
+
|
|
|
+ EditLayout.CanApprove = _approval is not null;
|
|
|
+ EditLayout.IsApproved = _approval is not null ? _approval.Approved != DateTime.MinValue : false;
|
|
|
+
|
|
|
+ if(Bill.Pages.TryGetPage(out _billLinePage))
|
|
|
{
|
|
|
- return x.OrderItem.IncTax + x.Consignment.IncTax;
|
|
|
- });
|
|
|
+ _billLinePage.OnChanged += BillLinePage_OnChanged;
|
|
|
+
|
|
|
+ EditLayout.BillAmount = _billLinePage.Items.Sum(x => x.IncTax);
|
|
|
+ EditLayout.POAmount = _billLinePage.Items.Sum(x =>
|
|
|
+ {
|
|
|
+ return x.OrderItem.IncTax + x.Consignment.IncTax;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _approval = null;
|
|
|
+ EditLayout.CanApprove = false;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_approval = null;
|
|
|
+ EditLayout.CanApprove = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void BillLinePage_OnChanged(object? sender, EventArgs e)
|
|
|
+ {
|
|
|
+ if (_billLinePage is null) return;
|
|
|
+
|
|
|
+ EditLayout.BillAmount = _billLinePage.Items.Sum(x => x.IncTax);
|
|
|
+ EditLayout.POAmount = _billLinePage.Items.Sum(x =>
|
|
|
+ {
|
|
|
+ return x.OrderItem.IncTax + x.Consignment.IncTax;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
private void CheckSaved(CancelEventArgs cancel)
|