Project classification (easy hierarchy and setup for project managers)

project_classification
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/10.0/project_classification
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Projects & Services
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/project:
    - project_analytic_line_view
odoo/odoo:
    - project
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - resource
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
edit_project project.project.form project.project xpath Inherits project.edit_project
view_account_analytic_account_tree project.project.tree project.project tree New
view_project project.project.tree project.project xpath Inherits project.view_project
view_project_classification_form project.classification.form project.classification form New
view_project_classification_list project.classification.list project.classification tree New
view_project_project_filter project.project.select project.project xpath Inherits project.view_project_project_filter
Models touched (2)

New fields (6)
  • currency_id Many2one → res.currency
    args: 'res.currency', 'Currency'
  • name Char
    required=True args: 'Classification Name'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'sale')] args: 'product.pricelist', 'Sale Pricelist'
  • project_id Many2one → account.analytic.account
    help='The parent project that will be set when choosing this classification in a project.' required=True args: 'account.analytic.account', 'Parent project'
  • to_invoice Many2one → hr_timesheet_invoice.factor
    help='Fill this field if you plan to automatically generate invoices based on the costs in this classification' args: 'hr_timesheet_invoice.factor', 'Reinvoice Costs'
  • user_id Many2one → res.users
    args: 'res.users', 'Account Manager'
Public methods (0)

No public methods.

New fields (2)
  • child_project_complete_ids Many2many → project.project
    compute='_child_project_compute' string='Project Hierarchy' args: 'project.project'
  • classification_id Many2one → project.classification
    help='This will automatically set the parent project as well as other default values defined for this kind of project (like pricelist, invoice factor,..)' required=False args: 'project.classification', 'Classification'
Public methods (1)
  • onchange_classification_id(self, classification_id)
    @api.multi
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/9.0/project_classification
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Projects & Services
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/project:
    - project_analytic_line_view
odoo/odoo:
    - project
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - portal
    - auth_signup
    - resource
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
edit_project project.project.form project.project xpath Inherits project.edit_project
view_account_analytic_account_tree project.project.tree project.project tree New
view_project project.project.tree project.project xpath Inherits project.view_project
view_project_classification_form project.classification.form project.classification form New
view_project_classification_list project.classification.list project.classification tree New
view_project_project_filter project.project.select project.project xpath Inherits project.view_project_project_filter
Models touched (2)

New fields (6)
  • currency_id Many2one → res.currency
    args: 'res.currency', 'Currency'
  • name Char
    required=True args: 'Classification Name'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'sale')] args: 'product.pricelist', 'Sale Pricelist'
  • project_id Many2one → account.analytic.account
    help='The parent project that will be set when choosing this classification in a project.' required=True args: 'account.analytic.account', 'Parent project'
  • to_invoice Many2one → hr_timesheet_invoice.factor
    help='Fill this field if you plan to automatically generate invoices based on the costs in this classification' args: 'hr_timesheet_invoice.factor', 'Reinvoice Costs'
  • user_id Many2one → res.users
    args: 'res.users', 'Account Manager'
Public methods (0)

No public methods.

New fields (2)
  • child_project_complete_ids Many2many → project.project
    compute='_child_project_compute' string='Project Hierarchy' args: 'project.project'
  • classification_id Many2one → project.classification
    help='This will automatically set the parent project as well as other default values defined for this kind of project (like pricelist, invoice factor,..)' required=False args: 'project.classification', 'Classification'
Public methods (1)
  • onchange_classification_id(self, classification_id)
    @api.multi
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/8.0/project_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Projects & Services
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Daniel Reis, Stéphane Bidoul (ACSONE), OCA Transbot, Damien Crier, Charbel Jacquin, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/project:
    - project_analytic_line_view
odoo/odoo:
    - project
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - resource
    - hr_timesheet_invoice
    - account
    - edi
    - email_template
    - hr_timesheet
    - hr
    - hr_attendance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
