diff --git a/addons/hr_payroll/__manifest__.py b/addons/hr_payroll/__manifest__.py index e26ea532ab9..5483d60de8c 100644 --- a/addons/hr_payroll/__manifest__.py +++ b/addons/hr_payroll/__manifest__.py @@ -27,7 +27,6 @@ 'views/res_config_settings_views.xml', 'views/report_contributionregister_templates.xml', 'views/report_payslip_templates.xml', - 'views/report_payslipdetails_templates.xml', 'views/hr_benefit_views.xml', 'views/hr_benefit_views.xml', 'views/hr_leave_views.xml', diff --git a/addons/hr_payroll/models/hr_payslip.py b/addons/hr_payroll/models/hr_payslip.py index d42782c3202..f6f6bf39521 100644 --- a/addons/hr_payroll/models/hr_payslip.py +++ b/addons/hr_payroll/models/hr_payslip.py @@ -59,8 +59,6 @@ class HrPayslip(models.Model): note = fields.Text(string='Internal Note', readonly=True, states={'draft': [('readonly', False)]}) contract_id = fields.Many2one('hr.contract', string='Contract', readonly=True, states={'draft': [('readonly', False)]}) - details_by_salary_rule_category = fields.One2many('hr.payslip.line', - compute='_compute_details_by_salary_rule_category', string='Details by Salary Rule Category') credit_note = fields.Boolean(string='Credit Note', readonly=True, states={'draft': [('readonly', False)]}, help="Indicates this payslip has a refund of another") @@ -68,11 +66,6 @@ class HrPayslip(models.Model): copy=False, states={'draft': [('readonly', False)]}) payslip_count = fields.Integer(compute='_compute_payslip_count', string="Payslip Computation Details") - @api.multi - def _compute_details_by_salary_rule_category(self): - for payslip in self: - payslip.details_by_salary_rule_category = payslip.mapped('line_ids').filtered(lambda line: line.category_id) - @api.multi def _compute_payslip_count(self): for payslip in self: diff --git a/addons/hr_payroll/report/__init__.py b/addons/hr_payroll/report/__init__.py index 308f6ee3cf1..f05ddd9597b 100644 --- a/addons/hr_payroll/report/__init__.py +++ b/addons/hr_payroll/report/__init__.py @@ -2,5 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import report_payslip_details from . import report_contribution_register diff --git a/addons/hr_payroll/report/report_payslip_details.py b/addons/hr_payroll/report/report_payslip_details.py deleted file mode 100644 index db8e7717c1b..00000000000 --- a/addons/hr_payroll/report/report_payslip_details.py +++ /dev/null @@ -1,99 +0,0 @@ -#-*- coding:utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import api, models - -class PayslipDetailsReport(models.AbstractModel): - _name = 'report.hr_payroll.report_payslipdetails' - _description = 'Payslip Details Report' - - def get_details_by_rule_category(self, payslip_lines): - PayslipLine = self.env['hr.payslip.line'] - RuleCateg = self.env['hr.salary.rule.category'] - - def get_recursive_parent(current_rule_category, rule_categories=None): - if rule_categories: - rule_categories = current_rule_category | rule_categories - else: - rule_categories = current_rule_category - - if current_rule_category.parent_id: - return get_recursive_parent(current_rule_category.parent_id, rule_categories) - else: - return rule_categories - - res = {} - result = {} - - if payslip_lines: - self.env.cr.execute(""" - SELECT pl.id, pl.category_id, pl.slip_id FROM hr_payslip_line as pl - LEFT JOIN hr_salary_rule_category AS rc on (pl.category_id = rc.id) - WHERE pl.id in %s - GROUP BY rc.parent_id, pl.sequence, pl.id, pl.category_id - ORDER BY pl.sequence, rc.parent_id""", - (tuple(payslip_lines.ids),)) - for x in self.env.cr.fetchall(): - result.setdefault(x[2], {}) - result[x[2]].setdefault(x[1], []) - result[x[2]][x[1]].append(x[0]) - for payslip_id, lines_dict in result.items(): - res.setdefault(payslip_id, []) - for rule_categ_id, line_ids in lines_dict.items(): - rule_categories = RuleCateg.browse(rule_categ_id) - lines = PayslipLine.browse(line_ids) - level = 0 - for parent in get_recursive_parent(rule_categories): - res[payslip_id].append({ - 'rule_category': parent.name, - 'name': parent.name, - 'code': parent.code, - 'level': level, - 'total': sum(lines.mapped('total')), - }) - level += 1 - for line in lines: - res[payslip_id].append({ - 'rule_category': line.name, - 'name': line.name, - 'code': line.code, - 'total': line.total, - 'level': level - }) - return res - - def get_lines_by_contribution_register(self, payslip_lines): - result = {} - res = {} - for line in payslip_lines.filtered('register_id'): - result.setdefault(line.slip_id.id, {}) - result[line.slip_id.id].setdefault(line.register_id, line) - result[line.slip_id.id][line.register_id] |= line - for payslip_id, lines_dict in result.items(): - res.setdefault(payslip_id, []) - for register, lines in lines_dict.items(): - res[payslip_id].append({ - 'register_name': register.name, - 'total': sum(lines.mapped('total')), - }) - for line in lines: - res[payslip_id].append({ - 'name': line.name, - 'code': line.code, - 'quantity': line.quantity, - 'amount': line.amount, - 'total': line.total, - }) - return res - - @api.model - def _get_report_values(self, docids, data=None): - payslips = self.env['hr.payslip'].browse(docids) - return { - 'doc_ids': docids, - 'doc_model': 'hr.payslip', - 'docs': payslips, - 'data': data, - 'get_details_by_rule_category': self.get_details_by_rule_category(payslips.mapped('details_by_salary_rule_category').filtered(lambda r: r.appears_on_payslip)), - 'get_lines_by_contribution_register': self.get_lines_by_contribution_register(payslips.mapped('line_ids').filtered(lambda r: r.appears_on_payslip)), - } diff --git a/addons/hr_payroll/tests/test_payslip_flow.py b/addons/hr_payroll/tests/test_payslip_flow.py index 3245148d93c..a1b2e301cbe 100644 --- a/addons/hr_payroll/tests/test_payslip_flow.py +++ b/addons/hr_payroll/tests/test_payslip_flow.py @@ -71,9 +71,6 @@ class TestPayslipFlow(TestPayslipBase): # I print the payslip report data, data_format = self.env.ref('hr_payroll.action_report_payslip').render(richard_payslip.ids) - # I print the payslip details report - data, data_format = self.env.ref('hr_payroll.payslip_details_report').render(richard_payslip.ids) - # I print the contribution register report context = {'model': 'hr.contribution.register', 'active_ids': [self.ref('hr_payroll.hr_houserent_register')]} test_reports.try_report_action(self.env.cr, self.env.uid, 'action_payslip_lines_contribution_register', context=context, our_module='hr_payroll') diff --git a/addons/hr_payroll/views/hr_payroll_report.xml b/addons/hr_payroll/views/hr_payroll_report.xml index e9c4ac11ccf..f37c1462f3e 100644 --- a/addons/hr_payroll/views/hr_payroll_report.xml +++ b/addons/hr_payroll/views/hr_payroll_report.xml @@ -19,13 +19,4 @@ print_report_name="'Payslip - %s' % (object.employee_id.name)" /> - diff --git a/addons/hr_payroll/views/hr_payslip_views.xml b/addons/hr_payroll/views/hr_payslip_views.xml index 8dbc78f0274..6cb0c62a4ec 100644 --- a/addons/hr_payroll/views/hr_payslip_views.xml +++ b/addons/hr_payroll/views/hr_payslip_views.xml @@ -230,17 +230,7 @@ - - - - - - - - - - - + @@ -253,7 +243,7 @@
-
+
diff --git a/addons/hr_payroll/views/report_payslipdetails_templates.xml b/addons/hr_payroll/views/report_payslipdetails_templates.xml deleted file mode 100644 index ee6a99af5dd..00000000000 --- a/addons/hr_payroll/views/report_payslipdetails_templates.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - diff --git a/addons/hr_payroll_account/models/hr_payroll_account.py b/addons/hr_payroll_account/models/hr_payroll_account.py index 989d5f260f4..1e21ae1a83a 100644 --- a/addons/hr_payroll_account/models/hr_payroll_account.py +++ b/addons/hr_payroll_account/models/hr_payroll_account.py @@ -69,7 +69,7 @@ class HrPayslip(models.Model): 'journal_id': slip.journal_id.id, 'date': date, } - for line in slip.details_by_salary_rule_category: + for line in slip.line_ids.filtered(lambda line: line.category_id): amount = slip.credit_note and -line.total or line.total if float_is_zero(amount, precision_digits=precision): continue diff --git a/addons/l10n_in_hr_payroll/report/__init__.py b/addons/l10n_in_hr_payroll/report/__init__.py index 9c4069ac8b5..464af19911a 100644 --- a/addons/l10n_in_hr_payroll/report/__init__.py +++ b/addons/l10n_in_hr_payroll/report/__init__.py @@ -1,7 +1,6 @@ # -*- coding:utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import report_payslip_details from . import report_payroll_advice from . import report_hr_salary_employee_bymonth from . import payment_advice_report diff --git a/addons/l10n_in_hr_payroll/report/report_payslip_details.py b/addons/l10n_in_hr_payroll/report/report_payslip_details.py deleted file mode 100644 index 373ddd89ebb..00000000000 --- a/addons/l10n_in_hr_payroll/report/report_payslip_details.py +++ /dev/null @@ -1,20 +0,0 @@ -#-*- coding:utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import api, models - - -class PayslipDetailsReportIN(models.AbstractModel): - _name = 'report.l10n_in_hr_payroll.report_payslipdetails' - _inherit = 'report.hr_payroll.report_payslipdetails' - - @api.model - def _get_report_values(self, docids, data=None): - payslips = self.env['hr.payslip'].browse(docids) - return { - 'doc_ids': docids, - 'doc_model': 'hr.payslip', - 'docs': payslips, - 'data': data, - 'get_details_by_rule_category': self.get_details_by_rule_category(payslips.mapped('details_by_salary_rule_category')) - }