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 @@
+
@@ -220,13 +221,12 @@
-
+
-
-
+
@@ -281,7 +281,7 @@
-
+
@@ -291,7 +291,6 @@
-
@@ -312,8 +311,8 @@
-
-
+
+