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.
Files changed (37) hide show
  1. odoo/addons/hr_appraisal_oca/README.rst +218 -0
  2. odoo/addons/hr_appraisal_oca/__init__.py +2 -0
  3. odoo/addons/hr_appraisal_oca/__manifest__.py +28 -0
  4. odoo/addons/hr_appraisal_oca/data/mail_activity_type_data.xml +9 -0
  5. odoo/addons/hr_appraisal_oca/data/mail_template_data.xml +167 -0
  6. odoo/addons/hr_appraisal_oca/i18n/es.po +1201 -0
  7. odoo/addons/hr_appraisal_oca/i18n/hr_appraisal_oca.pot +1086 -0
  8. odoo/addons/hr_appraisal_oca/models/__init__.py +5 -0
  9. odoo/addons/hr_appraisal_oca/models/hr_appraisal.py +444 -0
  10. odoo/addons/hr_appraisal_oca/models/hr_appraisal_tag.py +21 -0
  11. odoo/addons/hr_appraisal_oca/models/hr_appraisal_template.py +31 -0
  12. odoo/addons/hr_appraisal_oca/models/hr_employee.py +125 -0
  13. odoo/addons/hr_appraisal_oca/models/res_config_settings.py +16 -0
  14. odoo/addons/hr_appraisal_oca/readme/CONTRIBUTORS.md +6 -0
  15. odoo/addons/hr_appraisal_oca/readme/DESCRIPTION.md +5 -0
  16. odoo/addons/hr_appraisal_oca/readme/USAGE.md +95 -0
  17. odoo/addons/hr_appraisal_oca/security/hr_appraisal_security.xml +58 -0
  18. odoo/addons/hr_appraisal_oca/security/ir.model.access.csv +10 -0
  19. odoo/addons/hr_appraisal_oca/static/description/banner.png +0 -0
  20. odoo/addons/hr_appraisal_oca/static/description/icon.png +0 -0
  21. odoo/addons/hr_appraisal_oca/static/description/index.html +535 -0
  22. odoo/addons/hr_appraisal_oca/tests/__init__.py +1 -0
  23. odoo/addons/hr_appraisal_oca/tests/test_hr_appraisal.py +120 -0
  24. odoo/addons/hr_appraisal_oca/views/hr_appraisal_form_view.xml +465 -0
  25. odoo/addons/hr_appraisal_oca/views/hr_appraisal_tag_form_view.xml +47 -0
  26. odoo/addons/hr_appraisal_oca/views/hr_appraisal_template_form_view.xml +106 -0
  27. odoo/addons/hr_appraisal_oca/views/hr_employee_form_view.xml +42 -0
  28. odoo/addons/hr_appraisal_oca/views/res_config_settings_views.xml +59 -0
  29. odoo/addons/hr_appraisal_oca/wizard/__init__.py +2 -0
  30. odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_request_wizard_view.xml +40 -0
  31. odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_wizard.py +159 -0
  32. odoo/addons/hr_appraisal_oca/wizard/hr_appraisal_wizard_form_view.xml +32 -0
  33. odoo/addons/hr_appraisal_oca/wizard/send_mail_with_template_wizard.py +52 -0
  34. odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/METADATA +233 -0
  35. odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/RECORD +37 -0
  36. odoo_addon_hr_appraisal_oca-16.0.1.0.0.3.dist-info/WHEEL +5 -0
  37. 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': &quot;['|', ('state','!=','1_new'), '&amp;', ('manager_user_ids', 'not in', uid), '&amp;', ('employee_user_id', '!=', uid), ('is_manager', '=', False)]&quot;}"
16
+ />
17
+ <button
18
+ name="action_done"
19
+ string="Mark as Done"
20
+ type="object"
21
+ class="oe_highlight"
22
+ attrs="{'invisible': &quot;['|', ('state','!=','2_pending'), '&amp;', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]&quot;}"
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': &quot;['|', '&amp;', ('state','!=','3_done'), ('state','!=','cancel'), '&amp;', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]&quot;}"
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', '&lt;', 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': &quot;['|',('state', '=', ('3_done')), '&amp;', ('state', '=', ('2_pending')), '&amp;', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]&quot;}"
82
+ />
83
+ <field
84
+ name="date_close"
85
+ attrs="{'readonly': [('state', '=', '3_done')]}"
86
+ />
87
+ <field
88
+ name="appraisal_template_id"
89
+ attrs="{'readonly': &quot;['|',('state','!=', ('1_new')), '&amp;', ('manager_user_ids', 'not in', uid), '&amp;', ('employee_user_id', '!=', uid), ('is_manager', '=', False)]&quot;}"
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': &quot;['|', ('employee_feedback_published', '=', False), ('state', '!=', '1_new')]&quot;}"
145
+ >Visible &amp; 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': &quot;['|', ('employee_feedback_published', '=', True), '&amp;', ('state', '=', '1_new'), ('employee_user_id', '=', uid)]&quot;}"
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': &quot;['|', ('employee_feedback_published', '=', False), '&amp;', ('state', '=', '1_new'), ('employee_user_id', '=', uid)]&quot;}"
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': ['&amp;', ('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': ['&amp;', ('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': &quot;[('employee_user_id', '=', uid)]&quot;}"
291
+ >
292
+ <field
293
+ name="note"
294
+ attrs="{'readonly': &quot;['|', ('state', '=', '3_done'), '&amp;', ('manager_user_ids', 'not in', uid), ('is_manager', '=', False)]&quot;}"
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 &lt; (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>