Skip to content

Commit

Permalink
[IMP] base: remove the 'Shared contacts book' general setting
Browse files Browse the repository at this point in the history
The Common partner contact setting is removed from general settings because its
behavior wasn't really clean from a technical point of view
(disabling the rule on partner access) and wouldn't work as well with new
multi-company logic.

The default logic of sharing partner will be kept, but when someone wants to
limit partner sharing, he will do so partner by partner, by
setting the company_id.
Also, the default company_id on a partner will be blank so default partner
will be a sharable by multi-company.

when the partner is created at the time of user creation then the partner's
company will be the same as user's company.and when the partner is created at
the time of company creation(partner related to company) then the company of
partner will be newly created company.

task-2024446
Closes: #35266
  • Loading branch information
ppr-odoo authored and tivisse committed Aug 16, 2019
1 parent 69f192e commit 2571469
Show file tree
Hide file tree
Showing 10 changed files with 13 additions and 25 deletions.
1 change: 1 addition & 0 deletions addons/account/tests/account_test_no_chart.py
Expand Up @@ -43,6 +43,7 @@ def setUpClass(cls):
'email': 'customer.usd@north.com',
'property_account_payable_id': cls.account_payable.id,
'property_account_receivable_id': cls.account_receivable.id,
'company_id': cls.env.ref('base.main_company').id
})

cls.sale_journal0 = cls.env['account.journal'].create({
Expand Down
16 changes: 0 additions & 16 deletions addons/base_setup/models/res_config_settings.py
Expand Up @@ -31,10 +31,6 @@ class ResConfigSettings(models.TransientModel):
module_partner_autocomplete = fields.Boolean("Partner Autocomplete")
module_sms = fields.Boolean("Send SMS")
module_base_geolocalize = fields.Boolean("GeoLocalize")
company_share_partner = fields.Boolean(string='Share partners to all companies',
help="Share your partners to all companies defined in your instance.\n"
" * Checked : Partners are visible for every companies, even if a company is defined on the partner.\n"
" * Unchecked : Each company can see only its partner (partners where company is defined). Partners not related to a company are visible for all companies.")
report_footer = fields.Text(related="company_id.report_footer", string='Custom Report Footer', help="Footer text displayed at the bottom of all reports.", readonly=False)
group_multi_currency = fields.Boolean(string='Multi-Currencies',
implied_group='base.group_multi_currency',
Expand All @@ -48,18 +44,6 @@ class ResConfigSettings(models.TransientModel):
company_name = fields.Char(related="company_id.display_name", string="Company Name")
company_informations = fields.Text(compute="_compute_company_informations")

@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
res.update({
'company_share_partner': not self.env.ref('base.res_partner_rule').active,
})
return res

def set_values(self):
super(ResConfigSettings, self).set_values()
self.env.ref('base.res_partner_rule').write({'active': not self.company_share_partner})

def open_company(self):
return {
'type': 'ir.actions.act_window',
Expand Down
1 change: 1 addition & 0 deletions addons/hr/tests/test_multi_company.py
Expand Up @@ -20,6 +20,7 @@ def setUp(self):
(4, self.company_1.id),
(4, self.company_2.id),
]
self.res_users_hr_officer.company_id = self.company_1.id

def test_multi_company_report(self):
content, content_type = self.env.ref('hr.hr_employee_print_badge').with_user(self.res_users_hr_officer).with_context(
Expand Down
6 changes: 6 additions & 0 deletions addons/mrp_subcontracting/tests/test_subcontracting.py
Expand Up @@ -35,6 +35,7 @@ def test_partner_2(self):
that_company = self.env['res.partner'].create({
'is_company': True,
'name': "That Company",
'company_id': self.env.ref('base.main_company').id
})
partner_form = Form(that_company)
with partner_form.child_ids.new() as partner:
Expand All @@ -55,6 +56,7 @@ def test_partner_3(self):
self.env.user.write({'groups_id': [(3, group_no_one.id)]})
partner_form = Form(self.env['res.partner'])
partner_form.name = 'subcontractor partner'
partner_form.company_id = self.env.ref('base.main_company')
self.assertNotEqual(partner_form.property_stock_supplier, self.env.user.company_id.subcontracting_location_id)
self.assertNotEqual(partner_form.property_stock_customer, self.env.user.company_id.subcontracting_location_id)
partner_form.type = 'subcontractor'
Expand All @@ -75,6 +77,7 @@ def test_partner_4(self):
that_company = self.env['res.partner'].create({
'is_company': True,
'name': "That Company",
'company_id': self.env.ref('base.main_company').id
})
partner_form = Form(self.env['res.partner'])
partner_form.name = 'That Guy'
Expand Down Expand Up @@ -124,6 +127,7 @@ def setUpClass(cls):
'name': 'subcontractor_partner',
'type': 'subcontractor',
'parent_id': main_partner.id,
'company_id': cls.env.ref('base.main_company').id
})

# 2. Create a BOM of subcontracting type
Expand Down Expand Up @@ -352,6 +356,7 @@ def test_flow_4(self):
'name': 'subcontractor_partner',
'type': 'subcontractor',
'parent_id': main_partner_2.id,
'company_id': self.env.ref('base.main_company').id
})

