HR Payroll Period

hr_period
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/14.0/hr_period
VERSION
VERSION 1.0.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
COMMITTERSEnric Tobella, OCA Transbot, Weblate, OCA-git-bot, oca-ci, Juany Davila
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/payroll:
    - hr_payroll_period
    - payroll
OCA/server-ux:
    - date_range
odoo/odoo:
    - hr_contract
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - hr_holidays
    - calendar
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/12.0/hr_period
VERSION
VERSION 1.0.1
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
COMMITTERSmreficent, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-ux:
    - date_range
odoo/odoo:
    - hr_payroll
    - 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 (15)
XML IDNameModelTypeStatus
hr_payslip_run_filter hr.payslip.run.period.search hr.payslip.run field Inherits hr_payroll.hr_payslip_run_filter
hr_payslip_run_form hr.payslip.run.period.form hr.payslip.run field Inherits hr_payroll.hr_payslip_run_form
hr_payslip_run_tree hr.payslip.run.period.tree hr.payslip.run field Inherits hr_payroll.hr_payslip_run_tree
view_date_range_type_hr_form_view date.range.type.hr.form date.range.type form New
view_date_range_type_hr_tree date.range.type.hr.tree date.range.type tree New
view_hr_fiscalyear_form hr.fiscalyear.form hr.fiscalyear form New
view_hr_fiscalyear_search hr.fiscalyear.search hr.fiscalyear search New
view_hr_fiscalyear_tree hr.fiscalyear.tree hr.fiscalyear tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees field Inherits hr_payroll.view_hr_payslip_by_employees
view_hr_payslip_filter hr.payslip.period.select hr.payslip field Inherits hr_payroll.view_hr_payslip_filter
view_hr_payslip_form hr.payslip.period.form hr.payslip label Inherits hr_payroll.view_hr_payslip_form
view_hr_payslip_tree hr.payslip.period.tree hr.payslip field Inherits hr_payroll.view_hr_payslip_tree
view_hr_period_form hr.period.form hr.period form New
view_hr_period_search hr.period.search hr.period search New
view_hr_period_tree hr.period.tree hr.period tree New
Models touched (8)

New fields (2)
  • hr_fiscal_year Boolean
    string='Is HR Fiscal Year?'
  • hr_period Boolean
    string='Is HR period?'
Public methods (0)

No public methods.

New fields (1)
  • schedule_pay Selection
    index=True oldname='shedule_pay' args: get_schedules, 'Scheduled Pay'
Public methods (0)

No public methods.

New fields (1)
  • contract_id Many2one
    search='_search_contract'
Public methods (0)

No public methods.

New fields (7)
  • payment_day Selection
    states={'draft': [('readonly', False)]} args: get_payment_days, 'Day of Payment'
  • payment_week Selection
    states={'draft': [('readonly', False)]} args: [('0', 'Same Week'), ('1', 'Following Week'), ('2', 'Second Following Week')], 'Week of Payment'
  • payment_weekday Selection
    states={'draft': [('readonly', False)]} args: [('0', 'Sunday'), ('1', 'Monday'), ('2', 'Tuesday'), ('3', 'Wednesday'), ('4', 'Thursday'), ('5', 'Friday'), ('6', 'Saturday')], 'Weekday of Payment'
  • period_ids One2many → hr.period
    states={'draft': [('readonly', False)]} args: 'hr.period', 'fiscalyear_id', 'Periods'
  • schedule_pay Selection
    default='monthly' required=True states={'draft': [('readonly', False)]} args: get_schedules, 'Scheduled Pay'
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('open', 'Open'), ('done', 'Closed')], 'Status'
  • type_id Many2one
    default=_default_type domain=[('hr_fiscal_year', '=', True)]
Public methods (7)
  • button_confirm(self)
    @api.multi
  • button_set_to_draft(self)
    @api.multi
  • create_periods(self)
    @api.multi
    Create every periods a payroll fiscal year
  • get_generator_vals(self)
    @api.model
  • get_ranges(self)
    @api.multi
  • onchange_schedule(self)
    @api.multi@api.onchange('schedule_pay', 'date_start')
  • search_period(self, number)
    @api.multi

New fields (2)
  • date_payment Date
    readonly=True states={'draft': [('readonly', False)]} args: 'Date of Payment'
  • hr_period_id Many2one → hr.period
    readonly=True states={'draft': [('readonly', False)]} string='Period' args: 'hr.period'
