Hello,
after Update to Magento 2.4.3 we cannot create a creditmemo anymore.
The Values in the totals input fields now formatted with currency value, which is not valid.
Has soneone an idea how to fix this? We have the shop currency in Euro (allowed Euro and Dollar), tried both, orders in $ and €, both with the same result, and the $ or € symbol in the value.
When we remove the symbol, we have to update the form, and the symbol is inserted again.
Best Regards,
Andreas
Anny solution, I face the same problem...
I am facing the same issue and trying to overcome it. Please share your progress on this.
In case anyone needs a temporary fix for this
The 2.4.3 version seems to use $block->formatValue for all the price insertions in that template, while it does tell the code to not include the currency symbol, it's not working for us either. Going back to an older version you should be able to replace:
$block->formatValue
with
$block->escapeHtmlAttr
In this file:
vendor/magento/module-sales/view/adminhtml/templates/order/creditmemo/create/totals/adjustments.phtml
Not sure if it will be patched but hopefully this will help anyone having this issue
We also encounter the problem when attempting to create a credit memo in Magento 2.4.3-p1.
Although the \Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments::formatValue specifies that no currency symbol should be printed (['display' => Zend_Currency::NO_SYMBOL]), the \Magento\Directory\Model\Currency::formatCurrency function does not strip the currency symbol. To strip the currency symbol you could apply the following patch.
--- vendor/magento/module-directory/Model/Currency.php 2021-10-06 14:52:40.000000000 +0200 +++ vendor/magento/module-directory/Model/Currency.php 2021-10-06 14:51:00.000000000 +0200 @@ -431,6 +431,7 @@ if ((array_key_exists(LocaleCurrency::CURRENCY_OPTION_DISPLAY, $options) && $options[LocaleCurrency::CURRENCY_OPTION_DISPLAY] === \Magento\Framework\Currency::NO_SYMBOL)) { $formattedCurrency = str_replace(' ', '', $formattedCurrency); + $formattedCurrency = str_replace($this->getCurrencySymbol(), '', $formattedCurrency); } return preg_replace('/^\s+|\s+$/u', '', $formattedCurrency);
Note: It is never best practice to edit core files. To apply this patch you should override the \Magento\Directory\Model\Currency class by a new preference, because the function \Magento\Directory\Model\Currency::formatCurrency is private. Alternatively, you can apply the patch using composer in the "scripts.post-install-cmd" (assuming that the patch is stored in patches/vendor-magento-module-directory-Model-Currency.patch):
composer.json
"scripts": {
"post-install-cmd": [
...
"patch --forward --dry-run vendor/magento/module-directory/Model/Currency.php patches/vendor-magento-module-directory-Model-Currency.patch > /dev/null && patch --forward vendor/magento/module-directory/Model/Currency.php patches/vendor-magento-module-directory-Model-Currency.patch > /dev/null || echo \"\\033[1;34m skipping patch \\033[0m\"",
...
]
}
I'm facing the problem too. wait for official solution.
This seems to be the according issue
https://github.com/magento/magento2/issues/34375
Related commit: