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

79 lines
3.3 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class AccountTax(models.Model):
_inherit = 'account.tax'
l10n_ar_type_tax_use = fields.Selection(
selection=[
('sale', 'Sales'),
('purchase', 'Purchases'),
('none', 'Other'),
('supplier', 'Vendor Payment Withholding'),
('customer', 'Customer Payment Withholding')
],
compute='_compute_l10n_ar_type_tax_use', inverse='_inverse_l10n_ar_type_tax_use',
string="Argentina Tax Type"
)
l10n_ar_withholding_payment_type = fields.Selection(
selection=[('supplier', 'Vendor Payment'), ('customer', 'Customer Payment')],
string="Argentina Withholding Payment Type",
help="Withholding tax for supplier or customer payments.")
l10n_ar_tax_type = fields.Selection(
string='WTH Tax',
selection=[
('earnings', 'Earnings'),
('earnings_scale', 'Earnings Scale'),
('iibb_untaxed', 'IIBB Untaxed'),
('iibb_total', 'IIBB Total Amount'),
]
)
l10n_ar_withholding_sequence_id = fields.Many2one(
'ir.sequence',
string='WTH Sequence',
copy=False, check_company=True,
help='If no sequence provided then it will be required for you to enter withholding number when registering one.')
l10n_ar_code = fields.Char('AFIP Code')
l10n_ar_non_taxable_amount = fields.Float(
string='Non Taxable Amount',
digits='Account',
help="Until this base amount, the tax is not applied."
)
l10n_ar_minimum_threshold = fields.Float(
string="Minimum Treshold",
help="If the calculated withholding tax amount is lower than minimum withholding threshold then it is 0.0.")
l10n_ar_state_id = fields.Many2one(
'res.country.state', string="Jurisdiction", ondelete='restrict', domain="[('country_id', '=?', country_id)]")
l10n_ar_scale_id = fields.Many2one(
comodel_name='l10n_ar.earnings.scale',
string="Scale", help="Earnings table scale if tax type is 'Earnings Scale'."
)
@api.depends('type_tax_use', 'l10n_ar_withholding_payment_type')
def _compute_l10n_ar_type_tax_use(self):
for tax in self:
if tax.type_tax_use in ('sale', 'purchase'):
tax.l10n_ar_type_tax_use = tax.type_tax_use
elif tax.l10n_ar_withholding_payment_type in ('supplier', 'customer'):
tax.l10n_ar_type_tax_use = tax.l10n_ar_withholding_payment_type
else:
tax.l10n_ar_type_tax_use = 'none'
@api.onchange('l10n_ar_type_tax_use')
def _inverse_l10n_ar_type_tax_use(self):
for tax in self:
if tax.l10n_ar_type_tax_use in ('sale', 'purchase'):
tax.type_tax_use = tax.l10n_ar_type_tax_use
tax.l10n_ar_tax_type = False
tax.l10n_ar_state_id = False
tax.l10n_ar_withholding_payment_type = False
else:
if tax.l10n_ar_type_tax_use in ('supplier', 'customer'):
tax.l10n_ar_withholding_payment_type = tax.l10n_ar_type_tax_use
else:
tax.l10n_ar_withholding_payment_type = False
tax.l10n_ar_tax_type = False
tax.type_tax_use = 'none'