diff --git a/addons/website_sale_slides/__manifest__.py b/addons/website_sale_slides/__manifest__.py
index 91fcb574d36..caafbefba60 100644
--- a/addons/website_sale_slides/__manifest__.py
+++ b/addons/website_sale_slides/__manifest__.py
@@ -10,7 +10,9 @@
'depends': ['website_slides', 'website_sale'],
'installable': True,
'data': [
+ 'report/sale_report_views.xml',
'views/assets.xml',
+ 'views/website_slides_menu_views.xml',
'views/slide_channel_views.xml',
'views/website_slides_templates.xml',
],
diff --git a/addons/website_sale_slides/models/__init__.py b/addons/website_sale_slides/models/__init__.py
index 715f352d147..a7ae607df42 100644
--- a/addons/website_sale_slides/models/__init__.py
+++ b/addons/website_sale_slides/models/__init__.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from . import product_product
from . import slide_channel
from . import sale_order
diff --git a/addons/website_sale_slides/models/product_product.py b/addons/website_sale_slides/models/product_product.py
new file mode 100644
index 00000000000..94fc0c6e82b
--- /dev/null
+++ b/addons/website_sale_slides/models/product_product.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class Product(models.Model):
+ _inherit = "product.product"
+
+ channel_ids = fields.One2many('slide.channel', 'product_id', string='Courses')
diff --git a/addons/website_sale_slides/models/slide_channel.py b/addons/website_sale_slides/models/slide_channel.py
index 4acdb2e1ba6..88920f58e55 100644
--- a/addons/website_sale_slides/models/slide_channel.py
+++ b/addons/website_sale_slides/models/slide_channel.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import models, fields
+from odoo import api, fields, models
class Channel(models.Model):
@@ -9,11 +9,32 @@ class Channel(models.Model):
enroll = fields.Selection(selection_add=[('payment', 'On payment')])
product_id = fields.Many2one('product.product', 'Product', index=True)
+ product_sale_revenues = fields.Float(
+ string='Total revenues', compute='_compute_product_sale_revenues',
+ groups="sales_team.group_sale_salesman")
_sql_constraints = [
('product_id_check', "CHECK( enroll!='payment' OR product_id IS NOT NULL )", "Product is required for on payment channels.")
]
+ @api.depends('product_id')
+ def _compute_product_sale_revenues(self):
+ domain = [
+ ('state', 'in', self.env['sale.report']._get_done_states()),
+ ('product_id', 'in', self.product_id.ids),
+ ]
+ rg_data = dict(
+ (item['product_id'][0], item['price_total'])
+ for item in self.env['sale.report'].read_group(domain, ['product_id', 'price_total'], ['product_id'])
+ )
+ for channel in self:
+ channel.product_sale_revenues = rg_data.get(channel.product_id.id, 0)
+
+ def action_view_sales(self):
+ action = self.env.ref('website_sale_slides.sale_report_action_slides').read()[0]
+ action['domain'] = [('product_id', 'in', self.product_id.ids)]
+ return action
+
def _filter_add_members(self, target_partners, **member_values):
""" Overridden to add 'payment' channels to the filtered channels. People
that can write on payment-based channels can add members. """
diff --git a/addons/website_sale_slides/report/sale_report_views.xml b/addons/website_sale_slides/report/sale_report_views.xml
new file mode 100644
index 00000000000..14d3bebd3c8
--- /dev/null
+++ b/addons/website_sale_slides/report/sale_report_views.xml
@@ -0,0 +1,23 @@
+
+