HR Contract Hourly Rate

hr_contract_hourly_rate
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/10.0/hr_contract_hourly_rate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Human Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE), Iryna Vushnevska
WEBSITE
WEBSITEhttps://www.savoirfairelinux.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/hr:
    - hr_contract_multi_jobs
odoo/odoo:
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - hr
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
hr_contract_view_form hr.contract.view.form hr.contract field Inherits hr_contract_multi_jobs.hr_contract_view_form
view_hr_hourly_rate_class_filter Hourly Rate Classes hr.hourly.rate.class search New
view_hr_hourly_rate_class_form hr.hourly.rate.class.form hr.hourly.rate.class form New
view_hr_hourly_rate_class_tree hr.hourly.rate.class.tree hr.hourly.rate.class tree New
Models touched (4)

New fields (1)
  • salary_computation_method Selection
    default='monthly' help='Whether to use the annual wage or an hourly rate for computation of payslip.' required=True string='Salary Computation Method' args: [('yearly', 'Annual Wage'), ('monthly', 'Monthly Wage'), ('hourly', 'Hourly Wage')]
Public methods (1)
  • get_job_hourly_rate(self, date_from, date_to, job_id=False, main_job=False)
    @api.multi
    Get the hourly rate related to a job on a contract for a given interval of time (date_from, date_to) 2 cases: get the hourly rate - related to a given job position id (job_id == int) - related to the main job on the contract (main_job == True) This function is intended to be used on payslip worked days to fill the hourly_rate field. If no rate completely overlap the given period (date_from, date_to), False is returned and the hourly rate must then be entered manually.

New fields (2)
  • hourly_rate Float
    compute='_get_current_hourly_rate' string='Hourly Rate'
  • hourly_rate_class_id Many2one → hr.hourly.rate.class
    string='Hourly Rate Class' args: 'hr.hourly.rate.class'
Public methods (0)

No public methods.

New fields (4)
  • class_id Many2one → hr.hourly.rate.class
    ondelete='cascade' required=True string='Salary Class' args: 'hr.hourly.rate.class'
  • date_end Date
    string='End Date'
  • date_start Date
    default=fields.Date.today() required=True string='Start Date'
  • rate Float
    required=True string='Rate'
Public methods (0)

No public methods.

New fields (3)
  • contract_job_ids One2many → hr.contract.job
    string='Contract Jobs' args: 'hr.contract.job', 'hourly_rate_class_id'
  • line_ids One2many → hr.hourly.rate
    string='Hourly Rates' args: 'hr.hourly.rate', 'class_id'
  • name Char
    index=True required=True string='Class Name'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/9.0/hr_contract_hourly_rate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Human Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttps://www.savoirfairelinux.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/hr:
    - hr_contract_multi_jobs
odoo/odoo:
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - hr
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
hr_contract_view_form hr.contract.view.form hr.contract field Inherits hr_contract_multi_jobs.hr_contract_view_form
view_hr_hourly_rate_class_filter Hourly Rate Classes hr.hourly.rate.class search New
view_hr_hourly_rate_class_form hr.hourly.rate.class.form hr.hourly.rate.class form New
view_hr_hourly_rate_class_tree hr.hourly.rate.class.tree hr.hourly.rate.class tree New
Models touched (4)

New fields (1)
  • salary_computation_method Selection
    default='monthly' help='Whether to use the annual wage or an hourly rate for computation of payslip.' required=True string='Salary Computation Method' args: [('yearly', 'Annual Wage'), ('monthly', 'Monthly Wage'), ('hourly', 'Hourly Wage')]
Public methods (1)
  • get_job_hourly_rate(self, date_from, date_to, job_id=False, main_job=False)
    @api.multi
    Get the hourly rate related to a job on a contract for a given interval of time (date_from, date_to) 2 cases: get the hourly rate - related to a given job position id (job_id == int) - related to the main job on the contract (main_job == True) This function is intended to be used on payslip worked days to fill the hourly_rate field. If no rate completely overlap the given period (date_from, date_to), False is returned and the hourly rate must then be entered manually.

New fields (2)
  • hourly_rate Float
    compute='_get_current_hourly_rate' string='Hourly Rate'
  • hourly_rate_class_id Many2one → hr.hourly.rate.class
    string='Hourly Rate Class' args: 'hr.hourly.rate.class'
Public methods (0)

No public methods.

New fields (4)
  • class_id Many2one → hr.hourly.rate.class
    ondelete='cascade' required=True string='Salary Class' args: 'hr.hourly.rate.class'
  • date_end Date
    string='End Date'
  • date_start Date
    default=fields.Date.today() required=True string='Start Date'
  • rate Float
    required=True string='Rate'
Public methods (0)

No public methods.

