[FIX] account, auth_signup, sale, website_sale: settings robustness
- Delete the tax corresponding to the default 'Sales Tax' - Access the Accounting settings Error since record could not be found. In the case of an `ir.config_parameter` referring to a record ID (i.e. Many2one), the deletion of this record is not propagated to the associated `ir.config_parameter`. Therefore, the system tries to access a deleted record without fallback. It's not really possible to solve it globally in a stable version, but we can manually handle these cases by providing a fallback (usually return `False`). opw-781864
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from ast import literal_eval
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
@@ -64,9 +66,16 @@ class ResConfigSettings(models.TransientModel):
|
||||
def get_values(self):
|
||||
res = super(ResConfigSettings, self).get_values()
|
||||
params = self.env['ir.config_parameter'].sudo()
|
||||
tax = self.env['account.tax'].sudo()
|
||||
default_purchase_tax_id = literal_eval(params.get_param('account.default_purchase_tax_id', default='False'))
|
||||
default_sale_tax_id = literal_eval(params.get_param('account.default_sale_tax_id', default='False'))
|
||||
if default_purchase_tax_id and not tax.browse(default_purchase_tax_id).exists():
|
||||
default_purchase_tax_id = False
|
||||
if default_sale_tax_id and not tax.browse(default_sale_tax_id).exists():
|
||||
default_sale_tax_id = False
|
||||
res.update(
|
||||
default_purchase_tax_id=int(params.get_param('account.default_purchase_tax_id', default=False)) or False,
|
||||
default_sale_tax_id=int(params.get_param('account.default_sale_tax_id', default=False)) or False
|
||||
default_purchase_tax_id=default_purchase_tax_id,
|
||||
default_sale_tax_id=default_sale_tax_id,
|
||||
)
|
||||
return res
|
||||
|
||||
|
||||
@@ -20,11 +20,14 @@ class ResConfigSettings(models.TransientModel):
|
||||
def get_values(self):
|
||||
res = super(ResConfigSettings, self).get_values()
|
||||
get_param = self.env['ir.config_parameter'].sudo().get_param
|
||||
auth_signup_template_user_id = literal_eval(get_param('auth_signup.template_user_id', default='False'))
|
||||
if auth_signup_template_user_id and not self.env['res.users'].sudo().browse(auth_signup_template_user_id).exists():
|
||||
auth_signup_template_user_id = False
|
||||
# the value of the parameter is a nonempty string
|
||||
res.update(
|
||||
auth_signup_reset_password=get_param('auth_signup.reset_password', 'False').lower() == 'true',
|
||||
auth_signup_uninvited='b2c' if get_param('auth_signup.allow_uninvited', 'False').lower() == 'true' else 'b2b',
|
||||
auth_signup_template_user_id=literal_eval(get_param('auth_signup.template_user_id', 'False')),
|
||||
auth_signup_template_user_id=auth_signup_template_user_id,
|
||||
)
|
||||
return res
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from ast import literal_eval
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
@@ -136,11 +138,14 @@ class ResConfigSettings(models.TransientModel):
|
||||
ICPSudo = self.env['ir.config_parameter'].sudo()
|
||||
sale_pricelist_setting = ICPSudo.get_param('sale.sale_pricelist_setting')
|
||||
sale_portal_confirmation_options = ICPSudo.get_param('sale.sale_portal_confirmation_options', default='none')
|
||||
default_deposit_product_id = literal_eval(ICPSudo.get_param('sale.default_deposit_product_id', default='False'))
|
||||
if default_deposit_product_id and not self.env['product.product'].browse(default_deposit_product_id).exists():
|
||||
default_deposit_product_id = False
|
||||
res.update(
|
||||
auth_signup_uninvited='b2c' if ICPSudo.get_param('auth_signup.allow_uninvited', 'False').lower() == 'true' else 'b2b',
|
||||
use_sale_note=ICPSudo.get_param('sale.use_sale_note', default=False),
|
||||
auto_done_setting=ICPSudo.get_param('sale.auto_done_setting'),
|
||||
default_deposit_product_id=int(ICPSudo.get_param('sale.default_deposit_product_id')),
|
||||
default_deposit_product_id=default_deposit_product_id,
|
||||
sale_show_tax=ICPSudo.get_param('sale.sale_show_tax', default='subtotal'),
|
||||
multi_sales_price=sale_pricelist_setting in ['percentage', 'formula'],
|
||||
multi_sales_price_method=sale_pricelist_setting in ['percentage', 'formula'] and sale_pricelist_setting or False,
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from ast import literal_eval
|
||||
|
||||
from odoo import api, models, fields
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
@@ -62,8 +64,8 @@ class ResConfigSettings(models.TransientModel):
|
||||
if self.env['ir.module.module'].search([('name', '=', 'website_sale_delivery')], limit=1).state in ('installed', 'to install', 'to upgrade'):
|
||||
sale_delivery_settings = 'website'
|
||||
|
||||
cart_recovery_mail_template = int(params.get_param('website_sale.cart_recovery_mail_template_id'))
|
||||
if not cart_recovery_mail_template:
|
||||
cart_recovery_mail_template = literal_eval(params.get_param('website_sale.cart_recovery_mail_template_id', default='False'))
|
||||
if cart_recovery_mail_template and not self.env['mail.template'].browse(cart_recovery_mail_template).exists():
|
||||
cart_recovery_mail_template = self._default_recovery_mail_template()
|
||||
|
||||
res.update(
|
||||
|
||||
Reference in New Issue
Block a user