@@ -982,24 +964,19 @@ La tokenizzazione non è disponibile per i checkout degli ospiti.
8.6
Tokenization
-
-
- 8.7
- Pagamenti ricorrenti
-
- 8.8
+ 8.7
Key Features
- 8.9
+ 8.8
Risoluzione dei Problemi
- 8.10
+ 8.9
FAQs
diff --git a/docs/it/resource/api-key.png b/docs/it/resource/api-key.png
deleted file mode 100644
index c74fe13..0000000
Binary files a/docs/it/resource/api-key.png and /dev/null differ
diff --git a/docs/it/resource/application-users.png b/docs/it/resource/application-users.png
deleted file mode 100644
index 51a97b9..0000000
Binary files a/docs/it/resource/application-users.png and /dev/null differ
diff --git a/docs/it/resource/assign-role.png b/docs/it/resource/assign-role.png
deleted file mode 100644
index 616a1dd..0000000
Binary files a/docs/it/resource/assign-role.png and /dev/null differ
diff --git a/docs/it/resource/bogus-processor.png b/docs/it/resource/bogus-processor.png
deleted file mode 100644
index db79bb1..0000000
Binary files a/docs/it/resource/bogus-processor.png and /dev/null differ
diff --git a/docs/it/resource/capture-transaction.png b/docs/it/resource/capture-transaction.png
deleted file mode 100644
index 5fb2044..0000000
Binary files a/docs/it/resource/capture-transaction.png and /dev/null differ
diff --git a/docs/it/resource/cc-disable.png b/docs/it/resource/cc-disable.png
deleted file mode 100644
index 88048c8..0000000
Binary files a/docs/it/resource/cc-disable.png and /dev/null differ
diff --git a/docs/it/resource/cc-enable.png b/docs/it/resource/cc-enable.png
deleted file mode 100644
index 9b7e655..0000000
Binary files a/docs/it/resource/cc-enable.png and /dev/null differ
diff --git a/docs/it/resource/connectors.png b/docs/it/resource/connectors.png
deleted file mode 100644
index 056a892..0000000
Binary files a/docs/it/resource/connectors.png and /dev/null differ
diff --git a/docs/it/resource/loading-roles.png b/docs/it/resource/loading-roles.png
deleted file mode 100644
index 5d0d501..0000000
Binary files a/docs/it/resource/loading-roles.png and /dev/null differ
diff --git a/docs/it/resource/name-processor.png b/docs/it/resource/name-processor.png
deleted file mode 100644
index d028107..0000000
Binary files a/docs/it/resource/name-processor.png and /dev/null differ
diff --git a/docs/it/resource/order-confirmation-email.png b/docs/it/resource/order-confirmation-email.png
deleted file mode 100644
index b7e8d57..0000000
Binary files a/docs/it/resource/order-confirmation-email.png and /dev/null differ
diff --git a/docs/it/resource/payment-method-configuration.png b/docs/it/resource/payment-method-configuration.png
deleted file mode 100644
index c84e6c0..0000000
Binary files a/docs/it/resource/payment-method-configuration.png and /dev/null differ
diff --git a/docs/it/resource/payment-methods.png b/docs/it/resource/payment-methods.png
deleted file mode 100644
index 4bbea90..0000000
Binary files a/docs/it/resource/payment-methods.png and /dev/null differ
diff --git a/docs/it/resource/payment-settings.png b/docs/it/resource/payment-settings.png
deleted file mode 100644
index bd758a5..0000000
Binary files a/docs/it/resource/payment-settings.png and /dev/null differ
diff --git a/docs/it/resource/plugin-configuration.png b/docs/it/resource/plugin-configuration.png
deleted file mode 100644
index 1fa6bd4..0000000
Binary files a/docs/it/resource/plugin-configuration.png and /dev/null differ
diff --git a/docs/it/resource/plugin-installation.png b/docs/it/resource/plugin-installation.png
deleted file mode 100644
index 5b32274..0000000
Binary files a/docs/it/resource/plugin-installation.png and /dev/null differ
diff --git a/docs/it/resource/refund-transaction.png b/docs/it/resource/refund-transaction.png
deleted file mode 100644
index a03d38c..0000000
Binary files a/docs/it/resource/refund-transaction.png and /dev/null differ
diff --git a/docs/it/resource/roles.png b/docs/it/resource/roles.png
deleted file mode 100644
index 6dd3548..0000000
Binary files a/docs/it/resource/roles.png and /dev/null differ
diff --git a/docs/it/resource/save-role.png b/docs/it/resource/save-role.png
deleted file mode 100644
index b5d30cb..0000000
Binary files a/docs/it/resource/save-role.png and /dev/null differ
diff --git a/docs/it/resource/shopware_6_stage_graph_delivery.svg b/docs/it/resource/shopware_6_stage_graph_delivery.svg
deleted file mode 100644
index 03e5a1d..0000000
--- a/docs/it/resource/shopware_6_stage_graph_delivery.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
Hold Open Open
Transaction ful... Transaction c... Canceled Transaction decline / fail / void
Transaction de... 1
2
3
Viewer does not support full SVG 1.1
\ No newline at end of file
diff --git a/docs/it/resource/shopware_6_stage_graph_order.svg b/docs/it/resource/shopware_6_stage_graph_order.svg
deleted file mode 100644
index 89a9ea7..0000000
--- a/docs/it/resource/shopware_6_stage_graph_order.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
In Progress Paid Open
Transaction Invoice paid / not applicable
Transaction Inv... Transaction a... Transaction fai... Canceled Transaction decline / void
Transaction de... Failed 1
4
2
3
Viewer does not support full SVG 1.1
\ No newline at end of file
diff --git a/docs/it/resource/state_graph_order.svg b/docs/it/resource/state_graph_order.svg
deleted file mode 100644
index 46dbc35..0000000
--- a/docs/it/resource/state_graph_order.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
[Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] Depending on configuration
[Not supported by viewer] Transaction decline / void
[Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer] [Not supported by viewer]
\ No newline at end of file
diff --git a/docs/it/resource/state_graph_payment_state.svg b/docs/it/resource/state_graph_payment_state.svg
deleted file mode 100644
index d09a614..0000000
--- a/docs/it/resource/state_graph_payment_state.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
In Progress Paid Open
Transaction complete / fulfill
Transaction com... Transaction a... Transaction fai... Canceled Transaction decline / void
Transaction de... Failed 1
4
2
3
Viewer does not support full SVG 1.1
\ No newline at end of file
diff --git a/docs/it/resource/token.png b/docs/it/resource/token.png
deleted file mode 100644
index 15be72e..0000000
Binary files a/docs/it/resource/token.png and /dev/null differ
diff --git a/docs/it/resource/user.png b/docs/it/resource/user.png
deleted file mode 100644
index 5673a04..0000000
Binary files a/docs/it/resource/user.png and /dev/null differ
diff --git a/docs/it/resource/void-transaction.png b/docs/it/resource/void-transaction.png
deleted file mode 100644
index 8037d28..0000000
Binary files a/docs/it/resource/void-transaction.png and /dev/null differ
diff --git a/docs/it/resource/webhook-listeners.png b/docs/it/resource/webhook-listeners.png
deleted file mode 100644
index 7b7f2b4..0000000
Binary files a/docs/it/resource/webhook-listeners.png and /dev/null differ
diff --git a/docs/it/resource/webhooks.png b/docs/it/resource/webhooks.png
deleted file mode 100644
index 27a58e1..0000000
Binary files a/docs/it/resource/webhooks.png and /dev/null differ
diff --git a/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php b/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php
index 60ec19b..508f807 100644
--- a/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php
+++ b/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php
@@ -499,7 +499,6 @@ class PaymentMethodConfigurationService {
'afterOrderEnabled' => true,
'active' => true,
'translations' => $this->getPaymentMethodConfigurationTranslation($paymentMethodConfiguration, $context),
- 'technicalName' => $paymentMethodConfiguration->getName(),
];
$data['mediaId'] = $this->upsertMedia($id, $paymentMethodConfiguration, $context);
diff --git a/src/Core/Api/Refund/Controller/RefundController.php b/src/Core/Api/Refund/Controller/RefundController.php
index b6b8661..0133c85 100644
--- a/src/Core/Api/Refund/Controller/RefundController.php
+++ b/src/Core/Api/Refund/Controller/RefundController.php
@@ -115,11 +115,7 @@ class RefundController extends AbstractController
$apiClient = $settings->getApiClient();
$transaction = $apiClient->getTransactionService()->read($settings->getSpaceId(), $transactionId);
- $refund = $this->refundService->createRefundByAmount($transaction, $refundableAmount, $context);
-
- if ($refund === null) {
- return new Response('refundExceedsAmount', Response::HTTP_BAD_REQUEST);
- }
+ $this->refundService->createRefundByAmount($transaction, $refundableAmount, $context);
return new Response(null, Response::HTTP_NO_CONTENT);
}
diff --git a/src/Core/Api/Transaction/Service/TransactionService.php b/src/Core/Api/Transaction/Service/TransactionService.php
index f8ea0dd..64f4754 100644
--- a/src/Core/Api/Transaction/Service/TransactionService.php
+++ b/src/Core/Api/Transaction/Service/TransactionService.php
@@ -8,7 +8,7 @@ use Shopware\Core\{
Checkout\Cart\CartException,
Checkout\Cart\LineItem\LineItem,
Checkout\Order\OrderEntity,
- Checkout\Payment\Cart\PaymentTransactionStruct,
+ Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
Framework\Context,
Framework\DataAbstractionLayer\Search\Criteria,
Framework\DataAbstractionLayer\Search\Filter\EqualsFilter,
@@ -16,23 +16,22 @@ use Shopware\Core\{
};
use Shopware\Storefront\Page\Checkout\Confirm\CheckoutConfirmPageLoadedEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use VRPayment\Sdk\Model\{
- AddressCreate,
- ChargeAttempt,
- CreationEntityState,
- CriteriaOperator,
- EntityQuery,
- EntityQueryFilter,
- EntityQueryFilterType,
- Gender,
- LineItemAttributeCreate,
- LineItemCreate,
- LineItemType,
- TokenizationMode,
- Transaction,
- TransactionCreate,
- TransactionPending,
- TransactionState,
+use VRPayment\Sdk\{
+ Model\AddressCreate,
+ Model\ChargeAttempt,
+ Model\CreationEntityState,
+ Model\CriteriaOperator,
+ Model\EntityQuery,
+ Model\EntityQueryFilter,
+ Model\EntityQueryFilterType,
+ Model\Gender,
+ Model\LineItemAttributeCreate,
+ Model\LineItemCreate,
+ Model\LineItemType,
+ Model\Transaction,
+ Model\TransactionCreate,
+ Model\TransactionPending,
+ Model\TransactionState,
};
use VRPaymentPayment\Core\{
Api\OrderDeliveryState\Handler\OrderDeliveryStateHandler,
@@ -116,7 +115,7 @@ class TransactionService
*
* A redirect to the url will be performed
*
- * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
* @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
*
* @return string
@@ -125,14 +124,10 @@ class TransactionService
* @throws \VRPayment\Sdk\VersioningException
*/
public function create(
- PaymentTransactionStruct $transaction,
- SalesChannelContext $salesChannelContext
+ AsyncPaymentTransactionStruct $transaction,
+ SalesChannelContext $salesChannelContext
): string
{
- $criteria = new Criteria([$transaction->getOrderTransactionId()]);
- $criteria->addAssociation('order');
- $orderTransaction = $this->container->get('order_transaction.repository')->search($criteria, $salesChannelContext->getContext())->first();
-
$salesChannelId = $salesChannelContext->getSalesChannel()->getId();
$settings = $this->settingsService->getSettings($salesChannelId);
$apiClient = $settings->getApiClient();
@@ -170,7 +165,7 @@ class TransactionService
$redirectUrl = $this->container->get('router')->generate(
'frontend.vrpayment.checkout.pay',
- ['orderId' => $orderTransaction->getOrder()->getId(),],
+ ['orderId' => $transaction->getOrder()->getId(),],
UrlGeneratorInterface::ABSOLUTE_URL
);
@@ -182,8 +177,8 @@ class TransactionService
$this->upsert(
$createdTransaction,
$salesChannelContext->getContext(),
- $orderTransaction->getPaymentMethodId(),
- $orderTransaction->getOrder()->getSalesChannelId()
+ $transaction->getOrderTransaction()->getPaymentMethodId(),
+ $transaction->getOrder()->getSalesChannelId()
);
$_SESSION['transactionId'] = null;
$_SESSION['arrayOfPossibleMethods'] = null;
@@ -191,45 +186,26 @@ class TransactionService
$_SESSION['currencyCheck'] = null;
- $this->holdDelivery($orderTransaction->getOrder()->getId(), $salesChannelContext->getContext());
+ $this->holdDelivery($transaction->getOrder()->getId(), $salesChannelContext->getContext());
return $redirectUrl;
}
/**
- * Creates the transaction in the portal using the SDK.
- *
- * @return void
- */
- public function createRecurringTransaction(TransactionCreate $sdkTransactionCreate, string $spaceId = ""): Transaction {
- $settings = $this->settingsService->getSettings();
- if (empty($spaceId)) {
- $spaceId = $settings->getSpaceId();
- }
-
- $sdkTransaction = $settings->getApiClient()->getTransactionService()->create($spaceId, $sdkTransactionCreate);
- if ($sdkTransaction->valid()) {
- return $settings->getApiClient()->getTransactionService()->processWithoutUserInteraction($spaceId, $sdkTransaction->getId());
- }
-
- throw new \Exception("The transacion is not valid and could not be created.");
- }
-
- /**
- * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
* @param \Shopware\Core\Framework\Context $context
* @param int $vrpaymentTransactionId
* @param int $spaceId
*/
protected function addVRPaymentTransactionId(
- PaymentTransactionStruct $transaction,
+ AsyncPaymentTransactionStruct $transaction,
Context $context,
int $vrpaymentTransactionId,
int $spaceId
): void
{
$data = [
- 'id' => $transaction->getOrderTransactionId(),
+ 'id' => $transaction->getOrderTransaction()->getId(),
'customFields' => [
TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TRANSACTION_ID => $vrpaymentTransactionId,
TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_SPACE_ID => $spaceId,
@@ -367,7 +343,7 @@ class TransactionService
*
* @return \Shopware\Core\Checkout\Order\OrderEntity
*/
- protected function getOrderEntity(string $orderId, Context $context): OrderEntity
+ private function getOrderEntity(string $orderId, Context $context): OrderEntity
{
try {
$criteria = (new Criteria([$orderId]))->addAssociations(['deliveries']);
@@ -411,7 +387,7 @@ class TransactionService
* @throws \VRPayment\Sdk\Http\ConnectionException
* @throws \VRPayment\Sdk\VersioningException
*/
- public function read(int $transactionId, string $salesChannelId = ""): Transaction
+ public function read(int $transactionId, string $salesChannelId): Transaction
{
$settings = $this->settingsService->getSettings($salesChannelId);
return $settings->getApiClient()->getTransactionService()->read($settings->getSpaceId(), $transactionId);
@@ -618,8 +594,7 @@ class TransactionService
->setCustomerEmailAddress($customer->getEmail())
->setCustomerId($customerId)
->setSuccessUrl($homeUrl . '?success')
- ->setFailedUrl($homeUrl . '?fail')
- ->setTokenizationMode(TokenizationMode::FORCE_CREATION);
+ ->setFailedUrl($homeUrl . '?fail');
$transactionService = $settings->getApiClient()->getTransactionService();
$transaction = $transactionService->create($settings->getSpaceId(), $transactionPayload);
diff --git a/src/Core/Api/WebHooks/Strategy/WebHookTransactionStrategy.php b/src/Core/Api/WebHooks/Strategy/WebHookTransactionStrategy.php
index f0b75f7..a100f45 100644
--- a/src/Core/Api/WebHooks/Strategy/WebHookTransactionStrategy.php
+++ b/src/Core/Api/WebHooks/Strategy/WebHookTransactionStrategy.php
@@ -9,13 +9,12 @@ use Shopware\Core\{
Checkout\Cart\CartException,
Framework\Context,
System\StateMachine\Exception\IllegalTransitionException};
-use VRPayment\Sdk\Model\{
- RefundState,
- Transaction,
- TransactionInvoiceState,
- TransactionState,
- TransactionInvoice,
- Token};
+use VRPayment\Sdk\{
+ Model\RefundState,
+ Model\Transaction,
+ Model\TransactionInvoiceState,
+ Model\TransactionState,
+ Model\TransactionInvoice,};
use VRPaymentPayment\Core\{
Api\WebHooks\Service\WebHooksService,
Api\WebHooks\Struct\WebHookRequest,
@@ -52,7 +51,7 @@ class WebHookTransactionStrategy extends WebHookStrategyBase implements WebhookS
* @throws \VRPayment\Sdk\Http\ConnectionException ConnectionException.
* @throws \VRPayment\Sdk\VersioningException VersioningException.
*/
- public function getTransaction(WebHookRequest $request): Transaction {
+ public function getTransaction(WebHookRequest $request) {
return $this->settings->getApiClient()
->getTransactionService()
->read($request->getSpaceId(), $request->getEntityId());
@@ -61,7 +60,7 @@ class WebHookTransactionStrategy extends WebHookStrategyBase implements WebhookS
/**
* @inheritDoc
*/
- public function getOrderIdByTransaction(Transaction $transaction): string
+ public function getOrderIdByTransaction($transaction): string
{
/** @var \VRPayment\Sdk\Model\Transaction $transaction */
return $transaction->getMetaData()[TransactionPayload::VRPAYMENT_METADATA_ORDER_ID];
@@ -97,7 +96,7 @@ class WebHookTransactionStrategy extends WebHookStrategyBase implements WebhookS
*/
public function process(WebHookRequest $request): Response
{
- return $this->processTransaction($request, $this->getContext());
+ return $this->updateTransaction($request, $this->getContext());
}
/**
@@ -108,17 +107,16 @@ class WebHookTransactionStrategy extends WebHookStrategyBase implements WebhookS
* @param Context $context The operational context providing settings and environment for transaction processing.
* @return Response Returns a JSON response indicating the result of the transaction update operation.
*/
- private function processTransaction(WebHookRequest $request, Context $context): Response
+ private function updateTransaction(WebHookRequest $request, Context $context): Response
{
$status = Response::HTTP_UNPROCESSABLE_ENTITY;
try {
/** @var \Shopware\Core\Checkout\Order\OrderEntity $order */
$transaction = $this->getTransaction($request);
- $token = $transaction->getToken();
- $orderId = $transaction->getMetaData()[TransactionPayload::VRPAYMENT_METADATA_ORDER_ID];
- if (!empty($orderId) && !$transaction->getParent()) {
- $this->executeLocked($orderId, $context, function () use ($orderId, $transaction, $context, $request, $token) {
+ $orderId = $transaction->getMetaData()[TransactionPayload::VRPAYMENT_METADATA_ORDER_ID];
+ if(!empty($orderId) && !$transaction->getParent()) {
+ $this->executeLocked($orderId, $context, function () use ($orderId, $transaction, $context, $request) {
$this->transactionService->upsert($transaction, $context);
$orderTransactionId = $transaction->getMetaData()[TransactionPayload::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID];
$orderTransaction = $this->getOrderTransaction($orderId, $context);
@@ -145,16 +143,6 @@ class WebHookTransactionStrategy extends WebHookStrategyBase implements WebhookS
$this->unholdDelivery($orderId, $context);
break;
case TransactionState::AUTHORIZED:
- if ($token instanceof Token) {
- // Update orderTransaction with the authorized token:
- $data = [
- 'id' => $orderTransactionId,
- 'customFields' => [
- TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TOKEN => $token->getId(),
- ],
- ];
- $this->container->get('order_transaction.repository')->update([$data], $context);
- }
$this->orderTransactionStateHandler->process($orderTransactionId, $context);
$this->sendEmail($transaction, $context, $orderId);
break;
diff --git a/src/Core/Api/WebHooks/Strategy/WebhookStrategyActionsInterface.php b/src/Core/Api/WebHooks/Strategy/WebhookStrategyActionsInterface.php
index 250db67..a2e25de 100644
--- a/src/Core/Api/WebHooks/Strategy/WebhookStrategyActionsInterface.php
+++ b/src/Core/Api/WebHooks/Strategy/WebhookStrategyActionsInterface.php
@@ -57,5 +57,5 @@ interface WebhookStrategyActionsInterface {
* @param Transaction|TransactionInvoiceState|Refund|mixed $transaction The transaction object from which the order ID should be extracted.
* @return string The order ID as a string.
*/
- public function getOrderIdByTransaction(Transaction $transaction): string;
+ public function getOrderIdByTransaction($transaction): string;
}
diff --git a/src/Core/Checkout/Cart/CustomCartPersister.php b/src/Core/Checkout/Cart/CustomCartPersister.php
deleted file mode 100644
index 584dd1e..0000000
--- a/src/Core/Checkout/Cart/CustomCartPersister.php
+++ /dev/null
@@ -1,59 +0,0 @@
-inner = $inner;
- }
-
- public function delete(string $token, SalesChannelContext $context): void
- {
- if (!$context->getContext()->hasState('do-cart-delete') && $this->isWhiteLabelPayment($context)) {
- return;
- }
-
- $this->inner->delete($token, $context);
- }
-
- public function load(string $token, SalesChannelContext $context): Cart
- {
- return $this->inner->load($token, $context);
- }
-
- public function save(Cart $cart, SalesChannelContext $context): void
- {
- $this->inner->save($cart, $context);
- }
-
- public function replace(string $oldToken, string $newToken, SalesChannelContext $context): void
- {
- $this->inner->replace($oldToken, $newToken, $context);
- }
-
- public function getDecorated(): AbstractCartPersister
- {
- return $this->inner;
- }
-
- private function isWhiteLabelPayment(SalesChannelContext $context): bool
- {
- $paymentMethod = $context->getPaymentMethod();
-
- if (!$paymentMethod instanceof PaymentMethodEntity) {
- return false;
- }
-
- return $paymentMethod->getHandlerIdentifier() === VRPaymentPaymentHandler::class;
- }
-}
diff --git a/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php b/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
index fd8c9bb..669ad23 100644
--- a/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
+++ b/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
@@ -4,42 +4,22 @@ namespace VRPaymentPayment\Core\Checkout\PaymentHandler;
use Psr\Log\LoggerInterface;
use Shopware\Core\{
- Checkout\Order\OrderEntity,
- Checkout\Order\Aggregate\OrderTransaction\OrderTransactionEntity,
Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler,
- Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStates,
- Checkout\Payment\Cart\PaymentTransactionStruct,
- Checkout\Payment\Cart\PaymentHandler\AbstractPaymentHandler,
- Checkout\Payment\Cart\PaymentHandler\PaymentHandlerType,
+ Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
+ Checkout\Payment\Cart\PaymentHandler\AsynchronousPaymentHandlerInterface,
+ Checkout\Payment\Exception\AsyncPaymentFinalizeException,
+ Checkout\Payment\Exception\AsyncPaymentProcessException,
Checkout\Payment\PaymentException,
Checkout\Payment\Exception\CustomerCanceledAsyncPaymentException,
- Framework\App\AppException,
- Framework\Api\Context\SalesChannelApiSource,
- Framework\Context,
- Framework\DataAbstractionLayer\EntityRepository,
- Framework\DataAbstractionLayer\Search\Criteria,
- Framework\DataAbstractionLayer\Search\Filter\EqualsFilter,
- Framework\DataAbstractionLayer\Search\Sorting\FieldSorting,
- Framework\Struct\Struct,
Framework\Validation\DataBag\RequestDataBag,
- System\StateMachine\Aggregation\StateMachineState\StateMachineStateEntity,
- System\SalesChannel\Context\SalesChannelContextService,
- System\SalesChannel\Context\SalesChannelContextServiceParameters
+ System\SalesChannel\SalesChannelContext
};
-use Shopware\Core\Framework\Util\Random;
-use VRPaymentPayment\Core\Checkout\Cart\CustomCartPersister;
-use Shopware\Core\Checkout\Cart\Cart;
-use Shopware\Core\Checkout\Cart\CartPersister;
-use Shopware\Core\System\SalesChannel\SalesChannelContext;
-
use Symfony\Component\{
HttpFoundation\RedirectResponse,
HttpFoundation\Request
};
use VRPayment\Sdk\Model\TransactionState;
-use VRPaymentPayment\Core\Api\Transaction\Service\TransactionService as PluginTransactionService;
-use VRPaymentPayment\Core\Util\Payload\TransactionPayload;
-
+use VRPaymentPayment\Core\Api\Transaction\Service\TransactionService;
/**
@@ -47,18 +27,13 @@ use VRPaymentPayment\Core\Util\Payload\TransactionPayload;
*
* @package VRPaymentPayment\Core\Checkout\PaymentHandler
*/
-class VRPaymentPaymentHandler extends AbstractPaymentHandler
+class VRPaymentPaymentHandler implements AsynchronousPaymentHandlerInterface
{
/**
- * @var CustomCartPersister
+ * @var \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService
*/
- private CustomCartPersister $cartPersister;
-
- /**
- * @var \VRPaymentPayment\Core\Api\Transaction\Service\PluginTransactionService
- */
- protected $pluginTransactionService;
+ protected $transactionService;
/**
* @var \Psr\Log\LoggerInterface
@@ -69,32 +44,22 @@ class VRPaymentPaymentHandler extends AbstractPaymentHandler
*/
private $orderTransactionStateHandler;
- protected SalesChannelContextService $salesChannelContextService;
-
- protected EntityRepository $orderTransactionRepository;
-
- protected ?EntityRepository $subscriptionRepository;
-
/**
* VRPaymentPaymentHandler constructor.
+ *
+ * @param \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService $transactionService
+ * @param \Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler $orderTransactionStateHandler
*/
- public function __construct(
- CustomCartPersister $cartPersister,
- PluginTransactionService $pluginTransactionService,
- OrderTransactionStateHandler $orderTransactionStateHandler,
- SalesChannelContextService $salesChannelContextService,
- EntityRepository $orderTransactionRepository,
- ?EntityRepository $subscriptionRepository,
- ) {
- $this->cartPersister = $cartPersister;
- $this->pluginTransactionService = $pluginTransactionService;
+ public function __construct(TransactionService $transactionService, OrderTransactionStateHandler $orderTransactionStateHandler)
+ {
+ $this->transactionService = $transactionService;
$this->orderTransactionStateHandler = $orderTransactionStateHandler;
- $this->salesChannelContextService = $salesChannelContextService;
- $this->orderTransactionRepository = $orderTransactionRepository;
- $this->subscriptionRepository = $subscriptionRepository;
}
+
/**
* @param \Psr\Log\LoggerInterface $logger
+ * @internal
+ * @required
*
*/
public function setLogger(LoggerInterface $logger): void
@@ -108,352 +73,78 @@ class VRPaymentPaymentHandler extends AbstractPaymentHandler
*
* A redirect to the url will be performed
*
- * @param \Symfony\Component\HttpFoundation\Request
- * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
- * @param \Shopware\Core\Framework\Context $context
- * @param \Shopware\Core\Framework\Struct\Struct $validateStruct
+ * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Framework\Validation\DataBag\RequestDataBag $dataBag
+ * @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function pay(
- Request $request,
- PaymentTransactionStruct $transaction,
- Context $context,
- ?Struct $validateStruct
+ AsyncPaymentTransactionStruct $transaction,
+ RequestDataBag $dataBag,
+ SalesChannelContext $salesChannelContext
): RedirectResponse
{
try {
- $orderTransactionId = $transaction->getOrderTransactionId();
- $orderTransaction = $this->orderTransactionRepository->search(
- (new Criteria([$orderTransactionId]))
- ->addAssociation('order'), $context
- )->getEntities()->first();
-
- $contextSource = $context->getSource();
- if ($contextSource instanceof SalesChannelApiSource) {
- $salesChannelContextId = $contextSource->getSalesChannelId();
- }
-
- $parameters = new SalesChannelContextServiceParameters($salesChannelContextId, $request->getSession()->get("sw-context-token", Random::getAlphanumericString(32)), originalContext: $context);
- $salesChannelContext = $this->salesChannelContextService->get($parameters);
$redirectUrl = $transaction->getReturnUrl();
-
- if ($orderTransaction->getOrder()->getAmountTotal() > 0) {
- $transactionId = $request->getSession()->get('transactionId');
+ if ($transaction->getOrder()->getAmountTotal() > 0) {
+ $transactionId = $_SESSION['transactionId'] ?? null;
if ($transactionId === null) {
- $this->pluginTransactionService->createPendingTransaction($salesChannelContext);
+ $this->transactionService->createPendingTransaction($salesChannelContext);
}
- $redirectUrl = $this->pluginTransactionService->create($transaction, $salesChannelContext);
+ $redirectUrl = $this->transactionService->create($transaction, $salesChannelContext);
}
return new RedirectResponse($redirectUrl);
- } catch (\Throwable $e) {
- $request->getSession()->remove('transactionId');
+
+ } catch (\Exception $e) {
+ unset($_SESSION['transactionId']);
$errorMessage = 'An error occurred during the communication with external payment gateway : ' . $e->getMessage();
$this->logger->critical($errorMessage);
- throw PaymentException::customerCanceled($transaction->getOrderTransaction()->getId(), $errorMessage);
+ throw new \Exception($transaction->getOrderTransaction()->getId() . ': ' . $errorMessage);
}
}
/**
* The finalize function will be called when the user is redirected back to shop from the payment gateway.
*
+ * Throw a @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
* @param \Symfony\Component\HttpFoundation\Request $request
- * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
- * @param \Shopware\Core\Framework\Context $context
+ * @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
* @throws \VRPayment\Sdk\ApiException
* @throws \VRPayment\Sdk\Http\ConnectionException
* @throws \VRPayment\Sdk\VersioningException
- * @throws \Exception when the payment was canceled by the customer
+ * @see AsyncPaymentFinalizeException exception if an error ocurres while calling an external payment API
+ * Throw a @see CustomerCanceledAsyncPaymentException exception if the customer canceled the payment process on
+ * payment provider page
+ *
*/
public function finalize(
- Request $request,
- PaymentTransactionStruct $transaction,
- Context $context
+ AsyncPaymentTransactionStruct $transaction,
+ Request $request,
+ SalesChannelContext $salesChannelContext
): void
{
- $orderTransactionId = $transaction->getOrderTransactionId();
- $orderTransaction = $this->orderTransactionRepository->search(
- (new Criteria([$orderTransactionId]))
- ->addAssociation('order'), $context
- )->getEntities()->first();
-
- if ($orderTransaction->getOrder()->getAmountTotal() > 0) {
- $transactionEntity = $this->pluginTransactionService->getByOrderId(
- $orderTransaction->getOrder()->getId(),
- $context
+ if ($transaction->getOrder()->getAmountTotal() > 0) {
+ $transactionEntity = $this->transactionService->getByOrderId(
+ $transaction->getOrder()->getId(),
+ $salesChannelContext->getContext()
);
- $vRPaymentTransaction = $this->pluginTransactionService->read(
+ $vRPaymentTransaction = $this->transactionService->read(
$transactionEntity->getTransactionId(),
- $transactionEntity->getSalesChannelId()
+ $salesChannelContext->getSalesChannel()->getId()
);
if (in_array($vRPaymentTransaction->getState(), [TransactionState::FAILED])) {
$errorMessage = strtr('Customer canceled payment for :orderId on SalesChannel :salesChannelName', [
- ':orderId' => $orderTransaction->getOrder()->getId(),
- ':salesChannelName' => $transactionEntity->getSalesChannelId(),
+ ':orderId' => $transaction->getOrder()->getId(),
+ ':salesChannelName' => $salesChannelContext->getSalesChannel()->getName(),
]);
- $request->getSession()->remove('transactionId');
+ unset($_SESSION['transactionId']);
$this->logger->info($errorMessage);
throw PaymentException::customerCanceled($transaction->getOrderTransaction()->getId(), $errorMessage);
}
} else {
- $this->orderTransactionStateHandler->paid($orderTransaction->getId(), $context);
+ $this->orderTransactionStateHandler->paid($transaction->getOrderTransaction()->getId(), $salesChannelContext->getContext());
}
-
- $token = $request->getSession()->get('sw-context-token');
- if ($token) {
- $salesChannelId = $transactionEntity->getSalesChannelId();
- $parameters = new SalesChannelContextServiceParameters($salesChannelId, $token, originalContext: $context);
- $salesChannelContext = $this->salesChannelContextService->get($parameters);
-
- $salesChannelContext->getContext()->addState('do-cart-delete');
- $this->logger->info('Clearing cart with token: ' . $token);
- $this->cartPersister->delete($salesChannelContext->getToken(), $salesChannelContext);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function supports(
- PaymentHandlerType $type,
- string $paymentMethodId,
- Context $context
- ): bool {
- // Both PaymentHandlerType::RECURRING and PaymentHandlerType::REFUND are supported
- //TODO: check that the payment method really supports recurring.
- // In order to do that, we need to get this information in when synching the payment methods.
- // The payment methods in the portal are managed by their Connectors. The Connectors need
- // to support the recurrin and the refunding. These values are 1453357059666L and 1453351315899L for
- // tokenization and refunding respectively.
- return true;
- }
-
- public function recurring(
- PaymentTransactionStruct $transaction,
- Context $context
- ): void {
- if ($this->subscriptionRepository === null || !class_exists(\Shopware\Commercial\Subscription\Entity\Subscription\SubscriptionEntity::class)) {
- throw PaymentException::paymentTypeUnsupported(
- $transaction->getOrderTransactionId(),
- 'Shopware Commercial plugin with Subscription feature is not installed or active. Recurring payments cannot be processed.'
- );
- }
-
- if ($transaction->isRecurring() === false) {
- //TODO: Provide payment-method-id instead of order-transaction-id
- throw PaymentException::paymentTypeUnsupported($transaction->getOrderTransaction()->getId(), PaymentHandlerType::RECURRING);
- }
-
- $recurringData = $transaction->getRecurring();
- $newTransactionId = $transaction->getOrderTransactionId();
-
- if ($recurringData === null) {
- throw PaymentException::recurringInterrupted($newTransactionId, 'Recurring payment data is missing from the transaction struct.');
- }
-
- try {
- // Get information about the subscription
- $subscriptionId = $recurringData->getSubscriptionId();
- $criteria = new Criteria([$subscriptionId]);
- $criteria->addAssociation('orders.transactions.stateMachineState');
-
- /** @var SubscriptionEntity|null $subscription */
- $subscription = $this->subscriptionRepository->search($criteria, $context)->get($subscriptionId);
-
- if ($subscription === null) {
- throw PaymentException::recurringInterrupted($newTransactionId, sprintf('Subscription with ID "%s" could not be found.', $subscriptionId));
- }
-
- // Find the original order and transaction
- $orders = $subscription->getOrders();
- if ($orders === null || $orders->count() === 0) {
- throw PaymentException::recurringInterrupted($newTransactionId, 'No orders found associated with the subscription.');
- }
-
- $orders->sort(fn (OrderEntity $a, OrderEntity $b) => $a->getCreatedAt() <=> $b->getCreatedAt());
- /** @var OrderEntity|null $originalOrder */
- $originalOrder = $orders->first();
-
- $originalTransactions = $originalOrder->getTransactions();
-
- if ($originalTransactions === null) {
- throw PaymentException::recurringInterrupted($newTransactionId, 'No transactions found on the original order.');
- }
-
- /** @var OrderTransactionEntity|null $originalTransaction */
- $originalTransaction = $originalTransactions->filter(
- fn (OrderTransactionEntity $t) => $t->getStateMachineState()?->getTechnicalName() === OrderTransactionStates::STATE_PAID
- )->first();
-
- if ($originalTransaction === null) {
- throw PaymentException::recurringInterrupted($newTransactionId, 'A successful, paid transaction could not be found on the original order to retrieve payment details.');
- }
-
- $newOrderTransaction = $this->orderTransactionRepository->search(
- (new Criteria([$newTransactionId]))
- ->addAssociation('order'), $context
- )->getEntities()->first();
- $orderNumber = $newOrderTransaction->getOrder()->getOrderNumber();
-
- // Access the custom fields for getting the original transaction details
- $customFields = $originalTransaction->getCustomFields();
- // The tokenReference is not really needed because it's also stored in the original transaction
- $tokenReference = $customFields[TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TOKEN] ?? null;
- $spaceId = (string) $customFields[TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_SPACE_ID] ?? null;
- $sdkTransactionId = $customFields[TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TRANSACTION_ID] ?? null;
-
- if ($sdkTransactionId === null || $spaceId === null) {
- throw PaymentException::recurringInterrupted($newTransactionId, 'Required original transaction ID and spaceId is missing from order transaction custom fields.');
- }
-
- /** @var \VRPayment\Sdk\Model\Transaction $originalSdkTransaction */
- $originalSdkTransaction = $this->pluginTransactionService->read($sdkTransactionId, "");
-
- //TODO: Consider moving this logic to its own function for improved readability
- $sdkTransactionCreate = new \VRPayment\Sdk\Model\TransactionCreate;
-
- // Build the new transaction based on the original transaction
- $sdkTransactionCreate->setCurrency($originalSdkTransaction->getCurrency());
- $sdkTransactionCreate->setBillingAddress($this->addressCreateFromSdk($originalSdkTransaction->getBillingAddress()));
- $sdkTransactionCreate->setShippingAddress($this->addressCreateFromSdk($originalSdkTransaction->getShippingAddress()));
- $sdkTransactionCreate->setShippingMethod($originalSdkTransaction->getShippingMethod());
- $sdkTransactionCreate->setCustomerEmailAddress($originalSdkTransaction->getCustomerEmailAddress());
- $sdkTransactionCreate->setCustomerId($originalSdkTransaction->getCustomerId());
- $sdkTransactionCreate->setLanguage($originalSdkTransaction->getLanguage());
- // Get the merchant reference from the new Order, not the original one
- $sdkTransactionCreate->setMerchantReference($orderNumber);
- $sdkTransactionCreate->setInvoiceMerchantReference($originalSdkTransaction->getInvoiceMerchantReference());
-
- $lineItems = $originalSdkTransaction->getLineItems();
- $lineItemsCreate = [];
- foreach ($lineItems as $lineItem) {
- $lineItemsCreate[] = $this->lineItemCreateFromSdk($lineItem);
- }
- if (count($lineItemsCreate) > 0) {
- $sdkTransactionCreate->setLineItems($lineItemsCreate);
- }
-
- $sdkTransactionCreate->setSuccessUrl($originalSdkTransaction->getSuccessUrl());
- $sdkTransactionCreate->setToken($originalSdkTransaction->getToken());
- $sdkTransactionCreate->setTokenizationMode($originalSdkTransaction->getTokenizationMode());
- $sdkTransactionCreate->setMetaData($originalSdkTransaction->getMetaData());
-
- // Create the new recurring transaction
- $newSdkTransaction = $this->pluginTransactionService->createRecurringTransaction($sdkTransactionCreate, $spaceId);
-
- // Set the new state for the new order transaction
- if (in_array($newSdkTransaction->getState(), [TransactionState::AUTHORIZED, TransactionState::COMPLETED, TransactionState::CONFIRMED, TransactionState::FULFILL])) {
- $this->orderTransactionStateHandler->paid($newTransactionId, $context);
- } elseif (in_array($newSdkTransaction->getState(), [TransactionState::DECLINE, TransactionState::FAILED, TransactionState::VOIDED])) {
- $this->orderTransactionStateHandler->fail($newTransactionId, $context);
- } elseif (in_array($newSdkTransaction->getState(), [TransactionState::PENDING, TransactionState::PROCESSING])) {
- $this->orderTransactionStateHandler->process($newTransactionId, $context);
- } else {
- $this->orderTransactionStateHandler->reopen($newTransactionId, $context);
- }
-
- $data = [
- 'id' => $newTransactionId,
- 'customFields' => [
- TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TRANSACTION_ID => $newSdkTransaction->getId(),
- TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_SPACE_ID => $spaceId,
- TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TOKEN => $tokenReference,
- ],
- ];
-
- // Update the new order transaction with the new transaction details
- $this->orderTransactionRepository->update([$data], $context);
- $this->pluginTransactionService->upsert($newSdkTransaction, $context);
- }
- catch (\Throwable $e) {
- $errorMessage = 'An error occurred during the communication with external payment gateway : ' . $e->getMessage();
- $this->logger->critical($errorMessage);
- throw PaymentException::recurringInterrupted($transaction->getOrderTransactionId(), $errorMessage);
- }
- }
-
- /**
- * Creates a new AddressCreate instance from the given SDK Address model.
- *
- * @param \VRPayment\Sdk\Model\Address $address The address model from the SDK.
- * @return \VRPayment\Sdk\Model\AddressCreate The newly created AddressCreate instance.
- */
- private function addressCreateFromSdk(\VRPayment\Sdk\Model\Address $address): \VRPayment\Sdk\Model\AddressCreate {
- $addressCreate = new \VRPayment\Sdk\Model\AddressCreate;
-
- $addressCreate->setCity($address->getCity());
- $addressCreate->setCommercialRegisterNumber($address->getCommercialRegisterNumber());
- $addressCreate->setCountry($address->getCountry());
- $addressCreate->setDateOfBirth($address->getDateOfBirth());
- $addressCreate->setDependentLocality($address->getDependentLocality());
- $addressCreate->setEmailAddress($address->getEmailAddress());
- $addressCreate->setFamilyName($address->getFamilyName());
- $addressCreate->setGender($address->getGender());
- $addressCreate->setGivenName($address->getGivenName());
- $addressCreate->setMobilePhoneNumber($address->getMobilePhoneNumber());
- $addressCreate->setOrganizationName($address->getOrganizationName());
- $addressCreate->setPhoneNumber($address->getPhoneNumber());
- $addressCreate->setPostalState($address->getPostalState());
- $addressCreate->setPostcode($address->getPostcode());
- $addressCreate->setSalesTaxNumber($address->getSalesTaxNumber());
- $addressCreate->setSalutation($address->getSalutation());
- $addressCreate->setSocialSecurityNumber($address->getSocialSecurityNumber());
- $addressCreate->setSortingCode($address->getSortingCode());
- $addressCreate->setStreet($address->getStreet());
-
- return $addressCreate;
- }
-
- /**
- * Creates a LineItemCreate object from a given SDK LineItem.
- *
- * This method takes a \VRPayment\Sdk\Model\LineItem instance and transforms it into a
- * \VRPayment\Sdk\Model\LineItemCreate object, which can be used for further processing
- * or integration with the VRPayment payment SDK.
- *
- * @param \VRPayment\Sdk\Model\LineItem $lineItem The line item from the SDK to convert.
- * @return \VRPayment\Sdk\Model\LineItemCreate The created LineItemCreate object.
- */
- private function lineItemCreateFromSdk(\VRPayment\Sdk\Model\LineItem $lineItem): \VRPayment\Sdk\Model\LineItemCreate
- {
- $lineItemCreate = new \VRPayment\Sdk\Model\LineItemCreate();
-
- $lineItemCreate->setAmountIncludingTax($lineItem->getAmountIncludingTax());
-
- $attributes = $lineItem->getAttributes();
- $attributesCreate = [];
- foreach ($attributes as $id => $attribute) {
- $attributeCreate = new \VRPayment\Sdk\Model\LineItemAttributeCreate();
- $attributeCreate->setLabel($attribute->getLabel());
- $attributeCreate->setValue($attribute->getValue());
- $attributesCreate[$id] = $attributeCreate;
- }
- if (count($attributesCreate) > 0) {
- $lineItemCreate->setAttributes($attributesCreate);
- }
-
- $lineItemCreate->setDiscountIncludingTax($lineItem->getDiscountIncludingTax());
- $lineItemCreate->setName($lineItem->getName());
- $lineItemCreate->setQuantity($lineItem->getQuantity());
- $lineItemCreate->setShippingRequired($lineItem->getShippingRequired());
- $lineItemCreate->setSku($lineItem->getSku());
-
- $taxes = $lineItem->getTaxes();
- $taxesCreate = [];
- foreach ($taxes as $tax) {
- $taxCreate = new \VRPayment\Sdk\Model\TaxCreate();
- $taxCreate->setRate($tax->getRate());
- $taxCreate->setTitle($tax->getTitle());
- $taxesCreate[] = $taxCreate;
- }
- if (count($taxesCreate) > 0) {
- $lineItemCreate->setTaxes($taxesCreate);
- }
-
- $lineItemCreate->setType($lineItem->getType());
- $lineItemCreate->setUniqueId($lineItem->getUniqueId());
-
- return $lineItemCreate;
}
}
diff --git a/src/Core/Checkout/Subscription/Command/GenerateSubscriptionOrderCommand.php b/src/Core/Checkout/Subscription/Command/GenerateSubscriptionOrderCommand.php
deleted file mode 100644
index 8719a5b..0000000
--- a/src/Core/Checkout/Subscription/Command/GenerateSubscriptionOrderCommand.php
+++ /dev/null
@@ -1,116 +0,0 @@
-addArgument('subscriptionIdentifier', InputArgument::REQUIRED, 'The ID or Number of the subscription to process.');
- }
-
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $io = new ShopwareStyle($input, $output);
-
- if ($this->subscriptionRepository === null || !class_exists(\Shopware\Commercial\Subscription\Entity\Subscription\SubscriptionEntity::class)) {
- $io->error('Subscription functionality is not available in this Shopware instance. Please ensure the Subscription plugin is installed and enabled.');
- return self::FAILURE;
- }
-
- $identifier = $input->getArgument('subscriptionIdentifier');
-
- if (!is_string($identifier)) {
- $io->error('Invalid Subscription ID provided.');
- return self::FAILURE;
- }
- $subscriptionId = $this->findSubscriptionId($identifier, $io);
-
- if ($subscriptionId === null) {
- // Error message is already printed in findSubscriptionId
- return self::FAILURE;
- }
-
- $io->text(sprintf('Forcing next schedule for subscription ID: %s', $subscriptionId));
- $this->forceNextSchedule($subscriptionId);
-
- $io->title('Subscription Order Generation');
- $io->text(sprintf('Dispatching GenerateSubscriptionOrder message for subscription ID: %s', $subscriptionId));
-
- $this->bus->dispatch(new GenerateSubscriptionOrder($subscriptionId));
-
- $io->success('Message dispatched successfully!');
- $io->note('Ensure a message consumer is running to process the queue: "bin/console messenger:consume async"');
-
- return self::SUCCESS;
- }
-
- /**
- * Set the next schedule date to the current time, so it will be processed immediately.
- *
- * @param string $subscriptionId
- * @return void
- */
- private function forceNextSchedule(string $subscriptionId): void
- {
- $context = Context::createDefaultContext();
- $this->subscriptionRepository->update([
- [
- 'id' => $subscriptionId,
- 'nextSchedule' => (new \DateTime())->format(Defaults::STORAGE_DATE_TIME_FORMAT),
- ]
- ], $context);
- }
-
- private function findSubscriptionId(string $identifier, ShopwareStyle $io): ?string
- {
- $context = Context::createDefaultContext();
- if (Uuid::isValid($identifier)) {
- // Check if a subscription with this ID actually exists
- $result = $this->subscriptionRepository->searchIds(new Criteria([$identifier]), $context);
- if ($result->firstId()) {
- return $identifier;
- }
- $io->error(sprintf('No subscription found with ID "%s".', $identifier));
- return null;
- }
-
- // If not a UUID, assume it's a subscription number
- $criteria = new Criteria();
- $criteria->addFilter(new EqualsFilter('subscriptionNumber', $identifier));
- $result = $this->subscriptionRepository->searchIds($criteria, $context);
-
- if ($result->firstId() === null) {
- $io->error(sprintf('No subscription found with number "%s".', $identifier));
- return null;
- }
-
- return $result->firstId();
- }
-}
diff --git a/src/Core/Storefront/Checkout/Subscriber/CheckoutSubscriber.php b/src/Core/Storefront/Checkout/Subscriber/CheckoutSubscriber.php
index 9109457..9baf214 100644
--- a/src/Core/Storefront/Checkout/Subscriber/CheckoutSubscriber.php
+++ b/src/Core/Storefront/Checkout/Subscriber/CheckoutSubscriber.php
@@ -100,7 +100,6 @@ class CheckoutSubscriber implements EventSubscriberInterface
{
return [
CheckoutConfirmPageLoadedEvent::class => ['onConfirmPageLoaded', 1],
- "subscription." . CheckoutConfirmPageLoadedEvent::class => ['onConfirmPageLoaded', 1],
MailBeforeValidateEvent::class => ['onMailBeforeValidate', 1],
];
}
diff --git a/src/Core/Util/Analytics/Analytics.php b/src/Core/Util/Analytics/Analytics.php
index 2a02274..cf2fd15 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 => '7.1.0',
+ self::PLUGIN_SYSTEM_VERSION => '6.1.15',
];
}
diff --git a/src/Core/Util/Payload/TransactionPayload.php b/src/Core/Util/Payload/TransactionPayload.php
index 30368e8..8f9bc59 100644
--- a/src/Core/Util/Payload/TransactionPayload.php
+++ b/src/Core/Util/Payload/TransactionPayload.php
@@ -8,14 +8,10 @@ use Shopware\Core\{Checkout\Cart\Tax\Struct\CalculatedTaxCollection,
Checkout\Customer\Aggregate\CustomerAddress\CustomerAddressEntity,
Checkout\Customer\CustomerEntity,
Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity,
- Checkout\Order\OrderEntity,
- Checkout\Payment\Cart\PaymentTransactionStruct,
+ Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
Framework\DataAbstractionLayer\Search\Criteria,
System\SalesChannel\SalesChannelContext
};
-use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
-use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
-
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use VRPayment\Sdk\{Model\AddressCreate,
@@ -40,10 +36,6 @@ use VRPaymentPayment\Core\{Api\PaymentMethodConfiguration\Entity\PaymentMethodCo
Util\Payload\CustomProducts\CustomProductsLineItemTypes
};
-use Shopware\Core\System\SystemConfig\SystemConfigService;
-use Shopware\Core\Framework\Context;
-use Shopware\Core\System\Tax\TaxEntity;
-
/**
* Class TransactionPayload
*
@@ -56,7 +48,6 @@ class TransactionPayload extends AbstractPayload
public const ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_SPACE_ID = 'vrpayment_space_id';
public const ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TRANSACTION_ID = 'vrpayment_transaction_id';
- public const ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TOKEN = 'vrpayment_token';
public const VRPAYMENT_METADATA_SALES_CHANNEL_ID = 'salesChannelId';
public const VRPAYMENT_METADATA_ORDER_ID = 'orderId';
@@ -70,7 +61,7 @@ class TransactionPayload extends AbstractPayload
protected $salesChannelContext;
/**
- * @var \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct
+ * @var \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct
*/
protected $transaction;
@@ -94,10 +85,6 @@ class TransactionPayload extends AbstractPayload
*/
protected $translator;
- protected EntityRepository $orderTransactionRepository;
-
- protected OrderEntity $order;
-
/**
* TransactionPayload constructor.
*
@@ -105,14 +92,14 @@ class TransactionPayload extends AbstractPayload
* @param \VRPaymentPayment\Core\Util\LocaleCodeProvider $localeCodeProvider
* @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
* @param \VRPaymentPayment\Core\Settings\Struct\Settings $settings
- * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
*/
public function __construct(
ContainerInterface $container,
LocaleCodeProvider $localeCodeProvider,
SalesChannelContext $salesChannelContext,
Settings $settings,
- PaymentTransactionStruct $transaction
+ AsyncPaymentTransactionStruct $transaction
)
{
$this->localeCodeProvider = $localeCodeProvider;
@@ -121,23 +108,6 @@ class TransactionPayload extends AbstractPayload
$this->transaction = $transaction;
$this->container = $container;
$this->translator = $this->container->get('translator');
- $this->orderTransactionRepository = $this->container->get('order_transaction.repository');
-
- $criteria = (new Criteria());
- $criteria->addFilter(new EqualsFilter('id', $this->transaction->getOrderTransactionId()));
-
- $orders = $this->orderTransactionRepository->search($criteria, $this->salesChannelContext->getContext())->getEntities();
- $orderId = $orders->first()->getOrderId();
-
- $criteria = new Criteria([$orderId]);
- $criteria
- ->addAssociation('lineItems')
- ->addAssociation('orderCustomer')
- ->addAssociation('transactions')
- ->addAssociation('currency')
- ;
-
- $this->order = $this->container->get('order.repository')->search($criteria, $this->salesChannelContext->getContext())->getEntities()->first();
}
/**
@@ -148,21 +118,13 @@ class TransactionPayload extends AbstractPayload
*/
public function get(int $version): TransactionPending
{
- $customerId = $this->order->getOrderCustomer()->getCustomerId();
- $criteria = new Criteria([$customerId]);
- $criteria->addAssociation('activeBillingAddress')
- ->addAssociation('activeShippingAddress')
- ->addAssociation('activeShippingAddress')
- ->addAssociation('defaultBillingAddress')
- ->addAssociation('defaultShippingAddress')
- ->addAssociation('salutation');
- $customer = $this->container->get('customer.repository')->search($criteria, $this->salesChannelContext->getContext())->getEntities()->first();
+ $customer = $this->salesChannelContext->getCustomer();
$lineItems = $this->getLineItems();
-
$billingAddress = $this->getAddressPayload($customer, $customer->getActiveBillingAddress());
$shippingAddress = $this->getAddressPayload($customer, $customer->getActiveShippingAddress(), false);
+
$customerId = null;
$customerName = null;
if ($customer->getGuest() === false) {
@@ -175,14 +137,14 @@ class TransactionPayload extends AbstractPayload
}
$transactionData = [
- 'currency' => $this->order->getCurrency()->getIsoCode(),
- 'customer_email_address' => $customer->getEmail(),
+ 'currency' => $this->salesChannelContext->getCurrency()->getIsoCode(),
+ 'customer_email_address' => $billingAddress->getEmailAddress(),
'customer_id' => $customerId,
'language' => $this->localeCodeProvider->getLocaleCodeFromContext($this->salesChannelContext->getContext()) ?? null,
- 'merchant_reference' => $this->fixLength($this->order->getOrderNumber(), 100),
+ 'merchant_reference' => $this->fixLength($this->transaction->getOrder()->getOrderNumber(), 100),
'meta_data' => [
- self::VRPAYMENT_METADATA_ORDER_ID => $this->order->getId(),
- self::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID => $this->order->getTransactions()->first()->getId(),
+ self::VRPAYMENT_METADATA_ORDER_ID => $this->transaction->getOrder()->getId(),
+ self::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID => $this->transaction->getOrderTransaction()->getId(),
self::VRPAYMENT_METADATA_SALES_CHANNEL_ID => $this->salesChannelContext->getSalesChannel()->getId(),
self::VRPAYMENT_METADATA_CUSTOMER_NAME => $customerName,
],
@@ -199,8 +161,8 @@ class TransactionPayload extends AbstractPayload
$transactionData['meta_data']['additionalAddress2'] = $additionalAddress2;
}
- if (!empty($this->order->getCustomerComment())) {
- $transactionData['meta_data']['customer_comment'] = $this->order->getCustomerComment();
+ if (!empty($this->transaction->getOrder()->getCustomerComment())) {
+ $transactionData['meta_data']['customer_comment'] = $this->transaction->getOrder()->getCustomerComment();
}
$vatIds = $customer->getVatIds();
@@ -236,7 +198,7 @@ class TransactionPayload extends AbstractPayload
$transactionPayload->setAllowedPaymentMethodConfigurations([$paymentConfiguration->getPaymentMethodConfigurationId()]);
$successUrl = $this->transaction->getReturnUrl() . '&status=paid';
- $failedUrl = $this->getFailUrl($this->order->getId()) . '&status=fail';
+ $failedUrl = $this->getFailUrl($this->transaction->getOrder()->getId()) . '&status=fail';
$transactionPayload->setSuccessUrl($successUrl)
->setFailedUrl($failedUrl);
@@ -257,7 +219,7 @@ class TransactionPayload extends AbstractPayload
protected function getLineItems(): array
{
$lineItems = [];
- $items = $this->order->getLineItems() ?? [];
+ $items = $this->transaction->getOrder()->getLineItems();
foreach ($items as $shopLineItem) {
if ($this->shouldSkipLineItem($shopLineItem)) {
@@ -345,90 +307,27 @@ class TransactionPayload extends AbstractPayload
protected function addDiscountLineItem($discount, array &$lineItems): void
{
$calculatedPrice = $discount->getPrice();
- $discountName = $discount->getLabel() ?? 'Unnamed';
- $definition = $discount->getPriceDefinition();
+ $calculatedTaxesCollection = $calculatedPrice->getCalculatedTaxes();
- if ($this->order->getTaxStatus() === 'net' || $definition instanceof \Shopware\Core\Checkout\Cart\Price\Struct\AbsolutePriceDefinition) {
- $calculatedTaxesCollection = $calculatedPrice->getCalculatedTaxes();
- foreach ($calculatedTaxesCollection as $calculatedTax) {
- $rate = $calculatedTax->getTaxRate();
- $amount = $this->calculateDiscountAmount($calculatedTax);
+ foreach ($calculatedTaxesCollection as $calculatedTax) {
+ $rate = $calculatedTax->getTaxRate();
+ $lineItem = new LineItemCreate();
+ $amount = $this->calculateDiscountAmount($calculatedTax);
- $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
- }
- } else {
- $taxRules = $calculatedPrice->getTaxRules();
+ $discountName = $discount->getLabel();
+ $lineItem->setAmountIncludingTax($amount)
+ ->setName(sprintf('DISCOUNT: %s (%s%% tax)', $discount->getLabel(), $rate))
+ ->setQuantity(1)
+ ->setShippingRequired(false)
+ ->setSku('sku-discount-' . $rate . '-' . $discountName, 200)
+ ->setType(LineItemType::DISCOUNT)
+ ->setUniqueId('coupon-sku-discount-' . $rate . '-' . $rate . '-' . $discountName);
- if ($taxRules && $taxRules->count() > 0) {
- foreach ($taxRules as $taxRule) {
- $rate = $taxRule->getTaxRate();
- $amount = $calculatedPrice->getTotalPrice();
- $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
- }
- } else {
- $rate = $this->getDefaultTaxRate();
- $amount = $calculatedPrice->getTotalPrice();
- $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
- }
- }
- }
-
- /**
- * @param string $discountName
- * @param float $amount
- * @param float $rate
- * @return LineItemCreate
- */
- private function createDiscountLineItem(string $discountName, float $amount, float $rate): LineItemCreate
- {
- $lineItem = new LineItemCreate();
-
- $discountSkuName = 'sku-discount-' . $rate . '-' . $discountName;
- $discountTitle = sprintf('DISCOUNT: %s (%s%% tax)', $discountName, $rate);
- if ($this->order->getTaxStatus() === 'tax-free') {
- $discountSkuName = 'sku-discount-' . $discountName;
- $discountTitle = sprintf('DISCOUNT: %s', $discountName);
- }
-
- $lineItem->setAmountIncludingTax($amount)
- ->setName($discountTitle)
- ->setQuantity(1)
- ->setShippingRequired(false)
- ->setSku($discountSkuName, 200)
- ->setType(LineItemType::DISCOUNT)
- ->setUniqueId('coupon-' . $discountSkuName);
-
- $taxRate = new TaxCreate([
- 'title' => 'Discount Tax: ' . $rate,
- 'rate' => $rate,
- ]);
-
- if ($this->order->getTaxStatus() !== 'tax-free') {
+ $taxRate = new TaxCreate(['title' => 'Discount Tax: ' . $rate, 'rate' => $rate]);
$lineItem->setTaxes([$taxRate]);
+
+ $lineItems[] = $lineItem;
}
-
- return $lineItem;
- }
-
- /**
- * @return float
- */
- private function getDefaultTaxRate(): float
- {
- /** @var SystemConfigService $systemConfigService */
- $systemConfigService = $this->container->get(SystemConfigService::class);
- $taxId = $systemConfigService->get('core.tax.defaultTaxRate');
-
- if (!$taxId || !is_string($taxId)) {
- return 21.0;
- }
-
- $criteria = new Criteria([$taxId]);
- /** @var TaxRepository $taxRepository */
- $taxRepository = $this->container->get('tax.repository');
- $tax = $taxRepository->search($criteria, Context::createDefaultContext())->get($taxId);
-
- return $tax instanceof TaxEntity ? $tax->getTaxRate() : 21.0;
}
/**
@@ -437,7 +336,7 @@ class TransactionPayload extends AbstractPayload
protected function calculateDiscountAmount($calculatedTax): float
{
$amount = self::round($calculatedTax->getPrice());
- if ($this->order->getTaxStatus() === 'net') {
+ if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
$amount = self::round($amount + $calculatedTax->getTax());
}
return $amount;
@@ -458,7 +357,9 @@ class TransactionPayload extends AbstractPayload
*/
protected function addOptionalLineItems(array &$lineItems): void
{
- if ($this->order->getShippingCosts() && $this->order->getShippingTotal() > 0) {
+ $shippingCosts = $this->transaction->getOrder()->getShippingCosts();
+
+ if ($shippingCosts && $this->transaction->getOrder()->getShippingTotal() > 0) {
if ($shippingLineItem = $this->getShippingLineItem()) {
$lineItems[] = $shippingLineItem;
}
@@ -480,7 +381,7 @@ class TransactionPayload extends AbstractPayload
protected function getCustomProductOptionLabel(string $lineItemParentId): string
{
$label = '';
- foreach ($this->order->getLineItems() as $shopLineItem) {
+ foreach ($this->transaction->getOrder()->getLineItems() as $shopLineItem) {
if ($shopLineItem->getParentId() === $lineItemParentId && $shopLineItem->getType() === CustomProductsLineItemTypes::LINE_ITEM_TYPE_PRODUCT) {
$label = $shopLineItem->getLabel();
break;
@@ -505,11 +406,10 @@ class TransactionPayload extends AbstractPayload
$sku = $payLoad['productNumber'];
}
$sku = $this->fixLength($sku, 200);
-
$amount = $shopLineItem->getTotalPrice() ? self::round($shopLineItem->getTotalPrice()) : 0;
//include Tax Excluded for Net Tax display customer group
- if ($this->order->getTaxStatus() === 'net') {
+ if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
$amount = self::round($amount + $shopLineItem->getPrice()->getCalculatedTaxes()->getAmount());
}
@@ -545,9 +445,7 @@ class TransactionPayload extends AbstractPayload
}
if (!empty($taxes)) {
- if ($this->order->getTaxStatus() !== 'tax-free') {
- $lineItem->setTaxes($taxes);
- }
+ $lineItem->setTaxes($taxes);
}
if ($shopLineItem->getTotalPrice() >= 0) {
@@ -623,34 +521,31 @@ class TransactionPayload extends AbstractPayload
{
try {
- $amount = $this->order->getShippingTotal();
+ $amount = $this->transaction->getOrder()->getShippingTotal();
$amount = self::round($amount);
if ($amount > 0) {
$shippingName = $this->salesChannelContext->getShippingMethod()->getName() ?? $this->translator->trans('vrpayment.payload.shipping.name');
$taxes = $this->getTaxes(
- $this->order->getShippingCosts()->getCalculatedTaxes(),
+ $this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes(),
$shippingName
);
- if ($this->order->getTaxStatus() === 'net') {
- $amount = self::round($amount + $this->order->getShippingCosts()->getCalculatedTaxes()->getAmount());
+ if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
+ $amount = self::round($amount + $this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes()->getAmount());
}
$lineItem = (new LineItemCreate())
->setAmountIncludingTax($amount)
->setName($this->fixLength($shippingName . ' ' . $this->translator->trans('vrpayment.payload.shipping.lineItem'), 150))
- ->setQuantity($this->order->getShippingCosts()->getQuantity() ?? 1)
+ ->setQuantity($this->transaction->getOrder()->getShippingCosts()->getQuantity() ?? 1)
+ ->setTaxes($taxes)
->setSku($this->fixLength($shippingName . '-Shipping', 200))
/** @noinspection PhpParamsInspection */
->setType(LineItemType::SHIPPING)
->setUniqueId($this->fixLength($shippingName . '-Shipping', 200));
- if ($this->order->getTaxStatus() !== 'tax-free') {
- $lineItem->setTaxes($taxes);
- }
-
if (!$lineItem->valid()) {
$this->logger->critical('Shipping LineItem payload invalid:', $lineItem->listInvalidProperties());
throw new InvalidPayloadException('Shipping LineItem payload invalid:' . json_encode($lineItem->listInvalidProperties()));
@@ -671,15 +566,15 @@ class TransactionPayload extends AbstractPayload
protected function getMultipleShippingLineItems(): array
{
try {
- if ($this->order->getShippingTotal() > 0) {
+ if ($this->transaction->getOrder()->getShippingTotal() > 0) {
$lineItems = [];
$shippingName = $this->salesChannelContext->getShippingMethod()->getName() ?? $this->translator->trans('vrpayment.payload.shipping.name');
$isFirst = true;
- foreach ($this->order->getShippingCosts()->getCalculatedTaxes() as $taxItem) {
+ foreach ($this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes() as $taxItem) {
$amount = self::round($taxItem->getPrice());
- if ($this->order->getTaxStatus() === 'net') {
+ if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
$amount = self::round($amount + $taxItem->getTax());
}
$taxRate = $taxItem->getTaxRate();
@@ -691,15 +586,12 @@ class TransactionPayload extends AbstractPayload
$lineItem = (new LineItemCreate())
->setAmountIncludingTax($amount)
->setName($this->fixLength($name . ' ' . $this->translator->trans('vrpayment.payload.shipping.lineItem'), 150))
- ->setQuantity($this->order->getShippingCosts()->getQuantity() ?? 1)
+ ->setQuantity($this->transaction->getOrder()->getShippingCosts()->getQuantity() ?? 1)
+ ->setTaxes([$tax])
->setSku($this->fixLength($name . '-Shipping', 200))
->setType($isFirst ? LineItemType::SHIPPING : LineItemType::FEE) // First item as SHIPPING, rest as FEE
->setUniqueId($this->fixLength($name . '-Shipping', 200));
- if ($this->order->getTaxStatus() !== 'tax-free') {
- $lineItem->setTaxes([$tax]);
- }
-
if (!$lineItem->valid()) {
$this->logger->critical('Shipping LineItem payload invalid:', $lineItem->listInvalidProperties());
throw new InvalidPayloadException('Shipping LineItem payload invalid:' . json_encode($lineItem->listInvalidProperties()));
@@ -733,8 +625,9 @@ class TransactionPayload extends AbstractPayload
$lineItemPriceTotal = array_sum(array_map(static fn(LineItemCreate $li) => $li->getAmountIncludingTax(), $lineItems));
$this->logger->debug("LineItem price total before adjustment: $lineItemPriceTotal");
+
// Get shipping total including taxes from the order
- $shippingCosts = $this->order->getShippingCosts();
+ $shippingCosts = $this->transaction->getOrder()->getShippingCosts();
$shippingTotal = $shippingCosts ? self::round($shippingCosts->getTotalPrice()) : 0.0;
// Add shipping to the line items total if it's not already included
@@ -743,13 +636,13 @@ class TransactionPayload extends AbstractPayload
$lineItemPriceTotal += $shippingTotal;
}
- $adjustmentPrice = self::round($this->order->getAmountTotal() - $lineItemPriceTotal);
+ $adjustmentPrice = self::round($this->transaction->getOrder()->getAmountTotal() - $lineItemPriceTotal);
if (abs($adjustmentPrice) != 0) {
if ($this->settings->isLineItemConsistencyEnabled()) {
$error = strtr('LineItems total :lineItemTotal does not add up to order total :orderTotal', [
':lineItemTotal' => $lineItemPriceTotal,
- ':orderTotal' => $this->order->getAmountTotal(),
+ ':orderTotal' => $this->transaction->getOrder()->getAmountTotal(),
]);
$this->logger->critical($error);
throw new \Exception($error);
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
index ec0cc3b..506861f 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
@@ -4,21 +4,21 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_completion_amount %}
-
-
+ v-model:value="isCompletion">
+
{% endblock %}
{% block vrpayment_order_action_completion_confirm_button %}
-
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
index 6f86754..3f00152 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
@@ -4,23 +4,23 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_refund_amount_by_amount %}
-
-
+
{% endblock %}
{% block vrpayment_order_action_refund_confirm_button_by_amount %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js
index f11d712..2a0e0ad 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js
@@ -70,18 +70,9 @@ Component.register('vrpayment-order-action-refund-by-amount', {
});
}).catch((errorResponse) => {
try {
- var errorTitle;
- var errorMessage;
- if (errorResponse.response.data == 'refundExceedsAmount') {
- errorTitle = this.$tc('vrpayment-order.refundAction.refundExceedsTotalError.title');
- errorMessage = this.$tc('vrpayment-order.refundAction.refundExceedsTotalError.messageRefundAmountExceedsAvailableBalance');
- } else {
- errorTitle = errorResponse.response.data.errors[0].title;
- errorMessage = errorResponse.response.data.errors[0].detail;
- }
this.createNotificationError({
- title: errorTitle,
- message: errorMessage,
+ title: errorResponse.response.data.errors[0].title,
+ message: errorResponse.response.data.errors[0].detail,
autoClose: false
});
} catch (e) {
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
index 37a7e2b..c3aa0cc 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
@@ -4,13 +4,13 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_refund_amount_partial %}
-
-
+
{{ $tc('vrpayment-order.refundAction.maxAvailableAmountToRefund') }}:
@@ -20,12 +20,12 @@
{% block vrpayment_order_action_refund_confirm_button_partial %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
index d581002..b9274e8 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
@@ -47,9 +47,7 @@ Component.register('vrpayment-order-action-refund-partial', {
createdComponent() {
this.isLoading = false;
this.currency = this.transactionData.transactions[0].currency;
- if (!this.refundAmount) {
- this.refundAmount = this.$parent.$parent.itemRefundableAmount;
- }
+ this.refundAmount = this.$parent.$parent.itemRefundableAmount;
},
createPartialRefund(itemUniqueId) {
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
index a2bfbb1..b1cf34d 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
@@ -5,12 +5,12 @@
{% block vrpayment_order_action_refund_confirm_button_selected %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
index 2e3e421..d25ef15 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
@@ -5,12 +5,12 @@
{% block vrpayment_order_action_refund_amount %}
-
-
+
{{ $tc('vrpayment-order.refundAction.maxAvailableItemsToRefund') }}:
@@ -20,12 +20,12 @@
{% block vrpayment_order_action_refund_confirm_button %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
index 62abf11..98c67c1 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
@@ -4,22 +4,21 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_void_amount %}
- {# Review if this v-model:checked="isVoid" needs to change to checked #}
-
-
+ v-model:value="isVoid">
+
{% endblock %}
{% block vrpayment_order_action_void_confirm_button %}
-
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
index aeac916..27d4108 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
@@ -1,7 +1,6 @@
{% block sw_order_detail_content_tabs_general %}
{% parent %}
-{# sw-tabs-item will dissappear. See: https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md#sw-tabs-is-removed #}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
index f7ab85e..ff18ca8 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
+++ b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
@@ -3,7 +3,7 @@
margin-top: 40px;
}
- .sw-order-detail-base .mt-card-view__content {
+ .sw-order-detail-base .sw-card-view__content {
overflow-x: visible;
overflow-y: visible;
}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
index 30d37cc..5d68090 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
@@ -1,61 +1,61 @@
{% block vrpayment_order_detail %}
-
+
{% block vrpayment_order_actions_section %}
-
+
{% block vrpayment_order_transaction_refunds_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.refund') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_completion_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.completion') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_void_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.void') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_download_invoice_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.download-invoice') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_download_packing_slip_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.download-packing-slip') }}
-
+
{% endblock %}
-
+
{% endblock %}
-
+
{% block vrpayment_order_transaction_history_card %}
-
+
{% block vrpayment_order_transaction_history_grid %}
@@ -78,10 +78,10 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_transaction_line_items_card %}
-
+
{% block vrpayment_order_transaction_line_items_grid %}
@@ -131,10 +131,10 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_transaction_refunds_card %}
-
+
{% block vrpayment_order_transaction_refunds_grid %}
@@ -147,7 +147,7 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_actions_modal_refund_partial %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/snippet/de-DE.json b/src/Resources/app/administration/src/module/vrpayment-order/snippet/de-DE.json
index d712fb1..ecd1e48 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/snippet/de-DE.json
+++ b/src/Resources/app/administration/src/module/vrpayment-order/snippet/de-DE.json
@@ -77,11 +77,7 @@
"successMessage": "Ihre Rückerstattung war erfolgreich",
"successTitle": "Erfolg",
"maxAvailableItemsToRefund": "Maximal Verfügbare Artikel zum Erstatten",
- "maxAvailableAmountToRefund": "Maximal verfügbarer Erstattungsbetrag",
- "refundExceedsTotalError": {
- "title": "Fehler beim Erstellen der Rückerstattung.",
- "messageRefundAmountExceedsAvailableBalance": "Der Rückerstattungsbetrag übersteigt das verfügbare Guthaben."
- }
+ "maxAvailableAmountToRefund": "Maximal verfügbarer Erstattungsbetrag"
},
"transactionHistory": {
"cardTitle": "Einzelheiten",
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/snippet/en-GB.json b/src/Resources/app/administration/src/module/vrpayment-order/snippet/en-GB.json
index 370354c..8f3f943 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/snippet/en-GB.json
+++ b/src/Resources/app/administration/src/module/vrpayment-order/snippet/en-GB.json
@@ -78,11 +78,7 @@
"successMessage": "Your refund was successful.",
"successTitle": "Success",
"maxAvailableItemsToRefund": "Maximum available items to refund",
- "maxAvailableAmountToRefund": "Maximum available amount to refund",
- "refundExceedsTotalError": {
- "title": "Error while creating the refund.",
- "messageRefundAmountExceedsAvailableBalance": "Refund amount exceeds available balance."
- }
+ "maxAvailableAmountToRefund": "Maximum available amount to refund"
},
"transactionHistory": {
"cardTitle": "Details",
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/snippet/fr-FR.json b/src/Resources/app/administration/src/module/vrpayment-order/snippet/fr-FR.json
index b4e9f00..97688e3 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/snippet/fr-FR.json
+++ b/src/Resources/app/administration/src/module/vrpayment-order/snippet/fr-FR.json
@@ -77,11 +77,7 @@
"successMessage": "Votre remboursement a été effectué avec succès.",
"successTitle": "Succès",
"maxAvailableItemsToRefund": "Nombre maximum d'articles disponibles pour le remboursement",
- "maxAvailableAmountToRefund": "Montant maximal disponible pour le remboursement",
- "refundExceedsTotalError": {
- "title": "Erreur lors de la création du remboursement.",
- "messageRefundAmountExceedsAvailableBalance": "Le montant du remboursement dépasse le solde disponible."
- }
+ "maxAvailableAmountToRefund": "Montant maximal disponible pour le remboursement"
},
"transactionHistory": {
"cardTitle": "Détails",
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/snippet/it-IT.json b/src/Resources/app/administration/src/module/vrpayment-order/snippet/it-IT.json
index 12a9ac8..12d174b 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/snippet/it-IT.json
+++ b/src/Resources/app/administration/src/module/vrpayment-order/snippet/it-IT.json
@@ -77,11 +77,7 @@
"successMessage": "Il tuo rimborso è andato a buon fine.",
"successTitle": "Successo",
"maxAvailableItemsToRefund": "Numero massimo di articoli disponibili da rimborsare",
- "maxAvailableAmountToRefund": "Importo massimo disponibile per il rimborso",
- "refundExceedsTotalError": {
- "title": "Errore durante la creazione del rimborso.",
- "messageRefundAmountExceedsAvailableBalance": "LL'importo del rimborso supera il saldo disponibile."
- }
+ "maxAvailableAmountToRefund": "Importo massimo disponibile per il rimborso"
},
"transactionHistory": {
"cardTitle": "Dettagli",
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
index 68ca180..024b3ff 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
@@ -1,4 +1,4 @@
-
@@ -7,16 +7,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :value="props.currentValue"
+ @update:value="props.updateCurrentValue">
+
@@ -25,19 +25,19 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :value="props.currentValue"
+ @update:value="props.updateCurrentValue">
+
-
+
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
index 117ac2d..90f9b5e 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
@@ -1,6 +1,6 @@
{% block vrpayment_settings_content_card_channel_config_credentials %}
-
@@ -17,17 +17,17 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_SPACE_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
@@ -38,17 +38,17 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_USER_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
@@ -59,7 +59,7 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_APPLICATION_KEY]"
:customInheritationCheckFunction="checkTextFieldInheritance">
-
-
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
{% endblock %}
- {% verbatim %}
-
{{ $tc('vrpayment-settings.settingForm.credentials.button.label') }}
-
+
- {% endverbatim %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
index 252b010..0760ce1 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
@@ -1,5 +1,5 @@
{% block vrpayment_settings_content_card_channel_config_options %}
-
{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}
@@ -14,15 +14,15 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_SPACE_VIEW_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ :value="props.currentValue"
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
@@ -55,16 +55,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_LINE_ITEM_CONSISTENCY_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :value="props.currentValue"
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
@@ -75,16 +75,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_EMAIL_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :value="props.currentValue"
+ @update:value="props.updateCurrentValue">
+
{% endblock %}
@@ -92,6 +92,6 @@
{% endblock %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
index 3fad643..ad1f95e 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
@@ -1,5 +1,5 @@
{% block vrpayment_settings_icon %}
-
+
{% endblock %}',{Component:we}=Shopware;we.register("sw-vrpayment-settings-icon",{template:Se});const Ae=`
`,{Component:Te,Mixin:Pe}=Shopware;Te.register("sw-vrpayment-storefront-options",{template:Ae,name:"VRPaymentStorefrontOptions",mixins:[Pe.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{required:!0},isLoading:{type:Boolean,required:!0}},data(){return{...m}},methods:{checkTextFieldInheritance(e){return typeof e!="string"?!0:e.length<=0},checkNumberFieldInheritance(e){return typeof e!="number"?!0:e.length<=0},checkBoolFieldInheritance(e){return typeof e!="boolean"}}});const De=`
`,{Component:Ne,Mixin:ke}=Shopware;Ne.register("sw-vrpayment-advanced-options",{template:De,name:"VRPaymentAdvancedOptions",inject:["acl"],mixins:[ke.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{required:!0},isLoading:{type:Boolean,required:!0}},data(){return{...m}},methods:{checkTextFieldInheritance(e){return typeof e!="string"?!0:e.length<=0},checkNumberFieldInheritance(e){return typeof e!="number"?!0:e.length<=0},checkBoolFieldInheritance(e){return typeof e!="boolean"}}});const $e={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment plugin"},vrpayment:{label:"VRPayment berechtigungen"}}},"vrpayment-settings":{general:{descriptionTextModule:"VRPayment-Einstellungen",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"Dieser Wert sollte nicht leer sein.",salesChannelCard:{button:{description:"Klicken Sie auf diese Schaltfläche, um VRPayment als Standard-Zahlungsabwickler im ausgewählten Vertriebskanal festzulegen",label:"VRPayment als Standard-Zahlungsabwickler festlegen"},messageDefaultPaymentError:"VRPayment als Standard-Zahlungsabwickler konnte nicht festgelegt werden..",messageDefaultPaymentUpdated:"VRPayment als Standard-Zahlungsabwickler wurde festgelegt."},settingForm:{credentials:{applicationKey:{label:"Application Key",tooltipText:"Der Anwendungsschlüssel wird verwendet, um dieses Plugin mit der API VRPayment zu authentifizieren."},cardTitle:"Anmeldedaten",spaceId:{label:"Space ID",tooltipText:"Die Space ID wird verwendet, um dieses Plugin mit der API VRPayment zu authentifizieren."},userId:{label:"User ID",tooltipText:"Die Benutzer-ID wird verwendet, um dieses Plugin mit der VRPayment-API zu authentifizieren."},button:{description:"Klicken Sie auf diese Schaltfläche, um die VRPayment API zu testen",label:"API Verbindung testen"},alert:{title:"API-Test",successMessage:"Die Verbindung wurde erfolgreich getestet.",errorMessage:"Die Verbindung ist fehlgeschlagen. Versuchen Sie es erneut."}},messageSaveSuccess:"VRPayment-Einstellungen wurden gespeichert.",messageOrderDeliveryStateError:"VRPayment OrderDeliveryState konnte nicht gespeichert werden.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState wurde aktualisiert.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration konnte nicht gespeichert werden. Bitte überprüfen Sie Ihre Anmeldedaten.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration wurde registriert.",messageWebHookError:"VRPayment WebHook konnte nicht gespeichert werden. Bitte überprüfen Sie Ihre Zugangsdaten.",messageWebHookUpdated:"VRPayment WebHook wurde aktualisiert.",options:{cardTitle:"Optionen",emailEnabled:{label:"Auftragsbestätigung per E-Mail senden",tooltipText:"Wenn diese Einstellung aktiviert ist, erhalten Ihre Kunden eine E-Mail von Ihrem Geschäft, wenn die Zahlung ihrer Bestellung autorisiert ist."},integration:{label:"Integration",options:{iframe:"Iframe",payment_page:"Payment Page"},tooltipText:"Integration"},lineItemConsistencyEnabled:{label:"Konsistenz der Einzelposten",tooltipText:"Wenn diese Option aktiviert ist, stimmen die Summen der Einzelposten in VRPaymentPayment immer mit der Shopware-Bestellsumme überein."},spaceViewId:{label:"Space View ID",tooltipText:"Space View ID"}},save:"Speichern",storefrontOptions:{cardTitle:"Storefront-Optionen",invoiceDownloadEnabled:{label:"Rechnung Download",tooltipText:"Wenn diese Einstellung aktiviert ist, können Ihre Kunden Auftragsrechnungen von VRPayment herunterladen."}},advancedOptions:{cardTitle:"Erweiterte-Optionen",webhooksUpdateEnabled:{label:"Webhooks-Update",tooltipText:"Wenn diese Einstellung aktiviert ist, wird das Webhook-Update ausgelöst, wenn Sie die Einstellungen speichern"},paymentsUpdateEnabled:{label:"Payments-Update",tooltipText:"Wenn diese Einstellung aktiviert ist, wird die Aktualisierung der Zahlungsmethoden ausgelöst, wenn Sie die Einstellungen speichern"}},titleError:"Fehler",titleSuccess:"Erfolg"}}},Re={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment plugin"},vrpayment:{label:"VRPayment permissions"}}},"vrpayment-settings":{general:{descriptionTextModule:"VRPayment settings",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"This value should not be blank.",salesChannelCard:{button:{description:"Click this button to set VRPayment as default payment handler in the selected SalesChannel",label:"Set VRPayment as default payment handler"},messageDefaultPaymentError:"VRPayment as default payment could not be set.",messageDefaultPaymentUpdated:"VRPayment as default payment has been set."},settingForm:{credentials:{applicationKey:{label:"Application Key",tooltipText:"The Application Key is used to authenticate this plugin with the VRPayment API."},cardTitle:"Credentials",spaceId:{label:"Space ID",tooltipText:"The space ID is used to authenticate this plugin with the VRPayment API."},userId:{label:"User ID",tooltipText:"The user ID is used to authenticate this plugin with the VRPayment API."},button:{description:"Click this button to test the VRPayment API",label:"API connection test"},alert:{title:"API Test",successMessage:"The connection was successfully tested.",errorMessage:"The connection was failed. Try it again."}},messageSaveSuccess:"VRPayment settings have been saved.",messageOrderDeliveryStateError:"VRPayment OrderDeliveryState could not be saved.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState has been updated.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration could not be saved. Please check your credentials.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration has been registered.",messageWebHookError:"VRPayment WebHook could not be saved. Please check your credentials.",messageWebHookUpdated:"VRPayment WebHook has been updated.",options:{cardTitle:"Options",emailEnabled:{label:"Send order confirmation email",tooltipText:"If this setting is enabled your customers will receive an email from your store when their order payment is authorised"},integration:{label:"Integration",options:{iframe:"Iframe",payment_page:"Payment Page"},tooltipText:"Integration"},lineItemConsistencyEnabled:{label:"Line item consistency",tooltipText:"If this option is enabled line item totals in VRPaymentPayment will always match Shopware order total"},spaceViewId:{label:"Space View ID",tooltipText:"Space View ID"}},save:"Save",storefrontOptions:{cardTitle:"Storefront Options",invoiceDownloadEnabled:{label:"Invoice Download",tooltipText:"If this setting is enabled your customers will be able to download order invoices from VRPayment"}},advancedOptions:{cardTitle:"Advanced Options",webhooksUpdateEnabled:{label:"Webhooks Update",tooltipText:"If this setting is enabled webhook update will be triggered when you save settings"},paymentsUpdateEnabled:{label:"Payments Update",tooltipText:"If this setting is enabled payment methods update will be triggered when you save settings"}},titleError:"Error",titleSuccess:"Success"}}},xe={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment brancher"},vrpayment:{label:"VRPayment autorisations"}}},"vrpayment-settings":{general:{descriptionTextModule:"Paramètres de VRPayment",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"Cette valeur ne doit pas être vide.",salesChannelCard:{button:{description:"Cliquez sur ce bouton pour définir VRPayment comme gestionnaire de paiement par défaut dans le canal de vente sélectionné.",label:"Définir VRPayment comme gestionnaire de paiement par défaut"},messageDefaultPaymentError:"VRPayment comme paiement par défaut n'a pas pu être défini.",messageDefaultPaymentUpdated:"VRPayment comme paiement par défaut a été défini."},settingForm:{credentials:{applicationKey:{label:"Application Key",tooltipText:"La clé d'application est utilisée pour authentifier ce plugin avec l'API."},cardTitle:"Références",spaceId:{label:"Space ID",tooltipText:"L'ID de l'espace est utilisé pour authentifier ce plugin avec l'API VRPayment.."},userId:{label:"User ID",tooltipText:"L'ID utilisateur est utilisé pour authentifier ce plugin avec l'API VRPayment."},button:{description:"Cliquez sur ce bouton pour tester l'API VRPayment.",label:"Test de connexion à l'API"},alert:{title:"Test API",successMessage:"La connexion a été testée avec succès.",errorMessage:"La connexion a échoué. Réessayez."}},messageSaveSuccess:"Les paramètres de VRPayment ont été enregistrés.",messageOrderDeliveryStateError:"Les paramètres de VRPayment OrderDeliveryState n'ont pas pu être enregistrés.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState a été mis à jour.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration n'a pas pu être enregistré. Veuillez vérifier vos informations d'identification.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration a été enregistré.",messageWebHookError:"VRPayment WebHook n'a pas pu être enregistré. Veuillez vérifier vos informations d'identification.",messageWebHookUpdated:"VRPayment WebHook a été mis à jour.",options:{cardTitle:"Options",emailEnabled:{label:"Envoyer un e-mail de confirmation de commande",tooltipText:"If this setting is enabled your customers will receive an email from your store when their order payment is authorised"},integration:{label:"Integration",options:{iframe:"Iframe",payment_page:"Page de paiement"},tooltipText:"Integration"},lineItemConsistencyEnabled:{label:"Cohérence des postes de ligne",tooltipText:"Si cette option est activée, les totaux des articles dans VRPaymentPayment correspondront toujours au total de la commande Shopware."},spaceViewId:{label:"Space View ID",tooltipText:"Space View ID"}},save:"Enregistrer",storefrontOptions:{cardTitle:"Storefront Options",invoiceDownloadEnabled:{label:"Téléchargement de facture",tooltipText:"Si ce paramètre est activé, vos clients pourront télécharger les factures de commande depuis VRPayment"}},advancedOptions:{cardTitle:"Options avancées",webhooksUpdateEnabled:{label:"Mise à jour des webhooks",tooltipText:"Si ce paramètre est activé, la mise à jour des webhooks sera déclenchée lorsque vous enregistrerez les paramètres."},paymentsUpdateEnabled:{label:"Mise à jour des paiements",tooltipText:"Si ce paramètre est activé, la mise à jour des méthodes de paiement sera déclenchée lorsque vous enregistrez les paramètres."}},titleError:"Erreur",titleSuccess:"Succès"}}},Oe={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment brancher"},vrpayment:{label:"VRPayment autorisations"}}},"vrpayment-settings":{general:{descriptionTextModule:"Impostazioni VRPayment",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"Questo valore non dovrebbe essere vuoto.",salesChannelCard:{button:{description:"Fai clic su questo pulsante per impostare VRPayment come gestore di pagamento predefinito nel SalesChannel selezionato",label:"Imposta VRPayment come gestore di pagamento predefinito"},messageDefaultPaymentError:"Non è stato possibile impostare VRPayment come pagamento predefinito.",messageDefaultPaymentUpdated:"VRPayment come pagamento predefinito è stato impostato."},settingForm:{credentials:{applicationKey:{label:"Chiave di applicazione",tooltipText:"La chiave dell'applicazione è usata per autenticare questo plugin con l'API VRPayment."},cardTitle:"Credenziali",spaceId:{label:"ID spazio",tooltipText:"L'ID dello spazio è usato per autenticare questo plugin con l'API VRPayment."},userId:{label:"ID utente",tooltipText:"L'ID utente è usato per autenticare questo plugin con l'API VRPayment."},button:{description:"Fare clic su questo pulsante per testare l'API VRPayment.",label:"Test di connessione API"},alert:{title:"Test API",successMessage:"La connessione è stata testata con successo.",errorMessage:"La connessione è fallita. Riprovare."}},messageSaveSuccess:"Le impostazioni di VRPayment sono state salvate.",messageOrderDeliveryStateError:"VRPayment OrderDeliveryState non può essere salvato.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState è stato aggiornato.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration non può essere salvato. Per favore controlla le tue credenziali.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration è stato registrato.",messageWebHookError:"VRPayment WebHook non può essere salvato. Per favore controlla le tue credenziali.",messageWebHookUpdated:"VRPayment WebHook è stato aggiornato.",options:{cardTitle:"Opzioni",emailEnabled:{label:"Invia email di conferma dell'ordine",tooltipText:"Se questa impostazione è abilitata i tuoi clienti riceveranno un'email dal tuo negozio quando il pagamento del loro ordine sarà autorizzato"},integration:{label:"Integrazione",options:{iframe:"Iframe",payment_page:"Pagina di pagamento"},tooltipText:"Integrazione"},lineItemConsistencyEnabled:{label:"Coerenza dell'elemento linea",tooltipText:"Se questa opzione è abilitata i totali degli articoli in VRPaymentPayment corrisponderanno sempre al totale dell'ordine Shopware"},spaceViewId:{label:"ID della vista spazio",tooltipText:"ID della vista spaziale"}},save:"Salva",storefrontOptions:{cardTitle:"Opzioni vetrina",invoiceDownloadEnabled:{label:"Scaricamento fattura",tooltipText:"Se questa impostazione è abilitata i tuoi clienti potranno scaricare le fatture degli ordini da VRPayment"}},advancedOptions:{cardTitle:"Opzioni avanzate",webhooksUpdateEnabled:{label:"Aggiornamento webhooks",tooltipText:"Se questa impostazione è abilitata l'aggiornamento dei webhook sarà attivato quando si salvano le impostazioni"},paymentsUpdateEnabled:{label:"Aggiornamento pagamenti",tooltipText:"Se questa impostazione è abilitata l'aggiornamento dei metodi di pagamento verrà attivato quando si salvano le impostazioni"}},titleError:"Errore",titleSuccess:"Successo"}}},{Module:Fe}=Shopware;Fe.register("vrpayment-settings",{type:"plugin",name:"VRPayment",title:"vrpayment-settings.general.descriptionTextModule",description:"vrpayment-settings.general.descriptionTextModule",color:"#28d8ff",icon:"default-action-settings",version:"1.0.1",targetVersion:"1.0.1",snippets:{"de-DE":$e,"en-GB":Re,"fr-FR":xe,"it-IT":Oe},routes:{index:{component:"vrpayment-settings",path:"index",meta:{parentPath:"sw.settings.index",privilege:"vrpayment.viewer"},props:{default:e=>({hash:e.params.hash})}}},settingsItem:{group:"plugins",to:"vrpayment.settings.index",iconComponent:"sw-vrpayment-settings-icon",backgroundEnabled:!0,privilege:"vrpayment.viewer"}});const p=Shopware.Classes.ApiService;class Ve extends p{constructor(t,a,n="vrpayment"){super(t,a,n)}registerWebHooks(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/register-web-hooks`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}checkApiConnection(t=null,a=null,n=null){const r=this.getBasicHeaders(),o=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/check-api-connection`;return this.httpClient.post(o,{spaceId:t,userId:a,applicationId:n},{headers:r}).then(s=>p.handleResponse(s))}setVRPaymentAsSalesChannelPaymentDefault(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/set-vrpayment-as-sales-channel-payment-default`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}synchronizePaymentMethodConfiguration(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/synchronize-payment-method-configuration`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}installOrderDeliveryStates(){const t=this.getBasicHeaders(),a=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/install-order-delivery-states`;return this.httpClient.post(a,{},{headers:t}).then(n=>p.handleResponse(n))}}const h=Shopware.Classes.ApiService;class Le extends h{constructor(t,a,n="vrpayment"){super(t,a,n)}createRefund(t,a,n,r){const o=this.getBasicHeaders(),s=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund/`;return this.httpClient.post(s,{salesChannelId:t,transactionId:a,quantity:n,lineItemId:r},{headers:o}).then(i=>h.handleResponse(i))}createRefundByAmount(t,a,n){const r=this.getBasicHeaders(),o=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund-by-amount/`;return this.httpClient.post(o,{salesChannelId:t,transactionId:a,refundableAmount:n},{headers:r}).then(s=>h.handleResponse(s))}createPartialRefund(t,a,n,r){const o=this.getBasicHeaders(),s=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-partial-refund/`;return this.httpClient.post(s,{salesChannelId:t,transactionId:a,refundableAmount:n,lineItemId:r},{headers:o}).then(i=>h.handleResponse(i))}}const E=Shopware.Classes.ApiService;class Me extends E{constructor(t,a,n="vrpayment"){super(t,a,n)}getTransactionData(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-transaction-data/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>E.handleResponse(o))}getInvoiceDocument(t,a){return`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-invoice-document/${t}/${a}`}getPackingSlip(t,a){return`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-packing-slip/${t}/${a}`}}const S=Shopware.Classes.ApiService;class Be extends S{constructor(t,a,n="vrpayment"){super(t,a,n)}createTransactionCompletion(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-completion/create-transaction-completion/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>S.handleResponse(o))}}const w=Shopware.Classes.ApiService;class ze extends w{constructor(t,a,n="vrpayment"){super(t,a,n)}createTransactionVoid(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-void/create-transaction-void/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>w.handleResponse(o))}}const{Application:d}=Shopware;d.addServiceProvider("VRPaymentConfigurationService",e=>{const t=d.getContainer("init");return new Ve(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentRefundService",e=>{const t=d.getContainer("init");return new Le(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionService",e=>{const t=d.getContainer("init");return new Me(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionCompletionService",e=>{const t=d.getContainer("init");return new Be(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionVoidService",e=>{const t=d.getContainer("init");return new ze(t.httpClient,e.loginService)});
-//# sourceMappingURL=v-r-payment-payment-C6eiDWfX.js.map
diff --git a/src/Resources/public/administration/assets/v-r-payment-payment-C6eiDWfX.js.map b/src/Resources/public/administration/assets/v-r-payment-payment-C6eiDWfX.js.map
deleted file mode 100644
index 7aee46e..0000000
--- a/src/Resources/public/administration/assets/v-r-payment-payment-C6eiDWfX.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"v-r-payment-payment-C6eiDWfX.js","sources":["../../../app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig","../../../app/administration/src/module/vrpayment-order/extension/sw-order/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.js","../../../app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig","../../../app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.js","../../../app/administration/src/module/vrpayment-order/index.js","../../../app/administration/src/module/vrpayment-settings/acl/index.js","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/index.html.twig","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/configuration-constants.js","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-storefront-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-storefront-options/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.js","../../../app/administration/src/module/vrpayment-settings/index.js","../../../app/administration/src/core/service/api/vrpayment-configuration.service.js","../../../app/administration/src/core/service/api/vrpayment-refund.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction-completion.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction-void.service.js","../../../app/administration/src/init/api-service.init.js"],"sourcesContent":["{% block sw_order_detail_content_tabs_general %}\n {% parent %}\n\n{# sw-tabs-item will dissappear. See: https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md#sw-tabs-is-removed #}\n\n\t{{ $tc('vrpayment-order.header') }}\n \n{% endblock %}\n\n{% block sw_order_detail_actions_slot_smart_bar_actions %}\n\n\t{% parent %}\n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './sw-order.html.twig';\nimport './sw-order.scss';\n\nconst {Component, Context} = Shopware;\nconst Criteria = Shopware.Data.Criteria;\n\nconst vrpaymentFormattedHandlerIdentifier = 'handler_vrpaymentpayment_vrpaymentpaymenthandler';\n\nComponent.override('sw-order-detail', {\n\ttemplate,\n\n\tdata() {\n\t\treturn {\n\t\t\tisVRPaymentPayment: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn !this.isVRPaymentPayment || this.$route.name !== 'vrpayment.order.detail';\n\t\t},\n\t\tshowTabs() {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\twatch: {\n\t\torderId: {\n\t\t\tdeep: true,\n\t\t\thandler() {\n\t\t\t\tif (!this.orderId) {\n\t\t\t\t\tthis.setIsVRPaymentPayment(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst orderRepository = this.repositoryFactory.create('order');\n\t\t\t\tconst orderCriteria = new Criteria(1, 1);\n\t\t\t\torderCriteria.addAssociation('transactions');\n\n\t\t\t\torderRepository.get(this.orderId, Context.api, orderCriteria).then((order) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(order.amountTotal <= 0) ||\n\t\t\t\t\t\t(order.transactions.length <= 0) ||\n\t\t\t\t\t\t!order.transactions[0].paymentMethodId\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.setIsVRPaymentPayment(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst paymentMethodId = order.transactions[0].paymentMethodId;\n\t\t\t\t\tif (paymentMethodId !== undefined && paymentMethodId !== null) {\n\t\t\t\t\t\tthis.setIsVRPaymentPayment(paymentMethodId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\timmediate: true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tsetIsVRPaymentPayment(paymentMethodId) {\n\t\t\tif (!paymentMethodId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst paymentMethodRepository = this.repositoryFactory.create('payment_method');\n\t\t\tpaymentMethodRepository.get(paymentMethodId, Context.api).then(\n\t\t\t\t(paymentMethod) => {\n\t\t\t\t\tthis.isVRPaymentPayment = (paymentMethod.formattedHandlerIdentifier === vrpaymentFormattedHandlerIdentifier);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_completion %}\n\n\n\t{% block vrpayment_order_action_completion_amount %}\n\t\t\n \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_completion_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-completion', {\n\n\ttemplate: template,\n\n\tinject: ['VRPaymentTransactionCompletionService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tisCompletion: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t},\n\n\t\tcompletion() {\n\t\t\tif (this.isCompletion) {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.VRPaymentTransactionCompletionService.createTransactionCompletion(\n\t\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\t\tthis.transactionData.transactions[0].id\n\t\t\t\t).then(() => {\n\t\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.captureAction.successTitle'),\n\t\t\t\t\t\tmessage: this.$tc('vrpayment-order.captureAction.successMessage')\n\t\t\t\t\t});\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_refund %}\n\n\n\t{% block vrpayment_order_action_refund_amount %}\n\n\t\t\n\t\t \n\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.maxAvailableItemsToRefund') }}:\n\t\t\t{{ this.$parent.$parent.itemRefundableQuantity }} \n\t\t
\n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trefundQuantity: 0,\n\t\t\tisLoading: true,\n\t\t\tcurrentLineItem: '',\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.refundQuantity = 1;\n\t\t},\n\n\t\trefund() {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundQuantity,\n\t\t\t\tthis.$parent.$parent.currentLineItem\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_refund_partial %}\n\n\n\t{% block vrpayment_order_action_refund_amount_partial %}\n\t\t\n\t\t \n\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.maxAvailableAmountToRefund') }}:\n\t\t\t{{ this.$parent.$parent.itemRefundableAmount }} \n\t\t
\n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button_partial %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund-partial', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tcurrency: this.transactionData.transactions[0].currency,\n\t\t\trefundAmount: 0.00,\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n createdComponent() {\n this.isLoading = false;\n this.currency = this.transactionData.transactions[0].currency;\n if (!this.refundAmount) {\n this.refundAmount = this.$parent.$parent.itemRefundableAmount;\n }\n },\n\n\t\tcreatePartialRefund(itemUniqueId) {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createPartialRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundAmount,\n\t\t\t\titemUniqueId\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n watch: {\n refundAmount(newValue) {\n if (newValue !== null) {\n this.refundAmount = Math.round(newValue * 100) / 100;\n }\n }\n }\n});\n","{% block vrpayment_order_action_refund_by_amount %}\n\n\n\t{% block vrpayment_order_action_refund_amount_by_amount %}\n\t\t\n\t\t \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button_by_amount %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund-by-amount', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tcurrency: this.transactionData.transactions[0].currency,\n\t\t\trefundAmount: 0,\n\t\t\trefundableAmount: 0,\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.currency = this.transactionData.transactions[0].currency;\n\t\t\tthis.refundAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t\tthis.refundableAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t},\n\n\t\trefundByAmount() {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefundByAmount(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundAmount\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tvar errorTitle;\n\t\t\t\t\tvar errorMessage;\n\t\t\t\t\tif (errorResponse.response.data == 'refundExceedsAmount') {\n\t\t\t\t\t\terrorTitle = this.$tc('vrpayment-order.refundAction.refundExceedsTotalError.title');\n\t\t\t\t\t\terrorMessage = this.$tc('vrpayment-order.refundAction.refundExceedsTotalError.messageRefundAmountExceedsAvailableBalance');\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrorTitle = errorResponse.response.data.errors[0].title;\n\t\t\t\t\t\terrorMessage = errorResponse.response.data.errors[0].detail;\n\t\t\t\t\t}\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorTitle,\n\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_void %}\n\n\n\t{% block vrpayment_order_action_void_amount %}\n {# Review if this v-model:checked=\"isVoid\" needs to change to checked #}\n\t\t\n \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_void_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-void', {\n\ttemplate,\n\n\tinject: ['VRPaymentTransactionVoidService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tisVoid: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t},\n\t\tlineItemColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'uniqueId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.uniqueId'),\n\t\t\t\t\trawData: false,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tprimary: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'name',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.name'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'quantity',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.quantity'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amountIncludingTax',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.amountIncludingTax'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tinlineEdit: 'string',\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'type',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.type'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'taxAmount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.taxAmount'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.currency = this.transactionData.transactions[0].currency;\n\t\t\tthis.refundableAmount = this.transactionData.transactions[0].amountIncludingTax;\n\t\t\tthis.refundAmount = this.transactionData.transactions[0].amountIncludingTax;\n\t\t},\n\n\t\tvoidPayment() {\n\t\t\tif (this.isVoid) {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.VRPaymentTransactionVoidService.createTransactionVoid(\n\t\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\t\tthis.transactionData.transactions[0].id\n\t\t\t\t).then(() => {\n\t\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.voidAction.successTitle'),\n\t\t\t\t\t\tmessage: this.$tc('vrpayment-order.voidAction.successMessage')\n\t\t\t\t\t});\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n","{% block vrpayment_order_detail %}\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t{% block vrpayment_order_actions_section %}\n\t\t\t\t\n\t\t\t\t\t{% block vrpayment_order_transaction_refunds_action_button %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.refund') }}\n\t\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_completion_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.completion') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_void_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.void') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_download_invoice_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.download-invoice') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_download_packing_slip_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.download-packing-slip') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\t\t \n\t\t{% block vrpayment_order_transaction_history_card %}\n\t\t
\n\t\t\t\n\n\t\t\t\t{% block vrpayment_order_transaction_history_grid %}\n\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.customerId') }}: {{ item.customerId }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.customerName') }}: {{ item.customerName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.creditCardHolder') }}: {{ item.creditCardHolder }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.paymentMethod') }}: {{ item.paymentMethodName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.paymentMethodBrand') }}: {{ item.brandName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.PseudoCreditCardNumber') }}: {{ item.pseudoCardNumber }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.CardExpire') }}: {{ item.cardExpireMonth }} / {{ item.cardExpireYear }} \n\t\t\t\t\t\tPayID: {{ item.payId }} \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_transaction_line_items_card %}\n
\n \n\n {% block vrpayment_order_transaction_line_items_grid %}\n \n {% block vrpayment_order_transaction_line_items_grid_grid_actions %}\n \n 0 || item.itemRefundedQuantity > 0\"\n @click=\"lineItemRefund(item.uniqueId)\">\n {{ $tc('vrpayment-order.buttons.label.refund-whole-line-item') }}\n \n\n 0\"\n @click=\"spawnModal('refund', item.uniqueId, item.refundableQuantity)\">\n {{ $tc('vrpayment-order.buttons.label.refund-line-item-by-quantity') }}\n \n\n 0\"\n @click=\"spawnModal('partialRefund', item.uniqueId, item.refundableQuantity, item.refundableAmount)\">\n {{ $tc('vrpayment-order.buttons.label.refund-line-item-parial') }}\n \n \n {% endblock %}\n {% block vrpayment_order_transaction_line_items_grid_bulk_actions %}\n \n \n {{ $tc('vrpayment-order.buttons.label.refund-line-item-selected') }}\n \n \n {% endblock %}\n\n \n {% endblock %}\n \n \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_transaction_refunds_card %}\n\t\t
0\">\n\t\t\t\n\n\t\t\t\t{% block vrpayment_order_transaction_refunds_grid %}\n\t\t\t\t\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund_partial %}\n\t\t\t
\n\t\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund %}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund_by_amount %}\n\t\t\t
\n\t\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_completion%}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_void %}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t
\n\t
\n
\n{% endblock %}\n","/* global Shopware */\n\nimport '../../component/vrpayment-order-action-completion';\nimport '../../component/vrpayment-order-action-refund';\nimport '../../component/vrpayment-order-action-refund-partial';\nimport '../../component/vrpayment-order-action-refund-by-amount';\nimport '../../component/vrpayment-order-action-void';\nimport template from './index.html.twig';\nimport './index.scss';\n\nconst {Component, Mixin, Filter, Context, Utils} = Shopware;\nconst Criteria = Shopware.Data.Criteria;\n\nComponent.register('vrpayment-order-detail', {\n\ttemplate,\n\n\tinject: [\n\t\t'VRPaymentTransactionService',\n\t\t'VRPaymentRefundService',\n\t\t'repositoryFactory'\n\t],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttransactionData: {\n\t\t\t\ttransactions: [],\n\t\t\t\trefunds: []\n\t\t\t},\n\t\t\ttransaction: {},\n\t\t\tlineItems: [],\n\t\t\trefundableQuantity: 0,\n\t\t\titemRefundableQuantity: 0,\n\t\t\tisLoading: true,\n\t\t\torderId: '',\n\t\t\tcurrency: '',\n\t\t\tmodalType: '',\n\t\t\trefundAmount: 0.00,\n\t\t\trefundableAmount: 0.00,\n\t\t\titemRefundedAmount: 0.00,\n\t\t\titemRefundedQuantity: 0,\n\t\t\titemRefundableAmount: 0.00,\n\t\t\tcurrentLineItem: '',\n\t\t\trefundLineItemQuantity: [],\n\t\t\trefundLineItemAmount: [],\n\t\t\tselectedItems: []\n\t\t};\n\t},\n\n\tmetaInfo() {\n\t\treturn {\n\t\t\ttitle: this.$tc('vrpayment-order.header')\n\t\t};\n\t},\n\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t},\n\n\t\trelatedResourceColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'paymentMethodName',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.payment_method'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'state',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.state'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'currency',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.currency'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'authorized_amount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.authorized_amount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.transaction'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'customerId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.customer'),\n\t\t\t\t\trawData: true\n\t\t\t\t}\n\t\t\t];\n\t\t},\n\n\t\tlineItemColumns() {\n\t\t\treturn [\n\t\t\t // It must be set in order to have correctly working checkbox mechanism\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'uniqueId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.uniqueId'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'name',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.name'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'quantity',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.quantity'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amountIncludingTax',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.amountIncludingTax'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'type',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.type'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'taxAmount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.taxAmount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'refundableQuantity',\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\n\t\trefundColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.id'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.amount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'state',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.state'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'createdOn',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.createdOn'),\n\t\t\t\t\trawData: true\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route'() {\n\t\t\tthis.resetDataAttributes();\n\t\t\tthis.createdComponent();\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.orderId = this.$route.params.id;\n\t\t\tconst orderRepository = this.repositoryFactory.create('order');\n\t\t\tconst orderCriteria = new Criteria(1, 1);\n\t\t\torderCriteria.addAssociation('transactions');\n\t\t\torderCriteria.getAssociation('transactions').addSorting(Criteria.sort('createdAt', 'DESC'));\n\n\t\t\torderRepository.get(this.orderId, Context.api, orderCriteria).then((order) => {\n\t\t\t\tthis.order = order;\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tvar totalAmountTemp = 0;\n\t\t\t\tvar refundsAmountTemp = 0;\n\t\t\t\tconst vrpaymentTransactionId = order.transactions[0].customFields.vrpayment_transaction_id;\n\t\t\t\tthis.VRPaymentTransactionService.getTransactionData(order.salesChannelId, vrpaymentTransactionId)\n\t\t\t\t\t.then((VRPaymentTransaction) => {\n\t\t\t\t\t\tthis.currency = VRPaymentTransaction.transactions[0].currency;\n\n\t\t\t\t\t\tVRPaymentTransaction.transactions[0].authorized_amount = Utils.format.currency(\n\t\t\t\t\t\t\tVRPaymentTransaction.transactions[0].authorizationAmount,\n\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tVRPaymentTransaction.refunds.forEach((refund) => {\n\t\t\t\t\t\t\trefundsAmountTemp = parseFloat(parseFloat(refundsAmountTemp) + parseFloat(refund.amount));\n\t\t\t\t\t\t\trefund.amount = Utils.format.currency(\n\t\t\t\t\t\t\t\trefund.amount,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\trefund.reductions.forEach((reduction) => {\n\t\t\t\t\t\t\t if (reduction.quantityReduction > 0) {\n if (this.refundLineItemQuantity[reduction.lineItemUniqueId] === undefined) {\n this.refundLineItemQuantity[reduction.lineItemUniqueId] = reduction.quantityReduction;\n } else {\n this.refundLineItemQuantity[reduction.lineItemUniqueId] += reduction.quantityReduction;\n }\n\t\t\t\t\t\t\t }\n if (reduction.unitPriceReduction > 0) {\n if (this.refundLineItemAmount[reduction.lineItemUniqueId] === undefined) {\n this.refundLineItemAmount[reduction.lineItemUniqueId] = reduction.unitPriceReduction;\n } else {\n this.refundLineItemAmount[reduction.lineItemUniqueId] += reduction.unitPriceReduction;\n }\n }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tVRPaymentTransaction.transactions[0].lineItems.forEach((lineItem) => {\n\t\t\t\t\t\t\tif (!lineItem.id) {\n\t\t\t\t\t\t\t\tlineItem.id = lineItem.uniqueId;\n }\n\n lineItem.itemRefundedAmount = parseFloat(this.refundLineItemAmount[lineItem.uniqueId] || 0) * parseInt(lineItem.quantity);\n lineItem.amountIncludingTax = parseFloat(lineItem.amountIncludingTax) || 0;\n\n lineItem.itemRefundedQuantity = parseInt(this.refundLineItemQuantity[lineItem.uniqueId]) || 0;\n lineItem.refundableAmount = parseFloat(\n (lineItem.amountIncludingTax - lineItem.itemRefundedAmount).toFixed(2)\n );\n\n\t\t\t\t\t\t\tlineItem.amountIncludingTax = Utils.format.currency(\n\t\t\t\t\t\t\t\tlineItem.amountIncludingTax,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tlineItem.taxAmount = Utils.format.currency(\n\t\t\t\t\t\t\t\tlineItem.taxAmount,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\ttotalAmountTemp = parseFloat(parseFloat(totalAmountTemp) + parseFloat(lineItem.unitPriceIncludingTax * lineItem.quantity));\n\n\t\t\t\t\t\t\tlineItem.refundableQuantity = parseInt(\n\t\t\t\t\t\t\t\tparseInt(lineItem.quantity) - parseInt(this.refundLineItemQuantity[lineItem.uniqueId] || 0)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.lineItems = VRPaymentTransaction.transactions[0].lineItems;\n\t\t\t\t\t\tthis.transactionData = VRPaymentTransaction;\n\t\t\t\t\t\tthis.transaction = this.transactionData.transactions[0];\n\t\t\t\t\t\tthis.refundAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t\t\t\t\tthis.refundableAmount = parseFloat(parseFloat(totalAmountTemp) - parseFloat(refundsAmountTemp));\n\n\t\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.paymentDetails.error.title'),\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.paymentDetails.error.title'),\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tdownloadPackingSlip() {\n\t\t\twindow.open(\n\t\t\t\tthis.VRPaymentTransactionService.getPackingSlip(\n\t\t\t\t\tthis.transaction.metaData.salesChannelId,\n\t\t\t\t\tthis.transaction.id\n\t\t\t\t),\n\t\t\t\t'_blank'\n\t\t\t);\n\t\t},\n\n\t\tdownloadInvoice() {\n\t\t\twindow.open(\n\t\t\t\tthis.VRPaymentTransactionService.getInvoiceDocument(\n\t\t\t\t\tthis.transaction.metaData.salesChannelId,\n\t\t\t\t\tthis.transaction.id\n\t\t\t\t),\n\t\t\t\t'_blank'\n\t\t\t);\n\t\t},\n\n\t\tresetDataAttributes() {\n\t\t\tthis.transactionData = {\n\t\t\t\ttransactions: [],\n\t\t\t\trefunds: []\n\t\t\t};\n\t\t\tthis.lineItems = [];\n\t\t\tthis.refundLineItemQuantity = [];\n\t\t\tthis.refundLineItemAmount = [];\n\t\t\tthis.isLoading = true;\n\t\t},\n\n\t\tspawnModal(modalType, lineItemId, refundableQuantity, itemRefundableAmount) {\n\t\t\tthis.modalType = modalType;\n\t\t\tthis.currentLineItem = lineItemId;\n\t\t\tthis.itemRefundableQuantity = refundableQuantity;\n this.itemRefundableAmount = !isNaN(itemRefundableAmount) ? Math.round(itemRefundableAmount * 100) / 100 : 0;\n\t\t},\n\n\t\tcloseModal() {\n\t\t\tthis.modalType = '';\n\t\t},\n\n\t\tlineItemRefund(lineItemId) {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\t0,\n\t\t\t\tlineItemId\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.response.data,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tisSelectable(item) {\n\t\t\treturn item.refundableQuantity > 0 && item.refundableAmount > 0 && item.itemRefundedAmount == 0 && item.itemRefundedQuantity == 0;\n\t\t},\n\t\tonSelectionChanged(selection) {\n\t\t\tthis.selectedItems = Object.values(selection);\n\t\t},\n onPerformBulkAction() {\n if (this.selectedItems.length) {\n // Set isLoading to true to show the loader\n this.isLoading = true;\n\n // Force the DOM to update before proceeding with the asynchronous operations\n this.$nextTick(() => {\n const refundPromises = this.selectedItems.map((item) => {\n return this.lineItemRefundBulk(item.uniqueId); // Simulated refund action with delay\n });\n\n // Wait for all refund promises to complete\n Promise.all(refundPromises)\n .then(() => {\n // Once all promises are resolved, hide the loader and close the modal\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n })\n .catch((error) => {\n // Handle any errors during the refund process\n this.createNotificationError({\n title: 'Error',\n message: 'Something went wrong with the refunds',\n autoClose: false\n });\n this.isLoading = false; // Ensure the loader is hidden even on error\n });\n });\n }\n },\n lineItemRefundBulk(lineItemId) {\n return new Promise((resolve, reject) => {\n this.VRPaymentRefundService.createRefund(\n this.transactionData.transactions[0].metaData.salesChannelId,\n this.transactionData.transactions[0].id,\n 0,\n lineItemId\n )\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-order.refundAction.successTitle'),\n message: this.$tc('vrpayment-order.refundAction.successMessage')\n });\n resolve();\n })\n .catch((errorResponse) => {\n try {\n this.createNotificationError({\n title: errorResponse.response.data.errors[0].title,\n message: errorResponse.response.data.errors[0].detail,\n autoClose: false\n });\n } catch (e) {\n this.createNotificationError({\n title: errorResponse.title,\n message: errorResponse.response.data,\n autoClose: false\n });\n } finally {\n reject();\n }\n });\n });\n },\n\t}\n});\n","/* global Shopware */\n\nimport './extension/sw-order';\nimport './page/vrpayment-order-detail';\n\nimport deDE from './snippet/de-DE.json';\nimport enGB from './snippet/en-GB.json';\nimport frFR from './snippet/fr-FR.json';\nimport itIT from './snippet/it-IT.json';\n\nconst {Module} = Shopware;\n\nModule.register('vrpayment-order', {\n\ttype: 'plugin',\n\tname: 'VRPayment',\n\ttitle: 'vrpayment-order.general.title',\n\tdescription: 'vrpayment-order.general.descriptionTextModule',\n\tversion: '1.0.1',\n\ttargetVersion: '1.0.1',\n\tcolor: '#2b52ff',\n\n\tsnippets: {\n\t\t'de-DE': deDE,\n\t\t'en-GB': enGB,\n\t\t'fr-FR': frFR,\n\t\t'it-IT': itIT\n\t},\n\n\trouteMiddleware(next, currentRoute) {\n\t\tif (currentRoute.name === 'sw.order.detail') {\n\t\t\tcurrentRoute.children.push({\n\t\t\t\tcomponent: 'vrpayment-order-detail',\n\t\t\t\tname: 'vrpayment.order.detail',\n\t\t\t\tisChildren: true,\n\t\t\t\tpath: '/sw/order/vrpayment/detail/:id'\n\t\t\t});\n\t\t}\n\t\tnext(currentRoute);\n\t}\n});\n","Shopware.Service('privileges').addPrivilegeMappingEntry({\n category: 'permissions',\n parent: 'vrpayment',\n key: 'vrpayment',\n roles: {\n viewer: {\n privileges: [\n 'sales_channel:read',\n 'sales_channel_payment_method:read',\n 'system_config:read'\n ],\n dependencies: []\n },\n editor: {\n privileges: [\n 'sales_channel:update',\n 'sales_channel_payment_method:create',\n 'sales_channel_payment_method:update',\n 'system_config:update',\n 'system_config:create',\n 'system_config:delete'\n ],\n dependencies: [\n 'vrpayment.viewer'\n ]\n }\n }\n});\n\nShopware.Service('privileges').addPrivilegeMappingEntry({\n category: 'permissions',\n parent: null,\n key: 'sales_channel',\n roles: {\n viewer: {\n privileges: [\n 'sales_channel_payment_method:read'\n ]\n },\n editor: {\n privileges: [\n 'payment_method:update'\n ]\n },\n creator: {\n privileges: [\n 'payment_method:create',\n 'shipping_method:create',\n 'delivery_time:create'\n ]\n },\n deleter: {\n privileges: [\n 'payment_method:delete'\n ]\n }\n }\n});\n","{% block vrpayment_settings %}\n\n\n\t{% block vrpayment_settings_header %}\n\t\n\t\t\n\t\t\t{{ $tc('sw-settings.index.title') }}\n\t\t\t \n\t\t\t{{ $tc('vrpayment-settings.header') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t{% block vrpayment_settings_actions %}\n\t\n\t\t{% block vrpayment_settings_actions_save %}\n\t\t\n\t\t\t{{ $tc('vrpayment-settings.settingForm.save') }}\n\t\t \n\t\t{% endblock %}\n\t \n\t{% endblock %}\n\n\t{% block vrpayment_settings_content %}\n\t\n\n\t\t{% block vrpayment_settings_content_card %}\n\t\t\n\n\t\t\t{% block vrpayment_settings_content_card_channel_config %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel %}\n\t\t\t\t\n\n\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_title %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer %}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container %}\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container_text %}\n\t\t\t\t\t\t\t\t{{ $tc('vrpayment-settings.salesChannelCard.button.description') }}
\n\t\t\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container_button %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ $tc('vrpayment-settings.salesChannelCard.button.label') }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_cards %}\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\n\t\t\t \n\t\t\t{% endblock %}\n\n\t\t\t{% block vrpayment_settings_content_card_loading %}\n\t\t\t \n\t\t\t{% endblock %}\n\t\t \n\t\t{% endblock %}\n\n\t \n\t{% endblock %}\n \n{% endblock %}\n","export const CONFIG_DOMAIN = 'VRPaymentPayment.config';\nexport const CONFIG_APPLICATION_KEY = CONFIG_DOMAIN + '.' + 'applicationKey';\nexport const CONFIG_EMAIL_ENABLED = CONFIG_DOMAIN + '.' + 'emailEnabled';\nexport const CONFIG_INTEGRATION = CONFIG_DOMAIN + '.' + 'integration';\nexport const CONFIG_LINE_ITEM_CONSISTENCY_ENABLED = CONFIG_DOMAIN + '.' + 'lineItemConsistencyEnabled';\nexport const CONFIG_SPACE_ID = CONFIG_DOMAIN + '.' + 'spaceId';\nexport const CONFIG_SPACE_VIEW_ID = CONFIG_DOMAIN + '.' + 'spaceViewId';\nexport const CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontInvoiceDownloadEnabled';\nexport const CONFIG_USER_ID = CONFIG_DOMAIN + '.' + 'userId';\nexport const CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontWebhooksUpdateEnabled';\nexport const CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontPaymentsUpdateEnabled';\n\nexport default {\n CONFIG_DOMAIN,\n CONFIG_APPLICATION_KEY,\n CONFIG_EMAIL_ENABLED,\n CONFIG_INTEGRATION,\n CONFIG_LINE_ITEM_CONSISTENCY_ENABLED,\n CONFIG_SPACE_ID,\n CONFIG_SPACE_VIEW_ID,\n CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED,\n CONFIG_USER_ID,\n CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED,\n CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED\n};","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from './configuration-constants';\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('vrpayment-settings', {\n\n template: template,\n\n inject: [\n 'acl',\n 'VRPaymentConfigurationService'\n ],\n\n mixins: [\n Mixin.getByName('notification'),\n Mixin.getByName('sw-inline-snippet')\n ],\n\n data() {\n return {\n\n config: {},\n\n isLoading: false,\n isTesting: false,\n\n isSaveSuccessful: false,\n\n applicationKeyFilled: false,\n applicationKeyErrorState: false,\n\n spaceIdFilled: false,\n spaceIdErrorState: false,\n\n userIdFilled: false,\n userIdErrorState: false,\n\n isSetDefaultPaymentSuccessful: false,\n isSettingDefaultPaymentMethods: false,\n\n configIntegrationDefaultValue: 'payment_page',\n configEmailEnabledDefaultValue: true,\n configLineItemConsistencyEnabledDefaultValue: true,\n configStorefrontInvoiceDownloadEnabledEnabledDefaultValue: true,\n configStorefrontWebhooksUpdateEnabledDefaultValue: true,\n configStorefrontPaymentsUpdateEnabledDefaultValue: true,\n\n ...constants\n };\n },\n\n props: {\n isLoading: {\n type: Boolean,\n required: true\n }\n },\n\n metaInfo() {\n return {\n title: this.$createTitle()\n };\n },\n\n watch: {\n config: {\n handler(configData) {\n const defaultConfig = this.$refs.configComponent.allConfigs.null;\n const salesChannelId = this.$refs.configComponent.selectedSalesChannelId;\n if (salesChannelId === null) {\n\n this.applicationKeyFilled = !!this.config[this.CONFIG_APPLICATION_KEY];\n this.spaceIdFilled = !!this.config[this.CONFIG_SPACE_ID];\n this.userIdFilled = !!this.config[this.CONFIG_USER_ID];\n\n if (!(this.CONFIG_INTEGRATION in this.config)) {\n this.config[this.CONFIG_INTEGRATION] = this.configIntegrationDefaultValue;\n }\n\n if (!(this.CONFIG_EMAIL_ENABLED in this.config)) {\n this.config[this.CONFIG_EMAIL_ENABLED] = this.configEmailEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config)) {\n this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED] = this.configLineItemConsistencyEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED] = this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] = this.configStorefrontWebhooksUpdateEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] = this.configStorefrontPaymentsUpdateEnabledDefaultValue;\n }\n\n } else {\n\n this.applicationKeyFilled = !!this.config[this.CONFIG_APPLICATION_KEY] || !!defaultConfig[this.CONFIG_APPLICATION_KEY];\n this.spaceIdFilled = !!this.config[this.CONFIG_SPACE_ID] || !!defaultConfig[this.CONFIG_SPACE_ID];\n this.userIdFilled = !!this.config[this.CONFIG_USER_ID] || !!defaultConfig[this.CONFIG_USER_ID];\n\n\n if (!(this.CONFIG_INTEGRATION in this.config) || !(this.CONFIG_INTEGRATION in defaultConfig)) {\n this.config[this.CONFIG_INTEGRATION] = this.configIntegrationDefaultValue;\n }\n\n if (!(this.CONFIG_EMAIL_ENABLED in this.config) || !(this.CONFIG_EMAIL_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_EMAIL_ENABLED] = this.configEmailEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config) || !(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED] = this.configLineItemConsistencyEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED] = this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] = this.configStorefrontWebhooksUpdateEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] = this.configStorefrontPaymentsUpdateEnabledDefaultValue;\n }\n }\n\n this.$emit('salesChannelChanged');\n this.$emit('update:value', configData);\n },\n deep: true\n }\n },\n\n methods: {\n checkTextFieldInheritance(value) {\n if (typeof value !== 'string') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkNumberFieldInheritance(value) {\n if (typeof value !== 'number') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkBoolFieldInheritance(value) {\n return typeof value !== 'boolean';\n },\n\n getInheritValue(key) {\n if (this.selectedSalesChannelId == null ) {\n return this.actualConfigData[key];\n } else {\n return this.allConfigs['null'][key];\n }\n },\n\n onSave() {\n if (!(this.spaceIdFilled && this.userIdFilled && this.applicationKeyFilled)) {\n this.setErrorStates();\n return;\n }\n this.save();\n },\n\n save() {\n this.isLoading = true;\n\n this.$refs.configComponent.save().then((res) => {\n if (res) {\n this.config = res;\n }\n this.registerWebHooks();\n this.synchronizePaymentMethodConfiguration();\n this.installOrderDeliveryStates();\n }).catch((e) => {\n console.error('Error:', e);\n this.isLoading = false;\n });\n },\n\n registerWebHooks() {\n if (this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] === false) {\n return false;\n }\n\n this.VRPaymentConfigurationService.registerWebHooks(this.$refs.configComponent.selectedSalesChannelId)\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messageWebHookUpdated')\n });\n }).catch((e) => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messageWebHookError')\n });\n this.isLoading = false;\n console.error('Error:', e);\n });\n },\n\n synchronizePaymentMethodConfiguration() {\n if (this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] === false) {\n return false;\n }\n\n this.VRPaymentConfigurationService.synchronizePaymentMethodConfiguration(this.$refs.configComponent.selectedSalesChannelId)\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messagePaymentMethodConfigurationUpdated')\n });\n this.isLoading = false;\n }).catch((e) => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messagePaymentMethodConfigurationError')\n });\n this.isLoading = false;\n console.error('Error:', e);\n });\n },\n\n installOrderDeliveryStates(){\n this.VRPaymentConfigurationService.installOrderDeliveryStates()\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messageOrderDeliveryStateUpdated')\n });\n this.isLoading = false;\n }).catch(() => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messageOrderDeliveryStateError')\n });\n this.isLoading = false;\n });\n },\n\n onSetPaymentMethodDefault() {\n this.isSettingDefaultPaymentMethods = true;\n this.VRPaymentConfigurationService.setVRPaymentAsSalesChannelPaymentDefault(\n this.$refs.configComponent.selectedSalesChannelId\n ).then(() => {\n this.isSettingDefaultPaymentMethods = false;\n this.isSetDefaultPaymentSuccessful = true;\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.salesChannelCard.messageDefaultPaymentUpdated')\n });\n });\n },\n\n setErrorStates() {\n const messageNotBlankErrorState = {\n code: 1,\n detail: this.$tc('vrpayment-settings.messageNotBlank')\n };\n\n if (!this.spaceIdFilled) {\n this.spaceIdErrorState = messageNotBlankErrorState;\n }\n\n if (!this.userIdFilled) {\n this.userIdErrorState = messageNotBlankErrorState;\n }\n\n if (!this.applicationKeyFilled) {\n this.applicationKeyErrorState = messageNotBlankErrorState;\n }\n },\n\n // Handles the 'check-api-connection-event'.\n // Uses the provided apiConnectionData to perform API connection checks.\n onCheckApiConnection(apiConnectionData) {\n const { spaceId, userId, applicationKey } = apiConnectionData;\n this.isTesting = true;\n\n this.VRPaymentConfigurationService.checkApiConnection(spaceId, userId, applicationKey)\n .then((res) => {\n if (res.result === 200) {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.successMessage')\n });\n } else {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.errorMessage')\n });\n }\n this.isTesting = false;\n }).catch(() => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.errorMessage')\n });\n this.isTesting = false;\n });\n }\n }\n});\n","{% block vrpayment_settings_content_card_channel_config_credentials %}\n\t\n\n\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_user_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_application_key %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t
\n\t\t\t\t{% endblock %}\n\n\t\t\t\t{% verbatim %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-settings.settingForm.credentials.button.label') }}\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t{% endverbatim %}\n\n\t\t\t \n\t\t{% endblock %}\n\t \n\n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-credentials', {\n template: template,\n\n name: 'VRPaymentCredentials',\n\n inject: [\n 'acl'\n ],\n\n mixins: [\n Mixin.getByName('notification')\n ],\n\n props: {\n actualConfigData: {\n type: Object,\n required: true\n },\n allConfigs: {\n type: Object,\n required: true\n },\n\n selectedSalesChannelId: {\n required: true\n },\n spaceIdFilled: {\n type: Boolean,\n required: true\n },\n spaceIdErrorState: {\n required: true\n },\n userIdFilled: {\n type: Boolean,\n required: true\n },\n userIdErrorState: {\n required: true\n },\n applicationKeyFilled: {\n type: Boolean,\n required: true\n },\n applicationKeyErrorState: {\n required: true\n },\n isLoading: {\n type: Boolean,\n required: true\n },\n isTesting: {\n type: Boolean,\n required: false\n }\n },\n\n data() {\n return {\n ...constants\n };\n },\n\n methods: {\n\n checkTextFieldInheritance(value) {\n if (typeof value !== 'string') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkNumberFieldInheritance(value) {\n if (typeof value !== 'number') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkBoolFieldInheritance(value) {\n return typeof value !== 'boolean';\n },\n\n // Emits the 'check-api-connection-event' with the current API connection parameters.\n // Used to trigger API connection testing from this component.\n emitCheckApiConnectionEvent() {\n const apiConnectionParams = {\n spaceId: this.actualConfigData[constants.CONFIG_SPACE_ID],\n userId: this.actualConfigData[constants.CONFIG_USER_ID],\n applicationKey: this.actualConfigData[constants.CONFIG_APPLICATION_KEY]\n };\n\n this.$emit('check-api-connection-event', apiConnectionParams);\n }\n }\n});\n","{% block vrpayment_settings_content_card_channel_config_options %}\n\t\n\n\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_view_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_integration %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_line_item_consistency_enabled %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_email_enabled %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t
\n\t\t\t\t{% endblock %}\n\t\t\t \n\t\t{% endblock %}\n\t \n\n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentOptions',\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tintegrationOptions() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'payment_page',\n\t\t\t\t\tname: this.$tc('vrpayment-settings.settingForm.options.integration.options.payment_page')\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'iframe',\n\t\t\t\t\tname: this.$tc('vrpayment-settings.settingForm.options.integration.options.iframe')\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","{% block vrpayment_settings_icon %}\n \n \n\n\n\t\n \n\n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t\n\t\n\t \n\t \n \n \n\n \n{% endblock %}\n","import template from './index.html.twig';\n\nconst { Component } = Shopware;\n\nComponent.register('sw-vrpayment-settings-icon', {\n template\n});\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t \n \n\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-storefront-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentStorefrontOptions',\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t \n \n\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-advanced-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentAdvancedOptions',\n\n\tinject: [\n\t\t'acl'\n\t],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","/* global Shopware */\n\nimport './acl';\nimport './page/vrpayment-settings';\nimport './component/sw-vrpayment-credentials';\nimport './component/sw-vrpayment-options';\nimport './component/sw-vrpayment-settings-icon';\nimport './component/sw-vrpayment-storefront-options';\nimport './component/sw-vrpayment-advanced-options';\n\nimport deDE from './snippet/de-DE.json';\nimport enGB from './snippet/en-GB.json';\nimport frFR from './snippet/fr-FR.json';\nimport itIT from './snippet/it-IT.json';\n\nconst {Module} = Shopware;\n\nModule.register('vrpayment-settings', {\n\ttype: 'plugin',\n\tname: 'VRPayment',\n\ttitle: 'vrpayment-settings.general.descriptionTextModule',\n\tdescription: 'vrpayment-settings.general.descriptionTextModule',\n\tcolor: '#28d8ff',\n\ticon: 'default-action-settings',\n\tversion: '1.0.1',\n\ttargetVersion: '1.0.1',\n\n snippets: {\n 'de-DE': deDE,\n 'en-GB': enGB,\n 'fr-FR': frFR,\n 'it-IT': itIT,\n },\n\n\troutes: {\n\t\tindex: {\n\t\t\tcomponent: 'vrpayment-settings',\n\t\t\tpath: 'index',\n\t\t\tmeta: {\n\t\t\t\tparentPath: 'sw.settings.index',\n\t\t\t\tprivilege: 'vrpayment.viewer'\n\t\t\t},\n\t\t\tprops: {\n default: (route) => {\n return {\n hash: route.params.hash,\n };\n },\n },\n\t\t}\n\t},\n\n\tsettingsItem: {\n\t\tgroup: 'plugins',\n\t\tto: 'vrpayment.settings.index',\n\t\ticonComponent: 'sw-vrpayment-settings-icon',\n\t\tbackgroundEnabled: true,\n\t\tprivilege: 'vrpayment.viewer'\n\t}\n\n});\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Config\\Controller\\ConfigurationController\n */\nclass VRPaymentConfigurationService extends ApiService {\n\n\t/**\n\t * VRPaymentConfigurationService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Register web hooks\n\t *\n\t * @param {String|null} salesChannelId\n\t * @return {*}\n\t */\n\tregisterWebHooks(salesChannelId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/register-web-hooks`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Test API connection\n\t *\n\t * @param {int|null} spaceId\n\t * @param {int|null} userId\n\t * @param {String|null} applicationId\n\t * @return {*}\n\t */\n\tcheckApiConnection(spaceId = null, userId = null, applicationId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/check-api-connection`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tspaceId: spaceId,\n\t\t\t\tuserId: userId,\n\t\t\t\tapplicationId: applicationId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Set's the default payment method to VRPayment for the given salesChannel id.\n\t *\n\t * @param {String|null} salesChannelId\n\t *\n\t * @returns {Promise}\n\t */\n\tsetVRPaymentAsSalesChannelPaymentDefault(salesChannelId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/set-vrpayment-as-sales-channel-payment-default`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param salesChannelId\n\t * @return {Promise}\n\t */\n\tsynchronizePaymentMethodConfiguration(salesChannelId = null) {\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/synchronize-payment-method-configuration`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @return {*}\n\t */\n\tinstallOrderDeliveryStates() {\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/install-order-delivery-states`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentConfigurationService;\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\RefundController\n */\nclass VRPaymentRefundService extends ApiService {\n\n\t/**\n\t * VRPaymentRefundService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {int} quantity\n\t * @param {int} lineItemId\n\t * @return {*}\n\t */\n\tcreateRefund(salesChannelId, transactionId, quantity, lineItemId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\tquantity: quantity,\n\t\t\t\tlineItemId: lineItemId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {float} refundableAmount\n\t * @return {*}\n\t */\n\tcreateRefundByAmount(salesChannelId, transactionId, refundableAmount) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund-by-amount/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\trefundableAmount: refundableAmount\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {float} refundableAmount\n\t * @param {String} lineItemId\n\t * @return {*}\n\t */\n\tcreatePartialRefund(salesChannelId, transactionId, refundableAmount, lineItemId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-partial-refund/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\trefundableAmount: refundableAmount,\n\t\t\t\tlineItemId: lineItemId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentRefundService;\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionController\n */\nclass VRPaymentTransactionService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Get transaction data\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tgetTransactionData(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-transaction-data/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Download Invoice Document\n\t *\n\t * @param context\n\t * @param salesChannelId\n\t * @param transactionId\n\t * @return {string}\n\t */\n\tgetInvoiceDocument(salesChannelId, transactionId) {\n\t\treturn `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-invoice-document/${salesChannelId}/${transactionId}`;\n\t}\n\n\t/**\n\t * Download Packing slip\n\t *\n\t * @param salesChannelId\n\t * @param transactionId\n\t * @return {string}\n\t */\n\tgetPackingSlip(salesChannelId, transactionId) {\n\t\treturn `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-packing-slip/${salesChannelId}/${transactionId}`;\n\t}\n}\n\nexport default VRPaymentTransactionService;","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionCompletionController\n */\nclass VRPaymentTransactionCompletionService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionCompletionService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Complete a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tcreateTransactionCompletion(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-completion/create-transaction-completion/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentTransactionCompletionService;","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionVoidController\n */\nclass VRPaymentTransactionVoidService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionVoidService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Void a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tcreateTransactionVoid(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-void/create-transaction-void/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentTransactionVoidService;","/* global Shopware */\n\nimport VRPaymentConfigurationService from '../core/service/api/vrpayment-configuration.service';\nimport VRPaymentRefundService from '../core/service/api/vrpayment-refund.service';\nimport VRPaymentTransactionService from '../core/service/api/vrpayment-transaction.service';\nimport VRPaymentTransactionCompletionService\n\tfrom '../core/service/api/vrpayment-transaction-completion.service';\nimport VRPaymentTransactionVoidService\n\tfrom '../core/service/api/vrpayment-transaction-void.service';\n\n\nconst {Application} = Shopware;\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentConfigurationService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentConfigurationService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentRefundService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentRefundService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionCompletionService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionCompletionService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionVoidService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionVoidService(initContainer.httpClient, container.loginService);\n});"],"names":["template$c","Component","Context","Criteria","vrpaymentFormattedHandlerIdentifier","template","orderRepository","orderCriteria","order","paymentMethodId","paymentMethod","template$b","Mixin","Filter","Utils","errorResponse","template$a","template$9","itemUniqueId","newValue","template$8","errorTitle","errorMessage","template$7","template$6","totalAmountTemp","refundsAmountTemp","vrpaymentTransactionId","VRPaymentTransaction","refund","reduction","lineItem","modalType","lineItemId","refundableQuantity","itemRefundableAmount","item","selection","refundPromises","error","resolve","reject","Module","deDE","enGB","frFR","itIT","next","currentRoute","template$5","CONFIG_DOMAIN","CONFIG_APPLICATION_KEY","CONFIG_EMAIL_ENABLED","CONFIG_INTEGRATION","CONFIG_LINE_ITEM_CONSISTENCY_ENABLED","CONFIG_SPACE_ID","CONFIG_SPACE_VIEW_ID","CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED","CONFIG_USER_ID","CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED","CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED","constants","configData","defaultConfig","value","key","res","messageNotBlankErrorState","apiConnectionData","spaceId","userId","applicationKey","template$4","apiConnectionParams","template$3","template$2","template$1","route","ApiService","VRPaymentConfigurationService","httpClient","loginService","apiEndpoint","salesChannelId","headers","apiRoute","response","applicationId","VRPaymentRefundService","transactionId","quantity","refundableAmount","VRPaymentTransactionService","VRPaymentTransactionCompletionService","VRPaymentTransactionVoidService","Application","container","initContainer"],"mappings":"AAAA,MAAeA,EAAA,4hBCKT,WAACC,EAAS,QAAEC,CAAO,EAAI,SACvBC,EAAW,SAAS,KAAK,SAEzBC,EAAsC,mDAE5CH,EAAU,SAAS,kBAAmB,CACtC,SAACI,EAEA,MAAO,CACN,MAAO,CACN,mBAAoB,EACpB,CACD,EAED,SAAU,CACT,YAAa,CACZ,MAAO,CAAC,KAAK,oBAAsB,KAAK,OAAO,OAAS,wBACxD,EACD,UAAW,CACV,MAAO,EACV,CACE,EAED,MAAO,CACN,QAAS,CACR,KAAM,GACN,SAAU,CACT,GAAI,CAAC,KAAK,QAAS,CAClB,KAAK,sBAAsB,IAAI,EAC/B,MACL,CAEI,MAAMC,EAAkB,KAAK,kBAAkB,OAAO,OAAO,EACvDC,EAAgB,IAAIJ,EAAS,EAAG,CAAC,EACvCI,EAAc,eAAe,cAAc,EAE3CD,EAAgB,IAAI,KAAK,QAASJ,EAAQ,IAAKK,CAAa,EAAE,KAAMC,GAAU,CAC7E,GACEA,EAAM,aAAe,GACrBA,EAAM,aAAa,QAAU,GAC9B,CAACA,EAAM,aAAa,CAAC,EAAE,gBACtB,CACD,KAAK,sBAAsB,IAAI,EAC/B,MACN,CAEK,MAAMC,EAAkBD,EAAM,aAAa,CAAC,EAAE,gBACTC,GAAoB,MACxD,KAAK,sBAAsBA,CAAe,CAEhD,CAAK,CACD,EACD,UAAW,EACd,CACE,EAED,QAAS,CACR,sBAAsBA,EAAiB,CACtC,GAAI,CAACA,EACJ,OAE+B,KAAK,kBAAkB,OAAO,gBAAgB,EACtD,IAAIA,EAAiBP,EAAQ,GAAG,EAAE,KACxDQ,GAAkB,CAClB,KAAK,mBAAsBA,EAAc,6BAA+BN,CAC7E,CACI,CACJ,CACA,CACA,CAAC,EC1ED,MAAeO,EAAA,gpBCIT,CAAA,UAACV,EAAS,MAAEW,EAAK,OAAEC,EAAQC,MAAAA,CAAK,EAAI,SAE1Cb,EAAU,SAAS,oCAAqC,CAEvD,SAAUI,EAEV,OAAQ,CAAC,uCAAuC,EAEhD,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,gBAAiB,CAChB,KAAM,OACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,UAAW,GACX,aAAc,EACd,CACD,EAED,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CACjC,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACR,kBAAmB,CAClB,KAAK,UAAY,EACjB,EAED,YAAa,CACR,KAAK,eACR,KAAK,UAAY,GACjB,KAAK,sCAAsC,4BAC1C,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,EACrC,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,4CAA4C,EAC5D,QAAS,KAAK,IAAI,8CAA8C,CACtE,CAAM,EACD,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASC,EAAM,SAAQ,CAAE,EAAE,CACzE,CAAM,CACN,CAAK,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EAClB,CAAO,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,MACrB,QAASA,EAAc,QACvB,UAAW,EAClB,CAAO,CACP,QAAe,CACT,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CAC1E,CAAO,CACP,CACA,CAAK,EAEL,CACA,CACA,CAAC,ECrFD,MAAeE,EAAA,40BCIT,CAAA,UAACf,EAAS,MAAEW,EAAK,OAAEC,EAAQC,MAAAA,CAAK,EAAI,SAE1Cb,EAAU,SAAS,gCAAiC,CACpD,SAACI,EAEA,OAAQ,CAAC,wBAAwB,EAEjC,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,gBAAiB,CAChB,KAAM,OACN,SAAU,EACV,EAED,QAAS,CACR,KAAM,OACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,eAAgB,EAChB,UAAW,GACX,gBAAiB,EACjB,CACD,EAED,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CACjC,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACR,kBAAmB,CAClB,KAAK,UAAY,GACjB,KAAK,eAAiB,CACtB,EAED,QAAS,CACR,KAAK,UAAY,GACjB,KAAK,uBAAuB,aAC3B,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,GACrC,KAAK,eACL,KAAK,QAAQ,QAAQ,eACrB,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,6CAA6C,CACpE,CAAK,EACD,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASC,EAAM,SAAQ,CAAE,EAAE,CACxE,CAAK,CACL,CAAI,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EACjB,CAAM,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,MACrB,QAASA,EAAc,QACvB,UAAW,EACjB,CAAM,CACN,QAAc,CACT,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CACzE,CAAM,CACN,CACA,CAAI,CACJ,CACA,CACA,CAAC,EC3FD,MAAeG,EAAA,o6BCIT,CAAA,UAAChB,EAAS,MAAEW,EAAK,OAAEC,EAAQC,MAAAA,CAAK,EAAI,SAE1Cb,EAAU,SAAS,wCAAyC,CAC5D,SAACI,EAEA,OAAQ,CAAC,wBAAwB,EAEjC,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,gBAAiB,CAChB,KAAM,OACN,SAAU,EACV,EAED,QAAS,CACR,KAAM,OACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,UAAW,GACX,SAAU,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAC/C,aAAc,CACd,CACD,EAED,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CACjC,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACF,kBAAmB,CACf,KAAK,UAAY,GACjB,KAAK,SAAW,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAChD,KAAK,eACN,KAAK,aAAe,KAAK,QAAQ,QAAQ,qBAEhD,EAEP,oBAAoBK,EAAc,CACjC,KAAK,UAAY,GACjB,KAAK,uBAAuB,oBAC3B,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,GACrC,KAAK,aACLA,CACA,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,6CAA6C,CACpE,CAAK,EACD,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASJ,EAAM,SAAQ,CAAE,EAAE,CACxE,CAAK,CACL,CAAI,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EACjB,CAAM,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,MACrB,QAASA,EAAc,QACvB,UAAW,EACjB,CAAM,CACN,QAAc,CACT,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CACzE,CAAM,CACN,CACA,CAAI,CACJ,CACE,EAEE,MAAO,CACH,aAAaK,EAAU,CACfA,IAAa,OACb,KAAK,aAAe,KAAK,MAAMA,EAAW,GAAG,EAAI,IAEjE,CACA,CACA,CAAC,ECtGD,MAAeC,EAAA,2tBCIT,CAAA,UAACnB,EAAS,MAAEW,EAAK,OAAEC,EAAQC,MAAAA,CAAK,EAAI,SAE1Cb,EAAU,SAAS,0CAA2C,CAC9D,SAACI,EAEA,OAAQ,CAAC,wBAAwB,EAEjC,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,gBAAiB,CAChB,KAAM,OACN,SAAU,EACV,EAED,QAAS,CACR,KAAM,OACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,UAAW,GACX,SAAU,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAC/C,aAAc,EACd,iBAAkB,CAClB,CACD,EAED,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CACjC,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACR,kBAAmB,CAClB,KAAK,UAAY,GACjB,KAAK,SAAW,KAAK,gBAAgB,aAAa,CAAC,EAAE,SACrD,KAAK,aAAe,OAAO,KAAK,gBAAgB,aAAa,CAAC,EAAE,kBAAkB,EAClF,KAAK,iBAAmB,OAAO,KAAK,gBAAgB,aAAa,CAAC,EAAE,kBAAkB,CACtF,EAED,gBAAiB,CAChB,KAAK,UAAY,GACjB,KAAK,uBAAuB,qBAC3B,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,GACrC,KAAK,YACL,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,6CAA6C,CACpE,CAAK,EACD,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASC,EAAM,SAAQ,CAAE,EAAE,CACxE,CAAK,CACL,CAAI,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,IAAIM,EACAC,EACAP,EAAc,SAAS,MAAQ,uBAClCM,EAAa,KAAK,IAAI,4DAA4D,EAClFC,EAAe,KAAK,IAAI,iGAAiG,IAEzHD,EAAaN,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MACnDO,EAAeP,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,QAEtD,KAAK,wBAAwB,CAC5B,MAAOM,EACP,QAASC,EACT,UAAW,EACjB,CAAM,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOP,EAAc,MACrB,QAASA,EAAc,QACvB,UAAW,EACjB,CAAM,CACN,QAAc,CACT,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CACzE,CAAM,CACN,CACA,CAAI,CACJ,CACA,CACA,CAAC,ECtGD,MAAeS,EAAA,gsBCIT,CAAA,UAACtB,EAAS,MAAEW,EAAK,OAAEC,EAAQC,MAAAA,CAAK,EAAI,SAE1Cb,EAAU,SAAS,8BAA+B,CAClD,SAACI,EAEA,OAAQ,CAAC,iCAAiC,EAE1C,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,gBAAiB,CAChB,KAAM,OACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,UAAW,GACX,OAAQ,EACR,CACD,EAED,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CAC9B,EACD,iBAAkB,CACjB,MAAO,CACN,CACC,SAAU,WACV,MAAO,KAAK,IAAI,uCAAuC,EACvD,QAAS,GACT,YAAa,GACb,QAAS,GACT,MAAO,MACP,EACD,CACC,SAAU,OACV,MAAO,KAAK,IAAI,mCAAmC,EACnD,QAAS,GACT,YAAa,GACb,SAAU,GACV,MAAO,MACP,EACD,CACC,SAAU,WACV,MAAO,KAAK,IAAI,uCAAuC,EACvD,QAAS,GACT,YAAa,GACb,MAAO,MACP,EACD,CACC,SAAU,qBACV,MAAO,KAAK,IAAI,iDAAiD,EACjE,QAAS,GACT,YAAa,GACb,WAAY,SACZ,MAAO,MACP,EACD,CACC,SAAU,OACV,MAAO,KAAK,IAAI,mCAAmC,EACnD,QAAS,GACT,YAAa,GACb,SAAU,GACV,MAAO,MACP,EACD,CACC,SAAU,YACV,MAAO,KAAK,IAAI,wCAAwC,EACxD,QAAS,GACT,YAAa,GACb,MAAO,MACZ,CACI,CACJ,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACR,kBAAmB,CAClB,KAAK,UAAY,GACjB,KAAK,SAAW,KAAK,gBAAgB,aAAa,CAAC,EAAE,SACrD,KAAK,iBAAmB,KAAK,gBAAgB,aAAa,CAAC,EAAE,mBAC7D,KAAK,aAAe,KAAK,gBAAgB,aAAa,CAAC,EAAE,kBACzD,EAED,aAAc,CACT,KAAK,SACR,KAAK,UAAY,GACjB,KAAK,gCAAgC,sBACpC,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,EACrC,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,yCAAyC,EACzD,QAAS,KAAK,IAAI,2CAA2C,CACnE,CAAM,EACD,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASC,EAAM,SAAQ,CAAE,EAAE,CACzE,CAAM,CACN,CAAK,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EAClB,CAAO,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,MACrB,QAASA,EAAc,QACvB,UAAW,EAClB,CAAO,CACP,QAAe,CACT,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACpB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CAC1E,CAAO,CACP,CACA,CAAK,EAEL,CACA,CACA,CAAC,ECzID,MAAeU,EAAA,2jOCUT,CAACvB,UAAAA,EAAWW,MAAAA,EAAO,OAAAC,EAAQ,QAAAX,GAAS,MAAAY,CAAK,EAAI,SAC7CX,EAAW,SAAS,KAAK,SAE/BF,EAAU,SAAS,yBAA0B,CAC7C,SAACI,EAEA,OAAQ,CACP,8BACA,yBACA,mBACA,EAED,OAAQ,CACPO,EAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,MAAO,CACN,gBAAiB,CAChB,aAAc,CAAE,EAChB,QAAS,CAAA,CACT,EACD,YAAa,CAAE,EACf,UAAW,CAAE,EACb,mBAAoB,EACpB,uBAAwB,EACxB,UAAW,GACX,QAAS,GACT,SAAU,GACV,UAAW,GACX,aAAc,EACd,iBAAkB,EAClB,mBAAoB,EACpB,qBAAsB,EACtB,qBAAsB,EACtB,gBAAiB,GACjB,uBAAwB,CAAE,EAC1B,qBAAsB,CAAE,EACxB,cAAe,CAAA,CACf,CACD,EAED,UAAW,CACV,MAAO,CACN,MAAO,KAAK,IAAI,wBAAwB,CACxC,CACD,EAGD,SAAU,CACT,YAAa,CACZ,OAAOC,EAAO,UAAU,MAAM,CAC9B,EAED,wBAAyB,CACxB,MAAO,CACN,CACC,SAAU,oBACV,MAAO,KAAK,IAAI,yDAAyD,EACzE,QAAS,EACT,EACD,CACC,SAAU,QACV,MAAO,KAAK,IAAI,gDAAgD,EAChE,QAAS,EACT,EACD,CACC,SAAU,WACV,MAAO,KAAK,IAAI,mDAAmD,EACnE,QAAS,EACT,EACD,CACC,SAAU,oBACV,MAAO,KAAK,IAAI,4DAA4D,EAC5E,QAAS,EACT,EACD,CACC,SAAU,KACV,MAAO,KAAK,IAAI,sDAAsD,EACtE,QAAS,EACT,EACD,CACC,SAAU,aACV,MAAO,KAAK,IAAI,mDAAmD,EACnE,QAAS,EACd,CACI,CACD,EAED,iBAAkB,CACjB,MAAO,CAEN,CACC,SAAU,KACV,QAAS,GACT,QAAS,GACT,QAAS,EACT,EACD,CACC,SAAU,WACV,MAAO,KAAK,IAAI,yCAAyC,EACzD,QAAS,GACT,QAAS,GACT,QAAS,EACT,EACD,CACC,SAAU,OACV,MAAO,KAAK,IAAI,qCAAqC,EACrD,QAAS,EACT,EACD,CACC,SAAU,WACV,MAAO,KAAK,IAAI,yCAAyC,EACzD,QAAS,EACT,EACD,CACC,SAAU,qBACV,MAAO,KAAK,IAAI,mDAAmD,EACnE,QAAS,EACT,EACD,CACC,SAAU,OACV,MAAO,KAAK,IAAI,qCAAqC,EACrD,QAAS,EACT,EACD,CACC,SAAU,YACV,MAAO,KAAK,IAAI,0CAA0C,EAC1D,QAAS,EACT,EACD,CACC,SAAU,qBACV,QAAS,GACT,QAAS,EACT,CACD,CACD,EAED,eAAgB,CACf,MAAO,CACN,CACC,SAAU,KACV,MAAO,KAAK,IAAI,iCAAiC,EACjD,QAAS,GACT,QAAS,GACT,QAAS,EACT,EACD,CACC,SAAU,SACV,MAAO,KAAK,IAAI,qCAAqC,EACrD,QAAS,EACT,EACD,CACC,SAAU,QACV,MAAO,KAAK,IAAI,oCAAoC,EACpD,QAAS,EACT,EACD,CACC,SAAU,YACV,MAAO,KAAK,IAAI,wCAAwC,EACxD,QAAS,EACd,CACI,CACJ,CACE,EAED,MAAO,CACN,QAAW,CACV,KAAK,oBAAqB,EAC1B,KAAK,iBAAkB,CAC1B,CACE,EAED,SAAU,CACT,KAAK,iBAAkB,CACvB,EAED,QAAS,CACR,kBAAmB,CAClB,KAAK,QAAU,KAAK,OAAO,OAAO,GAClC,MAAMP,EAAkB,KAAK,kBAAkB,OAAO,OAAO,EACvDC,EAAgB,IAAIJ,EAAS,EAAG,CAAC,EACvCI,EAAc,eAAe,cAAc,EAC3CA,EAAc,eAAe,cAAc,EAAE,WAAWJ,EAAS,KAAK,YAAa,MAAM,CAAC,EAE1FG,EAAgB,IAAI,KAAK,QAASJ,GAAQ,IAAKK,CAAa,EAAE,KAAMC,GAAU,CAC7E,KAAK,MAAQA,EACb,KAAK,UAAY,GACjB,IAAIiB,EAAkB,EAClBC,EAAoB,EACxB,MAAMC,EAAyBnB,EAAM,aAAa,CAAC,EAAE,aAAa,yBAClE,KAAK,4BAA4B,mBAAmBA,EAAM,eAAgBmB,CAAsB,EAC9F,KAAMC,GAAyB,CAC/B,KAAK,SAAWA,EAAqB,aAAa,CAAC,EAAE,SAErDA,EAAqB,aAAa,CAAC,EAAE,kBAAoBd,EAAM,OAAO,SACrEc,EAAqB,aAAa,CAAC,EAAE,oBACrC,KAAK,QACL,EAEDA,EAAqB,QAAQ,QAASC,GAAW,CAChDH,EAAoB,WAAW,WAAWA,CAAiB,EAAI,WAAWG,EAAO,MAAM,CAAC,EACxFA,EAAO,OAASf,EAAM,OAAO,SAC5Be,EAAO,OACP,KAAK,QACL,EAEDA,EAAO,WAAW,QAASC,GAAc,CACjCA,EAAU,kBAAoB,IACL,KAAK,uBAAuBA,EAAU,gBAAgB,IAAM,OAC5D,KAAK,uBAAuBA,EAAU,gBAAgB,EAAIA,EAAU,kBAEpE,KAAK,uBAAuBA,EAAU,gBAAgB,GAAKA,EAAU,mBAGzEA,EAAU,mBAAqB,IAC3B,KAAK,qBAAqBA,EAAU,gBAAgB,IAAM,OAC1D,KAAK,qBAAqBA,EAAU,gBAAgB,EAAIA,EAAU,mBAElE,KAAK,qBAAqBA,EAAU,gBAAgB,GAAKA,EAAU,mBAG3G,CAAQ,CAER,CAAO,EAEDF,EAAqB,aAAa,CAAC,EAAE,UAAU,QAASG,GAAa,CAC/DA,EAAS,KACbA,EAAS,GAAKA,EAAS,UAGHA,EAAS,mBAAqB,WAAW,KAAK,qBAAqBA,EAAS,QAAQ,GAAK,CAAC,EAAI,SAASA,EAAS,QAAQ,EACxHA,EAAS,mBAAqB,WAAWA,EAAS,kBAAkB,GAAK,EAEzEA,EAAS,qBAAuB,SAAS,KAAK,uBAAuBA,EAAS,QAAQ,CAAC,GAAK,EAC5FA,EAAS,iBAAmB,YACzBA,EAAS,mBAAqBA,EAAS,oBAAoB,QAAQ,CAAC,CACtE,EAEtBA,EAAS,mBAAqBjB,EAAM,OAAO,SAC1CiB,EAAS,mBACT,KAAK,QACL,EAEDA,EAAS,UAAYjB,EAAM,OAAO,SACjCiB,EAAS,UACT,KAAK,QACL,EAEDN,EAAkB,WAAW,WAAWA,CAAe,EAAI,WAAWM,EAAS,sBAAwBA,EAAS,QAAQ,CAAC,EAEzHA,EAAS,mBAAqB,SAC7B,SAASA,EAAS,QAAQ,EAAI,SAAS,KAAK,uBAAuBA,EAAS,QAAQ,GAAK,CAAC,CAC1F,CAER,CAAO,EAED,KAAK,UAAYH,EAAqB,aAAa,CAAC,EAAE,UACtD,KAAK,gBAAkBA,EACvB,KAAK,YAAc,KAAK,gBAAgB,aAAa,CAAC,EACtD,KAAK,aAAe,OAAO,KAAK,gBAAgB,aAAa,CAAC,EAAE,kBAAkB,EAClF,KAAK,iBAAmB,WAAW,WAAWH,CAAe,EAAI,WAAWC,CAAiB,CAAC,CAEpG,CAAM,EAAE,MAAOX,GAAkB,CAC5B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAO,KAAK,IAAI,4CAA4C,EAC5D,QAASA,EAAc,QACvB,UAAW,EAClB,CAAO,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAO,KAAK,IAAI,4CAA4C,EAC5D,QAASA,EAAc,QACvB,UAAW,EAClB,CAAO,CACP,QAAe,CACT,KAAK,UAAY,EACvB,CACA,CAAK,CACL,CAAI,CACD,EACD,qBAAsB,CACrB,OAAO,KACN,KAAK,4BAA4B,eAChC,KAAK,YAAY,SAAS,eAC1B,KAAK,YAAY,EACjB,EACD,QACA,CACD,EAED,iBAAkB,CACjB,OAAO,KACN,KAAK,4BAA4B,mBAChC,KAAK,YAAY,SAAS,eAC1B,KAAK,YAAY,EACjB,EACD,QACA,CACD,EAED,qBAAsB,CACrB,KAAK,gBAAkB,CACtB,aAAc,CAAE,EAChB,QAAS,CAAA,CACT,EACD,KAAK,UAAY,CAAE,EACnB,KAAK,uBAAyB,CAAE,EAChC,KAAK,qBAAuB,CAAE,EAC9B,KAAK,UAAY,EACjB,EAED,WAAWiB,EAAWC,EAAYC,EAAoBC,EAAsB,CAC3E,KAAK,UAAYH,EACjB,KAAK,gBAAkBC,EACvB,KAAK,uBAAyBC,EACrB,KAAK,qBAAwB,MAAMC,CAAoB,EAAmD,EAA/C,KAAK,MAAMA,EAAuB,GAAG,EAAI,GAC7G,EAED,YAAa,CACZ,KAAK,UAAY,EACjB,EAED,eAAeF,EAAY,CAC1B,KAAK,UAAY,GACjB,KAAK,uBAAuB,aAC3B,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,GACrC,EACAA,CACA,EAAC,KAAK,IAAM,CACZ,KAAK,0BAA0B,CAC9B,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,6CAA6C,CACpE,CAAK,EACW,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACjB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASnB,EAAM,SAAQ,CAAE,EAAE,CACvF,CAAiB,CACjB,CAAI,EAAE,MAAOC,GAAkB,CAC3B,GAAI,CACH,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EACjB,CAAM,CACD,MAAW,CACX,KAAK,wBAAwB,CAC5B,MAAOA,EAAc,MACrB,QAASA,EAAc,SAAS,KAChC,UAAW,EACjB,CAAM,CACN,QAAc,CACM,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACjB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASD,EAAM,SAAQ,CAAE,EAAE,CAC3F,CAAqB,CACrB,CACA,CAAI,CACD,EACD,aAAasB,EAAM,CAClB,OAAOA,EAAK,mBAAqB,GAAKA,EAAK,iBAAmB,GAAKA,EAAK,oBAAsB,GAAKA,EAAK,sBAAwB,CAChI,EACD,mBAAmBC,EAAW,CAC7B,KAAK,cAAgB,OAAO,OAAOA,CAAS,CAC5C,EACK,qBAAsB,CACd,KAAK,cAAc,SAEnB,KAAK,UAAY,GAGjB,KAAK,UAAU,IAAM,CACjB,MAAMC,EAAiB,KAAK,cAAc,IAAKF,GACpC,KAAK,mBAAmBA,EAAK,QAAQ,CAC/C,EAGD,QAAQ,IAAIE,CAAc,EACrB,KAAK,IAAM,CAER,KAAK,UAAY,GACjB,KAAK,MAAM,aAAa,EACxB,KAAK,UAAU,IAAM,CACjB,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO,IAAI,SAASxB,EAAM,SAAQ,CAAE,EAAE,CACnG,CAA6B,CACJ,CAAA,EACA,MAAOyB,GAAU,CAEd,KAAK,wBAAwB,CACzB,MAAO,QACP,QAAS,wCACT,UAAW,EAC3C,CAA6B,EACD,KAAK,UAAY,EAC7C,CAAyB,CACzB,CAAiB,EAER,EACD,mBAAmBN,EAAY,CAC3B,OAAO,IAAI,QAAQ,CAACO,EAASC,IAAW,CACpC,KAAK,uBAAuB,aACxB,KAAK,gBAAgB,aAAa,CAAC,EAAE,SAAS,eAC9C,KAAK,gBAAgB,aAAa,CAAC,EAAE,GACrC,EACAR,CACpB,EACiB,KAAK,IAAM,CACR,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,6CAA6C,CACvF,CAAqB,EACDO,EAAS,CACZ,CAAA,EACA,MAAOzB,GAAkB,CACtB,GAAI,CACA,KAAK,wBAAwB,CACzB,MAAOA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,MAC7C,QAASA,EAAc,SAAS,KAAK,OAAO,CAAC,EAAE,OAC/C,UAAW,EACvC,CAAyB,CACJ,MAAW,CACR,KAAK,wBAAwB,CACzB,MAAOA,EAAc,MACrB,QAASA,EAAc,SAAS,KAChC,UAAW,EACvC,CAAyB,CACzB,QAA8B,CACN0B,EAAQ,CAChC,CACA,CAAiB,CACjB,CAAa,CACJ,CACT,CACA,CAAC,o+SCrbK,CAACC,OAAAA,EAAM,EAAI,SAEjBA,GAAO,SAAS,kBAAmB,CAClC,KAAM,SACN,KAAM,YACN,MAAO,gCACP,YAAa,gDACb,QAAS,QACT,cAAe,QACf,MAAO,UAEP,SAAU,CACT,QAASC,GACT,QAASC,GACT,QAASC,GACT,QAASC,EACT,EAED,gBAAgBC,EAAMC,EAAc,CAC/BA,EAAa,OAAS,mBACzBA,EAAa,SAAS,KAAK,CAC1B,UAAW,yBACX,KAAM,yBACN,WAAY,GACZ,KAAM,gCACV,CAAI,EAEFD,EAAKC,CAAY,CACnB,CACA,CAAC,ECvCD,SAAS,QAAQ,YAAY,EAAE,yBAAyB,CACpD,SAAU,cACV,OAAQ,YACR,IAAK,YACL,MAAO,CACH,OAAQ,CACJ,WAAY,CACR,qBACA,oCACA,oBACH,EACD,aAAc,CAAA,CACjB,EACD,OAAQ,CACJ,WAAY,CACR,uBACA,sCACA,sCACA,uBACA,uBACA,sBACH,EACD,aAAc,CACV,kBAChB,CACA,CACA,CACA,CAAC,EAED,SAAS,QAAQ,YAAY,EAAE,yBAAyB,CACpD,SAAU,cACV,OAAQ,KACR,IAAK,gBACL,MAAO,CACH,OAAQ,CACJ,WAAY,CACR,mCAChB,CACS,EACD,OAAQ,CACJ,WAAY,CACR,uBAChB,CACS,EACD,QAAS,CACL,WAAY,CACR,wBACA,yBACA,sBAChB,CACS,EACD,QAAS,CACL,WAAY,CACR,uBAChB,CACA,CACA,CACA,CAAC,ECzDD,MAAeC,GAAA,65HCAFC,EAAgB,0BAChBC,GAAyBD,EAAgB,kBACzCE,GAAuBF,EAAgB,gBACvCG,GAAqBH,EAAgB,eACrCI,GAAuCJ,EAAgB,8BACvDK,GAAkBL,EAAgB,WAClCM,GAAuBN,EAAgB,eACvCO,GAA6CP,EAAgB,oCAC7DQ,GAAiBR,EAAgB,UACjCS,GAA4CT,EAAgB,mCAC5DU,GAA4CV,EAAgB,mCAE1DW,EAAA,CACX,cAAAX,EACA,uBAAAC,GACA,qBAAAC,GACA,mBAAAC,GACA,qCAAAC,GACA,gBAAAC,GACA,qBAAAC,GACA,2CAAAC,GACA,eAAAC,GACA,0CAAAC,GACA,0CAAAC,EACJ,ECnBM,WAAC3D,GAAS,MAAEW,CAAK,EAAI,SAE3BX,GAAU,SAAS,qBAAsB,CAErC,SAAUI,GAEV,OAAQ,CACJ,MACA,+BACH,EAED,OAAQ,CACJO,EAAM,UAAU,cAAc,EAC9BA,EAAM,UAAU,mBAAmB,CACtC,EAED,MAAO,CACH,MAAO,CAEH,OAAQ,CAAE,EAEV,UAAW,GACX,UAAW,GAEX,iBAAkB,GAElB,qBAAsB,GACtB,yBAA0B,GAE1B,cAAe,GACf,kBAAmB,GAEnB,aAAc,GACd,iBAAkB,GAElB,8BAA+B,GAC/B,+BAAgC,GAEhC,8BAA+B,eAC/B,+BAAgC,GAChC,6CAA8C,GAC9C,0DAA2D,GAC3D,kDAAmD,GACnD,kDAAmD,GAEnD,GAAGiD,CACN,CACJ,EAED,MAAO,CACH,UAAW,CACP,KAAM,QACN,SAAU,EACtB,CACK,EAED,UAAW,CACP,MAAO,CACH,MAAO,KAAK,aAAY,CAC3B,CACJ,EAED,MAAO,CACH,OAAQ,CACJ,QAAQC,EAAY,CAChB,MAAMC,EAAgB,KAAK,MAAM,gBAAgB,WAAW,KACrC,KAAK,MAAM,gBAAgB,yBAC3B,MAEnB,KAAK,qBAAuB,CAAC,CAAC,KAAK,OAAO,KAAK,sBAAsB,EACrE,KAAK,cAAgB,CAAC,CAAC,KAAK,OAAO,KAAK,eAAe,EACvD,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,KAAK,cAAc,EAE/C,KAAK,sBAAsB,KAAK,SAClC,KAAK,OAAO,KAAK,kBAAkB,EAAI,KAAK,+BAG1C,KAAK,wBAAwB,KAAK,SACpC,KAAK,OAAO,KAAK,oBAAoB,EAAI,KAAK,gCAG5C,KAAK,wCAAwC,KAAK,SACpD,KAAK,OAAO,KAAK,oCAAoC,EAAI,KAAK,8CAG5D,KAAK,8CAA8C,KAAK,SAC1D,KAAK,OAAO,KAAK,0CAA0C,EAAI,KAAK,2DAGlE,KAAK,6CAA6C,KAAK,SACzD,KAAK,OAAO,KAAK,yCAAyC,EAAI,KAAK,mDAGjE,KAAK,6CAA6C,KAAK,SACzD,KAAK,OAAO,KAAK,yCAAyC,EAAI,KAAK,qDAKvE,KAAK,qBAAuB,CAAC,CAAC,KAAK,OAAO,KAAK,sBAAsB,GAAK,CAAC,CAACA,EAAc,KAAK,sBAAsB,EACrH,KAAK,cAAgB,CAAC,CAAC,KAAK,OAAO,KAAK,eAAe,GAAK,CAAC,CAACA,EAAc,KAAK,eAAe,EAChG,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,KAAK,cAAc,GAAK,CAAC,CAACA,EAAc,KAAK,cAAc,GAGzF,EAAE,KAAK,sBAAsB,KAAK,SAAW,EAAE,KAAK,sBAAsBA,MAC1E,KAAK,OAAO,KAAK,kBAAkB,EAAI,KAAK,gCAG5C,EAAE,KAAK,wBAAwB,KAAK,SAAW,EAAE,KAAK,wBAAwBA,MAC9E,KAAK,OAAO,KAAK,oBAAoB,EAAI,KAAK,iCAG9C,EAAE,KAAK,wCAAwC,KAAK,SAAW,EAAE,KAAK,wCAAwCA,MAC9G,KAAK,OAAO,KAAK,oCAAoC,EAAI,KAAK,+CAG9D,EAAE,KAAK,8CAA8C,KAAK,SAAW,EAAE,KAAK,8CAA8CA,MAC1H,KAAK,OAAO,KAAK,0CAA0C,EAAI,KAAK,4DAGpE,EAAE,KAAK,6CAA6C,KAAK,SAAW,EAAE,KAAK,6CAA6CA,MACxH,KAAK,OAAO,KAAK,yCAAyC,EAAI,KAAK,oDAGnE,EAAE,KAAK,6CAA6C,KAAK,SAAW,EAAE,KAAK,6CAA6CA,MACxH,KAAK,OAAO,KAAK,yCAAyC,EAAI,KAAK,oDAI3E,KAAK,MAAM,qBAAqB,EAChC,KAAK,MAAM,eAAgBD,CAAU,CACxC,EACD,KAAM,EAClB,CACK,EAED,QAAS,CACL,0BAA0BE,EAAO,CAC7B,OAAI,OAAOA,GAAU,SACV,GAGJA,EAAM,QAAU,CAC1B,EAED,4BAA4BA,EAAO,CAC/B,OAAI,OAAOA,GAAU,SACV,GAGJA,EAAM,QAAU,CAC1B,EAED,0BAA0BA,EAAO,CAC7B,OAAO,OAAOA,GAAU,SAC3B,EAED,gBAAgBC,EAAK,CACjB,OAAI,KAAK,wBAA0B,KACxB,KAAK,iBAAiBA,CAAG,EAEzB,KAAK,WAAW,KAAQA,CAAG,CAEzC,EAED,QAAS,CACL,GAAI,EAAE,KAAK,eAAiB,KAAK,cAAgB,KAAK,sBAAuB,CACzE,KAAK,eAAgB,EACrB,MAChB,CACY,KAAK,KAAM,CACd,EAED,MAAO,CACH,KAAK,UAAY,GAEjB,KAAK,MAAM,gBAAgB,KAAI,EAAG,KAAMC,GAAQ,CACxCA,IACA,KAAK,OAASA,GAElB,KAAK,iBAAkB,EACvB,KAAK,sCAAuC,EAC5C,KAAK,2BAA4B,CACjD,CAAa,EAAE,MAAO,GAAM,CACZ,QAAQ,MAAM,SAAU,CAAC,EACzB,KAAK,UAAY,EACjC,CAAa,CACJ,EAED,kBAAmB,CACf,GAAI,KAAK,OAAO,KAAK,yCAAyC,IAAM,GAChE,MAAO,GAGX,KAAK,8BAA8B,iBAAiB,KAAK,MAAM,gBAAgB,sBAAsB,EAChG,KAAK,IAAM,CACR,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,6CAA6C,EAC7D,QAAS,KAAK,IAAI,sDAAsD,CAChG,CAAqB,CACrB,CAAiB,EAAE,MAAO,GAAM,CACZ,KAAK,wBAAwB,CACzB,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,oDAAoD,CAC9F,CAAqB,EACD,KAAK,UAAY,GACjB,QAAQ,MAAM,SAAU,CAAC,CAC7C,CAAa,CACJ,EAED,uCAAwC,CACpC,GAAI,KAAK,OAAO,KAAK,yCAAyC,IAAM,GAChE,MAAO,GAGX,KAAK,8BAA8B,sCAAsC,KAAK,MAAM,gBAAgB,sBAAsB,EACrH,KAAK,IAAM,CACR,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,6CAA6C,EAC7D,QAAS,KAAK,IAAI,yEAAyE,CACnH,CAAqB,EACD,KAAK,UAAY,EACrC,CAAiB,EAAE,MAAO,GAAM,CACZ,KAAK,wBAAwB,CACzB,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,uEAAuE,CACjH,CAAqB,EACD,KAAK,UAAY,GACjB,QAAQ,MAAM,SAAU,CAAC,CAC7C,CAAa,CACJ,EAED,4BAA4B,CACxB,KAAK,8BAA8B,2BAA0B,EACxD,KAAK,IAAM,CACR,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,6CAA6C,EAC7D,QAAS,KAAK,IAAI,iEAAiE,CAC3G,CAAqB,EACD,KAAK,UAAY,EACrC,CAAiB,EAAE,MAAM,IAAM,CACX,KAAK,wBAAwB,CACzB,MAAO,KAAK,IAAI,2CAA2C,EAC3D,QAAS,KAAK,IAAI,+DAA+D,CACzG,CAAqB,EACD,KAAK,UAAY,EACrC,CAAa,CACJ,EAED,2BAA4B,CACxB,KAAK,+BAAiC,GACtC,KAAK,8BAA8B,yCAC/B,KAAK,MAAM,gBAAgB,sBAC9B,EAAC,KAAK,IAAM,CACT,KAAK,+BAAiC,GACtC,KAAK,8BAAgC,GACrC,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,6CAA6C,EAC7D,QAAS,KAAK,IAAI,kEAAkE,CACxG,CAAiB,CACjB,CAAa,CACJ,EAED,gBAAiB,CACb,MAAMC,EAA4B,CAC9B,KAAM,EACN,OAAQ,KAAK,IAAI,oCAAoC,CACxD,EAEI,KAAK,gBACN,KAAK,kBAAoBA,GAGxB,KAAK,eACN,KAAK,iBAAmBA,GAGvB,KAAK,uBACN,KAAK,yBAA2BA,EAEvC,EAID,qBAAqBC,EAAmB,CACpC,KAAM,CAAE,QAAAC,EAAS,OAAAC,EAAQ,eAAAC,CAAgB,EAAGH,EAC5C,KAAK,UAAY,GAEjB,KAAK,8BAA8B,mBAAmBC,EAASC,EAAQC,CAAc,EAChF,KAAML,GAAQ,CACPA,EAAI,SAAW,IACf,KAAK,0BAA0B,CAC3B,MAAO,KAAK,IAAI,wDAAwD,EACxE,QAAS,KAAK,IAAI,iEAAiE,CAC/G,CAAyB,EAED,KAAK,wBAAwB,CACzB,MAAO,KAAK,IAAI,wDAAwD,EACxE,QAAS,KAAK,IAAI,+DAA+D,CAC7G,CAAyB,EAEL,KAAK,UAAY,EACrC,CAAiB,EAAE,MAAM,IAAM,CACX,KAAK,wBAAwB,CACzB,MAAO,KAAK,IAAI,wDAAwD,EACxE,QAAS,KAAK,IAAI,+DAA+D,CACzG,CAAqB,EACD,KAAK,UAAY,EACrC,CAAa,CACb,CACA,CACA,CAAC,EC5TD,MAAeM,GAAA,m0GCKT,WAACvE,GAAS,MAAEW,EAAK,EAAI,SAE3BX,GAAU,SAAS,2BAA4B,CAC3C,SAAUI,GAEV,KAAM,uBAEN,OAAQ,CACJ,KACH,EAED,OAAQ,CACJO,GAAM,UAAU,cAAc,CACjC,EAED,MAAO,CACH,iBAAkB,CACd,KAAM,OACN,SAAU,EACb,EACD,WAAY,CACR,KAAM,OACN,SAAU,EACb,EAED,uBAAwB,CACpB,SAAU,EACb,EACD,cAAe,CACX,KAAM,QACN,SAAU,EACb,EACD,kBAAmB,CACf,SAAU,EACb,EACD,aAAc,CACV,KAAM,QACN,SAAU,EACb,EACD,iBAAkB,CACd,SAAU,EACb,EACD,qBAAsB,CAClB,KAAM,QACN,SAAU,EACb,EACD,yBAA0B,CACtB,SAAU,EACb,EACD,UAAW,CACP,KAAM,QACN,SAAU,EACb,EACD,UAAW,CACP,KAAM,QACN,SAAU,EACtB,CACK,EAED,MAAO,CACH,MAAO,CACH,GAAGiD,CACN,CACJ,EAED,QAAS,CAEL,0BAA0BG,EAAO,CAC7B,OAAI,OAAOA,GAAU,SACV,GAGJA,EAAM,QAAU,CAC1B,EAED,4BAA4BA,EAAO,CAC/B,OAAI,OAAOA,GAAU,SACV,GAGJA,EAAM,QAAU,CAC1B,EAED,0BAA0BA,EAAO,CAC7B,OAAO,OAAOA,GAAU,SAC3B,EAID,6BAA8B,CAC1B,MAAMS,EAAsB,CACxB,QAAS,KAAK,iBAAiBZ,EAAU,eAAe,EACxD,OAAQ,KAAK,iBAAiBA,EAAU,cAAc,EACtD,eAAgB,KAAK,iBAAiBA,EAAU,sBAAsB,CACzE,EAED,KAAK,MAAM,6BAA8BY,CAAmB,CACxE,CACA,CACA,CAAC,ECxGD,MAAeC,GAAA,qqHCKT,WAACzE,GAAS,MAAEW,EAAK,EAAI,SAE3BX,GAAU,SAAS,uBAAwB,CAC1C,SAAUI,GAEV,KAAM,mBAEN,OAAQ,CACPO,GAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,iBAAkB,CACjB,KAAM,OACN,SAAU,EACV,EACD,WAAY,CACX,KAAM,OACN,SAAU,EACV,EACD,uBAAwB,CACvB,SAAU,EACV,EACD,UAAW,CACV,KAAM,QACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,GAAGiD,CACH,CACD,EAED,SAAU,CACT,oBAAqB,CACpB,MAAO,CACN,CACC,GAAI,eACJ,KAAM,KAAK,IAAI,yEAAyE,CACxF,EACD,CACC,GAAI,SACJ,KAAM,KAAK,IAAI,mEAAmE,CACvF,CACI,CACJ,CACE,EAED,QAAS,CACR,0BAA0BG,EAAO,CAChC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,4BAA4BA,EAAO,CAClC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,0BAA0BA,EAAO,CAChC,OAAO,OAAOA,GAAU,SAC3B,CACA,CACA,CAAC,EC5ED,MAAeW,GAAA,0qYCET,CAAE1E,UAAAA,EAAW,EAAG,SAEtBA,GAAU,SAAS,6BAA8B,CAC7CI,SAAAA,EACJ,CAAC,ECND,MAAeuE,GAAA,09BCKT,WAAC3E,GAAS,MAAEW,EAAK,EAAI,SAE3BX,GAAU,SAAS,kCAAmC,CACrD,SAAUI,GAEV,KAAM,6BAEN,OAAQ,CACPO,GAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,iBAAkB,CACjB,KAAM,OACN,SAAU,EACV,EACD,WAAY,CACX,KAAM,OACN,SAAU,EACV,EACD,uBAAwB,CACvB,SAAU,EACV,EACD,UAAW,CACV,KAAM,QACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,GAAGiD,CACH,CACD,EAED,QAAS,CACR,0BAA0BG,EAAO,CAChC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,4BAA4BA,EAAO,CAClC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,0BAA0BA,EAAO,CAChC,OAAO,OAAOA,GAAU,SAC3B,CACA,CACA,CAAC,EC7DD,MAAe3D,GAAA,mrDCKT,CAAC,UAAAJ,GAAW,MAAAW,EAAK,EAAI,SAE3BX,GAAU,SAAS,gCAAiC,CACnD,SAAUI,GAEV,KAAM,2BAEN,OAAQ,CACP,KACA,EAED,OAAQ,CACPO,GAAM,UAAU,cAAc,CAC9B,EAED,MAAO,CACN,iBAAkB,CACjB,KAAM,OACN,SAAU,EACV,EACD,WAAY,CACX,KAAM,OACN,SAAU,EACV,EACD,uBAAwB,CACvB,SAAU,EACV,EACD,UAAW,CACV,KAAM,QACN,SAAU,EACb,CACE,EAED,MAAO,CACN,MAAO,CACN,GAAGiD,CACH,CACD,EAED,QAAS,CACR,0BAA0BG,EAAO,CAChC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,4BAA4BA,EAAO,CAClC,OAAI,OAAOA,GAAU,SACb,GAGDA,EAAM,QAAU,CACvB,EAED,0BAA0BA,EAAO,CAChC,OAAO,OAAOA,GAAU,SAC3B,CACA,CACA,CAAC,wjaClDK,CAAC,OAAAtB,EAAM,EAAI,SAEjBA,GAAO,SAAS,qBAAsB,CACrC,KAAM,SACN,KAAM,YACN,MAAO,mDACP,YAAa,mDACb,MAAO,UACP,KAAM,0BACN,QAAS,QACT,cAAe,QAEZ,SAAU,CACN,QAASC,GACT,QAASC,GACT,QAASC,GACT,QAASC,EACZ,EAEJ,OAAQ,CACP,MAAO,CACN,UAAW,qBACX,KAAM,QACN,KAAM,CACL,WAAY,oBACZ,UAAW,kBACX,EACD,MAAO,CACM,QAAU+B,IACC,CACH,KAAMA,EAAM,OAAO,IACtB,EAER,CACb,CACE,EAED,aAAc,CACb,MAAO,UACP,GAAI,2BACJ,cAAe,6BACf,kBAAmB,GACnB,UAAW,kBACb,CAEA,CAAC,EC1DD,MAAMC,EAAa,SAAS,QAAQ,WAKpC,MAAMC,WAAsCD,CAAW,CAStD,YAAYE,EAAYC,EAAcC,EAAc,YAAa,CAChE,MAAMF,EAAYC,EAAcC,CAAW,CAC7C,CAQC,iBAAiBC,EAAiB,KAAM,CAEvC,MAAMC,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,oCAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,CAChB,EACD,CACC,QAASC,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAUC,mBAAmBjB,EAAU,KAAMC,EAAS,KAAMiB,EAAgB,KAAM,CAEvE,MAAMH,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,sCAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,QAAShB,EACT,OAAQC,EACR,cAAeiB,CACf,EACD,CACC,QAASH,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CASC,yCAAyCH,EAAiB,KAAM,CAE/D,MAAMC,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,gEAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,CAChB,EACD,CACC,QAASC,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAOC,sCAAsCH,EAAiB,KAAM,CAC5D,MAAMC,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,0DAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,CAChB,EACD,CACC,QAASC,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAMC,4BAA6B,CAC5B,MAAMF,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,+CAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,EACD,CACC,QAASD,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CACA,CCxIA,MAAMR,EAAa,SAAS,QAAQ,WAKpC,MAAMU,WAA+BV,CAAW,CAS/C,YAAYE,EAAYC,EAAcC,EAAc,YAAa,CAChE,MAAMF,EAAYC,EAAcC,CAAW,CAC7C,CAWC,aAAaC,EAAgBM,EAAeC,EAAUzD,EAAY,CAEjE,MAAMmD,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,yBAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,EACf,SAAUC,EACV,WAAYzD,CACZ,EACD,CACC,QAASmD,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAUC,qBAAqBH,EAAgBM,EAAeE,EAAkB,CAErE,MAAMP,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,mCAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,EACf,iBAAkBE,CAClB,EACD,CACC,QAASP,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAWC,oBAAoBH,EAAgBM,EAAeE,EAAkB1D,EAAY,CAEhF,MAAMmD,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,iCAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,EACf,iBAAkBE,EAClB,WAAY1D,CACZ,EACD,CACC,QAASmD,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CACA,CCzGA,MAAMR,EAAa,SAAS,QAAQ,WAKpC,MAAMc,WAAoCd,CAAW,CASpD,YAAYE,EAAYC,EAAcC,EAAc,YAAa,CAChE,MAAMF,EAAYC,EAAcC,CAAW,CAC7C,CASC,mBAAmBC,EAAgBM,EAAe,CAEjD,MAAML,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,qCAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,CACf,EACD,CACC,QAASL,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CAUC,mBAAmBH,EAAgBM,EAAe,CACjD,MAAO,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAgB,CAAA,qCAAqCN,CAAc,IAAIM,CAAa,EAC7I,CASC,eAAeN,EAAgBM,EAAe,CAC7C,MAAO,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAgB,CAAA,iCAAiCN,CAAc,IAAIM,CAAa,EACzI,CACA,CClEA,MAAMX,EAAa,SAAS,QAAQ,WAKpC,MAAMe,WAA8Cf,CAAW,CAS9D,YAAYE,EAAYC,EAAcC,EAAc,YAAa,CAChE,MAAMF,EAAYC,EAAcC,CAAW,CAC7C,CASC,4BAA4BC,EAAgBM,EAAe,CAE1D,MAAML,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,yDAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,CACf,EACD,CACC,QAASL,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CACA,CC3CA,MAAMR,EAAa,SAAS,QAAQ,WAKpC,MAAMgB,WAAwChB,CAAW,CASxD,YAAYE,EAAYC,EAAcC,EAAc,YAAa,CAChE,MAAMF,EAAYC,EAAcC,CAAW,CAC7C,CASC,sBAAsBC,EAAgBM,EAAe,CAEpD,MAAML,EAAU,KAAK,gBAAiB,EAChCC,EAAW,GAAG,SAAS,QAAQ,IAAI,OAAO,YAAY,KAAK,eAAc,CAAE,6CAEjF,OAAO,KAAK,WAAW,KACtBA,EACA,CACC,eAAgBF,EAChB,cAAeM,CACf,EACD,CACC,QAASL,CACb,CACA,EAAI,KAAME,GACAR,EAAW,eAAeQ,CAAQ,CACzC,CACH,CACA,CClCA,KAAM,CAAC,YAAAS,CAAW,EAAI,SAGtBA,EAAY,mBAAmB,gCAAkCC,GAAc,CAC9E,MAAMC,EAAgBF,EAAY,aAAa,MAAM,EACrD,OAAO,IAAIhB,GAA8BkB,EAAc,WAAYD,EAAU,YAAY,CAC1F,CAAC,EAGDD,EAAY,mBAAmB,yBAA2BC,GAAc,CACvE,MAAMC,EAAgBF,EAAY,aAAa,MAAM,EACrD,OAAO,IAAIP,GAAuBS,EAAc,WAAYD,EAAU,YAAY,CACnF,CAAC,EAGDD,EAAY,mBAAmB,8BAAgCC,GAAc,CAC5E,MAAMC,EAAgBF,EAAY,aAAa,MAAM,EACrD,OAAO,IAAIH,GAA4BK,EAAc,WAAYD,EAAU,YAAY,CACxF,CAAC,EAGDD,EAAY,mBAAmB,wCAA0CC,GAAc,CACtF,MAAMC,EAAgBF,EAAY,aAAa,MAAM,EACrD,OAAO,IAAIF,GAAsCI,EAAc,WAAYD,EAAU,YAAY,CAClG,CAAC,EAGDD,EAAY,mBAAmB,kCAAoCC,GAAc,CAChF,MAAMC,EAAgBF,EAAY,aAAa,MAAM,EACrD,OAAO,IAAID,GAAgCG,EAAc,WAAYD,EAAU,YAAY,CAC5F,CAAC"}
\ No newline at end of file
diff --git a/src/Resources/public/administration/assets/v-r-payment-payment-D4AH6HY2.css b/src/Resources/public/administration/assets/v-r-payment-payment-D4AH6HY2.css
deleted file mode 100644
index f68a9a8..0000000
--- a/src/Resources/public/administration/assets/v-r-payment-payment-D4AH6HY2.css
+++ /dev/null
@@ -1 +0,0 @@
-.sw-order-detail .sw-tabs{margin-top:40px}.sw-order-detail .sw-order-detail-base .mt-card-view__content{overflow-x:visible;overflow-y:visible}.vrpayment-order-detail__data{display:grid}.vrpayment-order-detail__heading{padding-top:15px}
diff --git a/src/Resources/public/storefront/js/app.js b/src/Resources/public/storefront/js/app.js
index 773dfe8..fc1c90c 100644
--- a/src/Resources/public/storefront/js/app.js
+++ b/src/Resources/public/storefront/js/app.js
@@ -29,7 +29,7 @@
payment_method_handler_status: 'input[name="vrpayment_payment_handler_validation_status"]',
payment_form_id: 'confirmOrderForm',
button_cancel_id: 'vrpaymentOrderCancel',
- // button_home_override: 'vrpaymentHomeLink',
+ button_home_override: 'vrpaymentHomeLink',
loader_id: 'vrpaymentLoader',
checkout_url: null,
checkout_url_id: 'checkoutUrl',
@@ -46,7 +46,7 @@
this.cart_recreate_url = document.getElementById(this.cart_recreate_url_id).value;
document.getElementById(this.button_cancel_id).addEventListener('click', this.recreateCart, false);
- // document.getElementById(this.button_home_override).addEventListener('click', this.recreateCart, false);
+ document.getElementById(this.button_home_override).addEventListener('click', this.recreateCart, false);
document.getElementById(this.payment_form_id).addEventListener('submit', this.submitPayment, false);
VRPaymentCheckout.getIframe();
diff --git a/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig b/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
index 9aa434c..5e6c15b 100644
--- a/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
+++ b/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
@@ -1,11 +1,15 @@
{% sw_extends '@Storefront/storefront/page/checkout/_page.html.twig' %}
+{% block base_header %}
+ {% sw_include '@VRPaymentPayment/storefront/page/checkout/order/vrpayment_header.html.twig' %}
+{% endblock %}
+
+{% block base_navigation %}{% endblock %}
{% block base_body_classes %}vrpayment-payment is-act-confirmpage{% endblock %}
{% block page_checkout_main_content %}
-
- {% block page_checkout_pay %}
- {% block page_checkout_confirm_header %}
+ {% block page_checkout_pay %}
+ {% block page_checkout_confirm_header %}
{{ "vrpayment.payHeader"|trans|sw_sanitize }}
@@ -140,6 +144,10 @@
{% endblock %}
+{% block base_footer %}
+ {% sw_include '@Storefront/storefront/layout/footer/footer-minimal.html.twig' %}
+{% endblock %}
+
{% block base_body_script %}
{{ parent() }}
{% if page.extensions.vRPaymentData %}
diff --git a/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig b/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig
new file mode 100644
index 0000000..4d958c1
--- /dev/null
+++ b/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig
@@ -0,0 +1,53 @@
+{% sw_extends '@Storefront/storefront/layout/header/header-minimal.html.twig' %}
+
+{% block layout_header_minimal_logo %}
+
+{% endblock %}
+
+{% block layout_header_minimal_button %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/VRPaymentPayment.php b/src/VRPaymentPayment.php
index a6650cb..e305188 100644
--- a/src/VRPaymentPayment.php
+++ b/src/VRPaymentPayment.php
@@ -3,7 +3,6 @@
namespace VRPaymentPayment;
use Shopware\Core\{
- Framework\Feature,
Framework\Plugin,
Framework\Plugin\Context\ActivateContext,
Framework\Plugin\Context\DeactivateContext,
@@ -22,7 +21,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
-use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
// expect the vendor folder on Shopware store releases
if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
@@ -84,21 +82,19 @@ class VRPaymentPayment extends Plugin {
{
parent::build($container);
- $confDir = \rtrim($this->getPath(), '/') . '/Resources/config';
- $locator = new FileLocator($confDir);
+ $locator = new FileLocator('Resources/config');
$resolver = new LoaderResolver([
- new YamlFileLoader($container, $locator),
- new XmlFileLoader($container, $locator),
- new GlobFileLoader($container, $locator),
- new DirectoryLoader($container, $locator),
+ new YamlFileLoader($container, $locator),
+ new GlobFileLoader($container, $locator),
+ new DirectoryLoader($container, $locator),
]);
$configLoader = new DelegatingLoader($resolver);
- $configLoader->load($confDir . '/{packages}/*.yaml', 'glob');
+ $confDir = \rtrim($this->getPath(), '/') . '/Resources/config';
- $configLoader->load('services/core/checkout.xml');
+ $configLoader->load($confDir . '/{packages}/*.yaml', 'glob');
}
public function enrichPrivileges(): array