diff --git a/sales_product_performance_report/README.rst b/sales_product_performance_report/README.rst new file mode 100644 index 000000000..4d0312741 --- /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: (V16) Ansil P V, 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..4dea720be --- /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: Ansil pv (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..ee2be3e4a --- /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: Ansil pv (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': '16.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..7da72920d --- /dev/null +++ b/sales_product_performance_report/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 06.04.2024 +#### Version 16.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..e15b0e159 --- /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: Ansil pv (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..29017d795 --- /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: Ansil pv (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_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..eed0cac61 --- /dev/null +++ b/sales_product_performance_report/models/res_users.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ansil pv (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..df32b96ec --- /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: Ansil pv (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 100644 index 000000000..489f44e86 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/3.png b/sales_product_performance_report/static/description/assets/modules/3.png new file mode 100644 index 000000000..55fb7ba18 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/m1.png b/sales_product_performance_report/static/description/assets/modules/m1.png new file mode 100644 index 000000000..47bf7d5ec Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/m1.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/m2.png b/sales_product_performance_report/static/description/assets/modules/m2.png new file mode 100644 index 000000000..f6020a481 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/m2.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/m3.png b/sales_product_performance_report/static/description/assets/modules/m3.png new file mode 100644 index 000000000..8658f1826 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/m3.png differ diff --git a/sales_product_performance_report/static/description/assets/modules/m5.png b/sales_product_performance_report/static/description/assets/modules/m5.png new file mode 100644 index 000000000..6c2bec15c Binary files /dev/null and b/sales_product_performance_report/static/description/assets/modules/m5.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP01.png b/sales_product_performance_report/static/description/assets/screenshots/SandP01.png new file mode 100644 index 000000000..d1bb2eafe Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP01.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP02.png b/sales_product_performance_report/static/description/assets/screenshots/SandP02.png new file mode 100644 index 000000000..97d34a054 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP02.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP03.png b/sales_product_performance_report/static/description/assets/screenshots/SandP03.png new file mode 100644 index 000000000..d3feb326e Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP03.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP04.png b/sales_product_performance_report/static/description/assets/screenshots/SandP04.png new file mode 100644 index 000000000..009f44a4f Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP04.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP05.png b/sales_product_performance_report/static/description/assets/screenshots/SandP05.png new file mode 100644 index 000000000..fd332dcb9 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP05.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP06.png b/sales_product_performance_report/static/description/assets/screenshots/SandP06.png new file mode 100644 index 000000000..b9721efa0 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP06.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP07.png b/sales_product_performance_report/static/description/assets/screenshots/SandP07.png new file mode 100644 index 000000000..8c5ab14f9 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP07.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP08.png b/sales_product_performance_report/static/description/assets/screenshots/SandP08.png new file mode 100644 index 000000000..f938ba9de Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP08.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP09.png b/sales_product_performance_report/static/description/assets/screenshots/SandP09.png new file mode 100644 index 000000000..aeceedc3d Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP09.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP10.png b/sales_product_performance_report/static/description/assets/screenshots/SandP10.png new file mode 100644 index 000000000..08c9ba34b Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP10.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP11.png b/sales_product_performance_report/static/description/assets/screenshots/SandP11.png new file mode 100644 index 000000000..5c3bcf0e1 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP11.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP12.png b/sales_product_performance_report/static/description/assets/screenshots/SandP12.png new file mode 100644 index 000000000..0ff024030 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP12.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP13.png b/sales_product_performance_report/static/description/assets/screenshots/SandP13.png new file mode 100644 index 000000000..558d7097b Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP13.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP14.png b/sales_product_performance_report/static/description/assets/screenshots/SandP14.png new file mode 100644 index 000000000..4345127c0 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP14.png differ diff --git a/sales_product_performance_report/static/description/assets/screenshots/SandP15.png b/sales_product_performance_report/static/description/assets/screenshots/SandP15.png new file mode 100644 index 000000000..12e6c2df8 Binary files /dev/null and b/sales_product_performance_report/static/description/assets/screenshots/SandP15.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..4a38dd3fa 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..607a10fb5 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..ac8548bd1 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..37477ef19 --- /dev/null +++ b/sales_product_performance_report/static/description/index.html @@ -0,0 +1,667 @@ +
+ +
+ +
+
+ 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 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)

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

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