[FIX] sale_timesheet: default_service_policy not working in product form
Before this commit: - There is a bug in odoo enterprise. project.project form view > invoicing notebook > services created using create and edit should be configured by default with an 'invoicing policy' set to 'based on timesheets'. Technically, while we're using 'default_service_policy' with the right value, we're getting a different value in the form. After this commit: - The bug is fixed. closes odoo/odoo#134552 X-original-commit: 6bb68d9f3263c2154eb87ec22559d142e880c084 Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com> Signed-off-by: Abderraouf Ghrissi (abgh) <abgh@odoo.com>
This commit is contained in:
@@ -194,6 +194,12 @@ class ProductProduct(models.Model):
|
||||
elif self.service_tracking in ['task_in_project', 'project_only']:
|
||||
self.project_id = False
|
||||
|
||||
def _inverse_service_policy(self):
|
||||
for product in self:
|
||||
if product.service_policy:
|
||||
|
||||
product.invoice_policy, product.service_type = self.product_tmpl_id._get_service_to_general(product.service_policy)
|
||||
|
||||
@api.onchange('type')
|
||||
def _onchange_type(self):
|
||||
res = super(ProductProduct, self)._onchange_type()
|
||||
|
||||
@@ -147,7 +147,7 @@ class ProductProduct(models.Model):
|
||||
|
||||
@api.onchange('service_policy')
|
||||
def _onchange_service_policy(self):
|
||||
self.product_tmpl_id._inverse_service_policy()
|
||||
self._inverse_service_policy()
|
||||
vals = self.product_tmpl_id._get_onchange_service_policy_updates(self.service_tracking,
|
||||
self.service_policy,
|
||||
self.project_id,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from odoo import Command
|
||||
from .common import TestCommonSaleTimesheet
|
||||
from odoo.tests import tagged
|
||||
from odoo.tests import tagged, Form
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
@@ -176,3 +176,7 @@ class TestProject(TestCommonSaleTimesheet):
|
||||
})
|
||||
|
||||
self.assertEqual(self.project_global.analytic_account_balance, expected_analytic_account_balance)
|
||||
|
||||
def test_open_product_form_with_default_service_policy(self):
|
||||
form = Form(self.env['product.product'].with_context(default_detailed_type='service', default_service_policy='delivered_timesheet'))
|
||||
self.assertEqual('delivered_timesheet', form.service_policy)
|
||||
|
||||
Reference in New Issue
Block a user