summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorNasreddin Boulif <bon@odoo.com>2020-06-10 10:21:19 +0000
committerThibault Delavallée <tde@odoo.com>2020-06-10 14:55:48 +0000
commit885437ee217b135055bdea6014fe1973c03ed9ca (patch)
tree9a7b0f5c6bd28065f41f7d901bbda45b600cffa5 /addons
parentd169b5b509ac4d8d935bb00785744fcfc11d92ca (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
Diffstat (limited to 'addons')
-rw-r--r--addons/event/models/event_registration.py6
-rw-r--r--addons/event/views/event_views.xml23
-rw-r--r--addons/event_sale/models/event_registration.py32
-rw-r--r--addons/event_sale/views/event_registration_views.xml18
-rw-r--r--addons/event_sale/views/sale_order_views.xml2
-rw-r--r--addons/website_event_track/views/event_track_views.xml1
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"/>