Project Task Ancestor

project_task_ancestor
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/19.0/project_task_ancestor
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYServices/Project
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Moduon
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Moduon
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David Vidal, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_timesheet
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
    - hr_hourly_cost
    - analytic
    - uom
    - project
    - rating
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
For some companies, having ancestor tasks is essential for structuring 
and organizing their work.
However, in version 18, Odoo removed this feature, considering it unnecessary.

This module restores the ancestor task field with its associated logic, 
making it available again in Timesheets and Project reports.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_analytic_line_filter account.analytic.line field Inherits analytic.view_account_analytic_line_filter
view_task_search_form project.task field Inherits project.view_task_search_form
Models touched (4)

New fields (1)
  • ancestor_task_id Many2one → project.task
    comodel_name='project.task' index='btree_not_null' related='task_id.ancestor_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • ancestor_id Many2one → project.task
    comodel_name='project.task' compute='_compute_ancestor_id' index='btree_not_null' recursive=True store=True string='Ancestor Task'
Public methods (0)

No public methods.

New fields (1)
  • ancestor_id Many2one → project.task
    comodel_name='project.task' readonly=True string='Ancestor Task'
Public methods (0)

No public methods.

New fields (1)
  • ancestor_task_id Many2one → project.task
    comodel_name='project.task' readonly=True string='Ancestor Task'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/18.0/project_task_ancestor
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYServices/Project
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Moduon
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Moduon
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Andrii Kompaniiets
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr_timesheet
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
    - hr_hourly_cost
    - analytic
    - uom
    - project
    - rating
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
For some companies, having ancestor tasks is essential for structuring 
and organizing their work.
However, in version 18, Odoo removed this feature, considering it unnecessary.

This module restores the ancestor task field with its associated logic, 
making it available again in Timesheets and Project reports.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_analytic_line_filter account.analytic.line field Inherits analytic.view_account_analytic_line_filter
view_task_search_form project.task field Inherits project.view_task_search_form
Models touched (4)

New fields (1)
  • ancestor_task_id Many2one → project.task
    comodel_name='project.task' index='btree_not_null' related='task_id.ancestor_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • ancestor_id Many2one → project.task
    comodel_name='project.task' compute='_compute_ancestor_id' index='btree_not_null' recursive=True store=True string='Ancestor Task'
Public methods (0)

No public methods.

New fields (1)
  • ancestor_id Many2one → project.task
    comodel_name='project.task' readonly=True string='Ancestor Task'
Public methods (0)

No public methods.

New fields (1)
  • ancestor_task_id Many2one → project.task
    comodel_name='project.task' readonly=True string='Ancestor Task'
Public methods (0)

No public methods.