Files
enterprise-addons/l10n_hk_hr_payroll/models/l10n_hk_ir56e.py
T

68 lines
2.5 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models
from odoo.tools import format_date
class L10n_HkIr56e(models.Model):
_name = 'l10n_hk.ir56e'
_inherit = ['l10n_hk.ird']
_description = 'IR56E Sheet'
_order = 'submission_date'
@api.depends('submission_date')
def _compute_display_name(self):
lang_code = self.env.user.lang or 'en_US'
for sheet in self:
if sheet.submission_date:
sheet.display_name = format_date(self.env, sheet.submission_date, date_format="MMMM y", lang_code=lang_code)
else:
sheet.display_name = sheet.env._("IR56E Sheet")
def _get_rendering_data(self, employees):
self.ensure_one()
employees_error = self._check_employees(employees)
if employees_error:
return {'error': employees_error}
report_info = self._get_report_info_data()
employees_data = []
for employee in employees:
sheet_values = {
**self._get_employee_data(employee),
**self._get_employee_spouse_data(employee),
'TypeOfForm': self.type_of_form,
'monthly_salary': employee.version_id.wage,
'PlaceOfResInd': int(bool(employee.l10n_hk_rental_id)),
}
if employee.l10n_hk_rental_id:
sheet_values.update({
'AddrOfPlace': employee.l10n_hk_rental_id.address,
'NatureOfPlace': employee.l10n_hk_rental_id.nature,
'RentPaidEe': employee.l10n_hk_rental_id.amount,
'RentRefund': employee.l10n_hk_rental_id.amount,
})
employees_data.append(sheet_values)
return {'data': report_info, 'employees_data': employees_data}
def _get_pdf_report(self):
return self.env.ref('l10n_hk_hr_payroll.action_report_employee_ir56e')
def _get_pdf_filename(self, employee):
self.ensure_one()
return self.env._('%(employee_name)s_-_IR56E-%(submission_date)s', employee_name=employee.name, submission_date=self.submission_date)
def _post_process_rendering_data_pdf(self, rendering_data):
result = {}
for sheet_values in rendering_data['employees_data']:
result[sheet_values['employee']] = {**sheet_values, **rendering_data['data']}
return result
def _get_posted_document_owner(self, employee):
return employee.version_id.hr_responsible_id or self.env.user