bemade-addons/sale_project_task_template/models/sale_order_line.py
2025-02-26 10:12:33 -05:00

49 lines
1.9 KiB
Python

from odoo import _, api, models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
def _timesheet_create_task(self, project):
"""Override to use template if available, otherwise fall back to standard creation."""
if not self.product_id.task_template_id:
return super()._timesheet_create_task(project)
template = self.product_id.task_template_id
task = template.create_task_from_self(
project=project,
name=f"{self.order_id.name}: {template.name}",
)
# If template has a partner, keep it, otherwise use SO partner
if not task.partner_id:
task.partner_id = self.order_id.partner_id.id
self.write({"task_id": task.id})
# Post message on task
task_msg = _(
"This task has been created from: %s (%s)",
self.order_id._get_html_link(),
self.product_id.name,
)
task.message_post(body=task_msg)
return task
def _timesheet_create_task_prepare_values(self, project):
"""Override to use template values if available."""
values = super()._timesheet_create_task_prepare_values(project)
if self.product_id.task_template_id:
template = self.product_id.task_template_id
values.update(
{
"description": template.description
or values.get("description", ""),
"allocated_hours": template.allocated_hours
or values.get("allocated_hours", 0.0),
"user_ids": (
[(6, 0, template.assignee_ids.ids)]
if template.assignee_ids
else values.get("user_ids", False)
),
"partner_id": template.partner_id.id if template.partner_id else values.get("partner_id", False),
}
)
return values