mirror of
https://github.com/OCA/server-backend.git
synced 2025-02-18 09:52:42 +02:00
[16.0][IMP] base_global_discount: Add flag in product to bypass discount
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
"security/security.xml",
|
"security/security.xml",
|
||||||
"security/ir.model.access.csv",
|
"security/ir.model.access.csv",
|
||||||
"views/global_discount_views.xml",
|
"views/global_discount_views.xml",
|
||||||
|
"views/product_views.xml",
|
||||||
"views/res_partner_views.xml",
|
"views/res_partner_views.xml",
|
||||||
],
|
],
|
||||||
"application": False,
|
"application": False,
|
||||||
|
|||||||
@@ -1,2 +1,4 @@
|
|||||||
from . import global_discount
|
from . import global_discount
|
||||||
|
from . import product_product
|
||||||
|
from . import product_template
|
||||||
from . import res_partner
|
from . import res_partner
|
||||||
|
|||||||
16
base_global_discount/models/product_product.py
Normal file
16
base_global_discount/models/product_product.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Copyright 2024 Studio73 - Ferran Mora <ferran@studio73.es>
|
||||||
|
# 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."
|
||||||
|
),
|
||||||
|
)
|
||||||
39
base_global_discount/models/product_template.py
Normal file
39
base_global_discount/models/product_template.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Copyright 2024 Studio73 - Ferran Mora <ferran@studio73.es>
|
||||||
|
# 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
|
||||||
|
)
|
||||||
32
base_global_discount/views/product_views.xml
Normal file
32
base_global_discount/views/product_views.xml
Normal file
@@ -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>
|
||||||
Reference in New Issue
Block a user