[FIX] account: Incorrect behavior for default taxes when multi company is enabled.

Was PR #18931
This commit is contained in:
rde
2017-11-08 20:39:13 +01:00
committed by qdp-odoo
parent aa3834b9fa
commit a86de52aac
7 changed files with 12 additions and 49 deletions
-12
View File
@@ -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):
-10
View File
@@ -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)
+2
View File
@@ -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'),
+2 -2
View File
@@ -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)],
+2 -20
View File
@@ -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({
@@ -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>
@@ -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"/>