Currently, the button "Send Email" next to the email address of an event registration didn't work if a partner was not set. This commit removes the button, thus removing the feature but partially adds it back via the chatter suggested recipients in the same way it is done for a lead. It is still partially a feature regression since to work the viewing user need more access rights (e.g read access right on res.partner) than before. closes #9486 opw-653127
463 lines
26 KiB
XML
463 lines
26 KiB
XML
<?xml version="1.0"?>
|
|
<openerp>
|
|
<data>
|
|
|
|
<record id="act_event_list_register_event" model="ir.actions.act_window">
|
|
<field name="res_model">event.registration</field>
|
|
<field name="view_type">form</field>
|
|
<field name="name">Registrations</field>
|
|
<field name="view_mode">tree,form,calendar,graph</field>
|
|
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
|
|
</record>
|
|
<menuitem name="Events" parent="base.marketing_menu" id="event_main_menu"/>
|
|
|
|
<!-- EVENTS -->
|
|
|
|
<!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
|
|
<record model="ir.ui.view" id="view_event_type_form">
|
|
<field name="name">Event type</field>
|
|
<field name="model">event.type</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Event Type">
|
|
<group col="4">
|
|
<field name="name"/>
|
|
<field name="default_reply_to"/>
|
|
<field name="default_registration_min"/>
|
|
<field name="default_email_event" domain="[('model_id.model','=','event.registration')]"/>
|
|
<field name="default_registration_max"/>
|
|
<field name="default_email_registration" domain="[('model_id.model','=','event.registration')]"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_type_tree">
|
|
<field name="name">Event type</field>
|
|
<field name="model">event.type</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Event Type">
|
|
<field name="name"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_event_type">
|
|
<field name="name">Types of Events</field>
|
|
<field name="res_model">event.type</field>
|
|
<field name="view_type">form</field>
|
|
</record>
|
|
<menuitem name="Configuration" id="base.menu_marketing_config_root" parent="base.marketing_menu" sequence="30"/>
|
|
<menuitem name="Events" id="event_configuration" parent="base.menu_marketing_config_root"/>
|
|
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="event.event_configuration" groups="base.group_no_one"/>
|
|
|
|
<!-- Events Organisation/CONFIGURATION/EVENTS -->
|
|
|
|
<record model="ir.ui.view" id="view_event_form">
|
|
<field name="name">Events</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Events">
|
|
<header>
|
|
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight" groups="base.group_user"/>
|
|
<button string="Finish Event" name="button_done" states="confirm" type="object" class="oe_highlight" groups="base.group_user"/>
|
|
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" groups="base.group_user"/>
|
|
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" groups="base.group_user"/>
|
|
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_title">
|
|
<label for="name" class="oe_edit_only"/>
|
|
<h1><field name="name"/></h1>
|
|
</div>
|
|
<div class="oe_right oe_button_box" groups="base.group_user">
|
|
<button name="%(event.act_event_list_register_event)d"
|
|
type="action"
|
|
class="oe_stat_button oe_inline"
|
|
icon="fa-github"
|
|
help="Register with this event">
|
|
<field name="count_registrations" widget="statinfo" string="Registrations"/>
|
|
</button>
|
|
</div>
|
|
<group name="main_field_group">
|
|
<group>
|
|
<field name="address_id" context="{'show_address': 1}" options='{"always_reload": True}'/>
|
|
<field name="organizer_id"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</group>
|
|
<group>
|
|
<field name="user_id"/>
|
|
<field name="type"/>
|
|
<field name="date_begin"/>
|
|
<field name="date_end"/>
|
|
<field name="date_tz" />
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Registrations">
|
|
<group>
|
|
<group>
|
|
<field name="seats_min"/>
|
|
<field name="seats_max"/>
|
|
<label for="seats_reserved" string="Current Registrations" groups="base.group_user"/>
|
|
<div groups="base.group_user">
|
|
<field name="seats_unconfirmed" class="oe_inline"/> (confirmed: <field name="seats_reserved" class="oe_inline"/>)
|
|
</div>
|
|
<field name="seats_used"/>
|
|
</group>
|
|
</group>
|
|
<field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user" context="{'event_id': active_id}">
|
|
<tree string="Registration" editable="top">
|
|
<field name="name" />
|
|
<field name="email" />
|
|
<field name="phone"/>
|
|
<field name="nb_register" />
|
|
<field name="state"/>
|
|
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
|
|
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
|
|
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
|
|
</tree>
|
|
<form string="Registration">
|
|
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
|
|
<field name="name"/>
|
|
<group colspan="4" col="4">
|
|
<field name="email"/>
|
|
<field name="phone"/>
|
|
</group>
|
|
<group colspan="4" col="4">
|
|
<field name="nb_register"/>
|
|
</group>
|
|
<group colspan="4" col="4">
|
|
</group>
|
|
<group col="8" colspan="4">
|
|
<separator string="" colspan="4"/>
|
|
<newline/>
|
|
<field name="state" colspan="2"/>
|
|
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
|
|
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
|
|
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</page>
|
|
<page string="Description">
|
|
<field name="description" nolabel="1" placeholder="Event Description..."/>
|
|
</page>
|
|
<page string='Event Details' groups="base.group_no_one">
|
|
<group colspan="4">
|
|
<field name="reply_to"/>
|
|
<field name="email_registration_id"/>
|
|
<field name="email_confirmation_id"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Event tree view -->
|
|
|
|
<record model="ir.ui.view" id="view_event_tree">
|
|
<field name="name">event.event.tree</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Events" fonts="bold:message_unread==True" colors="red:(seats_min and seats_min>seats_reserved) or (seats_max and seats_max<seats_reserved);grey:state=='cancel'">
|
|
<field name="name" string="Name"/>
|
|
<field name="type" string="Event Category"/>
|
|
<field name="date_begin"/>
|
|
<field name="date_end"/>
|
|
<field name="seats_reserved"/>
|
|
<field name="seats_min"/>
|
|
<field name="seats_max" invisible="1"/>
|
|
<field name="user_id"/>
|
|
<field name="state"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- Event Kanban View -->
|
|
|
|
<record model="ir.ui.view" id="view_event_kanban">
|
|
<field name="name">event.event.kanban</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<kanban>
|
|
<field name="type"/>
|
|
<field name="user_id"/>
|
|
<field name="is_subscribed"/>
|
|
<field name="country_id"/>
|
|
<field name="date_begin"/>
|
|
<field name="state"/>
|
|
<field name="seats_max"/>
|
|
<field name="seats_reserved"/>
|
|
<field name="seats_available"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="oe_module_vignette">
|
|
<a type="open" class="oe_module_icon">
|
|
<div class="oe_event_date "><t t-esc="record.date_begin.raw_value.getDate()"/></div>
|
|
<div class="oe_event_month_year">
|
|
<t t-esc="record.date_begin.raw_value.toString('MMM')"/>
|
|
<t t-esc="record.date_begin.raw_value.getFullYear()"/>
|
|
</div>
|
|
<div class="oe_event_time"><t t-esc="record.date_begin.raw_value.toString('hh:mm tt')"/></div>
|
|
</a>
|
|
<div class="oe_module_desc">
|
|
<h4><a type="open"><field name="name"/></a></h4>
|
|
<p>
|
|
<t t-if="record.country_id.raw_value">@<field name="country_id"/><br/></t>
|
|
<t t-if="record.user_id.raw_value">Organized by <field name="user_id"/><br/></t>
|
|
<t t-if="record.seats_available.raw_value lte 10 and record.seats_available.raw_value gt 0"><i>Only</i></t>
|
|
<t t-if="!record.seats_max.raw_value"><i>No ticket available.</i></t>
|
|
<t t-if="record.seats_max.raw_value">
|
|
<i t-if="record.seats_available.raw_value">
|
|
<b><field name="seats_available"/></b>
|
|
<t t-if="record.seats_available.raw_value > 1">tickets </t>
|
|
<t t-if="record.seats_available.raw_value lte 1">ticket </t>
|
|
available.
|
|
</i>
|
|
</t>
|
|
</p>
|
|
<div groups="base.group_user,base.group_portal">
|
|
<t t-if="record.seats_available.raw_value gt 0 and record.seats_max.raw_value">
|
|
<t t-if="!record.is_subscribed.raw_value">
|
|
<input t-att-id="record.id.raw_value" type="text" name="subscribe" class="no_of_seats" value="1" onchange="document.getElementById('btn_sub' +this.id).setAttribute('data-context',JSON.stringify({'ticket':this.value}))"/>
|
|
<button t-att-id="'btn_sub'+record.id.raw_value" type="object" name="subscribe_to_event" class="oe_subscribe_button">
|
|
<span >Subscribe</span>
|
|
</button>
|
|
</t>
|
|
</t>
|
|
<t t-if="record.is_subscribed.raw_value">
|
|
<button type="object" name="unsubscribe_to_event" class="oe_unsubscribe_button ">
|
|
<span>Subscribed</span>
|
|
<span class="oe_unsubscribe">Unsubscribe</span>
|
|
</button>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Events Calendar View -->
|
|
|
|
<record id="view_event_calendar" model="ir.ui.view">
|
|
<field name="name">event.event.calendar</field>
|
|
<field name="model">event.event</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<calendar color="type" date_start="date_begin" date_stop="date_end" string="Event Organization">
|
|
<field name="name"/>
|
|
<field name="type"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Event Search View -->
|
|
|
|
<record model="ir.ui.view" id="view_event_search">
|
|
<field name="name">Events</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Events">
|
|
<field name="name" string="Events"/>
|
|
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
|
<separator/>
|
|
<filter string="Unconfirmed" name="draft" domain="[('state','=','draft')]" help="Events in New state"/>
|
|
<filter string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed events"/>
|
|
<separator/>
|
|
<filter string="My Events" help="My Events" domain="[('user_id','=',uid)]"/>
|
|
<separator/>
|
|
<filter string="Upcoming" name="upcoming" domain="[('date_begin','>=', datetime.datetime.combine(context_today(), datetime.time(0,0,0)))]" help="Upcoming events from today" />
|
|
<field name="type"/>
|
|
<field name="user_id"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Responsible" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Event Type" context="{'group_by':'type'}"/>
|
|
<filter string="Status" context="{'group_by':'state'}"/>
|
|
<filter string="Start Month" domain="[]" context="{'group_by':'date_begin'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- Events Organisation/CONFIGURATION/EVENTS -->
|
|
<record model="ir.actions.act_window" id="action_event_view">
|
|
<field name="name">Events</field>
|
|
<field name="type">ir.actions.act_window</field>
|
|
<field name="res_model">event.event</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">kanban,calendar,tree,form</field>
|
|
<field name="context">{"search_default_upcoming":1}</field>
|
|
<field name="search_view_id" ref="view_event_search"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a new event.
|
|
</p><p>
|
|
Odoo helps you schedule and efficiently organize your events:
|
|
track subscriptions and participations, automate the confirmation emails,
|
|
sell tickets, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<act_window
|
|
id="act_register_event_partner"
|
|
name="Subscribe"
|
|
res_model="event.registration"
|
|
src_model="res.partner"
|
|
view_mode="tree,form,calendar,graph"
|
|
context="{'search_default_partner_id': [active_id], 'default_partner_id': active_id}"
|
|
view_type="form"/>
|
|
|
|
<menuitem name="Events" id="menu_event_event" action="action_event_view" parent="event.event_main_menu" />
|
|
|
|
<!-- EVENTS/REGISTRATIONS/EVENTS -->
|
|
|
|
|
|
<record model="ir.ui.view" id="view_event_registration_tree">
|
|
<field name="name">event.registration.tree</field>
|
|
<field name="model">event.registration</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Registration" fonts="bold:message_unread==True">
|
|
<field name="create_date"/>
|
|
<field name="partner_id"/>
|
|
<field name="name"/>
|
|
<field name="email"/>
|
|
<field name="event_id" />
|
|
<field name="nb_register"/>
|
|
<field name="user_id" invisible="1"/>
|
|
<field name="origin"/>
|
|
<field name="state"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
|
|
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
|
|
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_registration_form">
|
|
<field name="name">event.registration.form</field>
|
|
<field name="model">event.registration</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Event Registration">
|
|
<header>
|
|
<button name="registration_open" string="Confirm" states="draft" type="object" class="oe_highlight"/>
|
|
<button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
|
|
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
|
|
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object"/>
|
|
<field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
|
|
</header>
|
|
<sheet string="Registration">
|
|
<label for="event_id" class="oe_edit_only"/>
|
|
<h1>
|
|
<field name="event_id" domain="[('state','in',('draft','confirm'))]"/>
|
|
</h1>
|
|
<group>
|
|
<group>
|
|
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
|
|
<field name="name"/>
|
|
<field name="phone"/>
|
|
<field name="email"/>
|
|
</group>
|
|
<group>
|
|
<field name="nb_register"/>
|
|
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'event.group_event_user']}"/>
|
|
</group>
|
|
<group groups="base.group_no_one">
|
|
<field name="create_date"/>
|
|
<field name="date_closed"/>
|
|
</group>
|
|
</group>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Calendar view of event registration -->
|
|
<record id="view_event_registration_calendar" model="ir.ui.view">
|
|
<field name="name">event.registration.calendar</field>
|
|
<field name="model">event.registration</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<calendar color="event_id" date_start="event_begin_date" date_stop="event_end_date" string="Event Registration">
|
|
<field name="event_id"/>
|
|
<field name="name"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_registration_graph">
|
|
<field name="name">Registration Graph</field>
|
|
<field name="model">event.registration</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Registration" type="bar">
|
|
<field name="event_id" type="row"/>
|
|
<field name= "nb_register" type="measure"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- Search view of event registration -->
|
|
<record model="ir.ui.view" id="view_registration_search">
|
|
<field name="name">Registrations</field>
|
|
<field name="model">event.registration</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Event Registration">
|
|
<field name="name" string="Participant" filter_domain="['|','|',('name','ilike',self),('email','ilike',self),('origin','ilike',self)]"/>
|
|
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
|
<separator/>
|
|
<filter string="New" name="draft" domain="[('state','=','draft')]" help="Registrations in unconfirmed state"/>
|
|
<filter string="Confirmed" domain="[('state','=','open')]" help="Confirmed registrations"/>
|
|
<separator/>
|
|
<filter string="My Registrations" help="My Registrations" domain="[('user_id','=',uid)]"/>
|
|
<field name="event_id"/>
|
|
<field name="user_id"/>
|
|
<field name="partner_id"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Responsible" domain="[]" context="{'group_by':'user_id'}"/>
|
|
<filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
|
|
<filter string="Event" name="group_event" domain="[]" context="{'group_by':'event_id'}"/>
|
|
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
|
|
<filter string="Registration Day" domain="[]" context="{'group_by': 'create_date:day'}"/>
|
|
<filter string="Registration Month" domain="[]" context="{'group_by': 'create_date:month'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_registration">
|
|
<field name="name">Registrations</field>
|
|
<field name="res_model">event.registration</field>
|
|
<field name="view_type">form</field>
|
|
<field name="domain"></field>
|
|
<field name="view_mode">tree,form,calendar,graph</field>
|
|
<field name="context">{}</field>
|
|
<field name="search_view_id" ref="view_registration_search"/>
|
|
</record>
|
|
|
|
<menuitem name="Registrations"
|
|
id="menu_action_registration" parent="event.event_main_menu"
|
|
action="action_registration" groups="event.group_event_manager,event.group_event_user"/>
|
|
|
|
<menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
|
|
|
|
</data>
|
|
</openerp>
|