diff --git a/sales_commission_users/README.rst b/sales_commission_users/README.rst new file mode 100755 index 000000000..25e9d8e5f --- /dev/null +++ b/sales_commission_users/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +Sales Commission +================ +To Create Sales Commission for Sales Person. + +Configuration +============= +- www.odoo.com/documentation/16.0/setup/install.html +- Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: (v16) Vishnu KP , Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@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 https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ diff --git a/sales_commission_users/__init__.py b/sales_commission_users/__init__.py new file mode 100644 index 000000000..0d46e3816 --- /dev/null +++ b/sales_commission_users/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models +from . import report +from . import wizard diff --git a/sales_commission_users/__manifest__.py b/sales_commission_users/__manifest__.py new file mode 100644 index 000000000..5e8bdd089 --- /dev/null +++ b/sales_commission_users/__manifest__.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Sales Commission', + 'version': '16.0.1.0.0', + 'category': 'Sales', + 'summary': """To Create Sales Commission for Sales Person.""", + 'description': """Allows to create sales commission based on Product, + Partner, and Discount of Sale order to the sales person.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com/', + 'depends': ['sale_management', 'account'], + 'data': [ + 'security/ir.model.access.csv', + 'wizard/sales_commission_report_views.xml', + 'views/commission_lines_views.xml', + 'views/res_partner_views.xml', + 'views/sale_order_views.xml', + 'views/sales_commission_views.xml', + 'views/sales_commission_menus.xml', + 'report/sales_commission_action.xml', + 'report/sales_commission_templates.xml', + ], + 'images': [ + 'static/description/banner.jpg', + ], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/sales_commission_users/doc/RELEASE_NOTES.md b/sales_commission_users/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..fddcabc41 --- /dev/null +++ b/sales_commission_users/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 12.08.2025 +#### Version 16.0.1.0.0 +#### ADD +- Initial commit for Sales Commission diff --git a/sales_commission_users/models/__init__.py b/sales_commission_users/models/__init__.py new file mode 100644 index 000000000..fd19923c9 --- /dev/null +++ b/sales_commission_users/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import commission_lines +from . import discount_based_sales_commission +from . import product_based_sales_commission +from . import res_partner +from . import sale_order +from . import sales_commision diff --git a/sales_commission_users/models/commission_lines.py b/sales_commission_users/models/commission_lines.py new file mode 100644 index 000000000..54bfbf171 --- /dev/null +++ b/sales_commission_users/models/commission_lines.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from datetime import datetime +from odoo import fields, models, _ +from odoo.exceptions import UserError + + +class CommissionLines(models.Model): + """Creating a commission lines model.""" + _name = "commission.lines" + _description = "Commission Lines" + + date = fields.Date(string="Date", help="Date") + sale_order_id = fields.Many2one('sale.order', help="Sale order", + string='Sale Order') + description = fields.Char(string="Name", help="Description") + sales_person_id = fields.Many2one('res.users', + string='Sales Person', + help="Sales person") + order_ref = fields.Char(string='Order Reference', help="Order reference") + partner_id = fields.Many2one('res.partner', string='Partner', + help="Partner") + commission = fields.Char(string='Commission Name', + help="Name of the commission") + commission_type = fields.Selection( + string="Commission Type", + selection=[('standard', 'Standard'), + ('partner_based', 'Partner Based'), + ('product_based', 'Product Based'), + ('discount_based', 'Discount Based') + ], help="Commission type") + commission_amount = fields.Float(string="Commission Amount", + help="Commission Amount") + + def action_create_invoice(self): + """Creating invoice for sales commission""" + if len(self.sales_person_id.mapped('partner_id')) > 1: + raise UserError(_('Sales Person should be same.')) + else: + lines = [(0, 0, { + 'name': rec.description, + 'quantity': 1.0, + 'discount': 0.00, + 'price_unit': rec.commission_amount, + }) for rec in self] + invoice = self.env['account.move'].create({ + 'move_type': 'out_invoice', + 'partner_id': self.sales_person_id.mapped('partner_id').id, + 'payment_reference': self.mapped('order_ref'), + 'invoice_date': fields.Date.today(), + 'invoice_line_ids': lines + }) + return { + 'type': 'ir.actions.act_window', + 'name': 'Invoices', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.move', + 'res_id': invoice.id, + 'domain': [ + ('payment_reference', '=', self.mapped('order_ref'))], + 'context': "{'create': False}" + } diff --git a/sales_commission_users/models/discount_based_sales_commission.py b/sales_commission_users/models/discount_based_sales_commission.py new file mode 100644 index 000000000..0b6620fd1 --- /dev/null +++ b/sales_commission_users/models/discount_based_sales_commission.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class DiscountBasedSalesCommission(models.Model): + """Creating a discount based sales commission model.""" + _name = "discount.based.sales.commission" + _description = " Discount Based Sales Commission" + + sale_commission_id = fields.Many2one("sales.commission", + string='Sales Commission', + help="Sales commission") + discount = fields.Float(string='Discount %', help="Discount %") + commission = fields.Float(string='Commission %', help="Commission %") diff --git a/sales_commission_users/models/product_based_sales_commission.py b/sales_commission_users/models/product_based_sales_commission.py new file mode 100644 index 000000000..b98ec4250 --- /dev/null +++ b/sales_commission_users/models/product_based_sales_commission.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class ProductBasedSalesCommission(models.Model): + """Creating product based sales commission model.""" + _name = "product.based.sales.commission" + _description = " Product Based Sales Commission" + + sale_commission_id = fields.Many2one("sales.commission", + help="Sales commission", + string='Sale Commission') + product_id = fields.Many2one('product.product', string='Product', + help="Product") + commission = fields.Float(string='Commission %', help="Commission %") diff --git a/sales_commission_users/models/res_partner.py b/sales_commission_users/models/res_partner.py new file mode 100644 index 000000000..c5de78575 --- /dev/null +++ b/sales_commission_users/models/res_partner.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class ResPartner(models.Model): + """Inherits res partner model.""" + _inherit = 'res.partner' + + affiliated = fields.Boolean( + string='Affiliated', + help='To differentiate partner is affiliated or not') diff --git a/sales_commission_users/models/sale_order.py b/sales_commission_users/models/sale_order.py new file mode 100644 index 000000000..d2801d359 --- /dev/null +++ b/sales_commission_users/models/sale_order.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class SaleOrder(models.Model): + """Inherits Sale order model for adding sales commission.""" + _inherit = 'sale.order' + + commission_ids = fields.One2many('commission.lines', + 'sale_order_id', + string='Sales Commission', + help="Commission") + + def action_confirm(self): + """To add the commission lines in the sale order when its confirmed.""" + res = super(SaleOrder, self).action_confirm() + commission = self.env['sales.commission'].search( + [('sales_person_ids', 'in', self.user_id.id)]) + for com in commission: + commission_amount = 0.0 + description = '' + if com.commission_type == 'standard': + description = 'Sales Commission - Standard' + commission_amount = self.amount_total * com.std_commission_perc / 100 + if com.commission_type == 'partner_based': + if self.partner_id.affiliated: + description = 'Sales Commission - Partner based' + commission_amount = self.amount_total * com.affiliated_commission_perc / 100 + else: + description = 'Sales Commission - Partner based' + commission_amount = self.amount_total * com.non_affiliated_commission_perc / 100 + if com.commission_type == 'product_based': + for rec in com.product_based_ids: + order_line = self.order_line.filtered( + lambda product: product.product_id == rec.product_id) + if order_line: + description = 'Sales Commission - Product Based' + commission_amount += order_line.product_id.list_price * rec.commission / 100 + if com.commission_type == 'discount_based': + for rec in com.discount_based_ids: + order_line = self.order_line.filtered( + lambda product: product.discount >= rec.discount) + if order_line: + description = 'Sales Commission - Discount Based' + commission_amount += self.amount_total * rec.commission / 100 + if description and commission_amount: + self.commission_ids = [(0, 0, { + 'date': self.date_order, + 'description': description, + 'sales_person_id': self.user_id.id, + 'order_ref': self.name, + 'partner_id': self.partner_id.id, + 'commission': com.name, + 'commission_type': com.commission_type, + 'commission_amount': commission_amount, + })] + return res diff --git a/sales_commission_users/models/sales_commision.py b/sales_commission_users/models/sales_commision.py new file mode 100644 index 000000000..80ccaaed4 --- /dev/null +++ b/sales_commission_users/models/sales_commision.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class SalesCommission(models.Model): + """Creating sales commission model.""" + _name = "sales.commission" + _description = "Sales Commission" + + name = fields.Char(string="Commission Name", help="Name of the commission", required=True) + sales_person_ids = fields.Many2many('res.users', string='Sales Person', + help="Sales person") + commission_type = fields.Selection( + string="Commission Type", + selection=[('standard', 'Standard'), + ('partner_based', 'Partner Based'), + ('product_based', 'Product Based'), + ('discount_based', 'Discount Based') + ], help="Type of commission") + std_commission_perc = fields.Float(string='Standard Commission Percentage', + help="Standard commission type") + affiliated_commission_perc = fields.Float( + string='Affiliated Partner Commission Percentage', + help="Affiliated partner commission percentage") + non_affiliated_commission_perc = fields.Float( + string='Non-Affiliated Partner Commission Percentage', + help="Non affiliated commission percentage") + product_based_ids = fields.One2many( + "product.based.sales.commission", 'sale_commission_id', + string='Sales commission Exceptions', + help="Product based sales commission") + date = fields.Date(string="Date", help="Date") + description = fields.Char(string="Description", help="Description") + commission_amount = fields.Float(string="Commission Amount", + help="Commission amount") + + discount_based_ids = fields.One2many( + "discount.based.sales.commission", 'sale_commission_id', + string='Commission Rules', help="Discount based") diff --git a/sales_commission_users/report/__init__.py b/sales_commission_users/report/__init__.py new file mode 100644 index 000000000..37656c1a1 --- /dev/null +++ b/sales_commission_users/report/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import sales_commission_report diff --git a/sales_commission_users/report/sales_commission_action.xml b/sales_commission_users/report/sales_commission_action.xml new file mode 100644 index 000000000..07632fdb6 --- /dev/null +++ b/sales_commission_users/report/sales_commission_action.xml @@ -0,0 +1,12 @@ + + + + + Sales Commission Report + commission.lines + qweb-pdf + sales_commission_users.report_sales_commission + sales_commission_users.report_sales_commission + + + diff --git a/sales_commission_users/report/sales_commission_report.py b/sales_commission_users/report/sales_commission_report.py new file mode 100644 index 000000000..422de571a --- /dev/null +++ b/sales_commission_users/report/sales_commission_report.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models + + +class SalesCommissionReportAbstract(models.AbstractModel): + """To create report for sales commission""" + _name = 'report.sales_commission_users.report_sales_commission' + _description = 'Sales Commission Report' + + @api.model + def _get_report_values(self, docids, data=None): + """To get values of for the report for sales commission for a sales + person""" + sale_commission_id = self.env['commission.lines'].browse(docids) + if docids: + return { + 'doc_ids ': docids, + 'doc_model': 'commission.lines', + 'docs': sale_commission_id, + 'data': data + } + else: + domain = [] + if data.get('sales_person_id'): + domain.append( + ('sales_person_id', '=', data['sales_person_id'])) + if data.get('start_date'): + domain.append(('date', '>=', data['start_date'])) + if data.get('end_date'): + domain.append(('date', '<=', data['end_date'])) + docs = self.env['commission.lines'].search(domain) + return { + 'doc_ids ': docids, + 'doc_model': 'commission.lines', + 'docs': docs, + 'data': data + } diff --git a/sales_commission_users/report/sales_commission_templates.xml b/sales_commission_users/report/sales_commission_templates.xml new file mode 100644 index 000000000..86e8c3944 --- /dev/null +++ b/sales_commission_users/report/sales_commission_templates.xml @@ -0,0 +1,90 @@ + + + + + diff --git a/sales_commission_users/security/ir.model.access.csv b/sales_commission_users/security/ir.model.access.csv new file mode 100644 index 000000000..4fc05c63a --- /dev/null +++ b/sales_commission_users/security/ir.model.access.csv @@ -0,0 +1,6 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_sales_commission,access.sales.commission,model_sales_commission,base.group_user,1,1,1,1 +access_commission_lines,access.commission.lines,model_commission_lines,base.group_user,1,1,1,1 +access_product_based_sales_commission,access.product.based.sales.commission,model_product_based_sales_commission,base.group_user,1,1,1,1 +access_discount_based_sales_commission,access.discount.based.sales.commission,model_discount_based_sales_commission,base.group_user,1,1,1,1 +access_sales_commission_report,access.sales.commission.report,model_sales_commission_report,base.group_user,1,1,1,1 diff --git a/sales_commission_users/static/description/assets/icons/check.png b/sales_commission_users/static/description/assets/icons/check.png new file mode 100755 index 000000000..c8e85f51d Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/check.png differ diff --git a/sales_commission_users/static/description/assets/icons/chevron.png b/sales_commission_users/static/description/assets/icons/chevron.png new file mode 100755 index 000000000..2089293d6 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/chevron.png differ diff --git a/sales_commission_users/static/description/assets/icons/cogs.png b/sales_commission_users/static/description/assets/icons/cogs.png new file mode 100755 index 000000000..95d0bad62 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/cogs.png differ diff --git a/sales_commission_users/static/description/assets/icons/consultation.png b/sales_commission_users/static/description/assets/icons/consultation.png new file mode 100755 index 000000000..8319d4baa Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/consultation.png differ diff --git a/sales_commission_users/static/description/assets/icons/ecom-black.png b/sales_commission_users/static/description/assets/icons/ecom-black.png new file mode 100755 index 000000000..a9385ff13 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/ecom-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/education-black.png b/sales_commission_users/static/description/assets/icons/education-black.png new file mode 100755 index 000000000..3eb09b27b Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/education-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/hotel-black.png b/sales_commission_users/static/description/assets/icons/hotel-black.png new file mode 100755 index 000000000..130f613be Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/hotel-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/license.png b/sales_commission_users/static/description/assets/icons/license.png new file mode 100755 index 000000000..a5869797e Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/license.png differ diff --git a/sales_commission_users/static/description/assets/icons/lifebuoy.png b/sales_commission_users/static/description/assets/icons/lifebuoy.png new file mode 100755 index 000000000..658d56ccc Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/lifebuoy.png differ diff --git a/sales_commission_users/static/description/assets/icons/manufacturing-black.png b/sales_commission_users/static/description/assets/icons/manufacturing-black.png new file mode 100755 index 000000000..697eb0e9f Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/manufacturing-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/pos-black.png b/sales_commission_users/static/description/assets/icons/pos-black.png new file mode 100755 index 000000000..97c0f90c1 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/pos-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/puzzle.png b/sales_commission_users/static/description/assets/icons/puzzle.png new file mode 100755 index 000000000..65cf854e7 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/puzzle.png differ diff --git a/sales_commission_users/static/description/assets/icons/restaurant-black.png b/sales_commission_users/static/description/assets/icons/restaurant-black.png new file mode 100755 index 000000000..4a35eb939 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/restaurant-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/service-black.png b/sales_commission_users/static/description/assets/icons/service-black.png new file mode 100755 index 000000000..301ab51cb Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/service-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/trading-black.png b/sales_commission_users/static/description/assets/icons/trading-black.png new file mode 100755 index 000000000..9398ba2f1 Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/trading-black.png differ diff --git a/sales_commission_users/static/description/assets/icons/training.png b/sales_commission_users/static/description/assets/icons/training.png new file mode 100755 index 000000000..884ca024d Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/training.png differ diff --git a/sales_commission_users/static/description/assets/icons/update.png b/sales_commission_users/static/description/assets/icons/update.png new file mode 100755 index 000000000..ecbc5a01a Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/update.png differ diff --git a/sales_commission_users/static/description/assets/icons/user.png b/sales_commission_users/static/description/assets/icons/user.png new file mode 100755 index 000000000..6ffb23d9f Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/user.png differ diff --git a/sales_commission_users/static/description/assets/icons/wrench.png b/sales_commission_users/static/description/assets/icons/wrench.png new file mode 100755 index 000000000..6c04dea0f Binary files /dev/null and b/sales_commission_users/static/description/assets/icons/wrench.png differ diff --git a/sales_commission_users/static/description/assets/misc/categories.png b/sales_commission_users/static/description/assets/misc/categories.png new file mode 100755 index 000000000..bedf1e0b1 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/categories.png differ diff --git a/sales_commission_users/static/description/assets/misc/check-box.png b/sales_commission_users/static/description/assets/misc/check-box.png new file mode 100755 index 000000000..42caf24b9 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/check-box.png differ diff --git a/sales_commission_users/static/description/assets/misc/compass.png b/sales_commission_users/static/description/assets/misc/compass.png new file mode 100755 index 000000000..d5fed8faa Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/compass.png differ diff --git a/sales_commission_users/static/description/assets/misc/corporate.png b/sales_commission_users/static/description/assets/misc/corporate.png new file mode 100755 index 000000000..2eb13edbf Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/corporate.png differ diff --git a/sales_commission_users/static/description/assets/misc/customer-support.png b/sales_commission_users/static/description/assets/misc/customer-support.png new file mode 100755 index 000000000..79efc72ed Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/customer-support.png differ diff --git a/sales_commission_users/static/description/assets/misc/cybrosys-logo.png b/sales_commission_users/static/description/assets/misc/cybrosys-logo.png new file mode 100755 index 000000000..cc3cc0ccf Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/cybrosys-logo.png differ diff --git a/sales_commission_users/static/description/assets/misc/features.png b/sales_commission_users/static/description/assets/misc/features.png new file mode 100755 index 000000000..b41769f77 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/features.png differ diff --git a/sales_commission_users/static/description/assets/misc/logo.png b/sales_commission_users/static/description/assets/misc/logo.png new file mode 100755 index 000000000..478462d3e Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/logo.png differ diff --git a/sales_commission_users/static/description/assets/misc/pictures.png b/sales_commission_users/static/description/assets/misc/pictures.png new file mode 100755 index 000000000..56d255fe9 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/pictures.png differ diff --git a/sales_commission_users/static/description/assets/misc/pie-chart.png b/sales_commission_users/static/description/assets/misc/pie-chart.png new file mode 100755 index 000000000..426e05244 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/pie-chart.png differ diff --git a/sales_commission_users/static/description/assets/misc/right-arrow.png b/sales_commission_users/static/description/assets/misc/right-arrow.png new file mode 100755 index 000000000..730984a06 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/right-arrow.png differ diff --git a/sales_commission_users/static/description/assets/misc/star.png b/sales_commission_users/static/description/assets/misc/star.png new file mode 100755 index 000000000..2eb9ab29f Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/star.png differ diff --git a/sales_commission_users/static/description/assets/misc/support.png b/sales_commission_users/static/description/assets/misc/support.png new file mode 100755 index 000000000..4f18b8b82 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/support.png differ diff --git a/sales_commission_users/static/description/assets/misc/whatsapp.png b/sales_commission_users/static/description/assets/misc/whatsapp.png new file mode 100755 index 000000000..d513a5356 Binary files /dev/null and b/sales_commission_users/static/description/assets/misc/whatsapp.png differ diff --git a/sales_commission_users/static/description/assets/modules/1.png b/sales_commission_users/static/description/assets/modules/1.png new file mode 100644 index 000000000..5ecc4d883 Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/1.png differ diff --git a/sales_commission_users/static/description/assets/modules/2.png b/sales_commission_users/static/description/assets/modules/2.png new file mode 100644 index 000000000..d1d3775d6 Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/2.png differ diff --git a/sales_commission_users/static/description/assets/modules/3.png b/sales_commission_users/static/description/assets/modules/3.png new file mode 100644 index 000000000..dcbd0cb06 Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/3.png differ diff --git a/sales_commission_users/static/description/assets/modules/4.png b/sales_commission_users/static/description/assets/modules/4.png new file mode 100644 index 000000000..fd1f87699 Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/4.png differ diff --git a/sales_commission_users/static/description/assets/modules/5.png b/sales_commission_users/static/description/assets/modules/5.png new file mode 100644 index 000000000..05c8b4a69 Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/5.png differ diff --git a/sales_commission_users/static/description/assets/modules/6.png b/sales_commission_users/static/description/assets/modules/6.png new file mode 100644 index 000000000..f5c24146b Binary files /dev/null and b/sales_commission_users/static/description/assets/modules/6.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/discount.png b/sales_commission_users/static/description/assets/screenshots/discount.png new file mode 100644 index 000000000..a84b054f2 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/discount.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/hero.gif b/sales_commission_users/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..e63c183d1 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/hero.gif differ diff --git a/sales_commission_users/static/description/assets/screenshots/img1.png b/sales_commission_users/static/description/assets/screenshots/img1.png new file mode 100644 index 000000000..022f90931 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img1.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img10.png b/sales_commission_users/static/description/assets/screenshots/img10.png new file mode 100644 index 000000000..9638ad8e9 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img10.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img11.png b/sales_commission_users/static/description/assets/screenshots/img11.png new file mode 100644 index 000000000..58cff9e12 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img11.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img12.png b/sales_commission_users/static/description/assets/screenshots/img12.png new file mode 100644 index 000000000..2e3859b21 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img12.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img13.png b/sales_commission_users/static/description/assets/screenshots/img13.png new file mode 100644 index 000000000..bc8e962eb Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img13.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img14.png b/sales_commission_users/static/description/assets/screenshots/img14.png new file mode 100644 index 000000000..6d8dd20de Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img14.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img15.png b/sales_commission_users/static/description/assets/screenshots/img15.png new file mode 100644 index 000000000..323d5a5be Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img15.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img2.png b/sales_commission_users/static/description/assets/screenshots/img2.png new file mode 100644 index 000000000..c26ac86b5 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img2.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img3.png b/sales_commission_users/static/description/assets/screenshots/img3.png new file mode 100644 index 000000000..97f2cf515 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img3.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img4.png b/sales_commission_users/static/description/assets/screenshots/img4.png new file mode 100644 index 000000000..97f2cf515 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img4.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img5.png b/sales_commission_users/static/description/assets/screenshots/img5.png new file mode 100644 index 000000000..46cbc267f Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img5.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img6.png b/sales_commission_users/static/description/assets/screenshots/img6.png new file mode 100644 index 000000000..54900527a Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img6.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img8.png b/sales_commission_users/static/description/assets/screenshots/img8.png new file mode 100644 index 000000000..cdb971e4b Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img8.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img9.png b/sales_commission_users/static/description/assets/screenshots/img9.png new file mode 100644 index 000000000..4c6799177 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img9.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/img_7.png b/sales_commission_users/static/description/assets/screenshots/img_7.png new file mode 100644 index 000000000..1c153bfc5 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/img_7.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/partnerbased.png b/sales_commission_users/static/description/assets/screenshots/partnerbased.png new file mode 100644 index 000000000..dabeef3f4 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/partnerbased.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/prdct based.png b/sales_commission_users/static/description/assets/screenshots/prdct based.png new file mode 100644 index 000000000..dcc7162ae Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/prdct based.png differ diff --git a/sales_commission_users/static/description/assets/screenshots/s7.png b/sales_commission_users/static/description/assets/screenshots/s7.png new file mode 100644 index 000000000..5726c1525 Binary files /dev/null and b/sales_commission_users/static/description/assets/screenshots/s7.png differ diff --git a/sales_commission_users/static/description/banner.jpg b/sales_commission_users/static/description/banner.jpg new file mode 100644 index 000000000..98a13bdd2 Binary files /dev/null and b/sales_commission_users/static/description/banner.jpg differ diff --git a/sales_commission_users/static/description/icon.png b/sales_commission_users/static/description/icon.png new file mode 100644 index 000000000..c67fccf98 Binary files /dev/null and b/sales_commission_users/static/description/icon.png differ diff --git a/sales_commission_users/static/description/index.html b/sales_commission_users/static/description/index.html new file mode 100755 index 000000000..7cd04d0a2 --- /dev/null +++ b/sales_commission_users/static/description/index.html @@ -0,0 +1,644 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Sales Commission +

