1 <?xml version="1.0" encoding="utf-8"?>
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"/>
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">
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"/> -->
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"/>
37 <!-- End Employee View -->
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">
47 <xpath expr="/form/notebook/page/group/field[@name='advantages']" position="before">
48 <field name="struct_id" select="1"/>
50 <xpath expr="/form/notebook/page/group/field[@name='working_hours']" position="after">
51 <field name="schedule_pay"/>
57 <!-- End Contract View-->
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">
68 <field name="rule_ids"/>
69 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
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"/>
86 <notebook colspan="4">
87 <page string="Salary Rules">
88 <field colspan="4" name="rule_ids" nolabel="1" domain="[('parent_rule_id','=',False)]">
92 <field name="category_id"/>
93 <field name="sequence" groups="base.group_extended" invisible="1"/>
94 <field name="register_id"/>
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"/>
110 id="menu_hr_employee_function"
111 action="action_view_hr_employee_grade_form"
112 parent="payroll_configure"
115 <!-- End Salary structure -->
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"/>
128 <field name="amount_select"/>
129 <field name="amount_fix"/>
130 <field name="amount_percentage"/>
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"/>
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','<>','fix')]}"/>
151 <field name="amount_percentage" attrs="{'readonly':[('amount_select','<>','percentage')]}"/>
152 <field name="sequence" groups="base.group_extended"/>
154 <group col="2" colspan="2">
155 <separator colspan="4" string="Company contribution"/>
156 <field name="company_contrib"/>
158 <notebook colspan="4">
159 <page string="Description">
160 <separator colspan="4" string="Description"/>
161 <field name="note" colspan="4" nolabel="1"/>
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"/>
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"/>
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','<>',False)]}"/>
197 <field name="date_to"/>
198 <field name="name" colspan="4"/>
200 <notebook colspan="4">
201 <page string="Salary Computation" >
202 <field name="line_ids" colspan="4" nolabel="1" domain="[('appears_on_payslip','<>',False)]">
203 <tree string="Salary Structure" editable="bottom">
206 <field name="category_id"/>
207 <field name="sequence" invisible="1"/>
208 <field name="total"/>
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"/>
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','<>','fix')]}"/>
222 <field name="amount_percentage" attrs="{'readonly':[('amount_select','=','percentage')]}"/>
223 <field name="sequence" groups="base.group_extended"/>
225 <group col="2" colspan="2">
226 <separator colspan="4" string="Company contribution"/>
227 <field name="company_contrib"/>
229 <notebook colspan="4">
230 <page string="Description">
231 <separator colspan="4" string="Description"/>
232 <field name="note" colspan="4" nolabel="1"/>
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"/>
246 <field name="total"/>
251 <page string="Worked Days">
252 <field name="input_line_ids" colspan="4" nolabel="1" mode="tree">
253 <tree editable="bottom">
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"/>
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"/>
271 <separator colspan="4" string="Notes"/>
272 <field name="note" colspan="4" nolabel="1"/>
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'/>
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"/>
303 <field name="employee_id"/>
304 <field name="number"/>
305 <field name="date_from"/>
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'}"/>
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"/>
325 <menuitem action="action_view_hr_payslip_form" id="menu_department_tree" parent="menu_hr_root_payroll"/>
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"/>
340 <separator colspan="4" string="Description"/>
341 <field name="note" colspan="4" nolabel="1"/>
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">
352 <field name="sequence"/>
354 <field name="parent_id"/>
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"/>
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'}"/>
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"/>
386 id="menu_hr_salary_head"
387 action="action_hr_salary_head"
388 parent="payroll_configure"
391 <!-- End Payment Heads -->
394 Contribution Register
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"/>
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"/>
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"/>
431 id="menu_action_hr_contibution_register_form"
432 action="action_contibution_register_form"
433 parent="payroll_configure"
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">
444 <field name="employee_id"/>
445 <field name="emp_deduction"/>
446 <field name="comp_deduction"/>
447 <field name="total"/>
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"/>
464 <!-- Salary Rules -->
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">
474 <field name="category_id"/>
475 <field name="sequence" groups="base.group_extended" invisible="1"/>
476 <field name="register_id"/>
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">
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"/>
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','<>','python')], 'required': [('condition_select','=','python')]}" colspan="4"/> <newline/>
501 <field name="condition_range" attrs="{'invisible':[('condition_select','<>','range')], 'required':[('condition_select','=','range')]}"/><newline/>
502 <field name="condition_range_min" colspan="2" attrs="{'invisible':[('condition_select','<>','range')], 'required':[('condition_select','=','range')]}"/>
503 <field name="condition_range_max" colspan="2" attrs="{'invisible':[('condition_select','<>','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','<>','fix')], 'required':[('amount_select','=','fix')]}"/>
507 <field colspan="4" name="amount_python_compute" attrs="{'invisible':[('amount_select','<>','code')], 'required':[('amount_select','=','code')]}"/>
508 <field name="amount_percentage_base" attrs="{'invisible':[('amount_select','<>','percentage')], 'required': [('amount_select','=','percentage')]}"/>
509 <field name="amount_percentage" attrs="{'invisible':[('amount_select','<>','percentage')], 'required':[('amount_select','=','percentage')]}"/>
510 <separator colspan="4" string="Company contribution"/>
511 <field name="register_id"/>
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"/>
519 <page string="Description">
520 <field name="note" colspan="4" nolabel="1"/>
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">
535 <field name="condition_range_min"/>
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'}"/>
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"/>
555 <menuitem id="menu_action_hr_salary_rule_form" action="action_salary_rule_form" parent="payroll_configure" sequence="12"/>