Initial commit: Sale packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:49 +02:00
commit 14e3d26998
6469 changed files with 2479670 additions and 0 deletions

View file

@ -0,0 +1,52 @@
<?xml version="1.0"?>
<odoo>
<!--
crm.tag views
-->
<record id="sales_team_crm_tag_view_form" model="ir.ui.view">
<field name="name">sales.team.crm.tag.view.form</field>
<field name="model">crm.tag</field>
<field name="arch" type="xml">
<form string="Tags">
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" placeholder="e.g. Services"/>
</h1>
</div>
<group>
<group>
<field name="color" required="True" widget="color_picker"/>
</group>
</group>
</sheet>
</form>
</field>
</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="model">crm.tag</field>
<field name="arch" type="xml">
<tree string="Tags" editable="bottom" sample="1">
<field name="name"/>
<field name="color" widget="color_picker" />
</tree>
</field>
</record>
<!-- Tags Configuration -->
<record id="sales_team_crm_tag_action" model="ir.actions.act_window">
<field name="name">Tags</field>
<field name="res_model">crm.tag</field>
<field name="view_id" ref="sales_team_crm_tag_view_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create CRM Tags
</p><p>
Use Tags to manage and track your Opportunities (product structure, sales type, ...)
</p>
</field>
</record>
</odoo>

View file

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data>
<record id="crm_team_member_view_search" model="ir.ui.view">
<field name="name">crm.team.member.view.search</field>
<field name="model">crm.team.member</field>
<field name="arch" type="xml">
<search string="Sales Person">
<field name="user_id"/>
<field name="crm_team_id"/>
<separator/>
<filter name="archived" string="Archived" domain="[('active', '=', False)]"/>
<group expand="0" string="Group By">
<filter string="Sales Team" name="groupby_crm_team_id" context="{'group_by': 'crm_team_id'}"/>
</group>
</search>
</field>
</record>
<record id="crm_team_member_view_tree" model="ir.ui.view">
<field name="name">crm.team.member.view.tree</field>
<field name="model">crm.team.member</field>
<field name="arch" type="xml">
<tree string="Sales Men" sample="1">
<field name="crm_team_id"/>
<field name="user_id"/>
</tree>
</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="model">crm.team.member</field>
<field name="inherit_id" ref="sales_team.crm_team_member_view_tree"/>
<field name="mode">primary</field>
<field name="priority">32</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='crm_team_id']" position="replace">
</xpath>
</field>
</record>
<record id="crm_team_member_view_kanban" model="ir.ui.view">
<field name="name">crm.team.member.view.kanban</field>
<field name="model">crm.team.member</field>
<field name="arch" type="xml">
<kanban quick_create="false"
group_create="0"
records_draggable="0"
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>
</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>
</t>
</templates>
</kanban>
</field>
</record>
<record id="crm_team_member_view_kanban_from_team" model="ir.ui.view">
<field name="name">crm.team.member.view.kanban.from.team</field>
<field name="model">crm.team.member</field>
<field name="inherit_id" ref="sales_team.crm_team_member_view_kanban"/>
<field name="mode">primary</field>
<field name="priority">32</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='crm_team_id']" position="replace">
</xpath>
</field>
</record>
<record id="crm_team_member_view_form" model="ir.ui.view">
<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">
<field name="active" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="is_membership_multi" invisible="1"/>
<field name="member_warning" invisible="1"/>
<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>
<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>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="crm_team_member_view_form_from_team" model="ir.ui.view">
<field name="name">crm.team.member.view.form.from.team</field>
<field name="model">crm.team.member</field>
<field name="inherit_id" ref="sales_team.crm_team_member_view_form"/>
<field name="mode">primary</field>
<field name="priority">32</field>
<field name="arch" type="xml">
<xpath expr="//group[@name='group_owner']" position="replace"/>
</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="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new salesman
</p><p>
Link salespersons to sales teams.
</p>
</field>
</record>
</data></odoo>

View file

@ -0,0 +1,267 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data>
<record id="crm_team_view_search" model="ir.ui.view">
<field name="name">crm.team.view.search</field>
<field name="model">crm.team</field>
<field name="arch" type="xml">
<search string="Salesteams Search">
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<field name="name"/>
<field name="user_id"/>
<field name="member_ids"/>
<group expand="0" string="Group By...">
<filter string="Team Leader" name="team_leader" domain="[]" context="{'group_by': 'user_id'}"/>
</group>
</search>
</field>
</record>
<record id="crm_team_view_form" model="ir.ui.view">
<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"/>
</div>
<sheet>
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<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>
<group>
<group name="left" string="Team Details">
<field name="active" invisible="1"/>
<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="currency_id" invisible="1"/>
<field name="member_company_ids" invisible="1"/>
</group>
<group name="right">
</group>
</group>
<notebook>
<page string="Members" name="members_users">
<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>
</div>
</div>
</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)]}"
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,
}"/>
</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>
</form>
</field>
</record>
<!-- SALES TEAMS TREE VIEW + MUTI_EDIT -->
<record id="crm_team_view_tree" model="ir.ui.view">
<field name="name">crm.team.tree</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">
<field name="sequence" widget="handle"/>
<field name="name" readonly="1"/>
<field name="active" invisible="1"/>
<field name="user_id" domain="[('share', '=', False)]" widget="many2one_avatar_user"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="crm_team_view_kanban" model="ir.ui.view">
<field name="name">crm.team.view.kanban</field>
<field name="model">crm.team</field>
<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>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Case Teams Salesteams dashboard view -->
<record id="crm_team_view_kanban_dashboard" model="ir.ui.view" >
<field name="name">crm.team.view.kanban.dashboard</field>
<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"/>
<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>
</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>
</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>
</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'"/>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Sales Teams Actions -->
<record id="crm_team_action_sales" model="ir.actions.act_window">
<field name="name">Sales Teams</field>
<field name="res_model">crm.team</field>
<field name="view_mode">kanban,form</field>
<field name="context">{'in_sales_app': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new sales team
</p><p>
Use Sales Teams to organize your sales departments.
Each team will work with a separate pipeline.
</p>
</field>
</record>
<record id="crm_team_action_pipeline" model="ir.actions.act_window">
<field name="name">Teams</field>
<field name="res_model">crm.team</field>
<field name="view_mode">kanban,form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new sales team
</p><p>
Use Sales Teams to organize your sales departments.
Each team will work with a separate pipeline.
</p>
</field>
</record>
<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="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a Sales Team
</p><p>
Use Sales Teams to organize your sales departments and draw up reports.
</p>
</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<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="domain">['|', ('res_model', '=', False), ('res_model', '=', 'res.partner')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create an Activity Type
</p><p>
Those represent the different categories of things you have to do (e.g. "Call" or "Prepare meeting").
</p>
</field>
</record>
</odoo>

View file

@ -0,0 +1,17 @@
<?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>