[FIX] point_of_sale: prevent double calculation of base amount
Before this commit, if a tax had multiple distribution lines, the base amount was calculated for each line. This resulted in the base amount being multiplied by the number of distribution lines. This issue has been resolved by ensuring the base amount is counted only once for each tax and line. opw-3696800 closes odoo/odoo#155690 X-original-commit: f8842269cee1df62ff4378473dc59da6fca7eec5 Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com> Signed-off-by: Pedram Bi Ria (pebr) <pebr@odoo.com>
This commit is contained in:
@@ -292,10 +292,14 @@ class ReportSaleDetails(models.AbstractModel):
|
||||
|
||||
if line.tax_ids_after_fiscal_position:
|
||||
line_taxes = line.tax_ids_after_fiscal_position.sudo().compute_all(line.price_unit * (1-(line.discount or 0.0)/100.0), currency, line.qty, product=line.product_id, partner=line.order_id.partner_id or False)
|
||||
base_amounts = {}
|
||||
for tax in line_taxes['taxes']:
|
||||
taxes.setdefault(tax['id'], {'name': tax['name'], 'tax_amount':0.0, 'base_amount':0.0})
|
||||
taxes[tax['id']]['tax_amount'] += tax['amount']
|
||||
taxes[tax['id']]['base_amount'] += tax['base']
|
||||
base_amounts[tax['id']] = tax['base']
|
||||
|
||||
for tax_id, base_amount in base_amounts.items():
|
||||
taxes[tax_id]['base_amount'] += base_amount
|
||||
else:
|
||||
taxes.setdefault(0, {'name': _('No Taxes'), 'tax_amount':0.0, 'base_amount':0.0})
|
||||
taxes[0]['base_amount'] += line.price_subtotal_incl
|
||||
|
||||
Reference in New Issue
Block a user