From 8faa7bd68d3413d63e29c0618d7a2741cafa19ca Mon Sep 17 00:00:00 2001
From: TheTrueCaligari <caligari@mg4ever.net>
Date: Tue, 9 May 2023 16:11:04 +0200
Subject: [PATCH] Fix for issue #319 (#1008)

---
 .../src/components/accounts/Account.js        | 36 ++++++++++++++++---
 upcoming-release-notes/1008.md                |  6 ++++
 2 files changed, 38 insertions(+), 4 deletions(-)
 create mode 100644 upcoming-release-notes/1008.md

diff --git a/packages/desktop-client/src/components/accounts/Account.js b/packages/desktop-client/src/components/accounts/Account.js
index b5fe9fe4c..7d7ae712c 100644
--- a/packages/desktop-client/src/components/accounts/Account.js
+++ b/packages/desktop-client/src/components/accounts/Account.js
@@ -353,7 +353,7 @@ function DetailedBalance({ name, balance }) {
   );
 }
 
-function SelectedBalance({ selectedItems }) {
+function SelectedBalance({ selectedItems, account }) {
   let name = `selected-balance-${[...selectedItems].join('-')}`;
 
   let rows = useSheetValue({
@@ -376,9 +376,31 @@ function SelectedBalance({ selectedItems }) {
       .calculate({ $sum: '$amount' }),
   });
 
+  let scheduleBalance = null;
+  let scheduleData = useCachedSchedules();
+  let previewIds = [...selectedItems]
+    .filter(id => isPreviewId(id))
+    .map(id => id.slice(8));
+  for (let s of scheduleData.schedules) {
+    if (previewIds.includes(s.id)) {
+      if (!account || account.id === s._account) {
+        scheduleBalance += s._amount;
+      } else {
+        scheduleBalance -= s._amount;
+      }
+    }
+  }
+
   if (balance == null) {
-    return null;
+    if (scheduleBalance == null) {
+      return null;
+    } else {
+      balance = scheduleBalance;
+    }
+  } else if (scheduleBalance != null) {
+    balance += scheduleBalance;
   }
+
   return <DetailedBalance name="Selected balance:" balance={balance} />;
 }
 
@@ -400,7 +422,12 @@ function MoreBalances({ balanceQuery }) {
   );
 }
 
-function Balances({ balanceQuery, showExtraBalances, onToggleExtraBalances }) {
+function Balances({
+  balanceQuery,
+  showExtraBalances,
+  onToggleExtraBalances,
+  account,
+}) {
   let selectedItems = useSelectedItems();
 
   return (
@@ -445,7 +472,7 @@ function Balances({ balanceQuery, showExtraBalances, onToggleExtraBalances }) {
       {showExtraBalances && <MoreBalances balanceQuery={balanceQuery} />}
 
       {selectedItems.size > 0 && (
-        <SelectedBalance selectedItems={selectedItems} />
+        <SelectedBalance selectedItems={selectedItems} account={account} />
       )}
     </View>
   );
@@ -794,6 +821,7 @@ const AccountHeader = memo(
             balanceQuery={balanceQuery}
             showExtraBalances={showExtraBalances}
             onToggleExtraBalances={onToggleExtraBalances}
+            account={account}
           />
 
           <Stack
diff --git a/upcoming-release-notes/1008.md b/upcoming-release-notes/1008.md
new file mode 100644
index 000000000..8bf34cb03
--- /dev/null
+++ b/upcoming-release-notes/1008.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [TheTrueCaligari]
+---
+
+Reports: Add Upcoming/Due transactions in the "Selected balance" sum (Issue #319)
-- 
GitLab