# We create a different BoM for the same product
Expand Down Expand Up @@ -413,6 +418,7 @@ def setUp(self):
'name': 'Subcontractor 1',
'type': 'subcontractor',
'parent_id': main_company_1.id,
'company_id': self.env.ref('base.main_company').id
})

# 2. Create a BOM of subcontracting type
Expand Down
Expand Up @@ -45,6 +45,7 @@ def setUp(self):
'name': 'subcontractor_partner',
'type': 'subcontractor',
'parent_id': company_partner.id,
'company_id': self.env.ref('base.main_company').id
})

self.stock_location = self.env.ref('stock.stock_location_stock')
Expand Down
1 change: 1 addition & 0 deletions odoo/addons/base/data/res_partner_demo.xml
Expand Up @@ -187,6 +187,7 @@
<field name="function">Senior Consultant</field>
<field name="email">jesse.brown74@example.com</field>
<field name="phone">(829)-386-3277</field>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="res_partner_address_11" model="res.partner">
<field name="name">Soham Palmer</field>
Expand Down
2 changes: 1 addition & 1 deletion odoo/addons/base/models/res_company.py
Expand Up @@ -229,7 +229,7 @@ def create(self, vals):
company = super(Company, self).create(vals)
# The write is made on the user to set it automatically in the multi company group.
self.env.user.write({'company_ids': [(4, company.id)]})
partner.write({'company_id': company.id})
partner.sudo().write({'company_id': company.id})

# Make sure that the selected currency is enabled
if vals.get('currency_id'):
Expand Down
5 changes: 1 addition & 4 deletions odoo/addons/base/models/res_partner.py
Expand Up @@ -137,9 +137,6 @@ class Partner(models.Model):
def _default_category(self):
return self.env['res.partner.category'].browse(self._context.get('category_id'))

def _default_company(self):
return self.env.company

def _split_street_with_params(self, street_raw, street_format):
return {'street': street_raw}

Expand Down Expand Up @@ -204,7 +201,7 @@ def _split_street_with_params(self, street_raw, street_format):
company_type = fields.Selection(string='Company Type',
selection=[('person', 'Individual'), ('company', 'Company')],
compute='_compute_company_type', inverse='_write_company_type')
company_id = fields.Many2one('res.company', 'Company', index=True, default=_default_company)
company_id = fields.Many2one('res.company', 'Company', index=True)
color = fields.Integer(string='Color Index', default=0)
user_ids = fields.One2many('res.users', 'partner_id', string='Users', auto_join=True)
partner_share = fields.Boolean(
Expand Down
4 changes: 1 addition & 3 deletions odoo/addons/base/models/res_users.py
Expand Up @@ -439,9 +439,7 @@ def _search(self, args, offset=0, limit=None, order=None, count=False, access_ri
def create(self, vals_list):
users = super(Users, self).create(vals_list)
for user in users:
user.partner_id.active = user.active
if user.partner_id.company_id:
user.partner_id.write({'company_id': user.company_id.id})
user.partner_id.write({'company_id': user.company_id.id, 'active': user.active})
return users

def write(self, values):
Expand Down
1 change: 0 additions & 1 deletion odoo/addons/base/security/base_security.xml
Expand Up @@ -16,7 +16,6 @@
<field name="name">res.partner company</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="active" eval="False"/>
</record>

<record model="ir.rule" id="res_partner_portal_public_rule">
Expand Down

0 comments on commit 2571469

Please sign in to comment.