diff --git a/delivery_multi_destination/models/delivery_carrier.py b/delivery_multi_destination/models/delivery_carrier.py index c775f65d20..0f993a1ed3 100644 --- a/delivery_multi_destination/models/delivery_carrier.py +++ b/delivery_multi_destination/models/delivery_carrier.py @@ -29,6 +29,12 @@ class DeliveryCarrier(models.Model): required=True, ) + @api.onchange("destination_type", "child_ids") + def _onchange_destination_type(self): + """Define the corresponding value to avoid creation error with UX.""" + if self.destination_type == "multi" and self.child_ids and not self.product_id: + self.product_id = fields.first(self.child_ids.product_id) + def search(self, args, offset=0, limit=None, order=None, count=False): """Don't show by default children carriers.""" if not self.env.context.get("show_children_carriers"): diff --git a/delivery_multi_destination/tests/test_delivery_multi_destination.py b/delivery_multi_destination/tests/test_delivery_multi_destination.py index 02468c451c..ba2ed3de97 100644 --- a/delivery_multi_destination/tests/test_delivery_multi_destination.py +++ b/delivery_multi_destination/tests/test_delivery_multi_destination.py @@ -204,3 +204,13 @@ def test_picking_validation(self): picking.move_lines.quantity_done = 1 picking._action_done() self.assertAlmostEqual(picking.carrier_price, 50) + + def test_delivery_carrier_multi_form(self): + carrier_form = Form(self.env["delivery.carrier"]) + carrier_form.name = "Multi carrier" + carrier_form.destination_type = "multi" + with carrier_form.child_ids.new() as child_form: + child_form.name = "Child carrier" + child_form.product_id = self.product_child_1 + carrier = carrier_form.save() + self.assertEqual(carrier.product_id, self.product_child_1)