diff --git a/sales_product_performance_report/README.rst b/sales_product_performance_report/README.rst new file mode 100644 index 000000000..292dc7ba4 --- /dev/null +++ b/sales_product_performance_report/README.rst @@ -0,0 +1,42 @@ +.. 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: (V15) Saneen K, 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..7f02a6536 --- /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: Saneen K (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..4331e0aa1 --- /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: Saneen K (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': '15.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..50c8e91ee --- /dev/null +++ b/sales_product_performance_report/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 31.07.2024 +#### Version 15.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..6dda2fde2 --- /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: Saneen K (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..1e104dca1 --- /dev/null +++ b/sales_product_performance_report/models/product_template.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Saneen K(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 from where the" + " product is placed", + domain="[('company_id', '=', " + "company_id)]") + quantity = fields.Float(string='On Hand', + help='On Hand Quantity') + revenue = fields.Float(string="Revenue", + help='Total Revenue for the Product') + total_order = fields.Integer(string="Total Order", + help='Total Number of the ' + 'Order for the Product') + ordered_quantities = fields.Integer(string="Ordered Quantities", + help='Total Number of the Quantity' + ' that Ordered') + delivered_quantities = fields.Integer(string="Delivered Quantities", + help='Total Number of the Quantity' + ' that Delivered') + returned_quantities = fields.Integer(string="Returned Quantities", + help='Total Number of the Quantity' + ' that returned') + 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_done: + self.returned_quantities = return_qty.quantity_done + + 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..13d7bc567 --- /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: Saneen K (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)]", + help='Warehouse') + 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..960b013a1 --- /dev/null +++ b/sales_product_performance_report/models/sale_order.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Saneen K (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/check.png b/sales_product_performance_report/static/description/assets/icons/check.png new file mode 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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/license.png b/sales_product_performance_report/static/description/assets/icons/license.png new file mode 100755 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 100755 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 100755 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/pos-black.png b/sales_product_performance_report/static/description/assets/icons/pos-black.png new file mode 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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 100755 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/categories.png b/sales_product_performance_report/static/description/assets/misc/categories.png new file mode 100755 index 000000000..bedf1e0b1 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/categories.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/check-box.png b/sales_product_performance_report/static/description/assets/misc/check-box.png new file mode 100755 index 000000000..42caf24b9 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/check-box.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/compass.png b/sales_product_performance_report/static/description/assets/misc/compass.png new file mode 100755 index 000000000..d5fed8faa Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/compass.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/corporate.png b/sales_product_performance_report/static/description/assets/misc/corporate.png new file mode 100755 index 000000000..2eb13edbf Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/corporate.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/customer-support.png b/sales_product_performance_report/static/description/assets/misc/customer-support.png new file mode 100755 index 000000000..79efc72ed Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/customer-support.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/cybrosys-logo.png b/sales_product_performance_report/static/description/assets/misc/cybrosys-logo.png new file mode 100755 index 000000000..cc3cc0ccf Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/cybrosys-logo.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/features.png b/sales_product_performance_report/static/description/assets/misc/features.png new file mode 100755 index 000000000..b41769f77 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/features.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/logo.png b/sales_product_performance_report/static/description/assets/misc/logo.png new file mode 100755 index 000000000..478462d3e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/logo.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/pictures.png b/sales_product_performance_report/static/description/assets/misc/pictures.png new file mode 100755 index 000000000..56d255fe9 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/pictures.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/pie-chart.png b/sales_product_performance_report/static/description/assets/misc/pie-chart.png new file mode 100755 index 000000000..426e05244 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/pie-chart.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/right-arrow.png b/sales_product_performance_report/static/description/assets/misc/right-arrow.png new file mode 100755 index 000000000..730984a06 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/right-arrow.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/star.png b/sales_product_performance_report/static/description/assets/misc/star.png new file mode 100755 index 000000000..2eb9ab29f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/star.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/support.png b/sales_product_performance_report/static/description/assets/misc/support.png new file mode 100755 index 000000000..4f18b8b82 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/support.png differ diff --git a/sales_product_performance_report/static/description/assets/misc/whatsapp.png b/sales_product_performance_report/static/description/assets/misc/whatsapp.png new file mode 100755 index 000000000..d513a5356 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/misc/whatsapp.png differ 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 100755 index 000000000..04d502e26 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 100755 index 000000000..c138dd7c2 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 100755 index 000000000..3f5bfcd0b 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.png b/sales_product_performance_report/static/description/assets/modules/4.png new file mode 100755 index 000000000..004c61a9e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/4.png 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 100755 index 000000000..09e2d45b2 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.png b/sales_product_performance_report/static/description/assets/modules/6.png new file mode 100755 index 000000000..958ed2bf4 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/6.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/1.png b/sales_product_performance_report/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..4952b24c6 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/1.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/10.png b/sales_product_performance_report/static/description/assets/screenshots/10.png new file mode 100644 index 000000000..7241ab2d5 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/10.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/11.png b/sales_product_performance_report/static/description/assets/screenshots/11.png new file mode 100644 index 000000000..c1e63c7f3 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/11.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/12.png b/sales_product_performance_report/static/description/assets/screenshots/12.png new file mode 100644 index 000000000..70ad16c25 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/12.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/13.png b/sales_product_performance_report/static/description/assets/screenshots/13.png new file mode 100644 index 000000000..988c05d99 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/13.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/14.png b/sales_product_performance_report/static/description/assets/screenshots/14.png new file mode 100644 index 000000000..f6f5d17af Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/14.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/15.png b/sales_product_performance_report/static/description/assets/screenshots/15.png new file mode 100644 index 000000000..1425e4268 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/15.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/2.png b/sales_product_performance_report/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..aadb819e1 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/2.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/3.png b/sales_product_performance_report/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..d896cb82e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/3.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/4.png b/sales_product_performance_report/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..1c5173acb Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/4.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/5.png b/sales_product_performance_report/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..d5a3f8a31 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/5.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/6.png b/sales_product_performance_report/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..cfcd3063f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/6.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/7.png b/sales_product_performance_report/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..8e6e4191c Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/7.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/8.png b/sales_product_performance_report/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..cde453f56 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/8.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/9.png b/sales_product_performance_report/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..e221d36b2 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/9.png 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..b9a8b03af 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/banner.jpg b/sales_product_performance_report/static/description/banner.jpg new file mode 100644 index 000000000..aeed9fe15 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..ec9e87cb6 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 100755 index 000000000..435e24c15 --- /dev/null +++ b/sales_product_performance_report/static/description/index.html @@ -0,0 +1,663 @@ +
+ +
+ +
+
+ Enterprise +
+
+ Community +
+
+ Odoo sh +
+
+
+ +
+
+
+ +

+ Sales And Products Performance Report +

+

Performance Report Summary of Sales and Products

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

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Observing records without a dedicated report can be a daunting task, especially in the context of sales and product performance. Businesses often struggle to extract meaningful insights from a sheer volume of data scattered across various sources. Without a structured report, tracking sales trends, identifying top-performing products, or evaluating the success of marketing campaigns can be a time-consuming and error-prone process. +

On the other hand, the Sales and Product Performance Report in Odoo brings a breath of fresh air to this challenge. It simplifies the task of record observation by presenting crucial data in an organized, visually appealing manner. With just a few clicks, businesses can access comprehensive sales and product performance metrics, allowing for quick and accurate decision-making. This report not only saves time but also reduces the likelihood of oversight or misinterpretation of data, enhancing the efficiency of sales analysis and strategic planning. +

In essence, while observing records without a report can be cumbersome and prone to inaccuracies, the Sales and Product Performance Report in Odoo streamlines the process, making it remarkably easier to gain valuable insights and drive informed business decisions. It's an indispensable tool for businesses aiming to stay competitive and agile in today's data-driven marketplace. +
+ +
+ + + + +
+
+ +
+

Product Performance

+
+
+
+
+ + 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. +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+
+

Access Product Performance Report from Reporting Menu

+ +
+ +
+

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

+ +
+ +
+

An Option to Get up-to-date 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)

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

Sales Performance

+
+
+
+
+ + 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. +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+
+

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)

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

Related + Products +

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

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ 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 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file 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 + + + + + + + + + + +