Tower: upload tk_construction_management 18.0.2.0.8 (was 18.0.2.0.8, via marketplace)
This commit is contained in:
66
addons/tk_construction_management/wizard/project_wbs.py
Normal file
66
addons/tk_construction_management/wizard/project_wbs.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class ProjectWBS(models.TransientModel):
|
||||
_name = 'project.wbs'
|
||||
_description = "Sub Project WBS"
|
||||
|
||||
name = fields.Char(string="Title")
|
||||
work_type_ids = fields.Many2many('job.type', string="Work Type Jobs", compute="compute_work_type_ids")
|
||||
activity_id = fields.Many2one('job.type', string="Work Type", domain="[('id','in',work_type_ids)]")
|
||||
start_date = fields.Date(string="Start Date")
|
||||
end_date = fields.Date(string="End Date")
|
||||
sub_project_id = fields.Many2one('tk.construction.project', string="Sub Project")
|
||||
project_start_date = fields.Date(related="sub_project_id.start_date", store=True)
|
||||
project_end_date = fields.Date(related="sub_project_id.end_date", store=True)
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
res = super(ProjectWBS, self).default_get(fields)
|
||||
active_id = self._context.get('active_id')
|
||||
res['sub_project_id'] = active_id
|
||||
return res
|
||||
|
||||
def action_create_project_phase(self):
|
||||
active_id = self._context.get('active_id')
|
||||
sub_project_id = self.env['tk.construction.project'].browse(active_id)
|
||||
phase_id = self.env['job.costing'].create({
|
||||
'title': self.name,
|
||||
'activity_id': self.activity_id.id,
|
||||
'create_date': self.start_date,
|
||||
'close_date': self.end_date,
|
||||
'site_id': sub_project_id.construction_site_id.id,
|
||||
'project_id': sub_project_id.id,
|
||||
'department_id': sub_project_id.department_id.id,
|
||||
'manager_ids': sub_project_id.manager_ids.ids,
|
||||
'user_id': sub_project_id.user_id.id
|
||||
})
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('Project Phase(WBS)'),
|
||||
'res_model': 'job.costing',
|
||||
'res_id': phase_id.id,
|
||||
'view_mode': 'form',
|
||||
'target': 'current'
|
||||
}
|
||||
|
||||
@api.constrains('project_start_date', 'project_end_date', 'start_date')
|
||||
def _check_wbs_start_date(self):
|
||||
for record in self:
|
||||
if record.project_start_date and record.project_end_date:
|
||||
if not record.project_start_date <= record.start_date <= record.project_end_date:
|
||||
raise ValidationError("Invalid start date. Must be within sub project start and end dates.")
|
||||
|
||||
@api.constrains('start_date', 'project_end_date', 'end_date')
|
||||
def _check_wbs_end_date(self):
|
||||
for record in self:
|
||||
if record.start_date and record.project_end_date:
|
||||
if not record.project_end_date >= record.end_date > record.start_date:
|
||||
raise ValidationError(
|
||||
"Invalid end date. Must be within start date and sub project end date.")
|
||||
|
||||
@api.depends('activity_id', 'sub_project_id')
|
||||
def compute_work_type_ids(self):
|
||||
ids = self.sub_project_id.boq_budget_ids.mapped('activity_id').mapped('id')
|
||||
self.work_type_ids = ids
|
||||
Reference in New Issue
Block a user