Payroll

hr_payroll
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/hr_payroll
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Christophe Simonis, Joren Van Onder, qdp-odoo, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Christophe Monniez, Jorge Pinna Puissant, Xavier-Do, Andrea Grazioso (agr-odoo), alt-odoo, Kinjal Mehta, Touati Djamel (otd)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - hr_holidays
    - calendar
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (38)
XML IDNameModelTypeStatus
hr_contract_advantage_template_view_form hr.contract.advantage.template.form hr.contract.advantage.template form New
hr_contract_advantage_template_view_tree hr.contract.advantage.template.tree hr.contract.advantage.template tree New
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract xpath Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_contribution_register_view_kanban hr.contribution.register.kanban hr.contribution.register kanban New
hr_payroll_structure_view_kanban hr.payroll.structure.kanban hr.payroll.structure kanban New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_payslip_run_view_kanban hr.payslip.run.kanban hr.payslip.run kanban New
hr_payslip_view_kanban hr.payslip.kanban hr.payslip kanban New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
hr_salary_rule_view_kanban hr.salary.rule.kanban hr.salary.rule kanban New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee button Inherits hr.view_employee_form
report_contributionregister report_contributionregister ir.ui.view qweb New
report_payslip report_payslip ir.ui.view qweb New
report_payslipdetails report_payslipdetails ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.hr.payroll res.config.settings xpath Inherits base.res_config_settings_view_form
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (18)

New fields (3)
  • resource_calendar_id Many2one
    help="Employee's working schedule." required=True
  • schedule_pay Selection
    default='monthly' help='Defines the frequency of the wage payment.' index=True string='Scheduled Pay' args: [('monthly', 'Monthly'), ('quarterly', 'Quarterly'), ('semi-annually', 'Semi-annually'), ('annually', 'Annually'), ('weekly', 'Weekly'), ('bi-weekly', 'Bi-weekly'), ('bi-monthly', 'Bi-monthly')]
  • struct_id Many2one → hr.payroll.structure
    string='Salary Structure' args: 'hr.payroll.structure'
Public methods (3)
  • get_all_structures(self)
    @api.multi
    @return: the structures linked to the given contracts, ordered by hierachy (parent=False first, then first level children and so on) and without duplicata
  • get_attribute(self, code, attribute)
    @api.multi
  • set_attribute_value(self, code, active)
    @api.multi

New fields (5)
  • code Char
    required=True args: 'Code'
  • default_value Float
    args: 'Default value for this advantage'
  • lower_bound Float
    help='Lower bound authorized by the employer for this advantage' args: 'Lower Bound'
  • name Char
    required=True args: 'Name'
  • upper_bound Float
    help='Upper bound authorized by the employer for this advantage' args: 'Upper Bound'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • partner_id Many2one → res.partner
    string='Partner' args: 'res.partner'
  • register_line_ids One2many → hr.payslip.line
    readonly=True string='Register Line' args: 'hr.payslip.line', 'register_id'
Public methods (0)

No public methods.

New fields (2)
  • payslip_count Integer
    compute='_compute_payslip_count' groups='hr_payroll.group_hr_payroll_user' string='Payslip Count'
  • slip_ids One2many → hr.payslip
    readonly=True string='Payslips' args: 'hr.payslip', 'employee_id'
Public methods (0)

No public methods.

New fields (7)
  • children_ids One2many → hr.payroll.structure
    copy=True string='Children' args: 'hr.payroll.structure', 'parent_id'
  • code Char
    required=True string='Reference'
  • company_id Many2one → res.company
    copy=False default=<expr> required=True string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.payroll.structure
    default=_get_parent string='Parent' args: 'hr.payroll.structure'
  • rule_ids Many2many → hr.salary.rule
    string='Salary Rules' args: 'hr.salary.rule', 'hr_structure_salary_rule_rel', 'struct_id', 'rule_id'
Public methods (2)
  • copy(self, default=None)
    @api.multi@api.returns('self', <expr>)
  • get_all_rules(self)
    @api.multi
    @return: returns a list of tuple (id, sequence) of rules that are maybe to apply

New fields (18)
  • company_id Many2one → res.company
    copy=False default=<expr> readonly=True states={'draft': [('readonly', False)]} string='Company' args: 'res.company'
  • contract_id Many2one → hr.contract
    readonly=True states={'draft': [('readonly', False)]} string='Contract' args: 'hr.contract'
  • credit_note Boolean
    help='Indicates this payslip has a refund of another' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_from Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • date_to Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • details_by_salary_rule_category One2many → hr.payslip.line
    compute='_compute_details_by_salary_rule_category' string='Details by Salary Rule Category' args: 'hr.payslip.line'
  • employee_id Many2one → hr.employee
    readonly=True required=True states={'draft': [('readonly', False)]} string='Employee' args: 'hr.employee'
  • input_line_ids One2many → hr.payslip.input
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Inputs' args: 'hr.payslip.input', 'payslip_id'
  • line_ids One2many → hr.payslip.line
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Lines' args: 'hr.payslip.line', 'slip_id'
  • name Char
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Name'
  • note Text
    readonly=True states={'draft': [('readonly', False)]} string='Internal Note'
  • number Char
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Reference'
  • paid Boolean
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Made Payment Order ? '
  • payslip_count Integer
    compute='_compute_payslip_count' string='Payslip Computation Details'
  • payslip_run_id Many2one → hr.payslip.run
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Payslip Batches' args: 'hr.payslip.run'
  • state Selection
    copy=False default='draft' help="* When the payslip is created the status is 'Draft'\n \n* If the payslip is under verification, the status is 'Waiting'.\n \n* If the payslip is confirmed then status is set to 'Done'.\n \n* When user cancel payslip the status is 'Rejected'." index=True readonly=True string='Status' args: [('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')]
  • struct_id Many2one → hr.payroll.structure
    help="Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn't mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period" readonly=True states={'draft': [('readonly', False)]} string='Structure' args: 'hr.payroll.structure'
  • worked_days_line_ids One2many → hr.payslip.worked_days
    copy=True readonly=True states={'draft': [('readonly', False)]} string='Payslip Worked Days' args: 'hr.payslip.worked_days', 'payslip_id'
