Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][FIX] partner_company_default: multi company creation #1545

Merged
merged 1 commit into from
Nov 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
Loading