Commit Graph

26799 Commits

Author SHA1 Message Date
Geert Janssens
aa0a68fd1c CsvTransExp - repeat transaction details on every line in multi-line mode
The GnuCash Csv Importer can deal with both cases,
but there has been user feedback that the format
with only the first line displaying transaction
details is confusing and/or not readily usable
in external tools.
2023-02-14 16:47:23 +01:00
Geert Janssens
be0579dc0c CsvTransExport - more generic code cleanup
- declare variables on use
- more concise tests and loops
- drop unused includes
- gboolean->bool
2023-02-14 16:40:51 +01:00
Geert Janssens
9df059e9a5 CsvTransExport - omit trading splits unless exporting from a trading account 2023-02-14 14:52:59 +01:00
Geert Janssens
c6a93903b3 CsvTransExport - generic code cleanup
- declare variables on use
- more concise tests and loops
2023-02-14 13:10:32 +01:00
Geert Janssens
003f379d88 Bug 798600 - CSV import of multi-split security transactions fails to load capital gain - part 2
Update csv transaction export format to include split values.
In the csv importer the 'GnuCash Export Format' option will
now include values. For compatibility with filex exported
from older gnucash versions the previous preset is still
available under the name 'GnuCash Export Format (4.x and older)'.
2023-02-14 11:57:28 +01:00
Geert Janssens
9e1268d934 Bug 798600 - CSV import of multi-split security transactions fails to load capital gain - part 1
Transactions with capital gains processing can have
splits in transaction currency with a zero amount
and a non-zero value. To properly import those,
prefer the value column even if transaction
currency equals account commodity.
Previous (wrong) assumption was that in case
of a same-currency split, the amount would
always be the value.
2023-02-14 10:41:28 +01:00
Geert Janssens
3f3460fec9 Bug 782141 - Import CSV - Multi-currency support can cause rounding errors
This commit introduces new column types 'Value' and 'Value (Negated)'
which can be used to indicate what the value of a split's amount
is in the transaction currency. These will only be used if the
transaction currency is different from the account commodity
of the given split. Otherwise the amount will simply be
used as value.
2023-02-13 13:08:08 +01:00
Geert Janssens
6ada3822f2 CsvTransImp - drop obsolete sanity check
Incomplete transfer split data will now be used by
the generic import matcher to create the balancing split.
2023-02-13 13:08:08 +01:00
Geert Janssens
625978cc33 CsvTransImp - rework verification code to prevent new cases of invalid transactions
With the added multi-currency support it would be possible
to create imbalanced splits. A new check is added to detect
this beforehand and prevent users from continuing.
This required much of the verification logic to be revisited.
2023-02-13 13:08:08 +01:00
Geert Janssens
57c525fb19 Remove unused function 2023-02-13 13:08:08 +01:00
Geert Janssens
4737665289 Don't use boost::optional for gnc_commodity pointers
These pointers can simply be checked for null to determine
whether they are set or not.
2023-02-13 13:08:08 +01:00
Geert Janssens
9384308b05 Remove unneeded forward declaration 2023-02-13 13:08:08 +01:00
Geert Janssens
dd83042904 CsvTxImp - make PreTrans a member of PreSplits
Before it was tracked in a separate column in the parse table.
However future checks on multi-currency inconsistencies
will be easier to implement if it's a member in each PreSplit.
2023-02-13 13:08:08 +01:00
Geert Janssens
807340bcd7 CsvTxImpProps - simplify exception handling
- catch multiple exception types in one block
  the exception handling code was the same anyway
- stop rethrowing the exception. The calling code
  doesn't need this and just ignores it.
2023-02-13 13:08:08 +01:00
Geert Janssens
81e17531b9 Csv Tx Imp Props - don't reset multi column property errors by default
This would mask errors encountered in previous columns.
2023-02-13 13:08:08 +01:00
Geert Janssens
88fd034f89 Csv Trans Imp - remove redundant test
Remainder of the code ensures a GncPreSplit account is always
set to either the base account value or a value of an account
column. It's useless to try once more to set a base account
right before creating the preliminary transactions.
2023-02-13 13:08:08 +01:00
Geert Janssens
3af9374126 GncTransPropType - use consistent naming
A few freshly added values had a superfluous _ in the name
2023-02-13 13:08:08 +01:00
Geert Janssens
e5de32fd73 Csv Trans Import - rework error propagation
Use maps and vectors to move error messages around.
Only merge them into a string right before they
need to be passed to Gtk for presentation to the user.
2023-02-13 13:08:08 +01:00
Geert Janssens
8156f42c2b Fix setting and resetting of split properties that can be set more than once
Define them as a separate group and add a function
to test for this trait. Use that function
 consistently instead of testing individual values
everywhere.
2023-02-13 13:07:52 +01:00
Geert Janssens
a31ffd1b70 Bug 797383 - Import transaction via CSV selects the commodity as a currency
..., results in an invalid transaction that is uneditable, and a corrupted price database

