The trailing colons have been removed in the source e.g.
here 6897f13e ff, but this created a lot of fuzzy translations.
With the po/remove-suffix.sh script, those changes are
adapted in all po files in order to make translators' life
easier.
Fix account selection by typing in the base account combo box text field
The typing triggered the combobox' changed event. That triggered a repopulation
of the csv data treeview (due to possibly having to unset an account column).
That then in the end retriggered setting the base account. However while typing
in the combo box there may not be a valid account selected in the combo box.
So break this short circuit by testing for a change in the last-known base account
compared to what the combo box believes is the proper account. This last-known
account nore the combo box' internal state will change while typing allowing
proper user input.
In the journal register and when using auto split some register columns
have 'Tot added to them like 'Tot Debit' depending on where the cursor
is so if you tried to size that column with a double click on the
header it would be based on the short name. This changes fixes that.
If the pop up button border is specified in CSS, the default size of
the button needs to change so retrieve the border and add it to the
default button size. Also only add the button margin when cells have
the button.
The trailing colons have been removed in the source e.g.
here 6897f13e ff, but this created a lot of fuzzy translations.
With the po/remove-suffix.sh script, those changes are
adapted in all po files in order to make translators' life
easier.
1. rename vars to better reflect meaning (num to ref, memo to desc,
value-col to bal-col)
2. reindent
3. final gnc-get-num-action swap to gncInvoiceGetID
Final changes after feedback.
* LHS rows now have rowspan as many as linked rows.
* use gncInvoiceGetID instead of xaccSplitGetMemo
* use gncInvoiceGetType instead of gnc-get-action-num to find txn type
which is unreliable
* swap type/description to reference/type columns
* reuse strings
* URLs generally:
document -> document-editor
monetary -> register; all anchors point to non-APAR account. this
reinforces the view that APAR account is an implementation detail,
and most invoice posting/payment activity belong in the Transfer
account.
Change of algorithm to display invoice->payments.
Previously: invoice->lot->splitlist; filtered to payments; retrieve
splits->parent->xaccPaymentAcctSplitList This would find payment
splits in originating currency.
But this fails for lot-link txns whose PaymentAcctSplitList is null.
New algorithm:
- invoice->lot->split-list, each lot-split analysed
- TXN-TYPE-PAYMENT lot-splits will query TransferAcct and each will be
rendered in the originating currency, if they haven't been encountered
before in this invoice.
- TXN-TYPE-LINK lot-splits are rendered as a generic 'Offset
Documents' link to lot-link splits. This helps link invoice to the
link transaction to locate the corresponding credit-note. It is not
possible to link to the corresponding credit-note because a
link-transaction can group many invoices to many credit-notes.
Also:
Increase right-hand-side links from 3 to 4 columns. I think it's quite
useful to add 'Credit Note' 'Invoice' 'Payment' as a separate
column.
sort-and-delete-duplicates require that the < proc can sort elements
properly.
In new-owner-report, previous used split->parent->posted_date for
sorting during call to sort-and-delete-duplicates. This does not
guarantee equal elements will be adjacent. Using xaccSplitOrder
satisfies that guarantee, and splits will be deduped properly.
Also account and commodity comparison functions similarly defined to
have consistent code.
This change will modify the output in some tests (e.g. balsheet-pnl
will now group currencies and commodities together due to
string-comparison using gnc-commodity-get-full-name) which must be
modified.
The adding of the register comment to the state file is at the start
of the gnc_table_save_state function but this only gets added if the
state_section already exists and on first register save it does not so
move it to after the register column widths are added so the
state_section will exist.
On first start up, cells with a pop up were initialised with the sample
text plus the cell height. This worked most of the time but with small
fonts the height could be smaller than the minimum button width so the
cell was too small. Add a function to retrieve the button width which
can not be less than the minimum button width and add this to be the
sample text width.
Also when you double clicked on the header of a pop up cell column to
auto size the cell width it did not take into account the button width
and so was too narrow, this is also fixed by getting the button width.
When processing payment->invoices, don't show duplicate invoices. This
is an unusual case documented in the bug.
Note: Instead of sort-and-delete-duplicates the invoices, we could
replace the invoice accumulator with the O(N^2) version:
(if (member invoice invoices) invoices (cons invoice invoices))
When processing invoice->payments, we used gnc-lot-get-earliest-split
to find the lot opening-split to skip it.
However it does not always return the lot opening-split, because a
lot-reducing split may be dated earlier than the lot opening-split.
This change means that the posting-split is processed together with
the payment splits, but its PaymentAcctSplitList is null, so it does
not add any row to the result.
It should receive 1 arg instead of 2.
guile-2.2 allows internal defines to be called with a higher number of
args. This may be a guile bug. Follow-up tracking at
https://lists.gnu.org/archive/html/bug-guile/2019-12/msg00011.html
guile-2.0 (IMHO correctly) does not allow this invalid call.
Previous would search invoices->payments and payment->invoices during
the report by analysing each posting and payment txn.
This change will remove the splits searching and use gnc-lot API to
find these links.
* also use ice-9 match for easier matching
* also use global gnc:multiline-to-html-text
* also remove some duplicate sanity checks
Previous test wasn't comprehensive; due to variable row lengths,
the (td 11) wouldn't consistently select the link amount. using
(td -1) will select the last <td> element in the row.
Moreover also test the class-name to target the link amounts otherwise
other elements (eg the aging-list) will also be returned.