If you are seeing this page, that alone confirms the currently installed module is at least new enough to have this route - if it 404s instead, the server is still running an older version than you think.
| Installed module version (from the manifest Odoo actually loaded) | 18.0.4.17.0 |
| Cookie 'cbs_website_display_currency_id' as read by the SERVER (request.httprequest.cookies) | None |
| Session key 'website_display_currency_id' as read by the SERVER (request.session) | None |
| get_display_currency(env) result - this is exactly what every price-conversion check in this module uses | False (no conversion - prices will show un-converted) |
| Full raw Cookie header the server received | |
| Is this visitor logged in? | No (public/anonymous) |
Reload this page immediately after picking a different currency from the header dropdown (same tab, no other tabs open to this site) and compare the values above each time.
| website.currency_id (what the template hardcodes as source/display_currency) | USD (id=1) |
| price_reduce value returned by _get_sales_prices (this is what the template's t-out actually receives) | 17.2 |
| get_converted_value_currency(that exact value) - what value_to_html's marker check sees | False (not marked as converted) |
| Actual HTML value_to_html produced for this value+options, RIGHT NOW, calling the real method | $ 17.2 |
If the currency shown inside that last HTML string does not match the currency you have selected, the bug is confirmed to be inside value_to_html/the marker check itself, not in how the grid calls it or in anything upstream (cookie/session) - all of which this page's own table above already shows are correct.
As of this version, /shop and product pages now get Cache-Control: no-store and Vary: Cookie response headers whenever a visitor has chosen a display currency, specifically to stop a CDN/reverse-proxy cache (confirmed as the actual cause on this site - the simulation above matched the chosen currency correctly while the real page did not, which only a cache sitting in front of this server can explain) from serving one visitor's cached page to a different visitor with a different currency choice.