This commit will change the transaction currency
to the from or base account's parent account currency if
the from or base account is not denominated in a currency.
This allows to import stock transactions directly into the stock
account.
2023-02-13 12:58:14 +01:00
John Ralls
3686ad4174 Update POTFILE.in for sample-report.scm. 2023-02-12 15:19:32 -08:00
John Ralls
f292ebee47 Merge Flywire's 'Hello5' into master. 2023-02-12 14:16:18 -08:00
Geert Janssens
76d742c6e3 Fixup csv price import assistant reset
A few lines were missing in my previous commit
2023-02-07 21:16:32 +01:00
Geert Janssens
66660c02fb Only reset csv importer internal state if new file is selected
The changes from
8ed40078b0
and
78c8e8f3af
caused the importers to reset everything in the preview page whenever opening this
page, including when navigating back from a future page. This can be very frustrating
if many settings were adjusted but one went back just to tweak a single one.

With these changes the importer will only be reset whenever the user selects a
different file in the file chooser. So even navigating back to the file chooser,
but not changing files will keep the import state.
2023-02-07 19:36:08 +01:00
Geert Janssens
0c3807414a Generic Importer - allow user to modify exchange rates for unbalanced transactions
With the improved support for multi-currency imports, it
can happen an incomplete transaction needs an exchange
rate (or balancing split amount) before the transaction
can be imported. This commit adds a context menu entry
to set exchange rates on such transactions.
The menu is only enabled for unbalanced transactions
for a destination account has been set.
2023-02-07 17:44:59 +01:00
Geert Janssens
fb8c0ab039 Bug 796955 - Import CSV - Single-line two-currency transactions can't be imported
Calculation using price from csv data was still backwards.
This commit fixes it.
2023-02-07 17:44:59 +01:00
Geert Janssens
27764908e6 Import matcher - remove a few redundant tests with GLists 2023-02-07 17:44:58 +01:00
Geert Janssens
b8a14c172f Import-matcher.c - C99 fun
- introduce bool
- declare variables on first use
2023-02-07 17:44:53 +01:00
Geert Janssens
b862142e82 Bug 793306 - Price is not imported from CSV
This is really a variation of bug 796955, except that in this case
even less data was provided in the csv file, so we needed
extra code to defer second split generation to the generic import
matcher.

The missing details can be either transfer account,
transfer amount and/or price.

The generic import matcher has more options to find this
information: the transfer account can be guessed from
import maps or manually selected by the user.
Only when that one is known, we can consider transfer
amount. In a single currency situation, this is easy.
In the multi-currency case we currently need either
a price or a transfer amount from the csv import data.
2023-02-07 17:41:30 +01:00
flywire
8df11ec91a Remove sample-report crash option and test-stress-options exception 2023-02-07 16:17:22 +11:00
flywire
0ece81aa9b Skip sample report in stress tests 2023-02-07 16:17:22 +11:00
flywire
6650209dba Update report comments 2023-02-07 16:17:21 +11:00
flywire
cc97783a2a Report title option 2023-02-07 16:17:21 +11:00
flywire
f53f760c18 Rename sample report and make values unique 2023-02-07 16:17:20 +11:00
John Ralls
732a005710 Merge Christoph Holtermann's 'python-log-access' into master. 2023-02-06 15:24:04 -08:00
John Ralls
c4af7fa314 Merge branch 'maint' 2023-02-06 15:23:24 -08:00
John Ralls
66d9f1383e Merge Ralf Habacker's 'fix-798732' into maint. 2023-02-06 12:35:49 -08:00
John Ralls
b7eb9bcb47 Merge Ralf Habacker's 'fix-798732' into master. 2023-02-06 12:31:52 -08:00
John Ralls
43a9f8df5e Merge Richard Cohen's 'allow-c-declaration-after-statement' into master. 2023-02-06 12:27:53 -08:00
John Ralls
464d1d237b Merge Richard Cohen's 'fix-unused-variables-part1' into master. 2023-02-06 11:27:16 -08:00
Richard Cohen
5f534161a1 Allow C declarations after statements
Good for declaring variables at point of use
2023-02-06 14:58:49 +00:00
Richard Cohen
bd8e81f35c Move an unused variable into an #ifdef where it is used 2023-02-06 14:20:31 +00:00
Richard Cohen
1c6679720b Use some unused variables 2023-02-06 14:20:31 +00:00
Richard Cohen
78ec20515b Remove some unused variables - and the initialization
- checked that any side effects were irrelevant
2023-02-06 14:20:28 +00:00
Richard Cohen
c819b03a17 Remove some unused variables - leave the side effect 2023-02-06 14:19:29 +00:00
Richard Cohen
ea2d3be217 Remove some unused variables with obviously no side effects 2023-02-06 14:19:22 +00:00
Richard Cohen
4e25bbfc43 Mark some QofLogModules as potentially unused
- __attribute__((unused)) for C
- [[maybe_unused]] for cpp
2023-02-06 14:12:31 +00:00
John Ralls
9446ae7fb7 Release GnuCash 4.901 2023-02-05 09:30:53 -08:00
John Ralls
31d45fc586 Merge branch 'maint' 2023-02-05 09:18:00 -08:00
Christopher Lam
9c87585d4e Bug 798747 - Crash in Investment Portfolio report
add support for pricedb-before in portfolio reports
2023-02-05 22:19:36 +08:00