New fields (3)
  • contract_job_ids One2many → hr.contract.job
    string='Contract Jobs' args: 'hr.contract.job', 'hourly_rate_class_id'
  • line_ids One2many → hr.hourly.rate
    string='Hourly Rates' args: 'hr.hourly.rate', 'class_id'
  • name Char
    index=True required=True string='Class Name'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/8.0/hr_contract_hourly_rate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Human Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Fekete Mihai (Forest and Biomass Services Romania), Savoir-faire Linux
COMMITTERS
COMMITTERSStéphane Bidoul, Fekete Mihai, Stéphane Bidoul (ACSONE), Alex Comba, OCA Transbot, dufresnedavid, David Dufresne, oca-travis, Weblate
WEBSITE
WEBSITEhttps://www.savoirfairelinux.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/hr:
    - hr_contract_multi_jobs
odoo/odoo:
    - hr_contract
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - hr
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
hr_contract_view_form hr.contract.view.form hr.contract field Inherits hr_contract_multi_jobs.hr_contract_view_form
view_hr_hourly_rate_class_filter Hourly Rate Classes hr.hourly.rate.class search New
view_hr_hourly_rate_class_form hr.hourly.rate.class.form hr.hourly.rate.class form New
view_hr_hourly_rate_class_tree hr.hourly.rate.class.tree hr.hourly.rate.class tree New
Models touched (4)

New fields (1)
  • salary_computation_method Selection
    default='monthly' help='Whether to use the annual wage or an hourly rate for computation of payslip.' required=True string='Salary Computation Method' args: [('yearly', 'Annual Wage'), ('monthly', 'Monthly Wage'), ('hourly', 'Hourly Wage')]
Public methods (1)
  • get_job_hourly_rate(self, date_from, date_to, job_id=False, main_job=False)
    @api.multi
    Get the hourly rate related to a job on a contract for a given interval of time (date_from, date_to) 2 cases: get the hourly rate - related to a given job position id (job_id == int) - related to the main job on the contract (main_job == True) This function is intended to be used on payslip worked days to fill the hourly_rate field. If no rate completely overlap the given period (date_from, date_to), False is returned and the hourly rate must then be entered manually.

New fields (2)
  • hourly_rate Float
    compute='_get_current_hourly_rate' string='Hourly Rate'
  • hourly_rate_class_id Many2one → hr.hourly.rate.class
    string='Hourly Rate Class' args: 'hr.hourly.rate.class'
Public methods (0)

No public methods.

New fields (4)
  • class_id Many2one → hr.hourly.rate.class
    ondelete='cascade' required=True string='Salary Class' args: 'hr.hourly.rate.class'
  • date_end Date
    string='End Date'
  • date_start Date
    default=fields.Date.today() required=True string='Start Date'
  • rate Float
    required=True string='Rate'
Public methods (0)

No public methods.

New fields (3)
  • contract_job_ids One2many → hr.contract.job
    string='Contract Jobs' args: 'hr.contract.job', 'hourly_rate_class_id'
  • line_ids One2many → hr.hourly.rate
    string='Hourly Rates' args: 'hr.hourly.rate', 'class_id'
  • name Char
    index=True required=True string='Class Name'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/7.0/hr_contract_hourly_rate
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Human Resources
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Savoir-faire Linux
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Savoir-faire Linux
COMMITTERS
COMMITTERSAlexandre Fayolle, Stéphane Bidoul (ACSONE), OCA Transbot, Rudolf Schnapka, dufresnedavid, Maxime Chambreuil - http://www.savoirfairelinux.com
WEBSITE
WEBSITEhttps://www.savoirfairelinux.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/hr:
    - hr_contract_multi_jobs
odoo/odoo:
    - hr_contract
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - process
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Contract Hourly Rate
====================
The objective of this module is to manage employee hourly rates. Annual wage
is still possible. On the contract, the field salary_computation_method allows
to choose between hourly rate and annual wage.

Each contract job belongs to an hourly rate class if the employee is paid
by hourly rates. This allows to manage hourly rate increments over the years
for multiple employees at the same time.

Contributors
------------
* David Dufresne <david.dufresne@savoirfairelinux.com>
* Pierre Lamarche <pierre.lamarche@savoirfairelinux.com>

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
hr_contract_view_form hr.contract.view.form hr.contract field Inherits hr_contract_multi_jobs.hr_contract_view_form
view_hr_hourly_rate_class_filter Hourly Rate Classes hr.hourly.rate.class search New
view_hr_hourly_rate_class_form hr.hourly.rate.class.form hr.hourly.rate.class form New
view_hr_hourly_rate_class_tree hr.hourly.rate.class.tree hr.hourly.rate.class tree New
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • get_job_hourly_rate(self, cr, uid, date_from, date_to, contract_id, job_id=False, main_job=False, context=None)
    Get the hourly rate related to a job on a contract for a given interval of time (date_from, date_to) 2 cases: get the hourly rate - related to a given job position id (job_id == int) - related to the main job on the contract (main_job == True) This function is intended to be used on payslip worked days to fill the hourly_rate field. If no rate completely overlap the given period (date_from, date_to), False is returned and the hourly rate must then be entered manually.

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.