[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:
committed by
Arnold Moyaux
parent
cf52a04979
commit
c48c3e6155
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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': ['|', '&', ('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)]}"/>
|
||||
|
||||
Reference in New Issue
Block a user