diff --git a/sales_product_performance_report/README.rst b/sales_product_performance_report/README.rst new file mode 100644 index 000000000..ba98a15ed --- /dev/null +++ b/sales_product_performance_report/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Sales And Products Performance Report +===================================== +Overall Performance Report of Sales and Products. + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +Developer: (V16) Ansil P V, + (V17) Sabeel B + +Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/sales_product_performance_report/__init__.py b/sales_product_performance_report/__init__.py new file mode 100644 index 000000000..edd4d10e5 --- /dev/null +++ b/sales_product_performance_report/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import models +from . import wizard diff --git a/sales_product_performance_report/__manifest__.py b/sales_product_performance_report/__manifest__.py new file mode 100644 index 000000000..acbcd43f7 --- /dev/null +++ b/sales_product_performance_report/__manifest__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': "Sales And Products Performance Report", + 'version': '17.0.1.0.0', + 'category': 'Sales, Accounting', + 'summary': 'Performance Report Summary of Sales and Products', + 'description': "The Overview of Sales and Products Performance Done by" + "Sales Team and Sales Person", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': [ + 'stock', + 'sale_management' + ], + 'data': [ + 'security/ir.model.access.csv', + 'views/product_template_views.xml', + 'views/res_users_views.xml', + 'views/sale_order_menu.xml', + 'wizard/product_performance_views.xml', + 'wizard/sales_performance_views.xml', + ], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/sales_product_performance_report/doc/RELEASE_NOTES.md b/sales_product_performance_report/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..e66511b0a --- /dev/null +++ b/sales_product_performance_report/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 24.06.2024 +#### Version 17.0.1.0.0 +#### ADD + +- Initial commit for Sales And Products Performance Report diff --git a/sales_product_performance_report/models/__init__.py b/sales_product_performance_report/models/__init__.py new file mode 100644 index 000000000..4ef15604b --- /dev/null +++ b/sales_product_performance_report/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import product_template +from . import res_users +from . import sale_order diff --git a/sales_product_performance_report/models/product_template.py b/sales_product_performance_report/models/product_template.py new file mode 100644 index 000000000..96a3046c6 --- /dev/null +++ b/sales_product_performance_report/models/product_template.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models, _ +from odoo.exceptions import UserError +from odoo.http import request + + +class ProductTemplate(models.Model): + """Inherits the product template for adding fields and methods""" + _inherit = 'product.template' + + stock_warehouse_id = fields.Many2one('stock.warehouse', + string='Warehouse', + help="Warehouse Selection", + domain="[('company_id', '=', " + "company_id)]") + quantity = fields.Float(string='On Hand', + help=' for Quantity') + revenue = fields.Float(string="Revenue", + help='Float Field for Revenue ') + total_order = fields.Integer(string="ToTal Order", + help='Float Field for Total Order') + ordered_quantities = fields.Integer(string="Ordered Quantities", + help='for Ordered Quantities') + delivered_quantities = fields.Integer(string="Delivered Quantities", + help='for Ordered Quantities') + returned_quantities = fields.Integer(string="Returned Quantities", + help='for Ordered Quantities') + avg_price = fields.Float(string="Avg Price", help='Avg Price of Products') + avg_qty_order = fields.Float(string="Avg Qty Per Order", + help='Average Quantity Order') + avg_stock = fields.Integer(string="Avg Stock", help='Avg Stock of Products') + + def performance_values(self, start_date, end_date, up_to_date): + """ + For Calculate Performance Values + :param start_date: for get records after the date . + :param end_date: for get records before the date. + :param up_to_date: for up_to_date records. + """ + domain = [('product_template_id', '=', self.id)] + if not up_to_date: + if start_date: + domain.append(('order_id.date_order', '>=', start_date)) + if end_date: + domain.append(('order_id.date_order', '<=', end_date)) + sale_order = self.env['sale.order.line'].search(domain) + product_variant = self.env['product.product'].search([ + ('product_tmpl_id', '=', self.id)]) + stock_quant = self.env['stock.quant'].search([ + ('product_id', '=', product_variant[0].id)]) + self.quantity = self.qty_available + self.stock_warehouse_id = stock_quant.location_id.warehouse_id + self.delivered_quantities = sum(sale_order.mapped('qty_delivered')) + self.ordered_quantities = sum(sale_order.mapped('product_uom_qty')) + self.total_order = len(sale_order) + self.avg_stock = (self.ordered_quantities / self.total_order) \ + if self.total_order != 0 else 0 + self.avg_qty_order = self.delivered_quantities / self.total_order \ + if self.total_order != 0 else 0.00 + self.avg_price = (sum(sale_order.mapped('price_unit')) / + self.total_order) if self.total_order != 0 else 0.00 + self.revenue = 0 + for line in sale_order: + self.revenue += line.price_subtotal + return_qty = self.env['stock.move'].search( + [('sale_line_id', '=', line.id), + ('picking_id.sale_id', '=', line.order_id.id), + ('picking_type_id.code', '=', 'incoming')]) + if return_qty.quantity: + self.returned_quantities = return_qty.quantity + + def action_sale_order(self): + """ + action for get sale orders done with this product + return: to sale order tree view and form view + """ + domain = [('product_template_id', '=', self.id)] + if not self._context['up_to_date']: + if self._context['start_date']: + domain.append( + ('order_id.date_order', '>=', self._context['start_date'])) + if self._context['end_date']: + domain.append( + ('order_id.date_order', '<=', self._context['end_date'])) + sale_order = self.env['sale.order.line'].search(domain) + orders = [order.order_id.id for order in sale_order] + tree_view_id = request.env.ref( + 'sale.view_order_tree').id + form_view_id = request.env.ref( + 'sale.view_order_form').id + if orders: + return { + 'name': _('Product Performance Report'), + 'res_model': 'sale.order', + 'views': [(tree_view_id, 'list'), (form_view_id, 'form')], + 'type': 'ir.actions.act_window', + 'target': 'self', + 'domain': [('id', 'in', orders)] + } + else: + raise UserError(_("No Orders with this Product!")) diff --git a/sales_product_performance_report/models/res_users.py b/sales_product_performance_report/models/res_users.py new file mode 100644 index 000000000..e9aa01695 --- /dev/null +++ b/sales_product_performance_report/models/res_users.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models, _ +from odoo.exceptions import UserError +from odoo.http import request + + +class ResUsers(models.Model): + """Inherits the User model for adding fields and methods""" + _inherit = 'res.users' + + warehouse_id = fields.Many2one('stock.warehouse', + string='Warehouse', + domain="[('company_id', '=', company_id)]") + estimated_revenue = fields.Float(string="Estimated Revenue", + help='Estimated Revenue of orders done by' + 'the user') + net_revenue = fields.Float(string="Net Revenue", + help='Net Revenue of orders') + total_sale_order = fields.Integer(string="ToTal Order", + help='No of Total Orders') + sale_order_done = fields.Integer(string="Sale Order Done", + help='No of Done Sale Orders') + returned_orders = fields.Integer(string="Returned Orders", + help='No of Returned Orders') + avg_price = fields.Float(string="Avg Price", help='Average Price') + overall_performance = fields.Float(string="Over All%", + help='Overall Performance') + overall_performance_separate = fields.Float(string="Over All Separated", + help='Overall Performance of ' + 'Sales Person Done with ' + 'Different Sales Team') + + def performance_values(self, sale_person, start_date, + end_date, up_to_date): + """ + For Calculate Performance Values + :param sale_person: for get sale_person . + :param start_date: for get records after the date . + :param end_date: for get records before the date. + :param up_to_date: for up_to_date records. + """ + domain = [ + ('team_id', '=', self.sale_team_id.id), + ('user_id', '=', sale_person.id) + ] + if not up_to_date: + if start_date: + domain.append(('date_order', '>=', start_date)) + if end_date: + domain.append(('date_order', '<=', end_date)) + sale_order = self.env['sale.order'].search(domain) + self.total_sale_order = len(sale_order) + + domain.append(('state', '=', 'sale')) + self.sale_order_done = len(self.env['sale.order'].search(domain)) + self.net_revenue = sum(self.env['sale.order'].search + (domain).mapped('amount_total')) + self.estimated_revenue = sum(sale_order.mapped('amount_total')) + self.avg_price = self.estimated_revenue / self.total_sale_order \ + if self.total_sale_order else None + return_order = self.env['stock.picking'].search([ + ('sale_id', 'in', sale_order.ids), + ('picking_type_id.code', '=', "incoming") + ]) + self.returned_orders = len(return_order) + overall_order = self.env['sale.order'].search_count([]) + self.overall_performance = ( + (self.total_sale_order / overall_order) * 100) + separate_order = self.env['sale.order'].search_count([ + ('team_id', '!=', self.sale_team_id.id), + ('user_id', '=', sale_person.id)]) + self.overall_performance_separate = ( + (separate_order / overall_order) * 100) + + def action_sale_order(self): + """ + action for get sale orders done with this product + return: to sale order tree view and form view + """ + domain = [('user_id', '=', self.id)] + if not self._context['up_to_date']: + if self._context['start_date']: + domain.append(('date_order', '>=', + self._context['start_date'])) + if self._context['end_date']: + domain.append(('date_order', '<=', self._context['end_date'])) + sale_order = self.env['sale.order'].search(domain).mapped('id') + tree_view_id = request.env.ref( + 'sale.view_order_tree').id + form_view_id = request.env.ref( + 'sale.view_order_form').id + if sale_order: + return { + 'name': _('Sales Order Report'), + 'res_model': 'sale.order', + 'views': [(tree_view_id, 'list'), (form_view_id, 'form')], + 'type': 'ir.actions.act_window', + 'target': 'self', + 'domain': [('id', 'in', sale_order) if sale_order else None], + } + else: + raise UserError(_("No Orders done by this Sales Person!")) diff --git a/sales_product_performance_report/models/sale_order.py b/sales_product_performance_report/models/sale_order.py new file mode 100644 index 000000000..d0586c653 --- /dev/null +++ b/sales_product_performance_report/models/sale_order.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Sabeel B (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import api, models, _ + + +class SaleOrder(models.Model): + """Inherits the sale order model for creating the product performance report""" + _inherit = 'sale.order' + + @api.model + def action_product_performance_report(self): + """ + action for get product performance report + """ + return { + 'name': _('Product Performance'), + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'product.performance', + 'target': 'new', + } + + @api.model + def action_sales_performance_report(self): + """ + action for get sales performance report + """ + return { + 'name': _('Sales Performance'), + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'sales.performance', + 'target': 'new', + } diff --git a/sales_product_performance_report/security/ir.model.access.csv b/sales_product_performance_report/security/ir.model.access.csv new file mode 100644 index 000000000..ec0f9ab6b --- /dev/null +++ b/sales_product_performance_report/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_product_performance_user,access.product.performance.user,model_product_performance,base.group_user,1,1,1,1 +access_sales_performance_user,access.sales.performance.user,model_sales_performance,base.group_user,1,1,1,1 diff --git a/sales_product_performance_report/static/description/assets/icons/capture (1).png b/sales_product_performance_report/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/capture (1).png differ diff --git a/sales_product_performance_report/static/description/assets/icons/check.png b/sales_product_performance_report/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/check.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/chevron.png b/sales_product_performance_report/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/chevron.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/cogs.png b/sales_product_performance_report/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/cogs.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/consultation.png b/sales_product_performance_report/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/consultation.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/ecom-black.png b/sales_product_performance_report/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/ecom-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/education-black.png b/sales_product_performance_report/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/education-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/hotel-black.png b/sales_product_performance_report/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/hotel-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/img.png b/sales_product_performance_report/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/img.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/license.png b/sales_product_performance_report/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/license.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/lifebuoy.png b/sales_product_performance_report/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/lifebuoy.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/manufacturing-black.png b/sales_product_performance_report/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/manufacturing-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/photo-capture.png b/sales_product_performance_report/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/photo-capture.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/pos-black.png b/sales_product_performance_report/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/pos-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/puzzle.png b/sales_product_performance_report/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/puzzle.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/restaurant-black.png b/sales_product_performance_report/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/restaurant-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/service-black.png b/sales_product_performance_report/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/service-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/trading-black.png b/sales_product_performance_report/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/trading-black.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/training.png b/sales_product_performance_report/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/training.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/update.png b/sales_product_performance_report/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/update.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/user.png b/sales_product_performance_report/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/user.png differ diff --git a/sales_product_performance_report/static/description/assets/icons/wrench.png b/sales_product_performance_report/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/icons/wrench.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/Cybrosys R.png b/sales_product_performance_report/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/Cybrosys R.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/email.svg b/sales_product_performance_report/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/phone.svg b/sales_product_performance_report/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/sales_product_performance_report/static/description/assets/misc/star (1) 2.svg b/sales_product_performance_report/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/support (1) 1.svg b/sales_product_performance_report/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/support-email.svg b/sales_product_performance_report/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/tick-mark.svg b/sales_product_performance_report/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/whatsapp 1.svg b/sales_product_performance_report/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/misc/whatsapp.svg b/sales_product_performance_report/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/sales_product_performance_report/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_product_performance_report/static/description/assets/modules/1.png b/sales_product_performance_report/static/description/assets/modules/1.png new file mode 100644 index 000000000..0e311ca87 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/1.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/2.png b/sales_product_performance_report/static/description/assets/modules/2.png new file mode 100644 index 000000000..a0ac2d840 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/2.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/3.png b/sales_product_performance_report/static/description/assets/modules/3.png new file mode 100644 index 000000000..cb17cf612 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/3.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/4.jpg b/sales_product_performance_report/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..67c7f7062 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/4.jpg differ diff --git a/sales_product_performance_report/static/description/assets/modules/5.png b/sales_product_performance_report/static/description/assets/modules/5.png new file mode 100644 index 000000000..8513873ea Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/5.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/6.jpg b/sales_product_performance_report/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..73781cf50 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/6.jpg differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/hero.gif b/sales_product_performance_report/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..8fe13e328 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/hero.gif differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_001.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_001.png new file mode 100644 index 000000000..10a60cbaa Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_001.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_002.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_002.png new file mode 100644 index 000000000..ee9a50513 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_002.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_003.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_003.png new file mode 100644 index 000000000..c1a3efba7 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_003.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_004.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_004.png new file mode 100644 index 000000000..c9fa52a8a Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_004.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_005.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_005.png new file mode 100644 index 000000000..02a42ba39 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_005.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_006.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_006.png new file mode 100644 index 000000000..0eecdbcea Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_006.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_007.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_007.png new file mode 100644 index 000000000..8af574745 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_007.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_008.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_008.png new file mode 100644 index 000000000..de9c5e3b5 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_008.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_009.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_009.png new file mode 100644 index 000000000..28d104106 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_009.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_010.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_010.png new file mode 100644 index 000000000..3be816c2e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_010.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_011.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_011.png new file mode 100644 index 000000000..4eee5f2b5 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_011.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_012.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_012.png new file mode 100644 index 000000000..6c8e8ea47 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_012.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_013.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_013.png new file mode 100644 index 000000000..9418f1542 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_013.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_014.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_014.png new file mode 100644 index 000000000..fe080adf2 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_014.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/scrn_015.png b/sales_product_performance_report/static/description/assets/screenshots/scrn_015.png new file mode 100644 index 000000000..f502af306 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/scrn_015.png differ diff --git a/sales_product_performance_report/static/description/banner.jpg b/sales_product_performance_report/static/description/banner.jpg new file mode 100644 index 000000000..9fc636185 Binary files /dev/null and b/sales_product_performance_report/static/description/banner.jpg differ diff --git a/sales_product_performance_report/static/description/icon.png b/sales_product_performance_report/static/description/icon.png new file mode 100644 index 000000000..a3df04917 Binary files /dev/null and b/sales_product_performance_report/static/description/icon.png differ diff --git a/sales_product_performance_report/static/description/index.html b/sales_product_performance_report/static/description/index.html new file mode 100644 index 000000000..7cfc87227 --- /dev/null +++ b/sales_product_performance_report/static/description/index.html @@ -0,0 +1,807 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Sales And Products Performance Report

