Add salary revision letter report
This commit is contained in:
parent
17b453ecad
commit
94b03662fa
@ -1,2 +1,3 @@
|
||||
from . import models
|
||||
from . import hooks
|
||||
from .hooks import post_init_hook
|
||||
|
||||
@ -7,6 +7,8 @@
|
||||
"license": "LGPL-3",
|
||||
"depends": ["payroll"],
|
||||
"data": [
|
||||
"views/hr_contract_views.xml",
|
||||
"reports/salary_revision_letter.xml",
|
||||
"views/hr_payslip_views.xml",
|
||||
],
|
||||
"post_init_hook": "post_init_hook",
|
||||
|
||||
1
addons/mcs_simple_payroll/models/__init__.py
Normal file
1
addons/mcs_simple_payroll/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from . import hr_contract
|
||||
60
addons/mcs_simple_payroll/models/hr_contract.py
Normal file
60
addons/mcs_simple_payroll/models/hr_contract.py
Normal file
@ -0,0 +1,60 @@
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrContract(models.Model):
|
||||
_inherit = "hr.contract"
|
||||
|
||||
mcs_salary_revision_state = fields.Selection(
|
||||
[
|
||||
("draft", "Draft"),
|
||||
("sent", "Sent"),
|
||||
("signed", "Signed"),
|
||||
("archived", "Archived"),
|
||||
],
|
||||
string="Salary Letter Status",
|
||||
default="draft",
|
||||
tracking=True,
|
||||
)
|
||||
mcs_salary_revision_sent_date = fields.Date(
|
||||
string="Letter Sent Date", tracking=True
|
||||
)
|
||||
mcs_salary_revision_signed_date = fields.Date(
|
||||
string="Letter Signed Date", tracking=True
|
||||
)
|
||||
mcs_salary_revision_notes = fields.Text(string="Salary Revision Notes")
|
||||
|
||||
def action_mcs_generate_salary_revision_letter(self):
|
||||
today = fields.Date.context_today(self)
|
||||
for contract in self:
|
||||
if contract.mcs_salary_revision_state == "draft":
|
||||
contract.write(
|
||||
{
|
||||
"mcs_salary_revision_state": "sent",
|
||||
"mcs_salary_revision_sent_date": today,
|
||||
}
|
||||
)
|
||||
return self.env.ref(
|
||||
"mcs_simple_payroll.action_report_salary_revision_letter"
|
||||
).report_action(self)
|
||||
|
||||
def action_mcs_mark_salary_letter_sent(self):
|
||||
self.write(
|
||||
{
|
||||
"mcs_salary_revision_state": "sent",
|
||||
"mcs_salary_revision_sent_date": fields.Date.context_today(self),
|
||||
}
|
||||
)
|
||||
return True
|
||||
|
||||
def action_mcs_mark_salary_letter_signed(self):
|
||||
self.write(
|
||||
{
|
||||
"mcs_salary_revision_state": "signed",
|
||||
"mcs_salary_revision_signed_date": fields.Date.context_today(self),
|
||||
}
|
||||
)
|
||||
return True
|
||||
|
||||
def action_mcs_archive_salary_letter(self):
|
||||
self.write({"mcs_salary_revision_state": "archived"})
|
||||
return True
|
||||
80
addons/mcs_simple_payroll/reports/salary_revision_letter.xml
Normal file
80
addons/mcs_simple_payroll/reports/salary_revision_letter.xml
Normal file
@ -0,0 +1,80 @@
|
||||
<odoo>
|
||||
<record id="action_report_salary_revision_letter" model="ir.actions.report">
|
||||
<field name="name">Salary Revision Letter</field>
|
||||
<field name="model">hr.contract</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">mcs_simple_payroll.report_salary_revision_letter</field>
|
||||
<field name="report_file">mcs_simple_payroll.report_salary_revision_letter</field>
|
||||
<field name="binding_model_id" ref="hr_contract.model_hr_contract"/>
|
||||
<field name="binding_type">report</field>
|
||||
<field name="attachment_use">True</field>
|
||||
<field name="attachment">'Salary Revision Letter - %s - %s' % (object.employee_id.name, object.date_start)</field>
|
||||
<field name="print_report_name">'Salary Revision Letter - %s - %s' % (object.employee_id.name, object.date_start)</field>
|
||||
</record>
|
||||
|
||||
<template id="report_salary_revision_letter">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page">
|
||||
<h2>Salary Revision Letter</h2>
|
||||
<p>
|
||||
<strong>Date:</strong>
|
||||
<span t-field="o.mcs_salary_revision_sent_date"/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Employee:</strong>
|
||||
<span t-field="o.employee_id.name"/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Designation:</strong>
|
||||
<span t-field="o.employee_id.job_title"/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Company:</strong>
|
||||
<span t-field="o.company_id.name"/>
|
||||
</p>
|
||||
|
||||
<p>Dear <span t-field="o.employee_id.name"/>,</p>
|
||||
|
||||
<p>
|
||||
This letter confirms the revision of your monthly salary to
|
||||
<strong>
|
||||
<span t-esc="o.wage" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
|
||||
</strong>,
|
||||
effective
|
||||
<strong><span t-field="o.date_start"/></strong>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This salary will be processed through the MCS Simple Monthly Payroll structure.
|
||||
No statutory tax, PF, ESI, or similar deductions are applied in this structure unless
|
||||
the company separately registers for those obligations or is legally required to apply them.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
All other employment terms remain unchanged unless separately communicated in writing.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Please acknowledge acceptance by signing below.
|
||||
</p>
|
||||
|
||||
<table class="table table-sm mt-5">
|
||||
<tr>
|
||||
<td style="width: 50%; padding-top: 60px;">
|
||||
<strong>For <span t-field="o.company_id.name"/></strong><br/>
|
||||
Authorized Signatory
|
||||
</td>
|
||||
<td style="width: 50%; padding-top: 60px;">
|
||||
<strong>Employee Acceptance</strong><br/>
|
||||
<span t-field="o.employee_id.name"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
20
addons/mcs_simple_payroll/views/hr_contract_views.xml
Normal file
20
addons/mcs_simple_payroll/views/hr_contract_views.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<odoo>
|
||||
<record id="view_hr_contract_form_mcs_salary_revision" model="ir.ui.view">
|
||||
<field name="name">hr.contract.form.mcs.salary.revision</field>
|
||||
<field name="model">hr.contract</field>
|
||||
<field name="inherit_id" ref="payroll.hr_contract_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//header" position="inside">
|
||||
<button name="action_mcs_generate_salary_revision_letter" type="object" string="Generate Salary Letter" class="btn-primary"/>
|
||||
<button name="action_mcs_mark_salary_letter_signed" type="object" string="Mark Signed" invisible="mcs_salary_revision_state == 'signed'"/>
|
||||
<button name="action_mcs_archive_salary_letter" type="object" string="Archive Letter" invisible="mcs_salary_revision_state == 'archived'"/>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='salary']" position="inside">
|
||||
<field name="mcs_salary_revision_state" widget="statusbar" statusbar_visible="draft,sent,signed,archived"/>
|
||||
<field name="mcs_salary_revision_sent_date"/>
|
||||
<field name="mcs_salary_revision_signed_date"/>
|
||||
<field name="mcs_salary_revision_notes" placeholder="Internal notes for salary revision letter."/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Loading…
x
Reference in New Issue
Block a user