From 2a1be1885e9f76ea6686cd8b384d45a2350cdd3a Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Wed, 15 Jan 2025 10:13:52 -0500 Subject: [PATCH] delivery_carrier_partner_account: added some test cases and fixed some bugs relating default accounts --- .../models/delivery_carrier_account.py | 16 +++++ .../tests/test_res_partner.py | 69 +++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/delivery_carrier_partner_account/models/delivery_carrier_account.py b/delivery_carrier_partner_account/models/delivery_carrier_account.py index 9b0ec86..574b62c 100644 --- a/delivery_carrier_partner_account/models/delivery_carrier_account.py +++ b/delivery_carrier_partner_account/models/delivery_carrier_account.py @@ -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 diff --git a/delivery_carrier_partner_account/tests/test_res_partner.py b/delivery_carrier_partner_account/tests/test_res_partner.py index 9b7e86c..d2c1e46 100644 --- a/delivery_carrier_partner_account/tests/test_res_partner.py +++ b/delivery_carrier_partner_account/tests/test_res_partner.py @@ -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)