The following summary view of the record in the activity views have been improved: - project_task: task state added - project_project: project manager added - event_event: responsible and the dates (date_begin_located and date_end_located) added - account_move: total amount, customer and state added - sale_order: total amount and the state added - purchase_order: total amount and the state added - crm_lead: customer and stage added - hr_applicant (hr_recruitment): recruiter added - survey_survey: responsible added - maintenance.request: added equipment and responsible - stock.picking: added scheduled_date - repair.order: responsible, schedule_date and product_id added - mrp.production: added responsible - hr_leave (hr_holidays): status is added and default deadline modified see below Ensures that "Schedule activity" is in one line by adding a colspan. hr_leave activity: When a time off approval activity is created as a consequence of the creation of a hr.leave, the deadline of the activity is set to the date_from of the hr.leave minus activity type delay_count (default 15) except if it leads to a date anterior to today. In that case it is set to today. That way, in the activity view, the time off approval activities are more or less sorted by related hr.leave date_from and the cell date is an indication of when the time off is planned. Technical note: on most activity view, the activity record was not occupying all the horizontal space. To solve that problem the css has been modified and the max-width (200) that was imposed on the sub div has been removed. And as it was impossible to impose a max-width for a flex div (which is the common case for the activity record), the max width is imposed on each text that might be too long using the class o_text_block. That class has been modified to impose a max-width. That's why that class has been added in most view. Alternativly, we could have modified the activity compiler to add that class when the attribute full was set (not done because not sure of the consequence). Task-3300854 Part-of: odoo/odoo#138135
341 lines
19 KiB
XML
341 lines
19 KiB
XML
<?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>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_form">
|
|
<field name="name">event.event.form</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Events" class="o_event_form_view">
|
|
<header>
|
|
<button name="%(event_barcode_action_main_view)d"
|
|
type="action"
|
|
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">
|
|
<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"
|
|
context="{'search_default_expected': True}"
|
|
class="oe_stat_button"
|
|
icon="fa-users"
|
|
help="Total Registrations for this Event">
|
|
<field name="seats_taken" widget="statinfo" string="Attendees"/>
|
|
</button>
|
|
|
|
<button name="%(event_barcode_action_main_view)d"
|
|
type="action"
|
|
class="oe_stat_button"
|
|
icon="fa-mobile"
|
|
context="{'default_event_id': id}">
|
|
<div class="o_stat_info">
|
|
<span class="o_stat_text">Registration Desk</span>
|
|
</div>
|
|
</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="text-bg-danger" invisible="active"/>
|
|
<field name="kanban_state" widget="state_selection" class="ms-auto float-end"/>
|
|
<div class="oe_title">
|
|
<label for="name" string="Event Name"/>
|
|
<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"/>
|
|
<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="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" widget="many2one_avatar_user" domain="[('share', '=', False)]"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
<field name="address_id" context="{'show_address': 1}"/>
|
|
<label for="seats_limited" string="Limit Registrations"/>
|
|
<div>
|
|
<field name="seats_limited"/>
|
|
<span invisible="not seats_limited" required="not seats_limited">to <field name="seats_max" class="oe_inline o_input_9ch"/> Attendees</span>
|
|
</div>
|
|
<field name="badge_format"/>
|
|
<field name="badge_image"/>
|
|
</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',
|
|
'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"/>
|
|
</page>
|
|
<page string="Communication" name="event_communication">
|
|
<field name="event_mail_ids">
|
|
<tree string="Communication" editable="bottom">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="notification_type"/>
|
|
<field name="template_model_id" column_invisible="True"/>
|
|
<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" 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>
|
|
</field>
|
|
</page>
|
|
<page string="Notes" 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>
|
|
</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>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<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"
|
|
multi_edit="1"
|
|
sample="1">
|
|
<field name="name"/>
|
|
<field name="address_id" readonly="1"/>
|
|
<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="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
|
|
<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="stage_id" readonly="1"/>
|
|
<field name="message_needaction" readonly="1" column_invisible="True"/>
|
|
<field name="activity_exception_decoration" widget="activity_exception" readonly="1"/>
|
|
</tree>
|
|
</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"/>
|
|
<i class="fa fa-long-arrow-right mx-2" aria-label="Arrow icon" title="Arrow" />
|
|
<field name="date_end"/>
|
|
</div>
|
|
</div>
|
|
</templates>
|
|
</activity>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="event_event_view_form_quick_create" model="ir.ui.view">
|
|
<field name="name">event.event.form.quick_create</field>
|
|
<field name="model">event.event</field>
|
|
<field name="priority">1000</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<group>
|
|
<field name="name" placeholder="e.g. Conference for Architects"/>
|
|
<field name="date_begin" string="Date" widget="daterange" options="{'end_date_field': 'date_end'}" />
|
|
<field name="date_end" invisible="1" />
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<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 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="seats_reserved"/>
|
|
<field name="seats_used"/>
|
|
<field name="seats_taken"/>
|
|
<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-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="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="oi oi-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>
|
|
</div>
|
|
<div class="col-8 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 ps-1">
|
|
<i class="fa fa-map-marker mt-1 me-2 text-center ps-1" title="Location"/>
|
|
<span t-esc="record.address_id.value" class="ms-1"/>
|
|
</div>
|
|
<div class="d-flex ps-1">
|
|
<i class="fa fa-group mt-1 me-2 text-center" title="Attendees"/>
|
|
<span t-out="record.seats_taken.raw_value" class="me-1"/> Attendees
|
|
</div>
|
|
</div>
|
|
<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>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_calendar">
|
|
<field name="name">event.event.calendar</field>
|
|
<field name="model">event.event</field>
|
|
<field eval="2" name="priority"/>
|
|
<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_taken"/>
|
|
<field name="seats_reserved"/>
|
|
<field name="seats_used"/>
|
|
<field name="event_type_id" filters="1" invisible="1"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_event_search">
|
|
<field name="name">event.event.search</field>
|
|
<field name="model">event.event</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Events">
|
|
<field name="name" string="Event"/>
|
|
<field name="event_type_id"/>
|
|
<field name="user_id"/>
|
|
<field name="address_search"/>
|
|
<field name="stage_id"/>
|
|
<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" />
|
|
<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="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"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<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">
|
|
<filter string="Responsible" name="responsible" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Template" name="event_type_id" context="{'group_by': 'event_type_id'}"/>
|
|
<filter string="Stage" name="stage_id" context="{'group_by': 'stage_id'}"/>
|
|
<filter string="Start Date" name="date_begin" domain="[]" context="{'group_by': 'date_begin'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- EVENT.EVENT VIEWS -->
|
|
|
|
<record model="ir.actions.act_window" id="action_event_view">
|
|
<field name="name">Events</field>
|
|
<field name="res_model">event.event</field>
|
|
<field name="view_mode">kanban,calendar,tree,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">
|
|
Create an Event
|
|
</p><p>
|
|
Schedule and organize your events: handle registrations, send automated confirmation emails, sell tickets, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="event.menu_event_event" model="ir.ui.menu">
|
|
<field name="action" ref="event.action_event_view"/>
|
|
</record>
|
|
|
|
<!-- EVENT.EVENT HEADER: REGISTRATION DESK MENU -->
|
|
<menuitem name="Registration Desk"
|
|
id="menu_event_registration_desk"
|
|
sequence="30"
|
|
action="event.event_barcode_action_main_view"
|
|
parent="event.event_main_menu"
|
|
groups="event.group_event_registration_desk"/>
|
|
</data></odoo>
|