mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] hr_commission: extended ahead of timesheet based commission
* Allow invoice to see commission it is deriving amount for. This allows for basing on amounts that may depend on the employee or contract config. * Prevent making commissions if the employee rate or admin rates are not set. * Updated views to work in both CE and EE
This commit is contained in:
@@ -36,7 +36,7 @@ class AccountMove(models.Model):
|
||||
self.env['hr.commission'].invoice_paid(self)
|
||||
return res
|
||||
|
||||
def amount_for_commission(self):
|
||||
def amount_for_commission(self, commission=None):
|
||||
if hasattr(self, 'margin') and self.company_id.commission_amount_type == 'on_invoice_margin':
|
||||
sign = -1 if self.move_type in ['in_refund', 'out_refund'] else 1
|
||||
return self.margin * sign
|
||||
|
||||
@@ -71,14 +71,14 @@ class Commission(models.Model):
|
||||
elif commission.contract_id and commission.rate_type != 'manual':
|
||||
if commission.rate_type == 'normal':
|
||||
commission.rate = commission.contract_id.commission_rate
|
||||
else:
|
||||
elif commission.rate_type == 'admin':
|
||||
commission.rate = commission.contract_id.admin_commission_rate
|
||||
|
||||
rounding = 2
|
||||
if commission.source_move_id:
|
||||
rounding = commission.source_move_id.company_currency_id.rounding
|
||||
commission.base_total = commission.source_move_id.amount_total_signed
|
||||
commission.base_amount = commission.source_move_id.amount_for_commission()
|
||||
commission.base_amount = commission.source_move_id.amount_for_commission(commission)
|
||||
|
||||
amount = (commission.base_amount * commission.rate) / 100.0
|
||||
if float_is_zero(amount, precision_rounding=rounding):
|
||||
@@ -123,7 +123,7 @@ class Commission(models.Model):
|
||||
else:
|
||||
employee = employee_obj.search([('user_id', '=', move.invoice_user_id.id)], limit=1)
|
||||
contract = employee.contract_id
|
||||
if all((employee, contract)):
|
||||
if all((employee, contract, contract.commission_rate)):
|
||||
move.commission_ids += commission_obj.create({
|
||||
'employee_id': employee.id,
|
||||
'contract_id': contract.id,
|
||||
@@ -136,7 +136,7 @@ class Commission(models.Model):
|
||||
# Admin/Coach commission.
|
||||
employee = employee.coach_id
|
||||
contract = employee.contract_id
|
||||
if all((employee, contract)):
|
||||
if all((employee, contract, contract.admin_commission_rate)):
|
||||
move.commission_ids += commission_obj.create({
|
||||
'employee_id': employee.id,
|
||||
'contract_id': contract.id,
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<field name="employee_id"/>
|
||||
<field name="contract_id"/>
|
||||
<field name="base_total" string="Invoice Total" sum="Invoice Total"/>
|
||||
<field name="base_amount" string="Margin" sum="Margin Total"/>
|
||||
<field name="base_amount" string="Base" sum="Base Total"/>
|
||||
<field name="amount" string="Commission" sum="Commission Total"/>
|
||||
<field name="state"/>
|
||||
<field name="move_date"/>
|
||||
@@ -118,16 +118,16 @@
|
||||
|
||||
<menuitem
|
||||
action="action_hr_commission"
|
||||
id="menu_action_account_commission_form"
|
||||
parent="account.menu_finance_entries"
|
||||
sequence="90"
|
||||
id="menu_action_account_commission_root"
|
||||
parent="account.menu_finance_receivables"
|
||||
sequence="120"
|
||||
/>
|
||||
|
||||
<menuitem
|
||||
action="action_hr_commission"
|
||||
id="menu_action_account_commission_form2"
|
||||
parent="menu_action_account_commission_form"
|
||||
sequence="90"
|
||||
id="menu_action_account_commission_form"
|
||||
parent="menu_action_account_commission_root"
|
||||
sequence="10"
|
||||
/>
|
||||
|
||||
<record id="action_commission_mark_paid" model="ir.actions.server">
|
||||
@@ -210,8 +210,8 @@ action = records.action_mark_paid()
|
||||
<menuitem
|
||||
action="action_hr_commission_payment"
|
||||
id="menu_action_account_commission_payment_form"
|
||||
parent="menu_action_account_commission_form"
|
||||
sequence="100"
|
||||
parent="menu_action_account_commission_root"
|
||||
sequence="10"
|
||||
/>
|
||||
|
||||
<!-- Commission Structure -->
|
||||
@@ -240,4 +240,17 @@ action = records.action_mark_paid()
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_commission_structure" model="ir.actions.act_window">
|
||||
<field name="name">Commission Structures</field>
|
||||
<field name="res_model">hr.commission.structure</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
action="action_commission_structure"
|
||||
id="menu_action_account_commission_structure"
|
||||
parent="menu_action_account_commission_root"
|
||||
sequence="30"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user