45 lines
1.6 KiB
Python
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,
|
|
}
|