summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorrde <rde@odoo.com>2017-11-08 20:36:54 +0100
committerqdp-odoo <qdp@odoo.com>2017-11-08 20:39:13 +0100
commita86de52aacdcd6ed091f357986c376dcb1142e87 (patch)
tree4e6d75beaad34cb315d3a868b5526da2527b15e4 /addons
parentaa3834b9fac30875f498c5d09b7c03a020bbe372 (diff)
[FIX] account: Incorrect behavior for default taxes when multi company is enabled.
Was PR #18931
Diffstat (limited to 'addons')
-rw-r--r--addons/account/models/account.py12
-rw-r--r--addons/account/models/chart_template.py10
-rw-r--r--addons/account/models/company.py2
-rw-r--r--addons/account/models/product.py4
-rw-r--r--addons/account/models/res_config_settings.py22
-rw-r--r--addons/account/views/res_config_settings_views.xml9
-rw-r--r--addons/website_sale/views/res_config_settings_views.xml2
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 @@
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<label string='Default Taxes'/>
+ <span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/>
<div class="text-muted">
Default taxes applied to local transactions
</div>
<div class="content-group">
<div class="row mt16">
- <label string="Sales Tax" for="default_sale_tax_id" class="col-md-3 o_light_label"/>
- <field name="default_sale_tax_id" domain="[('type_tax_use', 'in', ('sale', 'all')), ('company_id', '=', company_id)]"/>
+ <label string="Sales Tax" for="sale_tax_id" class="col-md-3 o_light_label"/>
+ <field name="sale_tax_id" domain="[('type_tax_use', 'in', ('sale', 'all')), ('company_id', '=', company_id)]"/>
</div>
<div class="row">
- <label string="Purchase Tax" for="default_purchase_tax_id" class="col-md-3 o_light_label"/>
- <field name="default_purchase_tax_id" domain="[('type_tax_use', 'in', ('purchase', 'all')), ('company_id', '=', company_id)]"/>
+ <label string="Purchase Tax" for="purchase_tax_id" class="col-md-3 o_light_label"/>
+ <field name="purchase_tax_id" domain="[('type_tax_use', 'in', ('purchase', 'all')), ('company_id', '=', company_id)]"/>
</div>
</div>
</div>
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 @@
</div>
<div class="content-group">
<div class="mt16">
- <field name="default_sale_tax_id" domain="[('type_tax_use', 'in', ('sale', 'all')), ('company_id', '=', company_id)]"/>
+ <field name="sale_tax_id" domain="[('type_tax_use', 'in', ('sale', 'all')), ('company_id', '=', company_id)]"/>
</div>
<div>
<button type="action" name="%(account.action_tax_form)d" string="Taxes" class="btn-link" icon="fa-arrow-right"/>