mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 07:32:08 +02:00
461 lines
25 KiB
XML
461 lines
25 KiB
XML
<?xml version="1.0"?>
|
|
<odoo>
|
|
<record id="mail_activity_type_view_form" model="ir.ui.view">
|
|
<field name="name">mail.activity.type.view.form</field>
|
|
<field name="model">mail.activity.type</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Activities">
|
|
<sheet>
|
|
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
|
<div class="oe_title">
|
|
<label for="name" class="oe_edit_only"/>
|
|
<h1><field name="name" placeholder="e.g. Schedule a meeting" options="{'line_breaks': False}" widget="text"/></h1>
|
|
</div>
|
|
<group>
|
|
<group name="activity_details" string="Activity Settings">
|
|
<field name="active" invisible="1"/>
|
|
<field name="category"/>
|
|
<field name="default_user_id" options="{'no_create': True}" domain="[('share', '=', False)]"
|
|
widget="many2one_avatar_user"/>
|
|
<field name="res_model" invisible="context.get('default_res_model')"
|
|
placeholder="Available everywhere"/>
|
|
<field name="summary" placeholder="e.g. "Discuss proposal""/>
|
|
<field name="icon" groups="base.group_no_one"/>
|
|
<field name="decoration_type" groups="base.group_no_one"/>
|
|
<label for="delay_count"/>
|
|
<div>
|
|
<field class="oe_inline pe-1 o_input_3ch" name="delay_count"/>
|
|
<field class="oe_inline ps-1 pe-2" name="delay_unit"/>
|
|
<field class="oe_inline" name="delay_from"/>
|
|
</div>
|
|
</group>
|
|
<group name="activity_planning" string="Next Activity">
|
|
<field name="chaining_type" invisible="category == 'upload_file'"/>
|
|
<field name="triggered_next_type_id" options="{'no_open': True}" context="{'default_res_model': res_model}"
|
|
invisible="chaining_type == 'suggest' and category != 'upload_file'"
|
|
required="chaining_type == 'trigger' and category != 'upload_file'"/>
|
|
<field name="suggested_next_type_ids" widget="many2many_tags" context="{'default_res_model': res_model}"
|
|
invisible="chaining_type == 'trigger' or category == 'upload_file'"/>
|
|
<field name="mail_template_ids" widget="many2many_tags"
|
|
domain="[('model_id.model', '=', res_model)]"
|
|
invisible="not res_model"
|
|
context="{'default_model': res_model}"/>
|
|
</group>
|
|
</group>
|
|
<label for="default_note" class="fw-bold"/>
|
|
<field nolabel="1" name="default_note" placeholder="e.g. "Go over the offer and discuss details"" class="oe-bordered-editor"/>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_type_view_search" model="ir.ui.view">
|
|
<field name="name">mail.activity.type.search</field>
|
|
<field name="model">mail.activity.type</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Activities">
|
|
<field name="name"/>
|
|
<filter string="Archived" domain="[('active', '=', False)]" name="archived"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_type_view_tree" model="ir.ui.view">
|
|
<field name="name">mail.activity.type.view.list</field>
|
|
<field name="model">mail.activity.type</field>
|
|
<field name="arch" type="xml">
|
|
<list string="Activities" sample="1">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="summary"/>
|
|
<field name="delay_label" string="Planned in" class="text-end"/>
|
|
<field name="delay_from" string="Type"/>
|
|
<field name="res_model" column_invisible="context.get('default_res_model')"/>
|
|
<field name="icon" groups="base.group_no_one"/>
|
|
<field name="triggered_next_type_id" optional="hide"
|
|
string="Triggered Next"/>
|
|
<field name="suggested_next_type_ids" optional="hide" widget="many2many_tags"
|
|
string="Suggested Next"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_type_view_kanban" model="ir.ui.view" >
|
|
<field name="name">mail.activity.type.view.kanban</field>
|
|
<field name="model">mail.activity.type</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile">
|
|
<field name="icon"/>
|
|
<templates>
|
|
<t t-name="card">
|
|
<div class="fw-bold fs-5">
|
|
<i t-if="record.icon.value" t-attf-class="fa #{record.icon.value} fa-fw"
|
|
role="img" aria-label="Activity Type Name" title="Activity Type Name"/>
|
|
<field name="name"/>
|
|
</div>
|
|
<field t-if="record.res_model.value" name="res_model"/>
|
|
<div t-if="record.summary.raw_value">
|
|
Default Summary: <field name="summary"/>
|
|
</div>
|
|
<footer>
|
|
<field class="ms-auto" name="default_user_id"
|
|
widget="many2one_avatar_user" readonly="1"/>
|
|
</footer>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_type_action" model="ir.actions.act_window">
|
|
<field name="name">Activity Types</field>
|
|
<field name="res_model">mail.activity.type</field>
|
|
<field name="view_mode">list,kanban,form</field>
|
|
</record>
|
|
|
|
|
|
<record id="mail_activity_action" model="ir.actions.act_window">
|
|
<field name="name">Activity Overview</field>
|
|
<field name="res_model">mail.activity</field>
|
|
<field name="view_mode">list,form</field>
|
|
<!-- ensure pagination works even if _search removes records after fetching -->
|
|
<field name="context">{
|
|
'force_search_count': 1,
|
|
}</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_form_popup" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.form.popup</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="priority">20</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Log an Activity" create="false">
|
|
<sheet string="Activity">
|
|
<div class="oe_button_box" name="button_box" invisible="1">
|
|
<button name="action_open_document"
|
|
type="object" class="oe_link" icon="fa-file-text-o"
|
|
invisible="not res_model or res_id == 0">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_text">Open Document</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<group invisible="1">
|
|
<field name="activity_category" invisible="1" />
|
|
<field name="res_model" invisible="1"/>
|
|
<field name="res_model_id" invisible="1"/>
|
|
<field name="res_id" invisible="1"/>
|
|
<field name="chaining_type" invisible="1"/>
|
|
<field name="previous_activity_type_id"/>
|
|
<field name="has_recommended_activities"/>
|
|
</group>
|
|
<group invisible="not has_recommended_activities">
|
|
<field name="recommended_activity_type_id" widget="selection_badge"
|
|
domain="[('previous_type_ids', '=', previous_activity_type_id)]"
|
|
string="Recommended Activities"/>
|
|
</group>
|
|
|
|
<group>
|
|
<field name="activity_type_id" required="1" widget="selection_badge_icons" iconField="icon" nolabel="1"/>
|
|
<field name="summary" placeholder="e.g. Discuss Proposal" class="fs-3 pb-2"/>
|
|
<group>
|
|
<field name="date_deadline"/>
|
|
</group>
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
</group>
|
|
<field name="note" class="oe-bordered-editor embedded-editor-height-4" placeholder="Log a note..." widget="html_mail"/>
|
|
<footer>
|
|
<field name="id" invisible="1"/>
|
|
<button id="mail_activity_schedule" string="Schedule" close="1" name="action_close_dialog" type="object" class="btn-primary"
|
|
invisible="id" data-hotkey="q"/>
|
|
<button id="mail_activity_save" string="Save" name="action_close_dialog" type="object" class="btn-primary"
|
|
invisible="not id" data-hotkey="q"/>
|
|
<button invisible="chaining_type == 'trigger'" string="Mark Done" name="action_done"
|
|
type="object" class="btn-secondary" data-hotkey="w"
|
|
context="{'mail_activity_quick_update': True}"/>
|
|
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="x" />
|
|
</footer>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_form" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.form</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="priority">21</field>
|
|
<field name="mode">primary</field>
|
|
<field name="inherit_id" ref="mail.mail_activity_view_form_popup"/>
|
|
<field name="arch" type="xml">
|
|
<field name="activity_type_id" position="before">
|
|
<field name="res_name" readonly="1" string="Document"/>
|
|
</field>
|
|
<footer position="replace"/>
|
|
<xpath expr="//div[hasclass('oe_button_box')]" position="attributes">
|
|
<attribute name="invisible">0</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_form_without_record_access" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.form.without.record.access</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="priority">32</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Log an Activity" create="false" delete="false">
|
|
<header>
|
|
<button string="Mark Done" class="btn-primary"
|
|
name="action_done_redirect_to_other" type="object"/>
|
|
</header>
|
|
<sheet string="Activity">
|
|
<field name="display_name" invisible="1"/>
|
|
<group>
|
|
<field name="activity_type_id" required="1"
|
|
widget="selection_badge_icons" iconField="icon" nolabel="1"/>
|
|
<field name="summary" placeholder="e.g. Discuss proposal"/>
|
|
<group>
|
|
<field name="date_deadline"/>
|
|
</group>
|
|
</group>
|
|
<field name="note" class="oe-bordered-editor embedded-editor-height-4" placeholder="Log a note..." widget="html_mail"/>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_search" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.search</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Activity">
|
|
<field name="res_name" string="Name" filter_domain="[
|
|
'|',
|
|
('res_name', 'ilike', self),
|
|
('summary', 'ilike', self),
|
|
]"/>
|
|
<field name="user_id"/>
|
|
<field name="activity_type_id"/>
|
|
<filter name="filter_user_id_uid" string="My Activities" domain="[('user_id', '=', uid)]"/>
|
|
<filter name="filter_user_id_no_user" string="Unassigned Activities" domain="[('user_id', '=', False)]"/>
|
|
<separator/>
|
|
<separator invisible="1"/>
|
|
<filter string="Overdue" name="filter_date_deadline_past"
|
|
domain="[('date_deadline', '<', 'today')]"
|
|
help="Show all records whose next activity date is past"/>
|
|
<filter string="Today" name="filter_date_deadline_today"
|
|
domain="[('date_deadline', '=', 'today')]"/>
|
|
<filter string="Tomorrow" name="filter_date_deadline_tomorrow"
|
|
help="Show all records whose next action date is tomorrow"
|
|
domain="[('date_deadline', '=', 'today +1d')]"/>
|
|
<filter string="This week" name="filter_date_deadline_week"
|
|
help="Show all records whose next action date is this week"
|
|
domain="[
|
|
('date_deadline', '>=', '=week_start'),
|
|
('date_deadline', '<', '=week_start +1w')
|
|
]"/>
|
|
<filter string="Future" name="filter_date_deadline_future"
|
|
domain="[('date_deadline', '>', 'today')
|
|
]"/>
|
|
<separator/>
|
|
<filter string="Done" name="filter_archived" domain="[('active', '=', False)]"/>
|
|
<separator />
|
|
<group>
|
|
<filter string="Deadline" name="date_deadline" context="{'group_by': 'date_deadline'}"/>
|
|
<filter string="Document Model" name="group_by_res_model_id" context="{'group_by': 'res_model_id'}"/>
|
|
<filter string="Assigned To" name="group_by_user_id" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Created By" name="createdby" context="{'group_by': 'create_uid'}"/>
|
|
<filter string="Activity Type" name="activittype" context="{'group_by': 'activity_type_id'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_tree" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.list</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="arch" type="xml">
|
|
<list string="Next Activities"
|
|
default_order="date_deadline" create="true">
|
|
<header>
|
|
<button name="action_done" type="object" string="Done" icon="fa-check"/>
|
|
<button name="action_cancel" type="object" string="Cancel" icon="fa-times"/>
|
|
<button name="action_reschedule_today" type="object" string="Today" icon="fa-arrow-down"/>
|
|
<button name="action_reschedule_tomorrow" type="object" string="Tomorrow" icon="fa-calendar-plus-o"/>
|
|
<button name="action_reschedule_nextweek" type="object" string="Next Week" icon="fa-calendar-o"/>
|
|
</header>
|
|
<field name="summary" string="Summary"/>
|
|
<field name="activity_type_id"/>
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
<field name="res_name" string="Linked to"/>
|
|
<field name="date_deadline" widget="remaining_days"/>
|
|
<field name="date_done" string="Done Date" optional="hide"/>
|
|
<field name="feedback" optional="hide"/>
|
|
<widget name="mail_activity_list_reschedule_dropdown"/>
|
|
<button name="action_done" type="object" string="Done" icon="fa-check" invisible="active == False"/>
|
|
<button name="unlink" type="object" string="Cancel" icon="fa-times" class="text-danger" invisible="active == False"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_tree_without_record_access" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.list.without.record.access</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="inherit_id" ref="mail_activity_view_tree"/>
|
|
<field name="mode">primary</field>
|
|
<field name="priority">32</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//list" position="attributes">
|
|
<attribute name="delete">0</attribute>
|
|
<attribute name="edit">0</attribute>
|
|
<attribute name="duplicate">0</attribute>
|
|
<attribute name="js_class">archive_disabled_activity_list</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_tree_open_target" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.list.open.target</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="inherit_id" ref="mail_activity_view_tree"/>
|
|
<field name="mode">primary</field>
|
|
<field name="priority">32</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//list" position="attributes">
|
|
<attribute name="action">action_open_document</attribute>
|
|
<attribute name="type">object</attribute>
|
|
<attribute name="js_class">archive_disabled_activity_list</attribute>
|
|
<attribute name="multi_edit">1</attribute>
|
|
</xpath>
|
|
<xpath expr="//list//field[@name='activity_type_id']" position="attributes">
|
|
<attribute name="domain">[('res_model', '=', False)]</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_kanban_open_target" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.kanban.open.target</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="arch" type="xml">
|
|
<kanban string="Activity" action="action_open_document" type="object" js_class="mail_activity_my_kanban">
|
|
<templates>
|
|
<field name="active" invisible="1"/>
|
|
<field name="icon" invisible="1"/>
|
|
<t t-name="card">
|
|
<div class="d-flex justify-content-between">
|
|
<span class="text-truncate" invisible="not res_name">
|
|
<field name="res_name" class="fw-bold" />
|
|
(<field class="text-muted" name="res_model_id" />)
|
|
</span>
|
|
<field name="summary" class="text-truncate" invisible="res_name"/>
|
|
<span class="badge rounded-pill text-bg-300">
|
|
<i t-if="record.icon" t-attf-class="fa {{record.icon.raw_value}} me-1"/>
|
|
<field name="activity_type_id"/>
|
|
</span>
|
|
</div>
|
|
<field class="text-truncate" name="summary" invisible="not res_name"/>
|
|
<footer class="align-items-center">
|
|
<field name="user_id" widget="many2one_avatar_user" />
|
|
<field name="date_deadline" widget="remaining_days" class="ms-2"/>
|
|
<button type="object" name="action_done" class="btn btn-link btn-sm ms-auto me-1" invisible="active == False">
|
|
<i class="fa fa-check" /> Done
|
|
</button>
|
|
<button type="object" name="unlink" class="btn btn-link text-danger btn-sm">
|
|
<i class="fa fa-times" /> Cancel
|
|
</button>
|
|
</footer>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
<record id="mail_activity_action_view_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">list</field>
|
|
<field name="act_window_id" ref="mail.mail_activity_action"/>
|
|
</record>
|
|
<record id="mail_activity_action_view_form" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="mail.mail_activity_view_form"/>
|
|
<field name="act_window_id" ref="mail.mail_activity_action"/>
|
|
</record>
|
|
|
|
<record id="mail_activity_without_access_action" model="ir.actions.act_window">
|
|
<field name="name">Other activities</field>
|
|
<field name="res_model">mail.activity</field>
|
|
<field name="view_mode">list,form</field>
|
|
<field name="search_view_id" ref="mail.mail_activity_view_search"/>
|
|
<field name="domain">['|', ('id', 'in', context.get('active_ids')), '&', ('res_model', '=', False), ('user_id', '=', uid)]</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No activities.
|
|
</p>
|
|
</field>
|
|
<field name="target">main</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_without_access_view_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence">1</field>
|
|
<field name="view_mode">list</field>
|
|
<field name="view_id" ref="mail.mail_activity_view_tree_without_record_access"/>
|
|
<field name="act_window_id" ref="mail.mail_activity_without_access_action"/>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_without_access_view_form" model="ir.actions.act_window.view">
|
|
<field name="sequence">2</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="mail.mail_activity_view_form_without_record_access"/>
|
|
<field name="act_window_id" ref="mail.mail_activity_without_access_action"/>
|
|
</record>
|
|
|
|
<record id="mail_activity_view_calendar" model="ir.ui.view">
|
|
<field name="name">mail.activity.view.calendar</field>
|
|
<field name="model">mail.activity</field>
|
|
<field name="priority" eval="2"/>
|
|
<field name="arch" type="xml">
|
|
<calendar string="Activity" date_start="date_deadline" color="activity_type_id" js_class="activity_calendar" create="0" mode="month">
|
|
<field name="user_id" avatar_field="avatar_128"/>
|
|
<field name="res_name" string="Name"/>
|
|
<field name="date_deadline"/>
|
|
<field name="summary"/>
|
|
<field name="activity_type_id" filters="1" invisible="1"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_my" model="ir.actions.act_window">
|
|
<field name="name">My Activities</field>
|
|
<field name="res_model">mail.activity</field>
|
|
<field name="view_mode">list,kanban,calendar</field>
|
|
<field name="search_view_id" ref="mail.mail_activity_view_search"/>
|
|
<!-- ensure pagination works even if _search removes records after fetching -->
|
|
<field name="context">{
|
|
'force_search_count': 1,
|
|
'search_default_filter_user_id_uid': 1,
|
|
'search_default_filter_date_deadline_past': 1,
|
|
'search_default_filter_date_deadline_today': 1,
|
|
}</field>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_my_view_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">list</field>
|
|
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
|
<field name="view_id" ref="mail.mail_activity_view_tree_open_target"/>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_my_view_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
|
<field name="view_id" ref="mail.mail_activity_view_kanban_open_target"/>
|
|
</record>
|
|
|
|
<record id="mail_activity_action_my_view_calendar" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">calendar</field>
|
|
<field name="act_window_id" ref="mail.mail_activity_action_my"/>
|
|
<field name="view_id" ref="mail.mail_activity_view_calendar"/>
|
|
</record>
|
|
|
|
</odoo>
|