mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Additionally `hr_commission`: test archive contracts in case someone moves one to running
59 lines
2.6 KiB
Python
59 lines
2.6 KiB
Python
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
|
|
|
from datetime import date, timedelta
|
|
|
|
from odoo.addons.hr_commission.tests import test_commission
|
|
|
|
|
|
class TestCommissionPayslip(test_commission.TestCommission):
|
|
|
|
def _createContract(self, employee, commission_rate, admin_commission_rate=0.0):
|
|
return self.env['hr.contract'].create({
|
|
'date_start': '2016-01-01',
|
|
'date_end': '2030-12-31',
|
|
'name': 'Contract for tests',
|
|
'wage': 1000.0,
|
|
'wage_type': 'monthly',
|
|
# 'type_id': self.ref('hr_contract.hr_contract_type_emp'),
|
|
'structure_type_id': self.ref('hr_contract.structure_type_worker'),
|
|
'employee_id': employee.id,
|
|
'resource_calendar_id': self.ref('resource.resource_calendar_std'),
|
|
'commission_rate': commission_rate,
|
|
'admin_commission_rate': admin_commission_rate,
|
|
'state': 'open', # if not "Running" then no automatic selection when Payslip is created in 11.0
|
|
})
|
|
|
|
def test_commission(self):
|
|
super().test_commission()
|
|
commission_type = self.env.ref('hr_payroll_commission.commission_other_input')
|
|
payslip = self.env['hr.payslip'].create({
|
|
'name': 'test slip',
|
|
'employee_id': self.employee.id,
|
|
'date_from': date.today() - timedelta(days=1),
|
|
'date_to': date.today() + timedelta(days=14),
|
|
})
|
|
self.assertFalse(payslip.commission_payment_ids)
|
|
payslip.action_payslip_cancel()
|
|
|
|
# find unpaid commission payments from super().test_commission()
|
|
commission_payments = self.env['hr.commission.payment'].search([
|
|
('employee_id', '=', self.employee.id),
|
|
])
|
|
self.assertTrue(commission_payments)
|
|
|
|
# press the button to pay it via payroll
|
|
commission_payments.action_report_in_next_payslip()
|
|
|
|
payslip = self.env['hr.payslip'].create({
|
|
'name': 'test slip',
|
|
'employee_id': self.employee.id,
|
|
'date_from': date.today() - timedelta(days=1),
|
|
'date_to': date.today() + timedelta(days=14),
|
|
})
|
|
# has attached commission payments
|
|
self.assertTrue(payslip.commission_payment_ids)
|
|
commission_input_lines = payslip.input_line_ids.filtered(lambda l: l.input_type_id == commission_type)
|
|
self.assertTrue(commission_input_lines)
|
|
self.assertEqual(sum(commission_input_lines.mapped('amount')),
|
|
sum(commission_payments.mapped('commission_amount')))
|