[IMP] stock, purchase_stock: Stock move description

Display product picking,receipt or delivery description depending
the picking type. The purpose is to display usefull information/note at
the right place at the right moment.

This commit is related to task ID : 1880135

closes odoo/odoo#28175
This commit is contained in:
Darshil Trivedi
2019-01-28 10:35:11 +00:00
committed by Arnold Moyaux
parent cf52a04979
commit c48c3e6155
7 changed files with 27 additions and 0 deletions
+1
View File
@@ -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,
}
+14
View File
@@ -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.
+6
View File
@@ -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:
+3
View File
@@ -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:
+1
View File
@@ -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,
+1
View File
@@ -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():
@@ -312,6 +312,7 @@
<field name="has_move_lines" invisible="1"/>
<field name="is_locked" invisible="1"/>
<field name="product_id" required="1" attrs="{'readonly': ['|', '&amp;', ('state', '!=', 'draft'), ('additional', '=', False), ('has_move_lines', '=', True)]}"/>
<field name="description_picking" string="Description"/>
<field name="is_initial_demand_editable" invisible="1"/>
<field name="is_quantity_done_editable" invisible="1"/>
<field name="product_uom_qty" string="Initial Demand" attrs="{'column_invisible': [('parent.immediate_transfer', '=', True)], 'readonly': [('is_initial_demand_editable', '=', False)]}"/>