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,465 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record id="hr_appraisal_form_view" model="ir.ui.view">
|
|
4
|
+
<field name="name">hr.appraisal.form.view</field>
|
|
5
|
+
<field name="model">hr.appraisal</field>
|
|
6
|
+
<field name="priority">1</field>
|
|
7
|
+
<field name="arch" type="xml">
|
|
8
|
+
<form>
|
|
9
|
+
<header>
|
|
10
|
+
<button
|
|
11
|
+
name="action_confirm"
|
|
12
|
+
string="Confirm"
|
|
13
|
+
type="object"
|
|
14
|
+
class="oe_highlight"
|
|
15
|
+
attrs="{'invisible': "['|', ('state','!=','1_new'), '&', ('manager_user_ids', 'not in', uid), '&', ('employee_user_id', '!=', uid), ('is_manager', '=', False)]"}"
|
|
16
|
+
/>
|
|
17
|
+
<button
|
|
18
|
+
name="action_done"
|
|
19
|
+
string="Mark as Done"
|
|
20
|
+
type="object"
|
|
21
|
+
class="oe_highlight"
|
|
22
|
+
attrs="{'invisible': "['|', ('state','!=','2_pending'), '&', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]"}"
|
|
23
|
+
/>
|
|
24
|
+
<button
|
|
25
|
+
name="action_send_appraisal_request"
|
|
26
|
+
string="Send by email"
|
|
27
|
+
attrs="{'invisible': [('state', '!=', '1_new')]}"
|
|
28
|
+
type="object"
|
|
29
|
+
/>
|
|
30
|
+
<button
|
|
31
|
+
name="action_back"
|
|
32
|
+
string="Reopen"
|
|
33
|
+
type="object"
|
|
34
|
+
attrs="{'invisible': "['|', '&', ('state','!=','3_done'), ('state','!=','cancel'), '&', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]"}"
|
|
35
|
+
/>
|
|
36
|
+
<field
|
|
37
|
+
name="state"
|
|
38
|
+
widget="statusbar"
|
|
39
|
+
statusbar_visible="1_new,2_pending,3_done"
|
|
40
|
+
options="{'fold_field': 'fold'}"
|
|
41
|
+
/>
|
|
42
|
+
</header>
|
|
43
|
+
<sheet>
|
|
44
|
+
<div class="oe_button_box" name="button_box">
|
|
45
|
+
<button
|
|
46
|
+
class="oe_stat_button"
|
|
47
|
+
name="action_open_employee_appraisals"
|
|
48
|
+
groups="hr.group_hr_user"
|
|
49
|
+
icon="fa-th-large"
|
|
50
|
+
type="object"
|
|
51
|
+
attrs="{'invisible': ['|', ('employee_appraisal_count', '<', 2), ('employee_id', '=', False)]}"
|
|
52
|
+
>
|
|
53
|
+
<div class="o_field_widget o_stat_info">
|
|
54
|
+
<span class="o_stat_value"><field
|
|
55
|
+
name="employee_appraisal_count"
|
|
56
|
+
/></span>
|
|
57
|
+
<span class="o_stat_text">Appraisals</span>
|
|
58
|
+
</div>
|
|
59
|
+
</button>
|
|
60
|
+
</div>
|
|
61
|
+
<widget
|
|
62
|
+
name="web_ribbon"
|
|
63
|
+
title="Archived"
|
|
64
|
+
bg_color="bg-danger"
|
|
65
|
+
attrs="{'invisible': [('active', '=', True)]}"
|
|
66
|
+
/>
|
|
67
|
+
<label for="employee_id" />
|
|
68
|
+
<h1>
|
|
69
|
+
<field
|
|
70
|
+
name="employee_id"
|
|
71
|
+
class="oe_inline"
|
|
72
|
+
placeholder="Employee's Name"
|
|
73
|
+
widget="many2one_avatar_employee"
|
|
74
|
+
/>
|
|
75
|
+
</h1>
|
|
76
|
+
<group>
|
|
77
|
+
<group>
|
|
78
|
+
<field
|
|
79
|
+
name="manager_ids"
|
|
80
|
+
widget="many2many_avatar_employee"
|
|
81
|
+
attrs="{'readonly': "['|',('state', '=', ('3_done')), '&', ('state', '=', ('2_pending')), '&', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]"}"
|
|
82
|
+
/>
|
|
83
|
+
<field
|
|
84
|
+
name="date_close"
|
|
85
|
+
attrs="{'readonly': [('state', '=', '3_done')]}"
|
|
86
|
+
/>
|
|
87
|
+
<field
|
|
88
|
+
name="appraisal_template_id"
|
|
89
|
+
attrs="{'readonly': "['|',('state','!=', ('1_new')), '&', ('manager_user_ids', 'not in', uid), '&', ('employee_user_id', '!=', uid), ('is_manager', '=', False)]"}"
|
|
90
|
+
options="{'no_edit': True, 'no_create': True}"
|
|
91
|
+
/>
|
|
92
|
+
<field
|
|
93
|
+
name="tag_ids"
|
|
94
|
+
widget="many2many_tags"
|
|
95
|
+
options="{'color_field': 'color'}"
|
|
96
|
+
attrs="{'readonly': [('state', '=', '3_done')]}"
|
|
97
|
+
/>
|
|
98
|
+
</group>
|
|
99
|
+
<group>
|
|
100
|
+
<field name="job_id" />
|
|
101
|
+
<field name="department_id" />
|
|
102
|
+
<field name="employee_user_id" invisible="1" />
|
|
103
|
+
<field name="manager_user_ids" invisible="1" />
|
|
104
|
+
<field name="state" invisible="1" />
|
|
105
|
+
<field name="id" invisible="1" />
|
|
106
|
+
<field name="company_id" invisible="1" />
|
|
107
|
+
<field name="employee_domain_ids" invisible="1" />
|
|
108
|
+
<field
|
|
109
|
+
name="company_id"
|
|
110
|
+
groups="base.group_multi_company"
|
|
111
|
+
required="1"
|
|
112
|
+
/>
|
|
113
|
+
</group>
|
|
114
|
+
</group>
|
|
115
|
+
<notebook>
|
|
116
|
+
<page string="Appraisal" name="appraisal">
|
|
117
|
+
<div
|
|
118
|
+
class="d-flex flex-column flex-md-row flex-wrap align-items-stretch"
|
|
119
|
+
style="min-height: 20rem; margin: -16px var(--notebook-margin-x) !important;"
|
|
120
|
+
>
|
|
121
|
+
<div
|
|
122
|
+
class="col-11 col-md-6"
|
|
123
|
+
style="padding: 32px 16px;"
|
|
124
|
+
>
|
|
125
|
+
<div class="row">
|
|
126
|
+
<div
|
|
127
|
+
class="col-11 d-flex justify-content-between"
|
|
128
|
+
>
|
|
129
|
+
<h3>Employee's Feedback</h3>
|
|
130
|
+
<div
|
|
131
|
+
class="h-100"
|
|
132
|
+
attrs="{'invisible': [('state', '=', '3_done')]}"
|
|
133
|
+
>
|
|
134
|
+
<span
|
|
135
|
+
class="text-end"
|
|
136
|
+
attrs="{'invisible': [('employee_feedback_published', '=', True)]}"
|
|
137
|
+
>Not Visible to Manager </span>
|
|
138
|
+
<span
|
|
139
|
+
class="text-end"
|
|
140
|
+
attrs="{'invisible': ['|', ('employee_feedback_published', '=', False), ('state', '=', '1_new')]}"
|
|
141
|
+
>Visible to Manager </span>
|
|
142
|
+
<span
|
|
143
|
+
class="text-end"
|
|
144
|
+
attrs="{'invisible': "['|', ('employee_feedback_published', '=', False), ('state', '!=', '1_new')]"}"
|
|
145
|
+
>Visible & Editable by Manager </span>
|
|
146
|
+
<button
|
|
147
|
+
class="btn btn-secondary"
|
|
148
|
+
name="action_publish_employee_feedback"
|
|
149
|
+
type="object"
|
|
150
|
+
icon="fa-circle-o"
|
|
151
|
+
attrs="{'invisible': "['|', ('employee_feedback_published', '=', True), '&', ('state', '=', '1_new'), ('employee_user_id', '=', uid)]"}"
|
|
152
|
+
>
|
|
153
|
+
<field
|
|
154
|
+
name="employee_feedback_published"
|
|
155
|
+
nolabel="1"
|
|
156
|
+
invisible="1"
|
|
157
|
+
/>
|
|
158
|
+
</button>
|
|
159
|
+
<button
|
|
160
|
+
class="btn btn-secondary"
|
|
161
|
+
name="action_publish_employee_feedback"
|
|
162
|
+
type="object"
|
|
163
|
+
icon="fa-check-circle"
|
|
164
|
+
attrs="{'invisible': "['|', ('employee_feedback_published', '=', False), '&', ('state', '=', '1_new'), ('employee_user_id', '=', uid)]"}"
|
|
165
|
+
>
|
|
166
|
+
<field
|
|
167
|
+
name="employee_feedback_published"
|
|
168
|
+
nolabel="1"
|
|
169
|
+
invisible="1"
|
|
170
|
+
/>
|
|
171
|
+
</button>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
<div
|
|
175
|
+
class="col-11 position-relative"
|
|
176
|
+
style="height: 100%;"
|
|
177
|
+
>
|
|
178
|
+
<span
|
|
179
|
+
class="o_highlight"
|
|
180
|
+
style="width: 100%; text-align: center; text-align: center;"
|
|
181
|
+
attrs="{'invisible': ['|', '|', ('can_see_employee_publish', '=', True), ('employee_feedback_published', '=', True), ('employee_feedback_template', '=', False)]}"
|
|
182
|
+
>
|
|
183
|
+
<div
|
|
184
|
+
style="font-size: 1.5em;"
|
|
185
|
+
>Self Assessment will show here</div>
|
|
186
|
+
<div
|
|
187
|
+
style="font-size: 1.5em;"
|
|
188
|
+
>once published</div>
|
|
189
|
+
</span>
|
|
190
|
+
<field
|
|
191
|
+
name="employee_feedback"
|
|
192
|
+
type="html"
|
|
193
|
+
options="{'collaborative': true, 'resizable': false}"
|
|
194
|
+
placeholder="Employee feedback..."
|
|
195
|
+
attrs="{'invisible': ['&', ('employee_feedback_published', '=', False), ('can_see_employee_publish', '=', False)], 'readonly': ['|', ('state', 'not in', ['1_new', '2_pending']), ('can_see_employee_publish', '=', False)]}"
|
|
196
|
+
/>
|
|
197
|
+
<field
|
|
198
|
+
name="employee_feedback_template"
|
|
199
|
+
attrs="{'invisible': ['|', ('employee_feedback_published', '=', False), ('can_see_employee_publish', '=', False)]}"
|
|
200
|
+
/>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
<div
|
|
205
|
+
class="col-11 col-md-6"
|
|
206
|
+
style="background-color: #e7e9ed; padding: 32px 16px;"
|
|
207
|
+
>
|
|
208
|
+
<div class="row">
|
|
209
|
+
<div
|
|
210
|
+
class="col-11 d-flex justify-content-between"
|
|
211
|
+
>
|
|
212
|
+
<h3>Manager's Feedback</h3>
|
|
213
|
+
<div
|
|
214
|
+
class="h-100"
|
|
215
|
+
attrs="{'invisible': [('state', '=', '3_done')]}"
|
|
216
|
+
>
|
|
217
|
+
<span
|
|
218
|
+
class="text-end"
|
|
219
|
+
attrs="{'invisible': ['|', ('manager_feedback_published', '=', True), ('can_see_manager_publish', '=', False)]}"
|
|
220
|
+
>Not Visible to Employee </span>
|
|
221
|
+
<span
|
|
222
|
+
class="text-end"
|
|
223
|
+
attrs="{'invisible': ['|', ('manager_feedback_published', '=', False), ('can_see_manager_publish', '=', False)]}"
|
|
224
|
+
>Visible to Employee </span>
|
|
225
|
+
<button
|
|
226
|
+
class="btn btn-secondary"
|
|
227
|
+
t-att-style="'background-color: #e7e9ed; border-color: #e7e9ed; color: #66598f;'"
|
|
228
|
+
name="action_publish_manager_feedback"
|
|
229
|
+
type="object"
|
|
230
|
+
icon="fa-circle-o"
|
|
231
|
+
attrs="{'invisible': ['|', ('manager_feedback_published', '=', True), ('can_see_manager_publish', '=', False)]}"
|
|
232
|
+
>
|
|
233
|
+
<field
|
|
234
|
+
name="manager_feedback_published"
|
|
235
|
+
nolabel="1"
|
|
236
|
+
invisible="1"
|
|
237
|
+
/>
|
|
238
|
+
</button>
|
|
239
|
+
<button
|
|
240
|
+
class="btn btn-secondary"
|
|
241
|
+
t-att-style="'background-color: #e7e9ed; border-color: #e7e9ed; color: #66598f;'"
|
|
242
|
+
name="action_publish_manager_feedback"
|
|
243
|
+
type="object"
|
|
244
|
+
icon="fa-check-circle"
|
|
245
|
+
attrs="{'invisible': ['|', ('manager_feedback_published', '=', False), ('can_see_manager_publish', '=', False)]}"
|
|
246
|
+
>
|
|
247
|
+
<field
|
|
248
|
+
name="manager_feedback_published"
|
|
249
|
+
nolabel="1"
|
|
250
|
+
invisible="1"
|
|
251
|
+
/>
|
|
252
|
+
</button>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
<div
|
|
256
|
+
class="col-11 position-relative"
|
|
257
|
+
style="height: 100%;"
|
|
258
|
+
>
|
|
259
|
+
<span
|
|
260
|
+
class="o_highlight"
|
|
261
|
+
style="width: 100%; text-align: center; text-align: center;"
|
|
262
|
+
attrs="{'invisible': ['|', '|', ('can_see_manager_publish', '=', True), ('manager_feedback_published', '=', True), ('manager_feedback_template', '=', False)]}"
|
|
263
|
+
>
|
|
264
|
+
<div
|
|
265
|
+
style="font-size: 1.5em;"
|
|
266
|
+
>Manager Assessment will show here</div>
|
|
267
|
+
<div
|
|
268
|
+
style="font-size: 1.5em;"
|
|
269
|
+
>once published</div>
|
|
270
|
+
</span>
|
|
271
|
+
<field
|
|
272
|
+
name="manager_feedback"
|
|
273
|
+
type="html"
|
|
274
|
+
options="{'collaborative': true, 'resizable': false}"
|
|
275
|
+
placeholder="Manager feedback..."
|
|
276
|
+
attrs="{'invisible': ['&', ('manager_feedback_published', '=', False), ('can_see_manager_publish', '=', False)], 'readonly': ['|', ('state', 'not in', ['1_new', '2_pending']), ('can_see_manager_publish', '=', False)]}"
|
|
277
|
+
/>
|
|
278
|
+
<field
|
|
279
|
+
name="manager_feedback_template"
|
|
280
|
+
attrs="{'invisible': ['|', ('manager_feedback_published', '=', False), ('can_see_manager_publish', '=', False)]}"
|
|
281
|
+
/>
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
</page>
|
|
287
|
+
<page
|
|
288
|
+
string="Private Note"
|
|
289
|
+
name="private_note"
|
|
290
|
+
attrs="{'invisible': "[('employee_user_id', '=', uid)]"}"
|
|
291
|
+
>
|
|
292
|
+
<field
|
|
293
|
+
name="note"
|
|
294
|
+
attrs="{'readonly': "['|', ('state', '=', '3_done'), '&', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]"}"
|
|
295
|
+
placeholder="Private note (only accessible to people set as managers)"
|
|
296
|
+
/>
|
|
297
|
+
</page>
|
|
298
|
+
</notebook>
|
|
299
|
+
<field name="active" invisible="1" />
|
|
300
|
+
<field name="is_manager" invisible="1" />
|
|
301
|
+
<field name="can_see_employee_publish" invisible="1" />
|
|
302
|
+
<field name="can_see_manager_publish" invisible="1" />
|
|
303
|
+
<field name="employee_feedback_published" invisible="1" />
|
|
304
|
+
<field name="manager_feedback_published" invisible="1" />
|
|
305
|
+
</sheet>
|
|
306
|
+
<div class="oe_chatter">
|
|
307
|
+
<field
|
|
308
|
+
name="message_follower_ids"
|
|
309
|
+
widget="mail_followers"
|
|
310
|
+
groups="base.group_user"
|
|
311
|
+
/>
|
|
312
|
+
<field name="activity_ids" widget="mail_activity" />
|
|
313
|
+
<field name="message_ids" widget="mail_thread" />
|
|
314
|
+
</div>
|
|
315
|
+
</form>
|
|
316
|
+
</field>
|
|
317
|
+
</record>
|
|
318
|
+
<record id="hr_appraisal_tree_view" model="ir.ui.view">
|
|
319
|
+
<field name="name">hr.appraisal.tree.view</field>
|
|
320
|
+
<field name="model">hr.appraisal</field>
|
|
321
|
+
<field name="arch" type="xml">
|
|
322
|
+
<tree>
|
|
323
|
+
<field name="active" invisible="1" />
|
|
324
|
+
<field
|
|
325
|
+
name="employee_id"
|
|
326
|
+
string="Name"
|
|
327
|
+
readonly="1"
|
|
328
|
+
widget="many2one_avatar_employee"
|
|
329
|
+
/>
|
|
330
|
+
<field name="department_id" />
|
|
331
|
+
<field name="create_date" widget="timeless_datetime" optional="hide" />
|
|
332
|
+
<field name="date_close" widget="remaining_days" />
|
|
333
|
+
<field
|
|
334
|
+
name="state"
|
|
335
|
+
widget="badge"
|
|
336
|
+
readonly="1"
|
|
337
|
+
attrs="{'invisible': [('state', '=', '1_new')]}"
|
|
338
|
+
decoration-success="state == '2_pending'"
|
|
339
|
+
/>
|
|
340
|
+
<field
|
|
341
|
+
name="tag_ids"
|
|
342
|
+
widget="many2many_tags"
|
|
343
|
+
readonly="1"
|
|
344
|
+
options="{'color_field': 'color'}"
|
|
345
|
+
/>
|
|
346
|
+
<field
|
|
347
|
+
name="company_id"
|
|
348
|
+
readonly="1"
|
|
349
|
+
optional="hide"
|
|
350
|
+
groups="base.group_multi_company"
|
|
351
|
+
/>
|
|
352
|
+
</tree>
|
|
353
|
+
</field>
|
|
354
|
+
</record>
|
|
355
|
+
<record id="hr_appraisal_search_view" model="ir.ui.view">
|
|
356
|
+
<field name="name">hr.appraisal.search.view</field>
|
|
357
|
+
<field name="model">hr.appraisal</field>
|
|
358
|
+
<field name="arch" type="xml">
|
|
359
|
+
<search>
|
|
360
|
+
<filter
|
|
361
|
+
string="Archived"
|
|
362
|
+
name="archived"
|
|
363
|
+
domain="[('active', '=', False)]"
|
|
364
|
+
/>
|
|
365
|
+
</search>
|
|
366
|
+
</field>
|
|
367
|
+
</record>
|
|
368
|
+
<record id="hr_appraisal_kanban_view" model="ir.ui.view">
|
|
369
|
+
<field name="name">hr.appraisal.kanban.view</field>
|
|
370
|
+
<field name="model">hr.appraisal</field>
|
|
371
|
+
<field name="arch" type="xml">
|
|
372
|
+
<kanban
|
|
373
|
+
default_group_by="state"
|
|
374
|
+
default_order="state, date_close desc"
|
|
375
|
+
quick_create="false"
|
|
376
|
+
class="o_hr_employee_kanban"
|
|
377
|
+
sample="1"
|
|
378
|
+
>
|
|
379
|
+
<field name="color" />
|
|
380
|
+
<field name="state" />
|
|
381
|
+
<field name="manager_ids" />
|
|
382
|
+
<templates>
|
|
383
|
+
<t t-name="kanban-box">
|
|
384
|
+
<div
|
|
385
|
+
t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click"
|
|
386
|
+
>
|
|
387
|
+
<div class="o_dropdown_kanban dropdown">
|
|
388
|
+
<a
|
|
389
|
+
class="dropdown-toggle btn"
|
|
390
|
+
data-toggle="dropdown"
|
|
391
|
+
role="button"
|
|
392
|
+
href="#"
|
|
393
|
+
>
|
|
394
|
+
<span class="fa fa-bars fa-lg" title="dropdown" />
|
|
395
|
+
</a>
|
|
396
|
+
<ul
|
|
397
|
+
class="dropdown-menu"
|
|
398
|
+
role="menu"
|
|
399
|
+
aria-labelledby="dLabel"
|
|
400
|
+
>
|
|
401
|
+
<li><ul
|
|
402
|
+
class="oe_kanban_colorpicker"
|
|
403
|
+
data-field="color"
|
|
404
|
+
/></li>
|
|
405
|
+
</ul>
|
|
406
|
+
</div>
|
|
407
|
+
<div class="oe_kanban_content">
|
|
408
|
+
<div><field
|
|
409
|
+
name="employee_id"
|
|
410
|
+
class="fw-bolder fs-5"
|
|
411
|
+
/></div>
|
|
412
|
+
<div><field name="department_id" /></div>
|
|
413
|
+
<t
|
|
414
|
+
t-if="record.date_close.raw_value and record.date_close.raw_value < (new Date())"
|
|
415
|
+
t-set="red"
|
|
416
|
+
>oe_kanban_text_red</t>
|
|
417
|
+
Date: <span t-attf-class="#{red}"><i><field
|
|
418
|
+
name="date_close"
|
|
419
|
+
/></i></span>
|
|
420
|
+
<br />
|
|
421
|
+
<div class="oe_clear">
|
|
422
|
+
</div>
|
|
423
|
+
<footer class="pt-0">
|
|
424
|
+
<field name="activity_ids" widget="kanban_activity" />
|
|
425
|
+
<field
|
|
426
|
+
name="tag_ids"
|
|
427
|
+
widget="many2many_tags"
|
|
428
|
+
options="{'color_field': 'color'}"
|
|
429
|
+
/>
|
|
430
|
+
</footer>
|
|
431
|
+
</div>
|
|
432
|
+
<div class="clearfix" />
|
|
433
|
+
</div>
|
|
434
|
+
</t>
|
|
435
|
+
</templates>
|
|
436
|
+
</kanban>
|
|
437
|
+
</field>
|
|
438
|
+
</record>
|
|
439
|
+
<record id="hr_appraisal_action_form" model="ir.actions.act_window">
|
|
440
|
+
<field name="name">Appraisals</field>
|
|
441
|
+
<field name="res_model">hr.appraisal</field>
|
|
442
|
+
<field name="view_id" ref="hr_appraisal_search_view" />
|
|
443
|
+
<field name='view_mode'>kanban,tree,form</field>
|
|
444
|
+
</record>
|
|
445
|
+
<menuitem
|
|
446
|
+
name="Appraisals"
|
|
447
|
+
id="menu_hr_appraisal_root"
|
|
448
|
+
web_icon="hr_appraisal_oca,static/description/icon.png"
|
|
449
|
+
groups="hr_appraisal_oca.group_appraisal_user"
|
|
450
|
+
/>
|
|
451
|
+
<menuitem
|
|
452
|
+
name="Appraisals"
|
|
453
|
+
id="menu_hr_appraisal"
|
|
454
|
+
parent="menu_hr_appraisal_root"
|
|
455
|
+
action="hr_appraisal_action_form"
|
|
456
|
+
groups="hr_appraisal_oca.group_appraisal_user"
|
|
457
|
+
/>
|
|
458
|
+
<menuitem
|
|
459
|
+
name="Configuration"
|
|
460
|
+
id="menu_hr_appraisal_configuration"
|
|
461
|
+
parent="menu_hr_appraisal_root"
|
|
462
|
+
groups="hr_appraisal_oca.group_appraisal_hr_officer"
|
|
463
|
+
sequence="100"
|
|
464
|
+
/>
|
|
465
|
+
</odoo>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record id="hr_appraisal_tag_form_view" model="ir.ui.view">
|
|
4
|
+
<field name="name">hr.appraisal.tag.form.view</field>
|
|
5
|
+
<field name="model">hr.appraisal.tag</field>
|
|
6
|
+
<field name="arch" type="xml">
|
|
7
|
+
<form>
|
|
8
|
+
<sheet>
|
|
9
|
+
<group>
|
|
10
|
+
<field
|
|
11
|
+
name="name"
|
|
12
|
+
placeholder="e.g. Remediation, Team, Improvement plan, Career change, ..."
|
|
13
|
+
/>
|
|
14
|
+
<field name="color" invisible="1" />
|
|
15
|
+
</group>
|
|
16
|
+
</sheet>
|
|
17
|
+
</form>
|
|
18
|
+
</field>
|
|
19
|
+
</record>
|
|
20
|
+
<record id="hr_appraisal_tag_tree_view" model="ir.ui.view">
|
|
21
|
+
<field name="name">hr.appraisal.tag.tree.view</field>
|
|
22
|
+
<field name="model">hr.appraisal.tag</field>
|
|
23
|
+
<field name="arch" type="xml">
|
|
24
|
+
<tree editable="bottom">
|
|
25
|
+
<field name="name" />
|
|
26
|
+
</tree>
|
|
27
|
+
</field>
|
|
28
|
+
</record>
|
|
29
|
+
<record id="hr_appraisal_tag_action_form" model="ir.actions.act_window">
|
|
30
|
+
<field name="name">Tags</field>
|
|
31
|
+
<field name="type">ir.actions.act_window</field>
|
|
32
|
+
<field name="res_model">hr.appraisal.tag</field>
|
|
33
|
+
<field name="view_mode">tree,form</field>
|
|
34
|
+
<field name="help" type="html">
|
|
35
|
+
<p class="o_view_nocontent_smiling_face">
|
|
36
|
+
Add a new tag
|
|
37
|
+
</p>
|
|
38
|
+
</field>
|
|
39
|
+
</record>
|
|
40
|
+
<menuitem
|
|
41
|
+
id="menuitem_appraisal_tag"
|
|
42
|
+
name="Appraisal Tags"
|
|
43
|
+
parent="hr_appraisal_oca.menu_hr_appraisal_configuration"
|
|
44
|
+
action="hr_appraisal_tag_action_form"
|
|
45
|
+
sequence="56"
|
|
46
|
+
/>
|
|
47
|
+
</odoo>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record id="hr_appraisal_template_form_view" model="ir.ui.view">
|
|
4
|
+
<field name="name">hr.appraisal.template.form.view</field>
|
|
5
|
+
<field name="model">hr.appraisal.template</field>
|
|
6
|
+
<field name="priority">1</field>
|
|
7
|
+
<field name="arch" type="xml">
|
|
8
|
+
<form>
|
|
9
|
+
<sheet>
|
|
10
|
+
<label for="description" string="Description" />
|
|
11
|
+
<div class="oe_title mw-100">
|
|
12
|
+
<h2>
|
|
13
|
+
<field
|
|
14
|
+
name="description"
|
|
15
|
+
placeholder="e.g. Annual Appraisal"
|
|
16
|
+
required="True"
|
|
17
|
+
/>
|
|
18
|
+
</h2>
|
|
19
|
+
</div>
|
|
20
|
+
<group>
|
|
21
|
+
<group>
|
|
22
|
+
<field
|
|
23
|
+
name="company_id"
|
|
24
|
+
groups="base.group_multi_company"
|
|
25
|
+
placeholder="Visible to all"
|
|
26
|
+
/>
|
|
27
|
+
<field name="is_default" invisible="1" />
|
|
28
|
+
</group>
|
|
29
|
+
</group>
|
|
30
|
+
<div
|
|
31
|
+
class="d-flex flex-column flex-md-row flex-wrap align-items-stretch"
|
|
32
|
+
style="min-height: 40rem; margin: -16px var(--sheet-margin-x) !important;"
|
|
33
|
+
>
|
|
34
|
+
<div class="col-11 col-md-6" style="padding: 32px 16px;">
|
|
35
|
+
<div class="row">
|
|
36
|
+
<div class="col-11 d-flex justify-content-between">
|
|
37
|
+
<label
|
|
38
|
+
for="appraisal_employee_feedback_template"
|
|
39
|
+
string="Employee Feedback"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
<div
|
|
43
|
+
class="col-11 position-relative"
|
|
44
|
+
style="height: 100%;"
|
|
45
|
+
>
|
|
46
|
+
<field
|
|
47
|
+
name="appraisal_employee_feedback_template"
|
|
48
|
+
type="html"
|
|
49
|
+
placeholder="Use this area to write the content that will be displayed for the Employee. You can use a lot of options with the html editor, accessible by pressing / on the keyboard."
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div
|
|
55
|
+
class="col-11 col-md-6"
|
|
56
|
+
style="background-color: #e7e9ed; padding: 32px 16px;"
|
|
57
|
+
>
|
|
58
|
+
<div class="row">
|
|
59
|
+
<div class="col-11 d-flex justify-content-between">
|
|
60
|
+
<label
|
|
61
|
+
for="appraisal_manager_feedback_template"
|
|
62
|
+
string="Manager Feedback"
|
|
63
|
+
/>
|
|
64
|
+
</div>
|
|
65
|
+
<div
|
|
66
|
+
class="col-11 position-relative"
|
|
67
|
+
style="height: 100%;"
|
|
68
|
+
>
|
|
69
|
+
<field
|
|
70
|
+
name="appraisal_manager_feedback_template"
|
|
71
|
+
type="html"
|
|
72
|
+
placeholder="Use this area to write the content that will be displayed for the Employee. You can use a lot of options with the html editor, accessible by pressing / on the keyboard."
|
|
73
|
+
/>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</sheet>
|
|
79
|
+
</form>
|
|
80
|
+
</field>
|
|
81
|
+
</record>
|
|
82
|
+
<record model="ir.ui.view" id="hr_appraisal_template_tree_view">
|
|
83
|
+
<field name="name">hr.appraisal.template.tree.view</field>
|
|
84
|
+
<field name="model">hr.appraisal.template</field>
|
|
85
|
+
<field name="arch" type="xml">
|
|
86
|
+
<tree>
|
|
87
|
+
<field name="description" />
|
|
88
|
+
<field name="company_id" groups="base.group_multi_company" />
|
|
89
|
+
<field name="is_default" readonly="1" />
|
|
90
|
+
</tree>
|
|
91
|
+
</field>
|
|
92
|
+
</record>
|
|
93
|
+
<record id="hr_appraisal_template_action_form" model="ir.actions.act_window">
|
|
94
|
+
<field name="name">Appraisal Templates</field>
|
|
95
|
+
<field name="type">ir.actions.act_window</field>
|
|
96
|
+
<field name="res_model">hr.appraisal.template</field>
|
|
97
|
+
<field name="view_mode">tree,form</field>
|
|
98
|
+
</record>
|
|
99
|
+
<menuitem
|
|
100
|
+
id="menuitem_appraisal_template"
|
|
101
|
+
name="Appraisal Templates"
|
|
102
|
+
parent="hr_appraisal_oca.menu_hr_appraisal_configuration"
|
|
103
|
+
action="hr_appraisal_template_action_form"
|
|
104
|
+
sequence="55"
|
|
105
|
+
/>
|
|
106
|
+
</odoo>
|