Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0] [REF] account_invoice_triple_discount Consolidate discount in std field (Follow-up of #1638) #1840

Merged
merged 9 commits into from
Feb 24, 2025
Merged
4 changes: 3 additions & 1 deletion .copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ odoo_test_flavor: Both
odoo_version: 16.0
org_name: Odoo Community Association (OCA)
org_slug: OCA
rebel_module_groups: []
rebel_module_groups:
- account_invoice_triple_discount,account_invoice_supplierinfo_update_triple_discount
- account_invoice_fixed_discount
repo_description: 'TODO: add repo description.'
repo_name: account-invoicing
repo_slug: account-invoicing
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,24 @@ jobs:
matrix:
include:
- container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest
include: "account_invoice_triple_discount,account_invoice_supplierinfo_update_triple_discount"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest
include: "account_invoice_triple_discount,account_invoice_supplierinfo_update_triple_discount"
name: test with OCB
makepot: "true"
- container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest
include: "account_invoice_fixed_discount"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest
include: "account_invoice_fixed_discount"
name: test with OCB
makepot: "true"
- container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest
exclude: "account_invoice_triple_discount,account_invoice_supplierinfo_update_triple_discount,account_invoice_fixed_discount"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest
exclude: "account_invoice_triple_discount,account_invoice_supplierinfo_update_triple_discount,account_invoice_fixed_discount"
name: test with OCB
makepot: "true"
services:
Expand All @@ -49,6 +65,9 @@ jobs:
POSTGRES_DB: odoo
ports:
- 5432:5432
env:
INCLUDE: "${{ matrix.include }}"
EXCLUDE: "${{ matrix.exclude }}"
steps:
- uses: actions/checkout@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion account_global_discount/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Account Global Discount",
"version": "16.0.1.0.1",
"version": "16.0.1.1.0",
"category": "Accounting",
"author": "Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
Expand Down
11 changes: 7 additions & 4 deletions account_global_discount/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.

See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -300,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -466,7 +467,9 @@ <h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
Expand Down
7 changes: 6 additions & 1 deletion account_global_discount/tests/test_global_discount.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,12 @@
# The global discounts amount is then 160 - 56 = 104
with Form(self.invoice) as invoice_form:
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount = 20
# Make the test compatible if account_invoice_triple_discount
# is installed
if "discount1" in line_form._model._fields:
line_form.discount1 = 20

Check warning on line 167 in account_global_discount/tests/test_global_discount.py

View check run for this annotation

Codecov / codecov/patch

account_global_discount/tests/test_global_discount.py#L167

Added line #L167 was not covered by tests
else:
line_form.discount = 20
self.assertEqual(len(self.invoice.invoice_global_discount_ids), 2)
invoice_tax_line = self.invoice.line_ids.filtered("tax_line_id")
self.assertAlmostEqual(invoice_tax_line.tax_base_amount, 56.0)
Expand Down
3 changes: 2 additions & 1 deletion account_invoice_fixed_discount/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
{
"name": "Account Fixed Discount",
"summary": "Allows to apply fixed amount discounts in invoices.",
"version": "16.0.1.0.4",
"version": "16.0.1.1.0",
"category": "Accounting & Finance",
"website": "https://github.com/OCA/account-invoicing",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["account"],
"excludes": ["account_invoice_triple_discount"],
"data": [
"security/res_groups.xml",
"views/account_move_view.xml",
Expand Down
11 changes: 7 additions & 4 deletions account_invoice_fixed_discount/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.

See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -300,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -429,7 +430,9 @@ <h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"summary": "In the supplier invoice, automatically update all products "
"whose discount on the line is different from "
"the supplier discount",
"version": "16.0.1.0.0",
"version": "16.0.1.1.0",
"category": "Accounting & Finance",
"website": "https://github.com/OCA/account-invoicing",
"author": "GRAP, Odoo Community Association (OCA)",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ class AccountMoveLine(models.Model):

def _is_matching_supplierinfo(self, supplierinfo):
res = super()._is_matching_supplierinfo(supplierinfo)
return res and (self.discount == supplierinfo.discount)
discount = self.discount1 if "discount1" in self._fields else self.discount
return res and (discount == supplierinfo.discount)

def _prepare_supplier_wizard_line(self, supplierinfo):
res = super()._prepare_supplier_wizard_line(supplierinfo)
discount = self.discount1 if "discount1" in self._fields else self.discount
res.update(
{
"current_discount": supplierinfo and supplierinfo.discount,
"new_discount": self.discount,
"new_discount": discount,
}
)
return res
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
Expand All @@ -9,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.

See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -275,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -301,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -426,7 +426,9 @@ <h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
Expand Down
3 changes: 3 additions & 0 deletions account_invoice_triple_discount/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ Authors

* QubiQ
* Tecnativa
* GRAP

Contributors
~~~~~~~~~~~~
Expand All @@ -84,7 +85,9 @@ Contributors
* `Aion Tech <https://aiontech.company/>`_:

* Simone Rubino <[email protected]>

* Laurent Mignon <[email protected]>
* Akim Juillerat <[email protected]>

Maintainers
~~~~~~~~~~~
Expand Down
1 change: 1 addition & 0 deletions account_invoice_triple_discount/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from . import models
from .hooks import post_init_hook
6 changes: 4 additions & 2 deletions account_invoice_triple_discount/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Invoice Triple Discount",
"version": "16.0.1.0.3",
"version": "16.0.2.0.0",
"category": "Accounting & Finance",
"author": "QubiQ, Tecnativa, Odoo Community Association (OCA)",
"author": "QubiQ, Tecnativa, GRAP, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"license": "AGPL-3",
"summary": "Manage triple discount on invoice lines",
"depends": ["account"],
"excludes": ["account_invoice_fixed_discount"],
"post_init_hook": "post_init_hook",
"data": ["report/invoice.xml", "views/account_move.xml"],
"installable": True,
}
17 changes: 17 additions & 0 deletions account_invoice_triple_discount/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024-Today - Sylvain Le GAL (GRAP)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import logging

_logger = logging.getLogger(__name__)


def post_init_hook(cr, registry):
_logger.info("Initializing column discount1 on table account_move_line")
cr.execute(

Check warning on line 11 in account_invoice_triple_discount/hooks.py

View check run for this annotation

Codecov / codecov/patch

account_invoice_triple_discount/hooks.py#L10-L11

Added lines #L10 - L11 were not covered by tests
"""
UPDATE account_move_line
SET discount1 = discount
WHERE discount != 0
"""
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright 2024 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from openupgradelib import openupgrade


def migrate_discount_to_discount1(env):
openupgrade.add_fields(
env,
[
(
"discount1",
"account.move.line",
"account_move_line",
"float",
"numeric",
"account_invoice_triple_discount",
0.0,
)
],
)
openupgrade.logged_query(
env.cr,
"""
UPDATE account_move_line
SET discount1 = discount;
""",
)
# if discounts are : 10% - 20% - 30% main discount is : 49.6 %
# if discounts are : 05% - 09% - 13% main discount is : 24.7885 %
openupgrade.logged_query(
env.cr,
"""
UPDATE account_move_line
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@legalsylvain Your script doesn't take into account the discount_type to compute the discount value....

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @lmignon. could you elaborate ? I don't understand what is discount_type.
In V16 :

$ rgrep "discount_type" ./ --include=*.py
./addons/l10n_it_edi/models/account_edi_format.py: discount_type = discount_element.xpath('.//Tipo')
./addons/l10n_it_edi/models/account_edi_format.py: if discount_type and discount_type[0].text == 'MG':
./addons/l10n_it_edi/models/account_edi_format.py: discount_type = discount_element.xpath('.//Tipo')
./addons/l10n_it_edi/models/account_edi_format.py: if discount_type and discount_type[0].text == 'MG':
./addons/l10n_it_edi/models/account_invoice.py: def discount_type(discount):
./addons/l10n_it_edi/models/account_invoice.py: 'discount_type': discount_type,

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SET discount = 100 * (
1 - (
(100 - COALESCE(discount1, 0.0)) / 100
* (100 - COALESCE(discount2, 0.0)) / 100
* (100 - COALESCE(discount3, 0.0)) / 100
)
);
""",
)


@openupgrade.migrate()
def migrate(env, version):
migrate_discount_to_discount1(env)
1 change: 0 additions & 1 deletion account_invoice_triple_discount/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
from . import account_move_line
from . import account_move
43 changes: 0 additions & 43 deletions account_invoice_triple_discount/models/account_move.py

This file was deleted.

Loading