From 55bdb5c640ae7bb6ccf49360c1ff7e7aefdf2f10 Mon Sep 17 00:00:00 2001 From: andrewrowanwallee Date: Tue, 11 Nov 2025 13:52:29 +0100 Subject: [PATCH] Release 7.1.5 --- CHANGELOG.md | 7 ++ CHANGELOG_de-DE.md | 7 ++ README.md | 8 +-- composer.json | 2 +- docs/de/documentation.html | 2 +- docs/en/documentation.html | 2 +- docs/fr/documentation.html | 2 +- docs/it/documentation.html | 2 +- .../PaymentMethodConfigurationService.php | 23 +++++++ .../Refund/Controller/RefundController.php | 41 +++++++++-- src/Core/Api/Refund/Service/RefundService.php | 69 ++++++++++++++++++- .../Service/TransactionService.php | 12 +++- src/Core/Util/Analytics/Analytics.php | 6 +- .../index.js | 17 +++-- .../index.html.twig | 1 + .../vrpayment-order-action-refund/index.js | 16 ++++- .../module/vrpayment-order/snippet/de-DE.json | 9 ++- .../module/vrpayment-order/snippet/en-GB.json | 10 +-- .../module/vrpayment-order/snippet/fr-FR.json | 9 ++- .../module/vrpayment-order/snippet/it-IT.json | 9 ++- .../v-r-payment-payment.js | 1 + .../config/services/core/api/refund.xml | 1 + .../administration/.vite/entrypoints.json | 25 +++++++ .../public/administration/.vite/manifest.json | 11 +++ .../assets/v-r-payment-payment-Cp2eQSV_.js | 2 + .../v-r-payment-payment-Cp2eQSV_.js.map | 1 + .../assets/v-r-payment-payment-D4AH6HY2.css | 1 + 27 files changed, 255 insertions(+), 41 deletions(-) create mode 100644 src/Resources/app/storefront/dist/storefront/js/v-r-payment-payment/v-r-payment-payment.js create mode 100644 src/Resources/public/administration/.vite/entrypoints.json create mode 100644 src/Resources/public/administration/.vite/manifest.json create mode 100644 src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js create mode 100644 src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js.map create mode 100644 src/Resources/public/administration/assets/v-r-payment-payment-D4AH6HY2.css diff --git a/CHANGELOG.md b/CHANGELOG.md index acdc31e..1d5c1d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 7.1.5 +- Improved analytics +- Improved error handling for refunding amount 0 and too many items + +# 7.1.4 +- Updated SDK to 4.8.1 + # 7.1.3 - Fixed issue with radio button/switch settings not saving - Fixed issue with error screen sporadically happening after failed payments diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md index 22a1fd6..d863183 100644 --- a/CHANGELOG_de-DE.md +++ b/CHANGELOG_de-DE.md @@ -1,3 +1,10 @@ +# 7.1.5 +- Verbesserte Analysefunktionen +- Verbesserte Fehlerbehandlung bei Rückerstattungen von 0 Beträgen und zu vielen Artikeln + +# 7.1.4 +- Aktualisiertes SDK - 4.8.1 + # 7.1.3 – Problem behoben, bei dem die Einstellungen von Optionsfeldern/Schaltern nicht gespeichert wurden. – Problem behoben, bei dem nach fehlgeschlagenen Zahlungen sporadisch ein Fehlerbildschirm angezeigt wurde. diff --git a/README.md b/README.md index 7c00d45..d2ddb8d 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ Please note that this plugin is for versions 6.5, 6.6 or 6.7. For the 6.4 plugin ## Documentation -- For English documentation click [here](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.4/docs/en/documentation.html) -- Für die deutsche Dokumentation klicken Sie [hier](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.4/docs/de/documentation.html) -- Pour la documentation Française, cliquez [ici](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.4/docs/fr/documentation.html) -- Per la documentazione in tedesco, clicca [qui](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.4/docs/it/documentation.html) +- For English documentation click [here](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.5/docs/en/documentation.html) +- Für die deutsche Dokumentation klicken Sie [hier](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.5/docs/de/documentation.html) +- Pour la documentation Française, cliquez [ici](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.5/docs/fr/documentation.html) +- Per la documentazione in tedesco, clicca [qui](https://docs.plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.1.5/docs/it/documentation.html) ## Installation diff --git a/composer.json b/composer.json index da2f756..af53dec 100644 --- a/composer.json +++ b/composer.json @@ -59,5 +59,5 @@ "vrpayment/sdk": "^4.0.0" }, "type": "shopware-platform-plugin", - "version": "7.1.4" + "version": "7.1.5" } diff --git a/docs/de/documentation.html b/docs/de/documentation.html index bcb9112..f04dd0e 100644 --- a/docs/de/documentation.html +++ b/docs/de/documentation.html @@ -23,7 +23,7 @@
  • - + Source
  • diff --git a/docs/en/documentation.html b/docs/en/documentation.html index 455d3bd..5e4b115 100644 --- a/docs/en/documentation.html +++ b/docs/en/documentation.html @@ -23,7 +23,7 @@
  • - + Source
  • diff --git a/docs/fr/documentation.html b/docs/fr/documentation.html index 21e04a6..eddd876 100644 --- a/docs/fr/documentation.html +++ b/docs/fr/documentation.html @@ -23,7 +23,7 @@
  • - + Source
  • diff --git a/docs/it/documentation.html b/docs/it/documentation.html index 9e8a711..a218506 100644 --- a/docs/it/documentation.html +++ b/docs/it/documentation.html @@ -23,7 +23,7 @@
  • - + Source
  • diff --git a/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php b/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php index 223eb2c..61352a6 100644 --- a/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php +++ b/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php @@ -661,6 +661,13 @@ class PaymentMethodConfigurationService { ], $context); // Media insert/update + + // detect if collision, return existing id + $existingId = $this->checkMediaAlreadyExists($paymentMethodConfiguration->getResolvedImageUrl(), $context); + if ($existingId) { + return $existingId; + } + $mediaDefinition = $this->container->get(MediaDefinition::class); $this->mediaSerializer->setRegistry($this->serializerRegistry); @@ -681,6 +688,22 @@ class PaymentMethodConfigurationService { } } + private function checkMediaAlreadyExists($paymentMethodUrl, $context) { + // detect if collision, return existing id + if (preg_match('#/([^/]+)\.[^/.]+$#', $paymentMethodUrl, $matches)) { + $filename = $matches[1]; + } + $criteria = new Criteria(); + $criteria->addFilter(new EqualsFilter('fileName', $filename)); + + $existing = $this->mediaRepository->search($criteria, $context)->first(); + + if ($existing) { + return $existing->getId(); + } + return false; + } + /** * Retrieves media default folder for a given payment method configuration. * diff --git a/src/Core/Api/Refund/Controller/RefundController.php b/src/Core/Api/Refund/Controller/RefundController.php index b6b8661..cce0025 100644 --- a/src/Core/Api/Refund/Controller/RefundController.php +++ b/src/Core/Api/Refund/Controller/RefundController.php @@ -13,6 +13,7 @@ use Symfony\Component\{ }; use VRPaymentPayment\Core\{ Api\Refund\Service\RefundService, + Api\Transaction\Service\TransactionService, Settings\Service\SettingsService }; @@ -40,17 +41,24 @@ class RefundController extends AbstractController * @var \Psr\Log\LoggerInterface */ protected $logger; + + /** + * @var \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService + */ + protected $transactionService; /** * RefundController constructor. * * @param \VRPaymentPayment\Core\Api\Refund\Service\RefundService $refundService * @param \VRPaymentPayment\Core\Settings\Service\SettingsService $settingsService + * @param \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService $transactionService */ - public function __construct(RefundService $refundService, SettingsService $settingsService) + public function __construct(RefundService $refundService, SettingsService $settingsService, TransactionService $transactionService) { $this->settingsService = $settingsService; $this->refundService = $refundService; + $this->transactionService = $transactionService; } /** @@ -81,12 +89,24 @@ class RefundController extends AbstractController $transactionId = $request->request->get('transactionId'); $quantity = (int)$request->request->get('quantity'); $lineItemId = $request->request->get('lineItemId'); + + if ($quantity === null || $quantity <= 0) { + return new Response('refundQuantityZero', Response::HTTP_BAD_REQUEST); + } $settings = $this->settingsService->getSettings($salesChannelId); $apiClient = $settings->getApiClient(); $transaction = $apiClient->getTransactionService()->read($settings->getSpaceId(), $transactionId); + + $maxQuantity = $this->refundService->getMaxRefundableQuantity($transaction, $context, $lineItemId); + + if ($quantity > $maxQuantity) { + return new Response('refundExceedsQuantity', Response::HTTP_BAD_REQUEST); + } + $refund = $this->refundService->create($transaction, $context, $lineItemId, $quantity); + if ($refund === null) { return new Response('Refund was not created. Please check the refund amound or if the item was not refunded before', Response::HTTP_BAD_REQUEST); } @@ -110,17 +130,30 @@ class RefundController extends AbstractController $salesChannelId = $request->request->get('salesChannelId'); $transactionId = $request->request->get('transactionId'); $refundableAmount = $request->request->get('refundableAmount'); + + if ($refundableAmount === null || $refundableAmount <= 0.0) { + return new Response('refundAmountZero', Response::HTTP_BAD_REQUEST); + } $settings = $this->settingsService->getSettings($salesChannelId); $apiClient = $settings->getApiClient(); $transaction = $apiClient->getTransactionService()->read($settings->getSpaceId(), $transactionId); - $refund = $this->refundService->createRefundByAmount($transaction, $refundableAmount, $context); + + $completed = (float) $transaction->getCompletedAmount(); + $refunded = (float) $transaction->getRefundedAmount(); + $maxRefund = round($completed - $refunded, 2); - if ($refund === null) { - return new Response('refundExceedsAmount', Response::HTTP_BAD_REQUEST); + if ($refundableAmount > $maxRefund) { + return new Response('refundExceedsAmount', Response::HTTP_BAD_REQUEST); } + $refund = $this->refundService->createRefundByAmount($transaction, $refundableAmount, $context); + + if ($refund === null) { + return new Response('refundExceedsAmount', Response::HTTP_BAD_REQUEST); + } + return new Response(null, Response::HTTP_NO_CONTENT); } diff --git a/src/Core/Api/Refund/Service/RefundService.php b/src/Core/Api/Refund/Service/RefundService.php index defb2f8..d49540b 100644 --- a/src/Core/Api/Refund/Service/RefundService.php +++ b/src/Core/Api/Refund/Service/RefundService.php @@ -12,7 +12,11 @@ use Shopware\Core\{ }; use VRPayment\Sdk\{ Model\Refund, - Model\Transaction + Model\Transaction, + Model\CriteriaOperator, + Model\EntityQueryFilter, + Model\EntityQueryFilterType, + Model\EntityQuery, }; use VRPaymentPayment\Core\{ Api\Refund\Entity\RefundEntity, @@ -241,4 +245,67 @@ class RefundService ->first(); } + /** + * Get total refunded quantity for transaction's line item by lineItemId. + * + * @param \VRPayment\Sdk\Model\Transaction $transaction + * @param \Shopware\Core\Framework\Context $context + * @param string $lineItemId + * + * @return int + */ + public function getRefundedQuantity(Transaction $transaction, Context $context, string $lineItemId): int { + $transactionEntity = $this->getTransactionEntityByTransactionId($transaction->getId(), $context); + $settings = $this->settingsService->getSettings($transactionEntity->getSalesChannel()->getId()); + $apiClient = $settings->getApiClient(); + + $entityQueryFilter = (new EntityQueryFilter()) + ->setType(EntityQueryFilterType::LEAF) + ->setOperator(CriteriaOperator::EQUALS) + ->setFieldName('transaction.id') + ->setValue($transaction->getId()); + + $query = (new EntityQuery())->setFilter($entityQueryFilter); + + $refunds = $apiClient->getRefundService()->search($settings->getSpaceId(), $query); + + $refundedQuantity = 0; + + foreach ($refunds as $refund) { + foreach ($refund->getReductions() as $reduction) { + if ($reduction->getLineItemUniqueId() === $lineItemId) { + $refundedQuantity += (int) $reduction->getQuantityReduction(); + } + } + } + + return $refundedQuantity; + } + + /** + * Get maximum quantity of available items to refund for line item. + * + * @param \VRPayment\Sdk\Model\Transaction $transaction + * @param \Shopware\Core\Framework\Context $context + * @param string $lineItemId + * + * @return int + */ + public function getMaxRefundableQuantity(Transaction $transaction, Context $context, string $lineItemId): int { + + $originalQuantity = 0; + + foreach ($transaction->getLineItems() as $lineItem) { + if ($lineItem->getUniqueId() === $lineItemId) { + $originalQuantity = (int) $lineItem->getQuantity(); + break; + } + } + + $refundedQuantity = $this->getRefundedQuantity($transaction, $context, $lineItemId); + + $maxQuantity = $originalQuantity - $refundedQuantity; + + return $maxQuantity; + } } diff --git a/src/Core/Api/Transaction/Service/TransactionService.php b/src/Core/Api/Transaction/Service/TransactionService.php index f364dad..9fccd66 100644 --- a/src/Core/Api/Transaction/Service/TransactionService.php +++ b/src/Core/Api/Transaction/Service/TransactionService.php @@ -45,7 +45,8 @@ use VRPaymentPayment\Core\{ Settings\Service\SettingsService, Util\LocaleCodeProvider, Util\Payload\CustomProducts\CustomProductsLineItemTypes, - Util\Payload\TransactionPayload + Util\Payload\TransactionPayload, + Util\Analytics\Analytics }; use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity; use Shopware\Core\Framework\Struct\ArrayEntity; @@ -221,9 +222,14 @@ class TransactionService $spaceId = $settings->getSpaceId(); } - $sdkTransaction = $settings->getApiClient()->getTransactionService()->create($spaceId, $sdkTransactionCreate); + $apiClient = $settings->getApiClient(); + Analytics::addHeaders($apiClient, [ + Analytics::SUBSCRIPTION_TRANSACTION => true + ]); + + $sdkTransaction = $apiClient->getTransactionService()->create($spaceId, $sdkTransactionCreate); if ($sdkTransaction->valid()) { - return $settings->getApiClient()->getTransactionService()->processWithoutUserInteraction($spaceId, $sdkTransaction->getId()); + return $apiClient->getTransactionService()->processWithoutUserInteraction($spaceId, $sdkTransaction->getId()); } throw new \Exception("The transacion is not valid and could not be created."); diff --git a/src/Core/Util/Analytics/Analytics.php b/src/Core/Util/Analytics/Analytics.php index bbe0a93..5f84b9a 100644 --- a/src/Core/Util/Analytics/Analytics.php +++ b/src/Core/Util/Analytics/Analytics.php @@ -15,6 +15,7 @@ class Analytics { public const SHOP_SYSTEM_VERSION = 'x-meta-shop-system-version'; public const SHOP_SYSTEM_AND_VERSION = 'x-meta-shop-system-and-version'; public const PLUGIN_SYSTEM_VERSION = 'x-meta-plugin-version'; + public const SUBSCRIPTION_TRANSACTION = 'x-meta-subscription-transaction'; /** * @return array @@ -25,16 +26,17 @@ class Analytics { self::SHOP_SYSTEM => 'shopware', self::SHOP_SYSTEM_VERSION => '6', self::SHOP_SYSTEM_AND_VERSION => 'shopware-6', - self::PLUGIN_SYSTEM_VERSION => '7.1.4', + self::PLUGIN_SYSTEM_VERSION => '7.1.5', ]; } /** * @param \VRPayment\Sdk\ApiClient $apiClient */ - public static function addHeaders(ApiClient &$apiClient) + public static function addHeaders(ApiClient &$apiClient, array $additionalHeaders = []) { $data = self::getDefaultData(); + $data = array_merge($data, $additionalHeaders); foreach ($data as $key => $value) { $apiClient->addDefaultHeader($key, $value); } 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..ac77a9f 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,14 +70,17 @@ Component.register('vrpayment-order-action-refund-by-amount', { }); }).catch((errorResponse) => { try { - var errorTitle; + var errorTitle = errorResponse?.response?.data?.errors?.[0]?.title ?? this.$tc('vrpayment-order.refundAction.refundCreateError.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; + switch(errorResponse.response.data) { + case 'refundAmountZero': + errorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundAmountIsZero'); + break; + case 'refundExceedsAmount': + errorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundAmountExceedsAvailableBalance'); + break; + default: + errorMessage = errorResponse.response.data.errors[0].detail; } this.createNotificationError({ title: errorTitle, 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..d3a9652 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 @@ -9,6 +9,7 @@ :max="this.$parent.$parent.itemRefundableQuantity" :min="0" v-model="refundQuantity" + number-type="int" :label="$tc('vrpayment-order.refund.refundQuantity.label')"> diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js index 243dc97..3020b70 100644 --- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js +++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js @@ -68,9 +68,21 @@ Component.register('vrpayment-order-action-refund', { }); }).catch((errorResponse) => { try { + var errorTitle = errorResponse?.response?.data?.errors?.[0]?.title ?? this.$tc('vrpayment-order.refundAction.refundCreateError.errorTitle') + var errorMessage; + switch(errorResponse.response.data) { + case 'refundQuantityZero': + errorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundQuantityIsZero'); + break; + case 'refundExceedsQuantity': + errorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundQuantityExceedsAvailableBalance'); + break; + default: + errorMessage = errorResponse.response.data.errors[0].detail; + } this.createNotificationError({ - title: errorResponse.response.data.errors[0].title, - message: errorResponse.response.data.errors[0].detail, + title: errorTitle, + message: errorMessage, autoClose: false }); } catch (e) { 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..3d7a5cc 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 @@ -78,9 +78,12 @@ "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." + "refundCreateError": { + "errorTitle": "Fehler beim Erstellen der Rückerstattung.", + "messageRefundAmountExceedsAvailableBalance": "Der Rückerstattungsbetrag übersteigt das verfügbare Guthaben.", + "messageRefundAmountIsZero": "Der Rückerstattungsbetrag muss größer als 0 sein.", + "messageRefundQuantityExceedsAvailableBalance": "Rückerstattung nach Menge überschreitet die maximal verfügbare Anzahl an Artikeln zur Rückerstattung.", + "messageRefundQuantityIsZero": "Rückerstattung nach Menge muss größer als 0 sein." } }, "transactionHistory": { 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..360f2b9 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 @@ -9,7 +9,6 @@ "void": "Cancel authorization", "refund-whole-line-item": "Refund whole line item", "refund-line-item-by-quantity": "Refund by quantity", - "refund-line-item-selected": "Rembourser sélectionnés", "refund-line-item-selected": "Refund selected", "refund-line-item-parial": "Partial refund" } @@ -79,9 +78,12 @@ "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." + "refundCreateError": { + "errorTitle": "Error while creating the refund.", + "messageRefundAmountExceedsAvailableBalance": "Refund amount exceeds available balance.", + "messageRefundAmountIsZero": "Refund amount must be greater than 0.", + "messageRefundQuantityExceedsAvailableBalance": "Refund by quantity exceeds maximum available items to refund.", + "messageRefundQuantityIsZero": "Refund by quantity must be greater than 0." } }, "transactionHistory": { 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..958c9c7 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 @@ -78,9 +78,12 @@ "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." + "refundCreateError": { + "errorTitle": "Erreur lors de la création du remboursement.", + "messageRefundAmountExceedsAvailableBalance": "Le montant du remboursement dépasse le solde disponible.", + "messageRefundAmountIsZero": "Le montant du remboursement doit être supérieur à 0.", + "messageRefundQuantityExceedsAvailableBalance": "Le remboursement par quantité dépasse le nombre maximal d’articles remboursables.", + "messageRefundQuantityIsZero": "Le remboursement par quantité doit être supérieur à 0." } }, "transactionHistory": { 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..79d1381 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 @@ -78,9 +78,12 @@ "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." + "refundCreateError": { + "errorTitle": "Errore durante la creazione del rimborso.", + "messageRefundAmountExceedsAvailableBalance": "LL'importo del rimborso supera il saldo disponibile.", + "messageRefundAmountIsZero": "L'importo del rimborso deve essere superiore a 0.", + "messageRefundQuantityExceedsAvailableBalance": "Il rimborso per quantità supera il numero massimo di articoli rimborsabili.", + "messageRefundQuantityIsZero": "Il rimborso per quantità deve essere maggiore di 0." } }, "transactionHistory": { diff --git a/src/Resources/app/storefront/dist/storefront/js/v-r-payment-payment/v-r-payment-payment.js b/src/Resources/app/storefront/dist/storefront/js/v-r-payment-payment/v-r-payment-payment.js new file mode 100644 index 0000000..872b878 --- /dev/null +++ b/src/Resources/app/storefront/dist/storefront/js/v-r-payment-payment/v-r-payment-payment.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={156:e=>{var t=function(e){var t;return!!e&&"object"==typeof e&&"[object RegExp]"!==(t=Object.prototype.toString.call(e))&&"[object Date]"!==t&&e.$$typeof!==r},r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?o(Array.isArray(e)?[]:{},e,t):e}function i(e,t,r){return e.concat(t).map(function(e){return n(e,r)})}function s(e){return Object.keys(e).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[])}function a(e,t){try{return t in e}catch(e){return!1}}function o(e,r,l){(l=l||{}).arrayMerge=l.arrayMerge||i,l.isMergeableObject=l.isMergeableObject||t,l.cloneUnlessOtherwiseSpecified=n;var u,c,h=Array.isArray(r);return h!==Array.isArray(e)?n(r,l):h?l.arrayMerge(e,r,l):(c={},(u=l).isMergeableObject(e)&&s(e).forEach(function(t){c[t]=n(e[t],u)}),s(r).forEach(function(t){(!a(e,t)||Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))&&(a(e,t)&&u.isMergeableObject(r[t])?c[t]=(function(e,t){if(!t.customMerge)return o;var r=t.customMerge(e);return"function"==typeof r?r:o})(t,u)(e[t],r[t],u):c[t]=n(r[t],u))}),c)}o.all=function(e,t){if(!Array.isArray(e))throw Error("first argument should be an array");return e.reduce(function(e,r){return o(e,r,t)},{})},e.exports=o}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n=r(156),i=r.n(n);class s{static ucFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}static lcFirst(e){return e.charAt(0).toLowerCase()+e.slice(1)}static toDashCase(e){return e.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()}static toLowerCamelCase(e,t){let r=s.toUpperCamelCase(e,t);return s.lcFirst(r)}static toUpperCamelCase(e,t){return t?e.split(t).map(e=>s.ucFirst(e.toLowerCase())).join(""):s.ucFirst(e.toLowerCase())}static parsePrimitive(e){try{return/^\d+(.|,)\d+$/.test(e)&&(e=e.replace(",",".")),JSON.parse(e)}catch(t){return e.toString()}}}class a{constructor(e=document){this._el=e,e.$emitter=this,this._listeners=[]}publish(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=new CustomEvent(e,{detail:t,cancelable:r});return this.el.dispatchEvent(n),n}subscribe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=this,i=e.split("."),s=r.scope?t.bind(r.scope):t;if(r.once&&!0===r.once){let t=s;s=function(r){n.unsubscribe(e),t(r)}}return this.el.addEventListener(i[0],s),this.listeners.push({splitEventName:i,opts:r,cb:s}),!0}unsubscribe(e){let t=e.split(".");return this.listeners=this.listeners.reduce((e,r)=>([...r.splitEventName].sort().toString()===t.sort().toString()?this.el.removeEventListener(r.splitEventName[0],r.cb):e.push(r),e),[]),!0}reset(){return this.listeners.forEach(e=>{this.el.removeEventListener(e.splitEventName[0],e.cb)}),this.listeners=[],!0}get el(){return this._el}set el(e){this._el=e}get listeners(){return this._listeners}set listeners(e){this._listeners=e}}class o{constructor(e,t={},r=!1){if(!(e instanceof Node)){console.warn(`There is no valid element given while trying to create a plugin instance for "${r}".`);return}this.el=e,this.$emitter=new a(this.el),this._pluginName=this._getPluginName(r),this.options=this._mergeOptions(t),this._initialized=!1,this._registerInstance(),this._init()}init(){console.warn(`The "init" method for the plugin "${this._pluginName}" is not defined. The plugin will not be initialized.`)}update(){}_init(){this._initialized||(this.init(),this._initialized=!0)}_update(){this._initialized&&this.update()}_mergeOptions(e){let t=[this.constructor.options,this.options,e];return t.push(this._getConfigFromDataAttribute()),t.push(this._getOptionsFromDataAttribute()),i().all(t.filter(e=>e instanceof Object&&!(e instanceof Array)).map(e=>e||{}))}_getConfigFromDataAttribute(){let e={};if("function"!=typeof this.el.getAttribute)return e;let t=s.toDashCase(this._pluginName),r=this.el.getAttribute(`data-${t}-config`);return r?window.PluginConfigManager.get(this._pluginName,r):e}_getOptionsFromDataAttribute(){let e={};if("function"!=typeof this.el.getAttribute)return e;let t=s.toDashCase(this._pluginName),r=this.el.getAttribute(`data-${t}-options`);if(r)try{return JSON.parse(r)}catch(e){console.error(`The data attribute "data-${t}-options" could not be parsed to json: ${e.message}`)}return e}_registerInstance(){window.PluginManager.getPluginInstancesFromElement(this.el).set(this._pluginName,this),window.PluginManager.getPlugin(this._pluginName,!1).get("instances").push(this)}_getPluginName(e){return e||(e=this.constructor.name),e}}class l{constructor(){this._request=null,this._errorHandlingInternal=!1}get(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",n=this._createPreparedRequest("GET",e,r);return this._sendRequest(n,null,t)}post(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";n=this._getContentType(t,n);let i=this._createPreparedRequest("POST",e,n);return this._sendRequest(i,t,r)}delete(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";n=this._getContentType(t,n);let i=this._createPreparedRequest("DELETE",e,n);return this._sendRequest(i,t,r)}patch(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";n=this._getContentType(t,n);let i=this._createPreparedRequest("PATCH",e,n);return this._sendRequest(i,t,r)}abort(){if(this._request)return this._request.abort()}setErrorHandlingInternal(e){this._errorHandlingInternal=e}_registerOnLoaded(e,t){t&&(!0===this._errorHandlingInternal?(e.addEventListener("load",()=>{t(e.responseText,e)}),e.addEventListener("abort",()=>{console.warn(`the request to ${e.responseURL} was aborted`)}),e.addEventListener("error",()=>{console.warn(`the request to ${e.responseURL} failed with status ${e.status}`)}),e.addEventListener("timeout",()=>{console.warn(`the request to ${e.responseURL} timed out`)})):e.addEventListener("loadend",()=>{t(e.responseText,e)}))}_sendRequest(e,t,r){return this._registerOnLoaded(e,r),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,r){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),r&&this._request.setRequestHeader("Content-type",r),this._request}}class u extends o{static #e=this.options={payment_method_tabs:"ul.vrpayment-payment-panel li",payment_method_iframe_prefix:"iframe_payment_method_",payment_method_iframe_class:".vrpayment-payment-iframe",payment_method_handler_name:"vrpayment_payment_handler",payment_method_handler_prefix:"vrpayment_handler_",payment_method_handler_status:'input[name="vrpayment_payment_handler_validation_status"]',payment_form:"confirmOrderForm"};init(){this._client=new l(window.accessKey)}}window.PluginManager.register("VRPaymentCheckoutPlugin",u,"[data-vrpayment-checkout-plugin]")})(); \ No newline at end of file diff --git a/src/Resources/config/services/core/api/refund.xml b/src/Resources/config/services/core/api/refund.xml index 6ecf374..cdb2a82 100644 --- a/src/Resources/config/services/core/api/refund.xml +++ b/src/Resources/config/services/core/api/refund.xml @@ -10,6 +10,7 @@ + diff --git a/src/Resources/public/administration/.vite/entrypoints.json b/src/Resources/public/administration/.vite/entrypoints.json new file mode 100644 index 0000000..be037e1 --- /dev/null +++ b/src/Resources/public/administration/.vite/entrypoints.json @@ -0,0 +1,25 @@ +{ + "base": "/bundles/vrpaymentpayment/administration/", + "entryPoints": { + "v-r-payment-payment": { + "css": [ + "/bundles/vrpaymentpayment/administration/assets/v-r-payment-payment-D4AH6HY2.css" + ], + "dynamic": [], + "js": [ + "/bundles/vrpaymentpayment/administration/assets/v-r-payment-payment-Cp2eQSV_.js" + ], + "legacy": false, + "preload": [] + } + }, + "legacy": false, + "metadatas": {}, + "version": [ + "7.1.0", + 7, + 1, + 0 + ], + "viteServer": null +} \ No newline at end of file diff --git a/src/Resources/public/administration/.vite/manifest.json b/src/Resources/public/administration/.vite/manifest.json new file mode 100644 index 0000000..94de841 --- /dev/null +++ b/src/Resources/public/administration/.vite/manifest.json @@ -0,0 +1,11 @@ +{ + "main.js": { + "file": "assets/v-r-payment-payment-Cp2eQSV_.js", + "name": "v-r-payment-payment", + "src": "main.js", + "isEntry": true, + "css": [ + "assets/v-r-payment-payment-D4AH6HY2.css" + ] + } +} \ No newline at end of file diff --git a/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js b/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js new file mode 100644 index 0000000..7f4d934 --- /dev/null +++ b/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js @@ -0,0 +1,2 @@ +const A=`{% 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 #} {{ $tc('vrpayment-order.header') }} {% endblock %} {% block sw_order_detail_actions_slot_smart_bar_actions %} {% endblock %}`,{Component:T,Context:g}=Shopware,P=Shopware.Data.Criteria,D="handler_vrpaymentpayment_vrpaymentpaymenthandler";T.override("sw-order-detail",{template:A,data(){return{isVRPaymentPayment:!1}},computed:{isEditable(){return!this.isVRPaymentPayment||this.$route.name!=="vrpayment.order.detail"},showTabs(){return!0}},watch:{orderId:{deep:!0,handler(){if(!this.orderId){this.setIsVRPaymentPayment(null);return}const e=this.repositoryFactory.create("order"),t=new P(1,1);t.addAssociation("transactions"),e.get(this.orderId,g.api,t).then(a=>{if(a.amountTotal<=0||a.transactions.length<=0||!a.transactions[0].paymentMethodId){this.setIsVRPaymentPayment(null);return}const n=a.transactions[0].paymentMethodId;n!=null&&this.setIsVRPaymentPayment(n)})},immediate:!0}},methods:{setIsVRPaymentPayment(e){if(!e)return;this.repositoryFactory.create("payment_method").get(e,g.api).then(a=>{this.isVRPaymentPayment=a.formattedHandlerIdentifier===D})}}});const N=`{% block vrpayment_order_action_completion %} {% block vrpayment_order_action_completion_amount %} {% endblock %} {% block vrpayment_order_action_completion_confirm_button %} {% endblock %} {% endblock %}`,{Component:R,Mixin:k,Filter:$,Utils:y}=Shopware;R.register("vrpayment-order-action-completion",{template:N,inject:["VRPaymentTransactionCompletionService"],mixins:[k.getByName("notification")],props:{transactionData:{type:Object,required:!0}},data(){return{isLoading:!0,isCompletion:!1}},computed:{dateFilter(){return $.getByName("date")}},created(){this.createdComponent()},methods:{createdComponent(){this.isLoading=!1},completion(){this.isCompletion&&(this.isLoading=!0,this.VRPaymentTransactionCompletionService.createTransactionCompletion(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.captureAction.successTitle"),message:this.$tc("vrpayment-order.captureAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${y.createId()}`)})}).catch(e=>{try{this.createNotificationError({title:e.response.data.errors[0].title,message:e.response.data.errors[0].detail,autoClose:!1})}catch{this.createNotificationError({title:e.title,message:e.message,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${y.createId()}`)})}}))}}});const x=`{% block vrpayment_order_action_refund %} {% block vrpayment_order_action_refund_amount %}
    {{ $tc('vrpayment-order.refundAction.maxAvailableItemsToRefund') }}: {{ this.$parent.$parent.itemRefundableQuantity }}
    {% endblock %} {% block vrpayment_order_action_refund_confirm_button %} {% endblock %}
    {% endblock %}`,{Component:O,Mixin:F,Filter:V,Utils:f}=Shopware;O.register("vrpayment-order-action-refund",{template:x,inject:["VRPaymentRefundService"],mixins:[F.getByName("notification")],props:{transactionData:{type:Object,required:!0},orderId:{type:String,required:!0}},data(){return{refundQuantity:0,isLoading:!0,currentLineItem:""}},computed:{dateFilter(){return V.getByName("date")}},created(){this.createdComponent()},methods:{createdComponent(){this.isLoading=!1,this.refundQuantity=1},refund(){this.isLoading=!0,this.VRPaymentRefundService.createRefund(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id,this.refundQuantity,this.$parent.$parent.currentLineItem).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.refundAction.successTitle"),message:this.$tc("vrpayment-order.refundAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${f.createId()}`)})}).catch(e=>{var n,r,o,s;try{var t=((s=(o=(r=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:r.errors)==null?void 0:o[0])==null?void 0:s.title)??this.$tc("vrpayment-order.refundAction.refundCreateError.errorTitle"),a;switch(e.response.data){case"refundQuantityZero":a=this.$tc("vrpayment-order.refundAction.refundCreateError.messageRefundQuantityIsZero");break;case"refundExceedsQuantity":a=this.$tc("vrpayment-order.refundAction.refundCreateError.messageRefundQuantityExceedsAvailableBalance");break;default:a=e.response.data.errors[0].detail}this.createNotificationError({title:t,message:a,autoClose:!1})}catch{this.createNotificationError({title:e.title,message:e.message,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${f.createId()}`)})}})}}});const L=`{% block vrpayment_order_action_refund_partial %} {% block vrpayment_order_action_refund_amount_partial %}
    {{ $tc('vrpayment-order.refundAction.maxAvailableAmountToRefund') }}: {{ this.$parent.$parent.itemRefundableAmount }}
    {% endblock %} {% block vrpayment_order_action_refund_confirm_button_partial %} {% endblock %}
    {% endblock %}`,{Component:M,Mixin:B,Filter:z,Utils:b}=Shopware;M.register("vrpayment-order-action-refund-partial",{template:L,inject:["VRPaymentRefundService"],mixins:[B.getByName("notification")],props:{transactionData:{type:Object,required:!0},orderId:{type:String,required:!0}},data(){return{isLoading:!0,currency:this.transactionData.transactions[0].currency,refundAmount:0}},computed:{dateFilter(){return z.getByName("date")}},created(){this.createdComponent()},methods:{createdComponent(){this.isLoading=!1,this.currency=this.transactionData.transactions[0].currency,this.refundAmount||(this.refundAmount=this.$parent.$parent.itemRefundableAmount)},createPartialRefund(e){this.isLoading=!0,this.VRPaymentRefundService.createPartialRefund(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id,this.refundAmount,e).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.refundAction.successTitle"),message:this.$tc("vrpayment-order.refundAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${b.createId()}`)})}).catch(t=>{try{this.createNotificationError({title:t.response.data.errors[0].title,message:t.response.data.errors[0].detail,autoClose:!1})}catch{this.createNotificationError({title:t.title,message:t.message,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${b.createId()}`)})}})}},watch:{refundAmount(e){e!==null&&(this.refundAmount=Math.round(e*100)/100)}}});const G=`{% block vrpayment_order_action_refund_by_amount %} {% block vrpayment_order_action_refund_amount_by_amount %} {% endblock %} {% block vrpayment_order_action_refund_confirm_button_by_amount %} {% endblock %} {% endblock %}`,{Component:q,Mixin:U,Filter:H,Utils:v}=Shopware;q.register("vrpayment-order-action-refund-by-amount",{template:G,inject:["VRPaymentRefundService"],mixins:[U.getByName("notification")],props:{transactionData:{type:Object,required:!0},orderId:{type:String,required:!0}},data(){return{isLoading:!0,currency:this.transactionData.transactions[0].currency,refundAmount:0,refundableAmount:0}},computed:{dateFilter(){return H.getByName("date")}},created(){this.createdComponent()},methods:{createdComponent(){this.isLoading=!1,this.currency=this.transactionData.transactions[0].currency,this.refundAmount=Number(this.transactionData.transactions[0].amountIncludingTax),this.refundableAmount=Number(this.transactionData.transactions[0].amountIncludingTax)},refundByAmount(){this.isLoading=!0,this.VRPaymentRefundService.createRefundByAmount(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id,this.refundAmount).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.refundAction.successTitle"),message:this.$tc("vrpayment-order.refundAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${v.createId()}`)})}).catch(e=>{var n,r,o,s;try{var t=((s=(o=(r=(n=e==null?void 0:e.response)==null?void 0:n.data)==null?void 0:r.errors)==null?void 0:o[0])==null?void 0:s.title)??this.$tc("vrpayment-order.refundAction.refundCreateError.errorTitle"),a;switch(e.response.data){case"refundAmountZero":a=this.$tc("vrpayment-order.refundAction.refundCreateError.messageRefundAmountIsZero");break;case"refundExceedsAmount":a=this.$tc("vrpayment-order.refundAction.refundCreateError.messageRefundAmountExceedsAvailableBalance");break;default:a=e.response.data.errors[0].detail}this.createNotificationError({title:t,message:a,autoClose:!1})}catch{this.createNotificationError({title:e.title,message:e.message,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${v.createId()}`)})}})}}});const W=`{% block vrpayment_order_action_void %} {% block vrpayment_order_action_void_amount %} {# Review if this v-model:checked="isVoid" needs to change to checked #} {% endblock %} {% block vrpayment_order_action_void_confirm_button %} {% endblock %} {% endblock %}`,{Component:K,Mixin:Q,Filter:Y,Utils:_}=Shopware;K.register("vrpayment-order-action-void",{template:W,inject:["VRPaymentTransactionVoidService"],mixins:[Q.getByName("notification")],props:{transactionData:{type:Object,required:!0}},data(){return{isLoading:!0,isVoid:!1}},computed:{dateFilter(){return Y.getByName("date")},lineItemColumns(){return[{property:"uniqueId",label:this.$tc("vrpayment-order.refund.types.uniqueId"),rawData:!1,allowResize:!0,primary:!0,width:"auto"},{property:"name",label:this.$tc("vrpayment-order.refund.types.name"),rawData:!0,allowResize:!0,sortable:!0,width:"auto"},{property:"quantity",label:this.$tc("vrpayment-order.refund.types.quantity"),rawData:!0,allowResize:!0,width:"auto"},{property:"amountIncludingTax",label:this.$tc("vrpayment-order.refund.types.amountIncludingTax"),rawData:!0,allowResize:!0,inlineEdit:"string",width:"auto"},{property:"type",label:this.$tc("vrpayment-order.refund.types.type"),rawData:!0,allowResize:!0,sortable:!0,width:"auto"},{property:"taxAmount",label:this.$tc("vrpayment-order.refund.types.taxAmount"),rawData:!0,allowResize:!0,width:"auto"}]}},created(){this.createdComponent()},methods:{createdComponent(){this.isLoading=!1,this.currency=this.transactionData.transactions[0].currency,this.refundableAmount=this.transactionData.transactions[0].amountIncludingTax,this.refundAmount=this.transactionData.transactions[0].amountIncludingTax},voidPayment(){this.isVoid&&(this.isLoading=!0,this.VRPaymentTransactionVoidService.createTransactionVoid(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.voidAction.successTitle"),message:this.$tc("vrpayment-order.voidAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${_.createId()}`)})}).catch(e=>{try{this.createNotificationError({title:e.response.data.errors[0].title,message:e.response.data.errors[0].detail,autoClose:!1})}catch{this.createNotificationError({title:e.title,message:e.message,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${_.createId()}`)})}}))}}});const j=`{% block vrpayment_order_detail %}
    {% block vrpayment_order_transaction_history_card %} {% endblock %} {% block vrpayment_order_transaction_line_items_card %} {% endblock %} {% block vrpayment_order_transaction_refunds_card %} {% endblock %} {% block vrpayment_order_actions_modal_refund_partial %} {% endblock %} {% block vrpayment_order_actions_modal_refund %} {% endblock %} {% block vrpayment_order_actions_modal_refund_by_amount %} {% endblock %} {% block vrpayment_order_actions_modal_completion%} {% endblock %} {% block vrpayment_order_actions_modal_void %} {% endblock %}
    {% endblock %}`,{Component:Z,Mixin:J,Filter:X,Context:ee,Utils:u}=Shopware,I=Shopware.Data.Criteria;Z.register("vrpayment-order-detail",{template:j,inject:["VRPaymentTransactionService","VRPaymentRefundService","repositoryFactory"],mixins:[J.getByName("notification")],data(){return{transactionData:{transactions:[],refunds:[]},transaction:{},lineItems:[],refundableQuantity:0,itemRefundableQuantity:0,isLoading:!0,orderId:"",currency:"",modalType:"",refundAmount:0,refundableAmount:0,itemRefundedAmount:0,itemRefundedQuantity:0,itemRefundableAmount:0,currentLineItem:"",refundLineItemQuantity:[],refundLineItemAmount:[],selectedItems:[]}},metaInfo(){return{title:this.$tc("vrpayment-order.header")}},computed:{dateFilter(){return X.getByName("date")},relatedResourceColumns(){return[{property:"paymentMethodName",label:this.$tc("vrpayment-order.transactionHistory.types.payment_method"),rawData:!0},{property:"state",label:this.$tc("vrpayment-order.transactionHistory.types.state"),rawData:!0},{property:"currency",label:this.$tc("vrpayment-order.transactionHistory.types.currency"),rawData:!0},{property:"authorized_amount",label:this.$tc("vrpayment-order.transactionHistory.types.authorized_amount"),rawData:!0},{property:"id",label:this.$tc("vrpayment-order.transactionHistory.types.transaction"),rawData:!0},{property:"customerId",label:this.$tc("vrpayment-order.transactionHistory.types.customer"),rawData:!0}]},lineItemColumns(){return[{property:"id",rawData:!0,visible:!1,primary:!0},{property:"uniqueId",label:this.$tc("vrpayment-order.lineItem.types.uniqueId"),rawData:!0,visible:!1,primary:!0},{property:"name",label:this.$tc("vrpayment-order.lineItem.types.name"),rawData:!0},{property:"quantity",label:this.$tc("vrpayment-order.lineItem.types.quantity"),rawData:!0},{property:"amountIncludingTax",label:this.$tc("vrpayment-order.lineItem.types.amountIncludingTax"),rawData:!0},{property:"type",label:this.$tc("vrpayment-order.lineItem.types.type"),rawData:!0},{property:"taxAmount",label:this.$tc("vrpayment-order.lineItem.types.taxAmount"),rawData:!0},{property:"refundableQuantity",rawData:!0,visible:!1}]},refundColumns(){return[{property:"id",label:this.$tc("vrpayment-order.refund.types.id"),rawData:!0,visible:!0,primary:!0},{property:"amount",label:this.$tc("vrpayment-order.refund.types.amount"),rawData:!0},{property:"state",label:this.$tc("vrpayment-order.refund.types.state"),rawData:!0},{property:"createdOn",label:this.$tc("vrpayment-order.refund.types.createdOn"),rawData:!0}]}},watch:{$route(){this.resetDataAttributes(),this.createdComponent()}},created(){this.createdComponent()},methods:{createdComponent(){this.orderId=this.$route.params.id;const e=this.repositoryFactory.create("order"),t=new I(1,1);t.addAssociation("transactions"),t.getAssociation("transactions").addSorting(I.sort("createdAt","DESC")),e.get(this.orderId,ee.api,t).then(a=>{this.order=a,this.isLoading=!1;var n=0,r=0;const o=a.transactions[0].customFields.vrpayment_transaction_id;this.VRPaymentTransactionService.getTransactionData(a.salesChannelId,o).then(s=>{this.currency=s.transactions[0].currency,s.transactions[0].authorized_amount=u.format.currency(s.transactions[0].authorizationAmount,this.currency),s.refunds.forEach(i=>{r=parseFloat(parseFloat(r)+parseFloat(i.amount)),i.amount=u.format.currency(i.amount,this.currency),i.reductions.forEach(l=>{l.quantityReduction>0&&(this.refundLineItemQuantity[l.lineItemUniqueId]===void 0?this.refundLineItemQuantity[l.lineItemUniqueId]=l.quantityReduction:this.refundLineItemQuantity[l.lineItemUniqueId]+=l.quantityReduction),l.unitPriceReduction>0&&(this.refundLineItemAmount[l.lineItemUniqueId]===void 0?this.refundLineItemAmount[l.lineItemUniqueId]=l.unitPriceReduction:this.refundLineItemAmount[l.lineItemUniqueId]+=l.unitPriceReduction)})}),s.transactions[0].lineItems.forEach(i=>{i.id||(i.id=i.uniqueId),i.itemRefundedAmount=parseFloat(this.refundLineItemAmount[i.uniqueId]||0)*parseInt(i.quantity),i.amountIncludingTax=parseFloat(i.amountIncludingTax)||0,i.itemRefundedQuantity=parseInt(this.refundLineItemQuantity[i.uniqueId])||0,i.refundableAmount=parseFloat((i.amountIncludingTax-i.itemRefundedAmount).toFixed(2)),i.amountIncludingTax=u.format.currency(i.amountIncludingTax,this.currency),i.taxAmount=u.format.currency(i.taxAmount,this.currency),n=parseFloat(parseFloat(n)+parseFloat(i.unitPriceIncludingTax*i.quantity)),i.refundableQuantity=parseInt(parseInt(i.quantity)-parseInt(this.refundLineItemQuantity[i.uniqueId]||0))}),this.lineItems=s.transactions[0].lineItems,this.transactionData=s,this.transaction=this.transactionData.transactions[0],this.refundAmount=Number(this.transactionData.transactions[0].amountIncludingTax),this.refundableAmount=parseFloat(parseFloat(n)-parseFloat(r))}).catch(s=>{try{this.createNotificationError({title:this.$tc("vrpayment-order.paymentDetails.error.title"),message:s.message,autoClose:!1})}catch{this.createNotificationError({title:this.$tc("vrpayment-order.paymentDetails.error.title"),message:s.message,autoClose:!1})}finally{this.isLoading=!1}})})},downloadPackingSlip(){window.open(this.VRPaymentTransactionService.getPackingSlip(this.transaction.metaData.salesChannelId,this.transaction.id),"_blank")},downloadInvoice(){window.open(this.VRPaymentTransactionService.getInvoiceDocument(this.transaction.metaData.salesChannelId,this.transaction.id),"_blank")},resetDataAttributes(){this.transactionData={transactions:[],refunds:[]},this.lineItems=[],this.refundLineItemQuantity=[],this.refundLineItemAmount=[],this.isLoading=!0},spawnModal(e,t,a,n){this.modalType=e,this.currentLineItem=t,this.itemRefundableQuantity=a,this.itemRefundableAmount=isNaN(n)?0:Math.round(n*100)/100},closeModal(){this.modalType=""},lineItemRefund(e){this.isLoading=!0,this.VRPaymentRefundService.createRefund(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id,0,e).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.refundAction.successTitle"),message:this.$tc("vrpayment-order.refundAction.successMessage")}),this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${u.createId()}`)})}).catch(t=>{try{this.createNotificationError({title:t.response.data.errors[0].title,message:t.response.data.errors[0].detail,autoClose:!1})}catch{this.createNotificationError({title:t.title,message:t.response.data,autoClose:!1})}finally{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${u.createId()}`)})}})},isSelectable(e){return e.refundableQuantity>0&&e.refundableAmount>0&&e.itemRefundedAmount==0&&e.itemRefundedQuantity==0},onSelectionChanged(e){this.selectedItems=Object.values(e)},onPerformBulkAction(){this.selectedItems.length&&(this.isLoading=!0,this.$nextTick(()=>{const e=this.selectedItems.map(t=>this.lineItemRefundBulk(t.uniqueId));Promise.all(e).then(()=>{this.isLoading=!1,this.$emit("modal-close"),this.$nextTick(()=>{this.$router.replace(`${this.$route.path}?hash=${u.createId()}`)})}).catch(t=>{this.createNotificationError({title:"Error",message:"Something went wrong with the refunds",autoClose:!1}),this.isLoading=!1})}))},lineItemRefundBulk(e){return new Promise((t,a)=>{this.VRPaymentRefundService.createRefund(this.transactionData.transactions[0].metaData.salesChannelId,this.transactionData.transactions[0].id,0,e).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-order.refundAction.successTitle"),message:this.$tc("vrpayment-order.refundAction.successMessage")}),t()}).catch(n=>{try{this.createNotificationError({title:n.response.data.errors[0].title,message:n.response.data.errors[0].detail,autoClose:!1})}catch{this.createNotificationError({title:n.title,message:n.response.data,autoClose:!1})}finally{a()}})})}}});const te={"vrpayment-order":{buttons:{label:{completion:"Abschluss","download-invoice":"Rechnung herunterladen","download-packing-slip":"Packzettel herunterladen",refund:"Eine neue Rückerstattung erstellen",void:"Genehmigung annullieren","refund-whole-line-item":"Gesamte Werbebuchung erstatten","refund-line-item-by-quantity":"Rückerstattung nach Menge","refund-line-item-selected":"Rückerstattung auswählen","refund-line-item-parial":"Teilweise Rückerstattung"}},captureAction:{button:{text:"Zahlung erfassen"},currentAmount:"Betrag",isFinal:"Dies ist die endgültige Verbuchung",maxAmount:"Maximaler Betrag",successMessage:"Ihre Verbuchung war erfolgreich",successTitle:"Erfolg"},general:{title:"Bestellungen"},header:"VRPayment Payment",lineItem:{cardTitle:"Einzelposten",types:{amountIncludingTax:"Betrag",name:"Name",quantity:"Anzahl",taxAmount:"Steuern",type:"Typ",uniqueId:"Eindeutige ID"}},modal:{title:{capture:"Erfassen",refund:"Neue Gutschrift",void:"Autorisierung aufheben"}},paymentDetails:{cardTitle:"Zahlung",error:{title:"Fehler beim Abrufen von Zahlungsdetails von VRPayment"}},refund:{cardTitle:"Gutschriften",refundAmount:{label:"Gutschriftsbetrag"},refundQuantity:{label:"Refund Menge"},types:{amount:"Betrag",createdOn:"Erstellt am",id:"ID",state:"Staat"}},refundAction:{confirmButton:{text:"Ausführen"},refundAmount:{label:"Betrag",placeholder:"Einen Betrag eingeben"},successMessage:"Ihre Rückerstattung war erfolgreich",successTitle:"Erfolg",maxAvailableItemsToRefund:"Maximal Verfügbare Artikel zum Erstatten",maxAvailableAmountToRefund:"Maximal verfügbarer Erstattungsbetrag",refundCreateError:{errorTitle:"Fehler beim Erstellen der Rückerstattung.",messageRefundAmountExceedsAvailableBalance:"Der Rückerstattungsbetrag übersteigt das verfügbare Guthaben.",messageRefundAmountIsZero:"Der Rückerstattungsbetrag muss größer als 0 sein.",messageRefundQuantityExceedsAvailableBalance:"Rückerstattung nach Menge überschreitet die maximal verfügbare Anzahl an Artikeln zur Rückerstattung.",messageRefundQuantityIsZero:"Rückerstattung nach Menge muss größer als 0 sein."}},transactionHistory:{cardTitle:"Einzelheiten",types:{authorized_amount:"Autorisierter Betrag",currency:"Währung",customer:"Kunde",payment_method:"Zahlungsweise",state:"Staat",transaction:"Transaktion"},customerId:"Customer ID",customerName:"Customer Name",creditCardHolder:"Kreditkarteninhaber",paymentMethod:"Zahlungsart",paymentMethodBrand:"Marke der Zahlungsmethode",PseudoCreditCardNumber:"Pseudo-Kreditkartennummer",CardExpire:"Karte verfällt"},voidAction:{confirm:{button:{cancel:"Nein",confirm:"Autorisierung aufheben"},message:"Wollen Sie diese Zahlung wirklich stornieren?"},successMessage:"Die Zahlung wurde erfolgreich annulliert",successTitle:"Erfolg"}}},ae={"vrpayment-order":{buttons:{label:{completion:"Complete","download-invoice":"Download Invoice","download-packing-slip":"Download Packing Slip",refund:"Create a new refund",void:"Cancel authorization","refund-whole-line-item":"Refund whole line item","refund-line-item-by-quantity":"Refund by quantity","refund-line-item-selected":"Refund selected","refund-line-item-parial":"Partial refund"}},captureAction:{button:{text:"Capture payment"},currentAmount:"Amount",isFinal:"This is final capture",maxAmount:"Maximum amount",successMessage:"Your capture was successful.",successTitle:"Success"},general:{title:"Orders"},header:"VRPayment Payment",lineItem:{cardTitle:"Line Items",types:{amountIncludingTax:"Amount",name:"Name",quantity:"Quantity",taxAmount:"Taxes",type:"Type",uniqueId:"Unique ID"}},modal:{title:{capture:"Capture",refund:"New refund",void:"Cancel authorization"}},paymentDetails:{cardTitle:"Payment",error:{title:"Error fetching payment details from VRPayment"}},refund:{cardTitle:"Refunds",refundAmount:{label:"Refund Amount"},refundQuantity:{label:"Refund Quantity"},types:{amount:"Amount",createdOn:"Created On",id:"ID",state:"State"}},refundAction:{confirmButton:{text:"Execute"},refundAmount:{label:"Amount",placeholder:"Enter a amount"},successMessage:"Your refund was successful.",successTitle:"Success",maxAvailableItemsToRefund:"Maximum available items to refund",maxAvailableAmountToRefund:"Maximum available amount to refund",refundCreateError:{errorTitle:"Error while creating the refund.",messageRefundAmountExceedsAvailableBalance:"Refund amount exceeds available balance.",messageRefundAmountIsZero:"Refund amount must be greater than 0.",messageRefundQuantityExceedsAvailableBalance:"Refund by quantity exceeds maximum available items to refund.",messageRefundQuantityIsZero:"Refund by quantity must be greater than 0."}},transactionHistory:{cardTitle:"Details",types:{authorized_amount:"Authorized Amount",currency:"Currency",customer:"Customer",payment_method:"Payment Method",state:"State",transaction:"Transaction"},customerId:"Customer ID",customerName:"Customer Name",creditCardHolder:"Credit Card Holder",paymentMethod:"Payment Method",paymentMethodBrand:"Payment Method Brand",PseudoCreditCardNumber:"Pseudo Credit Card Number",CardExpire:"Card Expire"},voidAction:{confirm:{button:{cancel:"No",confirm:"Cancel authorization"},message:"Do you really want to cancel this payment?"},successMessage:"The payment was successfully voided.",successTitle:"Success"}}},ne={"vrpayment-order":{buttons:{label:{completion:"Terminée","download-invoice":"Télécharger la facture","download-packing-slip":"Télécharger le bordereau d'expédition",refund:"Créer un nouveau remboursement",void:"Annulez l'autorisation","refund-whole-line-item":"Remboursement de la ligne entière","refund-line-item-by-quantity":"Remboursement par quantité","refund-line-item-selected":"Rembourser sélectionnés","refund-line-item-parial":"Remboursement partiel"}},captureAction:{button:{text:"Capture du paiement"},currentAmount:"Montant",isFinal:"C'est la capture finale",maxAmount:"Montant maximal",successMessage:"Votre capture a été réussie.",successTitle:"Succès"},general:{title:"Commandes"},header:"VRPayment Paiement",lineItem:{cardTitle:"Articles de ligne",types:{amountIncludingTax:"Montant",name:"Nom",quantity:"Quantité",taxAmount:"Taxes",type:"Type",uniqueId:"ID unique"}},modal:{title:{capture:"Capture",refund:"Nouveau remboursement",void:"Annulez l'autorisation"}},paymentDetails:{cardTitle:"Paiement",error:{title:"Erreur dans la récupération des détails du paiement à partir de VRPayment"}},refund:{cardTitle:"Remboursements",refundAmount:{label:"Montant du remboursement"},refundQuantity:{label:"Quantité à rembourser"},types:{amount:"Montant",createdOn:"Créé le",id:"ID",state:"État"}},refundAction:{confirmButton:{text:"Exécutez"},refundAmount:{label:"Montant",placeholder:"Entrez un montant"},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",refundCreateError:{errorTitle:"Erreur lors de la création du remboursement.",messageRefundAmountExceedsAvailableBalance:"Le montant du remboursement dépasse le solde disponible.",messageRefundAmountIsZero:"Le montant du remboursement doit être supérieur à 0.",messageRefundQuantityExceedsAvailableBalance:"Le remboursement par quantité dépasse le nombre maximal d’articles remboursables.",messageRefundQuantityIsZero:"Le remboursement par quantité doit être supérieur à 0."}},transactionHistory:{cardTitle:"Détails",types:{authorized_amount:"Montant autorisé",currency:"Monnaie",customer:"Client",payment_method:"Mode de paiement",state:"État",transaction:"Transaction"},customerId:"Customer ID",customerName:"Customer Name",creditCardHolder:"Titulaire de la carte de crédit",paymentMethod:"Mode de paiement",paymentMethodBrand:"Marque du mode de paiement",PseudoCreditCardNumber:"Pseudo numéro de carte de crédit",CardExpire:"La carte expire"},voidAction:{confirm:{button:{cancel:"Non",confirm:"Annulez l'autorisation"},message:"Voulez-vous vraiment annuler ce paiement?"},successMessage:"Le paiement a été annulé avec succès.",successTitle:"Succès"}}},ie={"vrpayment-order":{buttons:{label:{completion:"Completato","download-invoice":"Scarica fattura","download-packing-slip":"Scarica distinta di imballaggio",refund:"Crea un nuovo rimborso",void:"Annulla autorizzazione","refund-whole-line-item":"Rimborso intera riga","refund-line-item-by-quantity":"Rimborso per quantità","refund-line-item-selected":"Rimborso selezionati","refund-line-item-parial":"Rimborso parziale"}},captureAction:{button:{text:"Cattura pagamento"},currentAmount:"Importo",isFinal:"Questa è la cattura finale",maxAmount:"Importo massimo",successMessage:"La tua cattura ha avuto successo.",successTitle:"Successo"},general:{title:"Ordini"},header:"Pagamento VRPayment",lineItem:{cardTitle:"Articoli di linea",types:{amountIncludingTax:"Importo",name:"Nome",quantity:"Quantità",taxAmount:"Tasse",type:"Tipo",uniqueId:"ID unico"}},modal:{title:{capture:"Cattura",refund:"Nuovo rimborso",void:"Annulla autorizzazione"}},paymentDetails:{cardTitle:"Pagamento",error:{title:"Errore nel recupero dei dettagli del pagamento da VRPayment"}},refund:{cardTitle:"Rimborsi",refundAmount:{label:"Importo del rimborso"},refundQuantity:{label:"Quantità di rimborso"},types:{amount:"Importo",createdOn:"Creato il",id:"ID",state:"Stato"}},refundAction:{confirmButton:{text:"Esegui"},refundAmount:{label:"Importo",placeholder:"Inserisci un importo"},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",refundCreateError:{errorTitle:"Errore durante la creazione del rimborso.",messageRefundAmountExceedsAvailableBalance:"LL'importo del rimborso supera il saldo disponibile.",messageRefundAmountIsZero:"L'importo del rimborso deve essere superiore a 0.",messageRefundQuantityExceedsAvailableBalance:"Il rimborso per quantità supera il numero massimo di articoli rimborsabili.",messageRefundQuantityIsZero:"Il rimborso per quantità deve essere maggiore di 0."}},transactionHistory:{cardTitle:"Dettagli",types:{authorized_amount:"Importo autorizzato",currency:"Valuta",customer:"Cliente",payment_method:"Metodo di pagamento",state:"Stato",transaction:"Transazione"},customerId:"Customer ID",customerName:"Customer Name",creditCardHolder:"Proprietario della carta di credito",paymentMethod:"Metodo di pagamento",paymentMethodBrand:"Metodo di pagamento Marca",PseudoCreditCardNumber:"Numero di carta di credito pseudo",CardExpire:"La carta scade"},voidAction:{confirm:{button:{cancel:"No",confirm:"Annulla autorizzazione"},message:"Vuoi davvero annullare questo pagamento?"},successMessage:"Il pagamento è stato annullato con successo.",successTitle:"Successo"}}},{Module:re}=Shopware;re.register("vrpayment-order",{type:"plugin",name:"VRPayment",title:"vrpayment-order.general.title",description:"vrpayment-order.general.descriptionTextModule",version:"1.0.1",targetVersion:"1.0.1",color:"#2b52ff",snippets:{"de-DE":te,"en-GB":ae,"fr-FR":ne,"it-IT":ie},routeMiddleware(e,t){t.name==="sw.order.detail"&&t.children.push({component:"vrpayment-order-detail",name:"vrpayment.order.detail",isChildren:!0,path:"/sw/order/vrpayment/detail/:id"}),e(t)}});Shopware.Service("privileges").addPrivilegeMappingEntry({category:"permissions",parent:"vrpayment",key:"vrpayment",roles:{viewer:{privileges:["sales_channel:read","sales_channel_payment_method:read","system_config:read"],dependencies:[]},editor:{privileges:["sales_channel:update","sales_channel_payment_method:create","sales_channel_payment_method:update","system_config:update","system_config:create","system_config:delete"],dependencies:["vrpayment.viewer"]}}});Shopware.Service("privileges").addPrivilegeMappingEntry({category:"permissions",parent:null,key:"sales_channel",roles:{viewer:{privileges:["sales_channel_payment_method:read"]},editor:{privileges:["payment_method:update"]},creator:{privileges:["payment_method:create","shipping_method:create","delivery_time:create"]},deleter:{privileges:["payment_method:delete"]}}});const se=`{% block vrpayment_settings %} {% block vrpayment_settings_header %} {% endblock %} {% block vrpayment_settings_actions %} {% endblock %} {% block vrpayment_settings_content %} {% endblock %} {% endblock %}`,c="VRPaymentPayment.config",oe=c+".applicationKey",le=c+".emailEnabled",ce=c+".integration",de=c+".lineItemConsistencyEnabled",me=c+".spaceId",ue=c+".spaceViewId",pe=c+".storefrontInvoiceDownloadEnabled",he=c+".userId",ge=c+".storefrontWebhooksUpdateEnabled",ye=c+".storefrontPaymentsUpdateEnabled",m={CONFIG_DOMAIN:c,CONFIG_APPLICATION_KEY:oe,CONFIG_EMAIL_ENABLED:le,CONFIG_INTEGRATION:ce,CONFIG_LINE_ITEM_CONSISTENCY_ENABLED:de,CONFIG_SPACE_ID:me,CONFIG_SPACE_VIEW_ID:ue,CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED:pe,CONFIG_USER_ID:he,CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED:ge,CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED:ye},{Component:fe,Mixin:C}=Shopware;fe.register("vrpayment-settings",{template:se,inject:["acl","VRPaymentConfigurationService"],mixins:[C.getByName("notification"),C.getByName("sw-inline-snippet")],data(){return{config:{},isLoading:!1,isTesting:!1,isSaveSuccessful:!1,applicationKeyFilled:!1,applicationKeyErrorState:!1,spaceIdFilled:!1,spaceIdErrorState:!1,userIdFilled:!1,userIdErrorState:!1,isSetDefaultPaymentSuccessful:!1,isSettingDefaultPaymentMethods:!1,configIntegrationDefaultValue:"payment_page",configEmailEnabledDefaultValue:!0,configLineItemConsistencyEnabledDefaultValue:!0,configStorefrontInvoiceDownloadEnabledEnabledDefaultValue:!0,configStorefrontWebhooksUpdateEnabledDefaultValue:!0,configStorefrontPaymentsUpdateEnabledDefaultValue:!0,...m}},props:{isLoading:{type:Boolean,required:!0}},metaInfo(){return{title:this.$createTitle()}},watch:{config:{handler(e){const t=(this.$refs.configComponent.allConfigs||{}).null||{};this.$refs.configComponent.selectedSalesChannelId===null?(this.applicationKeyFilled=!!this.config[this.CONFIG_APPLICATION_KEY],this.spaceIdFilled=!!this.config[this.CONFIG_SPACE_ID],this.userIdFilled=!!this.config[this.CONFIG_USER_ID],this.CONFIG_INTEGRATION in this.config||(this.config[this.CONFIG_INTEGRATION]=this.configIntegrationDefaultValue),this.CONFIG_EMAIL_ENABLED in this.config||(this.config[this.CONFIG_EMAIL_ENABLED]=this.configEmailEnabledDefaultValue),this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config||(this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED]=this.configLineItemConsistencyEnabledDefaultValue),this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config||(this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED]=this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue),this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config||(this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED]=this.configStorefrontWebhooksUpdateEnabledDefaultValue),this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config||(this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED]=this.configStorefrontPaymentsUpdateEnabledDefaultValue)):(this.applicationKeyFilled=!!this.config[this.CONFIG_APPLICATION_KEY]||!!t[this.CONFIG_APPLICATION_KEY],this.spaceIdFilled=!!this.config[this.CONFIG_SPACE_ID]||!!t[this.CONFIG_SPACE_ID],this.userIdFilled=!!this.config[this.CONFIG_USER_ID]||!!t[this.CONFIG_USER_ID],(!(this.CONFIG_INTEGRATION in this.config)||!(this.CONFIG_INTEGRATION in t))&&(this.config[this.CONFIG_INTEGRATION]=this.configIntegrationDefaultValue),(!(this.CONFIG_EMAIL_ENABLED in this.config)||!(this.CONFIG_EMAIL_ENABLED in t))&&(this.config[this.CONFIG_EMAIL_ENABLED]=this.configEmailEnabledDefaultValue),(!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config)||!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in t))&&(this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED]=this.configLineItemConsistencyEnabledDefaultValue),(!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config)||!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in t))&&(this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED]=this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue),(!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config)||!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in t))&&(this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED]=this.configStorefrontWebhooksUpdateEnabledDefaultValue),(!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config)||!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in t))&&(this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED]=this.configStorefrontPaymentsUpdateEnabledDefaultValue)),this.$emit("salesChannelChanged"),this.$emit("update:value",e)},deep:!0}},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"},getInheritValue(e){return this.selectedSalesChannelId==null?this.actualConfigData[e]:this.allConfigs.null[e]},onSave(){if(!(this.spaceIdFilled&&this.userIdFilled&&this.applicationKeyFilled)){this.setErrorStates();return}this.save()},save(){this.isLoading=!0,this.$refs.configComponent.save().then(e=>{e&&(this.config=e),this.registerWebHooks(),this.synchronizePaymentMethodConfiguration(),this.installOrderDeliveryStates()}).catch(e=>{console.error("Error:",e),this.isLoading=!1})},registerWebHooks(){if(this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED]===!1)return!1;this.VRPaymentConfigurationService.registerWebHooks(this.$refs.configComponent.selectedSalesChannelId).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-settings.settingForm.titleSuccess"),message:this.$tc("vrpayment-settings.settingForm.messageWebHookUpdated")})}).catch(e=>{this.createNotificationError({title:this.$tc("vrpayment-settings.settingForm.titleError"),message:this.$tc("vrpayment-settings.settingForm.messageWebHookError")}),this.isLoading=!1,console.error("Error:",e)})},synchronizePaymentMethodConfiguration(){if(this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED]===!1)return!1;this.VRPaymentConfigurationService.synchronizePaymentMethodConfiguration(this.$refs.configComponent.selectedSalesChannelId).then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-settings.settingForm.titleSuccess"),message:this.$tc("vrpayment-settings.settingForm.messagePaymentMethodConfigurationUpdated")}),this.isLoading=!1}).catch(e=>{this.createNotificationError({title:this.$tc("vrpayment-settings.settingForm.titleError"),message:this.$tc("vrpayment-settings.settingForm.messagePaymentMethodConfigurationError")}),this.isLoading=!1,console.error("Error:",e)})},installOrderDeliveryStates(){this.VRPaymentConfigurationService.installOrderDeliveryStates().then(()=>{this.createNotificationSuccess({title:this.$tc("vrpayment-settings.settingForm.titleSuccess"),message:this.$tc("vrpayment-settings.settingForm.messageOrderDeliveryStateUpdated")}),this.isLoading=!1}).catch(()=>{this.createNotificationError({title:this.$tc("vrpayment-settings.settingForm.titleError"),message:this.$tc("vrpayment-settings.settingForm.messageOrderDeliveryStateError")}),this.isLoading=!1})},onSetPaymentMethodDefault(){this.isSettingDefaultPaymentMethods=!0,this.VRPaymentConfigurationService.setVRPaymentAsSalesChannelPaymentDefault(this.$refs.configComponent.selectedSalesChannelId).then(()=>{this.isSettingDefaultPaymentMethods=!1,this.isSetDefaultPaymentSuccessful=!0,this.createNotificationSuccess({title:this.$tc("vrpayment-settings.settingForm.titleSuccess"),message:this.$tc("vrpayment-settings.salesChannelCard.messageDefaultPaymentUpdated")})})},setErrorStates(){const e={code:1,detail:this.$tc("vrpayment-settings.messageNotBlank")};this.spaceIdFilled||(this.spaceIdErrorState=e),this.userIdFilled||(this.userIdErrorState=e),this.applicationKeyFilled||(this.applicationKeyErrorState=e)},onCheckApiConnection(e){const{spaceId:t,userId:a,applicationKey:n}=e;this.isTesting=!0,this.VRPaymentConfigurationService.checkApiConnection(t,a,n).then(r=>{r.result===200?this.createNotificationSuccess({title:this.$tc("vrpayment-settings.settingForm.credentials.alert.title"),message:this.$tc("vrpayment-settings.settingForm.credentials.alert.successMessage")}):this.createNotificationError({title:this.$tc("vrpayment-settings.settingForm.credentials.alert.title"),message:this.$tc("vrpayment-settings.settingForm.credentials.alert.errorMessage")}),this.isTesting=!1}).catch(()=>{this.createNotificationError({title:this.$tc("vrpayment-settings.settingForm.credentials.alert.title"),message:this.$tc("vrpayment-settings.settingForm.credentials.alert.errorMessage")}),this.isTesting=!1})}}});const be=`{% block vrpayment_settings_content_card_channel_config_credentials %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}
    {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_id %} {% endblock %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_user_id %} {% endblock %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_application_key %} {% endblock %}
    {% endblock %} {% verbatim %} {{ $tc('vrpayment-settings.settingForm.credentials.button.label') }} {% endverbatim %}
    {% endblock %}
    {% endblock %}`,{Component:ve,Mixin:_e}=Shopware;ve.register("sw-vrpayment-credentials",{template:be,name:"VRPaymentCredentials",inject:["acl"],mixins:[_e.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{type:[String,null],required:!1,default:null},spaceIdFilled:{type:Boolean,required:!0},spaceIdErrorState:{required:!0},userIdFilled:{type:Boolean,required:!0},userIdErrorState:{required:!0},applicationKeyFilled:{type:Boolean,required:!0},applicationKeyErrorState:{required:!0},isLoading:{type:Boolean,required:!0},isTesting:{type:Boolean,required:!1}},data(){return{...m}},computed:{currentConfig(){return this.selectedSalesChannelId&&this.allConfigs[this.selectedSalesChannelId]?this.allConfigs[this.selectedSalesChannelId]:this.allConfigs.null||{}}},methods:{checkTextFieldInheritance(e){return!e||e.length<=0},checkNumberFieldInheritance(e){return e==null||e===""},checkBoolFieldInheritance(e){return typeof e!="boolean"},emitCheckApiConnectionEvent(){const e={spaceId:this.currentConfig[m.CONFIG_SPACE_ID],userId:this.currentConfig[m.CONFIG_USER_ID],applicationKey:this.currentConfig[m.CONFIG_APPLICATION_KEY]};this.$emit("check-api-connection-event",e)},getInheritedValue(e){var t;return((t=this.allConfigs.null)==null?void 0:t[e])??null}}});const Ie=`{% block vrpayment_settings_content_card_channel_config_options %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}
    {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_view_id %} {% endblock %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_integration %} {% endblock %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_line_item_consistency_enabled %} {% endblock %} {% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_email_enabled %} {% endblock %}
    {% endblock %}
    {% endblock %}
    {% endblock %}`,{Component:Ce,Mixin:Ee}=Shopware;Ce.register("sw-vrpayment-options",{template:Ie,name:"VRPaymentOptions",mixins:[Ee.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{required:!0},isLoading:{type:Boolean,required:!0}},data(){return{...m}},computed:{integrationOptions(){return[{id:"payment_page",name:this.$tc("vrpayment-settings.settingForm.options.integration.options.payment_page")},{id:"iframe",name:this.$tc("vrpayment-settings.settingForm.options.integration.options.iframe")}]}},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 we='{% block vrpayment_settings_icon %} {% endblock %}',{Component:Se}=Shopware;Se.register("sw-vrpayment-settings-icon",{template:we});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:Re}=Shopware;Ne.register("sw-vrpayment-advanced-options",{template:De,name:"VRPaymentAdvancedOptions",inject:["acl"],mixins:[Re.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 ke={"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"}}},$e={"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":ke,"en-GB":$e,"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 w=Shopware.Classes.ApiService;class Be extends w{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=>w.handleResponse(o))}}const S=Shopware.Classes.ApiService;class ze extends S{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=>S.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-Cp2eQSV_.js.map diff --git a/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js.map b/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js.map new file mode 100644 index 0000000..64dc811 --- /dev/null +++ b/src/Resources/public/administration/assets/v-r-payment-payment-Cp2eQSV_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"v-r-payment-payment-Cp2eQSV_.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{% 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{% 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{% 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\tvar errorTitle = errorResponse?.response?.data?.errors?.[0]?.title ?? this.$tc('vrpayment-order.refundAction.refundCreateError.errorTitle')\n\t\t\t\t\tvar errorMessage;\n\t\t\t\t\tswitch(errorResponse.response.data) {\n\t\t\t\t\t\tcase 'refundQuantityZero':\n\t\t\t\t\t\t\terrorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundQuantityIsZero');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'refundExceedsQuantity':\n\t\t\t\t\t\t\terrorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundQuantityExceedsAvailableBalance');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\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_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{% 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{% 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 = errorResponse?.response?.data?.errors?.[0]?.title ?? this.$tc('vrpayment-order.refundAction.refundCreateError.errorTitle')\n\t\t\t\t\tvar errorMessage;\n\t\t\t\t\tswitch(errorResponse.response.data) {\n\t\t\t\t\t\tcase 'refundAmountZero':\n\t\t\t\t\t\t\terrorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundAmountIsZero');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'refundExceedsAmount':\n\t\t\t\t\t\t\terrorMessage = this.$tc('vrpayment-order.refundAction.refundCreateError.messageRefundAmountExceedsAvailableBalance');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\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{% 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\n\t\t{% block vrpayment_order_transaction_history_card %}\n\t\t\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\t\t{% endblock %}\n\t\t{% block vrpayment_order_transaction_refunds_card %}\n\t\t 0\">\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 {% block vrpayment_settings_header %}\n \n {% endblock %}\n\n {% block vrpayment_settings_actions %}\n \n {% endblock %}\n\n {% block vrpayment_settings_content %}\n \n {% 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\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\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\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,\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 type: [String, null],\n required: false,\n default: null\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 computed: {\n currentConfig() {\n if (this.selectedSalesChannelId && this.allConfigs[this.selectedSalesChannelId]) {\n return this.allConfigs[this.selectedSalesChannelId];\n }\n return this.allConfigs['null'] || {};\n }\n },\n\n methods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t return !value || value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t return value == null || value === '';\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t return typeof value !== 'boolean';\n\t\t},\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.currentConfig[constants.CONFIG_SPACE_ID],\n userId: this.currentConfig[constants.CONFIG_USER_ID],\n applicationKey: this.currentConfig[constants.CONFIG_APPLICATION_KEY]\n };\n\n this.$emit('check-api-connection-event', apiConnectionParams);\n },\n\n getInheritedValue(key) {\n return this.allConfigs['null']?.[key] ?? null;\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\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\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\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\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\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\n\n\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","_a","_b","_c","_d","errorTitle","errorMessage","template$9","itemUniqueId","newValue","template$8","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":"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"} \ 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 new file mode 100644 index 0000000..f68a9a8 --- /dev/null +++ b/src/Resources/public/administration/assets/v-r-payment-payment-D4AH6HY2.css @@ -0,0 +1 @@ +.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}