Repository
odoo/odoo · module folder
Module version
1.0
Category
Project
Folder size
1.98 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/page/project-management
Last tracking update
2026-08-07 04:59:45
Authors
Maintainers
None
Committers
Antony Lesuisse, Olivier Dony, Fabien Pinckaers, Raphael Collet, Christophe Simonis, Thibault Delavallée, Martin Trigaux, Odoo Translation Bot, Denis Ledoux, Simon Lejeune, David Monjoie, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, qdp-odoo, Yannick Tivisse, Denis Vermylen (dve)
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
crm_project_issue, project_categ_issue, project_double_alias, project_issue_baseuser, project_issue_code, project_issue_sheet, project_issue_task, project_sla, rating_project_issue, service_desk_issue, website_issue, website_project_issue
Description
Track Issues/Bugs Management for Projects
=========================================
This application allows you to manage the issues you might face in a project like bugs in a system, client complaints or material breakdowns.

It allows the manager to quickly check the issues, assign them and decide on their status quickly as they evolve.
    

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
analytic_account_inherited_issue_form account.analytic.account.issue.form.inherit account.analytic.account form Inherits project.analytic_account_inherited_form
project_config_settings_view_form_inherit_project_issue project.config.settings.view.form.inherit.project.issue project.config.settings form Inherits project.view_config_settings
project_feature_tree_view project.issue.tree.view.featured project.issue tree New
project_issue_calendar_view project.issue.calendar.view project.issue calendar New
project_issue_form_view project.issue.form.view project.issue form New
project_issue_graph_view project.issue.graph.view project.issue graph New
project_issue_kanban_view project.issue.kanban.view project.issue kanban New
project_issue_pivot_view project.issue.pivot.view project.issue pivot New
project_issue_tree_view project.issue.tree.view project.issue tree New
project_issue_view_kanban_inherit_no_group_create project.issue.view.kanban.inherit.no.group.create project.issue kanban Inherits project_issue.project_issue_kanban_view
project_project_view_form_simplified_inherit_issue project.project.view.form.simplified.inherit.issue project.project form Inherits project.project_project_view_form_simplified
res_partner_issues_button_view res.partner.issues.button.view.inherit res.partner form Inherits base.view_partner_form
view_project_form_inherited project.project.form.inherited project.project form Inherits project.edit_project
view_project_issue_filter project.issue.search.view project.issue search New
view_project_issue_report_filter project.issue.report.select project.issue.report search New
view_project_issue_report_graph project.issue.report.graph project.issue.report graph New
view_project_issue_report_pivot project.issue.report.pivot project.issue.report pivot New
view_project_kanban_inherited project.project.kanban.inherited project.project kanban Inherits project.view_project_kanban
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (7)

New fields (1)
  • use_issues Boolean
    help='Check this box to manage customer activities through this project' string='Use Issues'
Public methods (1)
  • unlink(self)
    @api.multi

New fields (2)
  • module_project_issue_sheet Selection
    help='Provides timesheet support for the issues/bugs management in project.\n-This installs the module project_issue_sheet.' string='Timesheets on Issues' args: [(0, 'Do not track working hours on issues'), (1, 'Activate timesheets on issues')]
  • module_rating_project_issue Selection
    help='This allows customers to give rating on issue' args: [(0, 'No customer rating'), (1, 'Track customer satisfaction on issues')], 'Rating on issue'
Public methods (0)

No public methods.