Public methods (15)
  • action_payslip_cancel(self)
    @api.multi
  • action_payslip_done(self)
    @api.multi
  • action_payslip_draft(self)
    @api.multi
  • check_done(self)
    @api.multi
  • compute_sheet(self)
    @api.multi
  • copy(self, default=None)
    @api.multi@api.returns('self', <expr>)
  • get_contract(self, employee, date_from, date_to)
    @api.model
    @param employee: recordset of employee @param date_from: date field @param date_to: date field @return: returns the ids of all the contracts for the given employee that need to be considered for the given dates
  • get_inputs(self, contracts, date_from, date_to)
    @api.model
  • get_salary_line_total(self, code)
  • get_worked_day_lines(self, contracts, date_from, date_to)
    @api.model
    @param contract: Browse record of contracts @return: returns a list of dict containing the input that should be applied for the given contract between date_from and date_to
  • onchange_contract(self)
    @api.onchange('contract_id')
  • onchange_employee(self)
    @api.onchange('employee_id', 'date_from', 'date_to')
  • onchange_employee_id(self, date_from, date_to, employee_id=False, contract_id=False)
    @api.multi
  • refund_sheet(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (1)
  • employee_ids Many2many → hr.employee
    args: 'hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees'
Public methods (1)
  • compute_sheet(self)
    @api.multi

New fields (6)
  • amount Float
    help='It is used in computation. For e.g. A rule for sales having 1% commission of basic salary for per product can defined in expression like result = inputs.SALEURO.amount * contract.wage*0.01.'
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (8)
  • amount Float
    digits=dp.get_precision('Payroll')
  • contract_id Many2one → hr.contract
    index=True required=True string='Contract' args: 'hr.contract'
  • employee_id Many2one → hr.employee
    required=True string='Employee' args: 'hr.employee'
  • quantity Float
    default=1.0 digits=dp.get_precision('Payroll')
  • rate Float
    default=100.0 digits=dp.get_precision('Payroll Rate') string='Rate (%)'
  • salary_rule_id Many2one → hr.salary.rule
    required=True string='Rule' args: 'hr.salary.rule'
  • slip_id Many2one → hr.payslip
    ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • total Float
    compute='_compute_total' digits=dp.get_precision('Payroll') store=True string='Total'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (6)
  • credit_note Boolean
    help='If its checked, indicates that all payslips generated from here are refund payslips.' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_end Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • date_start Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • name Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • slip_ids One2many → hr.payslip
    readonly=True states={'draft': [('readonly', False)]} string='Payslips' args: 'hr.payslip', 'payslip_run_id'
  • state Selection
    copy=False default='draft' index=True readonly=True string='Status' args: [('draft', 'Draft'), ('close', 'Close')]
Public methods (3)
  • close_payslip_run(self)
    @api.multi
  • draft_payslip_run(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (7)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • number_of_days Float
    string='Number of Days'
  • number_of_hours Float
    string='Number of Hours'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (3)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • input_id Many2one → hr.salary.rule
    required=True string='Salary Rule Input' args: 'hr.salary.rule'
  • name Char
    required=True string='Description'
Public methods (0)

No public methods.

New fields (23)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the salary rule without removing it.'
  • amount_fix Float
    digits=dp.get_precision('Payroll') string='Fixed Amount'
  • amount_percentage Float
    digits=dp.get_precision('Payroll Rate') help='For example, enter 50.0 to apply a percentage of 50%' string='Percentage (%)'
  • amount_percentage_base Char
    help='result will be affected to a variable' string='Percentage based on'
  • amount_python_compute Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days.\n # inputs: object containing the computed inputs.\n\n # Note: returned value have to be set in the variable 'result'\n\n result = contract.wage * 0.10" string='Python Code'
  • amount_select Selection
    default='fix' help='The computation method for the rule amount.' index=True required=True string='Amount Type' args: [('percentage', 'Percentage (%)'), ('fix', 'Fixed Amount'), ('code', 'Python Code')]
  • appears_on_payslip Boolean
    default=True help='Used to display the salary rule on payslip.' string='Appears on Payslip'
  • category_id Many2one → hr.salary.rule.category
    required=True string='Category' args: 'hr.salary.rule.category'
  • child_ids One2many → hr.salary.rule
    copy=True string='Child Salary Rule' args: 'hr.salary.rule', 'parent_rule_id'
  • code Char
    help='The code of salary rules can be used as reference in computation of other rules. In that case, it is case sensitive.' required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • condition_python Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days\n # inputs: object containing the computed inputs\n\n # Note: returned value have to be set in the variable 'result'\n\n result = rules.NET > categories.NET * 0.10" help='Applied this rule for calculation if condition is true. You can specify condition like basic > 1000.' required=True string='Python Condition'
  • condition_range Char
    default='contract.wage' help='This will be used to compute the % fields values; in general it is on basic, but you can also use categories code fields in lowercase as a variable names (hra, ma, lta, etc.) and the variable basic.' string='Range Based on'
  • condition_range_max Float
    help='The maximum amount, applied for this rule.' string='Maximum Range'
  • condition_range_min Float
    help='The minimum amount, applied for this rule.' string='Minimum Range'
  • condition_select Selection
    default='none' required=True string='Condition Based on' args: [('none', 'Always True'), ('range', 'Range'), ('python', 'Python Expression')]
  • input_ids One2many → hr.rule.input
    copy=True string='Inputs' args: 'hr.rule.input', 'input_id'
  • name Char
    required=True translate=True
  • note Text
    string='Description'
  • parent_rule_id Many2one → hr.salary.rule
    index=True string='Parent Salary Rule' args: 'hr.salary.rule'
  • quantity Char
    default='1.0' help='It is used in computation for percentage and fixed amount. For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days.'
  • register_id Many2one → hr.contribution.register
    help='Eventual third party involved in the salary payment of the employees.' string='Contribution Register' args: 'hr.contribution.register'
  • sequence Integer
    default=5 help='Use to arrange calculation sequence' index=True required=True
Public methods (0)

No public methods.

New fields (6)
  • children_ids One2many → hr.salary.rule.category
    string='Children' args: 'hr.salary.rule.category', 'parent_id'
  • code Char
    required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True translate=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.salary.rule.category
    help='Linking a salary category to its parent is used only for the reporting purpose.' string='Parent' args: 'hr.salary.rule.category'
Public methods (0)

No public methods.

New fields (2)
  • date_from Date
    default=datetime.now().strftime('%Y-%m-01') required=True string='Date From'
  • date_to Date
    default=<expr> required=True string='Date To'
Public methods (1)
  • print_report(self)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • get_details_by_rule_category(self, payslip_lines)
  • get_lines_by_contribution_register(self, payslip_lines)

New fields (4)
  • module_account_accountant Boolean
    string='Account'
  • module_l10n_be_hr_payroll Boolean
    string='Belgium Payroll'
  • module_l10n_fr_hr_payroll Boolean
    string='French Payroll'
  • module_l10n_in_hr_payroll Boolean
    string='Indian Payroll'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/hr_payroll
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, GitHub, Olivier Colson, Yannick Tivisse, qsm-odoo, Odoo Online, Laurent Smet, DVE, Adrien Dieudonne, RomainLibert
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - hr_holidays
    - calendar
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (38)
XML IDNameModelTypeStatus
hr_contract_advantage_template_view_form hr.contract.advantage.template.form hr.contract.advantage.template form New
hr_contract_advantage_template_view_tree hr.contract.advantage.template.tree hr.contract.advantage.template tree New
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract xpath Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_contribution_register_view_kanban hr.contribution.register.kanban hr.contribution.register kanban New
hr_payroll_structure_view_kanban hr.payroll.structure.kanban hr.payroll.structure kanban New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_payslip_run_view_kanban hr.payslip.run.kanban hr.payslip.run kanban New
hr_payslip_view_kanban hr.payslip.kanban hr.payslip kanban New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
hr_salary_rule_view_kanban hr.salary.rule.kanban hr.salary.rule kanban New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee button Inherits hr.view_employee_form
report_contributionregister report_contributionregister ir.ui.view qweb New
report_payslip report_payslip ir.ui.view qweb New
report_payslipdetails report_payslipdetails ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.hr.payroll res.config.settings xpath Inherits base.res_config_settings_view_form
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (18)

New fields (3)
  • resource_calendar_id Many2one
    help="Employee's working schedule." required=True
  • schedule_pay Selection
    default='monthly' help='Defines the frequency of the wage payment.' index=True string='Scheduled Pay' args: [('monthly', 'Monthly'), ('quarterly', 'Quarterly'), ('semi-annually', 'Semi-annually'), ('annually', 'Annually'), ('weekly', 'Weekly'), ('bi-weekly', 'Bi-weekly'), ('bi-monthly', 'Bi-monthly')]
  • struct_id Many2one → hr.payroll.structure
    string='Salary Structure' args: 'hr.payroll.structure'
Public methods (3)
  • get_all_structures(self)
    @api.multi
    @return: the structures linked to the given contracts, ordered by hierachy (parent=False first, then first level children and so on) and without duplicata
  • get_attribute(self, code, attribute)
    @api.multi
  • set_attribute_value(self, code, active)
    @api.multi

New fields (5)
  • code Char
    required=True args: 'Code'
  • default_value Float
    args: 'Default value for this advantage'
  • lower_bound Float
    help='Lower bound authorized by the employer for this advantage' args: 'Lower Bound'
  • name Char
    required=True args: 'Name'
  • upper_bound Float
    help='Upper bound authorized by the employer for this advantage' args: 'Upper Bound'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • partner_id Many2one → res.partner
    string='Partner' args: 'res.partner'
  • register_line_ids One2many → hr.payslip.line
    readonly=True string='Register Line' args: 'hr.payslip.line', 'register_id'
Public methods (0)

No public methods.

New fields (2)
  • payslip_count Integer
    compute='_compute_payslip_count' groups='hr_payroll.group_hr_payroll_user' string='Payslips'
  • slip_ids One2many → hr.payslip
    readonly=True string='Payslips' args: 'hr.payslip', 'employee_id'
Public methods (0)

No public methods.

New fields (7)
  • children_ids One2many → hr.payroll.structure
    copy=True string='Children' args: 'hr.payroll.structure', 'parent_id'
  • code Char
    required=True string='Reference'
  • company_id Many2one → res.company
    copy=False default=<expr> required=True string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.payroll.structure
    default=_get_parent string='Parent' args: 'hr.payroll.structure'
  • rule_ids Many2many → hr.salary.rule
    string='Salary Rules' args: 'hr.salary.rule', 'hr_structure_salary_rule_rel', 'struct_id', 'rule_id'
Public methods (2)
  • copy(self, default=None)
    @api.multi
  • get_all_rules(self)
    @api.multi
    @return: returns a list of tuple (id, sequence) of rules that are maybe to apply

New fields (18)
  • company_id Many2one → res.company
    copy=False default=<expr> readonly=True states={'draft': [('readonly', False)]} string='Company' args: 'res.company'
  • contract_id Many2one → hr.contract
    readonly=True states={'draft': [('readonly', False)]} string='Contract' args: 'hr.contract'
  • credit_note Boolean
    help='Indicates this payslip has a refund of another' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_from Date
    default=time.strftime('%Y-%m-01') readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • date_to Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • details_by_salary_rule_category One2many → hr.payslip.line
    compute='_compute_details_by_salary_rule_category' string='Details by Salary Rule Category' args: 'hr.payslip.line'
  • employee_id Many2one → hr.employee
    readonly=True required=True states={'draft': [('readonly', False)]} string='Employee' args: 'hr.employee'
  • input_line_ids One2many → hr.payslip.input
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Inputs' args: 'hr.payslip.input', 'payslip_id'
  • line_ids One2many → hr.payslip.line
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Lines' args: 'hr.payslip.line', 'slip_id'
  • name Char
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Name'
  • note Text
    readonly=True states={'draft': [('readonly', False)]} string='Internal Note'
  • number Char
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Reference'
  • paid Boolean
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Made Payment Order ? '
  • payslip_count Integer
    compute='_compute_payslip_count' string='Payslip Computation Details'
  • payslip_run_id Many2one → hr.payslip.run
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Payslip Batches' args: 'hr.payslip.run'
  • state Selection
    copy=False default='draft' help="* When the payslip is created the status is 'Draft'\n \n* If the payslip is under verification, the status is 'Waiting'.\n \n* If the payslip is confirmed then status is set to 'Done'.\n \n* When user cancel payslip the status is 'Rejected'." index=True readonly=True string='Status' args: [('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')]
  • struct_id Many2one → hr.payroll.structure
    help="Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn't mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period" readonly=True states={'draft': [('readonly', False)]} string='Structure' args: 'hr.payroll.structure'
  • worked_days_line_ids One2many → hr.payslip.worked_days
    copy=True readonly=True states={'draft': [('readonly', False)]} string='Payslip Worked Days' args: 'hr.payslip.worked_days', 'payslip_id'
Public methods (14)
  • action_payslip_cancel(self)
    @api.multi
  • action_payslip_done(self)
    @api.multi
  • action_payslip_draft(self)
    @api.multi
  • check_done(self)
    @api.multi
  • compute_sheet(self)
    @api.multi
  • get_contract(self, employee, date_from, date_to)
    @api.model
    @param employee: recordset of employee @param date_from: date field @param date_to: date field @return: returns the ids of all the contracts for the given employee that need to be considered for the given dates
  • get_inputs(self, contracts, date_from, date_to)
    @api.model
  • get_salary_line_total(self, code)
  • get_worked_day_lines(self, contracts, date_from, date_to)
    @api.model
    @param contract: Browse record of contracts @return: returns a list of dict containing the input that should be applied for the given contract between date_from and date_to
  • onchange_contract(self)
    @api.onchange('contract_id')
  • onchange_employee(self)
    @api.onchange('employee_id', 'date_from', 'date_to')
  • onchange_employee_id(self, date_from, date_to, employee_id=False, contract_id=False)
    @api.multi
  • refund_sheet(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (1)
  • employee_ids Many2many → hr.employee
    args: 'hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees'
Public methods (1)
  • compute_sheet(self)
    @api.multi

New fields (6)
  • amount Float
    help='It is used in computation. For e.g. A rule for sales having 1% commission of basic salary for per product can defined in expression like result = inputs.SALEURO.amount * contract.wage*0.01.'
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (8)
  • amount Float
    digits=dp.get_precision('Payroll')
  • contract_id Many2one → hr.contract
    index=True required=True string='Contract' args: 'hr.contract'
  • employee_id Many2one → hr.employee
    required=True string='Employee' args: 'hr.employee'
  • quantity Float
    default=1.0 digits=dp.get_precision('Payroll')
  • rate Float
    default=100.0 digits=dp.get_precision('Payroll Rate') string='Rate (%)'
  • salary_rule_id Many2one → hr.salary.rule
    required=True string='Rule' args: 'hr.salary.rule'
  • slip_id Many2one → hr.payslip
    ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • total Float
    compute='_compute_total' digits=dp.get_precision('Payroll') store=True string='Total'
Public methods (1)
  • create(self, values)
    @api.model

New fields (6)
  • credit_note Boolean
    help='If its checked, indicates that all payslips generated from here are refund payslips.' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_end Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • date_start Date
    default=time.strftime('%Y-%m-01') readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • name Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • slip_ids One2many → hr.payslip
    readonly=True states={'draft': [('readonly', False)]} string='Payslips' args: 'hr.payslip', 'payslip_run_id'
  • state Selection
    copy=False default='draft' index=True readonly=True string='Status' args: [('draft', 'Draft'), ('close', 'Close')]
Public methods (2)
  • close_payslip_run(self)
    @api.multi
  • draft_payslip_run(self)
    @api.multi

New fields (7)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • number_of_days Float
    string='Number of Days'
  • number_of_hours Float
    string='Number of Hours'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (3)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • input_id Many2one → hr.salary.rule
    required=True string='Salary Rule Input' args: 'hr.salary.rule'
  • name Char
    required=True string='Description'
Public methods (0)

No public methods.

New fields (23)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the salary rule without removing it.'
  • amount_fix Float
    digits=dp.get_precision('Payroll') string='Fixed Amount'
  • amount_percentage Float
    digits=dp.get_precision('Payroll Rate') help='For example, enter 50.0 to apply a percentage of 50%' string='Percentage (%)'
  • amount_percentage_base Char
    help='result will be affected to a variable' string='Percentage based on'
  • amount_python_compute Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days.\n # inputs: object containing the computed inputs.\n\n # Note: returned value have to be set in the variable 'result'\n\n result = contract.wage * 0.10" string='Python Code'
  • amount_select Selection
    default='fix' help='The computation method for the rule amount.' index=True required=True string='Amount Type' args: [('percentage', 'Percentage (%)'), ('fix', 'Fixed Amount'), ('code', 'Python Code')]
  • appears_on_payslip Boolean
    default=True help='Used to display the salary rule on payslip.' string='Appears on Payslip'
  • category_id Many2one → hr.salary.rule.category
    required=True string='Category' args: 'hr.salary.rule.category'
  • child_ids One2many → hr.salary.rule
    copy=True string='Child Salary Rule' args: 'hr.salary.rule', 'parent_rule_id'
  • code Char
    help='The code of salary rules can be used as reference in computation of other rules. In that case, it is case sensitive.' required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • condition_python Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days\n # inputs: object containing the computed inputs\n\n # Note: returned value have to be set in the variable 'result'\n\n result = rules.NET > categories.NET * 0.10" help='Applied this rule for calculation if condition is true. You can specify condition like basic > 1000.' required=True string='Python Condition'
  • condition_range Char
    default='contract.wage' help='This will be used to compute the % fields values; in general it is on basic, but you can also use categories code fields in lowercase as a variable names (hra, ma, lta, etc.) and the variable basic.' string='Range Based on'
  • condition_range_max Float
    help='The maximum amount, applied for this rule.' string='Maximum Range'
  • condition_range_min Float
    help='The minimum amount, applied for this rule.' string='Minimum Range'
  • condition_select Selection
    default='none' required=True string='Condition Based on' args: [('none', 'Always True'), ('range', 'Range'), ('python', 'Python Expression')]
  • input_ids One2many → hr.rule.input
    copy=True string='Inputs' args: 'hr.rule.input', 'input_id'
  • name Char
    required=True translate=True
  • note Text
    string='Description'
  • parent_rule_id Many2one → hr.salary.rule
    index=True string='Parent Salary Rule' args: 'hr.salary.rule'
  • quantity Char
    default='1.0' help='It is used in computation for percentage and fixed amount. For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days.'
  • register_id Many2one → hr.contribution.register
    help='Eventual third party involved in the salary payment of the employees.' string='Contribution Register' args: 'hr.contribution.register'
  • sequence Integer
    default=5 help='Use to arrange calculation sequence' index=True required=True
Public methods (0)

No public methods.

New fields (6)
  • children_ids One2many → hr.salary.rule.category
    string='Children' args: 'hr.salary.rule.category', 'parent_id'
  • code Char
    required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True translate=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.salary.rule.category
    help='Linking a salary category to its parent is used only for the reporting purpose.' string='Parent' args: 'hr.salary.rule.category'
Public methods (0)

No public methods.

New fields (2)
  • date_from Date
    default=datetime.now().strftime('%Y-%m-01') required=True string='Date From'
  • date_to Date
    default=<expr> required=True string='Date To'
Public methods (1)
  • print_report(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • get_report_values(self, docids, data=None)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • get_details_by_rule_category(self, payslip_lines)
  • get_lines_by_contribution_register(self, payslip_lines)
  • get_report_values(self, docids, data=None)
    @api.model

New fields (4)
  • module_account_accountant Boolean
    string='Account Accountant'
  • module_l10n_be_hr_payroll Boolean
    string='Belgium Payroll'
  • module_l10n_fr_hr_payroll Boolean
    string='French Payroll'
  • module_l10n_in_hr_payroll Boolean
    string='Indian Payroll'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/hr_payroll
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Julien Legros, qdp-odoo, Jeremy Kersten, Yannick Tivisse
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - hr
    - hr_holidays
    - calendar
    - web_calendar
    - product
    - decimal_precision
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Generic Payroll system.
=======================

    * Employee Details
    * Employee Contracts
    * Passport based Contract
    * Allowances/Deductions
    * Allow to configure Basic/Gross/Net Salary
    * Employee Payslip
    * Monthly Payroll Register
    * Integrated with Holiday Management
    

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract xpath Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_category_tree_view hr.salary.rule.category.tree.view hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee div Inherits hr.view_employee_form
report_contributionregister report_contributionregister ir.ui.view qweb New
report_payslip report_payslip ir.ui.view qweb New
report_payslipdetails report_payslipdetails ir.ui.view qweb New
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_configuration Configure Payroll hr.payroll.config.settings form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (17)

New fields (2)
  • schedule_pay Selection
    default='monthly' index=True string='Scheduled Pay' args: [('monthly', 'Monthly'), ('quarterly', 'Quarterly'), ('semi-annually', 'Semi-annually'), ('annually', 'Annually'), ('weekly', 'Weekly'), ('bi-weekly', 'Bi-weekly'), ('bi-monthly', 'Bi-monthly')]
  • struct_id Many2one → hr.payroll.structure
    string='Salary Structure' args: 'hr.payroll.structure'
Public methods (1)
  • get_all_structures(self)
    @api.multi
    @return: the structures linked to the given contracts, ordered by hierachy (parent=False first, then first level children and so on) and without duplicata

New fields (5)
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • partner_id Many2one → res.partner
    string='Partner' args: 'res.partner'
  • register_line_ids One2many → hr.payslip.line
    readonly=True string='Register Line' args: 'hr.payslip.line', 'register_id'
Public methods (0)

No public methods.

New fields (2)
  • payslip_count Integer
    compute='_compute_payslip_count' groups='hr_payroll.group_hr_payroll_user' string='Payslips'
  • slip_ids One2many → hr.payslip
    readonly=True string='Payslips' args: 'hr.payslip', 'employee_id'
Public methods (0)

No public methods.

New fields (1)
  • module_hr_payroll_account Boolean
    help='Create journal entries from payslips' string='Link your payroll to accounting system'
Public methods (0)

No public methods.

New fields (7)
  • children_ids One2many → hr.payroll.structure
    copy=True string='Children' args: 'hr.payroll.structure', 'parent_id'
  • code Char
    required=True string='Reference'
  • company_id Many2one → res.company
    copy=False default=<expr> required=True string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.payroll.structure
    default=_get_parent string='Parent' args: 'hr.payroll.structure'
  • rule_ids Many2many → hr.salary.rule
    string='Salary Rules' args: 'hr.salary.rule', 'hr_structure_salary_rule_rel', 'struct_id', 'rule_id'
Public methods (2)
  • copy(self, default=None)
    @api.multi
  • get_all_rules(self)
    @api.multi
    @return: returns a list of tuple (id, sequence) of rules that are maybe to apply

New fields (18)
  • company_id Many2one → res.company
    copy=False default=<expr> readonly=True states={'draft': [('readonly', False)]} string='Company' args: 'res.company'
  • contract_id Many2one → hr.contract
    readonly=True states={'draft': [('readonly', False)]} string='Contract' args: 'hr.contract'
  • credit_note Boolean
    help='Indicates this payslip has a refund of another' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_from Date
    default=time.strftime('%Y-%m-01') readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • date_to Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • details_by_salary_rule_category One2many → hr.payslip.line
    compute='_compute_details_by_salary_rule_category' string='Details by Salary Rule Category' args: 'hr.payslip.line'
  • employee_id Many2one → hr.employee
    readonly=True required=True states={'draft': [('readonly', False)]} string='Employee' args: 'hr.employee'
  • input_line_ids One2many → hr.payslip.input
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Inputs' args: 'hr.payslip.input', 'payslip_id'
  • line_ids One2many → hr.payslip.line
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Lines' args: 'hr.payslip.line', 'slip_id'
  • name Char
    readonly=True states={'draft': [('readonly', False)]} string='Payslip Name'
  • note Text
    readonly=True states={'draft': [('readonly', False)]} string='Internal Note'
  • number Char
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Reference'
  • paid Boolean
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Made Payment Order ? '
  • payslip_count Integer
    compute='_compute_payslip_count' string='Payslip Computation Details'
  • payslip_run_id Many2one → hr.payslip.run
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Payslip Batches' args: 'hr.payslip.run'
  • state Selection
    copy=False default='draft' help="* When the payslip is created the status is 'Draft'\n \n* If the payslip is under verification, the status is 'Waiting'.\n \n* If the payslip is confirmed then status is set to 'Done'.\n \n* When user cancel payslip the status is 'Rejected'." index=True readonly=True string='Status' args: [('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')]
  • struct_id Many2one → hr.payroll.structure
    help="Defines the rules that have to be applied to this payslip, accordingly to the contract chosen. If you let empty the field contract, this field isn't mandatory anymore and thus the rules applied will be all the rules set on the structure of all contracts of the employee valid for the chosen period" readonly=True states={'draft': [('readonly', False)]} string='Structure' args: 'hr.payroll.structure'
  • worked_days_line_ids One2many → hr.payslip.worked_days
    copy=True readonly=True states={'draft': [('readonly', False)]} string='Payslip Worked Days' args: 'hr.payslip.worked_days', 'payslip_id'
Public methods (14)
  • action_payslip_cancel(self)
    @api.multi
  • action_payslip_done(self)
    @api.multi
  • action_payslip_draft(self)
    @api.multi
  • check_done(self)
    @api.multi
  • compute_sheet(self)
    @api.multi
  • get_contract(self, employee, date_from, date_to)
    @api.model
    @param employee: recordset of employee @param date_from: date field @param date_to: date field @return: returns the ids of all the contracts for the given employee that need to be considered for the given dates
  • get_inputs(self, contract_ids, date_from, date_to)
    @api.model
  • get_payslip_lines(self, contract_ids, payslip_id)
    @api.model
  • get_worked_day_lines(self, contract_ids, date_from, date_to)
    @api.model
    @param contract_ids: list of contract id @return: returns a list of dict containing the input that should be applied for the given contract between date_from and date_to
  • onchange_contract(self)
    @api.onchange('contract_id')
  • onchange_employee(self)
    @api.onchange('employee_id', 'date_from', 'date_to')
  • onchange_employee_id(self, date_from, date_to, employee_id=False, contract_id=False)
    @api.multi
  • refund_sheet(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (1)
  • employee_ids Many2many → hr.employee
    args: 'hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees'
Public methods (1)
  • compute_sheet(self)
    @api.multi

New fields (6)
  • amount Float
    help='It is used in computation. For e.g. A rule for sales having 1% commission of basic salary for per product can defined in expression like result = inputs.SALEURO.amount * contract.wage*0.01.'
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (8)
  • amount Float
    digits=dp.get_precision('Payroll')
  • contract_id Many2one → hr.contract
    index=True required=True string='Contract' args: 'hr.contract'
  • employee_id Many2one → hr.employee
    required=True string='Employee' args: 'hr.employee'
  • quantity Float
    default=1.0 digits=dp.get_precision('Payroll')
  • rate Float
    default=100.0 digits=dp.get_precision('Payroll Rate') string='Rate (%)'
  • salary_rule_id Many2one → hr.salary.rule
    required=True string='Rule' args: 'hr.salary.rule'
  • slip_id Many2one → hr.payslip
    ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • total Float
    compute='_compute_total' digits=dp.get_precision('Payroll') store=True string='Total'
Public methods (1)
  • create(self, values)
    @api.model

New fields (6)
  • credit_note Boolean
    help='If its checked, indicates that all payslips generated from here are refund payslips.' readonly=True states={'draft': [('readonly', False)]} string='Credit Note'
  • date_end Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Date To'
  • date_start Date
    default=time.strftime('%Y-%m-01') readonly=True required=True states={'draft': [('readonly', False)]} string='Date From'
  • name Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • slip_ids One2many → hr.payslip
    readonly=True states={'draft': [('readonly', False)]} string='Payslips' args: 'hr.payslip', 'payslip_run_id'
  • state Selection
    copy=False default='draft' index=True readonly=True string='Status' args: [('draft', 'Draft'), ('close', 'Close')]
Public methods (2)
  • close_payslip_run(self)
    @api.multi
  • draft_payslip_run(self)
    @api.multi

New fields (7)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • contract_id Many2one → hr.contract
    help='The contract for which applied this input' required=True string='Contract' args: 'hr.contract'
  • name Char
    required=True string='Description'
  • number_of_days Float
    string='Number of Days'
  • number_of_hours Float
    string='Number of Hours'
  • payslip_id Many2one → hr.payslip
    index=True ondelete='cascade' required=True string='Pay Slip' args: 'hr.payslip'
  • sequence Integer
    default=10 index=True required=True
Public methods (0)

No public methods.

New fields (3)
  • code Char
    help='The code that can be used in the salary rules' required=True
  • input_id Many2one → hr.salary.rule
    required=True string='Salary Rule Input' args: 'hr.salary.rule'
  • name Char
    required=True string='Description'
Public methods (0)

No public methods.

New fields (23)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the salary rule without removing it.'
  • amount_fix Float
    digits=dp.get_precision('Payroll') string='Fixed Amount'
  • amount_percentage Float
    digits=dp.get_precision('Payroll Rate') help='For example, enter 50.0 to apply a percentage of 50%' string='Percentage (%)'
  • amount_percentage_base Char
    help='result will be affected to a variable' string='Percentage based on'
  • amount_python_compute Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days.\n # inputs: object containing the computed inputs.\n\n # Note: returned value have to be set in the variable 'result'\n\n result = contract.wage * 0.10" string='Python Code'
  • amount_select Selection
    default='fix' help='The computation method for the rule amount.' index=True required=True string='Amount Type' args: [('percentage', 'Percentage (%)'), ('fix', 'Fixed Amount'), ('code', 'Python Code')]
  • appears_on_payslip Boolean
    default=True help='Used to display the salary rule on payslip.' string='Appears on Payslip'
  • category_id Many2one → hr.salary.rule.category
    required=True string='Category' args: 'hr.salary.rule.category'
  • child_ids One2many → hr.salary.rule
    copy=True string='Child Salary Rule' args: 'hr.salary.rule', 'parent_rule_id'
  • code Char
    help='The code of salary rules can be used as reference in computation of other rules. In that case, it is case sensitive.' required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • condition_python Text
    default="\n # Available variables:\n #----------------------\n # payslip: object containing the payslips\n # employee: hr.employee object\n # contract: hr.contract object\n # rules: object containing the rules code (previously computed)\n # categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category).\n # worked_days: object containing the computed worked days\n # inputs: object containing the computed inputs\n\n # Note: returned value have to be set in the variable 'result'\n\n result = rules.NET > categories.NET * 0.10" help='Applied this rule for calculation if condition is true. You can specify condition like basic > 1000.' required=True string='Python Condition'
  • condition_range Char
    default='contract.wage' help='This will be used to compute the % fields values; in general it is on basic, but you can also use categories code fields in lowercase as a variable names (hra, ma, lta, etc.) and the variable basic.' string='Range Based on'
  • condition_range_max Float
    help='The maximum amount, applied for this rule.' string='Maximum Range'
  • condition_range_min Float
    help='The minimum amount, applied for this rule.' string='Minimum Range'
  • condition_select Selection
    default='none' required=True string='Condition Based on' args: [('none', 'Always True'), ('range', 'Range'), ('python', 'Python Expression')]
  • input_ids One2many → hr.rule.input
    copy=True string='Inputs' args: 'hr.rule.input', 'input_id'
  • name Char
    required=True
  • note Text
    string='Description'
  • parent_rule_id Many2one → hr.salary.rule
    index=True string='Parent Salary Rule' args: 'hr.salary.rule'
  • quantity Char
    default='1.0' help='It is used in computation for percentage and fixed amount. For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days.'
  • register_id Many2one → hr.contribution.register
    help='Eventual third party involved in the salary payment of the employees.' string='Contribution Register' args: 'hr.contribution.register'
  • sequence Integer
    default=5 help='Use to arrange calculation sequence' index=True required=True
Public methods (2)
  • compute_rule(self, localdict)
    @api.multi
    :param localdict: dictionary containing the environement in which to compute the rule :return: returns a tuple build as the base/amount computed, the quantity and the rate :rtype: (float, float, float)
  • satisfy_condition(self, localdict)
    @api.multi
    @param contract_id: id of hr.contract to be tested @return: returns True if the given rule match the condition for the given contract. Return False otherwise.

New fields (6)
  • children_ids One2many → hr.salary.rule.category
    string='Children' args: 'hr.salary.rule.category', 'parent_id'
  • code Char
    required=True
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • name Char
    required=True
  • note Text
    string='Description'
  • parent_id Many2one → hr.salary.rule.category
    help='Linking a salary category to its parent is used only for the reporting purpose.' string='Parent' args: 'hr.salary.rule.category'
Public methods (0)

No public methods.

New fields (2)
  • date_from Date
    default=datetime.now().strftime('%Y-%m-01') required=True string='Date From'
  • date_to Date
    default=<expr> required=True string='Date To'
Public methods (1)
  • print_report(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • render_html(self, docids, data=None)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • get_details_by_rule_category(self, payslip_lines)
  • get_lines_by_contribution_register(self, payslip_lines)
  • render_html(self, docids, data=None)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/hr_payroll
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Yannick Tivisse, qsm-odoo, Denis Vermylen (dve)
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - bus
    - resource
    - web_tip
    - hr_contract
    - base_action_rule
    - hr_holidays
    - calendar
    - web_calendar
    - report
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Generic Payroll system.
=======================

    * Employee Details
    * Employee Contracts
    * Passport based Contract
    * Allowances/Deductions
    * Allow to configure Basic/Gross/Net Salary
    * Employee Payslip
    * Monthly Payroll Register
    * Integrated with Holiday Management
    

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract data Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_category_tree_view hr.salary.rule.category.tree.view hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee data Inherits hr.view_employee_form
report_contributionregister report_contributionregister ir.ui.view qweb New
report_payslip report_payslip ir.ui.view qweb New
report_payslipdetails report_payslipdetails ir.ui.view qweb New
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_configuration Configure Payroll hr.payroll.config.settings form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/hr_payroll
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Stephane Wirtel, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, ggh-openerp, Christophe Simonis, Xavier Morel, Joren Van Onder, Simon Lejeune, Nicolas Martinelli, Amit Bhavsar (Open ERP), Richard Mathot, Géry Debongnie, Aaron Bohy, Richard Mathot (OpenERP), ged-odoo, Jeremy Kersten, Gery Debongnie, Randhir Mayatra rma-openerp, Yogesh Parekh (OpenERP), Rakesh Sindhav (OpenERP)
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - board
    - hr_contract
    - base_action_rule
    - hr_holidays
    - calendar
    - web_calendar
    - decimal_precision
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Generic Payroll system.
=======================

    * Employee Details
    * Employee Contracts
    * Passport based Contract
    * Allowances/Deductions
    * Allow to configure Basic/Gross/Net Salary
    * Employee Payslip
    * Monthly Payroll Register
    * Integrated with Holiday Management
    

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract data Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_category_tree_view hr.salary.rule.category.tree.view hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee data Inherits hr.view_employee_form
report_contributionregister report_contributionregister ir.ui.view qweb New
report_payslip report_payslip ir.ui.view qweb New
report_payslipdetails report_payslipdetails ir.ui.view qweb New
view_hr_config_inherit hr settings for payroll hr.config.settings xpath Inherits hr.view_human_resources_configuration
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/hr_payroll
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Christophe Matthieu, Pinakin Nayi (OpenERP), DBR (OpenERP), Antonin Bourguignon, Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Saurang Suthar (OpenERP), Fabien Pinckaers, Bharat Devnani (OpenERP), Meera Trambadia (OpenERP), Olivier Dony, Rajesh Prajapati (OpenERP), Twinkle (OpenERP), Tejas Tank, Vo Minh Thu, Hardik, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), ara@tinyerp.com, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Khushboo Bhatt (Open ERP), Amit Patel, Jigar Amin, Amit (OpenERP), Rifakat
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - process
    - board
    - hr_contract
    - hr_holidays
    - base_calendar
    - base_status
    - base_action_rule
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Generic Payroll system.
=======================

    * Employee Details
    * Employee Contracts
    * Passport based Contract
    * Allowances/Deductions
    * Allow to configure Basic/Gross/Net Salary
    * Employee Payslip
    * Monthly Payroll Register
    * Integrated with Holiday Management
    

Code Analysis

Views touched (29)
XML IDNameModelTypeStatus
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract data Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_category_tree_view hr.salary.rule.category.tree.view hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
payroll_hr_employee_view_form payroll.hr.employee.view.form hr.employee data Inherits hr.view_employee_form
view_hr_config_inherit hr settings for payroll hr.config.settings xpath Inherits hr.view_human_resources_configuration
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/hr_payroll
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Rucha (Open ERP), Stephane Wirtel, Purnendu Singh (OpenERP), Fabien Pinckaers, Antony Lesuisse, Meera Trambadia (OpenERP), Olivier Dony, Divyesh Makwana (Open ERP), Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Mayur Maheshwari (OpenERP), vro, niv-openerp, Christophe Simonis, Ujjvala Collins (OpenERP), Xavier Morel, Ravish Murari (OpenERP), Serpent Consulting Services, Amit (OpenERP), Minh Tran, Mustufa Rangwala (OpenERP), Thibault Francois, Carlos Vásquez, Els Van Vossel, Israel Fermin Montilla, Hardik Ansodariy (OpenERP), rch-openerp, ARA (OpenERP), mtr, Mustufa Rangwala, psi (Open ERP), RavishchanraMurari (Open ERP), Osenda
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - mail
    - base_tools
    - resource
    - process
    - board
    - hr_contract
    - hr_holidays
    - crm
    - base_action_rule
    - base_calendar
    - fetchmail
    - decimal_precision
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Generic Payroll system.
=======================

    * Employee Details
    * Employee Contracts
    * Passport based Contract
    * Allowances / Deductions
    * Allow to configure Basic / Grows / Net Salary
    * Employee Payslip
    * Monthly Payroll Register
    * Integrated with Holiday Management
    

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
hr_contract.hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_contract_form_inherit hr.contract.view.form.inherit hr.contract data Inherits hr_contract.hr_contract_view_form
hr_contribution_register_filter hr.contribution.register.search hr.contribution.register search New
hr_contribution_register_form hr.contribution.register.form hr.contribution.register form New
hr_contribution_register_tree hr.contribution.register.tree hr.contribution.register tree New
hr_payslip_run_filter hr.payslip.run.search hr.payslip.run search New
hr_payslip_run_form hr.payslip.run.form hr.payslip.run form New
hr_payslip_run_tree hr.payslip.run.tree hr.payslip.run tree New
hr_salary_rule_category_form hr.salary.rule.category.form hr.salary.rule.category form New
hr_salary_rule_category_tree hr.salary.rule.category.tree hr.salary.rule.category tree New
hr_salary_rule_category_tree_view hr.salary.rule.category.tree.view hr.salary.rule.category tree New
hr_salary_rule_form hr.salary.rule.form hr.salary.rule form New
hr_salary_rule_list hr.salary.rule.list hr.salary.rule tree New
hr_salary_rule_tree hr.salary.rule.tree hr.salary.rule tree New
view_hr_employee_grade_form hr.payroll.structure.form hr.payroll.structure form New
view_hr_payroll_structure_filter hr.payroll.structure.select hr.payroll.structure search New
view_hr_payroll_structure_list_view hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payroll_structure_tree hr.payroll.structure.tree hr.payroll.structure tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees form New
view_hr_payslip_filter hr.payslip.select hr.payslip search New
view_hr_payslip_form hr.payslip.form hr.payslip form New
view_hr_payslip_line_filter hr.payslip.line.select hr.payslip.line search New
view_hr_payslip_line_form hr.payslip.line.form hr.payslip.line form New
view_hr_payslip_line_tree hr.payslip.line.tree hr.payslip.line tree New
view_hr_payslip_tree hr.payslip.tree hr.payslip tree New
view_hr_rule_filter hr.salary.rule.select hr.salary.rule search New
view_hr_salary_rule_category_filter hr.salary.rule.category.select hr.salary.rule.category search New
view_payslip_lines_contribution_register payslip.lines.contribution.register payslip.lines.contribution.register form New
Models touched (0)

No models found for this module.