+

+ Performance Report Summary of Sales and Products. +

+
+ +
+
+
+
+
+

Key Highlights +

+
+
+
+
+
+ +
+
+

Comprehensive sales and product performance metrics

+
+
+
+
+
+
+ +
+
+

Enhance the efficiency of sales analysis and strategic planning

+
+
+
+
+
+
+ +
+
+

Community & Enterprise Support

+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+

+ Access Product Performance Report from Reporting Menu.

+
+
+
+
+
+
+ + +
+
+

+ A Wizard for Redirect to Performance View with Filter Start and End Date

+
+
+
+
+
+
+ +
+
+

+ An Option to get Uptodate Records.

+
+
+
+
+
+
+ +
+
+

+ Filter Report Based on Products and Category.

+
+
+
+
+
+
+ +
+
+

+ View of Product Performance Report with Product, Category, Company, Warehouse, Revenue, On Hand Quantity, Total Orders.

+
+
+
+
+
+
+ +
+
+

+ With Ordered Quantities, Delivered Quantities, Returned Quantities, Avg Price and Avg Quantity per Order.

+
+
+
+
+
+
+ +
+
+

+ A Button for Redirect to Sale Orders that Done with this Products .

+
+
+
+
+
+
+ +
+
+

+ The Sale Order View(Editable).

