- Improved the performance of
craft\commerce\elements\Product::getVariants()
. (#3578) - Fixed a SQL error that could occur when creating a variant. (#3763)
- Fixed a performance degradation bug with variant queries. (#3758)
- Fixed a bug where it was possible to select purchasables that didn’t belong to an order’s site, from Edit Order pages. (#3756)
- Fixed a PHP error that could occur when retrieving a variant. (#3754)
- Fixed a bug where product revisions weren’t storing variant relations.
- Fixed a PHP error that occurred when calling a product or variant’s
render()
method. (#3742) - Fixed a bug where inventory data wasn’t getting saved when creating a new variant. (#3661)
- Fixed a bug where the Commerce subnav could be missing the “Product” nav item. (#3735)
- Fixed PHP errors that could occur when completing an order. (#3733, #3736)
- Products can now be structured, per product type.
- It’s now possible for discounts to explicitly require a coupon code. (#3132)
- New order addresses now default to the store’s country on Order Edit screens. (#3306)
- Product conditions can now have a “Variant Search” rule. (#3689)
- Added the
onPromotion
purchasable query param. - Added the
onPromotion
GraphQL variant query argument.
- Added
craft\commerce\console\controllers\UpgradeController::$v3droppableColumns
- Added
craft\commerce\console\controllers\UpgradeController::EVENT_BEFORE_DROP_V3_DATABASE_ENTITIES
. - Added
craft\commerce\elements\Product::EVENT_DEFINE_PARENT_SELECTION_CRITERIA
. - Added
craft\commerce\elements\conditions\products\ProductVariantSearchConditionRule
. - Added
craft\commerce\elements\db\Purchasable::$onPromotion
. - Added
craft\commerce\elements\db\Purchasable::onPromotion()
. - Added
craft\commerce\events\UpgradeEvent
. - Added
craft\commerce\models\Discount::$requireCouponCode
. - Added
craft\commerce\models\ProductType::$isStructure
. - Added
craft\commerce\models\ProductType::$maxLevels
. - Added
craft\commerce\models\ProductType::$structureId
. - Added
craft\commerce\models\ProductType::DEFAULT_PLACEMENT_BEGINNING
. - Added
craft\commerce\models\ProductType::DEFAULT_PLACEMENT_END
. - Added
craft\commerce\models\ProductType::getConfig()
.
- Improved the performance of adding items to the cart.
- Improved the performance of shipping rule matching when an order condition formula is used. (3653)
- Craft Commerce now requires Money PHP 4.2 or later.
- Fixed a bug where outstanding order balances could be calculated incorrectly. (#3403)
- Fixed a PHP error that could occur when creating a subscription. (#3710)
- Fixed a bug where inventory items could appear with blank descriptions on the Inventory management screen. (#3706)
- Fixed a bug where additional buttons defined with
craft\commerce\elements\Order::EVENT_DEFINE_ADDITIONAL_BUTTONS
weren’t displayed on Edit Order screens. (#3692) - Fixed a bug where email errors weren’t displayed on Edit Order screens. (#3693)
- Fixed a bug where
craft\commerce\helpers\Currency::formatAsCurrency()
wasn’t stripping zeros. (#3716)
- Fixed a bug where variants weren’t respecting their product’s propagation method.
- Fixed a PHP error that could occur when creating a new product.
- Fixed a bug where Edit Product screens were showing shipping categories that weren’t available to the current store. (#3690)
- Fixed a bug where Edit Product screens were showing tax categories that weren’t available to the product type.. (#3690)
- Fixed a bug where Edit Order screens were displaying the store name twice.
- Fixed a bug where
craft\commerce\models\CatalogPricingRule::$description
was not being populated. (#3699) - Fixed a bug where catalog pricing rules were generating prices incorrectly. (#3700)
- Fixed a PHP error that could occur when deleting a user with orders. (#3686)
- Fixed a bug where shipping methods weren’t validating if a shipping method in a different store had the same name. (#3676)
- Fixed a bug where any modifications to
craft\commerce\events\CreateSubscriptionEvent::$parameters
weren’t being passed to the gateway’ssubscribe()
method. - Fixed a bug where stores’ aggregate stock levels weren’t getting updated when inventory changed. (#3668)
- Fixed a bug where addresses weren’t being automatically added on Edit Order screens. (#3673)
- Fixed a PHP error that could occur when viewing an Edit Order screen after deleting a purchasable. (#3677)
- Fixed a bug where some strings weren’t getting translated on Edit Order screens.
- Fixed a JavaScript error that could occur when editing an order.
- Fixed XSS vulnerabilities.
- Fixed a bug where catalog pricing rules weren’t respecting product conditions. (#3544)
- It’s now possible to manage transfers between inventory locations.
- Catalog pricing rules now support flexible matching based on product and variant conditions. (#3544)
- Variant conditions can now have an “SKU” rule.
- It’s now possible to create custom line items. (#2301, #2233, #2345)
- Added the “Propagation Method” setting to product types. (#3537, #3296, #3372, #2375)
- Added “Title Translation Method” settings to product types, for products and variants. (#3462, #2466)
- Added support for selecting products in Link fields.
- Added the “Manage donation settings” permission.
- Added the “Manage inventory transfers” permission.
- Added the “Manage payment currencies” permission.
- Added the “Manage store general setting” permission.
- Added the “Manage subscription plans” permission.
- Added
craft\commerce\controllers\TransfersController
. - Added
craft\commerce\elements\Order::EVENT_AFTER_LINE_ITEMS_REFRESHED
. - Added
craft\commerce\elements\Order::EVENT_BEFORE_LINE_ITEMS_REFRESHED
. - Added
craft\commerce\elements\Product::$defaultBasePrice
. - Added
craft\commerce\elements\Product::$storeId
. - Added
craft\commerce\elements\Product::getCurrencyAttributes()
. - Added
craft\commerce\elements\Product::getStore()
. - Added
craft\commerce\elements\Transfer
. - Added
craft\commerce\elements\conditions\products\CatalogPricingRuleProductCondition
. - Added
craft\commerce\elements\conditions\transfers\TransferCondition
. - Added
craft\commerce\elements\conditions\variants\CatalogPricingRuleVariantCondition
. - Added
craft\commerce\elements\db\TransferQuery
. - Added
craft\commerce\enums\LineItemType
. - Added
craft\commerce\enums\TransferStatusType
. - Added
craft\commerce\fieldlayoutelements\TransferManagementField
. - Added
craft\commerce\models\CatalogPricingRule::getProductCondition()
. - Added
craft\commerce\models\CatalogPricingRule::getVariantCondition()
. - Added
craft\commerce\models\CatalogPricingRule::setProductCondition()
. - Added
craft\commerce\models\CatalogPricingRule::setVariantCondition()
. - Added
craft\commerce\models\LineItem::$type
. - Added
craft\commerce\models\LineItem::getHasFreeShipping()
. - Added
craft\commerce\models\LineItem::getIsPromotable()
. - Added
craft\commerce\models\LineItem::getIsShippable()
. - Added
craft\commerce\models\LineItem::getIsTaxable()
. - Added
craft\commerce\models\LineItem::populate()
. - Added
craft\commerce\models\LineItem::refresh()
. - Added
craft\commerce\models\LineItem::setHasFreeShipping()
. - Added
craft\commerce\models\LineItem::setIsPromotable()
. - Added
craft\commerce\models\LineItem::setIsShippable()
. - Added
craft\commerce\models\LineItem::setIsTaxable()
. - Added
craft\commerce\models\ProductType::$productTitleTranslationKeyFormat
. - Added
craft\commerce\models\ProductType::$productTitleTranslationMethod
. - Added
craft\commerce\models\ProductType::$propagationMethod
. - Added
craft\commerce\models\ProductType::$variantTitleTranslationKeyFormat
. - Added
craft\commerce\models\ProductType::$variantTitleTranslationMethod
. - Added
craft\commerce\models\ProductType::getSiteIds()
. - Added
craft\commerce\models\TransferDetail
. - Added
craft\commerce\record\TransferDetail
. - Added
craft\commerce\records\ProductType::$productTitleTranslationKeyFormat
. - Added
craft\commerce\records\ProductType::$productTitleTranslationMethod
. - Added
craft\commerce\records\ProductType::$propagationMethod
. - Added
craft\commerce\records\ProductType::$variantTitleTranslationKeyFormat
. - Added
craft\commerce\records\ProductType::$variantTitleTranslationMethod
. - Added
craft\commerce\services\CatalogPricing::createCatalogPricesQuery()
- Added
craft\commerce\services\InventoryLocations::getAllInventoryLocationsAsList
- Added
craft\commerce\services\LineItems::create()
. - Added
craft\commerce\services\LineItems::resolveCustomLineItem()
. - Added
craft\commerce\services\Transfers
. - Deprecated
craft\commerce\models\LineItem::populateFromPurchasable()
.populate()
should be used instead. - Deprecated
craft\commerce\models\LineItem::refreshFromPurchasable()
.refresh()
should be used instead. - Deprecated
craft\commerce\services\CatalogPricing::createCatalogPricingQuery()
.createCatalogPricesQuery()
should be used instead. - Deprecated
craft\commerce\services\LineItems::createLineItem()
.create()
should be used instead. - Removed
craft\commerce\fieldlayoutelements\UserCommerceField
.
- Craft Commerce now requires Craft CMS 5.2 or later.
- Fixed a bug where calculated catalog prices weren’t getting rounded to the decimal precision of the store’s currency.
- Fixed a PHP error that occurred when calling
craft\commerce\elements\Variant::getSales()
. - Fixed a SQL error that could occur when upgrading to Commerce 5.
- Fixed a PHP error that could occur when default addresses were set on a cart. (#3641)
- Fixed a bug were the “Auto Set New Cart Addresses” store setting was not persisting when saved.
- Fixed a bug where variant indexes weren’t displaying promotion prices as currency values.
- Fixed a PHP error that could occur when sending an order email. (#3596)
- Fixed a bug where dimension fields were not displaying values in the correct formatting locale. (#3636)
- Fixed a bug where users couldn’t access catalog pricing rules when the current user had permission. (#3639)
- Fixed a bug where available shipping methods were not returned in order of price. (#3631)
- Fixed a bug where variants’
sku
values could be cleared out when saving a product revision.
- Fixed a bug where variants’
sku
values could be cleared out when saving a product. - Fixed a bug where
craft\commerce\elements\Product::getVariants()
wasn’t respecting variants’ site statuses.
- It’s now possible to duplicate variants.
- It’s now possible to search for orders by shipping and billing address. (#3603)
- Fixed a bug where it wasn’t possible to remove the last email from an order status configuration. (#3621)
- Fixed a bug where the “Create Sale” and “Create Discount” product index actions weren’t working. (#3611)
- Fixed a bug where
craft\commerce\elements\Order::getOrderStatus()
could incorrectly returnnull
. (#3615) - Fixed a bug where draft variants became orphaned when products were deleted.
- Fixed a PHP error that occurred when using a custom queue driver. (#3619)
- Fixed a bug where stat widgets weren’t respecting the user’s preferred week start day. (#3620)
- Fixed a bug where variants weren’t getting duplicated when duplicating a product. (#924)
- Fixed a SQL error that could occur when upgrading to Commerce 5 on PostgreSQL. (#3600, #3601)
- Fixed a bug where payment modals weren’t calculating additional payment currencies on Edit Order pages.
- Fixed a PHP error that occurred when retrieving an order that referenced a deleted payment currency.
- Fixed a bug where Edit Variant screens were showing shipping categories that were unrelated to the current store. (#3608)
- Fixed a bug where account activation emails weren’t being sent on order completion. (#3226)
- Fixed a bug where email previewing wasn’t working on installs with multiple stores. (#3595)
- Fixed a bug where emails sent via the control panel could be rendered with the wrong language.
- Fixed a SQL error that occurred when exporting order line items. (#3592)
- Fixed a PHP error that could occur when generating catalog prices. (#3591)
- Fixed a SQL error that could occur when updating Commerce on PostgreSQL. (#3588)
- Fixed a SQL error that could occur when saving a payment currency. (#3563)
- Fixed a bug where SCA payment sources prevented subscriptions from starting. (#3590)
- Fixed PHP error that occurred when saving an estimated billing address. (#3549)
- Fixed a bug where variant indexes were including table columns for all custom fields added to variant field layouts, across all product types. (#15373)
- Fixed a bug where the “Ignore promotional prices” discount setting wasn’t getting saved correctly. (#3573)
- Fixed a bug where setting a new default variant wouldn’t persist. (#3565, #3564, #3589)
- Fixed a bug where shipping rule descriptions weren’t being saved. (#3580)
- Fixed a SQL error that could occur when updating. (#3581)
- Fixed a SQL error that occurred when updating.
- Variant index tables can now have a “Promotable” column. (#3571)
- Added
craft\commerce\base\Purchasable::availableShippingCategories()
. - Added
craft\commerce\base\Purchasable::availableTaxCategories()
. - Added
craft\commerce\base\Purchasable::shippingCategoryFieldHtml()
. - Added
craft\commerce\base\Purchasable::taxCategoryFieldHtml()
. - Added
craft\commerce\elements\Variant::availableShippingCategories()
. - Added
craft\commerce\elements\Variant::availableTaxCategories()
. - Added
craft\commerce\events\PdfRenderEvent::$sourcePdf
. (#3543) - Fixed a SQL error that occurred when reordering order statuses on PostgreSQL. (#3554)
- Fixed a SQL error that could occur when saving a payment currency. (#3563)
- Fixed a bug where it was possible to select shipping and tax categories that weren’t allowed for the product type. (#3557)
- Fixed a bug where payment currencies, shipping categories, and tax categories weren’t deletable. (#3548)
- Fixed a bug where variant field layouts could render incorrectly. (#3570)
- Fixed a bug where address custom fields weren’t visible on Edit Inventory Location pages. (#3569)
- Fixed a SQL error that could occur when fixing foreign keys.
- Fixed a PHP error that could occur on app initialization.
- Added
craft\commerce\elements\Product::getDefaultPrice()
. - Added
craft\commerce\elements\Product::setDefaultPrice()
. - Fixed a bug where
craft\commerce\elements\Product::$defaultPrice
could return an incorrect value. - Fixed a bug where default variant attributes weren’t being saved on products.
- Fixed a bug where search wasn’t working on user indexes.
- Fixed a bug where duplicate Store location addresses were being created.
- Fixed a bug where a customers’ primary address selections weren’t being saved.
craft\elements\User::toArray()
now includesprimaryBillingAddressId
andprimaryShippingAddressId
values in response arrays.craft\elements\Address::toArray()
now includesisPrimaryBilling
andisPrimaryShipping
values in response arrays for user addresses.- Fixed a PHP error that could occur when saving a discount. (#3538)
- Fixed a bug where the “Edit” action could be incorrectly shown when managing inventory locations.
- Product Title fields are no longer shown when “Show the Title field” is disabled and there’s a validation error on the
title
attribute. (craftcms/cms#13876) - Fixed a PHP error that occurred when saving donation settings on multi-store installs. (#3521)
- Fixed a bug where orders’
shippingMethodName
values could be cleared out when saving a completed order with a plugin-provided shipping method. (#3519) - Fixed a PHP error that could occur on app initialization.
- Fixed missing validation for Inventory Location handles. (#3511)
- Fixed a SQL error that could occur when switching sites with a cart cookie set. (#3522)
- Fixed an error that could occur when attempting to save a variant with special characters. (#3516)
- Improved store query performance. (#3481)
- Added
craft\commerce\gql\types\input\IntFalse
. - Fixed a bug where disclosure menus on the Stores index page weren’t listing all their items.
- Fixed an SQL error that occurred when querying for purchasables with the
hasStock
param. (#3505) - Fixed an error that could occur when querying for products or variants via GraphQL.
- Fixed a SQL error that could occur when generating the pricing catalog. (#3513)
- Fixed a bug where untracked stock items weren’t displaying correctly in the example templates. (#3510)
- Fixed a bug where the pricing catalog wasn’t getting updated after a pricing rule was disabled. (#3515)
- Fixed an SQL error that could occur when switching stores. (#3501)
- Fixed an error that occurred when deleting or duplicating a shipping rule on the Edit Shipping Rule screen. (#3490)
- Fixed a bug where dimension fields did not respect their product type visibility settings. (#3493)
- Fixed a SQL error that occurred when updating. (#3495,#3496)
- Fixed a SQL error that could occur on the Edit Store screen. (#3482)
- Fixed a SQL error that could that occurred when using the
hasSales
variant query param. (#3483) - Fixed SQL errors that could occur during installation. (#3486, #3488)
- Added
craft\commerce\helpers\ProjectConfigData::ensureAllStoresProcessed()
. - Added
craft\commerce\models\OrderStatus::getConfig()
. - Fixed a bug where it wasn’t possible to download PDFs from the Orders index page. (#3477)
- Fixed an error that could occur when installing Craft CMS + Craft Commerce with an existing project config. (#3472)
- Fixed a bug where order status configs were missing their store assignments after rebuilding the project config.
- Fixed a bug where setting a default tax zone would unset the default zone for all other stores. (#3473)
- Fixed a bug where email queue jobs weren’t completing. (#3476)
- Fixed a bug where it wasn’t possible to create a new order for a non-primary store from the control panel. (#3474)
- Fixed a bug where the “Commerce” Edit User screen wasn’t showing.
- Added
craft\commerce\controllers\UsersController
. - Deprecated
craft\commerce\fields\UserCommerceField
.
- 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.
- Added a new “Manage inventory stock levels” permission.
- Added a new “Manage inventory locations” permission.
- 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
, andtaxCategoryId
product query params. The corresponding variant query params can be used instead. - Removed the
showEditUserCommerceTab
config setting.
- Added
craft\commerce\base\CatalogPricingConditionRuleInterface
. - Added
craft\commerce\base\EnumHelpersTrait
- Added
craft\commerce\base\HasStoreInterface
. - Added
craft\commerce\base\InventoryMovementInterface
. - Added
craft\commerce\base\InventoryMovement
. - Added
craft\commerce\base\Purchasable::$availableForPurchase
. - Added
craft\commerce\base\Purchasable::$freeShipping
. - Added
craft\commerce\base\Purchasable::$height
. - Added
craft\commerce\base\Purchasable::$inventoryTracked
- Added
craft\commerce\base\Purchasable::$length
. - Added
craft\commerce\base\Purchasable::$maxQty
. - Added
craft\commerce\base\Purchasable::$minQty
. - Added
craft\commerce\base\Purchasable::$promotable
. - Added
craft\commerce\base\Purchasable::$shippingCategoryId
. - Added
craft\commerce\base\Purchasable::$stock
- Added
craft\commerce\base\Purchasable::$taxCategoryId
. - Added
craft\commerce\base\Purchasable::$weight
. - Added
craft\commerce\base\Purchasable::$width
. - Added
craft\commerce\base\Purchasable::getInventoryItem()
. - Added
craft\commerce\base\Purchasable::getInventoryLevels()
. - Added
craft\commerce\base\Purchasable::getOnPromotion()
. - Added
craft\commerce\base\Purchasable::getPrice()
. - Added
craft\commerce\base\Purchasable::getPromotionalPrice()
. - Added
craft\commerce\base\Purchasable::getStock()
- Added
craft\commerce\base\Purchasable::getStore()
- Added
craft\commerce\base\Purchasable::setPrice()
. - Added
craft\commerce\base\Purchasable::setPromotionalPrice()
. - Added
craft\commerce\base\StoreRecordTrait
. - Added
craft\commerce\base\StoreTrait
. - Added
craft\commerce\behaviors\StoreBehavior
. - Added
craft\commerce\collections\InventoryMovementCollection
- Added
craft\commerce\collections\UpdateInventoryLevelCollection
- Added
craft\commerce\console\controllers\CatalogPricingController
. - Added
craft\commerce\controllers\CatalogPricingController
. - Added
craft\commerce\controllers\CatalogPricingRulesController
. - Added
craft\commerce\controllers\InventoryLocationsController
- Added
craft\commerce\controllers\InventoryLocationsStoresController
- Added
craft\commerce\controllers\VariantsController
. - Added
craft\commerce\db\Table::CATALOG_PRICING_RULES_USERS
. - Added
craft\commerce\db\Table::CATALOG_PRICING_RULES
. - Added
craft\commerce\db\Table::CATALOG_PRICING
. - Added
craft\commerce\db\Table::INVENTORYITEMS
. - Added
craft\commerce\db\Table::INVENTORYLOCATIONS_STORES
. - Added
craft\commerce\db\Table::INVENTORYLOCATIONS
. - Added
craft\commerce\db\Table::INVENTORYMOVEMENTS
. - Added
craft\commerce\db\Table::PURCHASABLES_STORES
. - Added
craft\commerce\db\Table::STORESETTINGS
. - Added
craft\commerce\db\Table::STORES
. - Added
craft\commerce\db\Table::TRANSFERS_INVENTORYITEMS
. - Added
craft\commerce\db\Table::TRANSFERS
. - Added
craft\commerce\elements\Product::getVariantManager()
. - Added
craft\commerce\elements\Variant::getProductSlug()
. - Added
craft\commerce\elements\Variant::getProductTypeHandle()
. - Added
craft\commerce\elements\Variant::setProductSlug()
. - Added
craft\commerce\elements\Variant::setProductTypeHandle()
. - Added
craft\commerce\elements\VariantCollection
. - Added
craft\commerce\elements\actions\SetDefaultVariant
. - Added
craft\commerce\elements\conditions\customer\CatalogPricingCustomerCondition
. - Added
craft\commerce\elements\conditions\orders\DiscountedItemSubtotalConditionRule
. - Added
craft\commerce\elements\conditions\orders\ShippingAddressZoneConditionRule
. - Added
craft\commerce\elements\conditions\orders\ShippingMethodOrderCondition
. - Added
craft\commerce\elements\conditions\orders\ShippingRuleOrderCondition
. - Added
craft\commerce\elements\conditions\orders\TotalWeightConditionRule
. - Added
craft\commerce\elements\conditions\products\ProductVariantInventoryTrackedConditionRule
. - Added
craft\commerce\elements\conditions\purchasables\CatalogPricingCondition
. - Added
craft\commerce\elements\conditions\purchasables\CatalogPricingCustomerConditionRule
. - Added
craft\commerce\elements\conditions\purchasables\CatalogPricingPurchasableConditionRule
. - Added
craft\commerce\elements\conditions\purchasables\PurchasableConditionRule
. - Added
craft\commerce\elements\db\OrderQuery::$totalWeight
. - Added
craft\commerce\elements\db\OrderQuery::totalWeight()
. - Added
craft\commerce\elements\traits\OrderValidatorsTrait::validateOrganizationTaxIdAsVatId()
. - Added
craft\commerce\enums\InventoryTransactionType
. - Added
craft\commerce\enums\InventoryUpdateQuantityType
. - Added
craft\commerce\events\RegisterAvailableShippingMethodsEvent::getShippingMethods()
. - Added
craft\commerce\events\RegisterAvailableShippingMethodsEvent::setShippingMethods()
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleAllowedQtyField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleAvailableForPurchaseField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleDimensionsField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleFreeShippingField
. - Added
craft\commerce\fieldlayoutelements\PurchasabalePriceField
. - Added
craft\commerce\fieldlayoutelements\PurchasabalePromotableField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleSkuField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleStockField
. - Added
craft\commerce\fieldlayoutelements\PurchasabaleWeightField
. - Added
craft\commerce\helpers\Cp
. - Added
craft\commerce\helpers\Currency::moneyInputHtml()
. - Added
craft\commerce\helpers\Purchasable::catalogPricingRulesTableByPurchasableId()
. - Added
craft\commerce\models\CatalogPricingRule
. - Added
craft\commerce\models\Discount::$storeId
. - Added
craft\commerce\models\InventoryItem
. - Added
craft\commerce\models\InventoryLocation
. - Added
craft\commerce\models\InventoryTransaction
. - Added
craft\commerce\models\Level
. - Added
craft\commerce\models\LineItem::getSnapshot()
. - Added
craft\commerce\models\LineItem::setSnapshot()
. - Added
craft\commerce\models\LineItems::getFulfilledTotalQuantity()
. - Added
craft\commerce\models\PaymentSources::getStore()
. - Added
craft\commerce\models\ProductType::$maxVariants
. - Added
craft\commerce\models\PurchasableStore
. - Added
craft\commerce\models\Store::getInventoryLocations()
. - Added
craft\commerce\models\Store::getInventoryLocationsOptions()
. - Added
craft\commerce\models\inventory\InventoryCommittedMovement
- Added
craft\commerce\models\inventory\InventoryLocationDeactivatedMovement
. - Added
craft\commerce\models\inventory\InventoryManualMovement
. - Added
craft\commerce\models\inventory\UpdateInventoryLevel
. - Added
craft\commerce\plugin\Services::getVat()
. - Added
craft\commerce\records\CatalogPricingRulePurchasable
. - Added
craft\commerce\records\CatalogPricingRuleUser
. - Added
craft\commerce\records\CatalogPricingRule
. - Added
craft\commerce\records\CatalogPricing
. - Added
craft\commerce\records\InventoryItem
. - Added
craft\commerce\records\InventoryLocation
. - Added
craft\commerce\records\PurchasableStore
. - Added
craft\commerce\services\CatalogPricingRules
. - Added
craft\commerce\services\CatalogPricing
. - Added
craft\commerce\services\Discounts::getAllDiscountsByStoreId()
. - Added
craft\commerce\services\InventoryLocations
. - Added
craft\commerce\services\Inventory
. - Added
craft\commerce\services\OrderStatuses::getOrderStatusByUid()
. - Added
craft\commerce\services\Purchasables::updateStoreStockCache()
- Added
craft\commerce\services\Sales::canUseSales()
. - Added
craft\commerce\services\ShippingCategories::clearCaches()
. - Added
craft\commerce\services\Stores
. - Added
craft\commerce\services\Vat
. - Added
craft\commerce\web\assets\inventory\InventoryAsset
. - 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\base\PurchasableInterface::getId()
. - Removed
craft\commerce\base\Variant::$unlimitedStock
.craft\commerce\base\Purchasable::$inventoryTracked
can be used instead. - Removed
craft\commerce\console\controllers\UpgradeController
. - Removed
craft\commerce\controllers\LiteShippingController
. - Removed
craft\commerce\controllers\LiteTaxController
. - Removed
craft\commerce\controllers\ProductsController::actionDeleteProduct()
. - Removed
craft\commerce\controllers\ProductsController::actionDuplicateProduct()
. - Removed
craft\commerce\controllers\ProductsController::actionVariantIndex()
. - Removed
craft\commerce\controllers\ProductsPreviewController
. - Removed
craft\commerce\elements\Product::$availableForPurchase
.craft\commerce\base\Purchasable::$availableForPurchase
can be used instead. - Removed
craft\commerce\elements\Product::$promotable
.craft\commerce\base\Purchasable::$promotable
can be used instead. - Removed
craft\commerce\elements\Product::$shippingCategoryId
.craft\commerce\base\Purchasable::$shippingCategoryId
can be used instead. - Removed
craft\commerce\elements\Product::$taxCategoryId
.craft\commerce\base\Purchasable::$taxCategoryId
can be used instead. - Removed
craft\commerce\elements\Variant::$stock
.craft\commerce\base\Purchasable::getStock()
can be used instead. - Removed
craft\commerce\helpers\Product
. - Removed
craft\commerce\helpers\VariantMatrix
. - Removed
craft\commerce\helpers\VariantMatrix
. - Removed
craft\commerce\models\Currency
. - Removed
craft\commerce\models\Discount::$baseDiscountType
. - Removed
craft\commerce\models\LiteShippingSettings
. - Removed
craft\commerce\models\LiteTaxSettings
. - 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::$emailSenderAddressPlaceholder
. - Removed
craft\commerce\models\Settings::$emailSenderAddress
.craft\commerce\models\Email::$senderAddress
can be used instead. - Removed
craft\commerce\models\Settings::$emailSenderNamePlaceholder
. - 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. - Removed
craft\commerce\models\ShippingRule::$maxQty
. - Removed
craft\commerce\models\ShippingRule::$maxTotal
. - Removed
craft\commerce\models\ShippingRule::$maxWeight
. - Removed
craft\commerce\models\ShippingRule::$minMaxTotalType
. - Removed
craft\commerce\models\ShippingRule::$minQty
. - Removed
craft\commerce\models\ShippingRule::$minTotal
. - Removed
craft\commerce\models\ShippingRule::$minWeight
. - Removed
craft\commerce\models\ShippingRule::$shippingZoneId
. - Removed
craft\commerce\models\ShippingRule::getShippingZone()
. - Removed
craft\commerce\records\Discount::BASE_DISCOUNT_TYPE_PERCENT_ITEMS_DISCOUNTED
. - Removed
craft\commerce\records\Discount::BASE_DISCOUNT_TYPE_PERCENT_ITEMS
. - Removed
craft\commerce\records\Discount::BASE_DISCOUNT_TYPE_PERCENT_TOTAL_DISCOUNTED
. - Removed
craft\commerce\records\Discount::BASE_DISCOUNT_TYPE_PERCENT_TOTAL
. - Removed
craft\commerce\records\Discount::BASE_DISCOUNT_TYPE_VALUE
. - Removed
craft\commerce\records\ShippingRule::TYPE_MIN_MAX_TOTAL_SALEPRICE_WITH_DISCOUNTS
. - Removed
craft\commerce\records\ShippingRule::TYPE_MIN_MAX_TOTAL_SALEPRICE
. - Removed
craft\commerce\records\ShippingRule::getShippingZone()
. - Removed
craft\commerce\services\Customers::addEditUserCommerceTab()
. - Removed
craft\commerce\services\Customers::addEditUserCommerceTabContent()
. - Removed
craft\commerce\services\PaymentSources::getAllGatewayPaymentSourcesByUserId()
. - Removed
craft\commerce\services\PaymentSources::getAllPaymentSourcesByUserId()
. - Removed
craft\commerce\services\TaxRates::getTaxRatesForZone()
. - Removed
craft\commerce\validators\StoreCountryValidator
. - Removed
craft\commerce\widgets\Orders::$orderStatusId
.$orderStatuses
can be used instead. craft\commerce\base\PurchasableInterface
now extendscraft\base\ElementInterface
.craft\commerce\elements\Product::getVariants()
now returns a collection.craft\commerce\elements\Variant
now implementscraft\base\NestedElementTrait
.craft\commerce\elements\db\PurchasableQuery
is now abstract.craft\commerce\services\Discounts::getAllDiscounts()
now returns a collection.craft\commerce\services\Gateways::getAllCustomerEnabledGateways()
now returns a collection.craft\commerce\services\Gateways::getAllGateways()
now returns a collection.craft\commerce\services\PaymentSources::getAllGatewayPaymentSourcesByCustomerId()
now returns a collection.craft\commerce\services\PaymentSources::getAllPaymentSourcesByCustomerId()
now returns a collection.craft\commerce\services\PaymentSources::getAllPaymentSourcesByGatewayId()
now returns a collection.craft\commerce\services\ShippingCategories::getAllShippingCategories()
now returns a collection.craft\commerce\services\ShippingMethods::getAllShippingMethods()
now returns a collection.craft\commerce\services\ShippingRules::getAllShippingRules()
now returns a collection.craft\commerce\services\ShippingRules::getAllShippingRulesByShippingMethodId()
now returns a collection.craft\commerce\services\TaxRates::getAllTaxRates()
now returns a collection.craft\commerce\services\TaxRates::getTaxRatesByTaxZoneId()
now returns a collection.craft\commerce\services\TaxZones::getAllTaxZones()
now returns a collection.- Renamed
craft\commerce\base\Purchasable::tableAttributeHtml()
toattributeHtml()
. - Renamed
craft\commerce\controllers\BaseStoreSettingsController
toBaseStoreManagementController
. - Renamed
craft\commerce\controllers\StoreSettingsController
toStoreManagementController
. - Renamed
craft\commerce\elements\Subscription::tableAttributeHtml()
toattributeHtml()
. - Renamed
craft\commerce\elements\Variant::tableAttributeHtml()
toattributeHtml()
. - Renamed
craft\commerce\elements\traits\OrderElementTrait::tableAttributeHtml()
toattributeHtml()
.
- Craft Commerce now requires Craft CMS 5.1 or later.
- Craft Commerce now strictly requires Craft CMS Pro edition.