From 57236ba173358ec26454a33379430cf285a195b6 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 10 Dec 2019 00:08:39 +0100 Subject: [PATCH] Small fixes in commission modules --- commission_simple/models/account_invoice_line.py | 16 ++++++++++------ commission_simple/views/commission.xml | 2 +- commission_simple/wizard/commission_compute.py | 3 ++- commission_simple_sale/security/rule.xml | 8 ++++++++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/commission_simple/models/account_invoice_line.py b/commission_simple/models/account_invoice_line.py index 4d78052..5aa07aa 100644 --- a/commission_simple/models/account_invoice_line.py +++ b/commission_simple/models/account_invoice_line.py @@ -14,7 +14,7 @@ class AccountInvoiceLine(models.Model): user_id = fields.Many2one( related='invoice_id.user_id', store=True, readonly=True) product_categ_id = fields.Many2one( - related='product_id.categ_id', store=True, readonly=True) + related='product_id.product_tmpl_id.categ_id', store=True, readonly=True) commission_result_id = fields.Many2one( 'commission.result', string='Commission Result') commission_rule_id = fields.Many2one( @@ -26,17 +26,20 @@ class AccountInvoiceLine(models.Model): readonly=True, compute='_compute_commission_amount', store=True) @api.depends('commission_rate', 'commission_base') - def _compute_amount(self): + def _compute_commission_amount(self): for line in self: - line.commission_amount = line.commission_rate * line.commission_base / 100.0 + line.commission_amount = line.company_currency_id.round( + line.commission_rate * line.commission_base / 100.0) def compute_commission_for_one_user(self, user, date_range, rules): profile = user.commission_profile_id + company = profile.company_id + company_currency = company.currency_id assert profile domain = [ ('invoice_type', 'in', ('out_invoice', 'out_refund')), ('date_invoice', '<=', date_range.date_end), - ('company_id', '=', self.env.user.company_id.id), + ('company_id', '=', company.id), ('user_id', '=', user.id), ('commission_result_id', '=', False), ] @@ -61,7 +64,9 @@ class AccountInvoiceLine(models.Model): lvals = iline._prepare_commission_data(rule, com_result) if lvals: iline.write(lvals) - total += lvals['commission_amount'] + total += company_currency.round( + lvals['commission_rate'] * lvals['commission_base'] + / 100.0) com_result.amount_total = total return com_result @@ -103,6 +108,5 @@ class AccountInvoiceLine(models.Model): # company currency 'commission_base': self.price_subtotal_signed, 'commission_rate': rule['rate'], - 'commission_amount': rule['rate'] * self.price_subtotal_signed, } return lvals diff --git a/commission_simple/views/commission.xml b/commission_simple/views/commission.xml index 4c9aa95..9e5640e 100644 --- a/commission_simple/views/commission.xml +++ b/commission_simple/views/commission.xml @@ -89,7 +89,7 @@ commission.rule.tree commission.rule - + diff --git a/commission_simple/wizard/commission_compute.py b/commission_simple/wizard/commission_compute.py index f3a8fec..d288b1f 100644 --- a/commission_simple/wizard/commission_compute.py +++ b/commission_simple/wizard/commission_compute.py @@ -22,7 +22,8 @@ class CommissionCompute(models.TransientModel): today = fields.Date.from_string(fields.Date.context_today(self)) first_day_last_month = today + relativedelta(months=-1, day=1) dranges = self.env['date.range'].search([ - ('company_id', '=', self.env.user.company_id.id), + '|', ('company_id', '=', self.env.user.company_id.id), + ('company_id', '=', False), ('type_id', '=', drange_type.id), ('date_start', '=', fields.Date.to_string(first_day_last_month)) ]) diff --git a/commission_simple_sale/security/rule.xml b/commission_simple_sale/security/rule.xml index 00e8e15..91ab28d 100644 --- a/commission_simple_sale/security/rule.xml +++ b/commission_simple_sale/security/rule.xml @@ -15,5 +15,13 @@ [('user_id', '=', user.id)] + + Commission Result for Sales Manager (see all) + + + [(1, '=', 1)] + + +