From a86de52aacdcd6ed091f357986c376dcb1142e87 Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 8 Nov 2017 20:36:54 +0100 Subject: [PATCH] [FIX] account: Incorrect behavior for default taxes when multi company is enabled. Was PR #18931 --- addons/account/models/account.py | 12 ---------- addons/account/models/chart_template.py | 10 --------- addons/account/models/company.py | 2 ++ addons/account/models/product.py | 4 ++-- addons/account/models/res_config_settings.py | 22 ++----------------- .../views/res_config_settings_views.xml | 9 ++++---- .../views/res_config_settings_views.xml | 2 +- 7 files changed, 12 insertions(+), 49 deletions(-) diff --git a/addons/account/models/account.py b/addons/account/models/account.py index c50aae85777..385d54cc2b0 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -770,18 +770,6 @@ class AccountTax(models.Model): ('name_company_uniq', 'unique(name, company_id, type_tax_use)', 'Tax names must be unique !'), ] - @api.multi - def unlink(self): - company_id = self.env.user.company_id.id - IrDefault = self.env['ir.default'] - taxes = self.browse(IrDefault.get('product.template', 'taxes_id', company_id=company_id) or []) - if self & taxes: - IrDefault.sudo().set('product.template', 'taxes_id', (taxes - self).ids, company_id=company_id) - taxes = self.browse(IrDefault.get('product.template', 'supplier_taxes_id', company_id=company_id) or []) - if self & taxes: - IrDefault.sudo().set('product.template', 'supplier_taxes_id', (taxes - self).ids, company_id=company_id) - return super(AccountTax, self).unlink() - @api.one @api.constrains('children_tax_ids', 'type_tax_use') def _check_children_scope(self): diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 52cc4b0e017..3712109a435 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -909,16 +909,6 @@ class WizardMultiChartsAccounts(models.TransientModel): # Install all the templates objects and generate the real objects acc_template_ref, taxes_ref = self.chart_template_id._install_template(company, code_digits=self.code_digits, transfer_account_id=self.transfer_account_id) - # write values of default taxes for product as super user and write in the config - IrDefault = self.env['ir.default'] - IrConfig = self.env['ir.config_parameter'] - if self.sale_tax_id and taxes_ref: - IrDefault.sudo().set('product.template', "taxes_id", [taxes_ref[self.sale_tax_id.id]], company_id=company.id) - IrConfig.sudo().set_param("account.default_sale_tax_id", taxes_ref[self.sale_tax_id.id]) - if self.purchase_tax_id and taxes_ref: - IrDefault.sudo().set('product.template', "supplier_taxes_id", [taxes_ref[self.purchase_tax_id.id]], company_id=company.id) - IrConfig.sudo().set_param("account.default_purchase_tax_id", taxes_ref[self.purchase_tax_id.id]) - # Create Bank journals self._create_bank_journals_from_o2m(company, acc_template_ref) diff --git a/addons/account/models/company.py b/addons/account/models/company.py index 7b5fa4e1bf8..7326f097eed 100644 --- a/addons/account/models/company.py +++ b/addons/account/models/company.py @@ -24,6 +24,8 @@ class ResCompany(models.Model): bank_account_code_prefix = fields.Char(string='Prefix of the bank accounts', oldname="bank_account_code_char") cash_account_code_prefix = fields.Char(string='Prefix of the cash accounts') accounts_code_digits = fields.Integer(string='Number of digits in an account code') + account_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax") + account_purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax") tax_cash_basis_journal_id = fields.Many2one('account.journal', string="Cash Basis Journal") tax_calculation_rounding_method = fields.Selection([ ('round_per_line', 'Round per Line'), diff --git a/addons/account/models/product.py b/addons/account/models/product.py index 0070cbc1fa9..dd93a742056 100644 --- a/addons/account/models/product.py +++ b/addons/account/models/product.py @@ -23,9 +23,9 @@ class ProductTemplate(models.Model): _inherit = "product.template" taxes_id = fields.Many2many('account.tax', 'product_taxes_rel', 'prod_id', 'tax_id', string='Customer Taxes', - domain=[('type_tax_use', '=', 'sale')]) + domain=[('type_tax_use', '=', 'sale')], default=lambda self: self.env.user.company_id.account_sale_tax_id) supplier_taxes_id = fields.Many2many('account.tax', 'product_supplier_taxes_rel', 'prod_id', 'tax_id', string='Vendor Taxes', - domain=[('type_tax_use', '=', 'purchase')]) + domain=[('type_tax_use', '=', 'purchase')], default=lambda self: self.env.user.company_id.account_purchase_tax_id) property_account_income_id = fields.Many2one('account.account', company_dependent=True, string="Income Account", oldname="property_account_income", domain=[('deprecated', '=', False)], diff --git a/addons/account/models/res_config_settings.py b/addons/account/models/res_config_settings.py index 27887fe2c90..e6e637e3b0e 100644 --- a/addons/account/models/res_config_settings.py +++ b/addons/account/models/res_config_settings.py @@ -20,6 +20,8 @@ class ResConfigSettings(models.TransientModel): chart_template_id = fields.Many2one('account.chart.template', string='Template', domain="[('visible','=', True)]") code_digits = fields.Integer(string='# of Digits *', related='company_id.accounts_code_digits', help="No. of digits to use for account code") + sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", related='company_id.account_sale_tax_id') + purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax", related='company_id.account_purchase_tax_id') tax_calculation_rounding_method = fields.Selection([ ('round_per_line', 'Round calculation of taxes per line'), ('round_globally', 'Round globally calculation of taxes '), @@ -35,10 +37,6 @@ class ResConfigSettings(models.TransientModel): module_account_payment = fields.Boolean(string='Online Payment') module_account_reports = fields.Boolean("Dynamic Reports") module_account_reports_followup = fields.Boolean("Enable payment followup management") - default_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", - company_dependent=True, oldname="default_sale_tax") - default_purchase_tax_id = fields.Many2one('account.tax', string="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' @@ -60,27 +58,11 @@ class ResConfigSettings(models.TransientModel): tax_cash_basis_journal_id = fields.Many2one('account.journal', related='company_id.tax_cash_basis_journal_id', string="Tax Cash Basis Journal") account_hide_setup_bar = fields.Boolean(string='Hide Setup Bar', related='company_id.account_setup_bar_closed',help="Tick if you wish to hide the setup bar on the dashboard") - @api.model - def get_values(self): - res = super(ResConfigSettings, self).get_values() - params = self.env['ir.config_parameter'].sudo() - 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 - ) - return res - @api.multi def set_values(self): super(ResConfigSettings, self).set_values() - 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) if self.group_multi_currency: self.env.ref('base.group_user').write({'implied_ids': [(4, self.env.ref('product.group_sale_pricelist').id)]}) - """ Set the product taxes if they have changed """ - IrDefault = self.env['ir.default'].sudo() - IrDefault.set('product.template', "taxes_id", self.default_sale_tax_id.ids, company_id=self.company_id.id) - IrDefault.set('product.template', "supplier_taxes_id", self.default_purchase_tax_id.ids, company_id=self.company_id.id) """ install a chart of accounts for the given company (if required) """ if self.chart_template_id and self.chart_template_id != self.company_id.chart_template_id: wizard = self.env['wizard.multi.charts.accounts'].create({ diff --git a/addons/account/views/res_config_settings_views.xml b/addons/account/views/res_config_settings_views.xml index 89ca7467247..a2c563492ca 100644 --- a/addons/account/views/res_config_settings_views.xml +++ b/addons/account/views/res_config_settings_views.xml @@ -63,17 +63,18 @@
diff --git a/addons/website_sale/views/res_config_settings_views.xml b/addons/website_sale/views/res_config_settings_views.xml index 648c88d3250..9c8e10ad20f 100644 --- a/addons/website_sale/views/res_config_settings_views.xml +++ b/addons/website_sale/views/res_config_settings_views.xml @@ -108,7 +108,7 @@
- +