Install
Works with Drupal: ^9.3 || ^10Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
Introducing a new store dashboard, bugfixes and more.

Note: some dashboard functionality can be disabled by setting the following variables to FALSE in settings.php, though the inbox should remain to present messages generated during module update or installation hooks.
commerce_dashboard_show_toolbar_link(disable toolbar link with unread indicator)commerce_dashboard_fetch_inbox_messages(do not get messages from project feed)
Further customize the dashboard from your own contributed modules or site-specific customizations via hook_commerce_dashboard_page_build_alter().
Other updates to note
Commerce Core now requires Address 2.x. If you encounter issues while updating to Commerce Core 2.37, explicitly updating the Address module at the same time might be required using the following command:
composer require 'drupal/commerce:^2.37' 'drupal/address:^2.0' -W
Additionally, to improve the dashboard utility, this new release moves the product attributes menu item into the configuration menu hierarchy. This reflects a similar change in the coordinated Commerce Shipping release, which moves the shipping method menu item.
Contributors (40)
czigor, loze, jsacksick, khiminrm, kaszarobert, geek-merlin, lisastreeter, rszrama, majmunbog, vmarchuk, TomTech, Mohd Sahzad, tibezh, tBKoT, bojanz, dzhebrak, alexpott, edwardsay, Jing Qian, mglaman, Nigel Cunningham, rinasek, jefuri, NightAr, k.prozorov, andyrigby, mrhorse, xavier.masson, mbovan, Morbus Iff, RedwanJamous, ts.ag, viren18febS, Patryk Padus, tonytheferg, athenenyarai@gmail.com, Anybody, MacSim, firfin, Upchuk
Changelog
Issues: 59 issues resolved.
Changes since 8.x-2.36:
Bug
- #2890837 by czigor, loze: Order item type being ignored by the widget.
- #2819603 followup by jsacksick: Move the shipping profile relationship to commerce_shipping.
- #3401208 by khiminrm, kaszarobert: Guest registration after checkout user registration language
- #3354205 by geek-merlin, jsacksick, lisastreeter: Prevent WSOD when loading a store-orphaned order.
- #3411453 by jsacksick: Shipping promotion usage isn't registered.
- #3380846 by Mohd Sahzad, kaszarobert, tibezh: PHP 8.3 Deprecated function: Calling get_class() without arguments is deprecated.
- #3409495 by dzhebrak: TypeError: Drupal\Core\Field\FieldTypeCategory::getDescription(): Return value must be of type Drupal\Core\StringTranslation\TranslatableMarkup, string returned.
- #3406893 by alexpott: New FailedPayment logging causes PHP error.
- #3107121: Audit usage of token replace regarding metadata
- #3404821 followup by alexpott: Fix a phpcs violation introduced.
- #3137498 by tBKoT: Unable to unpublish a product variation.
- #3394241: A canceled free order should not be considered paid.
- #3404037 by majmunbog: Tax types page styling.
- #3403743 by majmunbog, rinasek, jsacksick: Fix stylelint issues.
- #3059389: payment_method_types config getting duplicated.
- Revert "Issue #3205686 by jefuri, NightAr: CartSession headers issue with big pipe sessionless."
- #3099156 by jsacksick: Cannot use exposed filter `State` when a (product) view is filtered by product type.
- #3173426 by tBKoT: Layout builder does not work when there is a product attribute without values.
- #3391557 by k.prozorov: Error with CommerceGuys\Addressing\Zone\Zone->match().
- #3395298 by xavier.masson, jsacksick: Ensure invoking early the CurrentLocale service does not crash.
- #3115150 by mbovan: Submitting add to cart form with empty quantity value results in an exception.
- #3396356 by Morbus Iff: Payment gateway ID not shown if there's only one payment gateway.
- #3395498 by jsacksick: BuyXGetY doesn't play well with other promotions.
- #3396663 by RedwanJamous: Changing log version mismatch setting has no effect.
- #3392225 by ts.ag: Promotion applies() doesn't exclude $this when checking other promotions, if set as COMPATIBLE_NONE.
- #3396089 by viren18febS, Patryk Padus: Removed type of field left WSOD on product variation type screen.
- #3400651 by lkacenja Inline errors on price field are not visible.
- #3383333 by tonytheferg: Ensure the order exists in PaymentOrderUpdater::updateOrder().
- #3386392 by jsacksick, athenenyarai@gmail.com: The promotion combination offer plugin doesn't invoke the suboffers clearing logic.
- #3379152 by TomTech, jsacksick: Skip Order Refresh on draft anonymous orders on CLI.
- #3380805 by Anybody: Ensure the receiptSubject is translatable.
- #3182117 by firfin: Netherlands added 0% tax rate for some items.
- #3365030 followup: Fix additional warnings reported by Upgrade Status.
Feature
- #3409768 by jsacksick, rszrama, majmunbog, khiminrm: Implement a basic store dashboard at /admin/commerce.
- #3410044 by rszrama, vmarchuk, khiminrm, jsacksick, TomTech: Catch all exceptions on the payment return page.
- #3336270 by khiminrm, rszrama, jsacksick: Indicate when an order is locked on the admin view page.
- #3387368 by edwardsay, jsacksick: Add description to Commerce Condition.
- #3112812 by tBKoT, alexpott, jsacksick, lisastreeter, Jing Qian: Add logging for payment failures during checkout.
- #3031997 by jsacksick: Allow viewing coupons on order page.
- #3405381 by jsacksick, lisastreeter, Jing Qian, mglaman, Nigel Cunningham, tBKoT: Add an event for payment failures during checkout.
- #3322369: Use order label for entity print.
- #2899638 by andyrigby, mrhorse: Add non-taxable type for adding an item that isn't taxable to an order with taxed items.
- #3400185: Make Quantity widget to respect the "allow_decimal" property.
- #3396798: Output just the card type when the card number is empty.
- #3379407 by tonytheferg: Allow deleting manual payments through the UI.
- #3139108 by lisastreeter, Upchuk, mglaman, loze, jsacksick: Single Variation Widget - Allow to choose form mode.
Task
- #3361907 by tBKoT, jsacksick, bojanz: Require Address 2.x.
- #3409769 by khiminrm: Move product attributes menu item to the configuration menu
- #3408624: Update EU tax rates for 2024.
- #3407714 by geek-merlin: Require IEF ^1 || ^3.
- #3406432 followup by jsacksick: Stop ignoring the toRenderArray() deprecations().
- #3405463 by alexpott: Enable PHPStan.
- #3404282 by jsacksick: Improve the order version exception logging.
- #3402426 followup by jsacksick: Fix the last failing test on D10.
- #3385414: Provide a basic replacement for Classys messages library in the Payment module
- #3401956: hook_field_widget_form_alter was removed in D10
- #3393065 by rszrama: Vertically align the shipping / billing information in the order receipt email
- #3386213 by rszrama: Fix a misnamed @var declaration in template_preprocess_commerce_product_attribute_value().
- #3378252 by MacSim, jsacksick: Email validator should rely on the drupal service instead of injecting Egulias lib.