+

A Module For Sales + Commission on Sale Order.

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

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ The Odoo Sales Commission Module provides the salesperson with a + commission for a particular product, a discount cap, or associated with + a partner, + This Odoo app determines the commission amount for sales commission + based on configurations of the defined sales commission policy, such as + Partner, Products, and Discount limit. It also determines the commission + amount based on configurations set on settings like confirming sales + orders. + You can also generate PDF reports on sales commission lines based on + the commission. + Additionally, it is simple to create invoices from commission lines for + sales representatives. +
+ +
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Commission on Sales Order +
+
+ + Sales Commission based on Partner, Product and + Discount. +
+
+ + Commission Analysis and Report. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+
+

Sales Commission + Menu

+

+ Under Sales > Configuration > Sales Commission, you can create various types of commission.

+ +
+ +
+

Commission + Types

+ +
+ +
+

Standard + Commission

+

+ Standard Commission is the simplest type of commission where you only need to specify the percentage to + be given to the selected salesperson, based on the total sales orders assigned to that sales user.

+ +
+ +
+

Partner Based + Commission

+

+ In Partner-Based Commission, you can define two separate commission percentages based on the partner + category—whether the partner is classified as "Affiliated" or "Non-Affiliated".

+ + +
+
+

Product Based + Commission

+

