From 6027e9370de7458bec6cd8a956f2a60b0eed0126 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 7 Mar 2017 15:26:23 +0100 Subject: [PATCH] [FIX] account, base_setup, sale, crm: do not create `ir.values` for unknown fields --- addons/account/models/res_config.py | 15 ++++++++++++-- addons/base_setup/models/res_config.py | 23 +++++++++++++++++++--- addons/crm/models/res_config.py | 2 +- addons/sale/models/sale_config_settings.py | 11 ++++++++++- 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/addons/account/models/res_config.py b/addons/account/models/res_config.py index 664fb58c505..a5dd40bdb04 100644 --- a/addons/account/models/res_config.py +++ b/addons/account/models/res_config.py @@ -37,9 +37,9 @@ class AccountConfigSettings(models.TransientModel): help="Allows you to put invoices in pro-forma state.") module_account_reports_followup = fields.Boolean("Enable payment followup management") default_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", - default_model="account.config.settings", company_dependent=True, oldname="default_sale_tax") + company_dependent=True, oldname="default_sale_tax") default_purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax", - default_model="account.config.settings", company_dependent=True, oldname="default_purchase_tax") + company_dependent=True, oldname="default_purchase_tax") module_l10n_us_check_printing = fields.Boolean("Allow check printing and deposits") module_account_batch_deposit = fields.Boolean(string='Use batch deposit', help='This allows you to group received checks before you deposit them to the bank.\n' @@ -56,6 +56,17 @@ class AccountConfigSettings(models.TransientModel): module_product_margin = fields.Boolean(string="Allow Product Margin") module_l10n_eu_service = fields.Boolean(string="EU Digital Goods VAT") + @api.model + def get_default_tax_fields(self, fields): + default_purchase_tax_id = self.env['ir.config_parameter'].sudo().get_param('account.default_purchase_tax_id', default=False) + default_sale_tax_id = self.env['ir.config_parameter'].sudo().get_param('account.default_sale_tax_id', default=False) + return dict(default_purchase_tax_id=int(default_purchase_tax_id), default_sale_tax_id=int(default_sale_tax_id)) + + @api.multi + def set_default_tax_fields(self): + self.env['ir.config_parameter'].sudo().set_param("account.default_purchase_tax_id", self.default_purchase_tax_id.id) + self.env['ir.config_parameter'].sudo().set_param("account.default_sale_tax_id", self.default_sale_tax_id.id) + @api.depends('company_id') def _compute_has_chart_of_accounts(self): self.has_chart_of_accounts = bool(self.company_id.chart_template_id) diff --git a/addons/base_setup/models/res_config.py b/addons/base_setup/models/res_config.py index 971694940dd..ceeb7c3bdbf 100644 --- a/addons/base_setup/models/res_config.py +++ b/addons/base_setup/models/res_config.py @@ -11,8 +11,8 @@ class BaseConfigSettings(models.TransientModel): group_multi_company = fields.Boolean("Manage multiple companies", implied_group='base.group_multi_company') company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.user.company_id) - default_user_rights = fields.Boolean("Default Access Rights", default_model='base.config.settings') - default_external_email_server = fields.Boolean("External Email Servers", default_model='base.config.settings') + default_user_rights = fields.Boolean("Default Access Rights") + default_external_email_server = fields.Boolean("External Email Servers") module_base_import = fields.Boolean("Allow users to import data from CSV/XLS/XLSX/ODS files") module_pad = fields.Boolean("External Pads") module_google_calendar = fields.Boolean( @@ -27,12 +27,29 @@ class BaseConfigSettings(models.TransientModel): help="Share your partners to all companies defined in your instance.\n" " * Checked : Partners are visible for every companies, even if a company is defined on the partner.\n" " * Unchecked : Each company can see only its partner (partners where company is defined). Partners not related to a company are visible for all companies.") - default_custom_report_footer = fields.Boolean("Custom Report Footer", default_model='base.config.settings') + default_custom_report_footer = fields.Boolean("Custom Report Footer") rml_footer = fields.Text(related="company_id.rml_footer", string='Custom Report Footer', help="Footer text displayed at the bottom of all reports.") group_multi_currency = fields.Boolean(string='Allow multi currencies', implied_group='base.group_multi_currency', help="Allows to work in a multi currency environment") + @api.model + def get_default_fields(self, fields): + default_external_email_server = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_external_email_server', default=False) + default_user_rights = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_user_rights', default=False) + default_custom_report_footer = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_custom_report_footer', default=False) + return { + 'default_external_email_server': default_external_email_server, + 'default_user_rights': default_user_rights, + 'default_custom_report_footer': default_custom_report_footer, + } + + @api.multi + def set_default_fields(self): + self.env['ir.config_parameter'].sudo().set_param("base_setup.default_external_email_server", self.default_external_email_server) + self.env['ir.config_parameter'].sudo().set_param("base_setup.default_user_rights", self.default_user_rights) + self.env['ir.config_parameter'].sudo().set_param("base_setup.default_custom_report_footer", self.default_custom_report_footer) + @api.multi def open_company(self): return { diff --git a/addons/crm/models/res_config.py b/addons/crm/models/res_config.py index 4d22ef0ebd8..a786f1e2c0b 100644 --- a/addons/crm/models/res_config.py +++ b/addons/crm/models/res_config.py @@ -11,7 +11,7 @@ class CRMSettings(models.TransientModel): help="Odoo will generate an email alias based on the sales channel name") alias_prefix = fields.Char('Default Alias Name for Leads') alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) - default_generate_lead_from_alias = fields.Boolean(default_model='sale.config.settings') + default_generate_lead_from_alias = fields.Boolean() group_use_lead = fields.Boolean(string="Leads", implied_group='crm.group_use_lead') module_crm_voip = fields.Boolean("Asterisk (VoIP)") diff --git a/addons/sale/models/sale_config_settings.py b/addons/sale/models/sale_config_settings.py index 8fa47931091..7e77ba7e2ba 100644 --- a/addons/sale/models/sale_config_settings.py +++ b/addons/sale/models/sale_config_settings.py @@ -8,7 +8,7 @@ class SaleConfiguration(models.TransientModel): _inherit = 'sale.config.settings' sale_note = fields.Text(related='company_id.sale_note', string="Terms & Conditions") - default_use_sale_note = fields.Boolean(default_model='sale.config.settings') + default_use_sale_note = fields.Boolean() group_product_variant = fields.Boolean("Attributes & Variants", implied_group='product.group_product_variant') group_sale_pricelist = fields.Boolean("Use pricelists to adapt your price per customers", @@ -83,6 +83,15 @@ class SaleConfiguration(models.TransientModel): module_product_email_template = fields.Boolean("Specific Email") module_sale_coupon = fields.Boolean("Manage coupons and promotional offers") + @api.model + def get_default_use_sale_note(self, fields): + default_use_sale_note = self.env['ir.config_parameter'].sudo().get_param('sale.default_use_sale_note', default=False) + return dict(default_use_sale_note=default_use_sale_note) + + @api.multi + def set_default_use_sale_note(self): + self.env['ir.config_parameter'].sudo().set_param("sale.default_use_sale_note", self.default_use_sale_note) + @api.model def get_default_sale_pricelist_setting(self, fields): sale_pricelist_setting = self.env['ir.values'].get_default('sale.config.settings', 'sale_pricelist_setting')