odoo18/addons/l10n_ar/models/account_move_line.py

45 lines
1.6 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class AccountMoveLine(models.Model):
_inherit = 'account.move.line'
def _l10n_ar_prices_and_taxes(self):
self.ensure_one()
invoice = self.move_id
include_vat = invoice._l10n_ar_include_vat()
AccountTax = self.env['account.tax']
base_line = invoice._prepare_product_base_line_for_taxes_computation(self)
if include_vat:
base_line['tax_ids'] = self.tax_ids.filtered('tax_group_id.l10n_ar_vat_afip_code')
AccountTax._add_tax_details_in_base_line(base_line, self.company_id, rounding_method='round_globally')
tax_details = base_line['tax_details']
discount = base_line['discount']
price_unit = base_line['price_unit']
quantity = base_line['quantity']
if include_vat:
raw_total = tax_details['raw_total_included_currency']
else:
raw_total = tax_details['raw_total_excluded_currency']
if discount == 100.0:
price_subtotal_before_discount = price_unit * quantity
else:
price_subtotal_before_discount = raw_total / (1 - discount / 100.0)
if quantity:
price_unit = price_subtotal_before_discount / quantity
price_net = raw_total / quantity
else:
price_unit = 0.0
price_net = 0.0
return {
'price_unit': price_unit,
'price_subtotal': invoice.currency_id.round(raw_total),
'price_net': price_net,
}