+ You can select the calculation based on Product, where the sales commission will be applied to the unit + sale price of each product.

+ +
+
+

Discount Based + Commission

+

+ You can set up commission rules based on specific discount percentages.

+ +
+
+

Confirm Sale + Order

+

+ The salesperson's commission is calculated when the sales order is confirmed.

+ +
+
+

Commission Lines + Menu

+

+ Navigate to Sales > Configuration > Commission Lines to view the generated commission lines.

+ +
+
+

Generate Invoice

+

+ Users can generate invoices directly from the commission line.

+ + +
+ +
+

Sales Commission + Report

+

+ Navigate to Sales > Reporting > Sales Commission Report to view an analysis of the commissions awarded + to each sales user.

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

+ 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_commission_users/views/commission_lines_views.xml b/sales_commission_users/views/commission_lines_views.xml new file mode 100644 index 000000000..d8e489dbf --- /dev/null +++ b/sales_commission_users/views/commission_lines_views.xml @@ -0,0 +1,44 @@ + + + + + Create Invoice + ir.actions.server + + + list + + code + + if records: + action = records.action_create_invoice() + + + + + commission.lines.view.tree + commission.lines + + + + + + + + + + + + + + + + Commission Lines + commission.lines + tree,form + + diff --git a/sales_commission_users/views/res_partner_views.xml b/sales_commission_users/views/res_partner_views.xml new file mode 100644 index 000000000..6e7f2be17 --- /dev/null +++ b/sales_commission_users/views/res_partner_views.xml @@ -0,0 +1,16 @@ + + + + + + res.partner.view.form.inherit.sales.commission.users + + res.partner + + + + + + + + diff --git a/sales_commission_users/views/sale_order_views.xml b/sales_commission_users/views/sale_order_views.xml new file mode 100644 index 000000000..9556764ee --- /dev/null +++ b/sales_commission_users/views/sale_order_views.xml @@ -0,0 +1,24 @@ + + + + + + sale.order.view.form.inherit.sales.commission.users + + sale.order + + + + + + + + + + + + + + + + diff --git a/sales_commission_users/views/sales_commission_menus.xml b/sales_commission_users/views/sales_commission_menus.xml new file mode 100644 index 000000000..0d3fe40e6 --- /dev/null +++ b/sales_commission_users/views/sales_commission_menus.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/sales_commission_users/views/sales_commission_views.xml b/sales_commission_users/views/sales_commission_views.xml new file mode 100644 index 000000000..a3d84df4f --- /dev/null +++ b/sales_commission_users/views/sales_commission_views.xml @@ -0,0 +1,76 @@ + + + + + sales.commission.view.form + sales.commission + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + sales.commission.view.tree + sales.commission + + + + + + + + + + + Sales Commission + sales.commission + tree,form + +
diff --git a/sales_commission_users/wizard/__init__.py b/sales_commission_users/wizard/__init__.py new file mode 100644 index 000000000..37656c1a1 --- /dev/null +++ b/sales_commission_users/wizard/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import sales_commission_report diff --git a/sales_commission_users/wizard/sales_commission_report.py b/sales_commission_users/wizard/sales_commission_report.py new file mode 100644 index 000000000..a99c122cf --- /dev/null +++ b/sales_commission_users/wizard/sales_commission_report.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Vishnu K P(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api,fields, models,_ +from odoo.exceptions import ValidationError + +class SalesCommissionReport(models.TransientModel): + """Creating sales commission report model.""" + _name = 'sales.commission.report' + _description = 'Sales Commission Report' + + sales_person_id = fields.Many2one('res.users', string='Sales Person', + help="Sales person") + start_date = fields.Date(string='Start Date', help="Start date") + end_date = fields.Date(string='End Date', help="End date") + + @api.constrains('start_date', 'end_date') + def _check_start_date(self): + """Date validation""" + for rec in self: + if rec.end_date and rec.start_date > rec.end_date: + raise ValidationError( + _('End Date should be greater than Start Date')) + + def action_print_report(self): + """To create a report for sale commission for a sales person""" + data = { + 'sales_person_id': self.sales_person_id.name, + 'start_date': self.start_date, + 'end_date': self.end_date, + } + return self.env.ref( + 'sales_commission_users.sales_commission_report_action' + ).report_action(self, data=data) diff --git a/sales_commission_users/wizard/sales_commission_report_views.xml b/sales_commission_users/wizard/sales_commission_report_views.xml new file mode 100644 index 000000000..7727c4b3b --- /dev/null +++ b/sales_commission_users/wizard/sales_commission_report_views.xml @@ -0,0 +1,33 @@ + + + + + sales.commission.report.view.form + sales.commission.report + +
+ + + + + +
+
+
+
+
+ + + Sales Commission Report + ir.actions.act_window + sales.commission.report + form + + new + +