diff --git a/addons/event/models/event_ticket.py b/addons/event/models/event_ticket.py index acdc899e3d1..1e82c985084 100644 --- a/addons/event/models/event_ticket.py +++ b/addons/event/models/event_ticket.py @@ -13,6 +13,9 @@ class EventTemplateTicket(models.Model): name = fields.Char( string='Name', default=lambda self: _('Registration'), required=True, translate=True) + description = fields.Text( + 'Description', translate=True, + help="A description of the ticket that you want to communicate to your customers.") event_type_id = fields.Many2one( 'event.type', string='Event Category', ondelete='cascade', required=True) # sale @@ -66,7 +69,7 @@ class EventTemplateTicket(models.Model): def _get_event_ticket_fields_whitelist(self): """ Whitelist of fields that are copied from event_type_ticket_ids to event_ticket_ids when changing the event_type_id field of event.event """ - return ['name'] + return ['name', 'description'] class EventTicket(models.Model): @@ -129,11 +132,7 @@ class EventTicket(models.Model): """ Compute a multiline description of this ticket. It is used when ticket description are necessary without having to encode it manually, like sales information. """ - self.ensure_one() - lines = [self.display_name] - if self.event_id: - lines.append(self.event_id.display_name) - return '\n'.join(lines) + return '%s\n%s' % (self.display_name, self.event_id.display_name) def _get_ticket_tz(self): return self.event_id.date_tz or self.env.user.tz diff --git a/addons/event/views/event_ticket_views.xml b/addons/event/views/event_ticket_views.xml index e098b44a7ad..3beb059d6fd 100644 --- a/addons/event/views/event_ticket_views.xml +++ b/addons/event/views/event_ticket_views.xml @@ -9,6 +9,7 @@ + @@ -24,6 +25,7 @@ + @@ -69,6 +71,7 @@ + @@ -88,6 +91,7 @@ + diff --git a/addons/event/views/res_config_settings_views.xml b/addons/event/views/res_config_settings_views.xml index 0e8c5455e8d..8636b17efa3 100644 --- a/addons/event/views/res_config_settings_views.xml +++ b/addons/event/views/res_config_settings_views.xml @@ -34,7 +34,7 @@
diff --git a/addons/event_sale/data/event_sale_data.xml b/addons/event_sale/data/event_sale_data.xml index a7928ded17b..bf8bc78249e 100644 --- a/addons/event_sale/data/event_sale_data.xml +++ b/addons/event_sale/data/event_sale_data.xml @@ -13,6 +13,7 @@ Event Registration + EVENT_REG service diff --git a/addons/event_sale/models/event_ticket.py b/addons/event_sale/models/event_ticket.py index beaa73a7090..c0f3fa2da91 100644 --- a/addons/event_sale/models/event_ticket.py +++ b/addons/event_sale/models/event_ticket.py @@ -38,6 +38,8 @@ class EventTemplateTicket(models.Model): @api.onchange('product_id') def _onchange_product_id(self): self.price = self.product_id.list_price or 0 + if not self.description and self.product_id.description_sale: + self.description = self.product_id.description_sale def _init_column(self, column_name): if column_name != "product_id": @@ -93,3 +95,11 @@ class EventTicket(models.Model): tax_ids = record.sudo().product_id.taxes_id.filtered(lambda r: r.company_id == record.event_id.company_id) taxes = tax_ids.compute_all(record.price_reduce, record.event_id.company_id.currency_id, 1.0, product=record.product_id) record.price_reduce_taxinc = taxes['total_included'] + + def _get_ticket_multiline_description(self): + """ If people set a description on their product it has more priority + than the ticket name itself for the SO description. """ + self.ensure_one() + if self.product_id.description_sale: + return '%s\n%s' % (self.product_id.description_sale, self.event_id.display_name) + return super(EventTicket, self)._get_ticket_multiline_description() diff --git a/addons/event_sale/tests/common.py b/addons/event_sale/tests/common.py index 30f437fd760..698a52c9805 100644 --- a/addons/event_sale/tests/common.py +++ b/addons/event_sale/tests/common.py @@ -12,6 +12,7 @@ class TestEventSaleCommon(TestEventCommon): cls.event_product = cls.env['product.product'].create({ 'name': 'Test Registration Product', + 'description_sale': 'Mighty Description', 'list_price': 10, 'event_ok': True, 'standard_price': 30.0, diff --git a/addons/event_sale/tests/test_event_internals.py b/addons/event_sale/tests/test_event_internals.py index f740fb4643b..9cd0997aa45 100644 --- a/addons/event_sale/tests/test_event_internals.py +++ b/addons/event_sale/tests/test_event_internals.py @@ -39,10 +39,14 @@ class TestEventData(TestEventSaleCommon): })] }) event_type.event_type_ticket_ids._onchange_product_id() + self.assertEqual(event_type.event_type_ticket_ids.description, self.event_product.description_sale) + + # synchronize event event._onchange_type() self.assertEqual(event.event_ticket_ids.name, 'Registration for %s' % event.name) self.assertEqual(event.event_ticket_ids.product_id, self.event_product) self.assertEqual(event.event_ticket_ids.price, self.event_product.list_price) + self.assertEqual(event.event_ticket_ids.description, self.event_product.description_sale) def test_event_registrable(self): """Test if `_compute_event_registrations_open` works properly with additional diff --git a/addons/event_sale/views/event_ticket_views.xml b/addons/event_sale/views/event_ticket_views.xml index b10579396dc..04547b31f3b 100644 --- a/addons/event_sale/views/event_ticket_views.xml +++ b/addons/event_sale/views/event_ticket_views.xml @@ -9,6 +9,8 @@ + + @@ -21,6 +23,8 @@ + + @@ -35,7 +39,7 @@ - + @@ -49,7 +53,7 @@ - +