diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index 9260b906289..47b0ee65c11 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -479,7 +479,7 @@ class StockMove(models.Model): show_source_location=self.location_id.child_ids and self.picking_type_id.code != 'incoming', show_destination_location=self.location_dest_id.child_ids and self.picking_type_id.code != 'outgoing', show_package=not self.location_id.usage == 'supplier', - show_reserved_quantity=self.state != 'done' + show_reserved_quantity=self.state != 'done' and not self.picking_id.immediate_transfer ), } diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index a6a9d18d025..cb7c4245a4a 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -405,15 +405,19 @@ class Picking(models.Model): def _compute_has_packages(self): self.has_packages = self.move_line_ids.filtered(lambda ml: ml.result_package_id) - @api.multi def _compute_show_check_availability(self): + """ According to `picking.show_check_availability`, the "check availability" button will be + displayed in the form view of a picking. + """ for picking in self: - has_moves_to_reserve = any( + if picking.immediate_transfer or not picking.is_locked or picking.state not in ('confirmed', 'waiting', 'assigned'): + picking.show_check_availability = False + continue + picking.show_check_availability = 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', 'assigned') and has_moves_to_reserve @api.multi @api.depends('state', 'move_lines') @@ -421,7 +425,7 @@ class Picking(models.Model): for picking in self: if not picking.move_lines and not picking.package_level_ids: picking.show_mark_as_todo = False - elif not (picking.immediate_transfer) and picking.state == 'draft': + elif not picking.immediate_transfer and picking.state == 'draft': picking.show_mark_as_todo = True elif picking.state != 'draft' or not picking.id: picking.show_mark_as_todo = False diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml index cac7000381a..76b0bcddeb8 100644 --- a/addons/stock/views/stock_picking_views.xml +++ b/addons/stock/views/stock_picking_views.xml @@ -211,6 +211,7 @@ +