Commit Graph
30487 Commits
Author SHA1 Message Date
John Ralls 332db182f2 Document that transaction void-time invalid value is now INT64_MAX. 2026-07-18 16:49:05 -07:00
John Ralls 6e33c23815 Bug 799791 - Unvoid is not available (Bug from the mailing lists)
Use the existence of void timestamp instead of void reason to
determine if a transaction is voided. A user can void a transaction
without providing a reason.
2026-07-18 10:25:17 -07:00
John Ralls 828a80d0bc Doxygen: Set header version to VCS version if building from VCS 2026-07-16 14:03:56 -07:00
John Ralls 0fe7389ed2 Support both coverage and documentation
The previous version overwrote coverage with documentation.
2026-07-16 12:02:38 -07:00
Christopher Lam 36bd906b67 [gnc-euro.cpp] use GncNumeric.convert() instead of gnc_numeric_convert 2026-07-16 17:03:15 +08:00
John Ralls 08ba690e41 Clarify IBM hardware type that can compile GnuCash. 2026-07-15 07:20:39 -07:00
John Ralls ba16cb3a09 Add build of Doxygen Docs to CI, upload to gnucash.github.io 2026-07-14 21:32:06 -07:00
John Ralls b766c126ee Merge Sherlock's 'stock-splits' into stable. 2026-07-14 14:24:53 -07:00
Sherlock 80211df860 Miscellaneous cleanup 2026-07-14 14:20:09 -07:00
Sherlock 4d6f19a0f9 Bug: Missing account event
An account event should be generated for the original account if a lot is moved to a different account in xaccAccountInsertLot() as it is, if the lot is removed in xaccAccountRemoveLot().
2026-07-14 14:19:24 -07:00
Sherlock 748ccca7db Bug: Split type field is not being maintained appropriately
Pasted, duplicated, or reversed stock split transactions and pasted or duplicated stock split splits do not maintain the "stock-split" type.   They become "normal" split types.

As we only have two split types, "normal" and "stock-split",  added a flag to FloatingSplit for a stock split.
2026-07-14 14:19:24 -07:00
Sherlock b1efe0763c The lot scrubber should exclude stock-split splits. 2026-07-14 14:19:24 -07:00
Sherlock 0aac4438e7 Bug: Gain/Loss displayed in "Splits free" is not correct
The gain/loss displayed for splits in the "Splits free" is historical.  It may or may not be correct.  Instead, the gain should be calculated against the selected lot for appropriate splits.

