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