diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png index 3cb6f9c634549ef7b3bdb91030a6eb669d885aef..6bd36f33b023d2df11bead97c68633a52bd3b978 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png index e2988c222b7199a9c462dd7405d531760834030e..4722fad3d167f4015a48706b75a63062ddeb0585 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png index 717ce7b1abd35c8ecce65631d76106fc959eb0cf..0f2889138a096e405286cd418bc585aceabfa1cb 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/accounts/Account.jsx b/packages/desktop-client/src/components/accounts/Account.jsx index 225ec864bbde822de83fc4c80d6ebb8a2babce85..ecf4f27f7ff487dd3e14713a6009d3ce08cc46ca 100644 --- a/packages/desktop-client/src/components/accounts/Account.jsx +++ b/packages/desktop-client/src/components/accounts/Account.jsx @@ -680,6 +680,26 @@ class AccountInternal extends PureComponent { }; } + getFilteredAmount = async (filters, conditionsOpKey) => { + const filter = queries.getAccountFilter(this.props.accountId); + + let query = q('transactions').filter({ + [conditionsOpKey]: [...filters], + }); + if (filter) { + query = query.filter(filter); + } + + const filteredQuery = await runQuery( + query.select([{ amount: { $sum: '$amount' } }]), + ); + const filteredAmount = filteredQuery.data.reduce( + (a, v) => (a = a + v.amount), + 0, + ); + return filteredAmount; + }; + isNew = id => { return this.props.newTransactions.includes(id); }; @@ -1307,6 +1327,10 @@ class AccountInternal extends PureComponent { conditions: conditions.filter(cond => !cond.customName), }); const conditionsOpKey = this.state.conditionsOp === 'or' ? '$or' : '$and'; + this.filteredAmount = await this.getFilteredAmount( + filters, + conditionsOpKey, + ); this.currentQuery = this.rootQuery.filter({ [conditionsOpKey]: [...filters, ...customFilters], }); @@ -1524,6 +1548,7 @@ class AccountInternal extends PureComponent { > <View style={styles.page}> <AccountHeader + filteredAmount={this.filteredAmount} tableRef={this.table} editingName={editingName} isNameEditable={isNameEditable} diff --git a/packages/desktop-client/src/components/accounts/Balance.jsx b/packages/desktop-client/src/components/accounts/Balance.jsx index 72770444e9d3fecc64afc700748e35f6c7f60fd4..30706faa17b25b73e7c4f33f62661c3c35f13d0a 100644 --- a/packages/desktop-client/src/components/accounts/Balance.jsx +++ b/packages/desktop-client/src/components/accounts/Balance.jsx @@ -104,15 +104,11 @@ function SelectedBalance({ selectedItems, account }) { ); } -function FilteredBalance({ selectedItems }) { - const balance = selectedItems - .filter(item => !item._unmatched && !item.is_parent) - .reduce((sum, product) => sum + product.amount, 0); - +function FilteredBalance({ filteredAmount }) { return ( <DetailedBalance name="Filtered balance:" - balance={balance} + balance={filteredAmount || 0} isExactBalance={true} /> ); @@ -142,7 +138,7 @@ export function Balances({ onToggleExtraBalances, account, filteredItems, - transactions, + filteredAmount, }) { const selectedItems = useSelectedItems(); @@ -201,7 +197,7 @@ export function Balances({ <SelectedBalance selectedItems={selectedItems} account={account} /> )} {filteredItems.length > 0 && ( - <FilteredBalance selectedItems={transactions} /> + <FilteredBalance filteredAmount={filteredAmount} /> )} </View> ); diff --git a/packages/desktop-client/src/components/accounts/Header.jsx b/packages/desktop-client/src/components/accounts/Header.jsx index 21b0e64b3b9492b5d1d31911c63150ffc3f608ce..a3daf4b750dad301fe0cec8e300cd4474eff7af8 100644 --- a/packages/desktop-client/src/components/accounts/Header.jsx +++ b/packages/desktop-client/src/components/accounts/Header.jsx @@ -32,6 +32,7 @@ import { Balances } from './Balance'; import { ReconcilingMessage, ReconcileTooltip } from './Reconcile'; export function AccountHeader({ + filteredAmount, tableRef, editingName, isNameEditable, @@ -242,7 +243,7 @@ export function AccountHeader({ onToggleExtraBalances={onToggleExtraBalances} account={account} filteredItems={filters} - transactions={transactions} + filteredAmount={filteredAmount} /> <Stack diff --git a/upcoming-release-notes/2777.md b/upcoming-release-notes/2777.md new file mode 100644 index 0000000000000000000000000000000000000000..cadf4dce2ff76971be39c451db57f3e71e7e1966 --- /dev/null +++ b/upcoming-release-notes/2777.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [carkom] +--- + +On the accounts page - filter balance only adds up transactions that are showing. If your filter has more than one page it won't be added to the balance unless you scroll to the bottom and reveal all transactions. This fixes that.