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

39 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, models
from odoo.osv import expression
DEFAULT_INVOICED_TIMESHEET = 'all'
class SaleOrderLine(models.Model):
_name = 'sale.order.line'
_inherit = ['sale.order.line', 'timesheet.grid.mixin']
@api.depends('analytic_line_ids.validated')
def _compute_qty_delivered(self):
super(SaleOrderLine, self)._compute_qty_delivered()
def _timesheet_create_project_prepare_values(self):
"""Generate project values"""
values = super(SaleOrderLine, self)._timesheet_create_project_prepare_values()
values['allow_timesheets'] = True
return values
def _timesheet_compute_delivered_quantity_domain(self):
domain = super(SaleOrderLine, self)._timesheet_compute_delivered_quantity_domain()
# force to use only the validated timesheet
param_invoiced_timesheet = self.env['ir.config_parameter'].sudo().get_param('sale.invoiced_timesheet', DEFAULT_INVOICED_TIMESHEET)
if param_invoiced_timesheet == 'approved':
domain = expression.AND([domain, [('validated', '=', True)]])
return domain
def get_allocated_hours_field(self):
return 'product_uom_qty'
def get_worked_hours_fields(self):
return ['qty_delivered']
def get_planned_and_worked_hours_domain(self, ids):
return super().get_planned_and_worked_hours_domain(ids) + [('qty_delivered_method', 'not in', ['manual', 'milestones'])]