Tower: upload tk_construction_management 18.0.2.0.8 (was 18.0.2.0.8, via marketplace)

This commit is contained in:
2026-05-08 19:20:12 +00:00
parent c412640ca2
commit 63c62699f5
174 changed files with 44759 additions and 0 deletions

View 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