diff --git a/hr_payroll_account_batch/__init__.py b/hr_payroll_account_batch/__init__.py new file mode 100755 index 00000000..9b429614 --- /dev/null +++ b/hr_payroll_account_batch/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/hr_payroll_account_batch/__manifest__.py b/hr_payroll_account_batch/__manifest__.py new file mode 100755 index 00000000..6875406a --- /dev/null +++ b/hr_payroll_account_batch/__manifest__.py @@ -0,0 +1,20 @@ +{ + 'name': 'Payslip Batch Date', + 'description': """ +Set the Accounting Date on a Payslip Batch. + +Additionally, changes to the Salary Journal and Date Account on the batch itself +will propagate to any draft payslip already existing on the batch. +""", + 'version': '11.0.1.0.0', + 'website': 'https://hibou.io/', + 'author': 'Hibou Corp. ', + 'license': 'AGPL-3', + 'category': 'Human Resources', + 'depends': [ + 'hr_payroll_account', + ], + 'data': [ + 'views/payroll_views.xml', + ], +} diff --git a/hr_payroll_account_batch/models/__init__.py b/hr_payroll_account_batch/models/__init__.py new file mode 100644 index 00000000..2fc9ea9f --- /dev/null +++ b/hr_payroll_account_batch/models/__init__.py @@ -0,0 +1 @@ +from . import payroll diff --git a/hr_payroll_account_batch/models/payroll.py b/hr_payroll_account_batch/models/payroll.py new file mode 100644 index 00000000..5d049f50 --- /dev/null +++ b/hr_payroll_account_batch/models/payroll.py @@ -0,0 +1,30 @@ +from odoo import api, fields, models + + +class HrPayslip(models.Model): + _inherit = 'hr.payslip' + + @api.model + def create(self, vals): + if 'date' in self.env.context: + vals['date'] = self.env.context.get('date') + return super(HrPayslip, self).create(vals) + + +class PayslipBatch(models.Model): + _inherit = 'hr.payslip.run' + + date = fields.Date('Date Account', states={'draft': [('readonly', False)]}, readonly=True, + help="Keep empty to use the period of the validation(Payslip) date.") + + def write(self, values): + if 'date' in values or 'journal_id' in values: + slips = self.mapped('slip_ids').filtered(lambda s: s.state in ('draft', 'verify')) + slip_values = {} + if 'date' in values: + slip_values['date'] = values['date'] + if 'journal_id' in values: + slip_values['journal_id'] = values['journal_id'] + slips.write(slip_values) + + return super(PayslipBatch, self).write(values) diff --git a/hr_payroll_account_batch/views/payroll_views.xml b/hr_payroll_account_batch/views/payroll_views.xml new file mode 100644 index 00000000..bb685d9e --- /dev/null +++ b/hr_payroll_account_batch/views/payroll_views.xml @@ -0,0 +1,13 @@ + + + + hr.payslip.run.form.inherit + hr.payslip.run + + + + + + + + \ No newline at end of file diff --git a/hr_payroll_account_batch/wizard/__init__.py b/hr_payroll_account_batch/wizard/__init__.py new file mode 100644 index 00000000..32204f1f --- /dev/null +++ b/hr_payroll_account_batch/wizard/__init__.py @@ -0,0 +1 @@ +from . import payroll_wizard diff --git a/hr_payroll_account_batch/wizard/payroll_wizard.py b/hr_payroll_account_batch/wizard/payroll_wizard.py new file mode 100644 index 00000000..ca1c5691 --- /dev/null +++ b/hr_payroll_account_batch/wizard/payroll_wizard.py @@ -0,0 +1,12 @@ +from odoo import api, models + + +class HrPayslipEmployees(models.TransientModel): + _inherit = 'hr.payslip.employees' + + @api.multi + def compute_sheet(self): + date = False + if self.env.context.get('active_id'): + date = self.env['hr.payslip.run'].browse(self.env.context.get('active_id')).date + return super(HrPayslipEmployees, self.with_context(date=date)).compute_sheet()