mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-21 22:12:03 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -1,5 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo><data>
|
||||
<record id="event_barcode_action_main_view" model="ir.actions.client">
|
||||
<field name="name">Barcode Interface</field>
|
||||
<field name="tag">event.event_barcode_scan_view</field>
|
||||
<field name="target">fullscreen</field>
|
||||
<field name="path">registration-desk</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_form">
|
||||
<field name="name">event.event.form</field>
|
||||
|
|
@ -7,15 +13,24 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Events" class="o_event_form_view">
|
||||
<header>
|
||||
<button name="%(event_barcode_action_main_view)d"
|
||||
type="action"
|
||||
class="btn btn-primary"
|
||||
invisible="not seats_taken"
|
||||
context="{'default_event_id': id}">
|
||||
Registration Desk
|
||||
</button>
|
||||
<field name="stage_id" widget="statusbar" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box" groups="base.group_user">
|
||||
<button name="%(event.event_registration_action_stats_from_event)d"
|
||||
type="action" class="oe_stat_button" icon="fa-line-chart">
|
||||
<span class="o_stat_text">
|
||||
Registration statistics
|
||||
</span>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">
|
||||
Registration
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
<button name="%(event.act_event_registration_from_event)d"
|
||||
type="action"
|
||||
|
|
@ -23,102 +38,138 @@
|
|||
class="oe_stat_button"
|
||||
icon="fa-users"
|
||||
help="Total Registrations for this Event">
|
||||
<field name="seats_expected" widget="statinfo" string="Attendees"/>
|
||||
<field name="seats_taken" widget="statinfo" string="Attendees"/>
|
||||
</button>
|
||||
</div>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="legend_blocked" invisible="1"/>
|
||||
<field name="legend_normal" invisible="1"/>
|
||||
<field name="legend_done" invisible="1"/>
|
||||
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
<field name="kanban_state" widget="state_selection" class="ms-auto float-end"/>
|
||||
<widget name="web_ribbon" text="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<field name="kanban_state" widget="event_state_selection" class="ms-auto float-end"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Event Name"/>
|
||||
<h1><field class="text-break" name="name" placeholder="e.g. Conference for Architects"/></h1>
|
||||
<h1><field class="text-break" options="{'line_breaks': False}" widget="text" name="name" placeholder="e.g. Conference for Architects"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="active" invisible="1"/>
|
||||
<label for="date_begin" string="Date"/>
|
||||
<div class="o_row">
|
||||
<field name="date_begin" widget="daterange" nolabel="1" class="oe_inline" options="{'related_end_date': 'date_end'}"/>
|
||||
<i class="fa fa-long-arrow-right mx-2" aria-label="Arrow icon" title="Arrow"/>
|
||||
<field name="date_end" widget="daterange" nolabel="1" class="oe_inline" options="{'related_start_date': 'date_begin'}"/>
|
||||
</div>
|
||||
<field name="date_begin" string="Date" widget="daterange" options="{'end_date_field': 'date_end'}" />
|
||||
<field name="date_end" invisible="1" />
|
||||
<field name="date_tz"/>
|
||||
<field name="event_type_id" string="Template" options="{'no_create':True}"/>
|
||||
<label for="is_multi_slots"/>
|
||||
<div class="o_row">
|
||||
<field name="is_multi_slots" string="Multiple Slots"/>
|
||||
<div invisible="not is_multi_slots">
|
||||
<button name="action_open_slot_calendar"
|
||||
type="object" class="btn-link p-0 pb-sm-1">
|
||||
<field name="event_slot_count" class="oe_inline"/> Slot(s)
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<field name="lang"/>
|
||||
<field name="event_type_id" string="Template"/>
|
||||
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_quick_create': True}"/>
|
||||
</group>
|
||||
<group name="right_event_details">
|
||||
<field name="organizer_id"/>
|
||||
<field name="user_id" domain="[('share', '=', False)]"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="address_id"
|
||||
context="{'show_address': 1}"
|
||||
options='{"always_reload": True}'/>
|
||||
<field name="user_id" widget="many2one_avatar_user" domain="[('share', '=', False)]"/>
|
||||
<field name="company_id" groups="base.group_multi_company" placeholder="Visible to all"/>
|
||||
<field name="address_id" context="{'show_address': 1}" placeholder="Online if not set"/>
|
||||
<field name="event_url" invisible="address_id" widget="url" placeholder='e.g. "https://www.odoo.com"'/>
|
||||
<label for="seats_limited" string="Limit Registrations"/>
|
||||
<div>
|
||||
<field name="seats_limited"/>
|
||||
<span attrs="{'invisible': [('seats_limited', '=', False)], 'required': [('seats_limited', '=', False)]}">to <field name="seats_max" class="oe_inline o_input_9ch"/> Confirmed Attendees</span>
|
||||
<span invisible="not seats_limited" required="not seats_limited">
|
||||
to <field name="seats_max" class="oe_inline o_input_9ch"/> Attendees
|
||||
<span invisible="not is_multi_slots"> per slot</span>
|
||||
</span>
|
||||
</div>
|
||||
<field name="auto_confirm"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Tickets" name="tickets">
|
||||
<field name="event_ticket_ids" context="{
|
||||
'default_event_name': name,
|
||||
'tree_view_ref': 'event.event_event_ticket_view_tree_from_event',
|
||||
'is_event_multi_slots': is_multi_slots,
|
||||
'list_view_ref': 'event.event_event_ticket_view_tree_from_event',
|
||||
'form_view_ref': 'event.event_event_ticket_view_form_from_event',
|
||||
'kanban_view_ref': 'event.event_event_ticket_view_kanban_from_event'}" mode="tree,kanban"/>
|
||||
'kanban_view_ref': 'event.event_event_ticket_view_kanban_from_event'}" mode="list,kanban"/>
|
||||
</page>
|
||||
<page string="Communication" name="event_communication">
|
||||
<field name="event_mail_ids">
|
||||
<tree string="Communication" editable="bottom">
|
||||
<list string="Communication" editable="bottom" decoration-danger="mail_state == 'error'">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="notification_type"/>
|
||||
<field name="template_model_id" invisible="1"/>
|
||||
<field name="template_ref" options="{'hide_model': True, 'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}"/>
|
||||
<field name="interval_nbr" attrs="{'readonly':[('interval_unit','=','now')]}"/>
|
||||
<field name="template_ref" options="{'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}" widget="EventMailTemplateReferenceField"/>
|
||||
<field name="interval_nbr" readonly="interval_unit == 'now'"/>
|
||||
<field name="interval_unit"/>
|
||||
<field name="interval_type"/>
|
||||
<field name="scheduled_date" groups="base.group_no_one"/>
|
||||
<field name="mail_count_done"/>
|
||||
<field name="mail_state" widget="event_icon_selection" string=" " nolabel="1"
|
||||
options="{'sent': 'fa fa-check', 'scheduled': 'fa fa-hourglass-half', 'running': 'fa fa-cogs'}"/>
|
||||
</tree>
|
||||
options="{
|
||||
'error': 'fa fa-exclamation-triangle',
|
||||
'sent': 'fa fa-check',
|
||||
'scheduled': 'fa fa-hourglass-half',
|
||||
'running': 'fa fa-cogs',
|
||||
'cancelled': 'fa fa-times-circle'
|
||||
}"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes" name="event_notes">
|
||||
<page string="Questions" name="questions">
|
||||
<field name="question_ids" string="Question" nolabel="1" domain="[('is_reusable', '=', True)]" context="{'list_view_ref': 'event.event_question_view_list_add'}">
|
||||
<list>
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="title"/>
|
||||
<field name="is_mandatory_answer" string="Mandatory"/>
|
||||
<field name="once_per_order" string="Once per Order"/>
|
||||
<field name="question_type" string="Type" />
|
||||
<field name="answer_ids" widget="many2many_tags"
|
||||
invisible="question_type != 'simple_choice'" />
|
||||
<field name="is_default" optional="hide"/>
|
||||
<field name="is_reusable" optional="hide"/>
|
||||
<button name="action_view_question_answers"
|
||||
type="object"
|
||||
class="p-0"
|
||||
icon="fa-bar-chart pe-1"
|
||||
string="Stats"
|
||||
title="Answer Breakdown"
|
||||
context="{'search_default_event_id': parent.id}"
|
||||
invisible="question_type not in ['simple_choice', 'text_box']"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes & Documents" name="event_notes">
|
||||
<group>
|
||||
<label for="note" string="Note" />
|
||||
<br />
|
||||
<field nolabel="1" colspan="2" name="note"
|
||||
placeholder="Add some internal notes (to do lists, contact info, ...)" />
|
||||
<label for="ticket_instructions" string="Ticket Instructions" />
|
||||
<br />
|
||||
<field nolabel="1" colspan="2" name="ticket_instructions"
|
||||
placeholder="e.g. How to get to your event, door closing time, ..." />
|
||||
<group>
|
||||
<field name="badge_format"/>
|
||||
<field name="badge_image"/>
|
||||
</group>
|
||||
<group>
|
||||
<label for="ticket_instructions" string="Ticket Instructions" />
|
||||
<br />
|
||||
<field nolabel="1" colspan="2" name="ticket_instructions"
|
||||
placeholder="e.g. How to get to your event, door closing time, ..." />
|
||||
</group>
|
||||
<group>
|
||||
<label for="note" string="Note" />
|
||||
<br />
|
||||
<field nolabel="1" colspan="2" name="note"
|
||||
placeholder="Add some internal notes (to do lists, contact info, ...)" />
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_tree">
|
||||
<field name="name">event.event.tree</field>
|
||||
<field name="name">event.event.list</field>
|
||||
<field name="model">event.event</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Events"
|
||||
decoration-danger="(seats_max and seats_max<seats_reserved)"
|
||||
<list string="Events"
|
||||
multi_edit="1"
|
||||
sample="1">
|
||||
<field name="name"/>
|
||||
|
|
@ -126,18 +177,35 @@
|
|||
<field name="organizer_id" readonly="1" optional="hide"/>
|
||||
<field name="user_id" readonly="1" widget="many2one_avatar_user"/>
|
||||
<field name="company_id" groups="base.group_multi_company" readonly="1" optional="show"/>
|
||||
<field name="date_begin" readonly="1" widget="date"/>
|
||||
<field name="date_end" readonly="1" widget="date"/>
|
||||
<field name="date_begin" readonly="1"/>
|
||||
<field name="date_end" readonly="1"/>
|
||||
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
|
||||
<field name="seats_expected" string="Expected Attendees" sum="Total" readonly="1"/>
|
||||
<field name="seats_taken" string="Total Attendees" sum="Total" readonly="1"/>
|
||||
<field name="seats_used" sum="Total" readonly="1"/>
|
||||
<field name="seats_max" string="Maximum Seats" sum="Total" readonly="1" optional="hide"/>
|
||||
<field name="seats_reserved" sum="Total" readonly="1" optional="hide"/>
|
||||
<field name="seats_unconfirmed" string="Unconfirmed Seats" sum="Total" readonly="1" optional="hide"/>
|
||||
<field name="stage_id" readonly="1"/>
|
||||
<field name="message_needaction" invisible="1" readonly="1"/>
|
||||
<field name="message_needaction" readonly="1" column_invisible="True"/>
|
||||
<field name="activity_exception_decoration" widget="activity_exception" readonly="1"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_event_view_activity" model="ir.ui.view">
|
||||
<field name="name">event.event.view.activity</field>
|
||||
<field name="model">event.event</field>
|
||||
<field name="arch" type="xml">
|
||||
<activity string="Event">
|
||||
<templates>
|
||||
<div t-name="activity-box">
|
||||
<field name="user_id" widget="many2one_avatar_user"/>
|
||||
<div class="flex-grow-1">
|
||||
<field name="name" string="Event Name" class="o_text_block o_text_bold"/>
|
||||
<field name="date_begin" widget="daterange" options="{'end_date_field': 'date_end'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</templates>
|
||||
</activity>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -149,12 +217,8 @@
|
|||
<form>
|
||||
<group>
|
||||
<field name="name" placeholder="e.g. Conference for Architects"/>
|
||||
<label for="date_begin" string="Date"/>
|
||||
<div class="o_row">
|
||||
<field name="date_begin" widget="daterange" options="{'related_end_date': 'date_end'}"/>
|
||||
<i class="fa fa-long-arrow-right mx-2" aria-label="Arrow icon" title="Arrow"/>
|
||||
<field name="date_end" widget="daterange" options="{'related_start_date': 'date_begin'}"/>
|
||||
</div>
|
||||
<field name="date_begin" string="Date" widget="daterange" options="{'end_date_field': 'date_end'}" />
|
||||
<field name="date_end" invisible="1" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
@ -165,72 +229,45 @@
|
|||
<field name="model">event.event</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_event_kanban_view" default_group_by="stage_id" quick_create_view="event.event_event_view_form_quick_create" sample="1">
|
||||
<field name="user_id"/>
|
||||
<field name="name"/>
|
||||
<field name="stage_id" options='{"group_by_tooltip": {"description": "Description"}}'/>
|
||||
<field name="address_id"/>
|
||||
<field name="date_begin"/>
|
||||
<field name="date_end"/>
|
||||
<field name="auto_confirm"/>
|
||||
<field name="seats_unconfirmed"/>
|
||||
<field name="seats_reserved"/>
|
||||
<field name="seats_used"/>
|
||||
<field name="seats_expected"/>
|
||||
<field name="legend_blocked"/>
|
||||
<field name="legend_normal"/>
|
||||
<field name="legend_done"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="activity_state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="d-flex flex-column p-0 oe_kanban_card oe_kanban_global_click">
|
||||
<div class="o_kanban_content p-0 m-0 position-relative row d-flex flex-fill">
|
||||
<div class="col-3 text-bg-primary p-2 text-center d-flex flex-column justify-content-center">
|
||||
<div t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('d')" class="o_event_fontsize_20"/>
|
||||
<div>
|
||||
<t t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('MMM yyyy')"/>
|
||||
</div>
|
||||
<div><t t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('t')"/></div>
|
||||
<div t-if="record.date_begin.raw_value !== record.date_end.raw_value">
|
||||
<i class="fa fa-arrow-right me-2 o_event_fontsize_09" title="End date"/>
|
||||
<t t-esc="luxon.DateTime.fromISO(record.date_end.raw_value).toFormat('d MMM')"/>
|
||||
</div>
|
||||
<t t-name="card" class="p-0 row">
|
||||
<aside class="col-4 text-bg-primary p-2 text-center d-flex flex-column justify-content-center">
|
||||
<div t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('d')" class="fs-1"/>
|
||||
<div>
|
||||
<t t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('MMM yyyy')"/>
|
||||
</div>
|
||||
<div><t t-esc="luxon.DateTime.fromISO(record.date_begin.raw_value).toFormat('t')"/></div>
|
||||
<div t-if="record.date_begin.raw_value !== record.date_end.raw_value">
|
||||
<i class="oi oi-arrow-right me-2" title="End date"/>
|
||||
<t t-esc="luxon.DateTime.fromISO(record.date_end.raw_value).toFormat('d MMM')"/>
|
||||
</div>
|
||||
<div class="col-9 py-2 px-3 d-flex flex-column justify-content-between pt-3">
|
||||
<div>
|
||||
<div class="o_kanban_record_title o_text_overflow" t-att-title="record.name.value">
|
||||
<field name="name"/>
|
||||
</div>
|
||||
<div t-if="record.address_id.value" class="d-flex">
|
||||
<i class="fa fa-map-marker mt-1 me-1" title="Location"/>
|
||||
<span t-esc="record.address_id.value"/>
|
||||
</div>
|
||||
</div>
|
||||
<h5 class="o_event_fontsize_11 p-0">
|
||||
<a name="%(event_registration_action_stats_from_event)d"
|
||||
type="action"
|
||||
context="{'search_default_expected': True}">
|
||||
<t t-esc="record.seats_expected.raw_value"/> Expected attendees
|
||||
</a>
|
||||
<t t-set="total_seats" t-value="record.seats_reserved.raw_value + record.seats_used.raw_value"/>
|
||||
<div class="pt-2 pt-md-0" t-if="total_seats > 0 and ! record.auto_confirm.raw_value"><br/>
|
||||
<a class="ps-2" name="%(event_registration_action_stats_from_event)d" type="action" context="{'search_default_confirmed': True}">
|
||||
<i class="fa fa-level-up fa-rotate-90" title="Confirmed"/><span class="ps-2"><t t-esc="total_seats"/> Confirmed</span>
|
||||
</a>
|
||||
</div>
|
||||
</h5>
|
||||
<div class="o_kanban_record_bottom">
|
||||
<div class="oe_kanban_bottom_left">
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<field name="kanban_state" widget="state_selection"/>
|
||||
<field name="user_id" widget="many2one_avatar_user"/>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
<main class="col pt-3 pb-2 px-3 justify-content-between">
|
||||
<div>
|
||||
<div class="fw-bold fs-5 text-truncate" t-att-title="record.name.value">
|
||||
<field name="name"/>
|
||||
</div>
|
||||
<div class="d-flex ps-1">
|
||||
<i class="fa fa-map-marker mt-1 me-2 text-center ps-1" title="Location"/>
|
||||
<field t-if="record.address_id.value" name="address_id" class="ms-1"/>
|
||||
<span t-else="" class="ms-1">Online Event</span>
|
||||
</div>
|
||||
<div t-if="record.seats_taken.raw_value" class="d-flex ps-1">
|
||||
<i class="fa fa-group mt-1 me-2 text-center" title="Attendees"/>
|
||||
<field name="seats_taken" class="me-1"/> Attendees
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="pt-1 p-0 m-0">
|
||||
<field name="activity_ids" widget="kanban_activity"/>
|
||||
<div class="d-flex ms-auto">
|
||||
<field name="user_id" widget="many2one_avatar_user"/>
|
||||
<field class="ms-1 my-auto" name="kanban_state" widget="event_state_selection"/>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
|
|
@ -244,10 +281,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<calendar date_start="date_begin" date_stop="date_end" string="Event Organization" mode="month" color="event_type_id" event_limit="5">
|
||||
<field name="user_id" avatar_field="avatar_128"/>
|
||||
<field name="seats_expected"/>
|
||||
<field name="seats_taken"/>
|
||||
<field name="seats_reserved"/>
|
||||
<field name="seats_used"/>
|
||||
<field name="seats_unconfirmed"/>
|
||||
<field name="event_type_id" filters="1" invisible="1"/>
|
||||
</calendar>
|
||||
</field>
|
||||
|
|
@ -263,23 +299,30 @@
|
|||
<field name="user_id"/>
|
||||
<field name="address_search"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="activity_user_id" string="Activities of"/>
|
||||
<field name="activity_type_id" string="Activity type"/>
|
||||
<field name="question_ids"/>
|
||||
<filter string="My Events" name="myevents" help="My Events" domain="[('user_id', '=', uid)]"/>
|
||||
<separator/>
|
||||
<filter string="Upcoming/Running" name="upcoming"
|
||||
domain="[('date_end', '>=', datetime.datetime.combine(context_today(), datetime.time(0,0,0)))]" help="Upcoming events from today" />
|
||||
domain="[('date_end', '>=', 'now')]" help="Upcoming events from today" />
|
||||
<separator/>
|
||||
<filter string="Start Date" name="start_date" date="date_begin"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<separator/>
|
||||
<filter invisible="1" string="My Activities" name="filter_activities_my"
|
||||
domain="[('activity_user_id', '=', uid)]"/>
|
||||
<separator invisible="1"/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||||
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||||
help="Show all records which has next action date is before today"/>
|
||||
domain="[('my_activity_date_deadline', '<', 'today')]"
|
||||
help="Show all records whose next activity date is past"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today"
|
||||
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
domain="[('my_activity_date_deadline', '=', 'today')]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||||
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<group expand="0" string="Group By">
|
||||
domain="[('my_activity_date_deadline', '>', 'today')]"/>
|
||||
<filter string="Online" name="filter_online" domain="[('address_id', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Responsible" name="responsible" context="{'group_by': 'user_id'}"/>
|
||||
<filter string="Template" name="event_type_id" context="{'group_by': 'event_type_id'}"/>
|
||||
<!--
|
||||
|
|
@ -293,6 +336,7 @@
|
|||
-->
|
||||
<filter string="Stage" name="stage_id" context="{'group_by': 'stage_id'}" groups="event.group_event_registration_desk"/>
|
||||
<filter string="Start Date" name="date_begin" domain="[]" context="{'group_by': 'date_begin'}"/>
|
||||
<filter string="Venue" name="venue" context="{'group_by': 'address_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
|
@ -302,9 +346,9 @@
|
|||
|
||||
<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="path">events</field>
|
||||
<field name="res_model">event.event</field>
|
||||
<field name="view_mode">kanban,calendar,tree,form,pivot,graph</field>
|
||||
<field name="view_mode">kanban,calendar,list,form,pivot,graph,activity</field>
|
||||
<field name="search_view_id" ref="view_event_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
|
|
@ -319,4 +363,14 @@
|
|||
<field name="action" ref="event.action_event_view"/>
|
||||
</record>
|
||||
|
||||
<!-- EVENT.EVENT HEADER: REGISTRATION DESK MENU -->
|
||||
|
||||
<menuitem
|
||||
id="menu_event_registration_desk"
|
||||
name="Registration Desk"
|
||||
sequence="30"
|
||||
action="event.event_barcode_action_main_view"
|
||||
parent="event.event_main_menu"
|
||||
groups="event.group_event_registration_desk"
|
||||
/>
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -10,15 +10,14 @@
|
|||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="event_id"/>
|
||||
<field name="notification_type"/>
|
||||
<field name="template_ref" options="{'hide_model': True, 'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}"/>
|
||||
<field name="event_id" placeholder="All Events"/>
|
||||
<field name="template_ref" options="{'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}" widget="EventMailTemplateReferenceField"/>
|
||||
<field name="mail_state"/>
|
||||
</group>
|
||||
<group>
|
||||
<label for="interval_nbr"/>
|
||||
<div class="o_row">
|
||||
<field name="interval_nbr" attrs="{'invisible': [('interval_unit', '=', 'now')], 'readonly': [('interval_unit', '=', 'now')]}"/>
|
||||
<field name="interval_nbr" invisible="interval_unit == 'now'" readonly="interval_unit == 'now'"/>
|
||||
<field name="interval_unit"/>
|
||||
</div>
|
||||
<field name="interval_type"/>
|
||||
|
|
@ -28,11 +27,11 @@
|
|||
<notebook groups="base.group_no_one">
|
||||
<page string="Registration Mails" name="registration_mails">
|
||||
<field name="mail_registration_ids">
|
||||
<tree string="Registration mail" editable="bottom">
|
||||
<list string="Registration mail" editable="bottom">
|
||||
<field name="registration_id"/>
|
||||
<field name="scheduled_date"/>
|
||||
<field name="mail_sent" string="Sent"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
@ -42,18 +41,17 @@
|
|||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_mail_tree">
|
||||
<field name="name">event.mail.tree</field>
|
||||
<field name="name">event.mail.list</field>
|
||||
<field name="model">event.mail</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Mail Schedulers">
|
||||
<list string="Event Mail Schedulers">
|
||||
<field name="event_id"/>
|
||||
<field name="notification_type"/>
|
||||
<field name="template_ref" options="{'hide_model': True, 'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}"/>
|
||||
<field name="template_ref" options="{'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}" widget="EventMailTemplateReferenceField"/>
|
||||
<field name="scheduled_date"/>
|
||||
<field name="mail_count_done"/>
|
||||
<field name="mail_state" widget="event_icon_selection" string=" " nolabel="1"
|
||||
options="{'sent': 'fa fa-check', 'scheduled': 'fa fa-hourglass-half', 'running': 'fa fa-cogs'}"/>
|
||||
</tree>
|
||||
options="{'sent': 'fa fa-check', 'scheduled': 'fa fa-hourglass-half', 'running': 'fa fa-cogs', 'cancelled': 'fa fa-times-circle'}"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
id="event_main_menu"
|
||||
sequence="125"
|
||||
groups="event.group_event_registration_desk"
|
||||
web_icon="event,static/description/icon.svg"/>
|
||||
web_icon="event,static/description/icon.png"/>
|
||||
|
||||
<!-- HEADER: EVENTS -->
|
||||
<menuitem name="Events"
|
||||
|
|
@ -45,5 +45,9 @@
|
|||
id="menu_event_category"
|
||||
sequence="3"
|
||||
parent="menu_event_configuration"/>
|
||||
<menuitem name="Event Questions"
|
||||
id="event_question_menu"
|
||||
sequence="4"
|
||||
parent="menu_event_configuration"/>
|
||||
|
||||
</data></odoo>
|
||||
|
|
|
|||
146
odoo-bringout-oca-ocb-event/event/views/event_question_views.xml
Normal file
146
odoo-bringout-oca-ocb-event/event/views/event_question_views.xml
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="event_question_view_search" model="ir.ui.view">
|
||||
<field name="name">event.question.view.search</field>
|
||||
<field name="model">event.question</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Event Question">
|
||||
<field name="title"/>
|
||||
<field name="question_type"/>
|
||||
<field name="answer_ids"/>
|
||||
<filter string="Mandatory"
|
||||
name="filter_is_mandatory_answer"
|
||||
domain="[('is_mandatory_answer', '=', True)]"/>
|
||||
<filter string="Not mandatory"
|
||||
name="filter_is_not mandatory_answer"
|
||||
domain="[('is_mandatory_answer', '=', False)]"/>
|
||||
<separator/>
|
||||
<filter string="Once per order"
|
||||
name="filter_once_per_order"
|
||||
domain="[('once_per_order', '=', True)]"/>
|
||||
<filter string="For each attendee"
|
||||
name="filter_for_each_attendee"
|
||||
domain="[('once_per_order', '=', False)]"/>
|
||||
<separator/>
|
||||
<filter name="filter_is_reusable" string="Reusable" domain="[('is_reusable', '=', True)]"/>
|
||||
<filter name="filter_is_not_reusable" string="Not Reusable" domain="[('is_reusable', '=', False)]"/>
|
||||
<separator/>
|
||||
<filter name="filter_is_default" string="Default Questions" domain="[('is_default', '=', True)]"/>
|
||||
<filter name="filter_archive" string="Archived" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter string="Event" name="group_by_event" context="{'group_by': 'event_ids'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_question_view_form" model="ir.ui.view">
|
||||
<field name="name">event.question.view.form</field>
|
||||
<field name="model">event.question</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Question">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="action_view_question_answers"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-line-chart"
|
||||
invisible="question_type not in ['simple_choice', 'text_box']">
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">
|
||||
Attendee answers
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="alert alert-warning" role="alert"
|
||||
invisible="event_count == 0">
|
||||
This question is used by
|
||||
<button class="oe_link p-0 align-baseline" type="object" name="action_event_view">
|
||||
<field name="event_count"/>
|
||||
events
|
||||
</button>.
|
||||
</div>
|
||||
<h1 class="d-flex"><field name="title" placeholder='e.g. "Do you have any diet restrictions?"' class="flex-grow-1"/></h1>
|
||||
<group>
|
||||
<group>
|
||||
<field name="is_mandatory_answer"/>
|
||||
<field name="question_type" widget="radio"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="once_per_order"/>
|
||||
<field name="is_default"/>
|
||||
<field name="event_type_ids" invisible="1"/>
|
||||
<field name="is_reusable" readonly="is_default"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook invisible="question_type != 'simple_choice'">
|
||||
<page string="Answers" name="answers">
|
||||
<field name="answer_ids">
|
||||
<list editable="bottom">
|
||||
<!-- 'display_name' is necessary for the many2many_tags to work on the event view -->
|
||||
<field name="display_name" column_invisible="True" />
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_question_view_list" model="ir.ui.view">
|
||||
<field name="name">event.question.view.list</field>
|
||||
<field name="model">event.question</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="title"/>
|
||||
<field name="is_mandatory_answer" string="Mandatory"/>
|
||||
<field name="once_per_order" string="Once per Order"/>
|
||||
<field name="question_type" string="Type"/>
|
||||
<field name="answer_ids" widget="many2many_tags"
|
||||
invisible="question_type != 'simple_choice'"/>
|
||||
<field name="is_default"/>
|
||||
<field name="is_reusable" optional="hide"/>
|
||||
<button name="action_view_question_answers"
|
||||
type="object"
|
||||
class="p-0"
|
||||
icon="fa-bar-chart pe-1"
|
||||
string="Stats"
|
||||
title="Answer Breakdown"
|
||||
invisible="question_type not in ['simple_choice', 'text_box']"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_question_view_list_add" model="ir.ui.view">
|
||||
<field name="name">event.question.view.list.add</field>
|
||||
<field name="model">event.question</field>
|
||||
<field name="inherit_id" ref="event.event_question_view_list"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='is_reusable']" position="replace"/>
|
||||
<xpath expr="//button[@name='action_view_question_answers']" position="replace"/>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_question_action" model="ir.actions.act_window">
|
||||
<field name="name">Event Question</field>
|
||||
<field name="res_model">event.question</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="event.event_question_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No questions yet! Please create one.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_question_menu" model="ir.ui.menu">
|
||||
<field name="action" ref="event.event_question_action"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="event_registration_answer_view_search" model="ir.ui.view">
|
||||
<field name="name">event.registration.answer.view.search</field>
|
||||
<field name="model">event.registration.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="value_text_box" />
|
||||
<field name="value_answer_id" />
|
||||
<field name="question_id" />
|
||||
<field name="event_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_registration_answer_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.registration.answer.view.list</field>
|
||||
<field name="model">event.registration.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Answer Breakdown" create="0">
|
||||
<field name="registration_id" optional="show" />
|
||||
<field name="partner_id" optional="hide" />
|
||||
<field name="question_id" optional="show" />
|
||||
<field name="value_text_box" />
|
||||
<field name="value_answer_id" string="Selected answer" />
|
||||
<field name="event_id" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_registration_answer_view_graph" model="ir.ui.view">
|
||||
<field name="name">event.registration.answer.view.graph</field>
|
||||
<field name="model">event.registration.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Answer Breakdown" sample="1" type="bar">
|
||||
<field name="value_answer_id" type="col"/>
|
||||
<field name="event_id" type="row"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_registration_answer_view_pivot" model="ir.ui.view">
|
||||
<field name="name">event.registration.answer.view.pivot</field>
|
||||
<field name="model">event.registration.answer</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Answer Breakdown" sample="1">
|
||||
<field name="registration_id" type="row"/>
|
||||
<field name="value_answer_id" type="col"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_event_registration_report" model="ir.actions.act_window">
|
||||
<field name="name">Answer Breakdown</field>
|
||||
<field name="res_model">event.registration.answer</field>
|
||||
<field name="view_mode">list,graph,pivot</field>
|
||||
<field name="search_view_id" ref="event_registration_answer_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No Answers yet!
|
||||
</p><p>
|
||||
Come back once you have registrations to overview answers.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -3,36 +3,38 @@
|
|||
|
||||
<!-- EVENT.REGISTRATION VIEWS -->
|
||||
<record model="ir.ui.view" id="view_event_registration_tree">
|
||||
<field name="name">event.registration.tree</field>
|
||||
<field name="name">event.registration.list</field>
|
||||
<field name="model">event.registration</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Registration" multi_edit="1" sample="1"
|
||||
<list string="Registration" multi_edit="1" sample="1"
|
||||
expand="1" default_order="create_date desc"
|
||||
class="o_event_registration_view_tree">
|
||||
<field name="active" invisible="1"/>
|
||||
class="o_event_registration_view_tree" js_class="registration_summary_dialog_list">
|
||||
<field name="barcode" column_invisible="True"/>
|
||||
<field name="active" column_invisible="True"/>
|
||||
<field name="create_date" optional="show" string="Registration Date"/>
|
||||
<field name="name"/>
|
||||
<field name="partner_id" optional="hide"/>
|
||||
<field name="email" optional="show"/>
|
||||
<field name="phone" optional="show"/>
|
||||
<field name="mobile" optional="hide"/>
|
||||
<field name="event_id" invisible="context.get('default_event_id')"/>
|
||||
<field name="company_name" optional="hide"/>
|
||||
<field name="event_id" column_invisible="context.get('default_event_id')"/>
|
||||
<field name="event_slot_id" domain="[('event_id', '=', event_id)]"/>
|
||||
<field name="event_ticket_id" domain="[('event_id', '=', event_id)]"/>
|
||||
<field name="activity_ids" widget="list_activity"/>
|
||||
<field name="state" decoration-info="state in ('draft', 'open')"
|
||||
decoration-success="state == 'done'"
|
||||
decoration-muted="state == 'cancel'" widget="badge"/>
|
||||
<field name="company_id" groups="base.group_multi_company" optional="hide"/>
|
||||
<field name="message_needaction" invisible="1"/>
|
||||
<button name="action_confirm" string="Confirm" type="object" icon="fa-check"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), ('state', '!=', 'draft')]}"/>
|
||||
<field name="company_id" groups="base.group_multi_company" optional="hide" readonly="state != 'draft'"/>
|
||||
<field name="message_needaction" column_invisible="True"/>
|
||||
<button name="action_confirm" string="Registered" type="object" icon="fa-check"
|
||||
invisible="not active or state != 'draft'"/>
|
||||
<button name="action_set_done" string="Mark as Attending" type="object" icon="fa-level-down"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), ('state', '!=', 'open')]}"/>
|
||||
invisible="not active or state != 'open'"/>
|
||||
<button name="action_cancel" string="Cancel" type="object"
|
||||
class="o_btn_cancel_registration" icon="fa-times"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), '&', ('state', '!=', 'open'), ('state', '!=', 'draft')]}"/>
|
||||
invisible="not active or (state != 'open' and state != 'draft')"/>
|
||||
<field name="activity_exception_decoration" widget="activity_exception"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -44,33 +46,37 @@
|
|||
<field name="active" invisible="1"/>
|
||||
<header>
|
||||
<button name="action_send_badge_email" string="Send by Email" type="object" class="oe_highlight"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), '&', ('state', '!=', 'open'), ('state', '!=', 'done')]}"/>
|
||||
<button name="action_confirm" string="Confirm" type="object" class="oe_highlight"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), ('state', '!=', 'draft')]}"/>
|
||||
invisible="not active or state != 'open' and state != 'done'"/>
|
||||
<button name="action_confirm" string="Registered" type="object" class="oe_highlight"
|
||||
invisible="not active or state != 'draft'"/>
|
||||
<button name="action_set_done" string="Attended" type="object" class="oe_highlight"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), ('state', '!=', 'open')]}"/>
|
||||
<button name="action_set_draft" string="Set To Unconfirmed" type="object"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), '&', ('state', '!=', 'cancel'), ('state', '!=', 'done')]}"/>
|
||||
invisible="not active or state != 'open'"/>
|
||||
<button name="action_cancel" string="Cancel Registration" type="object"
|
||||
attrs="{'invisible': ['|', ('active', '=', False), '&', ('state', '!=', 'open'), ('state', '!=', 'draft')]}"/>
|
||||
<field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
|
||||
invisible="not active or state == 'cancel'"/>
|
||||
<field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="open,done"
|
||||
readonly="False" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet string="Registration">
|
||||
<div class="oe_button_box" name="button_box"/>
|
||||
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
<widget name="web_ribbon" text="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<group>
|
||||
<group string="Attendee" name="attendee">
|
||||
<field class="o_text_overflow" name="name"/>
|
||||
<field name="email"/>
|
||||
<field name="phone" class="o_force_ltr" widget="phone" options="{'enable_sms': false}"/>
|
||||
<field name="mobile" class="o_force_ltr" widget="phone"/>
|
||||
<field name="phone" class="o_force_ltr" widget="phone" options="{'enable_sms': true}"/>
|
||||
<field name="company_name" placeholder='e.g. "Azure Interior"'/>
|
||||
</group>
|
||||
<group string="Event Information" name="event">
|
||||
<field class="text-break" name="event_id" attrs="{'readonly': [('state', '!=', 'draft')]}"
|
||||
<field class="text-break" name="event_id"
|
||||
context="{'name_with_seats_availability': True}" options="{'no_create': True}"/>
|
||||
<field name="event_ticket_id" attrs="{'invisible': [('event_id', '=', False)]}"
|
||||
<field name="event_slot_id" invisible="not is_multi_slots" required="is_multi_slots"
|
||||
context="{'name_with_seats_availability': True}" options="{'no_open': True, 'no_create': True}"
|
||||
domain="[('event_id', '=', event_id)]"/>
|
||||
<field name="event_ticket_id" invisible="not event_id"
|
||||
context="{'name_with_seats_availability': True, 'is_event_multi_slots': is_multi_slots}"
|
||||
options="{'no_open': True, 'no_create': True}"
|
||||
domain="[('event_id', '=', event_id)]"/>
|
||||
<field name="barcode" groups="base.group_no_one"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="create_date" string="Registration Date" groups="base.group_no_one"/>
|
||||
<field name="date_closed" groups="base.group_no_one"/>
|
||||
|
|
@ -81,12 +87,38 @@
|
|||
<field name="utm_source_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="registration_properties" columns="2"/>
|
||||
<notebook>
|
||||
<page string="Questions" name="questions">
|
||||
<field name="registration_answer_ids" widget="one2many">
|
||||
<list editable="bottom">
|
||||
<field name="event_id" column_invisible="True" />
|
||||
<field name="question_id" domain="[('event_ids', 'in', event_id)]" options="{'no_create': True}"/>
|
||||
<field name="question_type" string="Type" />
|
||||
<field name="value_answer_id"
|
||||
invisible="question_type != 'simple_choice'"
|
||||
domain="[('question_id', '=', question_id)]" options="{'no_create': True}"/>
|
||||
<field name="value_text_box" invisible="question_type == 'simple_choice'" />
|
||||
</list>
|
||||
<kanban class="o_kanban_mobile" create="false" delete="false">
|
||||
<field name="event_id"/>
|
||||
<field name="question_type"/>
|
||||
<templates>
|
||||
<t t-name="card" class="justify-content-between">
|
||||
<field class="fw-bold fs-5" name="question_id" domain="[('event_ids', 'in', event_id)]"/>
|
||||
<field name="value_answer_id"
|
||||
invisible="question_type != 'simple_choice'"
|
||||
domain="[('question_id', '=', question_id)]" options="{'no_create': True}"/>
|
||||
<field name="value_text_box"
|
||||
invisible="question_type == 'simple_choice'"/>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids" options="{'post_refresh': 'recipients'}"/>
|
||||
</div>
|
||||
<chatter reload_on_post="True"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -96,73 +128,32 @@
|
|||
<field name="model">event.registration</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_event_attendee_kanban_view" default_order="name, create_date desc" sample="1">
|
||||
<kanban class="o_event_attendee_kanban_view" default_order="name, create_date desc" sample="1" js_class="registration_summary_dialog_kanban">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="state"/>
|
||||
<field name="email"/>
|
||||
<field name="event_ticket_id"/>
|
||||
<field name="active" invisible="1"/>
|
||||
<field name="active"/>
|
||||
<field name="barcode"/>
|
||||
<templates>
|
||||
<t t-name="event_attendees_kanban_icons_desktop">
|
||||
<div class="d-none d-md-block h-100">
|
||||
<div id="event_attendees_kanban_icons_desktop" class="h-100 float-end p-2 d-flex align-items-end flex-column">
|
||||
<t t-if="record.active.raw_value">
|
||||
<a class="btn btn-md btn-primary" string="Confirm Registration" name="action_confirm" type="object" states="draft" role="button">
|
||||
<i class="fa fa-check" role="img" aria-label="Confirm button" title="Confirm Registration"/>
|
||||
</a>
|
||||
<a class="btn btn-md btn-primary" string="Confirm Attendance" name="action_set_done" type="object" states="open" role="button">
|
||||
<i class="fa fa-user-plus" role="img" aria-label="Attended button" title="Confirm Attendance"/>
|
||||
</a>
|
||||
<span class="text-muted" states="done">Attended</span>
|
||||
<span class="text-muted" states="cancel">Canceled</span>
|
||||
</t>
|
||||
<t t-name="card" class="row g-0">
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="col-8">
|
||||
<field class="d-block fw-bold fs-5" name="name"/>
|
||||
<field name="state" widget="badge" decoration-success="state == 'done'" class="position-absolute top-0 end-0 o_event_registration_kanban_badge"/>
|
||||
<div class="o_kanban_event_registration_event_name">
|
||||
<field class="text-truncate text-primary" name="event_id" invisible="context.get('default_event_id')"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="event_attendees_kanban_icons_mobile">
|
||||
<div id="event_attendees_kanban_icons_mobile" class="d-md-none h-100 ps-4">
|
||||
<t t-if="record.active.raw_value">
|
||||
<a class="btn btn-primary d-flex justify-content-center align-items-center h-100 w-100"
|
||||
string="Confirm Registration" name="action_confirm" type="object" states="draft" role="button">
|
||||
<i class="fa fa-check fa-3x" role="img" aria-label="Confirm button" title="Confirm Registration"/>
|
||||
</a>
|
||||
<a class="btn btn-primary d-flex justify-content-center align-items-center h-100 w-100"
|
||||
string="Confirm Attendance" name="action_set_done" type="object" states="open" role="button">
|
||||
<i class="fa fa-user-plus fa-3x" role="img" aria-label="Attended button" title="Confirm Attendance"/>
|
||||
</a>
|
||||
<div class="d-flex justify-content-center align-items-center h-100 w-100">
|
||||
<span class="text-muted" states="done" >Attended</span>
|
||||
<span class="text-muted" states="cancel" >Canceled</span>
|
||||
<span class="text-truncate" invisible="not company_name">
|
||||
<i class="fa fa-building" title="Attendee Company"/> <field name="company_name"/>
|
||||
</span>
|
||||
<div id="event_ticket_id">
|
||||
<field name="registration_properties"/>
|
||||
<div t-if="record.event_slot_id.raw_value">
|
||||
<i class="fa fa-calendar" title="Slot"/>
|
||||
<field name="event_slot_id" class="fw-bold text-truncate ms-1"/>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="#{!record.active.raw_value ? 'oe_kanban_card_ribbon' : ''} oe_kanban_global_click o_event_registration_kanban container-fluid p-0">
|
||||
<div t-if="!record.active.raw_value" class="ribbon ribbon-top-right">
|
||||
<span class="bg-danger">Archived</span>
|
||||
</div>
|
||||
<div class="row h-100">
|
||||
<div class="col-9 pe-0">
|
||||
<div class="oe_kanban_content h-100">
|
||||
<div class="o_kanban_record_body pt-1 ps-2 h-100 d-flex flex-column">
|
||||
<b class="o_kanban_record_title"><field name="name"/></b>
|
||||
<field class="o_text_overflow" name="event_id" invisible="context.get('default_event_id')" />
|
||||
<span class="o_text_overflow" attrs="{'invisible': [('partner_id', '=', False)]}">Booked by <field name="partner_id" /></span>
|
||||
<div id="event_ticket_id" class="o_field_many2manytags o_field_widget d-flex mt-auto">
|
||||
<t t-if="record.event_ticket_id.raw_value">
|
||||
<div t-attf-class="badge rounded-pill o_tag_color_#{(record.event_ticket_id.raw_value % 11) + 1}" >
|
||||
<b><span class="o_badge_text o_text_overflow"><t t-out="record.event_ticket_id.value"/></span></b>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="event_attendees_kanban_icons" class="col-3 ps-0">
|
||||
<t t-call="event_attendees_kanban_icons_desktop"/>
|
||||
<t t-call="event_attendees_kanban_icons_mobile"/>
|
||||
<div t-if="record.event_ticket_id.raw_value">
|
||||
<i class="fa fa-ticket" title="Ticket type"/>
|
||||
<field name="event_ticket_id" class="fw-bold text-truncate ms-1"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -180,6 +171,7 @@
|
|||
<calendar date_start="event_begin_date" date_stop="event_end_date" string="Event Registration" color="event_id" event_limit="5">
|
||||
<field name="event_id" filters="1"/>
|
||||
<field name="name"/>
|
||||
<field name="registration_properties"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -210,36 +202,41 @@
|
|||
<field name="arch" type="xml">
|
||||
<search string="Event Registration">
|
||||
<field name="id" string="Registration ID"/>
|
||||
<field name="name" string="Participant" filter_domain="['|', '|', ('name', 'ilike', self), ('email', 'ilike', self), ('company_name', 'ilike', self)]"/>
|
||||
<field name="company_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="event_ticket_id" string="Ticket"/>
|
||||
<field name="event_id"/>
|
||||
<field name="event_user_id" string="Responsible"/>
|
||||
<field name="event_organizer_id" string="Organizer"/>
|
||||
<field name="name" string="Participant" filter_domain="['|', ('name', 'ilike', self), ('email', 'ilike', self)]"/>
|
||||
<field name="event_user_id" string="Responsible" invisible="1"/>
|
||||
<field name="event_organizer_id" string="Organizer" invisible="1"/>
|
||||
<filter string="Ongoing Events" name="filter_is_ongoing" domain="[('event_id.is_ongoing', '=', True)]"/>
|
||||
<filter string="Expected" name="expected" domain="[('state', 'in', ['draft', 'open', 'done'])]"/>
|
||||
<filter string="Taken" name="taken" domain="[('state', 'in', ['open', 'done'])]"/>
|
||||
<separator/>
|
||||
<filter string="Unconfirmed" name="unconfirmed" domain="[('state', '=', 'draft')]"/>
|
||||
<filter string="Confirmed" name="confirmed" domain="[('state', '=', 'open')]"/>
|
||||
<filter string="Registered" name="confirmed" domain="[('state', '=', 'open')]"/>
|
||||
<filter string="Attended" name="attended" domain="[('state', '=', 'done')]"/>
|
||||
<separator/>
|
||||
<filter string="Registration Date" name="filter_create_date" date="create_date"/>
|
||||
<filter string="Event Start Date" name="filter_event_begin_date" date="event_begin_date"/>
|
||||
<filter string="Attended Date" name="filter_date_closed" date="date_closed"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="company_id"/>
|
||||
<separator/>
|
||||
<filter invisible="1" string="My Activities" name="filter_activities_my"
|
||||
domain="[('activity_user_id', '=', uid)]"/>
|
||||
<separator invisible="1"/>
|
||||
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
||||
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
||||
help="Show all records which has next action date is before today"/>
|
||||
domain="[('my_activity_date_deadline', '<', 'today')]"
|
||||
help="Show all records whose next activity date is past"/>
|
||||
<filter invisible="1" string="Today Activities" name="activities_today"
|
||||
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
domain="[('my_activity_date_deadline', '=', 'today')]"/>
|
||||
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
||||
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
||||
<filter string="Last 30 days" name="filter_last_month_creation" domain="[('create_date','>', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
|
||||
domain="[('my_activity_date_deadline', '>', 'today')]"/>
|
||||
<filter string="Last 30 days" name="filter_last_month_creation" domain="[('create_date','>', 'today -30d')]"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="filter_inactive" domain="[('active', '=', False)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<group>
|
||||
<filter string="Partner" name="partner" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Event" name="group_event" domain="[]" context="{'group_by':'event_id'}"/>
|
||||
<filter string="Slot" name="group_by_event_slot_id" context="{'group_by': 'event_slot_id'}"/>
|
||||
<filter string="Ticket Type" name ="group_event_ticket_id" domain="[]" context="{'group_by': 'event_ticket_id'}"/>
|
||||
<filter string="Status" name="status" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Registration Date" name="group_by_create_date_week" domain="[]" context="{'group_by': 'create_date:week'}"
|
||||
|
|
@ -252,6 +249,7 @@
|
|||
context="{'group_by': 'utm_medium_id'}"/>
|
||||
<filter string="Source" name="group_by_utm_source_id" domain="[]"
|
||||
context="{'group_by': 'utm_source_id'}"/>
|
||||
<filter string="Properties" name="group_by_registration_properties" context="{'group_by': 'registration_properties'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
|
@ -266,8 +264,6 @@
|
|||
<field name="priority">32</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//search/field[@name='event_id']" position="replace"/>
|
||||
<xpath expr="//search/field[@name='event_user_id']" position="replace"/>
|
||||
<xpath expr="//search/field[@name='event_organizer_id']" position="replace"/>
|
||||
<xpath expr="//search/filter[@name='filter_is_ongoing']" position="replace"/>
|
||||
<xpath expr="//search/group/filter[@name='group_event']" position="replace"/>
|
||||
</field>
|
||||
|
|
@ -277,9 +273,14 @@
|
|||
<record id="act_event_registration_from_event" model="ir.actions.act_window">
|
||||
<field name="res_model">event.registration</field>
|
||||
<field name="name">Attendees</field>
|
||||
<field name="view_mode">tree,kanban,form,calendar,graph</field>
|
||||
<field name="path">attendees</field>
|
||||
<field name="view_mode">list,kanban,form,calendar,graph</field>
|
||||
<field name="domain">[('event_id', '=', active_id)]</field>
|
||||
<field name="context">{'default_event_id': active_id, 'name_with_seats_availability': True}</field>
|
||||
<field name="context">{
|
||||
'default_event_id': active_id,
|
||||
'name_with_seats_availability': True,
|
||||
'search_default_taken': True,
|
||||
}</field>
|
||||
<field name="search_view_id" ref="event_registration_view_search_event_specific"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
|
|
@ -295,9 +296,9 @@
|
|||
<record id="event_registration_action_kanban" 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="view_mode">kanban,list,form</field>
|
||||
<field name="domain">[('event_id', '=', active_id)]</field>
|
||||
<field name="context">{'default_event_id': active_id}</field>
|
||||
<field name="context">{'default_event_id': active_id, 'is_registration_desk_view': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No Attendees yet!
|
||||
|
|
@ -310,7 +311,8 @@
|
|||
<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="view_mode">kanban,list,form</field>
|
||||
<field name="context">{'search_default_filter_is_ongoing': True, 'is_registration_desk_view': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No Attendees expected yet!
|
||||
|
|
@ -322,18 +324,18 @@
|
|||
|
||||
<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>
|
||||
<field name="res_model">event.registration</field>
|
||||
<field name="view_mode">tree,kanban,form,calendar,graph</field>
|
||||
<field name="view_mode">list,kanban,form,calendar,graph</field>
|
||||
</record>
|
||||
|
||||
<record id="action_registration" model="ir.actions.act_window">
|
||||
<field name="name">Attendees</field>
|
||||
<field name="res_model">event.registration</field>
|
||||
<field name="domain"></field>
|
||||
<field name="view_mode">graph,pivot,kanban,tree,form</field>
|
||||
<field name="view_mode">graph,pivot,kanban,list,form</field>
|
||||
<field name="context">{
|
||||
'search_default_filter_last_month_creation': 1,
|
||||
'search_default_taken': 1,
|
||||
'search_default_status': 2,
|
||||
'search_default_group_by_create_date_day': 3,
|
||||
'search_default_group_event': 1,
|
||||
|
|
@ -353,7 +355,7 @@
|
|||
<record id="event_registration_action_stats_from_event" model="ir.actions.act_window">
|
||||
<field name="name">Registration statistics</field>
|
||||
<field name="res_model">event.registration</field>
|
||||
<field name="view_mode">graph,pivot,kanban,tree,form</field>
|
||||
<field name="view_mode">graph,pivot,kanban,list,form</field>
|
||||
<field name="domain">[('event_id', '=', active_id)]</field>
|
||||
<field name="context">{
|
||||
'default_event_id': active_id,
|
||||
|
|
|
|||
81
odoo-bringout-oca-ocb-event/event/views/event_slot_views.xml
Normal file
81
odoo-bringout-oca-ocb-event/event/views/event_slot_views.xml
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo><data>
|
||||
|
||||
<record id="view_event_slot_form" model="ir.ui.view">
|
||||
<field name="name">event.slot.form</field>
|
||||
<field name="model">event.slot</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="event_id" invisible="1"/>
|
||||
<group>
|
||||
<group>
|
||||
<label for="start_hour" string="Hour range"/>
|
||||
<div>
|
||||
<field name="start_hour" class="oe_inline o_input_5ch" widget="float_time"/>
|
||||
<i class="fa fa-arrow-right mx-2" title="to"/>
|
||||
<field name="end_hour" class="oe_inline o_input_5ch" widget="float_time"/>
|
||||
</div>
|
||||
<field name="date_tz" string="Timezone"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_event_slot_multi_create_form" model="ir.ui.view">
|
||||
<field name="name">event.slot.form</field>
|
||||
<field name="model">event.slot</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="event_id" invisible="1"/>
|
||||
<group>
|
||||
<field name="date_tz" string="Timezone"/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_event_slot_tree" model="ir.ui.view">
|
||||
<field name="name">event.slot.list</field>
|
||||
<field name="model">event.slot</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Slots" editable="bottom" multi_edit="1">
|
||||
<field name="date"/>
|
||||
<field name="start_hour" string="From" widget="float_time"/>
|
||||
<button name="durationArrow" width="20px" title="Until"
|
||||
class="fa fa-long-arrow-right text-center text-secondary pe-none"/>
|
||||
<field name="end_hour" string="To" widget="float_time"/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_event_slot_calendar" model="ir.ui.view">
|
||||
<field name="name">event.slot.calendar</field>
|
||||
<field name="model">event.slot</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar js_class="event_slot_calendar" date_start="start_datetime" date_stop="end_datetime"
|
||||
string="Slots" scales="month" color="color" quick_create_view_id="%(event.view_event_slot_form)d"
|
||||
multi_create_view="event.view_event_slot_multi_create_form">
|
||||
<field name="start_datetime" invisible="1"/>
|
||||
<field name="end_datetime" invisible="1"/>
|
||||
<field name="date_tz" invisible="1"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_slot_action_from_event" model="ir.actions.act_window">
|
||||
<field name="name">Slots</field>
|
||||
<field name="res_model">event.slot</field>
|
||||
<field name="view_mode">calendar,list,form</field>
|
||||
<field name="mobile_view_mode">list</field>
|
||||
<field name="domain">[('event_id', '=', active_id)]</field>
|
||||
<field name="context">{'default_event_id': active_id}</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="name" placeholder='e.g. "Promoting"'/>
|
||||
<field name="pipe_end"/>
|
||||
</group>
|
||||
<group>
|
||||
|
|
@ -17,21 +17,7 @@
|
|||
<field name="sequence"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Stage Description and Tooltips">
|
||||
<p class="text-muted" colspan="2">
|
||||
You can define here labels that will be displayed for the state instead
|
||||
of the default labels in the kanban view.
|
||||
</p>
|
||||
<label for="legend_normal" string=" " class="o_status " title="Task in progress. Click to block or set as done." aria-label="Task in progress. Click to block or set as done." role="img"/>
|
||||
<field name="legend_normal" nolabel="1"/>
|
||||
<label for="legend_blocked" string=" " class="o_status o_status_red" title="Task is blocked. Click to unblock or set as done." aria-label="Task is blocked. Click to unblock or set as done." role="img"/>
|
||||
<field name="legend_blocked" nolabel="1"/>
|
||||
<label for="legend_done" string=" " class="o_status o_status_green" title="This step is done. Click to block or set in progress." aria-label="This step is done. Click to block or set in progress." role="img"/>
|
||||
<field name="legend_done" nolabel="1"/>
|
||||
|
||||
<p class="text-muted" colspan="2">
|
||||
You can also add a description to help your coworkers understand the meaning and purpose of the stage.
|
||||
</p>
|
||||
<group string="Add a description that will appear as a tooltip for this stage">
|
||||
<field name="description" placeholder="Add a description..." nolabel="1" colspan="2"/>
|
||||
</group>
|
||||
</sheet>
|
||||
|
|
@ -40,20 +26,20 @@
|
|||
</record>
|
||||
|
||||
<record id="event_stage_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.stage.view.tree</field>
|
||||
<field name="name">event.stage.view.list</field>
|
||||
<field name="model">event.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Events Stage">
|
||||
<list string="Events Stage">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="event_stage_action" model="ir.actions.act_window">
|
||||
<field name="name">Event Stages</field>
|
||||
<field name="res_model">event.stage</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create an Event Stage
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
<data>
|
||||
<!-- EVENT.TAG.CATEGORY VIEWS -->
|
||||
<record id="event_tag_category_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.tag.category.view.tree</field>
|
||||
<field name="name">event.tag.category.view.list</field>
|
||||
<field name="model">event.tag.category</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Category">
|
||||
<list string="Event Category">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -21,15 +21,15 @@
|
|||
<form string="Event Category">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1><field nolabel="1" name="name"/></h1>
|
||||
<h1><field nolabel="1" name="name" placeholder='e.g. "Age Category"'/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<field name="tag_ids" context="{'default_category_id': active_id}">
|
||||
<tree string="Tags" editable="bottom">
|
||||
<field name="tag_ids" context="{'default_category_id': id}">
|
||||
<list string="Tags" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="name" placeholder='e.g. "12-16 years old"'/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</group>
|
||||
</sheet>
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
<record id="event_tag_category_action_tree" model="ir.actions.act_window" >
|
||||
<field name="name">Event Tags Categories</field>
|
||||
<field name="res_model">event.tag.category</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create an Event Tag Category
|
||||
|
|
@ -52,15 +52,15 @@
|
|||
|
||||
<!-- EVENT.TAG VIEWS -->
|
||||
<record id="event_tag_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.tag.view.tree</field>
|
||||
<field name="name">event.tag.view.list</field>
|
||||
<field name="model">event.tag</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Tags Categories">
|
||||
<list string="Event Tags Categories">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="category_id"/>
|
||||
<field name="category_id" options="{'no_quick_create':True}"/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="category_id" widget="many2one"/>
|
||||
<field name="category_id" options="{'no_quick_create':True}" widget="many2one"/>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</group>
|
||||
</sheet>
|
||||
|
|
|
|||
|
|
@ -3,16 +3,17 @@
|
|||
|
||||
<!-- EVENT.TYPE.TICKET -->
|
||||
<record id="event_type_ticket_view_tree_from_type" model="ir.ui.view">
|
||||
<field name="name">event.type.ticket.view.tree.from.type</field>
|
||||
<field name="name">event.type.ticket.view.list.from.type</field>
|
||||
<field name="model">event.type.ticket</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Template Tickets" editable="bottom">
|
||||
<list string="Event Template Tickets" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="description"/>
|
||||
<field name="description" optional="hide"/>
|
||||
<field name="seats_max"/>
|
||||
<field name="seats_limited"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -35,13 +36,13 @@
|
|||
</record>
|
||||
|
||||
<record id="event_type_ticket_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.type.ticket.view.tree</field>
|
||||
<field name="name">event.type.ticket.view.list</field>
|
||||
<field name="model">event.type.ticket</field>
|
||||
<field name="inherit_id" ref="event_type_ticket_view_tree_from_type"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//tree" position="attributes">
|
||||
<xpath expr="//list" position="attributes">
|
||||
<attribute name="editable"></attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='name']" position="after">
|
||||
|
|
@ -65,19 +66,23 @@
|
|||
|
||||
<!-- EVENT.TICKET -->
|
||||
<record id="event_event_ticket_view_tree_from_event" model="ir.ui.view">
|
||||
<field name="name">event.event.ticket.view.tree.from.event</field>
|
||||
<field name="name">event.event.ticket.view.list.from.event</field>
|
||||
<field name="model">event.event.ticket</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Tickets" editable="bottom">
|
||||
<list string="Tickets" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="description" optional="hide"/>
|
||||
<field name="start_sale_datetime" optional="show"/>
|
||||
<field name="end_sale_datetime" optional="show"/>
|
||||
<field name="seats_max" sum="Total" width="105px" string="Maximum"/>
|
||||
<field name="seats_reserved" sum="Total" width="105px" string="Confirmed"/>
|
||||
<field name="seats_unconfirmed" sum="Total" width="110px" string="Unconfirmed"/>
|
||||
</tree>
|
||||
<field name="seats_max" sum="Total" width="120px" string="Maximum" column_invisible="context.get('is_event_multi_slots')"/>
|
||||
<field name="seats_max" sum="Total" width="120px" string="Maximum per slot" column_invisible="not context.get('is_event_multi_slots')"/>
|
||||
<field name="seats_taken" sum="Total" width="120px" string="Registration" column_invisible="context.get('is_event_multi_slots')"/>
|
||||
<field name="seats_taken" sum="Total" width="120px" string="Total Registration" column_invisible="not context.get('is_event_multi_slots')"/>
|
||||
<field name="limit_max_per_order" optional="hidden"/>
|
||||
<field name="color" widget="color" optional="hidden"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -97,7 +102,6 @@
|
|||
</group><group>
|
||||
<field name="seats_max"/>
|
||||
<field name="seats_reserved"/>
|
||||
<field name="seats_unconfirmed"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
|
|
@ -111,22 +115,12 @@
|
|||
<field name="priority" eval="20"/>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="name"/>
|
||||
<field name="seats_max"/>
|
||||
<field name="seats_reserved"/>
|
||||
<field name="seats_unconfirmed"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<strong><t t-out="record.name.value"/></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div><i>
|
||||
<t t-out="record.seats_reserved.value"/> reserved + <t t-out="record.seats_reserved.value"/> unconfirmed
|
||||
</i></div>
|
||||
<t t-name="card">
|
||||
<div class="d-flex">
|
||||
<field class="fw-bolder" name="name"/>
|
||||
</div>
|
||||
<i><field name="seats_reserved"/> reserved</i>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
|
|
@ -134,13 +128,13 @@
|
|||
</record>
|
||||
|
||||
<record id="event_event_ticket_view_tree" model="ir.ui.view">
|
||||
<field name="name">event.event.ticket.view.tree</field>
|
||||
<field name="name">event.event.ticket.view.list</field>
|
||||
<field name="model">event.event.ticket</field>
|
||||
<field name="inherit_id" ref="event_event_ticket_view_tree_from_event"/>
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//tree" position="attributes">
|
||||
<xpath expr="//list" position="attributes">
|
||||
<attribute name="editable"></attribute>
|
||||
</xpath>
|
||||
<field name="name" position="after">
|
||||
|
|
@ -161,7 +155,7 @@
|
|||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="event_id"/>
|
||||
<field name="event_id" placeholder="All Events"/>
|
||||
<field name="seats_limited"/>
|
||||
<field name="seats_available"/>
|
||||
<field name="start_sale_datetime"/>
|
||||
|
|
@ -170,7 +164,6 @@
|
|||
<group>
|
||||
<field name="seats_max"/>
|
||||
<field name="seats_reserved"/>
|
||||
<field name="seats_unconfirmed"/>
|
||||
<field name="seats_used"/>
|
||||
<field name="is_expired"/>
|
||||
</group>
|
||||
|
|
@ -179,4 +172,4 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data></odoo>
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -21,39 +21,48 @@
|
|||
<label for="has_seats_limitation" string="Limit Registrations"/>
|
||||
<div>
|
||||
<field name="has_seats_limitation"/>
|
||||
<span attrs="{'invisible': [('has_seats_limitation', '=', False)], 'required': [('has_seats_limitation', '=', False)]}">
|
||||
<span invisible="not has_seats_limitation" required="not has_seats_limitation">
|
||||
to <field name="seats_max" class="oe_inline o_input_9ch"/>
|
||||
Confirmed Attendees
|
||||
Attendees
|
||||
</span>
|
||||
</div>
|
||||
<label for="auto_confirm" string="Autoconfirmation"/>
|
||||
<field name="auto_confirm" nolabel="1"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<notebook>
|
||||
<page string="Tickets">
|
||||
<page string="Tickets" name="page_tickets">
|
||||
<field name="event_type_ticket_ids"
|
||||
class="w-100"
|
||||
context="{
|
||||
'tree_view_ref': 'event.event_type_ticket_view_tree_from_type',
|
||||
'list_view_ref': 'event.event_type_ticket_view_tree_from_type',
|
||||
'form_view_ref': 'event.event_type_ticket_view_form_from_type'
|
||||
}"
|
||||
/>
|
||||
</page>
|
||||
<page string="Communication" name="event_type_communication">
|
||||
<field name="event_type_mail_ids" class="w-100">
|
||||
<tree string="Communication" editable="bottom">
|
||||
<field name="notification_type"/>
|
||||
<field name="template_model_id" invisible="1"/>
|
||||
<field name="template_ref" options="{'model_field': 'template_model_id', 'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}"/>
|
||||
<field name="interval_nbr" attrs="{'readonly':[('interval_unit', '=', 'now')]}"/>
|
||||
<list string="Communication" editable="bottom">
|
||||
<field name="template_ref" options="{'no_quick_create': True}" context="{'filter_template_on_event': True, 'default_model': 'event.registration'}" widget="EventMailTemplateReferenceField"/>
|
||||
<field name="interval_nbr" readonly="interval_unit == 'now'"/>
|
||||
<field name="interval_unit"/>
|
||||
<field name="interval_type"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<page string="Questions" name="page_questions">
|
||||
<field name="question_ids" class="w-100" domain="[('is_reusable', '=', True)]" context="{'list_view_ref': 'event.event_question_view_list_add'}">
|
||||
<list sample="1">
|
||||
<field name="title"/>
|
||||
<field name="is_mandatory_answer" string="Mandatory"/>
|
||||
<field name="once_per_order" string="Once per Order"/>
|
||||
<field name="question_type" />
|
||||
<field name="answer_ids" widget="many2many_tags" invisible="question_type != 'simple_choice'"/>
|
||||
<field name="is_default" optional="hide"/>
|
||||
<field name="is_reusable" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes" name="notes">
|
||||
<group>
|
||||
<label for="note" string="Note" />
|
||||
<br />
|
||||
|
|
@ -72,13 +81,13 @@
|
|||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_type_tree">
|
||||
<field name="name">event.type.tree</field>
|
||||
<field name="name">event.type.list</field>
|
||||
<field name="model">event.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Template">
|
||||
<list string="Event Template" sample="1">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,126 +5,83 @@
|
|||
<field name="name">res.config.settings.view.form.inherit.event</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="65"/>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
|
||||
<field name="inherit_id" ref="mail.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('settings')]" position="inside">
|
||||
<div class="app_settings_block" data-string="Events" string="Events" data-key="event" groups="event.group_event_manager">
|
||||
<h2>Events</h2>
|
||||
<div class="row mt16 o_settings_container" name="events_setting_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box"
|
||||
id="manage_tracks"
|
||||
title="Add a navigation menu to your event web pages with schedule, tracks, a track proposal form, etc.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_track"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Schedule & Tracks" for="module_website_event_track"/>
|
||||
<div class="text-muted">
|
||||
Manage & publish a schedule with tracks
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('module_website_event_track', '=', False)]}">
|
||||
<field name="module_website_event_track_live" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Live Broadcast" for="module_website_event_track_live"/><br/>
|
||||
<span class="text-muted">Air your tracks online through a Youtube integration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('module_website_event_track', '=', False)]}">
|
||||
<field name="module_website_event_track_quiz" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Event Gamification" for="module_website_event_track_quiz"/><br/>
|
||||
<span class="text-muted">Share a quiz to your attendees once a track is over</span>
|
||||
</div>
|
||||
<xpath expr="//form" position="inside">
|
||||
<app data-string="Events" string="Events" name="event" groups="event.group_event_manager">
|
||||
<block title="Events" name="events_setting_container">
|
||||
<setting id="manage_tracks" title="Add a navigation menu to your event web pages with schedule, tracks, a track proposal form, etc." string="Schedule & Tracks" help="Manage & publish a schedule with tracks">
|
||||
<field name="module_website_event_track"/>
|
||||
<div class="mt-3 d-flex" invisible="not module_website_event_track">
|
||||
<field name="module_website_event_track_live" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Live Broadcast" for="module_website_event_track_live"/><br/>
|
||||
<span class="text-muted">Air your tracks online through a Youtube integration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3 d-flex" invisible="not module_website_event_track">
|
||||
<field name="module_website_event_track_quiz" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Event Gamification" for="module_website_event_track_quiz"/><br/>
|
||||
<span class="text-muted">Share a quiz to your attendees once a track is over</span>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
<setting string="Online Exhibitors" help="Display Sponsors and Exhibitors on your event pages">
|
||||
<field name="module_website_event_exhibitor"/>
|
||||
</setting>
|
||||
<setting string="Booth Management" help="Create Booths and manage their reservations">
|
||||
<field name="module_event_booth"/>
|
||||
</setting>
|
||||
</block>
|
||||
<block title="Registration" name="registration_setting_container">
|
||||
<setting id="sell_tickets" help="Sell tickets with sales orders">
|
||||
<field name="module_event_sale"/>
|
||||
</setting>
|
||||
<setting id="sell_tickets_pos" help="Sell tickets with Point of Sale">
|
||||
<field name="module_pos_event"/>
|
||||
</setting>
|
||||
<setting name="event_settings_website" help="Sell tickets on your website">
|
||||
<field name="module_website_event_sale"/>
|
||||
</setting>
|
||||
</block>
|
||||
<block title="Attendance" name="attendance_setting_container">
|
||||
<setting id="event" company_dependent="1" help="Enable barcode scanning">
|
||||
<field name="use_event_barcode"/>
|
||||
<div class="content-group row mt16" invisible="use_event_barcode==False">
|
||||
<label for="barcode_nomenclature_id" string="Barcode Nomenclature" class="col-lg-3 o_light_label"/>
|
||||
<field name="barcode_nomenclature_id" required="use_event_barcode==True"/>
|
||||
</div>
|
||||
</setting>
|
||||
</block>
|
||||
</app>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//setting[@id='restrict_template_rendering_setting']" position="before">
|
||||
<setting string="Google Maps" help="Insert dynamic Google Maps in your email templates"
|
||||
documentation="https://developers.google.com/maps/documentation/maps-static/get-api-key">
|
||||
<field name="use_google_maps_static_api"/>
|
||||
<div invisible="not use_google_maps_static_api">
|
||||
<div class="content-group mt16">
|
||||
<label for="google_maps_static_api_key" class="o_form_label col-lg-3 o_light_label"/>
|
||||
<field name="google_maps_static_api_key" string="Key"
|
||||
required="use_google_maps_static_api"/>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div>
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_meet"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Community Chat Rooms" for="module_website_event_meet"/>
|
||||
<div class="text-muted">
|
||||
Foster interactions between attendees by creating virtual conference rooms
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_exhibitor"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Online Exhibitors" for="module_website_event_exhibitor"/>
|
||||
<div class="text-muted">
|
||||
Display Sponsors and Exhibitors on your event pages
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_event_booth"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Booth Management" for="module_event_booth"/>
|
||||
<div class="text-muted">
|
||||
Create Booths and manage their reservations
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<label for="google_maps_static_api_secret" class="o_form_label col-lg-3 o_light_label"/>
|
||||
<field name="google_maps_static_api_secret" string="Secret"
|
||||
required="use_google_maps_static_api"/>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Registration</h2>
|
||||
<div class="row mt16 o_settings_container" name="registration_setting_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="sell_tickets">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_event_sale"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_event_sale"/>
|
||||
<div class="text-muted">
|
||||
Sell tickets with sales orders
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box" name="event_settings_website">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_sale"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_website_event_sale"/>
|
||||
<div class="text-muted">
|
||||
Sell tickets on your website
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Attendance</h2>
|
||||
<div class="row mt16 o_settings_container" name="attendance_setting_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="event_barcode">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_event_barcode" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_event_barcode"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
|
||||
<div class="text-muted" name="event_barcode">
|
||||
Scan badges to confirm attendances
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</setting>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_event_configuration" model="ir.actions.act_window">
|
||||
<field name="name">Settings</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.config.settings</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">inline</field>
|
||||
<field name="context">{'module' : 'event', 'bin_size': False}</field>
|
||||
</record>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
groups="event.group_event_user"
|
||||
type="object"
|
||||
icon="fa-ticket"
|
||||
name="action_event_view" attrs="{'invisible': [('event_count','=', 0)]}">
|
||||
name="action_event_view" invisible="event_count == 0">
|
||||
<field string="Events" name="event_count" widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue