diff --git a/addons/account/models/account_move_line_tax_details.py b/addons/account/models/account_move_line_tax_details.py index 4024e426c4055f181dce129af8d59bf604297218..7e162aa9f180a00f6b95579f03772f403911afc9 100644 --- a/addons/account/models/account_move_line_tax_details.py +++ b/addons/account/models/account_move_line_tax_details.py @@ -24,6 +24,11 @@ class AccountMoveLine(models.Model): tables, where_clause, where_params = query.get_sql() return self._get_query_tax_details(tables, where_clause, where_params, fallback=fallback) + @api.model + def _get_extra_query_base_tax_line_mapping(self): + #TO OVERRIDE + return '' + @api.model def _get_query_tax_details(self, tables, where_clause, where_params, fallback=True): """ Create the tax details sub-query based on the orm domain passed as parameter. @@ -81,6 +86,8 @@ class AccountMoveLine(models.Model): fallback_query = '' fallback_params = [] + extra_query_base_tax_line_mapping = self._get_extra_query_base_tax_line_mapping() + return f''' /* As example to explain the different parts of the query, we'll consider a move with the following lines: @@ -185,6 +192,7 @@ class AccountMoveLine(models.Model): OR (base_line.analytic_distribution IS NULL AND account_move_line.analytic_distribution IS NULL) OR base_line.analytic_distribution = account_move_line.analytic_distribution ) + {extra_query_base_tax_line_mapping} LEFT JOIN affecting_base_tax_ids tax_line_tax_ids ON tax_line_tax_ids.id = account_move_line.id JOIN affecting_base_tax_ids base_line_tax_ids ON base_line_tax_ids.id = base_line.id WHERE account_move_line.tax_repartition_line_id IS NOT NULL diff --git a/addons/hr_expense/models/account_move_line.py b/addons/hr_expense/models/account_move_line.py index afd2cd6d4bfe4e2de9da2eef83fdcf18555c2bc2..3ab4109cad545764ef11e1daed267e70185776ec 100644 --- a/addons/hr_expense/models/account_move_line.py +++ b/addons/hr_expense/models/account_move_line.py @@ -57,3 +57,6 @@ class AccountMoveLine(models.Model): result.setdefault('extra_context', {}) result['extra_context']['force_price_include'] = True return result + + def _get_extra_query_base_tax_line_mapping(self): + return ' AND (base_line.expense_id IS NULL OR account_move_line.expense_id = base_line.expense_id)'