1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/documents_project_sale/models/sale_order.py
2024-12-10 09:04:09 +07:00

45 lines
1.9 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import defaultdict
from odoo import models
class SaleOrder(models.Model):
_inherit = 'sale.order'
def _action_confirm(self):
res = super()._action_confirm()
projects_without_template = self.env['project.project']
for order in self:
sols_per_project = defaultdict(lambda: self.env['sale.order.line'])
for sol in order.order_line:
if sol.project_id:
sols_per_project[sol.project_id] |= sol
for project, sols in sols_per_project.items():
if not project.use_documents or project.documents_folder_id:
continue
template_folders = sols.product_template_id.template_folder_id
project_sudo = project.sudo()
if len(template_folders) > 1:
project_sudo.documents_folder_id = template_folders.sudo()._copy_and_merge({
'name': project.name,
'company_id': project.company_id.id,
})
# It is necessary to set the parent after the copy to avoid
# infinite recursion issues.
project_sudo.documents_folder_id.parent_folder_id = self.env.ref('documents_project.documents_project_folder').id
elif len(template_folders) == 1:
project_sudo.documents_folder_id = template_folders.sudo().copy({
'name': project.name,
'company_id': project.company_id.id,
'parent_folder_id': template_folders.parent_folder_id.id,
})
else:
projects_without_template |= project
projects_without_template._create_missing_folders()
return res