Skip to content

Commit

Permalink
[MIG] sale_global_discount: Migration to 17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
miguel-S73 committed Nov 6, 2024
1 parent 3dcd2c0 commit 9411829
Show file tree
Hide file tree
Showing 15 changed files with 97 additions and 77 deletions.
2 changes: 1 addition & 1 deletion sale_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": "Sale Global Discount",
"version": "16.0.1.0.0",
"version": "17.0.1.0.0",
"category": "Sales Management",
"author": "Tecnativa," "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/sale-workflow",
Expand Down
22 changes: 12 additions & 10 deletions sale_global_discount/hooks.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
from odoo.tools.sql import column_exists


def _pre_init_global_discount_fields(cr):
if not column_exists(cr, "sale_order", "amount_global_discount"):
cr.execute(
def _pre_init_global_discount_fields(env):
if not column_exists(env.cr, "sale_order", "amount_global_discount"):
env.cr.execute(
"""
ALTER TABLE "sale_order"
ADD COLUMN "amount_global_discount" double precision DEFAULT 0
"""
)
cr.execute(
env.cr.execute(
"""
ALTER TABLE "sale_order" ALTER COLUMN "amount_global_discount" DROP DEFAULT
"""
)
if not column_exists(cr, "sale_order", "amount_untaxed_before_global_discounts"):
cr.execute(
if not column_exists(
env.cr, "sale_order", "amount_untaxed_before_global_discounts"
):
env.cr.execute(
"""
ALTER TABLE "sale_order"
ADD COLUMN "amount_untaxed_before_global_discounts" double precision
"""
)
cr.execute(
env.cr.execute(
"""
update sale_order set amount_untaxed_before_global_discounts = amount_untaxed
"""
)
if not column_exists(cr, "sale_order", "amount_total_before_global_discounts"):
cr.execute(
if not column_exists(env.cr, "sale_order", "amount_total_before_global_discounts"):
env.cr.execute(
"""
ALTER TABLE "sale_order"
ADD COLUMN "amount_total_before_global_discounts" double precision
"""
)
cr.execute(
env.cr.execute(
"""
update sale_order set amount_total_before_global_discounts = amount_total
"""
Expand Down
31 changes: 20 additions & 11 deletions sale_global_discount/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ class SaleOrder(models.Model):
domain="[('discount_scope', '=', 'sale'), "
"('account_id', '!=', False), '|', "
"('company_id', '=', company_id), ('company_id', '=', False)]",
compute="_compute_global_discount_ids",
store=True,
readonly=False,
)
# HACK: Looks like UI doesn't behave well with Many2many fields and
# negative groups when the same field is shown. In this case, we want to
Expand Down Expand Up @@ -68,7 +71,7 @@ def _check_global_discounts_sanity(self):
return True
taxes_keys = {}
for line in self.order_line.filtered(
lambda l: not l.display_type and l.product_id
lambda _line: not _line.display_type and _line.product_id
):
if not line.tax_id:
raise exceptions.UserError(
Expand Down Expand Up @@ -139,16 +142,22 @@ def _compute_tax_totals(self):
SaleOrder, self.with_context(from_tax_calculation=True)
)._compute_tax_totals()

@api.onchange("partner_id")
def onchange_partner_id_set_gbl_disc(self):
self.global_discount_ids = (
self.partner_id.customer_global_discount_ids.filtered(
lambda d: d.company_id == self.company_id
)
or self.partner_id.commercial_partner_id.customer_global_discount_ids.filtered(
lambda d: d.company_id == self.company_id
)
)
@api.depends("partner_id", "company_id")
def _compute_global_discount_ids(self):
for order in self:
commercial = order.partner_id.commercial_partner_id
commercial_global_disc = commercial.customer_global_discount_ids
partner_global_disc = order.partner_id.customer_global_discount_ids
discounts = self.env["global.discount"]
_discounts = self.env["global.discount"]
if partner_global_disc:
_discounts = partner_global_disc
else:
_discounts = commercial_global_disc
for discount in _discounts:
if discount.company_id == order.company_id:
discounts |= discount
order.global_discount_ids = discounts

def _prepare_invoice(self):
invoice_vals = super()._prepare_invoice()
Expand Down
4 changes: 4 additions & 0 deletions sale_global_discount/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@
- David Vidal
- Pedro M. Baeza
- Omar Castiñeira \<<[email protected]>\>

- [Studio73](https://www.studio73.es)
- Miguel Gandia

4 changes: 4 additions & 0 deletions sale_global_discount/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,10 @@ <h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
</ul>
</li>
<li>Omar Castiñeira &lt;<a class="reference external" href="mailto:omar&#64;comunitea.com">omar&#64;comunitea.com</a>&gt;</li>
<li><a class="reference external" href="https://www.studio73.es">Studio73</a><ul>
<li>Miguel Gandia</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
Expand Down
4 changes: 3 additions & 1 deletion sale_global_discount/tests/test_sale_global_discount.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ def setUpClass(cls, chart_template_ref=None):
"account_id": cls.account.id,
}
)
cls.pricelist = cls.env.ref("product.list0")
cls.pricelist = cls.env["product.pricelist"].create(
{"name": "Public Pricelist", "sequence": 1}
)
cls.partner_1 = cls.env["res.partner"].create(
{"name": "Mr. Odoo", "property_product_pricelist": cls.pricelist.id}
)
Expand Down
40 changes: 21 additions & 19 deletions sale_order_general_discount/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ Sale Order General Discount

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to set a general discount in a sales order. This general
discount is set to each line order in the standard `discount` field.
This module allows to set a general discount in a sales order. This
general discount is set to each line order in the standard discount
field.

You can configure:
* a default general discount on customers
* On each product define if general discount is applied

- a default general discount on customers
- On each product define if general discount is applied

**Table of contents**

Expand All @@ -43,19 +45,19 @@ You can configure:
Installation
============

You need to install sale_management module for accessing the needed menus.
You need to install sale_management module for accessing the needed
menus.

Usage
=====

To use this module, you need to:

#. Create a sale order and set a discount,
this discount will be set in all lines.
#. You can set a discount in a partner.
#. On product you can define if you
apply general discount on sale order line
linked to that product
1. Create a sale order and set a discount, this discount will be set in
all lines.
2. You can set a discount in a partner.
3. On product you can define if you apply general discount on sale order
line linked to that product

Bug Tracker
===========
Expand All @@ -71,23 +73,23 @@ Credits
=======

Authors
~~~~~~~
-------

* Tecnativa

Contributors
~~~~~~~~~~~~
------------

* `Tecnativa <https://www.tecnativa.com>`_:
- `Tecnativa <https://www.tecnativa.com>`__:

* Sergio Teruel <[email protected]>
* Stefan Ungureanu <[email protected]>
- Sergio Teruel <[email protected]>
- Stefan Ungureanu <[email protected]>

* Raf Ven <[email protected]>
* Sudhir Arya <[email protected]>
- Raf Ven <[email protected]>
- Sudhir Arya <[email protected]>

Maintainers
~~~~~~~~~~~
-----------

This module is maintained by the OCA.

Expand Down
5 changes: 5 additions & 0 deletions sale_order_general_discount/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- [Tecnativa](https://www.tecnativa.com):
- Sergio Teruel \<<[email protected]>\>
- Stefan Ungureanu \<<[email protected]>\>
- Raf Ven \<<[email protected]>\>
- Sudhir Arya \<<[email protected]>\>
7 changes: 0 additions & 7 deletions sale_order_general_discount/readme/CONTRIBUTORS.rst

This file was deleted.

7 changes: 7 additions & 0 deletions sale_order_general_discount/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
This module allows to set a general discount in a sales order. This
general discount is set to each line order in the standard discount
field.

You can configure:
- a default general discount on customers
- On each product define if general discount is applied
6 changes: 0 additions & 6 deletions sale_order_general_discount/readme/DESCRIPTION.rst

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
You need to install sale_management module for accessing the needed menus.
You need to install sale_management module for accessing the needed
menus.
7 changes: 7 additions & 0 deletions sale_order_general_discount/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
To use this module, you need to:

1. Create a sale order and set a discount, this discount will be set in
all lines.
2. You can set a discount in a partner.
3. On product you can define if you apply general discount on sale
order line linked to that product
8 changes: 0 additions & 8 deletions sale_order_general_discount/readme/USAGE.rst

This file was deleted.

24 changes: 11 additions & 13 deletions sale_order_general_discount/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -370,16 +370,14 @@ <h1 class="title">Sale Order General Discount</h1>
!! source digest: sha256:a4eeadfa3e2fc4ad9f54244dc002a32d12938c91207c4f729001730ca727a156
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/17.0/sale_order_general_discount"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-17-0/sale-workflow-17-0-sale_order_general_discount"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to set a general discount in a sales order. This general
discount is set to each line order in the standard <cite>discount</cite> field.</p>
<dl class="docutils">
<dt>You can configure:</dt>
<dd><ul class="first last simple">
<p>This module allows to set a general discount in a sales order. This
general discount is set to each line order in the standard discount
field.</p>
<p>You can configure:</p>
<ul class="simple">
<li>a default general discount on customers</li>
<li>On each product define if general discount is applied</li>
</ul>
</dd>
</dl>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
Expand All @@ -396,18 +394,18 @@ <h1 class="title">Sale Order General Discount</h1>
</div>
<div class="section" id="installation">
<h1><a class="toc-backref" href="#toc-entry-1">Installation</a></h1>
<p>You need to install sale_management module for accessing the needed menus.</p>
<p>You need to install sale_management module for accessing the needed
menus.</p>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Create a sale order and set a discount,
this discount will be set in all lines.</li>
<li>Create a sale order and set a discount, this discount will be set in
all lines.</li>
<li>You can set a discount in a partner.</li>
<li>On product you can define if you
apply general discount on sale order line
linked to that product</li>
<li>On product you can define if you apply general discount on sale order
line linked to that product</li>
</ol>
</div>
<div class="section" id="bug-tracker">
Expand Down

0 comments on commit 9411829

Please sign in to comment.