[FIX] account: set proper account_id one line
When you create a invoice from a sale_order the account was taken from the journal and it should comes from the product or the product_categories and in last resort the journal and finally fiscal position should have been apply. It was not the case anymore, because setting the partner_id prior the account_id trigger the default_get on the account_id which in that case take the wrong value closes odoo/odoo#47267 Solution: set first the account_id then the partner_id X-original-commit: 857564367691f3f11572f718499c9d22c823c421 Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
This commit is contained in:
@@ -1507,12 +1507,6 @@ class AccountMove(models.Model):
|
||||
if line.exclude_from_invoice_tab:
|
||||
continue
|
||||
|
||||
# Ensure related fields are well copied.
|
||||
line.partner_id = self.partner_id
|
||||
line.date = self.date
|
||||
line.recompute_tax_line = True
|
||||
line.currency_id = line_currency
|
||||
|
||||
# Shortcut to load the demo data.
|
||||
# Doing line.account_id triggers a default_get(['account_id']) that could returns a result.
|
||||
# A section / note must not have an account_id set.
|
||||
@@ -1526,6 +1520,19 @@ class AccountMove(models.Model):
|
||||
if line.product_id and not line._cache.get('name'):
|
||||
line.name = line._get_computed_name()
|
||||
|
||||
# Compute the account before the partner_id
|
||||
# In case account_followup is installed
|
||||
# Setting the partner will get the account_id in cache
|
||||
# If the account_id is not in cache, it will trigger the default value
|
||||
# Which is wrong in some case
|
||||
# It's better to set the account_id before the partner_id
|
||||
# Ensure related fields are well copied.
|
||||
line.partner_id = self.partner_id
|
||||
line.date = self.date
|
||||
line.recompute_tax_line = True
|
||||
line.currency_id = line_currency
|
||||
|
||||
|
||||
self.line_ids._onchange_price_subtotal()
|
||||
self._recompute_dynamic_lines(recompute_all_taxes=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user