Odoo18-Base/addons/l10n_in_withholding/models/account_move.py
2025-03-10 10:52:11 +07:00

58 lines
2.1 KiB
Python

from odoo import api, models, fields
class AccountMove(models.Model):
_inherit = "account.move"
l10n_in_is_withholding = fields.Boolean(
string="Is Indian TDS Entry",
copy=False,
help="Technical field to identify Indian withholding entry"
)
l10n_in_withholding_ref_move_id = fields.Many2one(
comodel_name='account.move',
string="Indian TDS Ref Move",
readonly=True,
copy=False,
help="Reference move for withholding entry",
)
l10n_in_withhold_move_ids = fields.One2many(
'account.move', 'l10n_in_withholding_ref_move_id',
string="Indian TDS Entries"
)
l10n_in_withholding_line_ids = fields.One2many(
'account.move.line', 'move_id',
string="Indian TDS Lines",
compute='_compute_l10n_in_withholding_line_ids',
)
l10n_in_total_withholding_amount = fields.Monetary(
string="Total Indian TDS Amount",
compute='_compute_l10n_in_total_withholding_amount',
help="Total withholding amount for the move",
)
# === Compute Methods ===
@api.depends('line_ids', 'l10n_in_is_withholding')
def _compute_l10n_in_withholding_line_ids(self):
# Compute the withholding lines for the move
for move in self:
if move.l10n_in_is_withholding:
move.l10n_in_withholding_line_ids = move.line_ids.filtered('tax_ids')
else:
move.l10n_in_withholding_line_ids = False
def _compute_l10n_in_total_withholding_amount(self):
for move in self:
move.l10n_in_total_withholding_amount = sum(move.l10n_in_withhold_move_ids.filtered(
lambda m: m.state == 'posted').l10n_in_withholding_line_ids.mapped('l10n_in_withhold_tax_amount'))
def action_l10n_in_withholding_entries(self):
self.ensure_one()
return {
'name': "TDS Entries",
'type': 'ir.actions.act_window',
'res_model': 'account.move',
'view_mode': 'tree,form',
'domain': [('id', 'in', self.l10n_in_withhold_move_ids.ids)],
}