Omar (Pexego) has proposed merging 
lp:~omar7r/openobject-addons/trunk_procurement_multicompany into 
lp:openobject-addons.

Requested reviews:
  OpenERP R&D Team (openerp-dev)

For more details, see:
https://code.launchpad.net/~omar7r/openobject-addons/trunk_procurement_multicompany/+merge/78674

Never was possible create multicompany procurement schedulers. With this merge 
proposal allow it. We can have many companies and individual procurement 
scheduler cron for each. This merge proposal replace sql queries for OpenERP 
searches to respect multicompamy rules. It adds some improvements in different 
searches, for example, it doesn't necessary try to restart all procurements; 
when your implementation has 15000 procurements, procurement scheduler is very 
slowly processing done procurements, unecessary. I think that it's a good and 
needed proposal.
-- 
https://code.launchpad.net/~omar7r/openobject-addons/trunk_procurement_multicompany/+merge/78674
Your team OpenERP R&D Team is requested to review the proposed merge of 
lp:~omar7r/openobject-addons/trunk_procurement_multicompany into 
lp:openobject-addons.
=== modified file 'procurement/schedulers.py'
--- procurement/schedulers.py	2011-06-06 10:36:04 +0000
+++ procurement/schedulers.py	2011-10-07 21:54:33 +0000
@@ -53,7 +53,8 @@
 
             procurement_obj = self.pool.get('procurement.order')
             if not ids:
-                ids = procurement_obj.search(cr, uid, [], order="date_planned")
+                ids = procurement_obj.search(cr, uid, [('state', 'in', ['confirmed',
+                                'exception', 'running'])], order="date_planned")
             for id in ids:
                 wf_service.trg_validate(uid, 'procurement.order', id, 'button_restart', cr)
             if use_new_cursor:
@@ -67,15 +68,17 @@
             report_except = 0
             report_later = 0
             while True:
-                cr.execute("select id from procurement_order where state='confirmed' and procure_method='make_to_order' order by priority,date_planned limit 500 offset %s", (offset,))
-                ids = map(lambda x: x[0], cr.fetchall())
+                ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'),
+                    ('procure_method', '=', 'make_to_order')], order="priority,date_planned",
+                    offset=offset)
                 for proc in procurement_obj.browse(cr, uid, ids, context=context):
                     if maxdate >= proc.date_planned:
                         wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
                     else:
                         offset += 1
                         report_later += 1
-                for proc in procurement_obj.browse(cr, uid, ids, context=context):
+
+                    proc = procurement_obj.browse(cr, uid, proc.id)
                     if proc.state == 'exception':
                         report.append(_('PROC %d: on order - %3.2f %-5s - %s') % \
                                 (proc.id, proc.product_qty, proc.product_uom.name,
@@ -84,26 +87,30 @@
                     report_total += 1
                 if use_new_cursor:
                     cr.commit()
+                offset += len(ids)
                 if not ids:
                     break
             offset = 0
             ids = []
             while True:
                 report_ids = []
-                ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_stock')], offset=offset)
+                ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'),
+                    ('procure_method', '=', 'make_to_stock')], offset=offset)
                 for proc in procurement_obj.browse(cr, uid, ids):
                     if maxdate >= proc.date_planned:
                         wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
                         report_ids.append(proc.id)
                     else:
                         report_later += 1
-                    report_total += 1
-                for proc in procurement_obj.browse(cr, uid, report_ids, context=context):
+
+                    proc = procurement_obj.browse(cr, uid, proc.id)
                     if proc.state == 'exception':
                         report.append(_('PROC %d: from stock - %3.2f %-5s - %s') % \
                                 (proc.id, proc.product_qty, proc.product_uom.name,
                                     proc.product_id.name,))
                         report_except += 1
+                    report_total += 1
+
                 if use_new_cursor:
                     cr.commit()
                 offset += len(ids)
@@ -157,10 +164,7 @@
 
         warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
 
-        cr.execute('select p.id from product_product p \
-                        join product_template t on (p.product_tmpl_id=t.id) \
-                        where p.active=True and t.purchase_ok=True')
-        products_id = [x for x, in cr.fetchall()]
+        products_id = product_obj.search(cr, uid, [('purchase_ok','=',True)])
 
         for warehouse in warehouse_obj.browse(cr, uid, warehouse_ids, context=context):
             context['warehouse'] = warehouse
@@ -239,10 +243,10 @@
                         continue
                     if op.product_id.type not in ('consu'):
                         if op.procurement_draft_ids:
-                        # Check draft procurement related to this order point
+                    # Check draft procurement related to this order point
                             pro_ids = [x.id for x in op.procurement_draft_ids]
-                            cr.execute('select id, product_qty from procurement_order where id in %s order by product_qty desc', (tuple(pro_ids), ))
-                            procure_datas = cr.dictfetchall()
+                            procurement_ids = self.pool.get('procurement.order').search(cr, uid, [('id', 'in', pro_ids)], order="product_qty desc")
+                            procure_datas = self.pool.get('procurement.order').read(cr, uid, procurement_ids, ['product_qty'])
                             to_generate = qty
                             for proc_data in procure_datas:
                                 if to_generate >= proc_data['product_qty']:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to