Seeking beta testers. This will not be in v3.2.

https://github.com/christopherlam/gnucash/tree/maint-balsheet-pnl

Or, anyone with a relatively recent maint can copy the file directly into the build's standard-reports folder: https://raw.githubusercontent.com/christopherlam/gnucash/maint-balsheet-pnl/gnucash/report/standard-reports/balsheet-pnl.scm

Adds new balsheet and new income-statement. I still have further ideas in the pipeline, just wish to check accuracy of amounts produced. Not all options have been implemented. Testing closing amounts through KVP wasn't an issue after all; the closing entries are first sought, cached, then analyzed as required. For posterity C could also produce noclosing balances for easier future reports, but I think this works well so far.

C

On 24/06/18 17:50, Christopher Lam wrote:

I think I'll forego a noclosing_balance upgrade in C.

According to https://bugzilla.gnome.org/show_bug.cgi?id=570042 the "Closing Entries" transactions did not always receive a special KVP-based flag until the commit on https://github.com/Gnucash/gnucash/commit/4b2800145 on datafiles generated from 27-11-2008 and later.

So, to find and exclude these closing entries, we can use the following strategies:

 1. xaccTransGetIsClosingTxn, will query the KVP flag
 2. Run a QofQuery and add xaccQueryAddClosingTransMatch (also queries
    the KVP flag)
 3. Free-text search "Closing Entries" to seek these old closing entries

So a P&L report will necessarily need to do both filtering for KVP and free-text search.

The multicolumn report will be different enough from the old balance-sheet and income-statement that I think I should spin it off into a different report altogether, and the others will be sunsetted. Hopefully this new report will be broadly acceptable because the old reports have a *lot* of supporting unintelligible old code, especially to handle closing-entries as above.

C

On 24/06/18 00:51, Christopher Lam wrote:
Hi John, the split->noclosing_balance is updated in xaccAccountRecomputeBalance. Will continue copypasta coding until it works!

On Sat, 23 Jun 2018, 23:56 John Ralls <jra...@ceridwen.fremont.ca.us <mailto:jra...@ceridwen.fremont.ca.us>> wrote:



    > On Jun 22, 2018, at 9:42 PM, Christopher Lam
    <christopher....@gmail.com <mailto:christopher....@gmail.com>> wrote:
    >
    > Hi All
    >
    > I'm working through balance-sheet.scm and overhauling this report.
    >
    > At the same time, I can see that balance-sheet.scm and
    income-statement.scm can be merged together.
    >
    > After all
    >
    > * balance sheet = asset/liability/equity balance at date X,
    > * income statement = difference in income/expense balances at
    date X and Y
    >
    > The issue I have is that the balance sheet can call
    xaccAccountGetBalanceAsOfDate(acc,date) directly to nicely
    retrieve the balance, whereas income statement cannot directly
    call it because it also includes closing transactions.
    >
    > My proposal is to augment xaccAccountGetBalanceAsOfDate to
    accept a 3rd boolean argument i.e.
    xaccAccountGetBalanceAsOfDate(acc,date,ignoreclosing) which will
    selectively produce the balance, ignore closing transactions.
    >
    > This is partly done in the last commit of
    
https://github.com/christopherlam/gnucash/tree/maint-create-API-call-for-noclosing-balances
    - it will augment API everywhere, and also modify Account.cpp,
    especially xaccAccountRecomputeBalance which will call
    xaccTransGetIsClosingTxn(xaccSplitGetParent(split)) for each
    split in the account to determine closing status and cache the
    balances for each split. See draft on
    
https://github.com/christopherlam/gnucash/tree/maint-create-API-call-for-noclosing-balances
    - this currently fails because I'm not good at C.
    >
    > *My query is whether it will be too expensive to call
    xaccTransGetIsClosingTxn for each split in Account.cpp to produce
    the split->noclosing_balance, which will be crucial to calculate
    income between two dates.*
    >
    > *Currently this 'closing-txn' filter is done in
    income-statement.scm via a "Closing Entries" string/regex filter
    and xaccTransGetIsClosingTxn calls, which IMHO is not ideal either.
    > *
    >
    > Any help welcome!
    >
    > P.S. if this last commit is removed, the
    
https://github.com/christopherlam/gnucash/tree/maint-create-API-call-for-noclosing-balances
    branch contains work-so-far for updated balance-sheet. Screenshot
    https://screenshots.firefox.com/eelmGQrGCtcP6bqC/null - see the
    multilevel subtotals were previously horizonal, are now vertical;
    original-currency amounts, and multiple-date balance sheets.
    >
    > _

    Chris,

    Only profiling will tell how much of a performance hit this creates.

    I don’t see where in your commit you’re computing the split’s
    no-closing balance. Perhaps that’s why it doesn’t work?

    Regards,
    John Ralls



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

Reply via email to