delivery_carrier_partner_account: added some test cases and fixed some bugs relating default accounts

This commit is contained in:
Marc Durepos 2025-01-15 10:13:52 -05:00
parent 5e4a818fc1
commit 2a1be1885e
2 changed files with 85 additions and 0 deletions

View file

@ -44,3 +44,19 @@ class DeliveryCarrierAccount(models.Model):
for rec in self:
if rec.partner_id.company_id != rec.delivery_carrier_id.company_id:
raise UserError(_("Partner and Carrier must be in the same company."))
def write(self, vals):
res = super().write(vals)
for partner in self.partner_id.filtered(
lambda partner: not partner.default_carrier_account_id
):
partner.default_carrier_account_id = partner.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.partner_id.default_carrier_account_id:
rec.partner_id.default_carrier_account_id = rec
return res

View file

@ -28,3 +28,72 @@ class TestResPartner(TransactionCase):
self.assertEqual(
partner.carrier_account_ids[0], partner.default_carrier_account_id
)
def test_default_carrier_set_on_update(self):
partner = self.env["res.partner"].create(
{
"name": "Test Partner",
}
)
partner.write(
{
"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
)
def test_no_change_to_default_account_id_on_update_if_already_set(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",
}
)
],
}
)
new_account = self.env["delivery.carrier.account"].create(
{
"partner_id": partner.id,
"delivery_carrier_id": self.env.ref(
"delivery.delivery_local_delivery"
).id,
"account_number": "1234567890",
}
)
self.assertNotEqual(partner.default_carrier_account_id, new_account)
def test_carrier_set_if_account_created_from_other_side(self):
partner = self.env["res.partner"].create(
{
"name": "Test Partner",
}
)
new_account = self.env["delivery.carrier.account"].create(
{
"partner_id": partner.id,
"delivery_carrier_id": self.env.ref(
"delivery.free_delivery_carrier"
).id,
"account_number": "1234567890",
}
)
self.assertEqual(partner.default_carrier_account_id, new_account)