Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][FIX] sale_stock_release_channel_partner_by_date*: fix computation of release channel #955

Open
wants to merge 2 commits into
base: 16.0
Choose a base branch
from

Conversation

sebalix
Copy link
Contributor

@sebalix sebalix commented Nov 29, 2024

Aims to supersede #954

@sebalix sebalix added the bug Something isn't working label Nov 29, 2024
@sebalix sebalix added this to the 16.0 milestone Nov 29, 2024
@sebalix sebalix changed the title [16.0][FIX] sale_stock_release_channel_partner_by_date_delivery: fix computation of release channel [16.0][FIX] sale_stock_release_channel_partner_by_date*: fix computation of release channel Nov 29, 2024
@sebalix sebalix marked this pull request as ready for review November 29, 2024 11:27
@@ -42,7 +42,8 @@ def _compute_release_channel_id(self):
if not rec._check_release_channel_partner_date_requirements():
continue
channel_date = rec.release_channel_partner_date_id
rec.release_channel_id = channel_date.release_channel_id
if channel_date:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you can check here that the warehouse is compatible with the currently selected channel? Like you did for the carrier.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes indeed. But I have still one open questions about this (you can check the test where there are FIXME in this PR):

If we have configured a channel X (with a carrier) and Y (no carrier), and have a specific channel date set for X.

Currently if we do not define a carrier on the SO, the computed release channel wil be taken from the configured specific channel (as it's the only one that exists). So the SO will show the release channel X.

Then we validate the SO, and we trigger the channel assignment on the delivery: it is now assigned to the release channel Y (of course, there was no carrier defined, I guess it fallbacks on Y because of that).

IMO this is not what the user will expect.

How should we handle SO without carrier (same question for SO without warehouse) regarding release channels?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think you should not include False for warehouse/carrier in _get_release_channel_partner_date_domain. The warehouse should be set by a default value. For the carrier, it is set by delivery_auto_refresh. So if one of them is empty, then we should not show a channel that has a restriction that is not respected

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree (I don't remember why we searched on carrier_id=False in the initial implementation, we did that together and on purpose 🤔 ).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the warehouse, while we could state it is always set on the SO (I could not find some without WH in customers DBs), it is however not mandatory on the release channel. We should consider these release channels as elligible, and thus keep our check on warehouse_id=False in the domain.

order.carrier_id = self.carrier2
self.assertFalse(order.release_channel_id)
self.assertFalse(order.carrier_id)
self.assertEqual(order.release_channel_id, self.carrier_channel)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks wrong to me. If the channel has a carrier restriction and the order has no carrier, you cannot end-up with the channel auto assigned to the SO

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixup pushed

Copy link
Contributor

@Ricardoalso Ricardoalso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants