forked from Mapan/odoo17e
94 lines
4.0 KiB
Python
94 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, models, _
|
|
from odoo.tools import format_date
|
|
|
|
|
|
class L10nHkIr56e(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):
|
|
for sheet in self:
|
|
sheet.display_name = format_date(self.env, sheet.submission_date, date_format="MMMM y", lang_code=self.env.user.lang)
|
|
|
|
def _get_rendering_data(self, employees):
|
|
self.ensure_one()
|
|
|
|
employees_error = self._check_employees(employees)
|
|
if employees_error:
|
|
return {'error': employees_error}
|
|
|
|
main_data = self._get_main_data()
|
|
employees_data = []
|
|
for employee in employees:
|
|
hkid, ppnum = '', ''
|
|
if employee.identification_id:
|
|
hkid = employee.identification_id.strip().upper()
|
|
else:
|
|
ppnum = f'{employee.passport_id}, {employee.l10n_hk_passport_place_of_issue}'
|
|
|
|
spouse_name, spouse_hkid, spouse_passport = '', '', ''
|
|
if employee.marital == 'married':
|
|
spouse_name = employee.spouse_complete_name.upper()
|
|
if employee.l10n_hk_spouse_identification_id:
|
|
spouse_hkid = employee.l10n_hk_spouse_identification_id.strip().upper()
|
|
if employee.l10n_hk_spouse_passport_id or employee.l10n_hk_spouse_passport_place_of_issue:
|
|
spouse_passport = ', '.join(i for i in [employee.l10n_hk_spouse_passport_id, employee.l10n_hk_spouse_passport_place_of_issue] if i)
|
|
|
|
employee_address = ', '.join(i for i in [
|
|
employee.private_street, employee.private_street2, employee.private_city, employee.private_state_id.name, employee.private_country_id.name] if i)
|
|
|
|
sheet_values = {
|
|
'employee': employee,
|
|
'employee_id': employee.id,
|
|
'HKID': hkid,
|
|
'TypeOfForm': self.type_of_form,
|
|
'Surname': employee.l10n_hk_surname,
|
|
'GivenName': employee.l10n_hk_given_name,
|
|
'NameInChinese': employee.l10n_hk_name_in_chinese,
|
|
'Sex': 'M' if employee.gender == 'male' else 'F',
|
|
'MaritalStatus': 2 if employee.marital == 'married' else 1,
|
|
'PpNum': ppnum,
|
|
'SpouseName': spouse_name,
|
|
'SpouseHKID': spouse_hkid,
|
|
'SpousePpNum': spouse_passport,
|
|
'employee_address': employee_address,
|
|
'Capacity': employee.job_title,
|
|
'date_of_commencement': employee.first_contract_date,
|
|
'monthly_salary': employee.contract_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': main_data, '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 _('%s_-_IR56E-%s', employee.name, 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.contract_id.hr_responsible_id or self.env.user
|