I recently migrated my personal usage of Actual over to the open-source
version and imported a bunch of transactions. I have a _lot_ of history
in Actual, including a lot of weird edge cases like deleted split
transactions. While reconciling I noticed that my account balance shown
at the top was incorrect, even though the running balance was current.
Digging into this, I discovered that we aren't correctly handling
aggregate queries when querying transactions in the "grouped" mode.
Aggregate queries don't make sense in the "grouped" mode. Grouped means
that you want a list of transactions that include both the parent and
child transactions (when they are split). If you are summing up all the
amount, you only want to consider non-parent transactions. So we switch
it back to "inline" mode, but the way we did this previously was to
manually stitch the query together.
Even though was add SQL to ignore deleted transactions, we still
possibly include them. A child transaction may not be marked as deleted,
even though the parent transaction is deleted. When a parent transaction
is deleted, all child transactions should be considered deleted as well,
regardless of their tombstone status. This is what the
`v_transactions_internal_alive` view does. Previously we weren't going
through this view though, so we could still potentially include split
transactions even though they've been deleted.
This is little hacky, but it fixes the immediate problem. We fall back
to the inline mode by modifying the where clause, and we also adjust the
view that it queries to use the correct one.
Check if the transaction amount is a positive 0 rather than -0.
I went for casting the string with `Number` but I could instead replace
the whole condition with `!trans.amount.startsWith('-')` or with
`trans.amount > 0 || trans.amount == '0.00'` if either of these variants
are preferred.
Fix for
https://github.com/actualbudget/actual/issues/724#issuecomment-1464907064
This implements a simple indicator showing the user if the currently
used version is outdated by utilising GitHub tags to track the latest
version.
Closes#463
---------
Co-authored-by: Jed Fox <git@jedfox.com>
* Update gitignore about .idea folder
The .idea folder is generated by IntelliJ IDEA
* Add integration with Nordigen
* Fix linter
* Use longer access to the account
* Move normalizatoin of accounts to the backend side
* Fix possibility to force remove account
* Move normalization of transactions to the backend side
* Fix Settings.js after merge
* fix enableing bank sync
* delete old Settings component
* Use camelCase for nordigen/remove-account call
* WIP refactor
* Fix auto-selecting existing accounts
* Fix unlinking accounts
* Align to backend changes for Nordigen integration
* Fix AnimatedLoading
* Code review changes
* Fix TZ date issue
* rm mobile package
* rm BankSync settings section
* rm console.log
* rm comment
* applies some alignments from code review
* applies some alignments from code review
* Add prefix for nordigen specific functionality
* Use arrow char
* Add prefix for nordigen functionalities
* Fix linter
* Display only open accounts
* Update packages/desktop-client/src/nordigen.js
Co-authored-by: Jed Fox <git@jedfox.com>
* Fix incorrect calc of TZ for endDate
* Improved error checking
* Fix throwing invalid-schema error
* Fix for syncing large batches in Safari
---------
Co-authored-by: Filip Stybel <filip.stybel@ynd.co>
Co-authored-by: Leon Ebel <24588023+ebelleon@users.noreply.github.com>
Co-authored-by: Jed Fox <git@jedfox.com>
* Intelligently adjust field for newly added action
* Remove unnecessary switch case
* Dedupe list of fields
* Remove unnecessary conditionFields prop
* Intelligently adjust field for newly added condition
* Use a less specific condition
* Run `yarn dedupe`
* Update to better-sqlite3@latest
* Remove react-native
* Remove a bunch more unused deps
* Update mitt to 3.0
* Remove a few more
* Remove react-native-gesture-handler
* Revert "Update to better-sqlite3@latest"
This reverts commit d436bc8d73f2745f484def4e40596322d0c56458.
* Dedupe better-sqlite3 versions
* snapshots!
* Fix jsdom error
* Revert "Dedupe better-sqlite3 versions"
This reverts commit f99d2ab6f9.
* Add back jest-watch-typeahead
* Fix conflicting Jest version
(The jest-environment-jsdom package that is magically available seems to only be compatible with Jest 27)
* Allow rendering a schedule rule in <Value />
* Refactor: RulesPage.getNthRule returns arrays for conditions/actions
* Visit the rules page after creating a schedule
* Make it easier to build the bundle.api.js for the API
* Remove budgetId parameter, move config to top level of API
* that’s a breaking change
* Add support for signing into the server in init()
* Add api.downloadBudget(syncId, { password }) method
* Fix lint errors
* Refactor: extract out getSyncError
* api/download-budget: sync if possible instead of downloading
* Don’t bother with fetching remote files and installing key if the file is local
* *groupId
* FIx lint issues
* Remove extra close+reopen
* Refactor out duplicate load-budget logic
* Trailing commas
* Add missing imported_payee case
* Switch over to a `switch` to ensure no other cases are missed
* Fix switching from “amount” to “amount (inflow/outflow)”
* fix crash when parsing null value as number
* Fix formatting for “payee/category/account contains” filters
* Allow the server to auto-configure the server URL for the client
* Extract server URL/version logic out to ensure consistent updates
* ()
* Be more explicit about when the server version is re-fetched
* Use a single layer of context provider
* Move the bootstrap route to /account/needs-bootstrap
* No more `isActual`
* Refactor to call subscribe-needs-bootstrap instead of fetch()
* Dedupe calls to subscribe-needs-bootstrap
* Don’t revalidate the server when we just validated it
* simplify
* Fix setServerURL
* Provide more debugging information when throwing an invalid-schema sync error
* Don’t log the errors directly
* Update dynamic cell warning to be clearer
* rebuild
* Prevent Cmd+Z/Cmd+Shift+Z from propagating to the browser
* Allow browser to handle undo/redo shortcuts in input fields
* Don’t change a transaction’s note from null to ''