Commerce 1.2.0-rc1

I’m glad to share the first pre-release for Commerce 1.2.0 today. This was meant as a small interim release while some larger works related to payment handling needed more time to work out… so here’s the 50+ line changelog with the many fixes and a couple of new features (highlights in bold):

  • [checkout] Default frontend/checkout/payment-method.twig template now has an {% else %} condition to show an error when no payment options are available
  • [core] New Markdown service added for simple parsing of markdown text or inline snippets.
  • [core] Switch license check to a POST instead of GET to avoid 414 Request-URI Too Long issues
  • [core] Load commerce:messages lexicon by default in all requests
  • [core] When sending an email, it will now by default write the fully-parsed HTML content to the order message table. To disable that, for example while customising email templates, disable the new commerce.save_sent_message_content system setting.
  • [core] Alter the order message content field from text (max 64kb) to mediumtext (max 16mb) to allow storing large parsed emails with complex markup structures or inline data images
  • [core] Prevent recursive loop triggered by FreeProduct module
  • [core] Make sure context-specific lexicon (cultureKey) is loaded when processing status changes from either a payment webhook or back-end status change in different manager_language [#566]
  • [core] Support ClientConfig settings in multi-context mode when loading an order-specific context for processing from the back-end
  • [checkout] Fix retrying a pending payment not working [#592]
  • [dashboard] Support an extra level of nested transaction information when viewing transaction details
  • [dashboard] Fix z-index conflict causing modals to pop below the MODX header when used alongside Redactor 3 [#599]
  • [dashboard] Process MODX tags in the email preview in the manager [#584]
  • [dashboard] Prevent autocomplete on password fields
  • [dashboard] Fix license check in configuration checklist having poor performance and/or incorrect result
  • [gateways] New ConditionallyAvailableGatewayInterface allows gateway implementations to evaluate if an order can use a payment gateway
  • [gateways] Mollie gateway now exposes its client
  • [gateways] Prevent Stripe attempting to create negative transactions in edge-cases
  • [gateways] Make sure Stripe does not reuse a payment intent on the payment step if it already succeeded [#585]
  • [gateways] Make sure values passed to Stripe are stripped of spaces that may break validation [#593]
  • [gateways] Make sure Mollie gateway shows localised method names and descriptions [S23052]
  • [messages] Add a setting (commerce.default_message_type) to control what order message type to use by default when creating an order message
  • [messages] Add new templated order message type, use that for sending emails to customers wrapped in a professional template
  • [modules] Make it possible to add actions to transactions from a module using new event (\Commerce::EVENT_DASHBOARD_TRANSACTION_ACTIONS)
  • [products] Prevent adding product bundle to itself causing infinite loop [#618]
  • [products] Matrix now shows infinite stock products accordingly - if you have custom Twig templates for matrices in the front-end, you may need to also address this issue in your own template by checking product.stock_infinite [#577]
  • [products] Reduce minimum length of matrix row/column names to 1 character instead of 3 [#576]
  • [reports] Fix Addresses export; now exports addresses used in processing/completed orders rather than addresses saved on a user profile [#632]
  • [reports] New option on the “Orders” export that lets you also export associated item information in extra rows [#626]
  • [reports] Update Products export with multi-currency prices, infinite stock, and other missing fields [#526]
  • [setup] Make sure installation is marked as failed if requirements aren’t met
  • [setup] Check the database connection is still alive after unpacking files, and automatically reconnecting if not. [#600]
  • [shipments] Get weight unit from the first product rather than a hardcoded kg default
  • [taxes] Correct EUVat caching lifetime to 12 hours
  • [taxes] You can now prefix tax rule conditions with “shipping_address.”, “billing_address.”, “order.”, “order_field.” to target specific objects as needed. [#137]
  • [taxes] You can now prefix tax rule conditions with “properties.” to look in object properties. Can be combined with the object prefix for addresses and orders, e.g. “shipping_address.properties.” [#137]
  • [taxes] TaxJar integration has been updated: now uses shipping instead of billing address, no longer restricted exclusively to US (use tax rule conditions to limit if needed), update tax rate names from lexicon, provide email as customer_id (to manage customer exemptions in TaxJar), provide street + city for rooftop accuracy, support street + city in nexus
  • [taxes] EUVat tax rate names will now be updated when used, allowing improved localisation [#362]
  • [tvs] Prevent product pricing TV from breaking and refusing to save data if the TV had a numeric value before

Dependency updates:

  • commerceguys/addressing updated from v1.0.7 to v1.0.8
  • commerceguys/intl updated from v1.0.5 to v1.0.6
  • composer/ca-bundle updated from 1.2.5 to 1.2.7
  • guzzlehttp/guzzle updated from 6.4.1 to 6.5.5
  • mollie/mollie-api-php updated from v2.17.0 to v2.18.0
  • taxjar/taxjar-php updated from v1.9.0 to v1.10.3
  • symfony/polyfill-ctype updated from v1.13.1 to v1.17.1
  • twig/twig updated from v1.42.4 to v1.42.5
  • symfony/polyfill-php70 updated from v1.13.1 to v1.17.1
  • symfony/polyfill-mbstring updated from v1.13.1 to v1.17.1
  • symfony/http-foundation updated from v3.4.36 to v3.4.42
  • symfony/polyfill-php72 installed in version v1.17.0
  • symfony/polyfill-intl-idn installed in version v1.17.1