Public methods (4)
  • create(self, vals)
    @api.model
  • onchange_company_id(self)
    @api.onchange('company_id', 'contract_id')
  • onchange_contract_period(self)
    @api.multi@api.onchange('contract_id')
  • onchange_hr_period_id(self)
    @api.onchange('hr_period_id')

New fields (2)
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • schedule_pay Selection
    readonly=True args: get_schedules, 'Scheduled Pay'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> states={'close': [('readonly', True)]} args: 'res.company', 'Company'
  • date_payment Date
    states={'close': [('readonly', True)]} args: 'Date of Payment'
  • hr_period_id Many2one → hr.period
    states={'close': [('readonly', True)]} string='Period' args: 'hr.period'
  • name Char
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} args: 'Name'
  • schedule_pay Selection
    states={'close': [('readonly', True)]} args: get_schedules, 'Scheduled Pay'
Public methods (8)
  • close_payslip_run(self)
    @api.multi
  • create(self, vals)
    @api.model
    Keep compatibility between modules
  • draft_payslip_run(self)
    @api.multi
  • get_default_schedule(self, company_id)
    @api.model
  • get_payslip_employees_wizard(self)
    @api.multi
    Replace the static action used to call the wizard
  • onchange_company_id(self)
    @api.multi@api.onchange('company_id', 'schedule_pay')
  • onchange_period_id(self)
    @api.onchange('hr_period_id')
  • update_periods(self)
    @api.multi

New fields (9)
  • company_id Many2one → res.company
    readonly=True related='fiscalyear_id.company_id' states={'draft': [('readonly', False)]} store=True string='Company' args: 'res.company'
  • date_payment Date
    required=True states={'draft': [('readonly', False)]} args: 'Date of Payment'
  • fiscalyear_id Many2one → hr.fiscalyear
    ondelete='cascade' required=True states={'draft': [('readonly', False)]} args: 'hr.fiscalyear', 'Fiscal Year'
  • name Char
    required=True states={'draft': [('readonly', False)]} args: 'Name'
  • number Integer
    required=True states={'draft': [('readonly', False)]} args: 'Number'
  • payslip_ids One2many → hr.payslip
    readonly=True args: 'hr.payslip', 'hr_period_id', 'Payslips'
  • schedule_pay Selection
    readonly=True required=True states={'draft': [('readonly', False)]} args: get_schedules, 'Scheduled Pay'
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('open', 'Open'), ('done', 'Closed')], 'Status'
  • type_id Many2one
    default=_default_type domain=[('hr_period', '=', True)]
Public methods (5)
  • button_close(self)
    @api.multi
  • button_open(self)
    @api.multi
  • button_re_open(self)
    @api.multi
  • button_set_to_draft(self)
    @api.multi
  • get_next_period(self, company_id, schedule_pay)
    @api.model
    Get the next payroll period to process :rtype: hr.period browse record
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/10.0/hr_period
VERSION
VERSION 1.2.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
COMMITTERSGitHub, mreficent, Luis Torres, OCA Transbot, oca-travis, OCA-git-bot, aheficent, Iryna Vyshnevska, aaron, Iryna Vushnevska
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - date_range
odoo/odoo:
    - hr_payroll
    - 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

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
hr_payslip_run_filter hr.payslip.run.period.search hr.payslip.run field Inherits hr_payroll.hr_payslip_run_filter
hr_payslip_run_form hr.payslip.run.period.form hr.payslip.run field Inherits hr_payroll.hr_payslip_run_form
hr_payslip_run_tree hr.payslip.run.period.tree hr.payslip.run field Inherits hr_payroll.hr_payslip_run_tree
view_date_range_type_hr_form_view date.range.type.hr.form date.range.type form New
view_date_range_type_hr_tree date.range.type.hr.tree date.range.type tree New
view_hr_fiscalyear_form hr.fiscalyear.form hr.fiscalyear form New
view_hr_fiscalyear_search hr.fiscalyear.search hr.fiscalyear search New
view_hr_fiscalyear_tree hr.fiscalyear.tree hr.fiscalyear tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees field Inherits hr_payroll.view_hr_payslip_by_employees
view_hr_payslip_filter hr.payslip.period.select hr.payslip field Inherits hr_payroll.view_hr_payslip_filter
view_hr_payslip_form hr.payslip.period.form hr.payslip label Inherits hr_payroll.view_hr_payslip_form
view_hr_payslip_tree hr.payslip.period.tree hr.payslip field Inherits hr_payroll.view_hr_payslip_tree
view_hr_period_form hr.period.form hr.period form New
view_hr_period_search hr.period.search hr.period search New
view_hr_period_tree hr.period.tree hr.period tree New
Models touched (8)

