diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 0b612cac04c..8549a93d833 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -955,6 +955,15 @@ class hr_payslip_line(osv.osv): 'total': fields.function(_calculate_total, method=True, type='float', string='Total', digits_compute=dp.get_precision('Payroll'),store=True ), } + def create(self, cr, uid, values, context=None): + if 'employee_id' not in values or 'contract_id' not in values: + payslip = self.pool['hr.payslip'].browse(cr, uid, values.get('slip_id') or []) + values['employee_id'] = values.get('employee_id') or payslip.employee_id.id + values['contract_id'] = values.get('contract_id') or payslip.contract_id and payslip.contract_id.id + if not values['contract_id']: + raise UserError(_('You must set a contract to create a payslip line.')) + return super(hr_payslip_line, self).create(cr, uid, values, context=context) + _defaults = { 'quantity': 1.0, 'rate': 100.0, diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index 52ab87f4ce8..055a2436dbe 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -296,6 +296,7 @@ + diff --git a/addons/hr_payroll/i18n/hr_payroll.pot b/addons/hr_payroll/i18n/hr_payroll.pot index 2e055ac2743..c49506c1e51 100644 --- a/addons/hr_payroll/i18n/hr_payroll.pot +++ b/addons/hr_payroll/i18n/hr_payroll.pot @@ -1351,6 +1351,12 @@ msgstr "" msgid "You must select employee(s) to generate payslip(s)." msgstr "" +#. module: hr_payroll +#: code:addons/hr_payroll/hr_payroll.py:964 +#, python-format +msgid "You must set a contract to create a payslip line." +msgstr "" + #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payroll_config_settings msgid "hr.payroll.config.settings"