Procházet zdrojové kódy

Added clearing of bill approval sets

Kenric Nugteren před 6 měsíci
rodič
revize
22983d9e0a

+ 10 - 0
prs.desktop/Panels/Suppliers/Bills/SupplierBills.cs

@@ -68,6 +68,8 @@ public class SupplierBills : DynamicDataGrid<Bill>
         var approvalSetItem = menu.AddItem("Approval Set", null, null);
         approvalSetItem.AddItem("Loading...", null, null, enabled: false);
 
+        menu.AddItem("Clear Approval Set", null, row, ApprovalSetClear_Click);
+
         var id = row.Get<Bill, Guid>(x => x.ID);
         var selectedApproval = row.Get<Bill, Guid>(x => x.ApprovalSet.ID);
         Task.Run(() =>
@@ -92,6 +94,14 @@ public class SupplierBills : DynamicDataGrid<Bill>
         }
     }
 
+    private void ApprovalSetClear_Click(CoreRow row)
+    {
+        var bill = row.ToObject<Bill>();
+        bill.ApprovalSet.ID = Guid.Empty;
+        SaveItem(bill);
+        Refresh(false, true);
+    }
+
     private void ManageApprovals_Click(CoreRow row)
     {
         var bill = row.ToObject<Bill>();

+ 18 - 1
prs.stores/BillStore.cs

@@ -43,9 +43,26 @@ internal class BillStore : BaseStore<Bill>
         //UpdateAggregate<Supplier>(entity, entity.SupplierLink, Sum<Supplier>(b => b.Balance, s => s.Balance));
     }
 
+    private void ClearBillApprovals(Bill bill)
+    {
+        // We need to clear all automatic bill approvals.
+        var approvals = Provider.Query(
+            new Filter<BillApproval>(x => x.Bill.ID).IsEqualTo(bill.ID)
+                .And(x => x.IsCustom).IsEqualTo(false),
+            Columns.Required<BillApproval>().Add(x => x.ID))
+            .ToList<BillApproval>();
+        Provider.Delete(approvals, UserID);
+    }
+
     private void UpdateBillApprovals(Bill bill)
     {
-        if (bill.ID == Guid.Empty || bill.ApprovalSet.ID == Guid.Empty) return;
+        if (bill.ID == Guid.Empty) return;
+
+        if(bill.ApprovalSet.ID == Guid.Empty)
+        {
+            ClearBillApprovals(bill);
+            return;
+        }
 
         var setEmployees = Provider.Query(
             new Filter<BillApprovalSetEmployee>(x => x.ApprovalSet.ID).IsEqualTo(bill.ApprovalSet.ID),