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)'