-
-
Notifications
You must be signed in to change notification settings - Fork 281
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[16.0][IMP] base_global_discount: Add flag in product to bypass discount
- Loading branch information
1 parent
763f4e9
commit d160ff9
Showing
5 changed files
with
90 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
from . import global_discount | ||
from . import product_product | ||
from . import product_template | ||
from . import res_partner |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Copyright 2024 Studio73 - Ferran Mora <[email protected]> | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). | ||
|
||
from odoo import fields, models | ||
|
||
|
||
class ProductProduct(models.Model): | ||
_inherit = "product.product" | ||
|
||
bypass_global_discount = fields.Boolean( | ||
string="Don't apply global discount", | ||
help=( | ||
"If this checkbox is ticked, it means that this product will not be taken " | ||
"into account when calculating the global discounts." | ||
), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Copyright 2024 Studio73 - Ferran Mora <[email protected]> | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). | ||
|
||
from odoo import api, fields, models | ||
|
||
|
||
class ProductTemplate(models.Model): | ||
_inherit = "product.template" | ||
|
||
bypass_global_discount = fields.Boolean( | ||
string="Don't apply global discount", | ||
help=( | ||
"If this checkbox is ticked, it means that this product will not be taken " | ||
"into account when calculating the global discounts." | ||
), | ||
compute="_compute_bypass_global_discount", | ||
inverse="_inverse_bypass_global_discount", | ||
) | ||
|
||
def _search_bypass_global_discount(self, operator, value): | ||
templates = self.with_context(active_test=False).search( | ||
[("product_variant_ids.bypass_global_discount", operator, value)] | ||
) | ||
return [("id", "in", templates.ids)] | ||
|
||
@api.depends("product_variant_ids.bypass_global_discount") | ||
def _compute_bypass_global_discount(self): | ||
self.bypass_global_discount = False | ||
for template in self: | ||
if len(template.product_variant_ids) == 1: | ||
template.bypass_global_discount = ( | ||
template.product_variant_ids.bypass_global_discount | ||
) | ||
|
||
def _inverse_bypass_global_discount(self): | ||
if len(self.product_variant_ids) == 1: | ||
self.product_variant_ids.bypass_global_discount = ( | ||
self.bypass_global_discount | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo> | ||
<record id="product_normal_form_view" model="ir.ui.view"> | ||
<field name="name">sale_order_global_discount.product_normal_form_view</field> | ||
<field name="model">product.product</field> | ||
<field name="priority" eval="16" /> | ||
<field name="inherit_id" ref="product.product_normal_form_view" /> | ||
<field name="arch" type="xml"> | ||
<xpath expr="//group[@name='group_standard_price']" position="inside"> | ||
<field | ||
name="bypass_global_discount" | ||
groups="base_global_discount.group_global_discount" | ||
/> | ||
</xpath> | ||
</field> | ||
</record> | ||
<record id="product_template_only_form_view" model="ir.ui.view"> | ||
<field name="name">product.template.sale_order_global_discount.form</field> | ||
<field name="model">product.template</field> | ||
<field name="priority" eval="24" /> | ||
<field name="inherit_id" ref="product.product_template_only_form_view" /> | ||
<field name="arch" type="xml"> | ||
<xpath expr="//group[@name='group_standard_price']" position="inside"> | ||
<field | ||
name="bypass_global_discount" | ||
attrs="{'invisible': [('product_variant_count', '>', 1)]}" | ||
groups="base_global_discount.group_global_discount" | ||
/> | ||
</xpath> | ||
</field> | ||
</record> | ||
</odoo> |