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