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 Aug 31, 2023
1 parent c57dfbe commit b22acd9
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 1 deletion.
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)
9 changes: 8 additions & 1 deletion partner_company_default/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# 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


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

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

@api.model
def create(self, vals):
# The context value is set in the create method of res.company
if self.env.context.get("creating_from_company"):
vals["company_id"] = False
return super(ResPartner, self).create(vals)
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
44 changes: 44 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,44 @@
# 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)
.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)
.create({"name": "Test Partner 2"})
)
self.assertEqual(partner.company_id, company_fr)

0 comments on commit b22acd9

Please sign in to comment.