diff --git a/addons/stock_account/models/account_chart_template.py b/addons/stock_account/models/account_chart_template.py index e12931a7e72ce..0bea15728d4c1 100644 --- a/addons/stock_account/models/account_chart_template.py +++ b/addons/stock_account/models/account_chart_template.py @@ -11,9 +11,16 @@ class AccountChartTemplate(models.AbstractModel): def _post_load_data(self, template_code, company, template_data): super()._post_load_data(template_code, company, template_data) company = company or self.env.company - categ_values = {category.id: False for category in self.env['product.category'].search([])} - for fname in self.env['product.category']._get_stock_account_property_field_names(): - self.env['ir.property'].with_company(company.id)._set_multi(fname, 'product.category', categ_values, True) + fields_name = self.env['product.category']._get_stock_account_property_field_names() + account_fields = self.env['ir.model.fields'].search([('model', '=', 'product.category'), ('name', 'in', fields_name)]) + existing_props = self.env['ir.property'].sudo().search([ + ('fields_id', 'in', account_fields.ids), + ('company_id', '=', company.id), + ('res_id', '!=', False), + ]) + for fname in fields_name: + if fname in existing_props.mapped('fields_id.name'): + continue value = template_data.get(fname) if value: self.env['ir.property']._set_default(fname, 'product.category', self.ref(value).id, company=company) diff --git a/addons/stock_account/models/product.py b/addons/stock_account/models/product.py index eb8f75a8e5b79..d64f209427085 100644 --- a/addons/stock_account/models/product.py +++ b/addons/stock_account/models/product.py @@ -856,7 +856,7 @@ def write(self, vals): account_moves._post() return res + # delete in master @api.onchange('property_valuation') def onchange_property_valuation(self): - # Remove or set the account stock properties if necessary - self._check_valuation_accounts() + pass