[merge] trunk
[odoo/odoo.git] / addons / hr_timesheet_sheet / hr_timesheet_sheet_view.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <openerp>
3     <data>
4
5         <record id="hr_timesheet_account_form" model="ir.ui.view">
6             <field name="name">hr.timesheet.account.form</field>
7             <field name="model">hr_timesheet_sheet.sheet.account</field>
8             <field name="arch" type="xml">
9                 <form string="Timesheet by Accounts" version="7.0">
10                     <group col="4">
11                         <field name="sheet_id"/>
12                         <field name="name" groups="analytic.group_analytic_accounting"/>
13                         <field name="total" sum="Total"/>
14                         <field name="invoice_rate"/>
15                     </group>
16                 </form>
17             </field>
18         </record>
19         <record id="hr_timesheet_account_filter" model="ir.ui.view">
20             <field name="name">hr.timesheet.account.filter</field>
21             <field name="model">hr_timesheet_sheet.sheet.account</field>
22             <field name="arch" type="xml">
23                 <search string="Search Account">
24                     <field name="name" groups="analytic.group_analytic_accounting"/>
25                     <field name="invoice_rate"/>
26                     <field name="sheet_id" />
27                 </search>
28             </field>
29         </record>
30         <record id="hr_timesheet_account_tree" model="ir.ui.view">
31             <field name="name">hr.timesheet.account.tree</field>
32             <field name="model">hr_timesheet_sheet.sheet.account</field>
33             <field name="arch" type="xml">
34                 <tree string="Timesheet by Accounts">
35                     <field name="sheet_id"/>
36                     <field name="name" groups="analytic.group_analytic_accounting"/>
37                     <field name="total" sum="Total"/>
38                     <field name="invoice_rate"/>
39                 </tree>
40             </field>
41         </record>
42
43         <record id="hr_timesheet_sheet_form" model="ir.ui.view">
44             <field name="name">hr.timesheet.sheet.form</field>
45             <field name="model">hr_timesheet_sheet.sheet</field>
46             <field name="arch" type="xml">
47                 <form string="Timesheet" version="7.0">
48                 <header>
49                     <button name="button_confirm" states="draft" string="Submit to Manager" type="object" class="oe_highlight"/>
50                     <button name="done" states="confirm" string="Approve" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
51                     <button name="action_set_to_draft" states="done" string="Set to Draft" type="object" />
52                     <button name="cancel" states="confirm" string="Refuse" type="workflow" groups="base.group_hr_user" />
53                     <field name="state" widget="statusbar" statusbar_visible="new,confirm,done"/>
54                 </header>
55                 <sheet>
56                     <label for="employee_id" class="oe_edit_only"/>
57                     <h1><field name="employee_id" on_change="onchange_employee_id(employee_id)"/></h1>
58                     <label for="date_from" class="oe_edit_only" string="Timesheet Period"/>
59                     <h2>From <field name="date_from"/> to <field name="date_to"/></h2>
60                     <group>
61                         <group>
62                             <field name="name"/>
63                             <field name="department_id"/>
64                             <field name="company_id" groups="base.group_multi_company"/>
65                         </group>
66                         <group>
67                             <field name="total_attendance" widget="float_time" groups="base.group_hr_attendance"/>
68                             <field name="total_timesheet" widget="float_time"/>
69                             <field name="total_difference" widget="float_time" groups="base.group_hr_attendance"/>
70                             <field name="user_id" invisible="1"/>
71                         </group>
72                     </group>
73                     <notebook>
74                         <page string="Weekly">
75                             <widget type="weekly_timesheet">
76                                 This is a test.
77                             </widget>
78                         </page>
79                         <page string="Daily">
80                             <group>
81                                 <div>
82                                     <button name="button_dummy" class="oe_inline" string="Go to" type="object" icon="terp-gtk-jump-to-ltr"/> :
83                                     <field name="date_current" class="oe_inline"/>
84                                 </div>
85                                 <div align="right">
86                                     <button class="oe_inline" icon="terp-gtk-go-back-ltr" name="date_previous" string="" type="object"/>
87                                     <button class="oe_inline" name="date_today" string="Today" type="object" icon="terp-go-today"/>
88                                     <button class="oe_inline" icon="terp-gtk-go-back-rtl" name="date_next" string="" type="object"/>
89                                 </div>
90                             </group>
91                             <group colspan="4" col="3">
92                                 <field context="{'name':date_current,'user_id':user_id}" name="attendances_ids" nolabel="1" groups="base.group_hr_attendance">
93                                     <tree string="Attendances" editable="bottom">
94                                         <field name="name"/>
95                                         <field name="action"/>
96                                         <field invisible="1" name="employee_id"/>
97                                     </tree>
98                                 </field>
99                                 <group>
100                                     <div align="right" groups="base.group_hr_manager,base.group_hr_attendance">
101                                         <button name="attendance_action_change" attrs="{'invisible': [('state_attendance', '=', 'present')]}" type="object" string="Sign In" groups="base.group_hr_attendance"/>
102                                         <button name="attendance_action_change" attrs="{'invisible': ['|', ('state_attendance','=',False), ('state_attendance', '=', 'absent')]}" type="object" string="Sign Out" groups="base.group_hr_attendance"/>
103                                     </div>
104                                 </group>
105                             </group>
106                             <group col="4">
107                                 <field name="state_attendance" groups="base.group_hr_attendance"/>
108                             </group>
109                             <field colspan="4" context="{'date':date_current,'user_id':user_id}" domain="[('name','=',date_current)]" name="timesheet_ids" nolabel="1">
110                                 <tree editable="top" string="Timesheet Lines">
111                                     <field invisible="1" name="date"/>
112                                     <field domain="[('type','in',['normal', 'contract']), ('state', '&lt;&gt;', 'close'),('use_timesheets','=',1)]" name="account_id" on_change="on_change_account_id(account_id)" context="{'default_use_timesheets': 1}"/>
113                                     <field name="name"/>
114                                     <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
115                                     <field name="to_invoice" widget="selection"/>
116                                     <field invisible="1" name="journal_id"/>
117                                     <field invisible="1" name="product_id" domain="[('type','=','service')]" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
118                                     <field invisible="1" name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
119                                     <field invisible="1" name="amount"/>
120                                     <field invisible="1" name="general_account_id"/>
121                                     <field invisible="1" name="user_id" required="1"/>
122                                 </tree>
123                                 <form string="Timesheet Lines" version="7.0">
124                                     <field name="date"/>
125                                     <field domain="[('type','=','normal'), ('state', '&lt;&gt;', 'close')]" name="account_id" on_change="on_change_account_id(account_id)"/>
126                                     <field name="name"/>
127                                     <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
128                                     <field name="to_invoice"/>
129                                     <field name="journal_id"/>
130                                     <field name="product_id" domain="[('type','=','service')]" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
131                                     <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
132                                     <field name="amount"/>
133                                     <field name="general_account_id"/>
134                                     <field name="user_id" required="1"/>
135                                 </form>
136                             </field>
137                         </page>
138                         <page string="Summary">
139                             <field colspan="4" name="period_ids" nolabel="1">
140                                 <tree colors="red:total_difference&lt;0.1;blue:total_difference&gt;=0.1" string="Period">
141                                     <field name="name"/>
142                                     <field name="total_attendance" widget="float_time" groups="base.group_hr_attendance"/>
143                                     <field name="total_timesheet" widget="float_time"/>
144                                     <field name="total_difference" widget="float_time" groups="base.group_hr_attendance"/>
145                                 </tree>
146                             </field>
147                         </page>
148                     </notebook>
149                 </sheet>
150                 <div class="oe_chatter">
151                     <field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
152                     <field name="message_follower_ids" widget="mail_followers"/>
153                 </div>
154                 </form>
155             </field>
156         </record>
157
158         <record id="view_hr_timesheet_sheet_filter" model="ir.ui.view">
159             <field name="name">hr_timesheet_sheet.sheet.filter</field>
160             <field name="model">hr_timesheet_sheet.sheet</field>
161             <field name="arch" type="xml">
162                 <search string="Search Timesheet">
163                     <field name="date_from"/>
164                     <filter icon="terp-document-new" string="In Draft" domain="[('state','in',('draft', 'new'))]" help="Unvalidated Timesheets"/>
165                     <filter icon="terp-camera_test" string="To Approve" domain="[('state','=','confirm')]" help="Confirmed Timesheets"/>
166                     <field name="employee_id"/>
167                     <field name="department_id"/>
168                     <group expand="0" string="Group By...">
169                         <filter string="Employees" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
170                         <filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
171                     </group>
172                 </search>
173             </field>
174         </record>
175
176         <record id="act_hr_timesheet_sheet_form" model="ir.actions.act_window">
177             <field name="name">Timesheets</field>
178             <field name="type">ir.actions.act_window</field>
179             <field name="res_model">hr_timesheet_sheet.sheet</field>
180             <field name="view_type">form</field>
181             <field name="view_id" eval="False"/>
182             <field name="context">{'search_default_my_timesheet':1}</field>
183             <field name="search_view_id" ref="view_hr_timesheet_sheet_filter"/>
184             <field name="help" type="html">
185               <p class="oe_view_nocontent_create">
186                 Click to go to your timesheet. 
187               </p><p>
188                 You must record timesheets every day and confirm at the end
189                 of the week. Once the timesheet is confirmed, it his sent to
190                 the manager for validation.
191               </p><p>
192                 Timesheets can also be invoiced to customers, depending on the
193                 configuration of the project.
194               </p>
195             </field>
196         </record>
197
198         <menuitem action="act_hr_timesheet_sheet_form" id="menu_act_hr_timesheet_sheet_form" parent="hr_attendance.menu_hr_time_tracking"
199              sequence="2" groups="base.group_hr_user"/>
200
201         <!--
202             Company inheritancy
203         -->
204
205         <record id="hr_timesheet_sheet_company" model="ir.ui.view">
206             <field name="name">res.company.sheet</field>
207             <field name="model">res.company</field>
208             <field name="inherit_id" ref="base.view_company_form"/>
209             <field name="arch" type="xml">
210                 <xpath expr="//group[@name='account_grp']" position="after">
211                     <group name="timesheets_grp" string="Timesheets">
212                         <field name="timesheet_range"/>
213                         <field name="timesheet_max_difference"/>
214                     </group>
215                 </xpath>
216             </field>
217         </record>
218
219         <!--
220             hr.analytic.timesheet inheritancy
221         -->
222
223         <record id="hr_timesheet_line_form" model="ir.ui.view">
224             <field name="name">hr.analytic.timesheet.form</field>
225             <field name="model">hr.analytic.timesheet</field>
226             <field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_form"/>
227             <field name="arch" type="xml">
228                 <field name="date" position="after">
229                     <field name="sheet_id" />
230                 </field>
231             </field>
232         </record>
233
234         <record id="hr_timesheet_line_search" model="ir.ui.view">
235             <field name="name">hr.analytic.timesheet.search</field>
236             <field name="model">hr.analytic.timesheet</field>
237             <field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_search"/>
238             <field name="arch" type="xml">
239                 <field name="date" position="before">
240                     <field name="sheet_id"/>
241                 </field>
242             </field>
243         </record>
244
245         <!--
246             hr.attendance inheritancy
247         -->
248
249         <record model="ir.ui.view" id="view_hr_attendance_filter">
250             <field name="name">view_hr_attendance_filter</field>
251             <field name="model">hr.attendance</field>
252             <field name="inherit_id" ref="hr_attendance.view_hr_attendance_filter" />
253             <field name="arch" type="xml">
254                 <field name="employee_id" position="after">
255                     <field name="sheet_id"/>
256                 </field>
257             </field>
258         </record>
259
260         <record id="view_attendance_form" model="ir.ui.view">
261             <field name="name">hr.attendance.form</field>
262             <field name="model">hr.attendance</field>
263             <field name="inherit_id" ref="hr_attendance.view_attendance_form"/>
264             <field name="arch" type="xml">
265                 <field name="action_desc" position="after">
266                     <field name="sheet_id"/>
267                 </field>
268             </field>
269         </record>
270         <record id="view_attendance_tree" model="ir.ui.view">
271             <field name="name">hr.attendance.tree</field>
272             <field name="model">hr.attendance</field>
273             <field name="inherit_id" ref="hr_attendance.view_attendance_tree"/>
274             <field name="arch" type="xml">
275                 <field name="action" position="after">
276                     <field name="sheet_id"/>
277                 </field>
278             </field>
279         </record>
280         <record id="view_attendance_tree_who" model="ir.ui.view">
281             <field name="name">hr.attendance.tree</field>
282             <field name="model">hr.attendance</field>
283             <field name="inherit_id" ref="hr_attendance.view_attendance_who"/>
284             <field name="arch" type="xml">
285                 <field name="action" position="after">
286                     <field name="sheet_id"/>
287                 </field>
288             </field>
289         </record>
290
291         <act_window
292         context="{'search_default_sheet_id': [active_id]}"
293         id="act_hr_timesheet_sheet_sheet_by_account"
294         name="Timesheet by Account"
295         res_model="hr_timesheet_sheet.sheet.account"
296         src_model="hr_timesheet_sheet.sheet"/>
297
298         <act_window
299         context="{'search_default_sheet_id': [active_id]}"
300         id="act_hr_timesheet_sheet_sheet_by_day"
301         name="Timesheet by Day"
302         res_model="hr_timesheet_sheet.sheet.day"
303         src_model="hr_timesheet_sheet.sheet"/>
304
305         <act_window
306         context="{'search_default_sheet_id': [active_id]}"
307         id="act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet"
308         name="Timesheet Lines"
309         res_model="hr.analytic.timesheet"
310         src_model="hr_timesheet_sheet.sheet"/>
311
312
313         <act_window
314         context="{'search_default_sheet_id': [active_id]}"
315         id="act_hr_timesheet_sheet_sheet_2_hr_attendance"
316         name="Attendances"
317         res_model="hr.attendance"
318         src_model="hr_timesheet_sheet.sheet"/>
319
320         <record id="hr_timesheet_sheet_tree_simplified" model="ir.ui.view">
321             <field name="name">hr.timesheet.sheet.tree</field>
322             <field name="model">hr_timesheet_sheet.sheet</field>
323             <field eval="10" name="priority"/>
324             <field name="arch" type="xml">
325                 <tree colors="blue:state == 'draft';black:state in ('confirm','new');gray:state == 'done'" string="Timesheets">
326                     <field name="employee_id"/>
327                     <field name="date_from"/>
328                     <field name="date_to"/>
329                     <field name="department_id"/>
330                     <field name="total_attendance" widget="float_time" groups="base.group_hr_attendance"/>
331                     <field name="total_timesheet" widget="float_time"/>
332                     <field name="total_difference" widget="float_time" groups="base.group_hr_attendance"/>
333                     <field name="state"/>
334                 </tree>
335             </field>
336         </record>
337
338         <record id="hr_timesheet_day_tree" model="ir.ui.view">
339             <field name="name">hr.timesheet.day.tree</field>
340             <field name="model">hr_timesheet_sheet.sheet.day</field>
341             <field name="arch" type="xml">
342                 <tree colors="blue:total_difference&lt;0.1;red:total_difference&gt;=0.1" string="Period">
343                     <field name="name"/>
344                     <field name="total_attendance" widget="float_time" sum="Total Attendances" groups="base.group_hr_attendance"/>
345                     <field name="total_timesheet" widget="float_time" sum="Total Timesheet"/>
346                     <field name="total_difference" widget="float_time" sum="Total Difference" groups="base.group_hr_attendance"/>
347                 </tree>
348             </field>
349         </record>
350
351   <!-- Timesheet Button on Employee Form -->
352            
353     <record id="act_hr_employee_2_hr_timesheet" model="ir.actions.act_window">
354         <field name="res_model">hr_timesheet_sheet.sheet</field>
355         <field name="view_type">form</field>
356         <field name="name">Timesheets</field>
357         <field name="view_mode">tree,form</field>
358         <field name="context">{'search_default_employee_id': [active_id], 'default_employee_id': active_id}</field>
359     </record>
360          
361       <record id="hr_timesheet_sheet_employee_extd_form" model="ir.ui.view">
362             <field name="name">hr.timesheet.sheet.employee.extd_form</field>
363             <field name="model">hr.employee</field>
364             <field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>
365             <field name="arch" type="xml">
366                 <xpath expr="//div[@name='button_box']" position="inside">
367                     <button name="%(act_hr_employee_2_hr_timesheet)d" string="Timesheets" type="action" groups="base.group_hr_manager"/>
368                 </xpath>
369             </field>
370         </record>
371
372     </data>
373 </openerp>