edit_project project.project.form project.project xpath Inherits project.edit_project
view_account_analytic_account_tree project.project.tree project.project tree New
view_project project.project.tree project.project xpath Inherits project.view_project
view_project_classification_form project.classification.form project.classification form New
view_project_classification_list project.classification.list project.classification tree New
view_project_project_filter project.project.select project.project xpath Inherits project.view_project_project_filter
Models touched (2)

New fields (6)
  • currency_id Many2one → res.currency
    args: 'res.currency', 'Currency'
  • name Char
    required=True args: 'Classification Name'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'sale')] args: 'product.pricelist', 'Sale Pricelist'
  • project_id Many2one → account.analytic.account
    help='The parent project that will be set when choosing this classification in a project.' required=True args: 'account.analytic.account', 'Parent project'
  • to_invoice Many2one → hr_timesheet_invoice.factor
    help='Fill this field if you plan to automatically generate invoices based on the costs in this classification' args: 'hr_timesheet_invoice.factor', 'Reinvoice Costs'
  • user_id Many2one → res.users
    args: 'res.users', 'Account Manager'
Public methods (0)

No public methods.

New fields (2)
  • child_project_complete_ids Many2many → project.project
    compute='_child_project_compute' string='Project Hierarchy' args: 'project.project'
  • classification_id Many2one → project.classification
    help='This will automatically set the parent project as well as other default values defined for this kind of project (like pricelist, invoice factor,..)' required=False args: 'project.classification', 'Classification'
Public methods (1)
  • onchange_classification_id(self, classification_id)
    @api.multi
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/7.0/project_classification
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Projects & Services
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSYannick Vaucher, Alexandre Fayolle, Daniel Reis, moylop260, Dmytro Katyukha
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - base_setup
    - base
    - web_kanban
    - web
    - base_status
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - resource
    - hr_timesheet_invoice
    - account
    - edi
    - email_template
    - hr_timesheet
    - hr
    - hr_attendance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

This Module allow you to setup different project classification
to ease the data entry of new project. The parent project
will be set as readonly to forbid users to change it.
The parent is still available through the analytic account object.
This is useful because this way, project manager will setup correctly
the analytical account just by choosing the corresponing classification.

A project classification is composed by :

 * A name
 * An Analytic Account which represent the parent project to set
 * An optional Invoice factor
 * An optional Account Manager
 * An optional Pricelist
 * An optional Currency

Those values will be set on a project when selecting a classification.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
edit_project project.project.form project.project xpath Inherits project.edit_project
view_account_analytic_account_tree project.project.tree project.project tree New
view_project project.project.tree project.project xpath Inherits project.view_project
view_project_classification_form project.classification.form project.classification form New
view_project_classification_list project.classification.list project.classification tree New
view_project_project_filter project.project.select project.project xpath Inherits project.view_project_project_filter
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • onchange_classification_id(self, cr, uid, ids, classification_id)
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/6.1/project_classification
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Projects & Services
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSAlexandre Fayolle, Joël Grand-Guillaume
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - mail
    - base_tools
    - resource
    - hr_timesheet_invoice
    - account
    - edi
    - email_template
    - hr_timesheet
    - hr
    - hr_attendance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
    
This Module allow you to setup different project classification to ease the data entry of
new project. The parent project will be set as readonly to forbid users to change it.
The parent is still available through the analytic account object. This is useful because
this way, project manager will setup correctly the analytical account just by choosing the
corresponing classification.

A project classification is composed by :

 * A name
 * An Analytic Account which represent the parent project to set
 * An optional Invoice factor
 * An optional Account Manager
 * An optional Pricelist
 * An optional Currency
 
Those values will be set on a project when selecting a classification.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
edit_project project.project.form project.project xpath Inherits project.edit_project
view_account_analytic_account_tree project.project.tree project.project tree New
view_project project.project.tree project.project xpath Inherits project.view_project
view_project_classification_form project.classification.form project.classification form New
view_project_classification_list project.classification.list project.classification tree New
view_project_project_filter project.project.select project.project xpath Inherits project.view_project_project_filter
Models touched (0)

No models found for this module.