Odoo18-Base/addons/hr_expense/models/account_tax.py
2025-01-06 10:57:38 +07:00

55 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models
class AccountTax(models.Model):
_inherit = "account.tax"
def _hook_compute_is_used(self, taxes_to_compute):
# OVERRIDE in order to fetch taxes used in expenses
used_taxes = super()._hook_compute_is_used(taxes_to_compute)
taxes_to_compute -= used_taxes
if taxes_to_compute:
self.env['hr.expense'].flush_model(['tax_ids'])
self.env.cr.execute("""
SELECT id
FROM account_tax
WHERE EXISTS(
SELECT 1
FROM expense_tax AS exp
WHERE tax_id IN %s
AND account_tax.id = exp.tax_id
)
""", [tuple(taxes_to_compute)])
used_taxes.update([tax[0] for tax in self.env.cr.fetchall()])
return used_taxes
def _prepare_base_line_for_taxes_computation(self, record, **kwargs):
# EXTENDS 'account'
results = super()._prepare_base_line_for_taxes_computation(record, **kwargs)
results['expense_id'] = self._get_base_line_field_value_from_record(record, 'expense_id', kwargs, self.env['hr.expense'])
return results
def _prepare_tax_line_for_taxes_computation(self, record, **kwargs):
# EXTENDS 'account'
results = super()._prepare_tax_line_for_taxes_computation(record, **kwargs)
results['expense_id'] = self._get_base_line_field_value_from_record(record, 'expense_id', kwargs, self.env['hr.expense'])
return results
def _prepare_base_line_grouping_key(self, base_line):
# EXTENDS 'account'
results = super()._prepare_base_line_grouping_key(base_line)
results['expense_id'] = base_line['expense_id'].id
return results
def _prepare_tax_line_repartition_grouping_key(self, tax_line):
# EXTENDS 'account'
results = super()._prepare_tax_line_repartition_grouping_key(tax_line)
results['expense_id'] = tax_line['expense_id'].id
return results