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 @@
+