New fields (2)
  • hr_fiscal_year Boolean
    string='Is HR Fiscal Year?'
  • hr_period Boolean
    string='Is HR period?'
Public methods (0)

No public methods.

New fields (1)
  • schedule_pay Selection
    index=True oldname='shedule_pay' args: get_schedules, 'Scheduled Pay'
Public methods (0)

No public methods.

New fields (1)
  • contract_id Many2one
    search='_search_contract'
Public methods (0)

No public methods.

New fields (7)
  • payment_day Selection
    states={'draft': [('readonly', False)]} args: get_payment_days, 'Day of Payment'
  • payment_week Selection
    states={'draft': [('readonly', False)]} args: [('0', 'Same Week'), ('1', 'Following Week'), ('2', 'Second Following Week')], 'Week of Payment'
  • payment_weekday Selection
    states={'draft': [('readonly', False)]} args: [('0', 'Sunday'), ('1', 'Monday'), ('2', 'Tuesday'), ('3', 'Wednesday'), ('4', 'Thursday'), ('5', 'Friday'), ('6', 'Saturday')], 'Day of Payment'
  • period_ids One2many → hr.period
    states={'draft': [('readonly', False)]} args: 'hr.period', 'fiscalyear_id', 'Periods'
  • schedule_pay Selection
    default='monthly' required=True states={'draft': [('readonly', False)]} args: get_schedules, 'Scheduled Pay'
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('open', 'Open'), ('done', 'Closed')], 'Status'
  • type_id Many2one
    default=_default_type domain=[('hr_fiscal_year', '=', True)]
Public methods (7)
  • button_confirm(self)
    @api.multi
  • button_set_to_draft(self)
    @api.multi
  • create_periods(self)
    @api.multi
    Create every periods a payroll fiscal year
  • get_generator_vals(self)
    @api.model
  • get_ranges(self)
    @api.multi
  • onchange_schedule(self)
    @api.multi@api.onchange('schedule_pay', 'date_start')
  • search_period(self, number)
    @api.multi

New fields (2)
  • date_payment Date
    readonly=True states={'draft': [('readonly', False)]} args: 'Date of Payment'
  • hr_period_id Many2one → hr.period
    readonly=True states={'draft': [('readonly', False)]} string='Period' args: 'hr.period'
Public methods (4)
  • create(self, vals)
    @api.model
  • onchange_company_id(self)
    @api.onchange('company_id', 'contract_id')
  • onchange_contract_period(self)
    @api.multi@api.onchange('contract_id')
  • onchange_hr_period_id(self)
    @api.onchange('hr_period_id')

New fields (2)
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • schedule_pay Selection
    readonly=True args: get_schedules, 'Scheduled Pay'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> states={'close': [('readonly', True)]} args: 'res.company', 'Company'
  • date_payment Date
    states={'close': [('readonly', True)]} args: 'Date of Payment'
  • hr_period_id Many2one → hr.period
    states={'close': [('readonly', True)]} string='Period' args: 'hr.period'
  • name Char
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} args: 'Name'
  • schedule_pay Selection
    states={'close': [('readonly', True)]} args: get_schedules, 'Scheduled Pay'
Public methods (8)
  • close_payslip_run(self)
    @api.multi
  • create(self, vals)
    @api.model
    Keep compatibility between modules
  • draft_payslip_run(self)
    @api.multi
  • get_default_schedule(self, company_id)
    @api.model
  • get_payslip_employees_wizard(self)
    @api.multi
    Replace the static action used to call the wizard
  • onchange_company_id(self)
    @api.multi@api.onchange('company_id', 'schedule_pay')
  • onchange_period_id(self)
    @api.onchange('hr_period_id')
  • update_periods(self)
    @api.multi

