diff --git a/addons/purchase/test/process/run_scheduler.yml b/addons/purchase/test/process/run_scheduler.yml
index b8c4019ed1a..8ac84a37125 100644
--- a/addons/purchase/test/process/run_scheduler.yml
+++ b/addons/purchase/test/process/run_scheduler.yml
@@ -24,3 +24,13 @@
!python {model: procurement.order}: |
procurement = self.browse(cr, uid, ref('procurement_order_testcase0'))
assert procurement.purchase_id, 'RFQ should be generated!'
+-
+ I delete the line from the purchase order and check that the move and the procurement are cancelled
+-
+ !python {model: procurement.order}: |
+ procurement = self.browse(cr, uid, ref('procurement_order_testcase0'))
+ move = procurement.purchase_id.order_line[0].move_dest_id
+ procurement.purchase_id.order_line[0].unlink()
+ assert move.state == 'cancel', 'Move should be cancelled'
+ procurement.refresh()
+ assert procurement.state == 'cancel', 'Procurement should be cancelled'
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 60e5c83ecf0..e04e022797f 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -125,7 +125,7 @@
+ on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, False, product_uos_qty, False, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/>
+ on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, False, product_uos_qty, False, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/>
+ on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,False,product_uos_qty,False,name,parent.partner_id, False, True, parent.date_order, product_packaging, parent.fiscal_position, False, context)"/>
0:
+ if float_compare(quantity_rest, 0, precision_rounding=move.product_id.uom_id.rounding):
default_val = {
'product_qty': quantity,
'product_uos_qty': uos_qty,