From f6635d02db8d2f45f8e6f097c981f10fcea7f44d Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Mon, 19 Mar 2012 10:41:10 +0530 Subject: [PATCH] [IMP] Added social chatter notification messages for incoming shipments and order delivery bzr revid: rgaopenerp-20120319051110-5yyu30jmrexzjqsx --- addons/stock/stock.py | 68 ++++++++++++++++++++++++++++++------- addons/stock/stock_view.xml | 2 ++ 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 885f7cd2077..62fe91cf718 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -536,6 +536,7 @@ stock_tracking() #---------------------------------------------------------- class stock_picking(osv.osv): _name = "stock.picking" + _inherit = 'mail.thread' _description = "Picking List" def _set_maximum_date(self, cr, uid, ids, name, value, arg, context=None): @@ -610,6 +611,8 @@ class stock_picking(osv.osv): seq_obj_name = 'stock.picking.' + vals['type'] vals['name'] = self.pool.get('ir.sequence').get(cr, user, seq_obj_name) new_id = super(stock_picking, self).create(cr, user, vals, context) + if new_id: + self.create_send_note(cr, user, [new_id], context=context) return new_id _columns = { @@ -723,7 +726,6 @@ class stock_picking(osv.osv): if r.state == 'draft': todo.append(r.id) - self.log_picking(cr, uid, ids, context=context) todo = self.action_explode(cr, uid, todo, context) if len(todo): @@ -796,7 +798,6 @@ class stock_picking(osv.osv): @return: True """ self.write(cr, uid, ids, {'state': 'assigned'}) - self.log_picking(cr, uid, ids, context=context) return True def test_finished(self, cr, uid, ids): @@ -837,7 +838,7 @@ class stock_picking(osv.osv): ids2 = [move.id for move in pick.move_lines] self.pool.get('stock.move').action_cancel(cr, uid, ids2, context) self.write(cr, uid, ids, {'state': 'cancel', 'invoice_state': 'none'}) - self.log_picking(cr, uid, ids, context=context) + self.ship_cancel_send_note(cr, uid, ids, context) return True # @@ -1310,14 +1311,17 @@ class stock_picking(osv.osv): wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_done', cr) wf_service.trg_write(uid, 'stock.picking', pick.id, cr) delivered_pack_id = new_picking + back_order_name = self.browse(cr, uid, delivered_pack_id, context=context).name + self.back_order_send_note(cr, uid, ids, back_order_name, context) else: self.action_move(cr, uid, [pick.id]) wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_done', cr) delivered_pack_id = pick.id + self.ship_done_send_note(cr, uid, ids, context) delivered_pack = self.browse(cr, uid, delivered_pack_id, context=context) res[pick.id] = {'delivered_picking': delivered_pack.id or False} - + return res def log_picking(self, cr, uid, ids, context=None): @@ -1358,8 +1362,53 @@ class stock_picking(osv.osv): res = data_obj.get_object_reference(cr, uid, 'stock', view_list.get(pick.type, 'view_picking_form')) context.update({'view_id': res and res[1] or False}) message += state_list[pick.state] - self.log(cr, uid, pick.id, message, context=context) return True + + + # ----------------------------- + # OpenChatter and notifications + # ----------------------------- + def _get_document_type(self, type): + type_dict = { + 'out': 'Delivery order', + 'in': 'Shipment', + 'internal': 'Internal picking', + } + return type_dict[type] + + 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, ids, _('System notification'), + _("""%s created.""") % (self._get_document_type(obj.type)), + type='notification', context=context) + + def scrap_send_note(self, cr, uid, ids, quantity, name, context=None): + self.message_append_note(cr, uid, ids, _('System notification'), + _("""%s %s moved to scrap.""") + % (quantity, name), type='notification', context=context) + + def back_order_send_note(self, cr, uid, ids, back_name, context=None): + self.message_append_note(cr, uid, ids, _('System notification'), + _("""Back order %s created.""") + % (back_name), type='notification', context=context) + + def ship_done_send_note(self, cr, uid, ids, context=None): + type_dict = { + 'out': 'delivered', + 'in': 'received', + 'internal': 'moved', + } + for obj in self.browse(cr, uid, ids, context=context): + self.message_append_note(cr, uid, ids, _('System notification'), + _("""Product %s.""") % (type_dict[obj.type]), + type='notification', context=context) + + def ship_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, ids, _('System notification'), + _("""%s cancelled.""") % (self._get_document_type(obj.type)), + type='notification', context=context) + stock_picking() @@ -2361,7 +2410,7 @@ class stock_move(osv.osv): res += [new_move] product_obj = self.pool.get('product.product') for (id, name) in product_obj.name_get(cr, uid, [move.product_id.id]): - self.log(cr, uid, move.id, "%s x %s %s" % (quantity, name, _("were scrapped"))) + move.picking_id.scrap_send_note(quantity, name) self.action_done(cr, uid, res, context=context) return res @@ -2483,11 +2532,6 @@ class stock_move(osv.osv): } self.write(cr, uid, [move.id], update_val) - product_obj = self.pool.get('product.product') - for new_move in self.browse(cr, uid, res, context=context): - for (id, name) in product_obj.name_get(cr, uid, [new_move.product_id.id]): - message = _("Product '%s' is consumed with '%s' quantity.") %(name, new_move.product_qty) - self.log(cr, uid, new_move.id, message) self.action_done(cr, uid, res, context=context) return res @@ -2697,8 +2741,6 @@ class stock_inventory(osv.osv): 'location_dest_id': location_id, }) move_ids.append(self._inventory_line_hook(cr, uid, line, value)) - message = _("Inventory '%s' is done.") %(inv.name) - self.log(cr, uid, inv.id, message) self.write(cr, uid, [inv.id], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]}) self.pool.get('stock.move').action_confirm(cr, uid, move_ids, context=context) return True diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 4264a488436..51d77b6557c 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1010,6 +1010,7 @@ + @@ -1227,6 +1228,7 @@ +