Skip to content

Commit

Permalink
[FIX] multi company creation
Browse files Browse the repository at this point in the history
  • Loading branch information
AungKoKoLin1997 committed Dec 28, 2023
1 parent 72345b2 commit 9ed87bf
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 2 deletions.
1 change: 1 addition & 0 deletions partner_company_default/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from . import res_company
from . import res_partner
13 changes: 13 additions & 0 deletions partner_company_default/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, models


class ResCompany(models.Model):
_inherit = "res.company"

@api.model
def create(self, vals):
self = self.with_context(creating_from_company=True)
return super().create(vals)
17 changes: 15 additions & 2 deletions partner_company_default/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models
from odoo import api, fields, models
from odoo.tools import config


class ResPartner(models.Model):
_inherit = "res.partner"

company_id = fields.Many2one(default=lambda self: self.env.company)
company_id = fields.Many2one(default=lambda self: self._default_company_id())

@api.model
def _default_company_id(self):
"""Return False for other tests or if creating a company."""
context = self.env.context
if (
context.get("creating_from_company")
or config["test_enable"]
and not context.get("test_partner_company_default")
):
return False
return self.env.company
1 change: 1 addition & 0 deletions partner_company_default/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import test_partner_company_default
46 changes: 46 additions & 0 deletions partner_company_default/tests/test_partner_company_default.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

import odoo.tests.common as common


class TestPartnerCompanyDefault(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = cls.env.ref("base.user_admin")

def test_partner_company_default(self):
# Check company of newly created partner
partner = (
self.env["res.partner"]
.with_user(self.user.id)
.with_context(test_partner_company_default=True)
.create({"name": "Test Partner 1"})
)
self.assertEqual(partner.company_id, self.user.company_id)

# Check company of the partner of newly created company
company_fr = (
self.env["res.company"]
.with_user(self.user.id)
.create(
{
"name": "French company",
"currency_id": self.env.ref("base.EUR").id,
"country_id": self.env.ref("base.fr").id,
}
)
)
self.assertFalse(company_fr.partner_id.company_id)

# Switch user's company and create a partner
self.user.company_ids = [(4, company_fr.id)]
self.user.company_id = company_fr.id
partner = (
self.env["res.partner"]
.with_user(self.user.id)
.with_context(test_partner_company_default=True)
.create({"name": "Test Partner 2"})
)
self.assertEqual(partner.company_id, company_fr)

0 comments on commit 9ed87bf

Please sign in to comment.