diff --git a/CHANGELOG.md b/CHANGELOG.md index 53d6661684..6c4bdb0671 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Release Notes for Craft Commerce +## Unreleased + +- Fixed a bug where currency-based order condition rules could show the incorrect currency. ([#4368](https://github.com/craftcms/commerce/issues/4368)) + ## 5.7.4 - 2026-09-15 - Fixed a bug where custom order fields with a visibility condition based on order attributes couldn’t be saved. ([#4198](https://github.com/craftcms/commerce/issues/4198)) diff --git a/src/elements/conditions/orders/OrderCurrencyValuesAttributeConditionRule.php b/src/elements/conditions/orders/OrderCurrencyValuesAttributeConditionRule.php index da52e79b67..bd0d3fcd66 100644 --- a/src/elements/conditions/orders/OrderCurrencyValuesAttributeConditionRule.php +++ b/src/elements/conditions/orders/OrderCurrencyValuesAttributeConditionRule.php @@ -17,6 +17,7 @@ use craft\elements\conditions\ElementConditionInterface; use craft\fields\conditions\MoneyFieldConditionRule; use craft\fields\Money; +use craft\helpers\Cp; use craft\models\Site; use Money\Currency; use yii\db\QueryInterface; @@ -71,10 +72,14 @@ public function setCondition(ConditionInterface $condition): void if ($this->getCondition() instanceof HasStoreInterface) { $this->currency = $this->getCondition()->getStore()->getCurrency(); } else { + if (Craft::$app->getRequest()->getIsCpRequest()) { + $currentSite = Cp::requestedSite(); + } else { + $currentSite = Craft::$app->getSites()->getCurrentSite(); + } /** @var Site|StoreBehavior|null $currentSite */ - $currentSite = Craft::$app->getSites()->getCurrentSite(); - if ($currentSite->getBehavior(StoreBehavior::class)) { + if ($currentSite->getBehavior('commerce:store')) { $this->currency = $currentSite?->getStore()->getCurrency(); } }