You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It’s now possible to manage multiple stores (up to five). (#2283)
It’s now possible to manage multiple inventory locations (up to five). (#2286, #2669)
Added support for catalog pricing of purchasables, improving scalability and pricing flexibility for high-volume stores.
Products now support drafts, autosaving, and versioning. (#2358)
Product variants are now managed via nested element indexes rather than inline-editable blocks.
Product variants’ field layouts now support multiple tabs.
Product pages’ breadcrumbs now include a menu that links to each editable product type.
It’s now possible to create new products from product select modals when a custom source is selected, if the source is configured to only show products of one type.
The Products index page now shows a primary “New product” button when a custom source is selected, if the source is configured to only show products of one type.
Order conditions can now have a “Total Weight” rule.
Shipping methods and shipping rules now support flexible order matching, based on an order condition.
Users’ orders, carts, and subscriptions are now managed on a dedicated “Commerce” screen within Edit User sections.
Administration
Added a new “Manage inventory stock levels” permission.
Added a new “Manage inventory locations” permission.
Development
Added the currentStore Twig variable.
Added commerce/pricing-catalog/generate command.
Deprecated the hasUnlimitedStock variant query param. inventoryTracked should be used instead.
Removed the shippingCategory, shippingCategoryId, taxCategory, and taxCategoryId product query params. The corresponding variant query params can be used instead.
Removed the showEditUserCommerceTab config setting.
Deprecated craft\commerce\base\Purchasable::getOnSale(). getOnPromotion() should be used instead.
Deprecated craft\commerce\base\Variant::hasUnlimitedStock(). craft\commerce\base\Purchasable::$inventoryTracked should be used instead.
Deprecated craft\commerce\elements\Order::$totalSaleAmount. $totalPromotionalAmount should be used instead.
Deprecated craft\commerce\elements\Variant::getProduct(). getOwner() should be used instead.
Deprecated craft\commerce\elements\Variant::getProductId(). getOwnerId() should be used instead.
Deprecated craft\commerce\elements\Variant::setProduct(). setOwner() should be used instead.
Deprecated craft\commerce\elements\Variant::setProductId(). setOwnerId() should be used instead.
Deprecated craft\commerce\elements\conditions\products\ProductVariantHasUnlimitedStockConditionRule. ProductVariantInventoryTrackedConditionRule should be used instead.
Deprecated craft\commerce\models\Store::getCountries(). craft\commerce\models\Store::getSettings()->getCountries() should be used instead.
Deprecated craft\commerce\models\Store::getMarketAddressCondition(). craft\commerce\models\Store::getSettings()->getMarketAddressCondition() should be used instead.
Deprecated craft\commerce\models\Store::setCountries(). craft\commerce\models\Store::getSettings()->setCountries() should be used instead.
Removed craft\commerce\models\ProductType::$hasVariants. $maxVariants can be used instead.
Removed craft\commerce\models\Settings::$allowCheckoutWithoutPayment. craft\commerce\models\Store::getAllowCheckoutWithoutPayment() can be used instead.
Removed craft\commerce\models\Settings::$allowEmptyCartOnCheckout. craft\commerce\models\Store::getAllowEmptyCartOnCheckout() can be used instead.
Removed craft\commerce\models\Settings::$allowPartialPaymentOnCheckout. craft\commerce\models\Store::getAllowPartialPaymentOnCheckout() can be used instead.
Removed craft\commerce\models\Settings::$autoSetCartShippingMethodOption. craft\commerce\models\Store::getAutoSetCartShippingMethodOption() can be used instead.
Removed craft\commerce\models\Settings::$autoSetNewCartAddresses. craft\commerce\models\Store::getAutoSetNewCartAddresses() can be used instead.
Removed craft\commerce\models\Settings::$autoSetPaymentSource. craft\commerce\models\Store::getAutoSetPaymentSource() can be used instead.
Removed craft\commerce\models\Settings::$emailSenderName. craft\commerce\models\Email::$senderName can be used instead.
Removed craft\commerce\models\Settings::$freeOrderPaymentStrategy. craft\commerce\models\Store::getFreeOrderPaymentStrategy() can be used instead.
Removed craft\commerce\models\Settings::$minimumTotalPriceStrategy. craft\commerce\models\Store::getMinimumTotalPriceStrategy() can be used instead.
Removed craft\commerce\models\Settings::$pdfPaperOrientation. craft\commerce\models\Pdf::$paperOrientation can be used instead.
Removed craft\commerce\models\Settings::$pdfPaperSize. craft\commerce\models\Pdf::$paperSize can be used instead.
Removed craft\commerce\models\Settings::$requireBillingAddressAtCheckout. craft\commerce\models\Store::getRequireBillingAddressAtCheckout() can be used instead.
Removed craft\commerce\models\Settings::$requireShippingAddressAtCheckout. craft\commerce\models\Store::getRequireShippingAddressAtCheckout() can be used instead.
Removed craft\commerce\models\Settings::$requireShippingMethodSelectionAtCheckout. craft\commerce\models\Store::getRequireShippingMethodSelectionAtCheckout() can be used instead.
Removed craft\commerce\models\Settings::$useBillingAddressForTax. craft\commerce\models\Store::getUseBillingAddressForTax() can be used instead.
Removed craft\commerce\models\Settings::$validateBusinessTaxIdasVatId. craft\commerce\models\Store::getValidateOrganizationTaxIdasVatId() can be used instead.
Removed craft\commerce\models\Settings::FREE_ORDER_PAYMENT_STRATEGY_COMPLETE. craft\commerce\models\Store::FREE_ORDER_PAYMENT_STRATEGY_COMPLETE can be used instead.
Removed craft\commerce\models\Settings::FREE_ORDER_PAYMENT_STRATEGY_PROCESS. craft\commerce\models\Store::FREE_ORDER_PAYMENT_STRATEGY_PROCESS can be used instead.
Removed craft\commerce\models\Settings::MINIMUM_TOTAL_PRICE_STRATEGY_DEFAULT. craft\commerce\models\Store::MINIMUM_TOTAL_PRICE_STRATEGY_DEFAULT can be used instead.
Removed craft\commerce\models\Settings::MINIMUM_TOTAL_PRICE_STRATEGY_SHIPPING. craft\commerce\models\Store::MINIMUM_TOTAL_PRICE_STRATEGY_SHIPPING can be used instead.
Removed craft\commerce\models\Settings::MINIMUM_TOTAL_PRICE_STRATEGY_ZERO. craft\commerce\models\Store::MINIMUM_TOTAL_PRICE_STRATEGY_ZERO can be used instead.