Open apitel opened 2 days ago
Craft Commerce introduced a feature allowing custom line items to be created on the fly from the control panel.
When clicking "+ Add a custom line item" the order gets stuck while being recalculated.
In the network tab can be seen 500 error being throw:
2024-10-11 11:54:34 [web.ERROR] [yii\base\InvalidConfigException] yii\base\InvalidConfigException: Cannot get a purchasable for a custom line item in /var/www/html/vendor/craftcms/commerce/src/models/LineItem.php:821 Stack trace: #0 /var/www/html/vendor/yiisoft/yii2/base/Component.php(139): craft\commerce\models\LineItem->getPurchasable() #1 /var/www/html/vendor/verbb/postie/src/helpers/PostieHelper.php(99): yii\base\Component->__get('purchasable') #2 /var/www/html/vendor/verbb/postie/src/base/Provider.php(707): verbb\postie\helpers\PostieHelper::getOrderLineItems(Object(craft\commerce\elements\Order)) #3 /var/www/html/vendor/verbb/postie/src/base/Provider.php(311): verbb\postie\base\Provider->packOrder(Object(craft\commerce\elements\Order), Array) #4 /var/www/html/vendor/verbb/postie/src/services/Service.php(93): verbb\postie\base\Provider->prepareForShippy(Object(verbb\shippy\models\Shipment), Object(craft\commerce\elements\Order)) #5 /var/www/html/vendor/verbb/postie/src/services/Service.php(179): verbb\postie\services\Service->getShippingMethodsForOrder(Object(craft\commerce\elements\Order)) #6 [internal function]: verbb\postie\services\Service->registerShippingMethods(Object(craft\commerce\events\RegisterAvailableShippingMethodsEvent)) #7 /var/www/html/vendor/yiisoft/yii2/base/Event.php(312): call_user_func(Array, Object(craft\commerce\events\RegisterAvailableShippingMethodsEvent)) #8 /var/www/html/vendor/yiisoft/yii2/base/Component.php(650): yii\base\Event::trigger('craft\\commerce\...', 'registerAvailab...', Object(craft\commerce\events\RegisterAvailableShippingMethodsEvent)) #9 /var/www/html/vendor/craftcms/commerce/src/services/ShippingMethods.php(131): yii\base\Component->trigger('registerAvailab...', Object(craft\commerce\events\RegisterAvailableShippingMethodsEvent)) #10 /var/www/html/vendor/craftcms/commerce/src/elements/Order.php(2125): craft\commerce\services\ShippingMethods->getMatchingShippingMethods(Object(craft\commerce\elements\Order)) #11 /var/www/html/vendor/yiisoft/yii2/base/Component.php(139): craft\commerce\elements\Order->getAvailableShippingMethodOptions() #12 /var/www/html/vendor/craftcms/cms/src/base/Element.php(2337): yii\base\Component->__get('availableShippi...') #13 /var/www/html/vendor/yiisoft/yii2/base/ArrayableTrait.php(126): craft\base\Element->__get('availableShippi...') #14 /var/www/html/vendor/craftcms/cms/src/base/Element.php(2493): craft\base\Element->traitToArray(Array, Array, true) #15 /var/www/html/vendor/craftcms/commerce/src/controllers/OrdersController.php(624): craft\base\Element->toArray(Array, Array) #16 /var/www/html/vendor/craftcms/commerce/src/controllers/OrdersController.php(476): craft\commerce\controllers\OrdersController->_orderToArray(Object(craft\commerce\elements\Order)) #17 [internal function]: craft\commerce\controllers\OrdersController->actionRefresh() #18 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) #19 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array) #20 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('refresh', Array) #21 /var/www/html/vendor/craftcms/cms/src/web/Application.php(350): yii\base\Module->runAction('commerce/orders...', Array) #22 /var/www/html/vendor/craftcms/cms/src/web/Application.php(649): craft\web\Application->runAction('commerce/orders...', Array) #23 /var/www/html/vendor/craftcms/cms/src/web/Application.php(312): craft\web\Application->_processActionRequest(Object(craft\web\Request)) #24 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request)) #25 /var/www/html/public/index.php(12): yii\base\Application->run() #26 {main} {"memory":35209264,"exception":"[object] (yii\\base\\InvalidConfigException(code: 0): Cannot get a purchasable for a custom line item at /var/www/html/vendor/craftcms/commerce/src/models/LineItem.php:821)"}
Craft Pro 5.4.6
dev-craft-5
Yes
No response
Fixed for the next release. To get this early, run composer require verbb/postie:"dev-craft-5 as 5.0.6".
composer require verbb/postie:"dev-craft-5 as 5.0.6"
Describe the bug
Craft Commerce introduced a feature allowing custom line items to be created on the fly from the control panel.
When clicking "+ Add a custom line item" the order gets stuck while being recalculated.
In the network tab can be seen 500 error being throw:
Steps to reproduce
Craft CMS version
Craft Pro 5.4.6
Plugin version
dev-craft-5
Multi-site?
Yes
Additional context
No response