delivery_carrier_partner_account: make default the first account added to a partner

This commit is contained in:
Marc Durepos 2025-01-15 10:03:55 -05:00
parent 69faaec42f
commit a273cde7ba
3 changed files with 49 additions and 1 deletions

View file

@ -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

View file

@ -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

View file

@ -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
)