+
+
+
+
+
+
+ +
+
+

+ Access Sales Performance Report from Reporting Menu .

+
+
+
+
+
+
+ +
+
+

+ A Wizard for Redirect to Performance View with Filter Start Date, End Date and Uptodate .

+
+
+
+
+
+
+ +
+
+

+ Filter Report Based on Sales Team and Sales Person.

+
+
+
+
+
+
+ +
+
+

+ View of Sales Performance Report with Sales Person, Sales Team, Company, Warehouse, Estimated Revenue, Net Revenue, Total Orders, Done Orders, Returned Orders, Avg Price and Overall Performance.

+
+
+
+
+
+
+ +
+
+

+ An Optional Field for Order that Done without Sales Team .

+
+
+
+
+
+
+ +
+
+

+ A Button for Redirect to Sale Orders that Done by Sales Persons.

+
+
+
+
+
+
+ +
+
+

+ The Sale Order View(Editable).

+
+
+
+ + +
+
+
+
    +
  • + Comprehensive Data Analysis. +
    +

    The Product Performance Report provides a comprehensive analysis of how each product in your inventory is performing. It offers insights into sales, revenues, quantities sold, and profitability for individual products.

    + +
  • + +
  • + Customizable Date Ranges. +

    Users can set custom date ranges for the report, allowing them to analyze product performance over specific time periods. This flexibility is crucial for seasonal businesses and campaign analysis.

    +
  • +
  • + Product Filtering +

    Users can filter the report by product category, enabling them to focus on specific product groups or types. This is valuable for businesses with diverse product catalogs.

    + +
  • + Exporting Data +

    Users can export the report data to various formats (e.g., Excel or CSV), making it convenient for sharing and further analysis outside the Odoo environment.

    + +
  • + User-Friendly Interface +

    Odoo's user-friendly interface ensures that both technical and non-technical users can navigate and utilize the report effectively.

    + +
  • + Identifying Opportunities +

    By analyzing the report, businesses can identify opportunities to promote top-performing products or make data-driven decisions about inventory management.

    + +
  • + Cost Analysis +

    Some Product Performance Reports also include cost-related metrics, enabling businesses to evaluate profitability accurately.

    + +
  • + Order View +

    Accessible View of Sale Orders That Done by the Products.

    + +
  • + Data-Driven Insights +

    These reports provide data-driven insights into sales team and salesperson performance. Businesses can make informed decisions based on concrete data rather than assumptions.

    + +
  • + Performance Evaluation +

    They allow for the evaluation of sales teams and individual salespeople, helping identify top performers and areas that require improvement. This aids in performance reviews and incentive programs.

    + +
  • + Revenue Analysis +

    Users can analyze revenue generated by each salesperson or team, helping identify sources of revenue and areas with growth potential.

    + +
  • + Exporting Data +

    Users can export the report data to various formats (e.g., Excel or CSV), making it convenient for sharing and further analysis outside the Odoo environment.

    + +
  • + User-Friendly Interface +

    Odoo's user-friendly interface ensures that both technical and non-technical users can navigate and utilize the report effectively.

    + +
  • + Identifying Opportunities +

    By analyzing the report, businesses can identify opportunities to promote top-performing sales team and sales person or make data-driven decisions about sales department.

    + +
  • + Customizable Filters +

    Reports often come with customizable filters, allowing users to focus on specific time periods, sales teams, salespeople, or other criteria.

    + +
  • + Order View +

    Accessible View of Sale Orders That Done by the Sales Persons.

    + +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:07th June 2024 +
+

+ + Initial Commit for Sales And Products Performance Report.

+
+
+
+
+
+
+
+

Related Products

+
+
+ +
+
+

Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Licensing Consultancy

+
+
+
+
+
+
+

Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

Education

+

A platform for educational management

+
+
+
+
+ +

Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service Management

+

Keep track of services and invoice

+
+
+
+
+ +

Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to us on WhatsApp!

+
+91 + 99456767686
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/sales_product_performance_report/views/product_template_views.xml b/sales_product_performance_report/views/product_template_views.xml new file mode 100644 index 000000000..55f068a87 --- /dev/null +++ b/sales_product_performance_report/views/product_template_views.xml @@ -0,0 +1,27 @@ + + + + + product.template.report.tree + product.template + + + + + + + + + + +