diff options
| author | Nasreddin Boulif <bon@odoo.com> | 2020-06-10 10:21:19 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-06-10 14:55:48 +0000 |
| commit | 885437ee217b135055bdea6014fe1973c03ed9ca (patch) | |
| tree | 9a7b0f5c6bd28065f41f7d901bbda45b600cffa5 | |
| parent | d169b5b509ac4d8d935bb00785744fcfc11d92ca (diff) | |
[IMP] event: add payment status in barcode / attendee kanban view
PURPOSE
Introduce a clearer way of handling registrations for multiple events occurring
at the same time and place by
* improve attendess kanban view;
* introducing a Registration Desk menu item;
SPECIFICATIONS
Introduce a computed "payment_status" selection field, allowing to display
status of a registration, based on its SO and ``is_paid```field. It is better
fro UX and display. It is not stored as currently stored fields are sufficient
for current requirement.
Add it to the kanban view.
Prepare barcode improvements by improving _get_registration_summary returned
data dict, adding some information to display in event_barcode. Reorganize
registrations actions, and prepare a generic one leading to attendees kanban
view for registration desk.
LINKS
Task ID #2214290
Community PR odoo/odoo#47511
Enterprise PR odoo/enterprise#9190
| -rw-r--r-- | addons/event/models/event_registration.py | 6 | ||||
| -rw-r--r-- | addons/event/views/event_views.xml | 23 | ||||
| -rw-r--r-- | addons/event_sale/models/event_registration.py | 32 | ||||
| -rw-r--r-- | addons/event_sale/views/event_registration_views.xml | 18 | ||||
| -rw-r--r-- | addons/event_sale/views/sale_order_views.xml | 2 | ||||
| -rw-r--r-- | addons/website_event_track/views/event_track_views.xml | 1 |
6 files changed, 61 insertions, 21 deletions
diff --git a/addons/event/models/event_registration.py b/addons/event/models/event_registration.py index d1cadb4c8c5..6425f2cc065 100644 --- a/addons/event/models/event_registration.py +++ b/addons/event/models/event_registration.py @@ -268,8 +268,10 @@ class EventRegistration(models.Model): self.ensure_one() return { 'id': self.id, + 'name': self.name, 'partner_id': self.partner_id.id, 'ticket_name': self.event_ticket_id.name or _('None'), - 'name': self.name, - 'event_name': self.event_id.name, + 'event_id': self.event_id.id, + 'event_display_name': self.event_id.display_name, + 'company_name': self.event_id.company_id and self.event_id.company_id.name or False, } diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml index d572dd671c3..555941ffeb7 100644 --- a/addons/event/views/event_views.xml +++ b/addons/event/views/event_views.xml @@ -161,6 +161,17 @@ </field> </record> + <record id="event_registration_action" model="ir.actions.act_window"> + <field name="res_model">event.registration</field> + <field name="name">Attendees</field> + <field name="view_mode">kanban,tree,form,calendar,graph</field> + <field name="help" type="html"> + <p class="o_view_nocontent_smiling_face"> + Create an Attendee + </p> + </field> + </record> + <record id="event_registration_action_tree" model="ir.actions.act_window"> <field name="name">Event registrations</field> <field name="type">ir.actions.act_window</field> @@ -702,12 +713,12 @@ </record> <record model="ir.actions.act_window" id="action_registration"> - <field name="name">Attendees</field> - <field name="res_model">event.registration</field> - <field name="domain"></field> - <field name="view_mode">pivot,graph,kanban,tree,form</field> - <field name="context">{}</field> - <field name="search_view_id" ref="view_registration_search"/> + <field name="name">Attendees</field> + <field name="res_model">event.registration</field> + <field name="domain"></field> + <field name="view_mode">pivot,graph,kanban,tree,form</field> + <field name="context">{}</field> + <field name="search_view_id" ref="view_registration_search"/> </record> <menuitem name="Attendees" diff --git a/addons/event_sale/models/event_registration.py b/addons/event_sale/models/event_registration.py index f1995af17d7..999ae7ef2f1 100644 --- a/addons/event_sale/models/event_registration.py +++ b/addons/event_sale/models/event_registration.py @@ -12,10 +12,27 @@ class EventRegistration(models.Model): # TDE FIXME: maybe add an onchange on sale_order_id sale_order_id = fields.Many2one('sale.order', string='Source Sales Order', ondelete='cascade') sale_order_line_id = fields.Many2one('sale.order.line', string='Sales Order Line', ondelete='cascade') + payment_status = fields.Selection(string="Payment Status", selection=[ + ('to_pay', 'Not Paid'), + ('paid', 'Paid'), + ('free', 'Free'), + ], compute="_compute_payment_status", compute_sudo=True) utm_campaign_id = fields.Many2one(compute='_compute_utm_campaign_id', readonly=False, store=True) utm_source_id = fields.Many2one(compute='_compute_utm_source_id', readonly=False, store=True) utm_medium_id = fields.Many2one(compute='_compute_utm_medium_id', readonly=False, store=True) + @api.depends('is_paid', 'sale_order_id.currency_id', 'sale_order_line_id.price_total') + def _compute_payment_status(self): + for record in self: + so = record.sale_order_id + so_line = record.sale_order_line_id + if not so or float_is_zero(so_line.price_total, precision_digits=so.currency_id.rounding): + record.payment_status = 'free' + elif record.is_paid: + record.payment_status = 'paid' + else: + record.payment_status = 'to_pay' + @api.depends('sale_order_id') def _compute_utm_campaign_id(self): for registration in self: @@ -102,18 +119,9 @@ class EventRegistration(models.Model): def _get_registration_summary(self): res = super(EventRegistration, self)._get_registration_summary() - order = self.sale_order_id.sudo() - order_line = self.sale_order_line_id.sudo() - has_to_pay = False - if not order or float_is_zero(order_line.price_total, precision_digits=order.currency_id.rounding): - payment_status = _('Free') - elif not order.invoice_ids or any(invoice.payment_state != 'paid' for invoice in order.invoice_ids): - payment_status = _('To pay') - has_to_pay = True - else: - payment_status = _('Paid') res.update({ - 'payment_status': payment_status, - 'has_to_pay': has_to_pay + 'payment_status': self.payment_status, + 'payment_status_value': dict(self._fields['payment_status']._description_selection(self.env))[self.payment_status], + 'has_to_pay': not self.is_paid, }) return res diff --git a/addons/event_sale/views/event_registration_views.xml b/addons/event_sale/views/event_registration_views.xml index 3d409b804e6..9963d2d03aa 100644 --- a/addons/event_sale/views/event_registration_views.xml +++ b/addons/event_sale/views/event_registration_views.xml @@ -12,6 +12,24 @@ </field> </record> + <record id="event_registration_view_kanban" model="ir.ui.view"> + <field name="name">event.registration.kanban.inherit.event.sale</field> + <field name="model">event.registration</field> + <field name="inherit_id" ref="event.event_registration_view_kanban"/> + <field name="arch" type="xml"> + <xpath expr="//div[@id='event_attendees_kanban_icons_desktop']" position="inside"> + <div class="mt-auto pt-2"> + <field name="payment_status"/> + </div> + </xpath> + <xpath expr="//div[@id='event_ticket_id']" position="before"> + <div class="d-md-none" > + <field name="payment_status"/> + </div> + </xpath> + </field> + </record> + <record id="view_event_registration_ticket_form" model="ir.ui.view"> <field name="name">event.registration.form.inherit</field> <field name="model">event.registration</field> diff --git a/addons/event_sale/views/sale_order_views.xml b/addons/event_sale/views/sale_order_views.xml index c05774168e8..5895fc79c78 100644 --- a/addons/event_sale/views/sale_order_views.xml +++ b/addons/event_sale/views/sale_order_views.xml @@ -5,7 +5,7 @@ <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form" /> <field name="arch" type="xml"> - <xpath expr="//div[@name='button_box']" position="inside"> + <xpath expr="//button[@name='preview_sale_order']" position="before"> <button name="action_view_attendee_list" type="object" class="oe_stat_button" icon="fa-users" attrs="{'invisible': [('attendee_count', '=', 0)]}"> <field name="attendee_count" widget="statinfo" string="Attendees"/> diff --git a/addons/website_event_track/views/event_track_views.xml b/addons/website_event_track/views/event_track_views.xml index 3f7adab55f3..d2ec9af59e3 100644 --- a/addons/website_event_track/views/event_track_views.xml +++ b/addons/website_event_track/views/event_track_views.xml @@ -225,6 +225,7 @@ <menuitem id="menu_event_track" name="Tracks" + sequence="40" action="action_event_track" parent="event.event_main_menu" groups="base.group_no_one"/> |
