diff --git a/addons/sales_team/views/sales_team_dashboard.xml b/addons/sales_team/views/sales_team_dashboard.xml
index 6d9dcb28454..c940e235073 100644
--- a/addons/sales_team/views/sales_team_dashboard.xml
+++ b/addons/sales_team/views/sales_team_dashboard.xml
@@ -9,7 +9,6 @@
-
@@ -25,10 +24,10 @@
-
+
diff --git a/addons/website_crm/models/crm_lead.py b/addons/website_crm/models/crm_lead.py
index b680e8599fc..f3b739101da 100644
--- a/addons/website_crm/models/crm_lead.py
+++ b/addons/website_crm/models/crm_lead.py
@@ -22,10 +22,9 @@ class Website(models.Model):
_inherit = 'website'
def _get_crm_default_team_domain(self):
- if self.env.user.has_group('crm.group_use_lead'):
- return [('use_leads', '=', True)]
- else:
+ if not self.env.user.has_group('crm.group_use_lead'):
return [('use_opportunities', '=', True)]
+ return []
crm_default_team_id = fields.Many2one(
'crm.team', string='Default Sales Teams',
diff --git a/addons/website_crm/models/res_config_settings.py b/addons/website_crm/models/res_config_settings.py
index f9b3f1c2c33..11cd082db8c 100644
--- a/addons/website_crm/models/res_config_settings.py
+++ b/addons/website_crm/models/res_config_settings.py
@@ -7,10 +7,9 @@ class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
def _get_crm_default_team_domain(self):
- if self.env.user.has_group('crm.group_use_lead'):
- return [('use_leads', '=', True)]
- else:
+ if not self.env.user.has_group('crm.group_use_lead'):
return [('use_opportunities', '=', True)]
+ return []
crm_default_team_id = fields.Many2one(
'crm.team', string='Default Sales Team', related='website_id.crm_default_team_id', readonly=False,
diff --git a/addons/website_crm_partner_assign/tests/test_partner_assign.py b/addons/website_crm_partner_assign/tests/test_partner_assign.py
index 52ddbe427e1..dde78e0d410 100644
--- a/addons/website_crm_partner_assign/tests/test_partner_assign.py
+++ b/addons/website_crm_partner_assign/tests/test_partner_assign.py
@@ -105,8 +105,6 @@ class TestPartnerLeadPortal(TestCrmCases):
# Sales Team of crm_salesman
self.team = self.env['crm.team'].with_context(mail_notrack=True).create({
'name': 'Test Team FOR THE WIN',
- 'use_leads': True,
- 'use_opportunities': True,
'member_ids': [(6, 0, [self.crm_salesman.id])],
})
diff --git a/addons/website_sale/controllers/backend.py b/addons/website_sale/controllers/backend.py
index ea828d289fc..deaf5e9786e 100644
--- a/addons/website_sale/controllers/backend.py
+++ b/addons/website_sale/controllers/backend.py
@@ -43,7 +43,6 @@ class WebsiteSaleBackend(WebsiteBackend):
report_product_lines = request.env['sale.report'].read_group(
domain=[
('website_id', '=', current_website.id),
- ('team_id.team_type', '=', 'website'),
('state', 'in', ['sale', 'done']),
('confirmation_date', '>=', date_from),
('confirmation_date', '<=', fields.Datetime.now())],
@@ -61,7 +60,7 @@ class WebsiteSaleBackend(WebsiteBackend):
# Sale-based results computation
sale_order_domain = [
('website_id', '=', current_website.id),
- ('team_id', 'in', request.env['crm.team'].search([('team_type', '=', 'website')]).ids),
+ ('team_id', 'in', request.env['crm.team'].search([('website_ids', '!=', False)]).ids),
('date_order', '>=', fields.Datetime.to_string(datetime_from)),
('date_order', '<=', fields.Datetime.to_string(datetime_to))]
so_group_data = request.env['sale.order'].read_group(sale_order_domain, fields=['state'], groupby='state')
@@ -75,7 +74,6 @@ class WebsiteSaleBackend(WebsiteBackend):
report_price_lines = request.env['sale.report'].read_group(
domain=[
('website_id', '=', current_website.id),
- ('team_id.team_type', '=', 'website'),
('state', 'in', ['sale', 'done']),
('date', '>=', date_from),
('date', '<=', date_to)],
@@ -116,7 +114,6 @@ class WebsiteSaleBackend(WebsiteBackend):
sales_domain = [
('website_id', '=', current_website.id),
- ('team_id.team_type', '=', 'website'),
('state', 'in', ['sale', 'done']),
('confirmation_date', '>=', date_from),
('confirmation_date', '<=', fields.Datetime.now())
@@ -132,7 +129,6 @@ class WebsiteSaleBackend(WebsiteBackend):
return results
def _compute_sale_graph(self, date_from, date_to, sales_domain, previous=False):
-
days_between = (date_to - date_from).days
date_list = [(date_from + timedelta(days=x)) for x in range(0, days_between + 1)]
diff --git a/addons/website_sale/data/data.xml b/addons/website_sale/data/data.xml
index 81639c17cd0..4c56e978edb 100644
--- a/addons/website_sale/data/data.xml
+++ b/addons/website_sale/data/data.xml
@@ -27,11 +27,8 @@
oe_image_full
-
+
- sale.report
- week
-
diff --git a/addons/website_sale/models/crm_team.py b/addons/website_sale/models/crm_team.py
index 85206db7b3a..ca6429c9e20 100644
--- a/addons/website_sale/models/crm_team.py
+++ b/addons/website_sale/models/crm_team.py
@@ -4,7 +4,8 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
-from odoo import fields, models, _
+from odoo import fields,api, models, _
+from odoo.exceptions import UserError, ValidationError
class CrmTeam(models.Model):
@@ -22,7 +23,7 @@ class CrmTeam(models.Model):
# abandoned carts to recover are draft sales orders that have no order lines,
# a partner other than the public user, and created over an hour ago
# and the recovery mail was not yet sent
- website_teams = self.filtered(lambda team: team.team_type == 'website')
+ website_teams = self.filtered(lambda team: team.website_ids)
if website_teams:
abandoned_carts_data = self.env['sale.order'].read_group([
('is_abandoned_cart', '=', True),
@@ -34,11 +35,6 @@ class CrmTeam(models.Model):
team.abandoned_carts_count = counts.get(team.id, 0)
team.abandoned_carts_amount = amounts.get(team.id, 0)
- def _compute_dashboard_button_name(self):
- website_teams = self.filtered(lambda team: team.team_type == 'website' and not team.use_quotations)
- website_teams.update({'dashboard_button_name': _("Online Sales")})
- super(CrmTeam, self - website_teams)._compute_dashboard_button_name()
-
def get_abandoned_carts(self):
self.ensure_one()
return {
diff --git a/addons/website_sale/models/digest.py b/addons/website_sale/models/digest.py
index 70ae0b9bfb4..aed881ce5fb 100644
--- a/addons/website_sale/models/digest.py
+++ b/addons/website_sale/models/digest.py
@@ -20,7 +20,7 @@ class Digest(models.Model):
('confirmation_date', '>=', start),
('confirmation_date', '<', end),
('state', 'not in', ['draft', 'cancel', 'sent']),
- ('team_id.team_type', '=', 'website'),
+ ('website_id', '!=', False),
('company_id', '=', company.id)
])
record.kpi_website_sale_total_value = sum(confirmed_website_sales.mapped('amount_total'))
diff --git a/addons/website_sale/models/res_config_settings.py b/addons/website_sale/models/res_config_settings.py
index a3613339aed..2322645b4e1 100644
--- a/addons/website_sale/models/res_config_settings.py
+++ b/addons/website_sale/models/res_config_settings.py
@@ -16,7 +16,7 @@ class ResConfigSettings(models.TransientModel):
return False
salesperson_id = fields.Many2one('res.users', related='website_id.salesperson_id', string='Salesperson', readonly=False)
- salesteam_id = fields.Many2one('crm.team', related='website_id.salesteam_id', string='Sales Team', domain=[('team_type', '!=', 'pos')], readonly=False)
+ salesteam_id = fields.Many2one('crm.team', related='website_id.salesteam_id', string='Sales Team', readonly=False)
module_website_sale_delivery = fields.Boolean("eCommerce Shipping Costs")
# field used to have a nice radio in form view, resuming the 2 fields above
sale_delivery_settings = fields.Selection([
diff --git a/addons/website_sale/models/res_partner.py b/addons/website_sale/models/res_partner.py
index 8c5119db323..8a9980240c7 100644
--- a/addons/website_sale/models/res_partner.py
+++ b/addons/website_sale/models/res_partner.py
@@ -19,7 +19,6 @@ class ResPartner(models.Model):
if request and hasattr(request, 'website') and not is_public:
partner.last_website_so_id = SaleOrder.search([
('partner_id', '=', partner.id),
- ('team_id.team_type', '=', 'website'),
('website_id', '=', request.website.id),
('state', '=', 'draft'),
], order='write_date desc', limit=1)
diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py
index 48173deecd2..dba1a992d58 100644
--- a/addons/website_sale/models/sale_order.py
+++ b/addons/website_sale/models/sale_order.py
@@ -41,12 +41,12 @@ class SaleOrder(models.Model):
order.only_services = all(l.product_id.type in ('service', 'digital') for l in order.website_order_line)
@api.multi
- @api.depends('team_id.team_type', 'date_order', 'order_line', 'state', 'partner_id')
+ @api.depends('website_id', 'date_order', 'order_line', 'state', 'partner_id')
def _compute_abandoned_cart(self):
abandoned_delay = self.website_id and self.website_id.cart_abandoned_delay or 1.0
abandoned_datetime = datetime.utcnow() - relativedelta(hours=abandoned_delay)
for order in self:
- domain = order.date_order and order.date_order <= abandoned_datetime and order.team_id.team_type == 'website' and order.state == 'draft' and order.partner_id.id != self.env.ref('base.public_partner').id and order.order_line
+ domain = order.date_order and order.date_order <= abandoned_datetime and order.state == 'draft' and order.partner_id.id != self.env.ref('base.public_partner').id and order.order_line
order.is_abandoned_cart = bool(domain)
def _search_abandoned_cart(self, operator, value):
@@ -54,7 +54,7 @@ class SaleOrder(models.Model):
abandoned_datetime = fields.Datetime.to_string(datetime.utcnow() - relativedelta(hours=abandoned_delay))
abandoned_domain = expression.normalize_domain([
('date_order', '<=', abandoned_datetime),
- ('team_id.team_type', '=', 'website'),
+ ('website_id', '!=', False),
('state', '=', 'draft'),
('partner_id', '!=', self.env.ref('base.public_partner').id),
('order_line', '!=', False)
diff --git a/addons/website_sale/models/website.py b/addons/website_sale/models/website.py
index 50a8ab084ff..e848067f1b2 100644
--- a/addons/website_sale/models/website.py
+++ b/addons/website_sale/models/website.py
@@ -16,7 +16,17 @@ class Website(models.Model):
pricelist_id = fields.Many2one('product.pricelist', compute='_compute_pricelist_id', string='Default Pricelist')
currency_id = fields.Many2one('res.currency', related='pricelist_id.currency_id', related_sudo=False, string='Default Currency', readonly=False)
salesperson_id = fields.Many2one('res.users', string='Salesperson')
- salesteam_id = fields.Many2one('crm.team', string='Sales Team')
+
+ def _get_default_website_team(self):
+ try:
+ team = self.env.ref('sales_team.salesteam_website_sales')
+ return team if team.active else None
+ except ValueError:
+ return None
+
+ salesteam_id = fields.Many2one('crm.team',
+ string='Sales Team',
+ default=_get_default_website_team)
pricelist_ids = fields.One2many('product.pricelist', compute="_compute_pricelist_ids",
string='Price list available for this Ecommerce/Website')
diff --git a/addons/website_sale/views/crm_team_views.xml b/addons/website_sale/views/crm_team_views.xml
index dda9efe8c3e..f3070f10c92 100644
--- a/addons/website_sale/views/crm_team_views.xml
+++ b/addons/website_sale/views/crm_team_views.xml
@@ -7,11 +7,8 @@
-
-
-
-
+
diff --git a/addons/website_sale/views/res_config_settings_views.xml b/addons/website_sale/views/res_config_settings_views.xml
index 04410eb05d0..6a2daeee7da 100644
--- a/addons/website_sale/views/res_config_settings_views.xml
+++ b/addons/website_sale/views/res_config_settings_views.xml
@@ -288,7 +288,7 @@
-
+
diff --git a/addons/website_sale/views/sale_order_views.xml b/addons/website_sale/views/sale_order_views.xml
index 689cf888131..07ee626c17d 100644
--- a/addons/website_sale/views/sale_order_views.xml
+++ b/addons/website_sale/views/sale_order_views.xml
@@ -8,12 +8,12 @@
-
+
-
+
@@ -72,7 +72,7 @@
Unpaid Orders
sale.order
tree,form,kanban,activity
-
[('state', '=', 'sent'), ('team_id.team_type', '=', 'website')]
+
[('state', '=', 'sent'), ('website_id', '!=', False)]
{'show_sale': True, 'create': False}
@@ -119,7 +119,7 @@
Orders To Invoice
sale.order
tree,form,kanban
- [('state', 'in', ('sale', 'done')), ('invoice_status', '=', 'to invoice'), ('team_id.team_type', '=', 'website')]
+ [('state', 'in', ('sale', 'done')), ('invoice_status', '=', 'to invoice'), ('website_id', '!=', False)]
{'show_sale': True, 'search_default_order_confirmed': 1, 'create': False}
@@ -147,7 +147,7 @@
sale.order
tree,kanban,form,activity
form
- [('state', '=', 'sent'), ('team_id.team_type', '=', 'website')]
+ [('state', '=', 'sent'), ('website_id', '!=', False)]
@@ -165,7 +165,7 @@
sale.order
form
tree,kanban,form,activity
- [('state', '=', 'draft'), ('order_line', '!=', False), ('partner_id', '!=', context.get('public_partner_id')), ('team_id.team_type', '=', 'website'), ('date_order', '<=', (datetime.datetime.utcnow() - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S'))]
+ [('state', '=', 'draft'), ('order_line', '!=', False), ('partner_id', '!=', context.get('public_partner_id')), ('website_id', '!=', False), ('date_order', '<=', (datetime.datetime.utcnow() - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S'))]
diff --git a/addons/website_sale/views/sale_report_views.xml b/addons/website_sale/views/sale_report_views.xml
index 3635577243e..c8876ed6416 100644
--- a/addons/website_sale/views/sale_report_views.xml
+++ b/addons/website_sale/views/sale_report_views.xml
@@ -54,7 +54,7 @@
Online Sales Analysis
sale.report
pivot,graph
- [('state','in',('sale', 'done')), ('team_id.team_type', '=', 'website')]
+ [('state','in',('sale', 'done')), ('website_id', '!=', False)]
@@ -81,7 +81,7 @@
Sales
sale.report
pivot,graph
- [('team_id.team_type', '=', 'website')]
+ [('website_id', '!=', False)]
diff --git a/addons/website_sale_link_tracker/controllers/backend.py b/addons/website_sale_link_tracker/controllers/backend.py
index f301d1c4a2b..79e3aa586f3 100644
--- a/addons/website_sale_link_tracker/controllers/backend.py
+++ b/addons/website_sale_link_tracker/controllers/backend.py
@@ -16,7 +16,7 @@ class WebsiteSaleLinkTrackerBackend(WebsiteSaleBackend):
def fetch_utm_data(self, date_from, date_to):
sale_utm_domain = [
- ('team_id.team_type', '=', 'website'),
+ ('website_id', '!=', False),
('state', 'in', ['sale', 'done']),
('confirmation_date', '>=', date_from),
('confirmation_date', '<=', date_to)