diff --git a/account_invoice_margin_sale/README.rst b/account_invoice_margin_sale/README.rst index ca957d31..32e2cbdf 100644 --- a/account_invoice_margin_sale/README.rst +++ b/account_invoice_margin_sale/README.rst @@ -75,6 +75,7 @@ Contributors * Sergio Teruel * Carlos Dauden * Víctor Martínez + * Carolina Fernandez * `Open Source Integrators `__: diff --git a/account_invoice_margin_sale/__init__.py b/account_invoice_margin_sale/__init__.py index 69f7babd..21e9576d 100644 --- a/account_invoice_margin_sale/__init__.py +++ b/account_invoice_margin_sale/__init__.py @@ -1,3 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - +from .hooks import post_init_hook from . import models diff --git a/account_invoice_margin_sale/__manifest__.py b/account_invoice_margin_sale/__manifest__.py index e701b5d1..aac043e8 100644 --- a/account_invoice_margin_sale/__manifest__.py +++ b/account_invoice_margin_sale/__manifest__.py @@ -15,5 +15,6 @@ "application": False, "installable": True, "auto_install": True, + "post_init_hook": "post_init_hook", "depends": ["sale_margin", "account_invoice_margin"], } diff --git a/account_invoice_margin_sale/hooks.py b/account_invoice_margin_sale/hooks.py new file mode 100644 index 00000000..5af171c3 --- /dev/null +++ b/account_invoice_margin_sale/hooks.py @@ -0,0 +1,37 @@ +def pre_init_hook(cr, registry): + # update purchase_price for invoices from sale_order + cr.execute( + """ + UPDATE account_move_line AS aml + SET purchase_price = ( + SELECT COALESCE(SUM(sol.purchase_price), 0.0) + FROM sale_order_line AS sol + INNER JOIN sale_order_line_invoice_rel AS rel + ON rel.order_line_id = sol.id + WHERE rel.invoice_line_id = aml.id + ); + """ + ) + # recalculate margin for invoices from sale_order + cr.execute( + """ + WITH aml AS ( + SELECT + account_move_line.move_id, + SUM(account_move_line.margin) AS sum_margin, + SUM(account_move_line.margin_signed) AS sum_margin_signed + FROM account_move_line + INNER JOIN account_move ON account_move.id = account_move_line.move_id + INNER JOIN sale_order_line_invoice_rel AS rel + ON rel.invoice_line_id = aml.id + GROUP BY account_move_line.move_id + ) + UPDATE account_move + SET margin = aml.sum_margin, + margin_signed = aml.sum_margin_signed, + margin_percent = aml.sum_margin_signed / amount_untaxed * 100 + FROM aml + WHERE account_move.id = aml.move_id + AND account_move.amount_untaxed > 0.0; + """ + ) diff --git a/account_invoice_margin_sale/readme/CONTRIBUTORS.rst b/account_invoice_margin_sale/readme/CONTRIBUTORS.rst index 79af01f4..ac76f9ea 100644 --- a/account_invoice_margin_sale/readme/CONTRIBUTORS.rst +++ b/account_invoice_margin_sale/readme/CONTRIBUTORS.rst @@ -3,6 +3,7 @@ * Sergio Teruel * Carlos Dauden * Víctor Martínez + * Carolina Fernandez * `Open Source Integrators `__: diff --git a/account_invoice_margin_sale/static/description/index.html b/account_invoice_margin_sale/static/description/index.html index abb6d18a..f92de031 100644 --- a/account_invoice_margin_sale/static/description/index.html +++ b/account_invoice_margin_sale/static/description/index.html @@ -420,6 +420,7 @@

Contributors

  • Sergio Teruel
  • Carlos Dauden
  • Víctor Martínez
  • +
  • Carolina Fernandez
  • Open Source Integrators: