-
-
Notifications
You must be signed in to change notification settings - Fork 671
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Define route_ids as computed on the product variant, in order to reuse route_ids from its template and add or remove MTO route according to the setting on the variant. In case MTO route is changed on the template, it must reset any variant specific setting.
- Loading branch information
1 parent
e694809
commit fd5bfac
Showing
8 changed files
with
119 additions
and
60 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,24 +1,42 @@ | ||
# Copyright 2023 Camptocamp SA | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) | ||
|
||
from odoo import models, fields | ||
from odoo import _, api, models, fields | ||
|
||
class ProductTemplate(models.Model): | ||
_inherit = "product.template" | ||
|
||
has_mto_route_changed = fields.Boolean() | ||
|
||
def write(self, values): | ||
if not "route_ids" in values: | ||
return super().write(values) | ||
# This route_ids change will trigger variant's _compute_is_mto. | ||
# We want to set variant's is_mto to True only if their | ||
# template has been set to True here ↓ | ||
# As _compute_is_mto cannot use api.depends (or it would reset MTO | ||
# route on variants as soon as there is a change on the template routes), | ||
# we need to check which template in self had MTO route activated | ||
# or deactivated to force the recomputation of is_mto on variants | ||
mto_route = self.env.ref("stock.route_warehouse0_mto") | ||
template_not_mto_before = self.filtered(lambda t: mto_route not in t.route_ids) | ||
res = super().write(values) | ||
template_mto_after = self.filtered(lambda t: mto_route in t.route_ids) | ||
# Templates where mto route has changed are those where | ||
# the mto route has been set | ||
templates_mto_set = template_not_mto_before & template_mto_after | ||
templates_mto_set.has_mto_route_changed = True | ||
templates_mto_after = self.filtered(lambda t: mto_route in t.route_ids) | ||
templates_mto_added = template_not_mto_before & templates_mto_after | ||
templates_mto_removed = (self - template_not_mto_before) & (self - templates_mto_after) | ||
(templates_mto_added | templates_mto_removed).product_variant_ids._compute_is_mto() | ||
|
||
@api.onchange("route_ids") | ||
def onchange_route_ids(self): | ||
mto_route = self.env.ref("stock.route_warehouse0_mto", raise_if_not_found=False) | ||
if mto_route not in self._origin.route_ids and mto_route in self.route_ids._origin: | ||
# Return warning activating MTO route | ||
return { | ||
"warning": { | ||
"title": _("Warning"), | ||
"message": _("Activating MTO route will reset `Variant is MTO` setting on the variants.") | ||
} | ||
} | ||
if mto_route in self._origin.route_ids and mto_route not in self.route_ids._origin: | ||
# Return warning deactivating MTO route | ||
return { | ||
"warning": { | ||
"title": _("Warning"), | ||
"message": _("Deactivating MTO route will reset `Variant is MTO` setting on the variants.") | ||
} | ||
} |
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,2 @@ | ||
The checkbox `Variant is MTO` on the product variant allows | ||
to force usage or non-usage of the MTO route for the variant. |
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 +1,2 @@ | ||
* Matthieu Méquignon <[email protected]> | ||
* Akim Juillerat <[email protected]> |
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 +1,3 @@ | ||
Allow to individually set variants as Make To Order | ||
This module allows to define if a product variant can use the | ||
Make To Order route without any dependency on its template routes | ||
settings. |
This file was deleted.
Oops, something went wrong.
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