odoo-addon-hr-appraisal-oca 16.0.1.0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/hr_appraisal_oca/README.rst +218 -0
- odoo/addons/hr_appraisal_oca/__init__.py +2 -0
- odoo/addons/hr_appraisal_oca/__manifest__.py +28 -0
- odoo/addons/hr_appraisal_oca/data/mail_activity_type_data.xml +9 -0
- odoo/addons/hr_appraisal_oca/data/mail_template_data.xml +167 -0
- odoo/addons/hr_appraisal_oca/i18n/es.po +1201 -0
- odoo/addons/hr_appraisal_oca/i18n/hr_appraisal_oca.pot +1086 -0
- odoo/addons/hr_appraisal_oca/models/__init__.py +5 -0
- odoo/addons/hr_appraisal_oca/models/hr_appraisal.py +444 -0
- odoo/addons/hr_appraisal_oca/models/hr_appraisal_tag.py +21 -0
- odoo/addons/hr_appraisal_oca/models/hr_appraisal_template.py +31 -0
- odoo/addons/hr_appraisal_oca/models/hr_employee.py +125 -0
- odoo/addons/hr_appraisal_oca/models/res_config_settings.py +16 -0
- odoo/addons/hr_appraisal_oca/readme/CONTRIBUTORS.md +6 -0
- odoo/addons/hr_appraisal_oca/readme/DESCRIPTION.md +5 -0
- odoo/addons/hr_appraisal_oca/readme/USAGE.md +95 -0
- odoo/addons/hr_appraisal_oca/security/hr_appraisal_security.xml +58 -0
- odoo/addons/hr_appraisal_oca/security/ir.model.access.csv +10 -0
- odoo/addons/hr_appraisal_oca/static/description/banner.png +0 -0
- odoo/addons/hr_appraisal_oca/static/description/icon.png +0 -0
- odoo/addons/hr_appraisal_oca/static/description/index.html +535 -0
- odoo/addons/hr_appraisal_oca/tests/__init__.py +1 -0
- odoo/addons/hr_appraisal_oca/tests/test_hr_appraisal.py +120 -0
- odoo/addons/hr_appraisal_oca/views/hr_appraisal_form_view.xml +465 -0
- odoo/addons/hr_appraisal_oca/views/hr_appraisal_tag_form_view.xml +47 -0
- odoo/addons/hr_appraisal_oca/views/hr_appraisal_template_form_view.xml +106 -0
- odoo/addons/hr_appraisal_oca/views/hr_employee_form_view.xml +42 -0
- odoo/addons/hr_appraisal_oca/views/res_config_settings_views.xml +59 -0
- odoo/addons/hr_appraisal_oca/wizard/__init__.py +2 -0
- odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_request_wizard_view.xml +40 -0
- odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_wizard.py +159 -0
- odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_wizard_form_view.xml +32 -0
- odoo/addons/hr_appraisal_oca/wizard/send_mail_with_template_wizard.py +52 -0
- odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/METADATA +233 -0
- odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/RECORD +37 -0
- odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/WHEEL +5 -0
- odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
.. image:: https://odoo-community.org/readme-banner-image
|
|
2
|
+
:target: https://odoo-community.org/get-involved?utm_source=readme
|
|
3
|
+
:alt: Odoo Community Association
|
|
4
|
+
|
|
5
|
+
=============
|
|
6
|
+
Appraisal Oca
|
|
7
|
+
=============
|
|
8
|
+
|
|
9
|
+
..
|
|
10
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
11
|
+
!! This file is generated by oca-gen-addon-readme !!
|
|
12
|
+
!! changes will be overwritten. !!
|
|
13
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
14
|
+
!! source digest: sha256:d1946002660b919f664e9679611e20cec90d54dcf506f5ee30a69d6bb3ac031d
|
|
15
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
16
|
+
|
|
17
|
+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
18
|
+
:target: https://odoo-community.org/page/development-status
|
|
19
|
+
:alt: Beta
|
|
20
|
+
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
|
21
|
+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
22
|
+
:alt: License: AGPL-3
|
|
23
|
+
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr-lightgray.png?logo=github
|
|
24
|
+
:target: https://github.com/OCA/hr/tree/16.0/hr_appraisal_oca
|
|
25
|
+
:alt: OCA/hr
|
|
26
|
+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
|
27
|
+
:target: https://translation.odoo-community.org/projects/hr-16-0/hr-16-0-hr_appraisal_oca
|
|
28
|
+
:alt: Translate me on Weblate
|
|
29
|
+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
|
30
|
+
:target: https://runboat.odoo-community.org/builds?repo=OCA/hr&target_branch=16.0
|
|
31
|
+
:alt: Try me on Runboat
|
|
32
|
+
|
|
33
|
+
|badge1| |badge2| |badge3| |badge4| |badge5|
|
|
34
|
+
|
|
35
|
+
This module helps maintain the employee motivation process through
|
|
36
|
+
periodic performance appraisals.
|
|
37
|
+
|
|
38
|
+
Managers can evaluate employee performance and enable employees to
|
|
39
|
+
perform self-assessments. Review forms can be customized according to
|
|
40
|
+
organizational needs.
|
|
41
|
+
|
|
42
|
+
**Table of contents**
|
|
43
|
+
|
|
44
|
+
.. contents::
|
|
45
|
+
:local:
|
|
46
|
+
|
|
47
|
+
Usage
|
|
48
|
+
=====
|
|
49
|
+
|
|
50
|
+
To create a new appraisal for an employee, first navigate to the main
|
|
51
|
+
Appraisals dashboard by opening the Appraisals app. The Appraisals
|
|
52
|
+
dashboard is the default view.
|
|
53
|
+
|
|
54
|
+
All appraisals are displayed on the dashboard in a default Kanban view.
|
|
55
|
+
To view the details of any appraisal, click on the card to open the
|
|
56
|
+
appraisal form.
|
|
57
|
+
|
|
58
|
+
1. Create an appraisal: To create a new appraisal, click the New button
|
|
59
|
+
in the upper-left corner of the Appraisals dashboard. Doing so reveals a
|
|
60
|
+
blank appraisal form. After entering a name in the first blank field,
|
|
61
|
+
proceed to enter the following information on the form: \* Employee:
|
|
62
|
+
Select the employee for whom you are creating the appraisal. \*
|
|
63
|
+
Managers: Select the managers who will be involved in the appraisal
|
|
64
|
+
process. \* Date Close: Select the date when the appraisal is expected
|
|
65
|
+
to be completed. \* Appraisal Template: Select the template that will be
|
|
66
|
+
used for this appraisal. \* Appraisal Tags: Add any relevant tags to
|
|
67
|
+
categorize the appraisal.
|
|
68
|
+
|
|
69
|
+
Once the form is complete, click the Confirm button to confirm the
|
|
70
|
+
appraisal request.
|
|
71
|
+
|
|
72
|
+
Once confirmed, the employee receives an email stating that an appraisal
|
|
73
|
+
was requested, and is then prompted to schedule an appraisal date. The
|
|
74
|
+
next steps require the employee to fill out the self-assessment, after
|
|
75
|
+
which the manager completes their assessment.
|
|
76
|
+
|
|
77
|
+
The status changes to Confirmed, and the Employee’s Feedback section of
|
|
78
|
+
the Appraisal tab is grayed out. The information in that section only
|
|
79
|
+
appears after the self-assessment is published by the employee.
|
|
80
|
+
|
|
81
|
+
If there are any existing appraisals for the employee, an Appraisal
|
|
82
|
+
smart button appears at the top of the page, listing the total number of
|
|
83
|
+
appraisals there are for the employee.
|
|
84
|
+
|
|
85
|
+
2. Employee’s feedback To complete their portion of feedback, employees
|
|
86
|
+
should navigate to the main Appraisals application dashboard, where the
|
|
87
|
+
only entries visible are appraisals for the employee, themselves, and/or
|
|
88
|
+
anyone they manage and have to provide manager feedback for.
|
|
89
|
+
|
|
90
|
+
Click on the appraisal to open the appraisal form. Enter responses in
|
|
91
|
+
the Employee’s Feedback section, under the Appraisal tab.
|
|
92
|
+
|
|
93
|
+
When completed, click the Not Visible to Manager toggle (the default
|
|
94
|
+
setting once an appraisal is confirmed). When clicked, the toggle
|
|
95
|
+
changes to Visible to Manager.
|
|
96
|
+
|
|
97
|
+
3. Manager’s feedback After the employee has completed the Employee’s
|
|
98
|
+
Feedback section, under the Appraisal tab, it is time for the manager to
|
|
99
|
+
fill out the Manager’s Feedback section.
|
|
100
|
+
|
|
101
|
+
The manager enters their responses in the fields in the same manner as
|
|
102
|
+
the employee.
|
|
103
|
+
|
|
104
|
+
When the feedback section is completed, click the Not Visible to
|
|
105
|
+
Employee toggle (the default setting once an appraisal is confirmed).
|
|
106
|
+
When clicked, the toggle changes to Visible to Employee.
|
|
107
|
+
|
|
108
|
+
4. Private Note tab If managers want to leave notes that are only
|
|
109
|
+
visible to other managers, they can be entered in the Private Note tab.
|
|
110
|
+
This can be done before or after meeting with the employee to discuss
|
|
111
|
+
the appraisal.
|
|
112
|
+
|
|
113
|
+
The employee being evaluated does not have access to this tab, and the
|
|
114
|
+
tab does not appear on their appraisal.
|
|
115
|
+
|
|
116
|
+
5. Complete an appraisal After the appraisal is complete, and both the
|
|
117
|
+
manager and employee have met to discuss the appraisal, the appraisal
|
|
118
|
+
can be marked as Done. When completed, click the Mark as Done button on
|
|
119
|
+
the appraisal form, located in the top-left corner.
|
|
120
|
+
|
|
121
|
+
Once the appraisal is marked as Done, the Mark as Done button
|
|
122
|
+
disappears, and a Reopen button appears.
|
|
123
|
+
|
|
124
|
+
6. Permissions and User Types To manage access permissions to the
|
|
125
|
+
Appraisals app, go to Settings > Users & Companies > Users and select
|
|
126
|
+
the desired user. In the Access tab, you will find the Appraisal
|
|
127
|
+
Permissions section. The following user types are available:
|
|
128
|
+
|
|
129
|
+
- User: Can access their own appraisals and complete evaluations of
|
|
130
|
+
their direct and indirect reporting employees.
|
|
131
|
+
- Human resources officer: Has full access to all appraisals and
|
|
132
|
+
settings, and can manage templates, tags, permissions, and all
|
|
133
|
+
records.
|
|
134
|
+
|
|
135
|
+
Make sure to assign the appropriate access type based on the user's role
|
|
136
|
+
in the organization. Permissions determine what actions each user can
|
|
137
|
+
perform within the Appraisals module.
|
|
138
|
+
|
|
139
|
+
7. Archive and Restore Appraisals To archive an appraisal, open the
|
|
140
|
+
record and select Archive from the Action menu. Archived appraisals are
|
|
141
|
+
hidden from the main views.
|
|
142
|
+
|
|
143
|
+
To view archived appraisals, use the Archived filter in the search bar.
|
|
144
|
+
|
|
145
|
+
To restore an appraisal, open it (with the Archived filter active) and
|
|
146
|
+
click Restore.
|
|
147
|
+
|
|
148
|
+
Archiving does not delete the record; you can archive or restore
|
|
149
|
+
appraisals at any time.
|
|
150
|
+
|
|
151
|
+
- Tip
|
|
152
|
+
|
|
153
|
+
Modifications are not possible once the appraisal is marked as done.
|
|
154
|
+
|
|
155
|
+
To make any changes to an appraisal that is marked as Done, click the
|
|
156
|
+
Reopen button.
|
|
157
|
+
|
|
158
|
+
Then, click the Confirm button that appears, and make any modifications
|
|
159
|
+
needed. Once all modifications are complete, click the Mark as Done
|
|
160
|
+
button again.
|
|
161
|
+
|
|
162
|
+
Bug Tracker
|
|
163
|
+
===========
|
|
164
|
+
|
|
165
|
+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/hr/issues>`_.
|
|
166
|
+
In case of trouble, please check there if your issue has already been reported.
|
|
167
|
+
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
168
|
+
`feedback <https://github.com/OCA/hr/issues/new?body=module:%20hr_appraisal_oca%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
169
|
+
|
|
170
|
+
Do not contact contributors directly about support or help with technical issues.
|
|
171
|
+
|
|
172
|
+
Credits
|
|
173
|
+
=======
|
|
174
|
+
|
|
175
|
+
Authors
|
|
176
|
+
-------
|
|
177
|
+
|
|
178
|
+
* Fundación Esment
|
|
179
|
+
|
|
180
|
+
Contributors
|
|
181
|
+
------------
|
|
182
|
+
|
|
183
|
+
- `Fundación Esment <https://esment.org/>`__:
|
|
184
|
+
|
|
185
|
+
- Estefanía Bauzá
|
|
186
|
+
|
|
187
|
+
- `Tecnativa <https://www.tecnativa.com/>`__:
|
|
188
|
+
|
|
189
|
+
- Pedro M. Baeza
|
|
190
|
+
- Christian Ramos
|
|
191
|
+
|
|
192
|
+
Maintainers
|
|
193
|
+
-----------
|
|
194
|
+
|
|
195
|
+
This module is maintained by the OCA.
|
|
196
|
+
|
|
197
|
+
.. image:: https://odoo-community.org/logo.png
|
|
198
|
+
:alt: Odoo Community Association
|
|
199
|
+
:target: https://odoo-community.org
|
|
200
|
+
|
|
201
|
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
|
202
|
+
mission is to support the collaborative development of Odoo features and
|
|
203
|
+
promote its widespread use.
|
|
204
|
+
|
|
205
|
+
.. |maintainer-ebauza| image:: https://github.com/ebauza.png?size=40px
|
|
206
|
+
:target: https://github.com/ebauza
|
|
207
|
+
:alt: ebauza
|
|
208
|
+
.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px
|
|
209
|
+
:target: https://github.com/pedrobaeza
|
|
210
|
+
:alt: pedrobaeza
|
|
211
|
+
|
|
212
|
+
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|
|
213
|
+
|
|
214
|
+
|maintainer-ebauza| |maintainer-pedrobaeza|
|
|
215
|
+
|
|
216
|
+
This module is part of the `OCA/hr <https://github.com/OCA/hr/tree/16.0/hr_appraisal_oca>`_ project on GitHub.
|
|
217
|
+
|
|
218
|
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 2025 Fundacion Esment - Estefanía Bauzá
|
|
2
|
+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
3
|
+
{
|
|
4
|
+
"name": "Appraisal Oca",
|
|
5
|
+
"version": "16.0.1.0.0",
|
|
6
|
+
"category": "Human Resources/Employees",
|
|
7
|
+
"website": "https://github.com/OCA/hr",
|
|
8
|
+
"author": "Fundación Esment, Odoo Community Association (OCA)",
|
|
9
|
+
"maintainers": ["ebauza", "pedrobaeza"],
|
|
10
|
+
"images": ["static/description/banner.png"],
|
|
11
|
+
"summary": "Module for managing employee appraisals",
|
|
12
|
+
"license": "AGPL-3",
|
|
13
|
+
"depends": ["base", "hr", "mail"],
|
|
14
|
+
"installable": True,
|
|
15
|
+
"data": [
|
|
16
|
+
"security/hr_appraisal_security.xml",
|
|
17
|
+
"security/ir.model.access.csv",
|
|
18
|
+
"data/mail_template_data.xml",
|
|
19
|
+
"data/mail_activity_type_data.xml",
|
|
20
|
+
"views/hr_appraisal_form_view.xml",
|
|
21
|
+
"views/res_config_settings_views.xml",
|
|
22
|
+
"views/hr_employee_form_view.xml",
|
|
23
|
+
"views/hr_appraisal_template_form_view.xml",
|
|
24
|
+
"views/hr_appraisal_tag_form_view.xml",
|
|
25
|
+
"wizard/hr_appraisal_wizard_form_view.xml",
|
|
26
|
+
"wizard/hr_appraisal_request_wizard_view.xml",
|
|
27
|
+
],
|
|
28
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<odoo noupdate="1">
|
|
3
|
+
<record id="mail_act_hr_appraisal_cfr" model="mail.activity.type">
|
|
4
|
+
<field name="name">CFR</field>
|
|
5
|
+
<field name="icon">fa-comments-o</field>
|
|
6
|
+
<field name="summary">Appraisals</field>
|
|
7
|
+
<field name="res_model">hr.appraisal</field>
|
|
8
|
+
</record>
|
|
9
|
+
</odoo>
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<odoo noupdate="1">
|
|
3
|
+
<record id="mail_template_appraisal_request" model="mail.template">
|
|
4
|
+
<field name="name">HR: Manager appraisal request</field>
|
|
5
|
+
<field name="model_id" ref="hr_appraisal_oca.model_hr_appraisal" />
|
|
6
|
+
<field name="subject">Appraisal Requested</field>
|
|
7
|
+
<field name="email_from">{{user.email_formatted}}</field>
|
|
8
|
+
<field name="reply_to">{{user.email_formatted}}</field>
|
|
9
|
+
<field
|
|
10
|
+
name="description"
|
|
11
|
+
>Sent manually to the employee by the manager who wants to do an appraisal</field>
|
|
12
|
+
<field name="auto_delete" eval="True" />
|
|
13
|
+
<field name="body_html" type="html">
|
|
14
|
+
<div style="margin: 0px; padding: 0px;">
|
|
15
|
+
<p style="margin: 0px; padding: 0px; font-size: 13px;">
|
|
16
|
+
Dear
|
|
17
|
+
<t t-if="object.employee_id.work_email">
|
|
18
|
+
<t t-out="object.employee_id.name or ''" />,
|
|
19
|
+
</t>
|
|
20
|
+
<t t-foreach="object.manager_ids" t-as="manager">
|
|
21
|
+
<t t-if="user.id not in object.manager_user_ids.ids">
|
|
22
|
+
<t t-out="manager.name or ''" />,
|
|
23
|
+
</t>
|
|
24
|
+
</t>
|
|
25
|
+
<br />
|
|
26
|
+
An appraisal has been requested by <t
|
|
27
|
+
t-out="user.name or ''"
|
|
28
|
+
/>.<br />
|
|
29
|
+
<br />
|
|
30
|
+
<t t-if="ctx.get('user_body')">
|
|
31
|
+
<div
|
|
32
|
+
style="margin: 16px 0px 16px 0px; padding: 8px 16px 8px 16px; background-color: #F1F1F1;"
|
|
33
|
+
>
|
|
34
|
+
<t t-out="ctx.get('user_body')"> </t>
|
|
35
|
+
</div>
|
|
36
|
+
</t>
|
|
37
|
+
<t t-if="ctx.get('recipient_users')">
|
|
38
|
+
<p
|
|
39
|
+
style="margin: 16px 0px 16px 0px; padding: 8px 16px 8px 16px; text-align: center;"
|
|
40
|
+
>
|
|
41
|
+
<t
|
|
42
|
+
t-set="link"
|
|
43
|
+
t-value="'/mail/view?model=hr.appraisal&res_id=%s' % object.id"
|
|
44
|
+
/>
|
|
45
|
+
<a
|
|
46
|
+
style="margin: auto; background-color:#875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px;"
|
|
47
|
+
t-att-href="link"
|
|
48
|
+
>View Appraisal</a>
|
|
49
|
+
</p>
|
|
50
|
+
</t>
|
|
51
|
+
<br />
|
|
52
|
+
</p>
|
|
53
|
+
</div>
|
|
54
|
+
</field>
|
|
55
|
+
</record>
|
|
56
|
+
<record id="mail_template_appraisal_request_from_employee" model="mail.template">
|
|
57
|
+
<field name="name">HR: Employee Appraisal Request</field>
|
|
58
|
+
<field name="model_id" ref="hr_appraisal_oca.model_hr_appraisal" />
|
|
59
|
+
<field name="subject">{{ user.name or ''}} requests an Appraisal</field>
|
|
60
|
+
<field name="email_from">{{user.email_formatted}}</field>
|
|
61
|
+
<field name="reply_to">{{user.email_formatted}}</field>
|
|
62
|
+
<field
|
|
63
|
+
name="description"
|
|
64
|
+
>Sent manually to the manager by the employee who wants an appraisal</field>
|
|
65
|
+
<field name="auto_delete" eval="True" />
|
|
66
|
+
<field name="body_html" type="html">
|
|
67
|
+
<div style="margin: 0px; padding: 0px;">
|
|
68
|
+
<p style="margin: 0px; padding: 0px; font-size: 13px;">
|
|
69
|
+
Dear
|
|
70
|
+
<t t-foreach="object.manager_ids" t-as="manager">
|
|
71
|
+
<t t-if="manager.work_email">
|
|
72
|
+
<t t-out="manager.name or ''" />,
|
|
73
|
+
</t>
|
|
74
|
+
</t>
|
|
75
|
+
<br />
|
|
76
|
+
<t t-out="user.name or ''" /> wishes an appraisal.<br />
|
|
77
|
+
<br />
|
|
78
|
+
<t t-if="ctx.get('user_body')">
|
|
79
|
+
<div
|
|
80
|
+
style="margin: 16px 0px 16px 0px; padding: 8px 16px 8px 16px; background-color: #F1F1F1;"
|
|
81
|
+
>
|
|
82
|
+
<t t-out="ctx.get('user_body')"> </t>
|
|
83
|
+
</div>
|
|
84
|
+
</t>
|
|
85
|
+
<t t-if="ctx.get('recipient_users')">
|
|
86
|
+
<p
|
|
87
|
+
style="margin: 16px 0px 16px 0px; padding: 8px 16px 8px 16px; text-align: center;"
|
|
88
|
+
>
|
|
89
|
+
<t
|
|
90
|
+
t-set="link"
|
|
91
|
+
t-value="'/mail/view?model=hr.appraisal&res_id=%s' % object.id"
|
|
92
|
+
/>
|
|
93
|
+
<a
|
|
94
|
+
style="margin: auto; background-color:#875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px;"
|
|
95
|
+
t-att-href="link"
|
|
96
|
+
>View Appraisal</a>
|
|
97
|
+
</p>
|
|
98
|
+
</t>
|
|
99
|
+
</p>
|
|
100
|
+
</div>
|
|
101
|
+
</field>
|
|
102
|
+
</record>
|
|
103
|
+
<record id="mail_template_appraisal_confirmation" model="mail.template">
|
|
104
|
+
<field name="name">HR: Appraisal Confirmation</field>
|
|
105
|
+
<field name="model_id" ref="hr_appraisal_oca.model_hr_appraisal" />
|
|
106
|
+
<field name="subject">{{object.employee_id.name}}: Appraisal Confirmed</field>
|
|
107
|
+
<field name="email_from">{{user.email_formatted}}</field>
|
|
108
|
+
<field
|
|
109
|
+
name="description"
|
|
110
|
+
>Sent automatically to both employee and manager when appraisal is confirmed</field>
|
|
111
|
+
<field name="auto_delete" eval="True" />
|
|
112
|
+
<field name="body_html" type="html">
|
|
113
|
+
<div style="margin: 0px; padding: 0px;">
|
|
114
|
+
<p style="margin: 0px; padding: 0px; font-size: 13px;">
|
|
115
|
+
An appraisal of <t
|
|
116
|
+
t-out="object.employee_id.name or 'employee'"
|
|
117
|
+
/> has been confirmed.<br />
|
|
118
|
+
<br /><br />
|
|
119
|
+
Please schedule an appraisal date together.
|
|
120
|
+
<br /><br />
|
|
121
|
+
<t t-if="ctx.get('recipient_users')">
|
|
122
|
+
<p style="margin: 16px 0px 16px 0px; text-align: center;">
|
|
123
|
+
<t
|
|
124
|
+
t-set="link"
|
|
125
|
+
t-value="'/mail/view?model=hr.appraisal&res_id=%s' % object.id"
|
|
126
|
+
/>
|
|
127
|
+
<a
|
|
128
|
+
style="background-color:#875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px;"
|
|
129
|
+
t-att-href="link"
|
|
130
|
+
>View Appraisal</a>
|
|
131
|
+
</p>
|
|
132
|
+
</t>
|
|
133
|
+
</p>
|
|
134
|
+
</div>
|
|
135
|
+
</field>
|
|
136
|
+
</record>
|
|
137
|
+
<record id="mail_template_appraisal_completed" model="mail.template">
|
|
138
|
+
<field name="name">HR: Appraisal Completed</field>
|
|
139
|
+
<field name="model_id" ref="hr_appraisal_oca.model_hr_appraisal" />
|
|
140
|
+
<field name="subject">Your Appraisal has been completed</field>
|
|
141
|
+
<field name="email_from">{{user.email_formatted}}</field>
|
|
142
|
+
<field
|
|
143
|
+
name="description"
|
|
144
|
+
>Sent automatically to both employee and manager when appraisal is completed</field>
|
|
145
|
+
<field name="auto_delete" eval="True" />
|
|
146
|
+
<field name="body_html" type="html">
|
|
147
|
+
<div>
|
|
148
|
+
The appraisal's status has been set to <strong
|
|
149
|
+
style="box-sizing:border-box;font-weight:bold;"
|
|
150
|
+
>Done</strong> by <t t-out="user.name or ''" />.<br />
|
|
151
|
+
<br />
|
|
152
|
+
<t t-if="ctx.get('recipient_users')">
|
|
153
|
+
<p style="box-sizing:border-box;margin-top:24px;margin-bottom:16px">
|
|
154
|
+
<t
|
|
155
|
+
t-set="link"
|
|
156
|
+
t-value="'/mail/view?model=hr.appraisal&res_id=%s' % object.id"
|
|
157
|
+
/>
|
|
158
|
+
<a
|
|
159
|
+
style="box-sizing:border-box;text-decoration:none;color:#7c7bad;background-color:#875A7B;padding:10px; color:#fff; border-radius:5px;"
|
|
160
|
+
t-att-href="link"
|
|
161
|
+
>View Employee Appraisal</a>
|
|
162
|
+
</p>
|
|
163
|
+
</t>
|
|
164
|
+
</div>
|
|
165
|
+
</field>
|
|
166
|
+
</record>
|
|
167
|
+
</odoo>
|