New fields (10)
  • company_id Many2one → res.company
    readonly=True related='fiscalyear_id.company_id' states={'draft': [('readonly', False)]} store=True string='Company' args: 'res.company'
  • date_payment Date
    required=True states={'draft': [('readonly', False)]} args: 'Date of Payment'
  • fiscalyear_id Many2one → hr.fiscalyear
    ondelete='cascade' required=True states={'draft': [('readonly', False)]} args: 'hr.fiscalyear', 'Fiscal Year'
  • name Char
    required=True states={'draft': [('readonly', False)]} args: 'Name'
  • number Integer
    required=True states={'draft': [('readonly', False)]} args: 'Number'
  • parent_id Many2one → hr.period
    comodel_name='hr.period' index=1 string='Parent'
  • payslip_ids One2many → hr.payslip
    readonly=True args: 'hr.payslip', 'hr_period_id', 'Payslips'
  • schedule_pay Selection
    readonly=True required=True states={'draft': [('readonly', False)]} args: get_schedules, 'Scheduled Pay'
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('open', 'Open'), ('done', 'Closed')], 'Status'
  • type_id Many2one
    default=_default_type domain=[('hr_period', '=', True)]
Public methods (5)
  • button_close(self)
    @api.multi
  • button_open(self)
    @api.multi
  • button_re_open(self)
    @api.multi
  • button_set_to_draft(self)
    @api.multi
  • get_next_period(self, company_id, schedule_pay)
    @api.model
    Get the next payroll period to process :rtype: hr.period browse record
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/7.0/hr_period
VERSION
VERSION 1.0.1
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
COMMITTERSYannick Vaucher, OCA Transbot, dufresnedavid, jbeficent, darshan-serpent
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_payroll
    - 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
HR Payroll Period
=================
Add payroll periods

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
hr_payslip_run_filter hr.payslip.run.period.search hr.payslip.run field Inherits hr_payroll.hr_payslip_run_filter
hr_payslip_run_form hr.payslip.run.period.form hr.payslip.run h2 Inherits hr_payroll.hr_payslip_run_form
hr_payslip_run_tree hr.payslip.run.period.tree hr.payslip.run field Inherits hr_payroll.hr_payslip_run_tree
view_hr_fiscalyear_form hr.fiscalyear.form hr.fiscalyear form New
view_hr_fiscalyear_search hr.fiscalyear.search hr.fiscalyear search New
view_hr_fiscalyear_tree hr.fiscalyear.tree hr.fiscalyear tree New
view_hr_payslip_by_employees hr_payroll_payslip_employees hr.payslip.employees separator Inherits hr_payroll.view_hr_payslip_by_employees
view_hr_payslip_filter hr.payslip.period.select hr.payslip field Inherits hr_payroll.view_hr_payslip_filter
view_hr_payslip_form hr.payslip.period.form hr.payslip label Inherits hr_payroll.view_hr_payslip_form
view_hr_payslip_tree hr.payslip.period.tree hr.payslip field Inherits hr_payroll.view_hr_payslip_tree
view_hr_period_form hr.period.form hr.period form New
view_hr_period_search hr.period.search hr.period search New
view_hr_period_tree hr.period.tree hr.period tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (5)
  • button_confirm(self, cr, uid, ids, context=None)
  • button_set_to_draft(self, cr, uid, ids, context=None)
  • create_periods(self, cr, uid, ids, context=None)
    Create every periods a payroll fiscal year
  • onchange_schedule(self, cr, uid, ids, schedule_pay, date_start, context=None)
  • search_period(self, cr, uid, ids, number, context=None)

New fields (0)

No new fields.

Public methods (4)
  • create(self, cr, uid, vals, context=None)
  • onchange_company_id(self, cr, uid, ids, company_id, contract_id, context=None)
  • onchange_contract_id(self, cr, uid, ids, date_from, date_to, employee_id=False, contract_id=False, context=None)
  • onchange_hr_period_id(self, cr, uid, ids, hr_period_id, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (8)
  • close_payslip_run(self, cr, uid, ids, context=None)
  • create(self, cr, uid, vals, context=None)
    Keep compatibility between modules
  • draft_payslip_run(self, cr, uid, ids, context=None)
  • get_default_schedule(self, cr, uid, company_id, context=None)
  • get_payslip_employees_wizard(self, cr, uid, ids, context=None)
    Replace the static action used to call the wizard
  • onchange_company_id(self, cr, uid, ids, company_id, schedule_pay, context=None)
  • onchange_period_id(self, cr, uid, ids, hr_period_id, context=None)
  • update_periods(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (5)
  • button_close(self, cr, uid, ids, context=None)
  • button_open(self, cr, uid, ids, context=None)
  • button_re_open(self, cr, uid, ids, context=None)
  • button_set_to_draft(self, cr, uid, ids, context=None)
  • get_next_period(self, cr, uid, company_id, schedule_pay, context=None)
    Get the next payroll period to process :rtype: hr.period browse record