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"