Implements xaccSplitLotCapGain() to obtain the gain for the selected lot.
2026-07-14 14:19:12 -07:00
John Ralls d37f4b49a5 Update supported platforms in README. 2026-07-14 12:44:46 -07:00
John Ralls f9db8320d2 CMakeLists.txt: Fix function-name typo.
Thanks to S. Kriesch in https://github.com/Gnucash/gnucash/pull/2271.
2026-07-14 12:29:00 -07:00
John Ralls 453a4fe886 Merge Noah Noerr's 'fix-qofsession-end-releases-lock' into stable. 2026-07-11 11:03:53 -07:00
John Ralls 13d8da3116 Merge Noah Noerr's 'readonly-skip-dbi-library-test' into stable. 2026-07-11 11:00:35 -07:00
Noah R f056be140c [backend/dbi] skip the libdbi integrity probe for read-only sessions
session_begin() runs dbi_library_test() (Bug #611936) on every open to
detect a libdbi/-ffast-math miscompilation that mangles 64-bit values.
The probe CREATEs, INSERTs into, SELECTs from and DROPs a temporary
table, so it needs write privileges on the database -- even for
SESSION_READ_ONLY. A least-privilege, read-only database user therefore
cannot open the book at all: the temporary-table create fails and
session_begin returns ERR_SQL_DBI_UNTESTABLE.

The defect the probe guards against is on the write side of libdbi, so it
can be neither triggered nor detected by a read-only session, which never
writes. Skip the probe when the session is opened SESSION_READ_ONLY, at
the two call sites a read-only open reaches (the SQLite session_begin and
the shared MySQL/PostgreSQL session_begin); the third call site is inside
the create branch, which read-only never enters. The write-capable modes
(NORMAL_OPEN, NEW_STORE, NEW_OVERWRITE, BREAK_LOCK) still run the probe
unchanged.

This lets a SELECT-only database user open a book read-only through the API.
2026-07-10 17:52:55 -07:00
Christopher Lam b3e8074890 [gnc-euro.cpp] store euro rates as GncNumeric
this increases euro conversion rounding accuracy
2026-07-10 17:00:48 +04:00
Noah R 5dc53303b5 [engine] qof_session_end: release the lock via the session's backend
qof_session_end() is documented to release the session lock and shut the
backend connection but it does not release the session lock in all scenarios
(BUG). qof_session_end() looked the backend up via qof_book_get_backend().
The book's backend pointer is only set by load() or a data-changing save() (an
empty book's save() early-returns before attaching it); begin() sets only the
session's own m_backend. So a session that creates a store and ends it without
loading or making a real change had a backend on the session but not on the
book: end() found none, skipped session_end(), and never released the lock --
it was only released later at destroy().

Because the fault is in backend-agnostic engine code it affects every backend
that locks at begin(): the SQL/DBI backends leave a stale row in the gnclock
table, and the XML/file backend leaves an abandoned <file>.LCK sentinel (with
no data file, since XML data is only written at save). The store then appears
locked to the next opener.

End the session's own backend (m_backend, always set at begin()) instead. It
already equals the book's backend whenever the latter is set, so the change is
a no-op for loaded/saved sessions and additionally covers the
created-but-not-attached case.

Add regression tests for both backends, each of which begins a create-mode
session, ends it without a data-changing save, and checks the lock is gone:
  - test-backend-dbi-basic.cpp (test_dbi_new_store_end_releases_lock): reopens
    the store and asserts it is not ERR_BACKEND_LOCKED.
  - test-load-backend.cpp (test_new_store_end_releases_lock): asserts the XML
    <file>.LCK lockfile has been removed.
2026-07-09 20:24:45 -07:00
John Ralls 9db7b4439c Merge Thomas Teixeira's 'bug799774' into stable. 2026-07-09 16:16:06 -07:00
Thomas Teixeira f737847af2 Bug 799774 - Import transaction from CSV skips fields if CSV
file has backslash just before final quote in a quoted field

https://bugs.gnucash.org/show_bug.cgi?id=799774

Added a checkbox to the "File Format" section of the "Import Preview" step
of the CSV Import Assistant. This checkbox is labeled "Enable escape character"
and is enabled by default. If this checkbox is not enabled, GncCsvTokenizer
will insert an escape character (backslash) before any escape found in the
input which will prevent boost::tokenizer with escaped_list_separator from
processing this backslash as part of an escape sequence.

Ensured that saved import settings that have no current value for the
new "EnableEscape" field will set the "Enable escape character" checkbox.

Changed the test framework in GncTokenizerTest to specify whether escape
characters are enabled, and added test cases for escape characters disabled.
2026-07-09 16:13:15 -07:00
John Ralls 88670f2298 Merge Copy String's 'aqbanking-noted-transactions' into stable. 2026-07-09 16:03:50 -07:00
John Ralls 1c9d51a804 Update to the latest translations from Weblate. 2026-07-09 15:59:27 -07:00
Szia Tomi d0af7d39cd Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.4% (5209 of 5699 strings; 115 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-09 17:01:22 +02:00
Sherlock 3a0bce9ab9 Partial cleanup of Lot Viewer's lot and split list populate functions
Much more to be done...
2026-07-09 01:18:25 -07:00
Sherlock 3395ff0a60 Lot viewer should display the current name of the account in the window title.
Added to lv_refresh().
2026-07-09 01:18:25 -07:00
Sherlock 02ff19e1b3 Bug: Lot Viewer should watch and handle the account's events
Splits that appear on "Splits free" list are obviously iffy.
2026-07-09 01:17:17 -07:00
Sherlock bae025995d Reuse lv_refresh() 2026-07-09 01:17:17 -07:00
Sherlock adb2588633 Lot Viewer "Amount" and "Balance" columns should not display the currency symbol.
For now, we’ll only display the currency in these columns if the account is of a business type.
2026-07-09 01:17:17 -07:00
Sherlock fa38cb3521 Remove unused declaration 2026-07-09 01:17:17 -07:00
Sherlock 31978c1b4d Only show the “Show stock split adjusted amounts” checkbox when there are stock splits
Added has_stock_split field to Account private.  This flag is set to true when  xaccAccountRecomputeBalance() detects a stock-split split otherwise it is false.  Defined and declared xaccAccountHasStockSplit() for use by the Lot Viewer to whether to display the check box.
2026-07-09 01:17:17 -07:00
Sherlock ff30f4438b Add "Show stock split adjusted amounts" check box
With the lot now displaying the split adjusted balance, it's useful to be able to view the split's adjusted amounts.
2026-07-09 01:17:17 -07:00
Sherlock 7541191381 Exclude stock-splits from Split views in Lot Viewer 2026-07-09 01:15:59 -07:00
Sherlock 28c892b8a7 Improve readability of dialog-lot-viewer
Cosmetic white-space changes.
2026-07-09 01:15:59 -07:00
Sherlock 28cdb77a0b Improve code reuse 2026-07-09 01:15:59 -07:00
Sherlock 1e654412ab use adjusted_amount in place of amount
impacts gains, lots, and policy
2026-07-09 01:15:59 -07:00
Sherlock b1eb12f558 Determine the adjusted_amount for each split in an account
The algorithm to determine the current adjusted_amount is implemented in xaccAccountRecomputeBalance().

If the balance or new balance is nil, the stock-split split is ignored as it isn't possible to calculate the stock-split ratio.  This means the prior split adjusted amounts will not reflect the true current adjusted amounts.  These are conditions that should be raised appropriately to the user with sufficient details for resolution.
2026-07-09 01:15:59 -07:00
Sherlock 254ec4b4d0 Improve stock-split type detection
Noted split_type field in Split exists but is not used...

Reset split_type field's data type to hold the type of the getter.
Implemented xaccSplitIsStockSplit() abstraction to limit the split type string reference to Split.cpp and propagated it's use.
2026-07-09 01:12:49 -07:00
Sherlock 0d5c74b868 Add adjusted_amount field to split
The adjusted_amount field of a split will hold the stock split adjusted amount.  The adjusted amount is initially the same as the original amount.  When the account balances are recomputed and a stock-split split type is encountered, the ratio of the stock split will be applied to the preceding splits adjusted_amounts.  If there are no stock splits in the split's account, the adjusted amount remains the original amount.
2026-07-09 00:48:41 -07:00
Szia Tomi 19d336ee9a Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.4% (5209 of 5699 strings; 115 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-09 06:01:21 +02:00
Szia Tomi 04e6e89438 Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.2% (5202 of 5699 strings; 121 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-09 02:01:20 +00:00
Alonso González Chaves 2015a7cc1e Translation update by Alonso González Chaves <algonza@live.com> using Weblate
po/es.po: 99.8% (5691 of 5699 strings; 8 fuzzy)
0 failing checks (0.0%)
Translation: GnuCash/Program (Spanish)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/es/
2026-07-08 09:08:30 +02:00
copystring 604473bd6f L10N🇩🇪 Translate AqBanking noted transaction option 2026-07-08 01:37:41 +02:00
copystring 51753bf5f9 Add option to import AqBanking noted transactions 2026-07-08 01:37:26 +02:00
Szia Tomi bf07564885 Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.2% (5202 of 5699 strings; 121 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-07 20:12:31 +00:00
Szia Tomi 4f2094d4f1 Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.2% (5202 of 5699 strings; 121 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-07 20:12:30 +00:00
Szia Tomi f8d90e12e9 Translation update by Szia Tomi <sziatomi01@gmail.com> using Weblate
po/hu.po: 91.2% (5200 of 5699 strings; 123 fuzzy)
1 failing checks (0.1%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
2026-07-07 20:12:29 +00:00
ales-ro f1ae978a83 Translation update by ales-ro <bianaless6@gmail.com> using Weblate
po/it.po: 97.3% (5546 of 5699 strings; 99 fuzzy)
28 failing checks (0.4%)
Translation: GnuCash/Program (Italian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/it/
2026-07-07 20:12:29 +00:00
ales-ro 044b3bc1e6 Translation update by ales-ro <bianaless6@gmail.com> using Weblate
po/it.po: 97.2% (5545 of 5699 strings; 100 fuzzy)
28 failing checks (0.4%)
Translation: GnuCash/Program (Italian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/it/
2026-07-07 20:12:28 +00:00