Skip to content

Commit

Permalink
Merge pull request #959 from ursais/downpayment-module
Browse files Browse the repository at this point in the history
[ADD] Moved generic tax fix to osi_addons repository.
  • Loading branch information
RLeeOSI authored Nov 7, 2024
2 parents e827e6f + 34fcd09 commit db0a371
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 0 deletions.
23 changes: 23 additions & 0 deletions osi_downpayment_taxes/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3

========
Overview
========

* Correct rounding issues on taxes calculated on down payments


=======
Credits
=======

* Open Source Integrators <http://www.opensourceintegrators.com>


Contributors
------------

* Tirth Patel <[email protected]>
* Raphael Lee <[email protected]>
1 change: 1 addition & 0 deletions osi_downpayment_taxes/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import wizards
18 changes: 18 additions & 0 deletions osi_downpayment_taxes/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "Sales Downpayment Tax Fixes",
"summary": "Extends Sales Downpayments to fix sales lines made for multiple tax rates",
"version": "17.0.1.0.0",
"license": "LGPL-3",
"author": "Open Source Integrators",
"maintainer": "Open Source Integrators",
"website": "https://github.com/ursais/osi-addons",
"category": "Accounting",
"depends": [
"account_accountant",
"sale",
],
"data": [],
"application": False,
"installable": True,
"auto_install": False,
}
1 change: 1 addition & 0 deletions osi_downpayment_taxes/wizards/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import sale_make_invoice_advance
61 changes: 61 additions & 0 deletions osi_downpayment_taxes/wizards/sale_make_invoice_advance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from odoo import models


class SaleAdvancePaymentInv(models.TransientModel):
_inherit = "sale.advance.payment.inv"

def _prepare_down_payment_lines_values(self, order):
"""Modify the original method to remove tax based down payment lines values
this means we always create only one DownPayment SO Line.
"""
self.ensure_one()

if self.advance_payment_method == "percentage":
percentage = self.amount / 100
else:
percentage = (
self.fixed_amount / order.amount_total if order.amount_total else 1
)

# Remove SO Lines that aare already linked with previous DownPayment Lines,
# and DP lines too.
base_downpayment_lines_values = self._prepare_base_downpayment_line_values(
order
)

order_lines = order.order_line.filtered(
lambda sol: not sol.display_type and not sol.is_downpayment
)

# We are skipping the tax calculation for the order_lines and splitting DP lines
# by Tax. We are also ignoring any tax present on the DP Product itself,
# maybe revisit this if needed. This ensures the amount in DP is correctly
# reflected from the SO Lines for which DP is created.
# Using price_total which includes price+tax-disc
order_amount_incl_tax = 0.0
for order_line in order_lines:
# The Delivery Product somehow has taxed amount in its price_total
# even when there is no tax applied.
if order_line.is_delivery and not order_line.tax_id:
order_amount_incl_tax += order_line.price_subtotal
else:
order_amount_incl_tax += order_line.price_total
# order_amount_incl_tax = sum(order_lines.mapped('price_total'))

analytic_distribution_order_lines = {}
for sol in order_lines.filtered(lambda ol: ol.analytic_distribution):
analytic_distribution_order_lines.update(sol.analytic_distribution)
base_downpayment_lines_values.update(
{
"price_unit": order.currency_id.round(
order_amount_incl_tax * percentage
),
"product_uom_qty": 0.0,
"discount": 0.0,
"analytic_distribution": analytic_distribution_order_lines,
}
)

# We skip the logic to split the lines based on taxes present on SO lines.

return [base_downpayment_lines_values]

0 comments on commit db0a371

Please sign in to comment.