diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml
index ad6b571f905..3436fcb7bcb 100644
--- a/addons/mrp/mrp_view.xml
+++ b/addons/mrp/mrp_view.xml
@@ -962,10 +962,10 @@
form
-
+
-
+
diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py
index 4086a401f56..7b5c9ec1233 100644
--- a/addons/mrp/procurement.py
+++ b/addons/mrp/procurement.py
@@ -43,7 +43,7 @@ class procurement_order(osv.osv):
cr.execute('update procurement_order set message=%s where id=%s', (_('No BoM defined for this product !'), procurement.id))
for (id, name) in self.name_get(cr, uid, procurement.id):
message = _("Procurement '%s' has an exception: 'No BoM defined for this product !'") % name
- self.log(cr, uid, id, message)
+ self.message_append_note(cr, uid, [procurement], body=message, context=context)
return False
return True
@@ -97,6 +97,7 @@ class procurement_order(osv.osv):
})
res[procurement.id] = produce_id
self.write(cr, uid, [procurement.id], {'state': 'running'})
+ self.running_send_note(cr, uid, ids, context=None)
bom_result = production_obj.action_compute(cr, uid,
[produce_id], properties=[x.id for x in procurement.property_ids])
wf_service.trg_validate(uid, 'mrp.production', produce_id, 'button_confirm', cr)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 164314c4573..bc25985475f 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -81,6 +81,7 @@ class procurement_order(osv.osv):
_name = "procurement.order"
_description = "Procurement"
_order = 'priority,date_planned desc'
+ _inherit = ['mail.thread']
_log_create = False
_columns = {
'name': fields.char('Reason', size=64, required=True, help='Procurement name.'),
@@ -346,6 +347,7 @@ class procurement_order(osv.osv):
move_obj.action_confirm(cr, uid, [id], context=context)
self.write(cr, uid, [procurement.id], {'move_id': id, 'close_move': 1})
self.write(cr, uid, ids, {'state': 'confirmed', 'message': ''})
+ self.confirm_send_note(cr, uid, ids, context)
return True
def action_move_assigned(self, cr, uid, ids, context=None):
@@ -354,6 +356,7 @@ class procurement_order(osv.osv):
"""
self.write(cr, uid, ids, {'state': 'running',
'message': _('from stock: products assigned.')})
+ self.running_send_note(cr, uid, ids, context=None)
return True
def _check_make_to_stock_service(self, cr, uid, procurement, context=None):
@@ -383,7 +386,8 @@ class procurement_order(osv.osv):
message = _("Not enough stock.")
if message:
- self.log(cr, uid, procurement.id, _("Procurement '%s' is in exception: ") % (procurement.name) + message)
+ message = _("Procurement '%s' is in exception: ") % (procurement.name) + message
+ self.message_append_note(cr, uid, [procurement], body=message, context=context)
cr.execute('update procurement_order set message=%s where id=%s', (message, procurement.id))
return ok
@@ -393,6 +397,7 @@ class procurement_order(osv.osv):
"""
for procurement in self.browse(cr, uid, ids, context=context):
self.write(cr, uid, [procurement.id], {'state': 'running'})
+ self.running_send_note(cr, uid, ids, context=None)
return True
def action_produce_assign_product(self, cr, uid, ids, context=None):
@@ -427,6 +432,7 @@ class procurement_order(osv.osv):
if len(todo):
move_obj.write(cr, uid, todo, {'state': 'assigned'})
self.write(cr, uid, ids, {'state': 'cancel'})
+ self.cancel_send_note(cr, uid, ids, context=None)
wf_service = netsvc.LocalService("workflow")
for id in ids:
wf_service.trg_trigger(uid, 'procurement.order', id, cr)
@@ -451,6 +457,7 @@ class procurement_order(osv.osv):
@return: True
"""
res = self.write(cr, uid, ids, {'state': 'ready'})
+ self.ready_send_note(cr, uid, ids, context=None)
return res
def action_done(self, cr, uid, ids):
@@ -463,11 +470,45 @@ class procurement_order(osv.osv):
if procurement.close_move and (procurement.move_id.state <> 'done'):
move_obj.action_done(cr, uid, [procurement.move_id.id])
res = self.write(cr, uid, ids, {'state': 'done', 'date_close': time.strftime('%Y-%m-%d')})
+ self.done_send_note(cr, uid, ids, context=None)
wf_service = netsvc.LocalService("workflow")
for id in ids:
wf_service.trg_trigger(uid, 'procurement.order', id, cr)
return res
+ # ----------------------------------------
+ # OpenChatter methods and notifications
+ # ----------------------------------------
+
+ def create(self, cr, uid, vals, context=None):
+ obj_id = super(procurement_order, self).create(cr, uid, vals, context)
+ self.create_send_note(cr, uid, [obj_id], context=context)
+ return obj_id
+
+ def create_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been created."), context=context)
+
+ def confirm_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been confirmed."), context=context)
+
+ def running_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been set to running."), context=context)
+
+ def ready_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been set to ready."), context=context)
+
+ def cancel_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been cancelled."), context=context)
+
+ def done_send_note(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ self.message_append_note(cr, uid, [obj.id], body=_("Procurement has been done."), context=context)
+
procurement_order()
class StockPicking(osv.osv):
diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml
index b3e90ab4e6e..f1430f480b7 100644
--- a/addons/procurement/procurement_view.xml
+++ b/addons/procurement/procurement_view.xml
@@ -46,7 +46,8 @@
procurement.order
form
-
diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py
index 7d3045aede0..c27a3d547a3 100644
--- a/addons/project_mrp/project_procurement.py
+++ b/addons/project_mrp/project_procurement.py
@@ -81,6 +81,7 @@ class procurement_order(osv.osv):
'company_id': procurement.company_id.id,
},context=context)
self.write(cr, uid, [procurement.id], {'task_id': task_id, 'state': 'running'}, context=context)
+ self.running_send_note(cr, uid, ids, context=None)
return task_id
procurement_order()
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 97fe017ce62..962287576ed 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -991,6 +991,7 @@ class procurement_order(osv.osv):
}
res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line_vals, context=context)
self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]})
+ self.running_send_note(cr, uid, ids, context=None)
return res
procurement_order()
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index 7a7b9e942cd..97230b3e191 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -506,7 +506,7 @@
form
-
+
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index 43cfe2de069..a458481e524 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -259,7 +259,7 @@ class procurement_order(osv.osv):
})],
'purchase_ids': [(6,0,[po_id])]
})
- self.write(cr,uid,proc_id,{'requisition_id':requisition_id})
+ self.write(cr,uid,[proc_id],{'requisition_id':requisition_id})
return res
procurement_order()
diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py
index 33168a53e20..97ccb3eb38a 100644
--- a/addons/stock_location/procurement_pull.py
+++ b/addons/stock_location/procurement_pull.py
@@ -116,6 +116,7 @@ class procurement_order(osv.osv):
move_obj.write(cr, uid, [proc.move_id.id],
{'location_id':proc.location_id.id})
self.write(cr, uid, [proc.id], {'state':'running', 'message':_('Pulled from another location via procurement %d')%proc_id})
+ self.running_send_note(cr, uid, ids, context=None)
# trigger direct processing (the new procurement shares the same planned date as the original one, which is already being processed)
wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_check', cr)