58 lines
2.1 KiB
Python
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)],
|
|
}
|