diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index a39b2d79843..2bc095a9661 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -371,7 +371,7 @@ class procurement_order(osv.osv):
#temporary context passed in write to prevent an infinite loop
ctx_wkf = dict(context or {})
ctx_wkf['workflow.trg_write.%s' % self._name] = False
- self.write(cr, uid, [procurement.id], {'message': message, 'state': 'exception'},context=ctx_wkf)
+ self.write(cr, uid, [procurement.id], {'message': message},context=ctx_wkf)
return ok
def _workflow_trigger(self, cr, uid, ids, trigger, context=None):
diff --git a/addons/procurement/procurement_workflow.xml b/addons/procurement/procurement_workflow.xml
index 086a92214f0..76b54370ef2 100644
--- a/addons/procurement/procurement_workflow.xml
+++ b/addons/procurement/procurement_workflow.xml
@@ -29,6 +29,8 @@
confirm_wait
+ function
+ write({'state':'exception'})
@@ -119,7 +121,7 @@
-
+
button_restart
@@ -129,7 +131,7 @@
-
+
button_restart
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index cf08cb91a06..07280b38ae7 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -72,6 +72,10 @@ class procurement_order(osv.osv):
maxdate = (datetime.today() + relativedelta(days=company.schedule_range)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
start_date = fields.datetime.now()
offset = 0
+ report = []
+ report_total = 0
+ report_except = 0
+ report_later = 0
while True:
ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority, date_planned', context=context)
for proc in procurement_obj.browse(cr, uid, ids, context=context):
@@ -79,7 +83,14 @@ class procurement_order(osv.osv):
wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
else:
offset += 1
+ report_later += 1
+ if proc.state == 'exception':
+ report.append(_('PROC %d: on order - %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()
if not ids:
@@ -87,10 +98,22 @@ class procurement_order(osv.osv):
offset = 0
ids = []
while True:
+ report_ids = []
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
+
+ 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
+
if use_new_cursor:
cr.commit()
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 04b380ef098..992af37222e 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -1044,9 +1044,10 @@ class procurement_order(osv.osv):
message = _('No default supplier defined for this product')
elif not partner_obj.address_get(cr, uid, [partner.id], ['delivery'])['delivery']:
message = _('No address defined for the supplier')
+
if message:
if procurement.message != message:
- cr.execute("update procurement_order set message=%s, state='exception' where id=%s", (message, procurement.id))
+ cr.execute('update procurement_order set message=%s where id=%s', (message, procurement.id))
return False
if user.company_id and user.company_id.partner_id: