From 5ae754754f86caee4ecf9ce8de535f59d1cb917f Mon Sep 17 00:00:00 2001 From: Joren Van Onder Date: Fri, 15 Sep 2017 13:39:51 -0700 Subject: [PATCH] [IMP] stock: display check availability only when a move can be checked --- addons/stock/models/stock_picking.py | 14 ++++++++++++++ addons/stock/views/stock_picking_views.xml | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index 33d4eeaabd1..c8ff0586d7c 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -268,6 +268,10 @@ class Picking(models.Model): 'Has Packages', compute='_compute_has_packages', help='Check the existence of destination packages on move lines') + show_check_availability = fields.Boolean( + compute='_compute_show_check_availability', + help='Technical field used to compute whether the check availability button should be shown.') + owner_id = fields.Many2one( 'res.partner', 'Owner', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, @@ -353,6 +357,16 @@ class Picking(models.Model): break self.has_packages = has_packages + @api.multi + def _compute_show_check_availability(self): + for picking in self: + has_moves_to_reserve = any( + move.state in ('waiting', 'confirmed', 'partially_available') and + float_compare(move.product_uom_qty, 0, precision_rounding=move.product_uom.rounding) + for move in picking.move_lines + ) + picking.show_check_availability = picking.is_locked and picking.state in ('confirmed', 'waiting') and has_moves_to_reserve + @api.onchange('picking_type_id', 'partner_id') def onchange_picking_type(self): if self.picking_type_id: diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml index 4405753e081..3dc8dcbb43d 100644 --- a/addons/stock/views/stock_picking_views.xml +++ b/addons/stock/views/stock_picking_views.xml @@ -201,8 +201,9 @@
+