diff --git a/hr_payroll_rate/models/payroll.py b/hr_payroll_rate/models/payroll.py index 7bc47ac6..1b13404c 100644 --- a/hr_payroll_rate/models/payroll.py +++ b/hr_payroll_rate/models/payroll.py @@ -18,10 +18,15 @@ class PayrollRate(models.Model): class Payslip(models.Model): _inherit = 'hr.payslip' - def get_rate(self, code): - self.ensure_one() - return self.env['hr.payroll.rate'].search([ + def _get_rate_domain(self, code): + return [ '|', ('date_to', '=', False), ('date_to', '>=', self.date_to), + '|', ('company_id', '=', False), ('company_id', '=', self.company_id.id), ('code', '=', code), ('date_from', '<=', self.date_from), - ], limit=1) + ] + + def get_rate(self, code): + self.ensure_one() + return self.env['hr.payroll.rate'].search( + self._get_rate_domain(code), limit=1) diff --git a/hr_payroll_rate/tests/test_payroll_rate.py b/hr_payroll_rate/tests/test_payroll_rate.py index ce165bd2..a0a7aa9c 100644 --- a/hr_payroll_rate/tests/test_payroll_rate.py +++ b/hr_payroll_rate/tests/test_payroll_rate.py @@ -27,8 +27,31 @@ class TestPayrollRate(common.TransactionCase): self.payslip = self.env['hr.payslip'].create({ 'employee_id': self.employee.id, }) + self.company_other = self.env['res.company'].create({ + 'name': 'Other' + }) - def test_payslip_timesheet(self): + def test_payroll_rate_basic(self): + rate = self.payslip.get_rate('TEST') + self.assertFalse(rate) + test_rate = self.env['hr.payroll.rate'].create({ + 'name': 'Test Rate', + 'code': 'TEST', + 'rate': 1.65, + 'date_from': '2018-01-01', + }) + + rate = self.payslip.get_rate('TEST') + self.assertEqual(rate, test_rate) + + def test_payroll_rate_multicompany(self): + test_rate_other = self.env['hr.payroll.rate'].create({ + 'name': 'Test Rate', + 'code': 'TEST', + 'rate': 1.65, + 'date_from': '2018-01-01', + 'company_id': self.company_other.id, + }) rate = self.payslip.get_rate('TEST') self.assertFalse(rate) test_rate = self.env['hr.payroll.rate'].create({