New fields (34)
  • active Boolean
    default=True
  • channel Char
    help='Communication channel.' string='Channel'
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • date Datetime
    args: 'Date'
  • date_action_last Datetime
    readonly=True string='Last Action'
  • date_action_next Datetime
    readonly=True string='Next Action'
  • date_closed Datetime
    index=True readonly=True string='Closed'
  • date_deadline Date
    string='Deadline'
  • date_last_stage_update Datetime
    default=fields.Datetime.now index=True string='Last Stage Update'
  • date_open Datetime
    index=True readonly=True string='Assigned'
  • day_close Float
    compute='_compute_day' store=True string='Days to Close'
  • day_open Float
    compute='_compute_day' store=True string='Days to Assign'
  • days_since_creation Integer
    compute='_compute_inactivity_days' help='Difference in days between creation date and current date' string='Days since creation date'
  • description Text
    args: 'Private Note'
  • duration Float
    args: 'Duration'
  • email_cc Char
    help='These email addresses will be added to the CC field of all inbound\n and outbound emails for this record before being sent. Separate multiple email addresses with a comma' string='Watchers Emails'
  • email_from Char
    help='These people will receive email.' index=True string='Email'
  • inactivity_days Integer
    compute='_compute_inactivity_days' help='Difference in days between last action and current date' string='Days since last action'
  • kanban_state Selection
    default='normal' help="An Issue's kanban state indicates special situations affecting it:\n\n * Normal is the default situation\n\n * Blocked indicates something is preventing the progress of this issue\n\n * Ready for next stage indicates the issue is ready to be pulled to the next stage" required=True string='Kanban State' track_visibility='onchange' args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
  • legend_blocked Char
    readonly=True related='stage_id.legend_blocked' string='Kanban Blocked Explanation'
  • legend_done Char
    readonly=True related='stage_id.legend_done' string='Kanban Valid Explanation'
  • legend_normal Char
    readonly=True related='stage_id.legend_normal' string='Kanban Ongoing Explanation'
  • name Char
    required=True string='Issue'
  • partner_id Many2one → res.partner
    index=True string='Contact' args: 'res.partner'
  • priority Selection
    default='0' index=True args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority'
  • project_id Many2one → project.project
    index=True string='Project' track_visibility='onchange' args: 'project.project'
  • stage_id Many2one → project.task.type
    copy=False default=_get_default_stage_id domain="[('project_ids', '=', project_id)]" group_expand='_read_group_stage_ids' index=True string='Stage' track_visibility='onchange' args: 'project.task.type'
  • tag_ids Many2many → project.tags
    string='Tags' args: 'project.tags'
  • task_id Many2one → project.task
    domain="[('project_id','=',project_id)]" help='You can link this issue to an existing task or directly create a new one from here' string='Task' args: 'project.task'
  • user_email Char
    readonly=True related='user_id.email' string='User Email'
  • user_id Many2one → res.users
    default=<expr> index=True string='Assigned to' track_visibility='onchange' args: 'res.users'
  • working_hours_close Float
    compute='_compute_day' store=True string='Working Hours to close the Issue'
  • working_hours_open Float
    compute='_compute_day' store=True string='Working Hours to assign the Issue'
Public methods (13)
  • copy(self, default=None)
    @api.multi
  • create(self, vals)
    @api.model
  • email_split(self, msg)
    @api.multi
  • get_empty_list_help(self, help)
    @api.model
  • message_get_email_values(self, notif_mail=None)
    @api.multi
  • message_get_reply_to(self, res_ids, default=None)
    @api.model
    Override to get the reply_to of the parent project.
  • message_get_suggested_recipients(self)
    @api.multi
  • message_new(self, msg, custom_values=None)
    @api.model
    Overrides mail_thread message_new that is called by the mailgateway through message_process. This override updates the document according to the email.
  • message_post(self, subtype=None, **kwargs)
    @api.multi@api.returns('mail.message', <expr>)
    Overrides mail_thread message_post so that we can set the date of last action field when a new message is posted on the issue.
  • message_update(self, msg, update_vals=None)
    @api.multi
    Override to update the issue according to the email.
  • stage_find(self, project_id, domain=None, order='sequence')
    Override of the base.stage method Parameter of the stage search taken from the issue: - project_id: if set, stages must belong to this project or be a default case
  • update_date_closed(self, stage_id)
  • write(self, vals)
    @api.multi

New fields (16)
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • create_date Datetime
    readonly=True args: 'Create Date'
  • date_closed Datetime
    readonly=True args: 'Date of Closing'
  • date_last_stage_update Datetime
    readonly=True args: 'Last Stage Update'
  • delay_close Float
    digits=(16, 2) group_operator='avg' help='Number of Days to close the project issue' readonly=True args: 'Avg. Delay to Close'
  • delay_open Float
    digits=(16, 2) group_operator='avg' help='Number of Days to open the project issue.' readonly=True args: 'Avg. Delay to Open'
  • email Integer
    readonly=True args: '# Emails'
  • nbr_issues Integer
    readonly=True args: '# of Issues'
  • opening_date Datetime
    readonly=True args: 'Date of Opening'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Contact'
  • priority Selection
    args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
  • project_id Many2one → project.project
    readonly=True args: 'project.project', 'Project'
  • stage_id Many2one → project.task.type
    args: 'project.task.type', 'Stage'
  • user_id Many2one → res.users
    readonly=True args: 'res.users', 'Assigned to'
  • working_hours_close Float
    group_operator='avg' readonly=True args: 'Avg. Working Hours to Close'
  • working_hours_open Float
    group_operator='avg' readonly=True args: 'Avg. Working Hours to Open'
Public methods (1)
  • init(self)
    @api.model_cr

New fields (5)
  • issue_count Integer
    compute='_compute_issue_count' string='Issues'
  • issue_ids One2many → project.issue
    domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)] string='Issues' args: 'project.issue', 'project_id'
  • issue_needaction_count Integer
    compute='_issue_needaction_count' string='Issues'
  • label_issues Char
    default='Issues' help='Customize the issues label, for example to call them cases.' string='Use Issues as'
  • use_issues Boolean
    default=True related='analytic_account_id.use_issues'
Public methods (1)
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • issue_count Integer
    compute='_compute_issue_count' string='# Issues'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…