From a273cde7ba4dc69e801701a874baa4d9572361f9 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Wed, 15 Jan 2025 10:03:55 -0500 Subject: [PATCH] delivery_carrier_partner_account: make default the first account added to a partner --- .../models/res_partner.py | 19 +++++++++++- .../tests/__init__.py | 1 + .../tests/test_res_partner.py | 30 +++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 delivery_carrier_partner_account/tests/test_res_partner.py diff --git a/delivery_carrier_partner_account/models/res_partner.py b/delivery_carrier_partner_account/models/res_partner.py index e0306fe..120f238 100644 --- a/delivery_carrier_partner_account/models/res_partner.py +++ b/delivery_carrier_partner_account/models/res_partner.py @@ -1,4 +1,4 @@ -from odoo import models, fields +from odoo import models, fields, api class Partner(models.Model): @@ -16,3 +16,20 @@ class Partner(models.Model): tracking=1, ondelete="restrict", ) + + def write(self, vals): + update_default_carrier = ( + "carrier_account_ids" in vals and not self.default_carrier_account_id + ) + res = super().write(vals) + if update_default_carrier: + self.default_carrier_account_id = self.carrier_account_ids[0] + return res + + @api.model_create_multi + def create(self, vals_list): + res = super().create(vals_list) + for rec in res: + if not rec.default_carrier_account_id and rec.carrier_account_ids: + rec.default_carrier_account_id = rec.carrier_account_ids[0] + return res diff --git a/delivery_carrier_partner_account/tests/__init__.py b/delivery_carrier_partner_account/tests/__init__.py index 94c2ac7..b7bf5a8 100644 --- a/delivery_carrier_partner_account/tests/__init__.py +++ b/delivery_carrier_partner_account/tests/__init__.py @@ -2,3 +2,4 @@ from . import test_carrier_account_common from . import test_carrier_account_mixin from . import test_choose_delivery_carrier from . import test_sale_order +from . import test_res_partner diff --git a/delivery_carrier_partner_account/tests/test_res_partner.py b/delivery_carrier_partner_account/tests/test_res_partner.py new file mode 100644 index 0000000..9b7e86c --- /dev/null +++ b/delivery_carrier_partner_account/tests/test_res_partner.py @@ -0,0 +1,30 @@ +from odoo.tests import TransactionCase, tagged +from odoo import Command + + +@tagged("post_install", "-at_install") +class TestResPartner(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + + def test_default_carrier_set_on_create(self): + partner = self.env["res.partner"].create( + { + "name": "Test Partner", + "carrier_account_ids": [ + Command.create( + { + "delivery_carrier_id": self.env.ref( + "delivery.free_delivery_carrier" + ).id, + "account_number": "1234567890", + } + ) + ], + } + ) + + self.assertEqual( + partner.carrier_account_ids[0], partner.default_carrier_account_id + )