[MOD/IMP]hr_* :Usability Improvement in view
[odoo/odoo.git] / addons / hr_holidays / hr_holidays_view.xml
1 <?xml version="1.0" ?>
2 <openerp>
3     <data>
4
5         <record id="view_hr_holidays_filter" model="ir.ui.view">
6             <field name="name">hr.holidays.filter</field>
7             <field name="model">hr.holidays</field>
8             <field name="type">search</field>
9             <field name="arch" type="xml">
10                 <search string="Search Leave">
11                     <group col='8' colspan='4'>
12                         <filter icon="terp-camera_test" domain="[('state','=','validate')]" string="Validated"
13                             default="context.get('report', False)"/> 
14                         <separator orientation="vertical"/>                    
15                         <filter icon="terp-check" domain="[('state','=','draft')]" string="To Confirm"/>
16                         <filter icon="terp-camera_test" domain="[('state','=','confirm')]" string="To Approve"/>
17                         <separator orientation="vertical"/>
18                         <filter string="This Month" icon="terp-go-month" name="This Month"
19                                 domain="[('date_from','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date_from','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"/>
20                         <separator orientation="vertical"/>
21                         <field name="employee_id">
22                             <filter icon="terp-personal"
23                                 name="my_leaves"
24                                 domain="[('employee_id.user_id','=', uid)]"
25                                 help="My Leaves" />
26                         </field>
27                         <field name="department_id" widget="selection">
28                             <filter icon="terp-personal+" help="My Department Holidays"
29                                 domain="[('department_id.manager_id','=',uid)]" />
30                         </field>
31                         <field name="holiday_status_id" widget="selection"/>
32                     </group>
33                     <newline/>
34                     <group expand="0" string="Extended options...">
35                         <field name="date_from"/>
36                         <field name="date_to"/>
37                     </group>
38                     <newline />
39                     <group expand="0" string="Group By...">
40                         <filter name="group_employee" string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
41                         <filter string="Manager" icon="terp-personal" domain="[]" context="{'group_by':'manager_id'}"/>                        
42                         <filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id','set_visible':True}"/>                        
43                         <separator orientation="vertical"/>
44                         <filter name="group_type" string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'holiday_status_id'}"
45                             default="context.get('report', False)"/>
46                         <separator orientation="vertical"/>                   
47                         <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
48                     </group>
49                 </search>
50             </field>
51         </record>
52
53         <!-- Holidays: Leave Request -->
54
55         <record id="view_holiday_new_calendar" model="ir.ui.view">
56             <field name="name">Leave Request</field>
57             <field name="model">hr.holidays</field>
58             <field name="type">calendar</field>
59             <field name="arch" type="xml">
60                 <calendar string="Leave Request" color="name" date_start="date_from" date_stop="date_to">
61                         <field name="holiday_status_id"/>
62                 </calendar>
63             </field>
64         </record>
65
66         <record model="ir.ui.view" id="edit_holiday_new">
67             <field name="name">Leave Request</field>
68             <field name="model">hr.holidays</field>
69             <field name="type">form</field>
70             <field name="priority">1</field>
71             <field name="arch" type="xml">
72                 <form string="Leave Request">
73                     <group col="8" colspan="4">
74                     <field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}" />
75                     <field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" groups="base.group_hr_manager"/>
76                         <group attrs="{'invisible':[('holiday_type','=','employee')]}">
77                         <field name="category_id"  attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')]}"/>
78                         </group>
79                         <group attrs="{'invisible':[('holiday_type','=','category')]}">
80                         <field name="employee_id" attrs="{'required':[('holiday_type','=','employee')]}"/>
81                         </group>
82                     </group>
83                     <notebook colspan="4">
84                         <page string="General">
85                             <field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}" />
86                             <field name="department_id"/>
87                             <field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1"/>
88                             <field name="date_to" on_change="onchange_date_to(date_from, date_to)" required="1"/>
89                             <field name="number_of_days_temp"/>
90                             <newline/>
91                             <field name="manager_id"/>
92                             <field name="manager_id2"/>
93                             <separator string="Reasons" colspan="4"/>
94                             <field name="notes" nolabel="1" colspan="4"/>
95                             <newline/>
96                             <field name="state" colspan="2"/>
97                             <group colspan="2" col="6">
98                                 <button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
99                                 <button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
100                                 <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
101                                 <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
102                                 <button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
103                                 <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
104                             </group>
105                         </page>
106                     </notebook>
107                 </form>
108             </field>
109         </record>
110
111         <!-- Holidays: Allocation Request -->
112         <record model="ir.ui.view" id="allocation_leave_new">
113             <field name="name">Allocation Request</field>
114             <field name="model">hr.holidays</field>
115             <field name="type">form</field>
116             <field name="arch" type="xml">
117             <form string="Allocation Request">
118                 <group col="8" colspan="4">
119                     <field name="name" />
120                     <field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Type" groups="base.group_extended"/>
121                         <group attrs="{'invisible':[('holiday_type','=','category')]}">
122                         <field name="employee_id" attrs="{'required':[('holiday_type','=','employee')]}"/>
123                         </group>
124                         <group attrs="{'invisible':[('holiday_type','=','employee')]}">
125                         <field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')]}"/>
126                         </group>
127                 </group>
128                 <notebook colspan="4">
129                     <page string="General">
130                         <field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}" />
131                         <field name="department_id"/>                    
132                         <field name="number_of_days_temp"/>
133                         <newline/>
134                         <field name="manager_id"/>
135                         <field name="manager_id2"/>
136                         <separator string="Reasons" colspan="4"/>
137                         <field name="notes" nolabel="1" colspan="4" />
138                         <newline/>
139                         <field name="state" colspan="2"/>
140                         <group colspan="2" col="6">
141                             <button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
142                             <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
143                             <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
144                             <button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
145                             <button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
146                             <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
147                         </group>
148                     </page>
149                 </notebook>
150             </form>
151             </field>
152         </record>
153
154         <record model="ir.ui.view" id="view_holiday_allocation_tree">
155             <field name="name">hr.holidays.allocation.tree</field>
156             <field name="model">hr.holidays</field>
157             <field name="type">tree</field>
158             <field name="arch" type="xml">
159                 <tree colors="red:state in ('refuse');blue:state in (' draft');black:state in ('confirm','validate','validate1');gray:state in ('cancel') " string="Leaves" >
160                     <field name="employee_id"/>
161                     <field name="department_id" invisible="1"/>
162                     <field name="holiday_status_id"/>
163                     <field name="name"/>                     
164                     <field name="number_of_days" string="Number of Days" sum='Remaining Days'/>
165                     <field name="manager_id" invisible="1"/>
166                     <field name="user_id" invisible="1"/>
167                     <!--field name="type"/-->
168                     <field name="state"/>
169                     <button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
170                     <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
171                     <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
172                     <button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
173                     <button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
174                     <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
175                 </tree>
176             </field>
177         </record>
178
179         <!-- Holidays: Leaves Management -->
180         <record model="ir.ui.view" id="allocation_company_new">
181             <field name="name">Leaves Management</field>
182             <field name="model">hr.holidays</field>
183             <field name="type">form</field>
184             <field name="arch" type="xml">
185                 <form string="Leaves Management">
186                     <field name="name" />
187                     <field name="holiday_status_id" />
188                     <field name="type"/>
189                     <field name="date_from" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
190                     <field name="date_to" on_change="onchange_date_to(date_from, date_to)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
191                     <field name="number_of_days_temp"/>
192                     <notebook colspan="4">
193                         <page string="General">
194                             <field name="manager_id"/>
195                             <field name="notes" colspan="4"/>
196                             <newline/>
197                             <field name="state" colspan="2"/>
198                             <group colspan="2">
199                                 <button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel"/>
200                                 <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
201                                 <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
202                                 <button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no"/>
203                                 <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
204                             </group>
205                         </page>
206                     </notebook>
207                 </form>
208             </field>
209         </record>
210
211         <record model="ir.ui.view" id="view_holiday_simple">
212             <field name="name">hr.holidays.reprot_tree</field>
213             <field name="model">hr.holidays</field>
214             <field name="type">tree</field>
215             <field name="priority">20</field>
216             <field name="arch" type="xml">
217                 <tree colors="red:state in ('refuse');blue:state in (' draft');black:state in ('confirm','validate','validate1');gray:state in ('cancel')" string="Leaves Summary">
218                     <field name="employee_id"/>
219                     <field name="department_id" invisible="1"/>
220                     <field name="type"/>  
221                     <field name="name"/>                    
222                     <field name="number_of_days" string="Number of Days" sum='Remaining Days'/>
223                     <field name="date_from"/>
224                     <field name="date_to"/>
225                     <field name="holiday_status_id"/>
226                     <field name="manager_id" invisible="1"/>
227                     <field name="user_id" invisible="1"/>
228                     <field name="state"/>
229                     <button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
230                     <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
231                     <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
232                     <button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
233                     <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
234                 </tree>
235             </field>
236         </record>
237
238
239         <record model="ir.ui.view" id="view_holiday">
240             <field name="name">hr.holidays.tree</field>
241             <field name="model">hr.holidays</field>
242             <field name="type">tree</field>
243             <field name="arch" type="xml">
244                 <tree colors="red:state in ('refuse');blue:state in (' draft');black:state in ('confirm','validate','validate1');gray:state in ('cancel')">
245                     <field name="employee_id"/>
246                     <field name="department_id" invisible="not context.get('set_visible',False)"/>
247                     <field name="holiday_status_id"/>
248                     <field name="name"/>
249                     <field name="number_of_days" string="Number of Days" sum='Remaining Days'/>
250                     <field name="date_from"/>
251                     <field name="date_to"/>
252                     <field name="manager_id" invisible="1"/>
253                     <field name="user_id" invisible="1"/>
254                     <!--field name="type"/-->
255                     <field name="state"/>
256                     <button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
257                     <button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
258                     <button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
259                     <button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
260                     <button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
261                 </tree>
262             </field>
263         </record>
264
265         <!-- My leave dashboard -->
266         <menuitem
267             name="Holidays"
268             parent="hr.menu_hr_root"
269             id="menu_open_ask_holidays"
270             sequence="5"/>
271
272         <record model="ir.actions.act_window" id="open_ask_holidays">
273             <field name="name">Leave Requests</field>
274             <field name="res_model">hr.holidays</field>
275             <field name="view_type">form</field>
276             <field name="view_id" ref="edit_holiday_new"/>
277             <field name="context">{"search_default_department_id": department_id, "search_default_my_leaves": 1}</field>
278             <field name="domain">[('type','=','remove')]</field>
279             <field name="search_view_id" ref="view_hr_holidays_filter"/>
280             <field name="help">Leaves requests can be recorded by employees and validated by their managers. Once a leave request is validated it appears automatically in the agenda of the employee. You can define several allowance types (paid holidays, sickness, etc) and manage allowances per type.</field>
281         </record>
282
283         <record model="ir.actions.act_window.view" id="action_open_ask_holidays_tree">
284             <field name="sequence" eval="1"/>
285             <field name="view_mode">tree</field>
286             <field name="view_id" ref="view_holiday"/>
287             <field name="act_window_id" ref="open_ask_holidays"/>
288         </record>
289
290         <record model="ir.actions.act_window.view" id="action_open_ask_holidays_form">
291             <field name="sequence" eval="2"/>
292             <field name="view_mode">form</field>
293             <field name="view_id" ref="edit_holiday_new"/>
294             <field name="act_window_id" ref="open_ask_holidays"/>
295         </record>
296
297         <record model="ir.actions.act_window.view" id="action_open_ask_holidays_calendar">
298             <field name="sequence" eval="3"/>
299             <field name="view_mode">calendar</field>
300             <field name="view_id" ref="view_holiday_new_calendar"/>
301             <field name="act_window_id" ref="open_ask_holidays"/>
302         </record>
303
304         <menuitem name="Leave Requests" parent="menu_open_ask_holidays" id="menu_open_ask_holidays_new"
305              action="open_ask_holidays"/>
306
307         <record model="ir.actions.act_window" id="open_allocation_holidays">
308             <field name="name">Allocation Requests</field>
309             <field name="res_model">hr.holidays</field>
310             <field name="view_type">form</field>
311             <field name="context">{"search_default_my_leaves": 1,'type':'add',"search_default_department_id": department_id}</field>
312             <field name="domain">[('type','=','add')]</field>
313             <field name="view_id" ref="allocation_leave_new"/>
314             <field name="search_view_id" ref="view_hr_holidays_filter"/>
315         </record>
316
317         <record model="ir.actions.act_window.view" id="action_open_allocation_holidays_tree">
318             <field name="sequence" eval="1"/>
319             <field name="view_mode">tree</field>
320             <field name="view_id" ref="view_holiday_allocation_tree"/>
321             <field name="act_window_id" ref="open_allocation_holidays"/>
322         </record>
323
324         <record model="ir.actions.act_window.view" id="action_open_allocation_holidays_form">
325             <field name="sequence" eval="2"/>
326             <field name="view_mode">form</field>
327             <field name="view_id" ref="allocation_leave_new"/>
328             <field name="act_window_id" ref="open_allocation_holidays"/>
329         </record>
330
331         <menuitem name="Allocation Requests" parent="menu_open_ask_holidays" id="menu_open_allocation_holidays"
332             action="open_allocation_holidays"/>
333
334         <record model="ir.actions.act_window" id="open_company_allocation">
335             <field name="res_model">hr.holidays</field>
336             <field name="view_type">form</field>
337             <field name="view_mode">tree,form</field>
338             <field name="view_id" eval="view_holiday_simple"/>
339             <field name="context">{'search_default_my_leaves': 1, 'search_default_group_type': 1}</field>
340             <field name="search_view_id" ref="view_hr_holidays_filter"/>
341         </record>
342
343         <menuitem
344             name="Leaves Summary"
345             parent="menu_open_ask_holidays"
346             id="menu_open_company_allocation"
347             action="open_company_allocation"
348             sequence="40"/>
349
350         <!-- holidays status -->
351         <record model="ir.ui.view" id="edit_holiday_status_form">
352             <field name="name">hr.holidays.status.form</field>
353             <field name="model">hr.holidays.status</field>
354             <field name="type">form</field>
355             <field name="arch" type="xml">
356                 <form string="Leave Type">
357                     <group colspan="4" col="6">
358                         <field name="name" />
359                         <field name="color_name"/>
360                         <field name="categ_id" widget="selection" groups="base.group_extended"/>
361                         <newline/>
362                                         </group>
363                                         <notebook colspan="4">
364                                           <page string="Details">
365                                                 <group name="selection" col="2" colspan="2">
366                                                         <field name="active"/>
367                                                         <newline/>
368                                                         <field name="double_validation" />
369                                                         <newline/>
370                                                         <field name="limit" />
371                                                 </group>
372                                           </page>
373                                         </notebook>
374                 </form>
375             </field>
376         </record>
377
378         <record model="ir.ui.view" id="view_holiday_status_tree">
379             <field name="name">hr.holidays.status.tree</field>
380             <field name="model">hr.holidays.status</field>
381             <field name="type">tree</field>
382             <field name="arch" type="xml">
383                 <tree string="Leave Type">
384                     <field name="name"/>
385                     <field name="remaining_leaves"/>
386                     <field name="limit" />
387                 </tree>
388             </field>
389         </record>
390                 <record id="view_hr_holidays_filter" model="ir.ui.view">
391             <field name="name">hr.holidays.status.filter</field>
392             <field name="model">hr.holidays.status</field>
393             <field name="type">search</field>
394             <field name="arch" type="xml">
395                 <search string="Leave Type">
396                     <group col='8' colspan='4'>
397                         <field name="name" selection="1"/>
398                         <field name="limit"/>
399                     </group>
400                 </search>
401             </field>
402         </record>
403         <record id="open_view_holiday_status" model="ir.actions.act_window">
404             <field name="name">Leave Type</field>
405             <field name="type">ir.actions.act_window</field>
406             <field name="res_model">hr.holidays.status</field>
407             <field name="view_type">form</field>
408             <field name="view_mode">tree,form</field>
409         </record>
410
411         <menuitem sequence="3" id="hr.menu_open_view_attendance_reason_config" parent="hr.menu_hr_configuration" name="Holidays" groups="base.group_hr_manager"/>
412         <menuitem name="Leave Type"
413             action="open_view_holiday_status"
414             id="menu_open_view_holiday_status"
415             parent="hr.menu_open_view_attendance_reason_config"/>
416
417     <!-- holiday on resource leave -->
418         <record id="resource_calendar_leave_form_inherit" model="ir.ui.view">
419             <field name="name">resource.calendar.leaves.form.inherit</field>
420             <field name="model">resource.calendar.leaves</field>
421             <field name="type">form</field>
422             <field name="inherit_id" ref="resource.resource_calendar_leave_form"/>
423             <field name="arch" type="xml">
424                 <field name="date_to" position="after">
425                     <field name="holiday_id"/>
426                 </field>
427             </field>
428         </record>
429
430     <!--  Shortcuts -->
431         <act_window name="Holidays"
432             domain="[('type','=','remove')]"
433             context="{'search_default_employee_id': [active_id]}" 
434             res_model="hr.holidays"
435             src_model="hr.employee"
436             view_id ="eval('edit_holiday_new')"
437             id="act_hr_employee_holiday_request"/>
438
439     </data>
440 </openerp>