I'm working on OpenERP7 in a customized report of balance.
print "registers ", len(account_move_line_search)
print "start ", time.strftime("%Y-%m-%d %H:%M:%S")
account_account_search = account_account_pool.search(cr, uid, [('level','=',5)])
for account_account in account_account_pool.browse(cr,uid,account_account_search):
account_move_line_search_inicial = account_move_line_pool.search(cr,uid,[('move_id.date','<=',self_browse.end_date),
sum_cuenta_debit = 0.00
sum_cuenta_credit = 0.00
for account_move_line in account_move_line_pool.browse(cr,uid,account_move_line_search_inicial):
sum_cuenta_debit += account_move_line.debit
sum_cuenta_credit += account_move_line.credit
total_asientos += 1
print "end ", time.strftime("%Y-%m-%d %H:%M:%S")
The report takes seats, in Date Range (do not take the date of account_move_line).
My work code it's to get the necessary values (debit,credit,account_id,account_id_level_4,account_id_level_3,account_id_level_2,account_id_level_1).
With a sample of 14580 records of 10 days, movements of my jornuas, it takes 47 seconds (too in my opinion).
When I place my search more filters, takes longer.
Is there any way to simplify this time ?.
or, my work code its bad?, I should do?
It welcomes comments.
Hi Ludo, and thanks for responding.
The date filter is for table "account_move" but the debit and credit are in "account_move_line", but I have to build it so:
Given that the sum of level 5, adds to level 4, and level 4 adds to level 3, so on until the level 0 or level 1.
There is another way you suggest? or that is my fault in work code??
Well, for each account in your for-loop, you will execute another for loop searching for move_lines, effectively searching the 14580 records aroudn 300 times ( based on the Dutch accounting schema). Since the data does not change in your for loop, perhaps you could move the search outside of your loop. That would surely already make a little difference.
Furthermore, maybe you can use the methods for gathering move lines that the existing reports use, as they tend to be quite fast?
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
About This Community
|Asked: 3/4/15, 8:57 AM|
|Seen: 727 times|
|Last updated: 3/16/15, 8:10 AM|