Comment 2 for bug 784339

Revision history for this message
Bogdan Stanciu (bstanciu) wrote : Re: [Bug 784339] [NEW] [stable 6.0.2] Account Balance Sheet parser logic error leads to incorrect totals amounts and developer confusion

On 18. 05. 11 02:43, Graeme Gellatly wrote:
> Public bug reported:
>
> If you look at the section where it calculates sum_dr and sum_cr it is
> incorrect. Well it is technically correct, but in the sense of having a
> balance sheet that balances it is incorrect.
>
> Take the accounting equation property = property rights expanded to
> assets = liabilities + equity
>
> In the case of a net profit we incorrectly add the result to sum_dr, our
> equity has increased afterall, so sum_cr should increase, (this
> behaviour is correct, except the function is named wrong) however in the
> case of a net loss we subtract the amount from sum_cr (which should be
> sum_dr) which is incorrect as our equity has reduced.
>
> However here is the first bug - sum_dr and sum_cr are around the wrong
> way - sum_cr is increased for asset accounts, and sum_dr is increased
> for liabilities - it should be the other way around
>
> Put another way, for a balance sheet, we don't really want the totals to
> be the sum of dr's and cr's, we want it to be the total of the stuff on
> the left (Assets) and the total of the stuff on the right (Property
> Rights).
>
> So in the case of a Net Profit we must increase equity (credit) and in
> the case of a net loss we must reduce equity (credit). At no point
> should we be changing debits. The value of our Assets has not changed
> (in so far that a net loss already reduces our assets), it is our equity
> that has reduced.
>
> Now to make this one step more confusing, and for some unknown reason it
> has been decided to leave liabilities as a negative balance, and then on
> the report use absolute value which is also incorrect. Many assets and
> liabilities should have a balance opposite of the standard, Accumulated
> depreciation for example in Assets, VAT Paid in Liabilities, Bank
> Accounts temporarily in overdraft.
>
> In my own parser, which I have written, to resolve this we declare a
> dictionary called signs and at the point we compute the account.balance
> we multiple it by the sign.
>
> sign = {
> 'fixed_asset': 1,
> 'asset': 1,
> 'liability': -1,
> 'fixed_liability': -1,
> 'equity': -1,
> }
>
> We use more types than standard but you get the idea. Assets are their
> balance, liability is their balance *-1.
>
> Then all we do in the for account in accounts loop is make the balance:
> account.balance * sign[typ]
>
> So in summary
> sum_dr and sum_cr are round the wrong way.
> Adding a net loss to Assets is incorrect - it should be subtracted from Equity.
> values (already reported bug) should not be absolute, but rather their inverse for liability and equity accounts.
>
> ** Affects: openobject-addons
> Importance: Undecided
> Status: New
>
I would like to add one more issue to your bug, as I feel it falls in
the same "logic":

as the sums are calculated with "abs", even on the same side the result
is at least misleading. I noticed this when asset credit (cumulated
depreciation on assets) was presented as a positive balance. I think
that it should be negative..

thank you!
Bogdan