35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, _
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class ProjectTask(models.Model):
|
|
_inherit = "project.task"
|
|
|
|
procurement_id = fields.Many2one('procurement.order', 'Procurement', ondelete='set null')
|
|
sale_line_id = fields.Many2one('sale.order.line', 'Sales Order Line', related='procurement_id.sale_line_id', store=True)
|
|
|
|
@api.multi
|
|
def unlink(self):
|
|
if any(task.sale_line_id for task in self):
|
|
raise ValidationError(_('You cannot delete a task related to a Sale Order. You can only archive this task.'))
|
|
return super(ProjectTask, self).unlink()
|
|
|
|
@api.multi
|
|
def action_view_so(self):
|
|
self.ensure_one()
|
|
return {
|
|
"type": "ir.actions.act_window",
|
|
"res_model": "sale.order",
|
|
"views": [[False, "form"]],
|
|
"res_id": self.sale_line_id.order_id.id,
|
|
"context": {"create": False, "show_sale": True},
|
|
}
|
|
|
|
@api.onchange('parent_id')
|
|
def onchange_parent_id(self):
|
|
self.procurement_id = self.parent_id.procurement_id.id
|
|
self.sale_line_id = self.parent_id.sale_line_id.id
|