19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:32:12 +01:00
parent 79f83631d5
commit 73afc09215
6267 changed files with 1534193 additions and 1130106 deletions

View file

@ -26,13 +26,13 @@
</record>
<record id="sales_team_crm_tag_view_tree" model="ir.ui.view">
<field name="name">sales.team.crm.tag.view.tree</field>
<field name="name">sales.team.crm.tag.view.list</field>
<field name="model">crm.tag</field>
<field name="arch" type="xml">
<tree string="Tags" editable="bottom" sample="1">
<list string="Tags" editable="bottom" sample="1">
<field name="name"/>
<field name="color" widget="color_picker" />
</tree>
</list>
</field>
</record>

View file

@ -10,7 +10,7 @@
<field name="crm_team_id"/>
<separator/>
<filter name="archived" string="Archived" domain="[('active', '=', False)]"/>
<group expand="0" string="Group By">
<group>
<filter string="Sales Team" name="groupby_crm_team_id" context="{'group_by': 'crm_team_id'}"/>
</group>
</search>
@ -18,18 +18,18 @@
</record>
<record id="crm_team_member_view_tree" model="ir.ui.view">
<field name="name">crm.team.member.view.tree</field>
<field name="name">crm.team.member.view.list</field>
<field name="model">crm.team.member</field>
<field name="arch" type="xml">
<tree string="Sales Men" sample="1">
<list string="Sales Men" sample="1">
<field name="crm_team_id"/>
<field name="user_id"/>
</tree>
</list>
</field>
</record>
<record id="crm_team_member_view_tree_from_team" model="ir.ui.view">
<field name="name">crm.team.member.view.tree.from.team</field>
<field name="name">crm.team.member.view.list.from.team</field>
<field name="model">crm.team.member</field>
<field name="inherit_id" ref="sales_team.crm_team_member_view_tree"/>
<field name="mode">primary</field>
@ -50,27 +50,20 @@
sample="1"
default_group_by="crm_team_id"
class="o_crm_team_member_kanban">
<field name="user_id"/>
<field name="active"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
<div class="ribbon ribbon-top-right" attrs="{'invisible': [('active', '=', True)]}">
<span class="bg-odoo">Archived</span>
<t t-name="card" class="flex-row mb-3">
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<aside>
<field name="user_id" widget="image" options="{'preview_image': 'avatar_128'}" class="o_image_64_cover" alt="Avatar"/>
</aside>
<main class="ms-3">
<field name="user_id" class="fw-bold fs-5"/>
<a type="open" class="nav-link p-0"><field name="crm_team_id"/></a>
<div class="d-flex align-items-baseline text-break">
<i class="fa fa-envelope me-1" role="img" aria-label="Email" title="Email"/><field name="email"/>
</div>
<div class="o_kanban_card_content d-flex">
<div>
<img t-att-src="kanban_image('res.users', 'avatar_128', record.user_id.raw_value)" class="o_kanban_image o_image_64_cover" alt="Avatar"/>
</div>
<div class="oe_kanban_details d-flex flex-column ms-3">
<strong class="o_kanban_record_title oe_partner_heading"><field name="user_id"/></strong>
<a type="open" class="nav-link p-0"><field name="crm_team_id"/></a>
<div class="d-flex align-items-baseline text-break">
<i class="fa fa-envelope me-1" role="img" aria-label="Email" title="Email"/><field name="email"/>
</div>
</div>
</div>
</div>
</main>
</t>
</templates>
</kanban>
@ -93,7 +86,7 @@
<field name="name">crm.team.member.view.form</field>
<field name="model">crm.team.member</field>
<field name="arch" type="xml">
<form string="Sales Men">
<form string="Sales Men" js_class="crm_team_form">
<field name="active" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="is_membership_multi" invisible="1"/>
@ -101,38 +94,43 @@
<field name="user_in_teams_ids" invisible="1"/>
<field name="user_company_ids" invisible="1"/>
<sheet>
<div class="alert alert-info text-center" role="alert"
attrs="{'invisible': [('member_warning', '=', False)]}">
<field name="member_warning"/>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="image_1920" widget='image' class="oe_avatar"
attrs="{'invisible': [('user_id', '=', False)]}"
options='{"preview_image": "image_128"}'/>
<div class="oe_title">
<label for="user_id" class="oe_edit_only"/>
<h1 class="d-flex">
<field name="user_id" class="flex-grow-1"
options="{'no_quick_create': True}"/>
</h1>
<div class="alert alert-info text-center d-flex flex-wrap justify-content-center gap-1" role="alert"
invisible="not member_warning">
<field name="member_warning" class="w-auto"/>
Working in multiple teams?
<button name="crm_team_activate_multi_membership" type="button" class="btn btn-link p-0 lh-1">
Activate "Multi-team"
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<field name="image_1920" widget='image' class="float-start pe-3"
invisible="not user_id" nolabel="1"
options='{"preview_image": "image_128", "size": [130,130], "img_class": "rounded border"}'/>
<h1 class="d-flex">
<field name="user_id" class="flex-grow-1" placeholder="e.g. John Doe"
options="{'no_quick_create': True}"/>
</h1>
<group name="crm_team_id">
<field id="crm_team_id" name="crm_team_id" context="{'kanban_view_ref': 'sales_team.crm_team_view_kanban'}"/>
</group>
<group name="member_partner_info">
<group name="group_owner">
<field name="crm_team_id" kanban_view_ref="%(sales_team.crm_team_view_kanban)s"/>
</group>
<group name="group_user">
<field name="company_id" attrs="{'invisible': [('user_id', '=', False)]}"
groups="base.group_multi_company"/>
<field name="email" attrs="{'invisible': [('user_id', '=', False)]}"/>
<field name="mobile" attrs="{'invisible': [('user_id', '=', False)]}"/>
<field name="phone" attrs="{'invisible': [('user_id', '=', False)]}"/>
</group>
<div class="d-flex flex-column flex-grow-1">
<div colspan="2" class="d-flex align-items-baseline" invisible="not user_id">
<i class="fa fa-fw me-1 fa-envelope text-primary" title="Email"/>
<field name="email" nolabel="1"/>
</div>
<div colspan="2" class="d-flex align-items-baseline" invisible="not user_id">
<i class="fa fa-fw me-1 fa-phone text-primary" title="Phone"/>
<field name="phone" nolabel="1"/>
</div>
<div colspan="2" class="d-flex align-items-baseline" invisible="not user_id" groups="base.group_multi_company">
<i class="fa fa-fw me-1 fa-building text-primary" title="Company"/>
<field name="company_id"/>
</div>
</div>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
<chatter/>
</form>
</field>
</record>
@ -144,14 +142,18 @@
<field name="mode">primary</field>
<field name="priority">32</field>
<field name="arch" type="xml">
<xpath expr="//group[@name='group_owner']" position="replace"/>
<!-- <xpath expr="//div[@name='crm_team_id']" position="replace"/> -->
<xpath expr="//group[@name='crm_team_id']" position="replace"/>
<xpath expr="//group[@name='member_partner_info']/div" position="attributes">
<attribute name="class">px-0</attribute>
</xpath>
</field>
</record>
<record id="crm_team_member_action" model="ir.actions.act_window">
<field name="name">Team Members</field>
<field name="res_model">crm.team.member</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_mode">kanban,list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new salesman

