Merge lp:~openerp-chinese-team/openobject-addons/fix-inefficient-mrp-scheduler into lp:openobject-addons/6.0

Proposed by digitalsatori(Shine IT)
Status: Merged
Approved by: Xavier ALT
Approved revision: no longer in the source branch.
Merged at revision: 5169
Proposed branch: lp:~openerp-chinese-team/openobject-addons/fix-inefficient-mrp-scheduler
Merge into: lp:openobject-addons/6.0
Diff against target: 20 lines (+5/-4)
1 file modified
procurement/schedulers.py (+5/-4)
To merge this branch: bzr merge lp:~openerp-chinese-team/openobject-addons/fix-inefficient-mrp-scheduler
Reviewer Review Type Date Requested Status
Core devs Pending
Review via email: mp+99208@code.launchpad.net

Description of the change

When there exists thousands of procurements, sorting by planed_date is extremely time consuming, and it is not necessary. removed sorting, added a domain filter, commit for every 500 procurments processed

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'procurement/schedulers.py'
--- procurement/schedulers.py 2011-01-14 00:11:01 +0000
+++ procurement/schedulers.py 2012-03-25 14:30:26 +0000
@@ -53,11 +53,12 @@
5353
54 procurement_obj = self.pool.get('procurement.order')54 procurement_obj = self.pool.get('procurement.order')
55 if not ids:55 if not ids:
56 ids = procurement_obj.search(cr, uid, [], order="date_planned")56 ids = procurement_obj.search(cr, uid, [('state', '=', 'exception')])
57 for id in ids:57 qty_procs = len(ids)
58 for i, id in enumerate(ids, 1):
58 wf_service.trg_validate(uid, 'procurement.order', id, 'button_restart', cr)59 wf_service.trg_validate(uid, 'procurement.order', id, 'button_restart', cr)
59 if use_new_cursor:60 if ((i%500 == 0) or (qty_procs == i)) and use_new_cursor:
60 cr.commit()61 cr.commit()
61 company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id62 company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
62 maxdate = (datetime.today() + relativedelta(days=company.schedule_range)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)63 maxdate = (datetime.today() + relativedelta(days=company.schedule_range)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
63 start_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss')64 start_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss')