diff --git a/addons/purchase_stock/models/purchase.py b/addons/purchase_stock/models/purchase.py index 253ebe818c4..005b1c7d96e 100644 --- a/addons/purchase_stock/models/purchase.py +++ b/addons/purchase_stock/models/purchase.py @@ -354,6 +354,7 @@ class PurchaseOrderLine(models.Model): 'picking_type_id': self.order_id.picking_type_id.id, 'group_id': self.order_id.group_id.id, 'origin': self.order_id.name, + 'description_picking': self.product_id._get_description(self.order_id.picking_type_id), 'route_ids': self.order_id.picking_type_id.warehouse_id and [(6, 0, [x.id for x in self.order_id.picking_type_id.warehouse_id.route_ids])] or [], 'warehouse_id': self.order_id.picking_type_id.warehouse_id.id, } diff --git a/addons/stock/models/product.py b/addons/stock/models/product.py index e4a98dc3dfa..13cb3a83d06 100644 --- a/addons/stock/models/product.py +++ b/addons/stock/models/product.py @@ -149,6 +149,20 @@ class Product(models.Model): return res + def _get_description(self, picking_type_id): + """ return product receipt/delivery/picking description depending on + picking type passed as argument. + """ + self.ensure_one() + picking_code = picking_type_id.code + description = self.description or self.name + if picking_code == 'incoming': + return self.description_pickingin or description + if picking_code == 'outgoing': + return self.description_pickingout or description + if picking_code == 'internal': + return self.description_picking or description + def _get_domain_locations(self): ''' Parses the context and returns a list of location_ids based on it. diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index b15875c799f..0a69b9f1e48 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -46,6 +46,7 @@ class StockMove(models.Model): 'product.product', 'Product', domain=[('type', 'in', ['product', 'consu'])], index=True, required=True, states={'done': [('readonly', True)]}) + description_picking = fields.Text('Description of Picking') product_qty = fields.Float( 'Real Quantity', compute='_compute_product_qty', inverse='_set_product_qty', digits=0, store=True, @@ -161,6 +162,11 @@ class StockMove(models.Model): package_level_id = fields.Many2one('stock.package_level', 'Package Level') picking_type_entire_packs = fields.Boolean(related='picking_type_id.show_entire_packs', readonly=True) + @api.onchange('product_id', 'picking_type_id') + def onchange_product(self): + if self.product_id: + self.description_picking = self.product_id._get_description(self.picking_type_id) + @api.depends('picking_id.is_locked') def _compute_is_locked(self): for move in self: diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py index b92954e3199..832d5b57404 100644 --- a/addons/stock/models/stock_move_line.py +++ b/addons/stock/models/stock_move_line.py @@ -53,6 +53,7 @@ class StockMoveLine(models.Model): tracking = fields.Selection(related='product_id.tracking', readonly=True) origin = fields.Char(related='move_id.origin', string='Source') picking_type_entire_packs = fields.Boolean(related='picking_id.picking_type_id.show_entire_packs', readonly=True) + description_picking = fields.Text(string="Description picking") @api.one @api.depends('picking_id.picking_type_id', 'product_id.tracking') @@ -97,6 +98,8 @@ class StockMoveLine(models.Model): @api.onchange('product_id', 'product_uom_id') def onchange_product_id(self): if self.product_id: + if self.picking_id: + self.description_picking = self.product_id._get_description(self.picking_id.picking_type_id) self.lots_visible = self.product_id.tracking != 'none' if not self.product_uom_id or self.product_uom_id.category_id != self.product_id.uom_id.category_id: if self.move_id.product_uom: diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index 3e0aed6aaee..a6aa5777cd3 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -622,6 +622,7 @@ class Picking(models.Model): 'product_id': ops.product_id.id, 'product_uom_qty': ops.qty_done, 'product_uom': ops.product_uom_id.id, + 'description_picking': ops.description_picking, 'location_id': pick.location_id.id, 'location_dest_id': pick.location_dest_id.id, 'picking_id': pick.id, diff --git a/addons/stock/models/stock_rule.py b/addons/stock/models/stock_rule.py index 16562884173..a713fbb6a85 100644 --- a/addons/stock/models/stock_rule.py +++ b/addons/stock/models/stock_rule.py @@ -226,6 +226,7 @@ class StockRule(models.Model): 'date': date_expected, 'date_expected': date_expected, 'propagate': self.propagate, + 'description_picking': product_id._get_description(self.picking_type_id), 'priority': values.get('priority', "1"), } for field in self._get_custom_move_fields(): diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml index 105a74bdb0f..d919419a94c 100644 --- a/addons/stock/views/stock_picking_views.xml +++ b/addons/stock/views/stock_picking_views.xml @@ -312,6 +312,7 @@ +