Skip to content

Commit

Permalink
[17.0][MIG] account_global_discount: Migration to 17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
miguel-S73 committed Nov 19, 2024
1 parent 0b24567 commit 58c9fb4
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 23 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 \<<omar@comunitea.com>\>

- [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

0 comments on commit 58c9fb4

Please sign in to comment.