[IMP] hr_evaluation: improved view
[odoo/odoo.git] / addons / hr_evaluation / hr_evaluation_view.xml
1 <?xml version="1.0" ?>
2 <openerp>
3     <data>
4
5       <record id="view_hr_evaluation_plan_search" model="ir.ui.view">
6             <field name="name">hr_evaluation.plan.search</field>
7             <field name="model">hr_evaluation.plan</field>
8             <field name="type">search</field>
9             <field name="arch" type="xml">
10                 <search string="Appraisal Plan">
11                    <group>
12                        <field name="name"/>
13                        <field name="company_id" widget="selection" groups="base.group_multi_company"/>
14                    </group>
15                    <newline/>
16                    <group expand="0" string="Group By..." groups="base.group_multi_company">
17                         <filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}"/>
18                     </group>
19                </search>
20             </field>
21         </record>
22
23         <record model="ir.ui.view" id="view_hr_evaluation_plan_form">
24             <field name="name">hr_evaluation.plan.form</field>
25             <field name="model">hr_evaluation.plan</field>
26             <field name="type">form</field>
27             <field name="arch" type="xml">
28                 <form string="Appraisal Plan">
29                     <group col="8" colspan="4">
30                         <field name="name" select="1"/>
31                         <field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
32                         <field name="month_first"/>
33                         <field name="month_next"/>
34                         <newline/>
35                         <field name="active"/>
36                     </group>
37                      <notebook colspan="4">
38                          <page string="Appraisal Phases">
39                             <field name="phase_ids" nolabel="1" colspan="4"/>
40                          </page>
41                      </notebook>
42                 </form>
43             </field>
44         </record>
45         <record model="ir.ui.view" id="view_hr_evaluation_plan_tree">
46             <field name="name">hr_evaluation.plan.form</field>
47             <field name="model">hr_evaluation.plan</field>
48             <field name="type">tree</field>
49             <field name="arch" type="xml">
50                 <tree string="Appraisal Plan">
51                     <field name="name"/>
52                     <field name="month_first"/>
53                     <field name="month_next"/>
54                     <field name="company_id" groups="base.group_multi_company"/>
55                 </tree>
56             </field>
57         </record>
58         <record model="ir.actions.act_window" id="open_view_hr_evaluation_plan_tree">
59             <field name="name">Appraisal Plans</field>
60             <field name="res_model">hr_evaluation.plan</field>
61             <field name="view_type">form</field>
62             <field name="view_mode">tree,form</field>
63         </record>
64
65         <menuitem name="Appraisal" parent="hr.menu_hr_root" id="menu_eval_hr" sequence="25"/>
66         <menuitem name="Periodic Appraisal" parent="hr.menu_hr_configuration" id="menu_eval_hr_config" sequence="4"/>
67         <menuitem parent="hr.menu_hr_configuration" id="menu_open_view_hr_evaluation_plan_tree"
68             action="open_view_hr_evaluation_plan_tree" sequence="15"/>
69
70         <record model="ir.ui.view" id="view_hr_evaluation_plan_phase_form">
71             <field name="name">hr_evaluation.plan.phase.form</field>
72             <field name="model">hr_evaluation.plan.phase</field>
73             <field name="type">form</field>
74             <field name="arch" type="xml">
75                 <form string="Appraisal Plan Phases">
76                  <notebook>
77                    <page string="General">
78                     <field name="plan_id" invisible="1"/>
79                     <group col="8" colspan="4">
80                         <field name="name"/>
81                         <field name="wait"/>
82                         <field name="sequence"/>
83                     </group>
84                     <group col="4" colspan="4">
85                         <separator string="Action to Perform" colspan="4"/>
86                         <field name="action"/>
87                         <field name="survey_id" domain="[('state','=','open')]"/>
88                     </group>
89                     <group col="4" colspan="4">
90                         <group col="4" colspan="2">
91                             <separator string="Send to Managers" colspan="2"/>
92                             <newline/>
93                             <field name="send_answer_manager"/>
94                             <newline/>
95                             <field name="send_anonymous_manager"/>
96                         </group>
97                         <group col="4" colspan="2">
98                             <separator string="Send to Employees" colspan="2"/>
99                             <newline/>
100                             <field name="send_answer_employee"/>
101                             <newline/>
102                             <field name="send_anonymous_employee"/>
103                         </group>
104                     </group>
105                     </page>
106                     <page string="Mail Settings">
107                         <field name="mail_feature" colspan="4"/>
108                         <newline/>
109                         <separator string="Mail Body"/>
110                         <newline/>
111                         <field name="mail_body" colspan="4" nolabel="1"/>
112                         <newline/>
113                         <separator string="Legend" colspan ="4"/>
114                           <label string=" (employee_name)s: Partner name" colspan="2"/>
115                           <label string="(user_signature)s: User name" colspan="2"/>
116                           <label string="(date)s: Current Date" colspan="2"/>
117                           <label string="(eval_name)s:Appraisal Name" colspan="2"/>
118                     </page>
119                   </notebook>
120                 </form>
121             </field>
122         </record>
123         <record model="ir.ui.view" id="view_hr_evaluation_plan_phase_tree">
124             <field name="name">hr_evaluation.plan.phase.form</field>
125             <field name="model">hr_evaluation.plan.phase</field>
126             <field name="type">tree</field>
127             <field name="arch" type="xml">
128                 <tree string="Appraisal Plan Phases" editable="bottom" >
129                     <field name="sequence"/>
130                     <field name="name"/>
131                     <field name="action"/>
132                     <field name="survey_id"/>
133                     <field name="wait"/>
134                 </tree>
135             </field>
136         </record>
137
138         <record id="hr_hr_employee_view_form" model="ir.ui.view">
139             <field name="name">hr.hr.employee.view.form</field>
140             <field name="model">hr.employee</field>
141             <field name="inherit_id" ref="hr.view_employee_form"/>
142             <field name="arch" type="xml">
143                 <page string="Notes" position="before">
144                     <page string="Appraisal" groups="base.group_hr_user">
145                         <field name="evaluation_plan_id" on_change="onchange_evaluation_plan_id(evaluation_plan_id, evaluation_date)"/>
146                         <field name="evaluation_date"/>
147                     </page>
148                 </page>
149             </field>
150         </record>
151
152         <record model="ir.ui.view" id="view_hr_evaluation_form">
153             <field name="name">hr_evaluation.evaluation.form</field>
154             <field name="model">hr_evaluation.evaluation</field>
155             <field name="type">form</field>
156             <field name="arch" type="xml">
157                 <form layout="manual">
158                 <div class="oe_form_topbar">
159                     <button name="button_plan_in_progress" string="Start Appraisal" states="draft" type="object" icon="gtk-execute"/>
160                     <button name="button_final_validation" string="Validate Appraisal" states="wait" type="object" icon="gtk-go-forward"/>
161                     <button name="button_done" string="Done" states="progress" type="object" icon="gtk-jump-to"/>
162                     <button name="button_draft" string="Reset to Draft" states="cancel" type="object" icon="terp-stock_effects-object-colorize"/>
163                     <button name="button_cancel" string="Cancel" states="draft,wait,progress" type="object" icon="gtk-cancel"/>
164                     <div class="oe_right">
165                         <field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,progress,wait,done" statusbar_colors='{"progress":"blue"}'/>
166                     </div>
167                 </div>
168                 <sheet string="Appraisal" layout="auto">
169                     <group col="4" colspan="3">
170                         <separator string="Appraisal Data" colspan="4"/>
171                         <field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
172                         <field name="plan_id"/>
173                         <field name="date"/>
174                         <field name="progress" widget="progressbar"/>
175                     </group>
176                     <group col="2" colspan="1">
177                         <separator string="Ending Summary" colspan="2"/>
178                         <field name="rating" attrs="{'readonly':[('state','&lt;&gt;','progress')],'required':[('state','=','progress')]}"/>
179                         <field name="date_close" readonly="1"/>
180                     </group>
181                     <notebook colspan="4">
182                         <page string="Appraisal">
183                             <field name="survey_request_ids" nolabel="1" colspan="4" widget="one2many">
184                                 <form string="Interview Appraisal">
185                                     <group col="4" colspan="4">
186                                         <field name="survey_id"/>
187                                         <group col="2" colspan="2">
188                                             <button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
189                                             <button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
190                                         </group>
191                                         <field name="date_deadline"/>
192                                         <field name="response" readonly="1"/>
193                                         <field name="user_to_review_id"/>
194                                         <field name="user_id" string="Interviewer"/>
195                                     </group>
196                                     <newline/>
197                                     <separator string="State" colspan="4"/>
198                                     <group colspan="4" col="6">
199                                          <field name="state"/>
200                                     </group>
201                                 </form>
202                             </field>
203                         </page>
204                         <page string="Internal Notes">
205                             <field name="note_action" colspan="4" nolabel="1"
206                                 groups="base.group_hr_manager"/>
207                         </page>
208                         <page string="Public Notes">
209                             <field name="note_summary" colspan="4" nolabel="1"/>
210                         </page>
211                     </notebook>
212               </sheet>
213               </form>
214             </field>
215         </record>
216
217         <record model="ir.ui.view" id="view_hr_evaluation_tree">
218             <field name="name">hr_evaluation.evaluation.tree</field>
219             <field name="model">hr_evaluation.evaluation</field>
220             <field name="type">tree</field>
221             <field name="arch" type="xml">
222                 <tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')" string="Appraisal">
223                     <field name="employee_id"/>
224                     <field name="plan_id"/>
225                     <field name="date"/>
226                     <!--field name="progress" widget="progressbar"/-->
227                     <field name="rating"/>
228                     <field name="state"/>
229                 </tree>
230             </field>
231         </record>
232
233         <record model="ir.ui.view" id="view_hr_evaluation_graph">
234             <field name="name">hr_evaluation.evaluation.graph</field>
235             <field name="model">hr_evaluation.evaluation</field>
236             <field name="type">graph</field>
237             <field name="arch" type="xml">
238                 <graph string="Appraisal" type="bar">
239                     <field name="employee_id"/>
240                     <field name="progress"  operator="+"/>
241                 </graph>
242             </field>
243         </record>
244
245        <record id="hr_evaluation.evaluation_search" model="ir.ui.view">
246             <field name="name">hr_evaluation.evaluation_search</field>
247             <field name="model">hr_evaluation.evaluation</field>
248             <field name="type">search</field>
249             <field name="arch" type="xml">
250                 <search string="Search Appraisal">
251                    <group>
252                     <filter icon="terp-check" string="Pending" domain="[('state','=','wait')]" help="Appraisal that are in Plan In Progress state"/>
253                     <filter icon="terp-camera_test" string="In progress" domain="[('state','=','progress')]" help="Appraisal that are in waiting appreciation state"/>
254                     <separator orientation="vertical"/>
255                     <filter icon="terp-go-week" string="7 Days" help="Appraisal to close within the next 7 days"
256                         domain="[('date', '&gt;=', (datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]" />
257                     <separator orientation="vertical"/>
258                     <filter icon="terp-gnome-cpu-frequency-applet+" string="Late"
259                         help="Appraisal that overpassed the deadline" domain="[('date','&lt;=',(datetime.date.today()).strftime('%%Y-%%m-%%d'))]" />
260                     <separator orientation="vertical"/>
261                     <field name="employee_id" />
262                     <field name="plan_id" widget="selection" />
263                     </group>
264                     <newline/>
265                     <group expand='0' string='Group by...'>
266                     <filter string='Employee' icon="terp-personal" domain="[]" context="{'group_by' : 'employee_id'}" />
267                     <separator orientation="vertical"/>
268                     <filter string='Plan' icon="terp-stock_align_left_24" domain="[]" context="{'group_by' : 'plan_id'}" />
269                     <filter string='State' icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by' : 'state'}" />
270                     <separator orientation="vertical"/>
271                     <filter string='Date' icon="terp-go-month" domain="[]" context="{'group_by' : 'date'}" />
272                    </group>
273                </search>
274             </field>
275         </record>
276
277         <record model="ir.actions.act_window" id="open_view_hr_evaluation_tree">
278             <field name="name">Appraisal</field>
279             <field name="res_model">hr_evaluation.evaluation</field>
280             <field name="view_type">form</field>
281             <field name="view_mode">tree,form,graph</field>
282             <field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
283             <field name="help">Each employee may be assigned an Appraisal Plan. Such a plan defines the frequency and the way you manage your periodic personnel evaluation. You will be able to define steps and attach interviews to each step. OpenERP manages all kind of evaluations: bottom-up, top-down, self-evaluation and final evaluation by the manager.</field>
284         </record>
285
286         <menuitem name="Appraisal" parent="menu_eval_hr" id="menu_open_view_hr_evaluation_tree"
287             action="open_view_hr_evaluation_tree" groups="base.group_hr_user"/>
288
289         <record model="ir.ui.view" id="view_hr_evaluation_interview_form">
290             <field name="name">hr_evaluation.interview.form</field>
291             <field name="model">hr.evaluation.interview</field>
292             <field name="type">form</field>
293             <field name="arch" type="xml">
294                 <form string="Interview Appraisal">
295                     <group col="4" colspan="4">
296                         <field name="survey_id"/>
297                         <field name="evaluation_id"/>
298                         <group col="2" colspan="2">
299                             <button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
300                             <button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
301                         </group>
302                         <field name="date_deadline"/>
303                         <field name="response" readonly="1"/>
304                         <field name="user_to_review_id"/>
305                         <field name="user_id" string="Interviewer"/>
306                         <group col="2" colspan="2">
307                             <button string="Send Reminder Email"
308                             name="%(mail.action_email_compose_message_wizard)d"
309                             icon="terp-mail-message-new" type="action"
310                             states="waiting_answer"/>
311                             <button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
312                         </group>
313                     </group>
314                     <newline/>
315                     <separator string="State" colspan="4"/>
316                     <group colspan="4" col="6">
317                          <field name="state"/>
318                     </group>
319                 </form>
320             </field>
321         </record>
322
323         <record model="ir.ui.view" id="view_hr_evaluation_interview_tree">
324             <field name="name">hr_evaluation.interview.tree</field>
325             <field name="model">hr.evaluation.interview</field>
326             <field name="type">tree</field>
327             <field name="arch" type="xml">
328                 <tree string="Interview Appraisal">
329                     <field name="date_deadline" string="Deadline Date"/>
330                     <field name="survey_id"/>
331                     <field name="user_id" string="Interviewer"/>
332                     <field name="user_to_review_id"/>
333                     <field name="response" readonly="1" invisible="True"/>
334                     <button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
335                     <button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0}" attrs="{'readonly':[('response','=',False)]}" />
336                     <button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
337                     <button name="%(mail.action_email_compose_message_wizard)d" string="Send Reminder Email" icon="terp-mail-message-new" type="action" colspan="2" states="waiting_answer"/>
338                     <field name="state"/>
339                 </tree>
340             </field>
341         </record>
342
343        <record id="view_hr_evaluation_interview_search" model="ir.ui.view">
344             <field name="name">view_hr_evaluation_interview_search</field>
345             <field name="model">hr.evaluation.interview</field>
346             <field name="type">search</field>
347             <field name="arch" type="xml">
348                 <search string="Search Appraisal">
349                    <group>
350                         <filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','waiting_answer')]"/>
351                         <separator orientation="vertical"/>
352                         <filter icon="terp-gnome-cpu-frequency-applet+" string="Late" domain="[('date_deadline','&lt;',current_date)]"/>
353                         <separator orientation="vertical"/>
354                         <field name="user_to_review_id"/>
355                         <field name="user_id" string="Interviewer"/>
356                    </group>
357                    <newline/>
358                     <group expand="0" string="Group By...">
359                         <filter string="Interviewer" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
360                         <separator orientation="vertical"/>
361                         <filter string="Survey" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'survey_id'}"/>
362                         <separator orientation="vertical"/>
363                         <filter string="State" name="group_state" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
364                     </group>
365                </search>
366             </field>
367         </record>
368
369         <record id="view_evaluation_calendar" model="ir.ui.view">
370             <field name="name">Interview Requests</field>
371             <field name="model">hr.evaluation.interview</field>
372             <field name="type">calendar</field>
373             <field name="arch" type="xml">
374                 <calendar string="Interview Request" color="user_to_review_id" date_start="date_deadline">
375                     <field name="request_id"/>
376                 </calendar>
377             </field>
378         </record>
379
380         <record model="ir.actions.act_window" id="action_hr_evaluation_interview_tree">
381             <field name="name">Interview Requests</field>
382             <field name="res_model">hr.evaluation.interview</field>
383             <field name="view_type">form</field>
384             <field name="view_id" eval="False"/>
385             <field name="domain">[('is_evaluation' ,'=', True)]</field>
386             <field name="context">{'default_is_evaluation': True, "search_default_todo":1,"search_default_user_id":uid}</field>
387             <field name="search_view_id" ref="view_hr_evaluation_interview_search"/>
388             <field name="help">Interview Requests are generated automatically by OpenERP according to an employee's Appraisal Plan. Each user receives automatic emails and requests to evaluate their colleagues periodically.</field>
389         </record>
390
391         <record model="ir.actions.act_window.view" id="hr_evaluation_interview_tree">
392             <field name="sequence" eval="1"/>
393             <field name="view_mode">tree</field>
394             <field name="view_id" ref="view_hr_evaluation_interview_tree"/>
395             <field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
396         </record>
397         <record model="ir.actions.act_window.view" id="hr_evaluation_interview_form">
398             <field name="sequence" eval="2"/>
399             <field name="view_mode">form</field>
400             <field name="view_id" ref="view_hr_evaluation_interview_form"/>
401             <field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
402         </record>
403         <record model="ir.actions.act_window.view" id="action_view_evaluation_calendar">
404             <field name="sequence" eval="3"/>
405             <field name="view_mode">calendar</field>
406             <field name="view_id" ref="view_evaluation_calendar"/>
407             <field name="act_window_id" ref="action_hr_evaluation_interview_tree"/>
408         </record>
409
410         <menuitem name="Interview Requests" parent="menu_eval_hr" id="menu_open_hr_evaluation_interview_requests"
411             action="action_hr_evaluation_interview_tree"/>
412
413       <!-- Email Compose message Action-->
414       <act_window
415       id="evaluation_reminders" name="Appraisal Reminders"
416       res_model="mail.compose.message"
417       src_model="hr.evaluation.interview"
418       view_type="form" view_mode="form"
419       target="new" multi="True"
420       key2="client_action_multi"
421       context="{'mail.compose.message.mode':'mass_mail'}"/>
422
423       <!-- Appraisal Interviews Button on Employee Form -->
424       <act_window
425       context="{'search_default_user_to_review_id': [active_id], 'default_user_to_review_id': active_id}"
426       id="act_hr_employee_2_hr__evaluation_interview"
427       name="Appraisal Interviews"
428       res_model="hr.evaluation.interview"
429       src_model="hr.employee"/>
430
431     </data>
432 </openerp>