Since #3521071: The provided prices have mismatched currencies, OrderForm::validateForm() compares each order item's unit price currency. A NULL unit price on the first item is skipped via empty($currency_code), but a NULL unit price on any later item is compared as $currency_code !== NULL and raises "This order contains items in different currencies", even though no mismatch exists.
Steps to reproduce: edit an existing order whose items have a unit price, add an order item that has no unit price (e.g. a variation without a price, on a non-draft order), save.
Proposed resolution: skip order items with a NULL unit price when determining and comparing the currency.
Issue fork commerce-3627381
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
intrafusionComment #6
jsacksick commented