[MERGE] merge from trunk payroll
[odoo/odoo.git] / addons / hr_payroll / hr_payroll_view.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <openerp>
3     <data>
4         <!-- Root Menus -->
5         <menuitem id="menu_hr_root_payroll" parent="hr.menu_hr_root" name="Payroll" sequence="9"/>
6         <menuitem id="payroll_configure" parent="hr.menu_hr_configuration" name="Payroll"/>
7         <menuitem id="menu_hr_payroll_reporting" parent="hr.menu_hr_reporting" name="Payroll" groups="base.group_hr_manager"/>
8
9         <!-- Employee View -->
10         <record id="hr_contract.hr_hr_employee_view_form2" model="ir.ui.view">
11             <field name="name">hr.hr.employee.view.form2</field>
12             <field name="model">hr.employee</field>
13             <field name="inherit_id" ref="hr.view_employee_form"/>
14             <field name="arch" type="xml">
15             <data>
16                 <xpath expr="/form/notebook/page[@string='Personal Information']" position="after">
17                     <page string="Miscellaneous" groups="base.group_hr_user">
18                         <group colspan="2" col="2">
19                             <separator string="Personal Info" colspan="2"/>
20                             <field name="bank_account_id" context="{'display_partner':True, 'partner_id':partner_id}"/>
21                             <field name="place_of_birth"/>
22                             <field name="children"/>
23                             <!-- <field name="basic" invisible="0"/> -->
24                         </group>
25                         <group colspan="2" col="2">
26                             <separator string="Job Info" colspan="2"/>
27                             <field name="manager" select="1"/>
28                             <field name="vehicle" select="1"/>
29                             <field name="vehicle_distance" select="1"/>
30                             <field name="medic_exam" select="1" string="Medical Examination"/>
31                         </group>
32                     </page>
33                 </xpath>
34             </data>
35             </field>
36         </record>
37         <!-- End Employee View -->
38
39         <!-- Contract View -->
40         <record id="hr_contract_form_inherit" model="ir.ui.view">
41             <field name="name">hr.contract.view.form.inherit</field>
42             <field name="model">hr.contract</field>
43             <field name="type">form</field>
44             <field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
45             <field name="arch" type="xml">
46             <data>
47                 <xpath expr="/form/notebook/page/group/field[@name='advantages']" position="before">
48                     <field name="struct_id" select="1"/>
49                 </xpath>
50                  <xpath expr="/form/notebook/page/group/field[@name='working_hours']" position="after">
51                     <field name="schedule_pay"/>
52                 </xpath>
53             </data>
54             </field>
55         </record>
56
57         <!-- End Contract View-->
58
59         <!-- Salary structure -->
60         <record id="view_hr_employee_grade_tree" model="ir.ui.view">
61             <field name="name">hr.payroll.structure.tree</field>
62             <field name="model">hr.payroll.structure</field>
63             <field name="type">tree</field>
64             <field name="arch" type="xml">
65                 <tree string="Employee Function">
66                     <field name="name"/>
67                     <field name="code"/>
68                     <field name="rule_ids"/>
69                     <field name="company_id" groups="base.group_multi_company" widget="selection"/>
70                 </tree>
71             </field>
72         </record>
73
74         <record id="view_hr_employee_grade_form" model="ir.ui.view">
75             <field name="name">hr.payroll.structure.form</field>
76             <field name="model">hr.payroll.structure</field>
77             <field name="type">form</field>
78             <field name="arch" type="xml">
79                 <form string="Employee Function">
80                     <group col="6" colspan="6">
81                         <field name="name" select="1"/>
82                         <field name="code" select="1"/>
83                         <field name="company_id" groups="base.group_multi_company" widget="selection"/>
84                         <field name="parent_id"/>
85                     </group>
86                     <notebook colspan="4">
87                          <page string="Salary Rules">
88                            <field colspan="4" name="rule_ids" nolabel="1" domain="[('parent_rule_id','=',False)]">
89                              <tree>
90                                 <field name="name"/>
91                                 <field name="code"/>
92                                 <field name="category_id"/>
93                                 <field name="sequence" groups="base.group_extended" invisible="1"/>
94                                 <field name="register_id"/>
95                              </tree>
96                           </field>
97                          </page>
98                     </notebook>
99                 </form>
100             </field>
101         </record>
102
103         <record id="action_view_hr_employee_grade_form" model="ir.actions.act_window">
104             <field name="name">Salary Structures</field>
105             <field name="res_model">hr.payroll.structure</field>
106             <field name="view_type">form</field>
107             <field name="view_id" ref="view_hr_employee_grade_tree"/>
108         </record>
109         <menuitem
110             id="menu_hr_employee_function"
111             action="action_view_hr_employee_grade_form"
112             parent="payroll_configure"
113             sequence="13"
114         />
115         <!-- End Salary structure -->
116
117         <!-- Payslip Line -->
118         <record id="view_hr_payslip_line_tree" model="ir.ui.view">
119             <field name="name">hr.payslip.line.tree</field>
120             <field name="model">hr.payslip.line</field>
121             <field name="type">tree</field>
122             <field name="arch" type="xml">
123                 <tree string="Salary Structure" editable="bottom">
124                     <field name="category_id"/>
125                     <field name="sequence" groups="base.group_extended"/>
126                     <field name="name"/>
127                     <field name="code"/>
128                     <field name="amount_select"/>
129                     <field name="amount_fix"/>
130                     <field name="amount_percentage"/>
131                 </tree>
132             </field>
133         </record>
134         <record id="view_hr_payslip_line_form" model="ir.ui.view">
135             <field name="name">hr.payslip.line.form</field>
136             <field name="model">hr.payslip.line</field>
137             <field name="type">form</field>
138             <field name="arch" type="xml">
139                 <form string="Payslip Line">
140                     <group col="6" colspan="4">
141                         <field name="name" colspan="4" select="1"/>
142                         <field name="code" select="1"/>
143                         <field name="slip_id" select="1"/>
144                         <field name="employee_id"/>
145                     </group>
146                     <group col="2" colspan="2">
147                         <separator colspan="4" string="Calculations"/>
148                         <field name="category_id"/>
149                         <field name="amount_select"/>
150                         <field name="amount_fix"  attrs="{'readonly':[('amount_select','&lt;&gt;','fix')]}"/>
151                         <field name="amount_percentage"  attrs="{'readonly':[('amount_select','&lt;&gt;','percentage')]}"/>
152                         <field name="sequence" groups="base.group_extended"/>
153                     </group>
154                     <group col="2" colspan="2">
155                         <separator colspan="4" string="Company contribution"/>
156                         <field name="company_contrib"/>
157                     </group>
158                     <notebook colspan="4">
159                         <page string="Description">
160                             <separator colspan="4" string="Description"/>
161                             <field name="note" colspan="4" nolabel="1"/>
162                         </page>
163                     </notebook>
164                 </form>
165             </field>
166         </record>
167
168         <record id="view_hr_payslip_tree" model="ir.ui.view">
169             <field name="name">hr.payslip.tree</field>
170             <field name="model">hr.payslip</field>
171             <field name="type">tree</field>
172             <field name="arch" type="xml">
173                 <tree colors="blue:state in ('confirm','hr_check','accont_check');black:state in ('new');gray:state in('cancel')" string="Payslip">
174                     <field name="number"/>
175                     <field name="employee_id"/>
176                     <field name="name"/>
177                     <field name="date_from"/>
178                     <field name="date_to"/>
179                     <field name="state"/>
180                     <field name="company_id" groups="base.group_multi_company" widget="selection"/>
181                 </tree>
182             </field>
183         </record>
184
185         <record id="view_hr_payslip_form" model="ir.ui.view">
186             <field name="name">hr.payslip.form</field>
187             <field name="model">hr.payslip</field>
188             <field name="type">form</field>
189             <field name="arch" type="xml">
190                 <form string="Payslip">
191                     <group col="6" colspan="4">
192                         <field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/>
193                         <field name="number"/>
194                         <field name="date_from"/>
195                         <field name="contract_id" groups="base.group_extended" domain="[('employee_id','=',employee_id)]" on_change="onchange_contract_id(date_from, date_to, employee_id, contract_id)"/>
196                         <field name="struct_id" groups="base.group_extended" attrs="{'required':[('contract_id','&lt;&gt;',False)]}"/>
197                         <field name="date_to"/>
198                         <field name="name" colspan="4"/>
199                     </group>
200                     <notebook colspan="4">
201                         <page string="Salary Computation" >
202                             <field name="line_ids" colspan="4" nolabel="1" domain="[('appears_on_payslip','&lt;&gt;',False)]">
203                                 <tree string="Salary Structure" editable="bottom">
204                                     <field name="name"/>
205                                     <field name="code"/>
206                                     <field name="category_id"/>
207                                     <field name="sequence" invisible="1"/>
208                                     <field name="total"/>
209                                 </tree>
210                                 <form string="Payslip Line">
211                                     <group col="6" colspan="4">
212                                         <field name="name" colspan="4" select="1"/>
213                                         <field name="code" select="1"/>
214                                         <field name="appears_on_payslip"/>
215                                         <field name="salary_rule_id"/>
216                                     </group>
217                                     <group col="2" colspan="2">
218                                         <separator colspan="4" string="Calculations"/>
219                                         <field name="category_id"/>
220                                         <field name="amount_select"/>
221                                         <field name="amount_fix" attrs="{'readonly':[('amount_select','&lt;&gt;','fix')]}"/>
222                                         <field name="amount_percentage" attrs="{'readonly':[('amount_select','=','percentage')]}"/>
223                                         <field name="sequence" groups="base.group_extended"/>
224                                     </group>
225                                     <group col="2" colspan="2">
226                                         <separator colspan="4" string="Company contribution"/>
227                                         <field name="company_contrib"/>
228                                     </group>
229                                     <notebook colspan="4">
230                                         <page string="Description">
231                                             <separator colspan="4" string="Description"/>
232                                             <field name="note" colspan="4" nolabel="1"/>
233                                         </page>
234                                     </notebook>
235                                 </form>
236                             </field>
237                         </page>
238 <!-- TODO: put me back -->
239                             <page string="Details By Salary Head">
240                             <field name="details_by_salary_head" context="{'group_by':'category_id'}" nolabel="1">
241                                 <tree string="Payslip Lines">
242                                     <field name="category_id"/>
243                                     <field name="sequence" groups="base.group_extended"/>
244                                     <field name="name"/>
245                                     <field name="code"/>
246                                     <field name="total"/>
247                                 </tree>
248                             </field>
249                        </page>
250
251                        <page string="Worked Days">
252                             <field name="input_line_ids" colspan="4" nolabel="1" mode="tree">
253                                 <tree editable="bottom">
254                                     <field name="name"/>
255                                     <field name="code"/>
256                                     <field name="number_of_days" sum="Total Working Days"/>
257                                     <field name="number_of_hours"/>
258                                     <field name="contract_id" groups="base.group_extended"/>
259                                     <field name="sequence" invisible="True"/>
260                                 </tree>
261                             </field>
262                        </page>
263
264                        <page string="Other Information">
265                             <separator colspan="4" string="Other Information"/>
266                             <group col="5" colspan="2">
267                                 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
268                                 <field name="paid" readonly="1"/>
269                             </group>
270                             <newline/>
271                             <separator colspan="4" string="Notes"/>
272                             <field name="note" colspan="4" nolabel="1"/>
273                        </page>
274
275                     </notebook>
276                     <field name='credit_note' />
277                     <group col="10" colspan="4">
278                         <field name="state"/>
279                         <button string="Cancel" icon="terp-dialog-close" name="cancel_sheet" states="draft,hr_check,confirm"/>
280                         <button string="Compute Sheet" icon="terp-stock_format-scientific" name="compute_sheet" type="object" states="draft"/>
281                         <button string="Verify Sheet" icon="terp-camera_test" name="verify_sheet" states="draft"/>
282                         <button string="Approve Sheet" icon="terp-camera_test" name="final_verify_sheet" states="hr_check"/>
283                         <button string="Pay Salary" icon="terp-dolar_ok!" name="process_sheet" states="confirm"/>
284                         <button string="Set to Draft" icon="terp-stock_effects-object-colorize" name="draft" states="cancel"/>
285                         <button string="Refund" icon="gtk-execute" name="refund_sheet" states="done" type='object'/>
286                     </group>
287                 </form>
288             </field>
289         </record>
290         <record id="view_hr_payslip_filter" model="ir.ui.view">
291             <field name="name">hr.payslip.select</field>
292             <field name="model">hr.payslip</field>
293             <field name="type">search</field>
294             <field name="arch" type="xml">
295                 <search string="Search Payslips">
296                     <group col="8" colspan="4">
297                         <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Slip"/>
298                         <filter icon="terp-camera_test" string="Posted" domain="[('state','=','posted')]" help="Posted Slip"/>
299                         <separator orientation="vertical"/>
300                         <filter icon="terp-dolar_ok!" string="Paid" domain="[('state','=','done'),('paid','=',True)]" help="Paid Slip"/>
301                         <separator orientation="vertical"/>
302                         <field name="name"/>
303                         <field name="employee_id"/>
304                         <field name="number"/>
305                         <field name="date_from"/>
306                     </group>
307                     <newline/>
308                     <group col="8" colspan="4" expand="0" string="Group By...">
309                         <filter string="Employees" icon="terp-personal" name="employee_id" context="{'group_by':'employee_id'}"/>
310                         <separator orientation="vertical"/>
311                         <filter string="Companies" name="company_id"  icon="terp-go-home" context="{'group_by':'company_id'}"/>
312                         <separator orientation="vertical"/>
313                         <filter string="States" name="state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
314                     </group>
315                 </search>
316             </field>
317         </record>
318         <record id="action_view_hr_payslip_form" model="ir.actions.act_window">
319             <field name="name">Employee Payslips</field>
320             <field name="res_model">hr.payslip</field>
321             <field name="view_type">form</field>
322             <field name="view_id" ref="view_hr_payslip_tree"/>
323             <field name="search_view_id" ref="view_hr_payslip_filter"/>
324         </record>
325         <menuitem action="action_view_hr_payslip_form" id="menu_department_tree" parent="menu_hr_root_payroll"/>
326
327         <!-- Payment Heads -->
328         <record id="hr_salary_head_form" model="ir.ui.view">
329             <field name="name">hr.salary.head.form</field>
330             <field name="model">hr.salary.head</field>
331             <field name="type">form</field>
332             <field name="arch" type="xml">
333                 <form string="Salary Heads">
334                     <group col="3" colspan="6">
335                         <field name="name" select="1"/>
336                         <field name="code" select="1"/>
337                         <field name="parent_id" select="1"/>
338                         <field name="sequence" select="1"/>
339                     </group>
340                     <separator colspan="4" string="Description"/>
341                         <field name="note" colspan="4" nolabel="1"/>
342                 </form>
343             </field>
344         </record>
345         <record id="hr_salary_head_tree" model="ir.ui.view">
346             <field name="name">hr.salary.head.tree</field>
347             <field name="model">hr.salary.head</field>
348             <field name="type">tree</field>
349             <field name="arch" type="xml">
350                 <tree string="Salary Heads">
351                     <field name="name"/>
352                     <field name="sequence"/>
353                     <field name="code"/>
354                     <field name="parent_id"/>
355                 </tree>
356             </field>
357         </record>
358
359         <record id="view_hr_salary_head_filter" model="ir.ui.view">
360             <field name="name">hr.salary.head.select</field>
361             <field name="model">hr.salary.head</field>
362             <field name="type">search</field>
363             <field name="arch" type="xml">
364                 <search string="Salary Heads">
365                     <filter icon="terp-document-new" string="Allowance" domain="[('type','=','allowance')]"/>
366                     <filter icon="terp-check" string="Deduction" domain="[('type','=','deduction')]"/>
367                     <separator orientation="vertical"/>
368                     <field name="name" select="1"/>
369                      <field name="code" select="1"/>
370                     <newline/>
371                     <group expand="0" string="Group By..." colspan="4" col="4" groups="base.group_extended">
372                         <filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
373                     </group>
374                </search>
375             </field>
376         </record>
377
378         <record id="action_hr_salary_head" model="ir.actions.act_window">
379             <field name="name">Salary Heads</field>
380             <field name="res_model">hr.salary.head</field>
381             <field name="view_type">form</field>
382             <field name="view_id" ref="hr_salary_head_tree"/>
383            <field name="search_view_id" ref="view_hr_salary_head_filter"/>
384         </record>
385         <menuitem
386             id="menu_hr_salary_head"
387             action="action_hr_salary_head"
388             parent="payroll_configure"
389             sequence="11"
390         />
391         <!-- End Payment Heads -->
392
393         <!--
394         Contribution Register
395         -->
396         <record id="hr_contibution_register_tree" model="ir.ui.view">
397             <field name="name">hr.contibution.register.tree</field>
398             <field name="model">hr.contibution.register</field>
399             <field name="type">tree</field>
400             <field name="arch" type="xml">
401                 <tree string="Contribution Registers">
402                     <field name="name" select="1"/>
403                     <field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
404                 </tree>
405             </field>
406         </record>
407         <record id="hr_contibution_register_form" model="ir.ui.view">
408             <field name="name">hr.contibution.register.form</field>
409             <field name="model">hr.contibution.register</field>
410             <field name="type">form</field>
411             <field name="arch" type="xml">
412                 <form string="Contribution">
413                     <field name="name" select="1"/>
414                     <field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
415                     <notebook colspan="4">
416                          <page string="Description">
417                             <separator colspan="4" string="Description"/>
418                             <field name="note" colspan="4" nolabel="1"/>
419                         </page>
420                     </notebook>
421                 </form>
422             </field>
423         </record>
424         <record id="action_contibution_register_form" model="ir.actions.act_window">
425             <field name="name">Contribution Registers</field>
426             <field name="res_model">hr.contibution.register</field>
427             <field name="view_type">form</field>
428             <field name="view_id" ref="hr_contibution_register_tree"/>
429         </record>
430         <menuitem
431             id="menu_action_hr_contibution_register_form"
432             action="action_contibution_register_form"
433             parent="payroll_configure"
434             sequence="14"
435         />
436         <!-- <record id="hr_contibution_register_line_form" model="ir.ui.view">
437             <field name="name">hr.contibution.register.line.form</field>
438             <field name="model">hr.contibution.register.line</field>
439             <field name="type">form</field>
440             <field name="arch" type="xml">
441                 <form string="Contribution">
442                       <field name="name"/>
443                       <field name="code"/>
444                       <field name="employee_id"/>
445                       <field name="emp_deduction"/>
446                       <field name="comp_deduction"/>
447                       <field name="total"/>
448                 </form>
449             </field>
450         </record> -->
451
452
453
454         <!--  Shortcuts -->
455         <act_window name="Payslips"
456             domain="[('employee_id', '=', active_id)]"
457             context="{'search_default_employee_id': [active_id], 'default_employee_id': active_id}"
458             res_model="hr.payslip"
459             src_model="hr.employee"
460             view_id ="view_hr_payslip_tree"
461             id="act_hr_employee_payslip_list"
462             groups="base.group_hr_manager"/>
463
464     <!-- Salary Rules -->
465
466     <record id="hr_salary_rule_tree" model="ir.ui.view">
467             <field name="name">hr.salary.rule.tree</field>
468             <field name="model">hr.salary.rule</field>
469             <field name="type">tree</field>
470             <field name="arch" type="xml">
471                 <tree string="Salary Rules">
472                     <field name="name"/>
473                     <field name="code"/>
474                     <field name="category_id"/>
475                     <field name="sequence" groups="base.group_extended" invisible="1"/>
476                     <field name="register_id"/>
477                 </tree>
478             </field>
479         </record>
480     <record id="hr_salary_rule_form" model="ir.ui.view">
481         <field name="name">hr.salary.rule.form</field>
482         <field name="model">hr.salary.rule</field>
483         <field name="type">form</field>
484         <field name="arch" type="xml">
485             <form string="Salary Rules">
486                 <group col="6" colspan="6">
487                    <field name="name"/>
488                    <field name="code" select="1"/>
489                    <field name="category_id"/>
490                    <field name="sequence" />
491                    <field name="active"/>
492                    <field name="appears_on_payslip" attrs="{'readonly':[('company_contribution','=', True)]}" />
493                    <field name="company_id" widget="selection" groups="base.group_multi_company"/>
494                 </group>
495                 <notebook colspan="6">
496                     <page string="General">
497                             <group col="4" colspan="6">
498                                 <separator colspan="4" string="Conditions"/>
499                                 <field name="condition_select"/><newline/>
500                                 <field name="condition_python" attrs="{'invisible':[('condition_select','&lt;&gt;','python')], 'required': [('condition_select','=','python')]}" colspan="4"/> <newline/>
501                                 <field name="condition_range" attrs="{'invisible':[('condition_select','&lt;&gt;','range')], 'required':[('condition_select','=','range')]}"/><newline/>
502                                 <field name="condition_range_min" colspan="2" attrs="{'invisible':[('condition_select','&lt;&gt;','range')], 'required':[('condition_select','=','range')]}"/>
503                                 <field name="condition_range_max" colspan="2" attrs="{'invisible':[('condition_select','&lt;&gt;','range')], 'required':[('condition_select','=','range')]}"/>
504                                 <separator colspan="4" string="Computation"/>
505                                 <field name="amount_select"/><newline/>
506                                 <field name="amount_fix"  attrs="{'invisible':[('amount_select','&lt;&gt;','fix')], 'required':[('amount_select','=','fix')]}"/>
507                                 <field colspan="4" name="amount_python_compute" attrs="{'invisible':[('amount_select','&lt;&gt;','code')], 'required':[('amount_select','=','code')]}"/>
508                                 <field name="amount_percentage_base" attrs="{'invisible':[('amount_select','&lt;&gt;','percentage')], 'required': [('amount_select','=','percentage')]}"/>
509                                 <field name="amount_percentage" attrs="{'invisible':[('amount_select','&lt;&gt;','percentage')], 'required':[('amount_select','=','percentage')]}"/>
510                                 <separator colspan="4" string="Company contribution"/>
511                                 <field name="register_id"/>
512                             </group>
513                     </page>
514                     <page string="Child Rules">
515                        <field name="parent_rule_id"/>
516                        <separator colspan="4" string="Children definition"/>
517                        <field colspan="4" name="child_ids" nolabel="1"/>
518                     </page>
519                     <page string="Description">
520                         <field name="note" colspan="4" nolabel="1"/>
521                     </page>
522                 </notebook>
523             </form>
524         </field>
525     </record>
526
527     <record id="view_hr_rule_filter" model="ir.ui.view">
528     <field name="name">hr.salary.rule.select</field>
529     <field name="model">hr.salary.rule</field>
530     <field name="type">search</field>
531     <field name="arch" type="xml">
532         <search string="Search Salary Rule">
533         <group col="8" colspan="4">
534             <field name="name"/>
535             <field name="condition_range_min"/>
536         </group>
537         <newline/>
538
539         <group col="8" colspan="4" expand="0" string="Group By...">
540             <filter string="Name" icon="terp-folder-yellow" name="name" context="{'group_by':'name'}"/>
541         </group>
542         </search>
543     </field>
544     </record>
545
546     <record id="action_salary_rule_form" model="ir.actions.act_window">
547         <field name="name">Salary Rules</field>
548         <field name="res_model">hr.salary.rule</field>
549         <field name="view_type">form</field>
550         <field name="view_id" ref="hr_salary_rule_tree"/>
551         <field name="domain">[('parent_rule_id','=',False)]</field>
552         <field name="search_view_id" ref="view_hr_rule_filter"/>
553     </record>
554
555     <menuitem id="menu_action_hr_salary_rule_form" action="action_salary_rule_form" parent="payroll_configure" sequence="12"/>
556
557     </data>
558 </openerp>
559