# -*- coding: utf-8 -*- ################################################################################# # Author : Webkul Software Pvt. Ltd. (:wink: # Copyright(c): 2015-Present Webkul Software Pvt. Ltd. # All Rights Reserved. # # # # This program is copyright property of the author mentioned above. # You can`t redistribute it and/or modify it. # # # You should have received a copy of the License along with this program. # If not, see ; ################################################################################# from odoo import models, fields, api, _ from odoo.exceptions import UserError import logging _logger = logging.getLogger(__name__) class AffiliateCommision(models.Model): _name = "advance.commision" _description = "Affiliate Commision Model" name = fields.Char(string="Name", required=True) pricelist_item_ids = fields.One2many("affiliate.product.pricelist.item", 'advance_commision_id', string="Item") active_adv_comsn = fields.Boolean(default=True, string="Active") def toggle_active_button(self): if self.active_adv_comsn: self.active_adv_comsn = False else: self.active_adv_comsn = True # argument of calc_commision_adv(adv_comm_id, product_id on which commision apply , price of product) def calc_commision_adv(self, adv_comsn_id, product_templ_id, product_price): _logger.info("-----in adcvace commision model-- method-- calc_commision_adv-----") product_tmpl_category_ids = self.env['product.template'].browse([product_templ_id]).public_categ_ids _logger.info("**********-----product_tmpl_category_ids--%r********", product_tmpl_category_ids) pricelist_ids = self.env['affiliate.product.pricelist.item'].search([('advance_commision_id', '=', adv_comsn_id)]) for pricelist_id in pricelist_ids: _logger.info("***====pricelist_id.name=%r======", pricelist_id.name) commision_value = False commision_value_type = False adv_commision_amount = False # on global product if pricelist_id.applied_on == "3_global": if pricelist_id.compute_price == "fixed": commision_value = pricelist_id.fixed_price commision_value_type = 'fixed' adv_commision_amount = pricelist_id.fixed_price else: if pricelist_id.compute_price == "percentage": commision_value = product_price * (pricelist_id.percent_price / 100) commision_value_type = 'percentage' adv_commision_amount = pricelist_id.percent_price else: # on product category if pricelist_id.applied_on == "2_product_category": if pricelist_id.categ_id in product_tmpl_category_ids: if pricelist_id.compute_price == "fixed": commision_value = pricelist_id.fixed_price commision_value_type = 'fixed' adv_commision_amount = pricelist_id.fixed_price else: if pricelist_id.compute_price == "percentage": commision_value = product_price * (pricelist_id.percent_price / 100) commision_value_type = 'percentage' adv_commision_amount = pricelist_id.percent_price else: # on specific product if pricelist_id.applied_on == "1_product": if product_templ_id == pricelist_id.product_tmpl_id.id: if pricelist_id.compute_price == "fixed": commision_value = pricelist_id.fixed_price commision_value_type = 'fixed' adv_commision_amount = pricelist_id.fixed_price else: if pricelist_id.compute_price == "percentage": commision_value = product_price * (pricelist_id.percent_price / 100) commision_value_type = 'percentage' adv_commision_amount = pricelist_id.percent_price if commision_value and commision_value_type: break # this break is used for if advance commission found in pricelist ids # then it will break so that further pricelist ids is not executed in for loop # this is for calculation advance commission base on global, perticular product or category return adv_commision_amount, commision_value, commision_value_type