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