Skip to content

Commit

Permalink
[IMP] partner_event: support multi-company (#128)
Browse files Browse the repository at this point in the history
  • Loading branch information
chienandalu authored and pedrobaeza committed Dec 10, 2018
1 parent 530a807 commit ba2186a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
2 changes: 1 addition & 1 deletion partner_event/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

{
'name': 'Link partner to events',
'version': '11.0.2.0.1',
'version': '11.0.2.1.0',
'category': 'Marketing',
'author': 'Tecnativa,'
'Odoo Community Association (OCA)',
Expand Down
10 changes: 8 additions & 2 deletions partner_event/models/event_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ def _prepare_partner(self, vals):
'name': vals.get('name') or vals.get('email'),
'email': vals.get('email', False),
'phone': vals.get('phone', False),
'company_id': vals.get('company_id', False),
}

@api.model
Expand All @@ -34,16 +35,21 @@ def create(self, vals):
Event = self.env['event.event']
# Look for a partner with that email
email = vals.get('email').replace('%', '').replace('_', '\\_')
event = Event.browse(vals['event_id'])
company_id = event.company_id.id
attendee_partner = Partner.search([
('email', '=ilike', email)
('email', '=ilike', email),
'|',
('company_id', '=', company_id),
('company_id', '=', False),
], limit=1)
event = Event.browse(vals['event_id'])
if attendee_partner:
vals['name'] = vals.setdefault('name', attendee_partner.name)
vals['phone'] = vals.setdefault(
'phone', attendee_partner.phone)
elif event.create_partner:
# Create partner
vals['company_id'] = company_id
attendee_partner = Partner.sudo().create(
self._prepare_partner(vals))
vals['attendee_partner_id'] = attendee_partner.id
Expand Down
31 changes: 26 additions & 5 deletions partner_event/tests/test_event_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,22 @@ def setUpClass(cls):
'seats_min': '1',
})
cls.event_0.create_partner = True
registration_model = cls.env[
cls.registration_model = cls.env[
'event.registration'].with_context(registration_force_draft=True)
partner_model = cls.env['res.partner']
cls.partner_01 = partner_model.create({
cls.partner_model = cls.env['res.partner']
cls.partner_01 = cls.partner_model.create({
'name': 'Test Partner 01',
'email': 'email01@test.com'
})
cls.registration_01 = registration_model.create({
cls.registration_01 = cls.registration_model.create({
'email': 'email01@test.com', 'event_id': cls.event_0.id})
cls.registration_02 = registration_model.create({
cls.registration_02 = cls.registration_model.create({
'email': 'email02@test.com', 'event_id': cls.event_0.id,
'name': 'Test Registration 02', 'phone': '254728911'})
cls.company2 = cls.env['res.company'].create({
'name': 'Test Co. Inc.',
'parent_id': cls.env.ref('base.main_company').id,
})

def test_create(self):
self.assertEqual(self.partner_01.name, self.registration_01.name)
Expand Down Expand Up @@ -97,3 +101,20 @@ def test_delete_registered_partner(self):
})
partner3.unlink()
self.assertFalse(partner3.exists())

def test_multi_company(self):
# We create another event with a different company
event_1 = self.event_0.copy({'company_id': self.company2.id})
registration_c2 = self.registration_model.create({
'email': 'email01@test.com',
'event_id': event_1.id,
})
# The although there's already a partner, we create another one for the
# company.
self.assertEqual(registration_c2.attendee_partner_id.company_id,
self.company2)
# We've got a partner for each company
count_partner = self.partner_model.search([
('email', '=', 'email01@test.com')])
self.assertEqual(len(count_partner), 2)
self.assertEqual(len(count_partner.mapped('company_id')), 2)

0 comments on commit ba2186a

Please sign in to comment.