View file

@ -10,7 +10,8 @@
<field name="name"/>
<field name="user_id"/>
<field name="member_ids"/>
<group expand="0" string="Group By...">
<group>
<filter string="Company" name="company" domain="[]" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
<filter string="Team Leader" name="team_leader" domain="[]" context="{'group_by': 'user_id'}"/>
</group>
</search>
@ -21,20 +22,24 @@
<field name="name">crm.team.form</field>
<field name="model">crm.team</field>
<field name="arch" type="xml">
<form string="Sales Team">
<div class="alert alert-info text-center" role="alert"
attrs="{'invisible': ['|', ('is_membership_multi', '=', True), ('member_warning', '=', False)]}">
<field name="member_warning"/>
<form string="Sales Team" js_class="crm_team_form" class="o_crm_team_form_view">
<div class="alert alert-info text-center d-flex flex-wrap justify-content-center gap-1" role="alert"
invisible="is_membership_multi or not member_warning">
<field name="member_warning" class="w-auto"/>
Working in multiple teams?
<button name="crm_team_activate_multi_membership" type="button" class="btn btn-link p-0 lh-1">
Activate "Multi-team"
</button>
</div>
<sheet>
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<div class="oe_title">
<label for="name" string="Sales Team"/>
<h1>
<field class="text-break" name="name" placeholder="e.g. North America"/>
</h1>
<div name="options_active"/>
<div name="options_active" class="o_row"/>
</div>
<group>
<group name="left" string="Team Details">
@ -42,7 +47,7 @@
<field name="sequence" invisible="1"/>
<field name="is_membership_multi" invisible="1"/>
<field name="user_id" widget="many2one_avatar_user" domain="[('share', '=', False)]"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company" placeholder="Visible to all"/>
<field name="currency_id" invisible="1"/>
<field name="member_company_ids" invisible="1"/>
</group>
@ -54,63 +59,50 @@
<field name="member_ids" mode="kanban"
class="w-100">
<kanban>
<field name="id"/>
<field name="name"/>
<field name="email"/>
<field name="avatar_128"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
<div class="o_kanban_card_content d-flex">
<div>
<img t-att-src="kanban_image('res.users', 'avatar_128', record.id.raw_value)"
class="o_kanban_image o_image_64_cover" alt="Avatar"/>
</div>
<div class="oe_kanban_details d-flex flex-column ms-3">
<strong class="o_kanban_record_title oe_partner_heading"><field name="name"/></strong>
<div class="d-flex align-items-baseline text-break">
<i class="fa fa-envelope me-1" role="img" aria-label="Email" title="Email"/><field name="email"/>
</div>
</div>
<t t-name="card" class="flex-row">
<aside>
<field name="avatar_128" widget="image" class="o_image_64_cover" alt="Avatar"/>
</aside>
<main class="ms-3">
<field name="name" class="fw-bold fs-5"/>
<div class="d-flex align-items-baseline text-break">
<i class="fa fa-envelope me-1" role="img" aria-label="Email" title="Email"/><field name="email"/>
</div>
</div>
</main>
</t>
</templates>
</kanban>
</field>
<field name="crm_team_member_ids" mode="kanban"
class="w-100"
attrs="{'invisible': ['|', ('is_membership_multi', '=', True), ('is_membership_multi', '=', False)]}"
invisible="is_membership_multi or not is_membership_multi"
context="{
'kanban_view_ref': 'sales_team.crm_team_member_view_kanban_from_team',
'form_view_ref': 'sales_team.crm_team_member_view_form_from_team',
'tree_view_ref': 'sales_team.crm_team_member_view_tree_from_team',
'default_crm_team_id': active_id,
'list_view_ref': 'sales_team.crm_team_member_view_tree_from_team',
'default_crm_team_id': id,
}"/>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" help="Follow this salesteam to automatically track the events associated to users of this team."/>
<field name="message_ids"/>
</div>
<chatter/>
</form>
</field>
</record>
<!-- SALES TEAMS TREE VIEW + MUTI_EDIT -->
<!-- SALES TEAMS LIST VIEW + MUTI_EDIT -->
<record id="crm_team_view_tree" model="ir.ui.view">
<field name="name">crm.team.tree</field>
<field name="name">crm.team.list</field>
<field name="model">crm.team</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Sales Team" sample="1" multi_edit="1">
<list string="Sales Team" sample="1" multi_edit="1">
<field name="sequence" widget="handle"/>
<field name="name" readonly="1"/>
<field name="active" invisible="1"/>
<field name="active" column_invisible="True"/>
<field name="user_id" domain="[('share', '=', False)]" widget="many2one_avatar_user"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</list>
</field>
</record>
@ -120,16 +112,10 @@
<field name="arch" type="xml">
<kanban class="o_kanban_mobile" sample="1">
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_content oe_kanban_global_click">
<div class="row">
<div class="col-6">
<strong><field name="name"/></strong>
</div>
<div class="col-6">
<span class="float-end"><field name="user_id"/></span>
</div>
</div>
<t t-name="card" class="row g-0">
<field name="name" class="col-6 fw-bold"/>
<div class="col-6">
<field name="user_id" class="float-end"/>
</div>
</t>
</templates>
@ -143,74 +129,46 @@
<field name="model">crm.team</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_crm_team_kanban" create="0" sample="1">
<field name="name"/>
<field name="user_id"/>
<field name="member_ids"/>
<field name="color"/>
<field name="currency_id"/>
<field name="is_favorite"/>
<kanban class="o_crm_team_kanban" highlight_color="color" create="0" can_open="0" action="action_primary_channel_button" type="object" sample="1">
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''}">
<div t-attf-class="o_kanban_card_header">
<div class="o_kanban_card_header_title">
<div class="o_primary o_text_overflow"><field name="name"/></div>
<t t-name="menu">
<div class="container">
<div class="row">
<div name="manage_view" class="col-4">
<h5 role="menuitem" class=" o_kanban_card_manage_title">
<span>View</span>
</h5>
</div>
<div class="o_kanban_manage_button_section">
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
<div name="manage_new" class="col-4">
<h5 role="menuitem" class="o_kanban_card_manage_title">
<span>New</span>
</h5>
</div>
<div name="manage_reports" class="col-4">
<h5 role="menuitem" class="o_kanban_card_manage_title">
<span>Reporting</span>
</h5>
<div name="o_team_kanban_report_separator"></div>
</div>
</div>
<div class="container o_kanban_card_content">
<div class="row o_kanban_card_upper_content">
<div class="col-4 o_kanban_primary_left" name="to_replace_in_sale_crm">
<button type="object" class="btn btn-primary" name="action_primary_channel_button"><field name="dashboard_button_name"/></button>
</div>
<div class="col-8 o_kanban_primary_right" style="padding-bottom:0;">
<t name="first_options"/>
<t name="second_options"/>
<t name="third_options"/>
</div>
</div>
<div class="row">
<div class="col-12 o_kanban_primary_bottom">
<t t-call="SalesTeamDashboardGraph"/>
</div>
</div>
</div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
<div class="row">
<div class="col-4 o_kanban_card_manage_section o_kanban_manage_view">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>View</span>
</div>
</div>
<div class="col-4 o_kanban_card_manage_section o_kanban_manage_new">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>New</span>
</div>
</div>
<div class="col-4 o_kanban_card_manage_section o_kanban_manage_reports">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>Reporting</span>
</div>
<div name="o_team_kanban_report_separator"></div>
</div>
</div>
<div t-if="widget.editable" class="o_kanban_card_manage_settings row" groups="sales_team.group_sale_manager">
<div role="menuitem" aria-haspopup="true" class="col-8">
<ul class="oe_kanban_colorpicker" data-field="color" role="menu"/>
</div>
<div role="menuitem" class="col-4">
<a class="dropdown-item" type="edit">Configuration</a>
</div>
<div t-if="widget.editable" class="o_kanban_card_manage_settings row" groups="sales_team.group_sale_manager">
<div role="menuitem" aria-haspopup="true" class="col-8">
<field name="color" widget="kanban_color_picker"/>
</div>
<div role="menuitem" class="col-4">
<a class="dropdown-item" type="open">Configuration</a>
</div>
</div>
</div>
</t>
<t t-name="SalesTeamDashboardGraph">
<div t-if="record.dashboard_graph_data.raw_value" class="o_sales_team_kanban_graph_section">
<field name="dashboard_graph_data" widget="dashboard_graph" t-att-graph_type="'bar'"/>
<t t-name="card" class="flex-column justify-content-between">
<div class="ms-2 me-3">
<field name="name" class="fw-bold fs-2"/>
</div>
<div class="crm_team_kanban_bottom d-flex align-items-center mt-5">
<field name="company_id" invisible="1"/>
<field name="user_id" widget="many2one_avatar_user" class="ms-auto"/>
</div>
</t>
</templates>
@ -252,7 +210,7 @@
<record id="crm_team_action_config" model="ir.actions.act_window">
<field name="name">Sales Teams</field>
<field name="res_model">crm.team</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">

View file

@ -3,7 +3,7 @@
<record id="mail_activity_type_action_config_sales" model="ir.actions.act_window">
<field name="name">Activity Types</field>
<field name="res_model">mail.activity.type</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,kanban,form</field>
<field name="domain">['|', ('res_model', '=', False), ('res_model', '=', 'res.partner')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">

View file

@ -1,17 +0,0 @@
<?xml version="1.0"?>
<odoo>
<record id="res_partner_view_team" model="ir.ui.view">
<field name="name">res.partner.view.team</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']//field[@name='user_id']" position="after">
<field name="team_id" invisible="1"/>
<field name="team_id" groups="base.group_no_one" kanban_view_ref="%(sales_team.crm_team_view_kanban)s"/>
</xpath>
<field name="parent_id" position="attributes">
<attribute name="context">{'default_is_company': True, 'show_vat': True, 'default_user_id': user_id, 'default_team_id': team_id}</attribute>
</field>
</field>
</record>
</odoo>