> On Jul 11, 2021, at 4:50 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> 
> wrote:
> 
> Op zondag 11 juli 2021 13:38:43 CEST schreef Arman Schwarz:
>> Thanks Geert,
>> 
>> I'm aware of the need to think in terms of debit/credit signs, but my
>> question was how I could know whether a positive value in the split element
>> in the XML will increase or decrease the "balance" that the user sees in
>> gnucash.
>> 
>> This depends on the side of the accounting equation the account is on, e.g.
>> positive split values increase the balance of an asset account, but
>> decrease the balance of an income account. Rather than manually maintaining
>> a mapping of account types and whether the sign is positive or negative, I
>> was hoping there'd be something in the XML or perhaps in those bindings you
>> mentioned that would do this for me.
>> 
> 
> I don't think this is stored in the xml file as the net representation in the 
> gui is a combination of account type and the user preference. The former is 
> hard-coded, the latter can be changed by the user. I don't know if we can 
> access either information via the python bindings. I don't use them myself.

Using only the XML file you can connect the split with its account via the 
account's guid. The account record of course carries the account type.

As  Geert explained GnuCash uses negative numbers to represent credits. This is 
computationally very convenient because it means that internally GnuCash 
doesn't need to distinguish debit-balance and credit-balance accounts: As long 
as the sum of all non-trading account balances is 0 the book is in balance.

For the UI it's user-choice based on the Preferences>Accounts>Reversed Balance 
with choices income/expense, credit, and none. There's a function, 
gnc_reverse_balance(Account*), that looks up the preference and the account 
type. It's not exposed to the python bindings, but the logic is simple and you 
could replicate it pretty easily. The relevant code starts at 
https://github.com/Gnucash/gnucash/blob/e1c153a516f0689b04efff7191639ad604a6b6b6/libgnucash/app-utils/gnc-ui-util.c#L129.

That said only the credit preference produces a UI and reports that would make 
sense to an accountant so were I in your place I'd ignore the preference and 
write a simple function to test the account type against a list of the 5 
credit-balance types (EQUIT, INCOME, LIABILITY, CREDIT, and PAYABLE).

Regards,
John Ralls

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to