[FIX] account: Incorrect behavior for default taxes when multi company is enabled.
Was PR #18931
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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)],
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user