We are pleased to announce our Gantt chart is now available as an add-on app to the popular Odoo platform
We would love to hear your feedback on what features you would like to see implemented!
Check it out here: https://apps.odoo.com/apps/modules/13.0/bryntum_gantt/
- Attachments
-
- view_chart_icon.png (125.65 KiB) Viewed 129 times
Tired of debugging javascript errors in web applications? Try our powerful error logging service RootCause
It depends on project (or project enterprise). This gantt solution adds some new fields based on the project model. See below our model definition. If correct you should not need to configure those fields yourself.
class Task(models.Model):
_inherit = "project.task"
planned_date_begin = fields.Datetime("Start date")
planned_date_begin_formatted = fields.Char(compute='_compute_planned_date_begin')
planned_date_end = fields.Datetime("End date")
class ProjectProject(models.Model):
_inherit = 'project.project'
project_start_date = fields.Datetime(string="Project Start Date",
default=datetime.today())
class ProjectTask(models.Model):
_inherit = 'project.task'
duration = fields.Integer(string="Duration (days)",
compute="_compute_duration", store=True)
percent_done = fields.Integer(string="Done %", default=0)
parent_index = fields.Integer(string="Parent Index", default=0)
assigned_ids = fields.Many2many('res.users', string="Assigned resources")
effort = fields.Integer(string="Effort (hours)")
gantt_calendar = fields.Selection([
('general', 'General'),
('business', 'Business'),
('night', 'Night shift')
], string="Gantt Calendar", default='general')
linked_ids = fields.One2many('project.task.linked',
inverse_name='to_id',
string='Linked')
scheduling_mode = fields.Selection([
('Normal', 'Normal'),
('FixedDuration', 'Fixed Duration'),
('FixedEffort', 'Fixed Effort'),
('FixedUnits', 'Fixed Units')
], string='Scheduling Mode')
constraint_type = fields.Selection([
('muststarton', 'Must start on'),
('mustfinishon', 'Must finish on'),
('startnoearlierthan', 'Start no earlier than'),
('startnolaterthan', 'Start no later than'),
('finishnoearlierthan', 'Finish no earlier than'),
('finishnolaterthan', 'Finish no later than')
], string='Constraint Type')
constraint_date = fields.Datetime(string="Constraint Date")
effort_driven = fields.Boolean(string="Effort Driven", default=False)
manually_scheduled = fields.Boolean(string="Manually Scheduled",
default=False)
class ProjectTaskLinked(models.Model):
_name = 'project.task.linked'
_description = 'Project Task Linked'
from_id = fields.Many2one('project.task', ondelete='cascade', string='From')
to_id = fields.Many2one('project.task', ondelete='cascade', string='To')
class ResUsers(models.Model):
_inherit = "res.users"
project_ids = fields.Many2many('project.task', string="Project")