diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a56aac..167cdd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 6.1.16 +- Fixed issue with pending orders remaining open + # 6.1.15 - Fixed issue with shipping costs not being processed correctly diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md index d490c5a..c8a9006 100644 --- a/CHANGELOG_de-DE.md +++ b/CHANGELOG_de-DE.md @@ -1,6 +1,9 @@ -# 6.1.15 +# 6.1.16 - Problem behoben, bei dem die Versandkosten nicht korrekt verarbeitet wurden +# 6.1.15 +- Problem behoben, bei dem ausstehende Bestellungen offen blieben + # 6.1.14 – Warenkorb neu erstellen für Headless Storefront Order deaktivieren – Der korrekte Ausnahmetyp wurde zur Finalisierungsmethode hinzugefügt diff --git a/composer.json b/composer.json index c0ce698..812ae5a 100644 --- a/composer.json +++ b/composer.json @@ -59,5 +59,5 @@ "vrpayment/sdk": "^4.0.0" }, "type": "shopware-platform-plugin", - "version": "6.1.15" + "version": "6.1.16" } diff --git a/src/Core/Storefront/Checkout/Controller/CheckoutController.php b/src/Core/Storefront/Checkout/Controller/CheckoutController.php index e356c04..37bcad0 100644 --- a/src/Core/Storefront/Checkout/Controller/CheckoutController.php +++ b/src/Core/Storefront/Checkout/Controller/CheckoutController.php @@ -10,7 +10,9 @@ use Shopware\Core\{ Checkout\Cart\SalesChannel\CartService, Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection, Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity, + Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler, Checkout\Order\OrderEntity, + Checkout\Order\OrderDefinition, Checkout\Order\SalesChannel\AbstractOrderRoute, Framework\Context, Framework\DataAbstractionLayer\Search\Criteria, @@ -21,7 +23,9 @@ use Shopware\Core\{ Framework\Uuid\Uuid, Framework\Uuid\Exception\InvalidUuidException, Framework\Validation\DataBag\RequestDataBag, - System\SalesChannel\SalesChannelContext + System\SalesChannel\SalesChannelContext, + System\StateMachine\StateMachineRegistry, + System\StateMachine\Transition, }; use Shopware\Storefront\{ Controller\StorefrontController, @@ -43,7 +47,8 @@ use VRPaymentPayment\Core\{ Settings\Options\Integration, Settings\Service\SettingsService, Storefront\Checkout\Struct\CheckoutPageData, - Util\Payload\CustomProducts\CustomProductsLineItemTypes + Util\Payload\CustomProducts\CustomProductsLineItemTypes, + Util\Payload\TransactionPayload }; @@ -57,6 +62,18 @@ use VRPaymentPayment\Core\{ #[Route(defaults: ['_routeScope' => ['storefront']])] class CheckoutController extends StorefrontController { + public const ORDER_STATE_CANCEL = 'cancel'; + + /** + * @var \Shopware\Core\System\StateMachine\StateMachineRegistry + */ + private $stateMachineRegistry; + + /** + * @var \Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler + */ + protected $orderTransactionStateHandler; + /** * @var \Shopware\Storefront\Page\GenericPageLoader */ @@ -106,6 +123,8 @@ class CheckoutController extends StorefrontController { * @param \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService $transactionService * @param \Shopware\Storefront\Page\GenericPageLoaderInterface $genericLoader * @param \Shopware\Core\Checkout\Order\SalesChannel\AbstractOrderRoute $orderRoute + * @param \Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler $orderTransactionStateHandler + * @param \Shopware\Core\System\StateMachine\StateMachineRegistry $stateMachineRegistry */ public function __construct( LineItemFactoryRegistry $lineItemFactoryRegistry, @@ -113,7 +132,9 @@ class CheckoutController extends StorefrontController { SettingsService $settingsService, TransactionService $transactionService, GenericPageLoaderInterface $genericLoader, - AbstractOrderRoute $orderRoute + AbstractOrderRoute $orderRoute, + OrderTransactionStateHandler $orderTransactionStateHandler, + StateMachineRegistry $stateMachineRegistry ) { $this->cartService = $cartService; @@ -122,6 +143,8 @@ class CheckoutController extends StorefrontController { $this->transactionService = $transactionService; $this->lineItemFactoryRegistry = $lineItemFactoryRegistry; $this->orderRoute = $orderRoute; + $this->orderTransactionStateHandler = $orderTransactionStateHandler; + $this->stateMachineRegistry = $stateMachineRegistry; } /** @@ -380,6 +403,7 @@ class CheckoutController extends StorefrontController { } $transaction = $this->getTransaction($orderId, $salesChannelContext->getContext()); + $orderTransactionId = $transaction->getMetaData()[TransactionPayload::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID]; if (!empty($transaction->getUserFailureMessage())) { $this->addFlash('danger', $transaction->getUserFailureMessage()); } @@ -414,6 +438,18 @@ class CheckoutController extends StorefrontController { } + // Close the old, existing order to prevent confusion for the customer + $this->orderTransactionStateHandler->cancel($orderTransactionId, $salesChannelContext->getContext()); + $this->stateMachineRegistry->transition( + new Transition( + OrderDefinition::ENTITY_NAME, + $orderId, + self::ORDER_STATE_CANCEL, + 'stateId' + ), + $salesChannelContext->getContext() + ); + } catch (\Exception $exception) { $this->addFlash('danger', $this->trans('error.addToCartError')); $this->logger->critical($exception->getMessage()); diff --git a/src/Core/Util/Analytics/Analytics.php b/src/Core/Util/Analytics/Analytics.php index cf2fd15..e3ff536 100644 --- a/src/Core/Util/Analytics/Analytics.php +++ b/src/Core/Util/Analytics/Analytics.php @@ -25,7 +25,7 @@ class Analytics { self::SHOP_SYSTEM => 'shopware', self::SHOP_SYSTEM_VERSION => '6', self::SHOP_SYSTEM_AND_VERSION => 'shopware-6', - self::PLUGIN_SYSTEM_VERSION => '6.1.15', + self::PLUGIN_SYSTEM_VERSION => '6.1.16', ]; } diff --git a/src/Resources/config/services/core/storefront/checkout.xml b/src/Resources/config/services/core/storefront/checkout.xml index f022b03..1980601 100644 --- a/src/Resources/config/services/core/storefront/checkout.xml +++ b/src/Resources/config/services/core/storefront/checkout.xml @@ -13,6 +13,8 @@ + +