openerp-expert-accounting team mailing list archive
-
openerp-expert-accounting team
-
Mailing list archive
-
Message #00190
Re: [SPAM] Re: Some interesting accounting improvement
Am Mittwoch 31 März 2010 12:41:48 schrieb Borja López Soilán (Pexego):
> Hi Ferdinand,
>
> I'm not sure if I understand what are you trying to accomplish: Are you
> trying to have the period sums of the accounts precalculated so when
> doing the fiscal year closing (or printing balance reports) only the
> last period values have to be considered? Or do you mean than in Austria
> you do a sort of period-closing?
>
> I think I better explain how spanish companies are required to work (by
> the spanish general accounting plan), and how most of the programs I know
> :)
>
>
> How do we work on Spain
>
> First of all, in Spain we have a complex minimal tree-like account chart
> (take a look here: http://www.gabilos.com/webcontable/indexn.htm). Small
> and medium business are allowed to use a simpler chart (mostly removes
> the "8" and "9" accounts). This chart of accounts is required (you can't
> delete or modify these accounts, but you may create new sub-accounts) by
> Hacienda (the spanish Treasury Department) as it's used to provide
> several official reports.
>
>
> Period operations
>
> Every period (quarterly for S&M business, monthly for big ones) we must
> report to Hacienda (Treasury) this official reports (there are more, but
> these are the important ones):
>
> * Report of the taxes by tax code (i.e. sum amounts of the taxes and
> base amount at 16% rate, at 7% rate, etc...).
>
> /Also called "303 model". This report
> (//https://www2.agenciatributaria.gob.es/es13/h/ie93030b.html)//
> currently has to be filled in by hand on OpenERP >_< with the
> values taken from the "taxes report" from the account module
> (though it doesn't seem to work for me: too slow and the RML
> doesn't seem to be properly parsed, instead of the amounts it
> spurts things like this: "[[ [[ [[formatLang(o['debit'])
> formatLang(o['credit'])]] formatLang(o['tax_amount']...").
> /
> * Report of all the invoices received and sent with detailed taxes.
>
> /Also called "340 model". A (non-official) report with mostly the
> same info can currently be printed with the
> account_financial_report module. And there is a
> l10n_ES_aeat_mod340 being developed on the spanish localization
> (though it is not currently usable) to generate the official
> report file (an ASCII file with fixed length records).
>
> /
> * Report of retained taxes to your employees (part of the employee
> salary must be retained and delivered to the Treasury every period).
>
> /Also called "110 model". It has to be filled by hand on OpenERP//
> :(/
>
> * Report of profits from real state rentings
>
> /Also called "115 model". Currently there is no way on OpenERP to
> record or tell apart 'real state renting' invoices :( so it is
> obvious that this report must be generated by hand.../ :(
>
> That means that (after) every period (when we have already received all
> the invoices of the period) we need to calculate the sums of the tax
> accounts on that period ("477" and "472" accounts) and leave them balanced.
>
> (Notice that we don't calculate the P&L or the result of the fiscal year
> or anything else here: just taxes)
>
>
> End of year (fiscal year closing) operations
>
> After the end of year (actually in March) some yearly reports must be
> sent to Hacienda (Treasury) or the Registro Mercantil (Commercial
> Registry):
>
> * P&L: Detailed report of the profit and losses by concept (not by
> account!, a concept is a sum of the values of several accounts) of
> the closed fiscal year compared to the previous fiscal year.
>
> /This report can be created using the account_balance_reporting
> module (that serves as a report engine) and the
> l10n_ES_account_balance_report module (the report templates for
> Spain). It gets the info from the "6" and "7" accounts.
>
> /
> * Net P&L: Detailed report of the profit and losses on the 'net'
> accounts by concept. Similar to the P&L report, but only for big
> companies with "8" an "9" accounts.
>
> /This report can be created using the account_balance_reporting
> module (that serves as a report engine) and the
> l10n_ES_account_balance_report module (the report templates for
> Spain). It gets the info from the "8" and "9" accounts./
>
> * Balance: Detailed report of the balance of all the accounting by
> concept (for example there is a concept "suppliers" that is the
> sum of the 400, 401, 403, 404 and 405 accounts minus the 406
> account) compared to the previous fiscal year. This report must be
> done after computing the P&L and, as the report name states, all
> the concepts should be balanced.
>
> /Again, this report can be created using the
> account_balance_reporting module (that serves as a report engine)
> and the l10n_ES_account_balance_report module (the report
> templates for Spain). It gets the info from the "1", "2", "3", "4"
> and "5 " accounts.
>
> /
> * The Memory: A complex report with several subreports that compare
> concepts with the previous fiscal years, and that details
> everything worth to notice about how the accounting was performed
> (for example if you change an account code you will have to
> explain here why).
>
> /This one is currently not supported on OpenERP, but I doubt that
> small business generate it by themselves (they usually have an
> external accounting manager/adviser)./
>
> * A report of some of the operations (sales, purchases, received
> payments) with partners. For example we must report all the
> parners that invoiced us (or that we invoiced them) more than
> 3005.06 euro, all the partners that payed us more than 6000 euro
> in cash, etc.
>
> /Also known as "347 model". This report may be generated using the
> l10n_ES_aeat_mod347 module from the spanish localization.
> /
>
> * Summaries (complete fiscal year versions) of some of the "by
> period" reports.
>
> /For example the// "390 model" is a //summary// of the "303
> models", the// "190 model" is summary of the "110 models" of the
> fiscal year, and the "193 model" is a //summary// of the "115
> models"//./
>
>
> There are more 'models' and reports (I think the accounting in Spain is
> too complex), but those are the important ones, and should be enough to
> give the accounting experts a good idea of why do the things we do.
>
>
> So, this is what we do when closing the fiscal year (after 'end of year
> operations' like the inventory, the assets amortization/depreciation...):
>
> - Generate the P&L report.
> - Do the P&L "regularization": Sum all expenses and purchases accounts
> (those that start with "6") with the profit and sales accounts (those
> starting with "7") and store the 'profit of the fiscal year' into
> another account ("129") that would be used later on one of the concepts
> of the 'Balance' report.
>
> - Generate the Net P&L report (if needed).
> - Do the Net P&L "regularizations" (if needed): Sum some net expense
> accounts (those that start with "8") and net income accounts (those
> starting with "9") and store that sums on several accounts
> ("800"+"801"+"802"+"803" into "133"; "810" + "811" + "812" into "134";
> "900" into "135").
>
> - Generate the 'Balance' report.
> - 'Close' all the accounts: Sum all the balances of all the accounts
> (but the "6", "7", "8" and "9" accounts that already have been balanced)
> in a single account move (without using a centralized counterpart). If
> there are no errors in the accounting, the move should be balanced and
> all the accounts should have a balance of 0 after this operation.
>
> If you think about how the accounting was done by hand (with pen and
> paper) this last move is indispensable if you want to assert that the
> accounting has no errors.
>
> And this is what we do when opening the next fiscal year:
>
> - 'Open' all the accounts: Make a move, inverse to the closing one, to
> restore the balance of the accounts.
But doesn't this mean that after closing a fy it's impossible to print the
years end balance of these accounts ??? - except one defines a method (a
special journal) not to add up the closing moves ???
For this a closing journal and an opening journal is needed.
>
> *Notice this:* One account with debit "3000" and credit "1000" (balance
> 2000) will be closed with a debit "0" credit "2000" entry, and will be
> reopened on the next year with debit "2000" credit "0". _Currently
> OpenERP always shows the cumulative debit/credit from the beginning of
> the times, so it will display debit "5000" and credit "3000" instead of
> the expected D "2000" C "0" :(_
it's easy to implement this in my module (and I will do soon)
Thank you for the clarification
As I said in Austria it's not a requirement to create these moves it is
sufficient that closing balance and opening balance are identical.
You can do it but it's not a legal requirement.
The problem is in OpenERP - the closing and opening moves are part of a
"period" which IMHO must be kept clean.
here all printed output shows at least the following columns
account name * balance carried forward * debit * credit * balance
whereas debit * credit * balance are the accumulated values for the requested
periods of the fy.
IMHO in OpenERP it's sort a bit difficult to calculate the balance carried
forward.
>
>
> What Spanish programs do to calculate some reports faster
>
> All the accounting programs I know (ContaPlus, ContaSol, ClassicConta,
> Eurowin, Primavera) do the same: They have a table with the
> precalculated debit, credit, balance and total amounts per month!
> Every time you create or modify an account move, that table would be
> updated (sometimes using SQL triggers to ensure consistency).
Exactly !!
>
> When you want to print a balance like report (a general ledger for
> example) for a given month, or simply want to see the current
> credit/debit of the account, the program only has to look at the values
> of that summary table (a single and simple query!) instead of
> recalculating the sums of each account from the beginning of time (that
> is what OpenERP does).
Did you look at my demo?
>
> Even Postgres (which is quicker than I thought when doing this
> aggregates) has a hard time when an OpenERP user tries to browse a chart
> of accounts with thousand of accounts. We have a client that has like
> 3000 clients itself; opening the 'clients' branch in the account tree
> view brings Postgres and OpenERP to his knees, cause it just
> recalculates the debit and credit of 3000 accounts (Postgres would have
> to sum all the account move lines of those 3000 accounts) every time.
good to hear that I am not alone :-(
>
> I think we could do something similar in OpenERP:
That's exactly what I am proposing (for a long time already)
>
> * Have precalculated debit/credit/balance totals per account and
> period (i.e. an account_account_totals table with account_id,
> period_id, period_debit, period_credit, period_balance,
> period_draft_debit, period_draft_credit, period_draft_balance,
> total_debit, total_credit, total_balance, total_draft_debit,
> total_draft_credit and total_draft_balance fields).
> * Use postgres triggers to update this totals (that would ensure
> ACID) each time a account_move_line is created/updated/deleted.
the module is available at request as I am not sure yet if it is bug free as
it must correctly handle current OpenERP's financial closing moves.
> * Use this precalculated totals on the account.account __compute
> method (that is used on the debit, credit, balance function fields).
that' what I am proposing
>
> That would pretty much speed up all the accounting in OpenERP. Just
> think about this:
>
> Every time we want to get the current balance of some accounts OpenERP
> does a query like this:
>
> * "SELECT l.account_id as id, COALESCE(SUM(l.debit),0) -
> COALESCE(SUM(l.credit), 0) as balance FROM account_move_line l
> WHERE l.account_id IN (%s) GROUP BY l.account_id"
>
> With the precalculated totals table it would be a much (several orders
> of magnitude*) quicker query:
>
> * "SELECT t.account_id as id, t.total_balance FROM
> account_account_totals t WHERE t.account_id IN (%s) AND
> t.period_id = %s"
>
>
> /(*) We turn the O(n*m) complexity of the first query into O(n)./
Exactly
we have implemented such sums already for very large companies and it works
perfectly
>
>
>
> Summary
>
> * The way OpenERP calculates the credit/debit/balance is toooooooooo
> slow, and can be improved a lot by using precalculated sums by
> period.
> * The way OpenERP calculates the current credit/debit (taking into
> account all the fiscal years instead of the current one) may not be valid
> (or confortable) on all the countries. We should add a (configuration)
> option to show only the current fiscal year
> amounts (using precalculated sums it would be much easier to
> implement).
You may want to look at the end of this page
http://www.chricar.at/ChriCar/PartnerDayLayout.html
> * The "close fiscal year" wizard of OpenERP is not valid on
> countries that need to regularize, close and reopen the accounting.
> * OpenERP lacks lots of accounting/financial reports.
>
>
> Well, I hope all this rants are useful for the OpenERP accounting experts
> :) Best Regards.
>
> Ferdinand Gassauer wrote:
> > Hello !
> >
> > I just would like to ask if Spain and other countries really require
> > account move lines for closing a fiscal year
> >
> > For some (also very big) companies here in Austria we do not create
> > closing moves for each account but on a permanent basis we calculate
> > period sums
> >
> > * for the fiscal year of the move
> >
> > ** P&L account for all P&L moves - showing the result of the fy
> >
> > ** Balance account - for all P&L moves - showing the result of the fy
> >
> > * for all following fiscal years (!) : balance carried forward - which
> > is hold in a special period '00'
> >
> > the big performance advantage is that for all period orientated
> > reports and views no detail moves have to be accessed.
> >
> > We calculate these sums when a move state is set to 'done'
> >
> > I have created a proof of concept but working module for the balance
> > carried forward (with PSQL triggers) which I can provide or can be
> > seen here
> >
> > Demo
> > <https://openerp.chricar.at/login?user=demoe&password=demoe&db=demo_ger_2
> >>
> >
> >
> > look at
> >
> > Finance / Charts / Accounts with postings
> >
> > look at 2010 - period 201000 holds the balance carried forward
> >
> > Please your opinion
>
--
Best Regards
ChriCar Beteiligungs- und Beratungs- GmbH
http://www.chricar.at/ChriCar/index.html
Dr. Ferdinand Gassauer
Official Tiny Partner
Follow ups
References