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 @@
-
-
-
-
-
-
-
-
Pay Slip
-
-
-
-
- | Name |
- |
- Designation |
- |
-
-
- | Address |
-
-
- |
-
-
- | Email |
- |
- Identification No |
- |
-
-
- | Reference |
- |
- Bank Account |
- |
-
-
- | Date From |
- |
- Date To |
- |
-
-
-
-
Details by Salary Rule Category
-
-
-
- | Code |
- Salary Rule Category |
- Total |
-
-
-
-
- |
-
- |
-
-
- |
-
-
- |
-
-
-
-
-
Payslip Lines by Contribution Register
-
-
-
- | Code |
- Name |
- Quantity/rate |
- Amount |
- Total |
-
-
-
-
- |
- |
- |
- |
-
-
- |
-
-
-
-
-
Authorized signature
-
-
-
-
-
-
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'))
- }