diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e69579..ab92a0f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# 7.0.0
+- Compatibility with Shopware 6.7.0
+
+# 6.1.14
+- Disable Recreate Cart for Headless Storefront Order
+- Added the correct Exception Type to the finalize method
+
# 6.1.13
- Updated English documentation
- Added French, German and Italian documentation
diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md
index 7601b00..b984dfe 100644
--- a/CHANGELOG_de-DE.md
+++ b/CHANGELOG_de-DE.md
@@ -1,3 +1,10 @@
+# 7.0.0
+- Kompatibilität mit Shopware 6.7.0
+
+# 6.1.14
+– Warenkorb neu erstellen für Headless Storefront Order deaktivieren
+– Der korrekte Ausnahmetyp wurde zur Finalisierungsmethode hinzugefügt
+
# 6.1.13
– Englische Dokumentation aktualisiert
– Französische, deutsche und italienische Dokumentation hinzugefügt
diff --git a/README.md b/README.md
index cebd85d..697db8f 100644
--- a/README.md
+++ b/README.md
@@ -3,21 +3,20 @@
VR Payment Integration for Shopware 6
=============================
-## **Overview**
-The VR Payment Payment Plugin integrates modern payment processing into Shopware 6, offering features like iFrame-based payments, refunds, captures, and PCI compliance. It supports seamless integration with the [VR Payment Portal](https://gateway.vr-payment.de/) for managing transactions and payment methods.
+The VR Payment plugin wraps around the VR Payment API. This library facilitates your interaction with various services such as transactions.
+Please note that this plugin is for versions 6.5, 6.6 or 6.7. For the 6.4 plugin please visit [our Shopware 6.4 plugin](https://github.com/vr-payment/shopware-6-4).
## Requirements
-- **Shopware Version:** 6.5.x or 6.6.x (see [compatibility table](#compatibility)).
-- **PHP:** Minimum version as required by your Shopware installation (e.g., 7.4+).
-- **VR Payment Account:** Obtain `Space ID`, `User ID`, and `API Key` from the [VR Payment Dashboard](https://gateway.vr-payment.de/).
+- Shopware 6.7.x, 6.6.x or 6.5.x. See table below.
+- PHP minimum version supported by the each shop version.
## Documentation
-- For English documentation click [here](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/6.1.14/docs/en/documentation.html)
-- Für die deutsche Dokumentation klicken Sie [hier](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/6.1.14/docs/de/documentation.html)
-- Pour la documentation Française, cliquez [ici](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/6.1.14/docs/fr/documentation.html)
-- Per la documentazione in tedesco, clicca [qui](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/6.1.14/docs/it/documentation.html)
+- For English documentation click [here](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.0.0/docs/en/documentation.html)
+- Für die deutsche Dokumentation klicken Sie [hier](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.0.0/docs/de/documentation.html)
+- Pour la documentation Française, cliquez [ici](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.0.0/docs/fr/documentation.html)
+- Per la documentazione in tedesco, clicca [qui](https://plugin-documentation.vr-payment.de/vr-payment/shopware-6/7.0.0/docs/it/documentation.html)
## Installation
@@ -67,7 +66,8 @@ Configure supported methods (e.g., credit cards, Apple Pay) via the [VR Payment
___________________________________________________________________________________
| Shopware 6 version | Plugin major version | Supported until |
|-------------------------------|------------------------|------------------------|
-| Shopware 6.6.x | 6.x | Further notice |
+| Shopware 6.7.x | 7.x | Further notice |
+| Shopware 6.6.x | 6.x | December 2025 |
| Shopware 6.5.x | 5.x | October 2024 |
-----------------------------------------------------------------------------------
diff --git a/composer.json b/composer.json
index 74efe27..0db25e7 100644
--- a/composer.json
+++ b/composer.json
@@ -53,11 +53,11 @@
"ext-json": "*",
"ext-mbstring": "*",
"php": ">=8.2",
- "shopware/core": "~6.6.0",
- "shopware/administration": "~6.6.0",
- "shopware/storefront":"~6.6.0",
+ "shopware/core": "~6.7.0",
+ "shopware/administration": "~6.7.0",
+ "shopware/storefront":"~6.7.0",
"vrpayment/sdk": "^4.0.0"
},
"type": "shopware-platform-plugin",
- "version": "6.1.14"
+ "version": "7.0.0"
}
diff --git a/docs/de/documentation.html b/docs/de/documentation.html
index ffd25d0..ee8230f 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 2bc5fb2..44f3ddb 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 b52ef49..5daf7d1 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 f605626..0101f44 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 508f807..60ec19b 100644
--- a/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php
+++ b/src/Core/Api/PaymentMethodConfiguration/Service/PaymentMethodConfigurationService.php
@@ -499,6 +499,7 @@ class PaymentMethodConfigurationService {
'afterOrderEnabled' => true,
'active' => true,
'translations' => $this->getPaymentMethodConfigurationTranslation($paymentMethodConfiguration, $context),
+ 'technicalName' => $paymentMethodConfiguration->getName(),
];
$data['mediaId'] = $this->upsertMedia($id, $paymentMethodConfiguration, $context);
diff --git a/src/Core/Api/Transaction/Service/TransactionService.php b/src/Core/Api/Transaction/Service/TransactionService.php
index 64f4754..20851c0 100644
--- a/src/Core/Api/Transaction/Service/TransactionService.php
+++ b/src/Core/Api/Transaction/Service/TransactionService.php
@@ -8,7 +8,7 @@ use Shopware\Core\{
Checkout\Cart\CartException,
Checkout\Cart\LineItem\LineItem,
Checkout\Order\OrderEntity,
- Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
+ Checkout\Payment\Cart\PaymentTransactionStruct,
Framework\Context,
Framework\DataAbstractionLayer\Search\Criteria,
Framework\DataAbstractionLayer\Search\Filter\EqualsFilter,
@@ -115,7 +115,7 @@ class TransactionService
*
* A redirect to the url will be performed
*
- * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
* @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
*
* @return string
@@ -124,10 +124,14 @@ class TransactionService
* @throws \VRPayment\Sdk\VersioningException
*/
public function create(
- AsyncPaymentTransactionStruct $transaction,
- SalesChannelContext $salesChannelContext
+ PaymentTransactionStruct $transaction,
+ SalesChannelContext $salesChannelContext
): string
{
+ $criteria = new Criteria([$transaction->getOrderTransactionId()]);
+ $criteria->addAssociation('order');
+ $orderTransaction = $this->container->get('order_transaction.repository')->search($criteria, $salesChannelContext->getContext())->first();
+
$salesChannelId = $salesChannelContext->getSalesChannel()->getId();
$settings = $this->settingsService->getSettings($salesChannelId);
$apiClient = $settings->getApiClient();
@@ -165,7 +169,7 @@ class TransactionService
$redirectUrl = $this->container->get('router')->generate(
'frontend.vrpayment.checkout.pay',
- ['orderId' => $transaction->getOrder()->getId(),],
+ ['orderId' => $orderTransaction->getOrder()->getId(),],
UrlGeneratorInterface::ABSOLUTE_URL
);
@@ -177,8 +181,8 @@ class TransactionService
$this->upsert(
$createdTransaction,
$salesChannelContext->getContext(),
- $transaction->getOrderTransaction()->getPaymentMethodId(),
- $transaction->getOrder()->getSalesChannelId()
+ $orderTransaction->getPaymentMethodId(),
+ $orderTransaction->getOrder()->getSalesChannelId()
);
$_SESSION['transactionId'] = null;
$_SESSION['arrayOfPossibleMethods'] = null;
@@ -186,26 +190,26 @@ class TransactionService
$_SESSION['currencyCheck'] = null;
- $this->holdDelivery($transaction->getOrder()->getId(), $salesChannelContext->getContext());
+ $this->holdDelivery($orderTransaction->getOrder()->getId(), $salesChannelContext->getContext());
return $redirectUrl;
}
/**
- * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
* @param \Shopware\Core\Framework\Context $context
* @param int $vrpaymentTransactionId
* @param int $spaceId
*/
protected function addVRPaymentTransactionId(
- AsyncPaymentTransactionStruct $transaction,
+ PaymentTransactionStruct $transaction,
Context $context,
int $vrpaymentTransactionId,
int $spaceId
): void
{
$data = [
- 'id' => $transaction->getOrderTransaction()->getId(),
+ 'id' => $transaction->getOrderTransactionId(),
'customFields' => [
TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_TRANSACTION_ID => $vrpaymentTransactionId,
TransactionPayload::ORDER_TRANSACTION_CUSTOM_FIELDS_VRPAYMENT_SPACE_ID => $spaceId,
@@ -343,7 +347,7 @@ class TransactionService
*
* @return \Shopware\Core\Checkout\Order\OrderEntity
*/
- private function getOrderEntity(string $orderId, Context $context): OrderEntity
+ protected function getOrderEntity(string $orderId, Context $context): OrderEntity
{
try {
$criteria = (new Criteria([$orderId]))->addAssociations(['deliveries']);
diff --git a/src/Core/Checkout/Cart/CustomCartPersister.php b/src/Core/Checkout/Cart/CustomCartPersister.php
new file mode 100644
index 0000000..584dd1e
--- /dev/null
+++ b/src/Core/Checkout/Cart/CustomCartPersister.php
@@ -0,0 +1,59 @@
+inner = $inner;
+ }
+
+ public function delete(string $token, SalesChannelContext $context): void
+ {
+ if (!$context->getContext()->hasState('do-cart-delete') && $this->isWhiteLabelPayment($context)) {
+ return;
+ }
+
+ $this->inner->delete($token, $context);
+ }
+
+ public function load(string $token, SalesChannelContext $context): Cart
+ {
+ return $this->inner->load($token, $context);
+ }
+
+ public function save(Cart $cart, SalesChannelContext $context): void
+ {
+ $this->inner->save($cart, $context);
+ }
+
+ public function replace(string $oldToken, string $newToken, SalesChannelContext $context): void
+ {
+ $this->inner->replace($oldToken, $newToken, $context);
+ }
+
+ public function getDecorated(): AbstractCartPersister
+ {
+ return $this->inner;
+ }
+
+ private function isWhiteLabelPayment(SalesChannelContext $context): bool
+ {
+ $paymentMethod = $context->getPaymentMethod();
+
+ if (!$paymentMethod instanceof PaymentMethodEntity) {
+ return false;
+ }
+
+ return $paymentMethod->getHandlerIdentifier() === VRPaymentPaymentHandler::class;
+ }
+}
diff --git a/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php b/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
index 669ad23..5de412d 100644
--- a/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
+++ b/src/Core/Checkout/PaymentHandler/VRPaymentPaymentHandler.php
@@ -4,16 +4,30 @@ namespace VRPaymentPayment\Core\Checkout\PaymentHandler;
use Psr\Log\LoggerInterface;
use Shopware\Core\{
+ Checkout\Order\Aggregate\OrderTransaction\OrderTransactionEntity,
Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler,
- Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
- Checkout\Payment\Cart\PaymentHandler\AsynchronousPaymentHandlerInterface,
- Checkout\Payment\Exception\AsyncPaymentFinalizeException,
- Checkout\Payment\Exception\AsyncPaymentProcessException,
+ Checkout\Payment\Cart\PaymentTransactionStruct,
+ Checkout\Payment\Cart\PaymentHandler\AbstractPaymentHandler,
+ Checkout\Payment\Cart\PaymentHandler\PaymentHandlerType,
Checkout\Payment\PaymentException,
Checkout\Payment\Exception\CustomerCanceledAsyncPaymentException,
+ Framework\App\AppException,
+ Framework\Api\Context\SalesChannelApiSource,
+ Framework\Context,
+ Framework\DataAbstractionLayer\EntityRepository,
+ Framework\DataAbstractionLayer\Search\Criteria,
+ Framework\DataAbstractionLayer\Search\Sorting\FieldSorting,
+ Framework\Struct\Struct,
Framework\Validation\DataBag\RequestDataBag,
- System\SalesChannel\SalesChannelContext
+ System\SalesChannel\Context\SalesChannelContextService,
+ System\SalesChannel\Context\SalesChannelContextServiceParameters
};
+use Shopware\Core\Framework\Util\Random;
+use VRPaymentPayment\Core\Checkout\Cart\CustomCartPersister;
+use Shopware\Core\Checkout\Cart\Cart;
+use Shopware\Core\Checkout\Cart\CartPersister;
+use Shopware\Core\System\SalesChannel\SalesChannelContext;
+
use Symfony\Component\{
HttpFoundation\RedirectResponse,
HttpFoundation\Request
@@ -27,9 +41,14 @@ use VRPaymentPayment\Core\Api\Transaction\Service\TransactionService;
*
* @package VRPaymentPayment\Core\Checkout\PaymentHandler
*/
-class VRPaymentPaymentHandler implements AsynchronousPaymentHandlerInterface
+class VRPaymentPaymentHandler extends AbstractPaymentHandler
{
+ /**
+ * @var CustomCartPersister
+ */
+ private CustomCartPersister $cartPersister;
+
/**
* @var \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService
*/
@@ -44,22 +63,34 @@ class VRPaymentPaymentHandler implements AsynchronousPaymentHandlerInterface
*/
private $orderTransactionStateHandler;
+ protected SalesChannelContextService $salesChannelContextService;
+
+ protected EntityRepository $orderTransactionRepository;
+
/**
* VRPaymentPaymentHandler constructor.
*
* @param \VRPaymentPayment\Core\Api\Transaction\Service\TransactionService $transactionService
* @param \Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionStateHandler $orderTransactionStateHandler
+ * @param SalesChannelContextService $salesChannelContextService
+ * @param EntityRepository $orderTransactionRepository
*/
- public function __construct(TransactionService $transactionService, OrderTransactionStateHandler $orderTransactionStateHandler)
- {
+ public function __construct(
+ CustomCartPersister $cartPersister,
+ TransactionService $transactionService,
+ OrderTransactionStateHandler $orderTransactionStateHandler,
+ SalesChannelContextService $salesChannelContextService,
+ EntityRepository $orderTransactionRepository
+ ) {
+ $this->cartPersister = $cartPersister;
$this->transactionService = $transactionService;
$this->orderTransactionStateHandler = $orderTransactionStateHandler;
+ $this->salesChannelContextService = $salesChannelContextService;
+ $this->orderTransactionRepository = $orderTransactionRepository;
}
/**
* @param \Psr\Log\LoggerInterface $logger
- * @internal
- * @required
*
*/
public function setLogger(LoggerInterface $logger): void
@@ -73,78 +104,123 @@ class VRPaymentPaymentHandler implements AsynchronousPaymentHandlerInterface
*
* A redirect to the url will be performed
*
- * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
- * @param \Shopware\Core\Framework\Validation\DataBag\RequestDataBag $dataBag
- * @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
+ * @param \Symfony\Component\HttpFoundation\Request
+ * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Framework\Context $context
+ * @param \Shopware\Core\Framework\Struct\Struct $validateStruct
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function pay(
- AsyncPaymentTransactionStruct $transaction,
- RequestDataBag $dataBag,
- SalesChannelContext $salesChannelContext
+ Request $request,
+ PaymentTransactionStruct $transaction,
+ Context $context,
+ ?Struct $validateStruct
): RedirectResponse
{
try {
+ $orderTransactionId = $transaction->getOrderTransactionId();
+ $orderTransaction = $this->orderTransactionRepository->search(
+ (new Criteria([$orderTransactionId]))
+ ->addAssociation('order'), $context
+ )->getEntities()->first();
+
+ $contextSource = $context->getSource();
+ if ($contextSource instanceof SalesChannelApiSource) {
+ $salesChannelContextId = $contextSource->getSalesChannelId();
+ }
+
+ $parameters = new SalesChannelContextServiceParameters($salesChannelContextId, $request->getSession()->get("sw-context-token", Random::getAlphanumericString(32)), originalContext: $context);
+ $salesChannelContext = $this->salesChannelContextService->get($parameters);
$redirectUrl = $transaction->getReturnUrl();
- if ($transaction->getOrder()->getAmountTotal() > 0) {
+
+ if ($orderTransaction->getOrder()->getAmountTotal() > 0) {
$transactionId = $_SESSION['transactionId'] ?? null;
if ($transactionId === null) {
- $this->transactionService->createPendingTransaction($salesChannelContext);
+ $this->transactionService->createPendingTransaction($transaction, $salesChannelContext);
}
$redirectUrl = $this->transactionService->create($transaction, $salesChannelContext);
}
return new RedirectResponse($redirectUrl);
- } catch (\Exception $e) {
+ } catch (\Throwable $e) {
unset($_SESSION['transactionId']);
$errorMessage = 'An error occurred during the communication with external payment gateway : ' . $e->getMessage();
$this->logger->critical($errorMessage);
- throw new \Exception($transaction->getOrderTransaction()->getId() . ': ' . $errorMessage);
+ throw PaymentException::customerCanceled($transaction->getOrderTransaction()->getId(), $errorMessage);
}
}
/**
* The finalize function will be called when the user is redirected back to shop from the payment gateway.
*
- * Throw a @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
* @param \Symfony\Component\HttpFoundation\Request $request
- * @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
+ * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Framework\Context $context
* @throws \VRPayment\Sdk\ApiException
* @throws \VRPayment\Sdk\Http\ConnectionException
* @throws \VRPayment\Sdk\VersioningException
- * @see AsyncPaymentFinalizeException exception if an error ocurres while calling an external payment API
- * Throw a @see CustomerCanceledAsyncPaymentException exception if the customer canceled the payment process on
- * payment provider page
- *
+ * @throws \Exception when the payment was canceled by the customer
*/
public function finalize(
- AsyncPaymentTransactionStruct $transaction,
- Request $request,
- SalesChannelContext $salesChannelContext
+ Request $request,
+ PaymentTransactionStruct $transaction,
+ Context $context
): void
{
- if ($transaction->getOrder()->getAmountTotal() > 0) {
+ $orderTransactionId = $transaction->getOrderTransactionId();
+ $orderTransaction = $this->orderTransactionRepository->search(
+ (new Criteria([$orderTransactionId]))
+ ->addAssociation('order'), $context
+ )->getEntities()->first();
+
+ if ($orderTransaction->getOrder()->getAmountTotal() > 0) {
$transactionEntity = $this->transactionService->getByOrderId(
- $transaction->getOrder()->getId(),
- $salesChannelContext->getContext()
+ $orderTransaction->getOrder()->getId(),
+ $context
);
$vRPaymentTransaction = $this->transactionService->read(
$transactionEntity->getTransactionId(),
- $salesChannelContext->getSalesChannel()->getId()
+ $transactionEntity->getSalesChannelId()
);
if (in_array($vRPaymentTransaction->getState(), [TransactionState::FAILED])) {
$errorMessage = strtr('Customer canceled payment for :orderId on SalesChannel :salesChannelName', [
- ':orderId' => $transaction->getOrder()->getId(),
- ':salesChannelName' => $salesChannelContext->getSalesChannel()->getName(),
+ ':orderId' => $orderTransaction->getOrder()->getId(),
+ ':salesChannelName' => $transactionEntity->getSalesChannelId(),
]);
unset($_SESSION['transactionId']);
$this->logger->info($errorMessage);
throw PaymentException::customerCanceled($transaction->getOrderTransaction()->getId(), $errorMessage);
}
} else {
- $this->orderTransactionStateHandler->paid($transaction->getOrderTransaction()->getId(), $salesChannelContext->getContext());
+ $this->orderTransactionStateHandler->paid($orderTransaction->getId(), $context);
+ }
+
+ $token = $request->getSession()->get('sw-context-token');
+ if ($token) {
+ $salesChannelId = $transactionEntity->getSalesChannelId();
+ $parameters = new SalesChannelContextServiceParameters($salesChannelId, $token, originalContext: $context);
+ $salesChannelContext = $this->salesChannelContextService->get($parameters);
+
+ $salesChannelContext->getContext()->addState('do-cart-delete');
+ $this->logger->info('Clearing cart with token: ' . $token);
+ $this->cartPersister->delete($salesChannelContext->getToken(), $salesChannelContext);
}
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public function supports(
+ PaymentHandlerType $type,
+ string $paymentMethodId,
+ Context $context
+ ): bool {
+ if ($type === PaymentHandlerType::RECURRING) {
+ return false;
+ }
+ return true;
+ }
+
}
diff --git a/src/Core/Util/Payload/TransactionPayload.php b/src/Core/Util/Payload/TransactionPayload.php
index a9b21bb..ebc1e14 100644
--- a/src/Core/Util/Payload/TransactionPayload.php
+++ b/src/Core/Util/Payload/TransactionPayload.php
@@ -8,10 +8,14 @@ use Shopware\Core\{Checkout\Cart\Tax\Struct\CalculatedTaxCollection,
Checkout\Customer\Aggregate\CustomerAddress\CustomerAddressEntity,
Checkout\Customer\CustomerEntity,
Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity,
- Checkout\Payment\Cart\AsyncPaymentTransactionStruct,
+ Checkout\Order\OrderEntity,
+ Checkout\Payment\Cart\PaymentTransactionStruct,
Framework\DataAbstractionLayer\Search\Criteria,
System\SalesChannel\SalesChannelContext
};
+use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
+use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
+
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use VRPayment\Sdk\{Model\AddressCreate,
@@ -36,6 +40,10 @@ use VRPaymentPayment\Core\{Api\PaymentMethodConfiguration\Entity\PaymentMethodCo
Util\Payload\CustomProducts\CustomProductsLineItemTypes
};
+use Shopware\Core\System\SystemConfig\SystemConfigService;
+use Shopware\Core\Framework\Context;
+use Shopware\Core\System\Tax\TaxEntity;
+
/**
* Class TransactionPayload
*
@@ -61,7 +69,7 @@ class TransactionPayload extends AbstractPayload
protected $salesChannelContext;
/**
- * @var \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct
+ * @var \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct
*/
protected $transaction;
@@ -85,6 +93,10 @@ class TransactionPayload extends AbstractPayload
*/
protected $translator;
+ protected EntityRepository $orderTransactionRepository;
+
+ protected OrderEntity $order;
+
/**
* TransactionPayload constructor.
*
@@ -92,14 +104,14 @@ class TransactionPayload extends AbstractPayload
* @param \VRPaymentPayment\Core\Util\LocaleCodeProvider $localeCodeProvider
* @param \Shopware\Core\System\SalesChannel\SalesChannelContext $salesChannelContext
* @param \VRPaymentPayment\Core\Settings\Struct\Settings $settings
- * @param \Shopware\Core\Checkout\Payment\Cart\AsyncPaymentTransactionStruct $transaction
+ * @param \Shopware\Core\Checkout\Payment\Cart\PaymentTransactionStruct $transaction
*/
public function __construct(
ContainerInterface $container,
LocaleCodeProvider $localeCodeProvider,
SalesChannelContext $salesChannelContext,
Settings $settings,
- AsyncPaymentTransactionStruct $transaction
+ PaymentTransactionStruct $transaction
)
{
$this->localeCodeProvider = $localeCodeProvider;
@@ -108,6 +120,23 @@ class TransactionPayload extends AbstractPayload
$this->transaction = $transaction;
$this->container = $container;
$this->translator = $this->container->get('translator');
+ $this->orderTransactionRepository = $this->container->get('order_transaction.repository');
+
+ $criteria = (new Criteria());
+ $criteria->addFilter(new EqualsFilter('id', $this->transaction->getOrderTransactionId()));
+
+ $orders = $this->orderTransactionRepository->search($criteria, $this->salesChannelContext->getContext())->getEntities();
+ $orderId = $orders->first()->getOrderId();
+
+ $criteria = new Criteria([$orderId]);
+ $criteria
+ ->addAssociation('lineItems')
+ ->addAssociation('orderCustomer')
+ ->addAssociation('transactions')
+ ->addAssociation('currency')
+ ;
+
+ $this->order = $this->container->get('order.repository')->search($criteria, $this->salesChannelContext->getContext())->getEntities()->first();
}
/**
@@ -118,13 +147,21 @@ class TransactionPayload extends AbstractPayload
*/
public function get(int $version): TransactionPending
{
- $customer = $this->salesChannelContext->getCustomer();
+ $customerId = $this->order->getOrderCustomer()->getCustomerId();
+ $criteria = new Criteria([$customerId]);
+ $criteria->addAssociation('activeBillingAddress')
+ ->addAssociation('activeShippingAddress')
+ ->addAssociation('activeShippingAddress')
+ ->addAssociation('defaultBillingAddress')
+ ->addAssociation('defaultShippingAddress')
+ ->addAssociation('salutation');
+ $customer = $this->container->get('customer.repository')->search($criteria, $this->salesChannelContext->getContext())->getEntities()->first();
$lineItems = $this->getLineItems();
+
$billingAddress = $this->getAddressPayload($customer, $customer->getActiveBillingAddress());
$shippingAddress = $this->getAddressPayload($customer, $customer->getActiveShippingAddress(), false);
-
$customerId = null;
$customerName = null;
if ($customer->getGuest() === false) {
@@ -137,14 +174,14 @@ class TransactionPayload extends AbstractPayload
}
$transactionData = [
- 'currency' => $this->salesChannelContext->getCurrency()->getIsoCode(),
- 'customer_email_address' => $billingAddress->getEmailAddress(),
+ 'currency' => $this->order->getCurrency()->getIsoCode(),
+ 'customer_email_address' => $customer->getEmail(),
'customer_id' => $customerId,
'language' => $this->localeCodeProvider->getLocaleCodeFromContext($this->salesChannelContext->getContext()) ?? null,
- 'merchant_reference' => $this->fixLength($this->transaction->getOrder()->getOrderNumber(), 100),
+ 'merchant_reference' => $this->fixLength($this->order->getOrderNumber(), 100),
'meta_data' => [
- self::VRPAYMENT_METADATA_ORDER_ID => $this->transaction->getOrder()->getId(),
- self::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID => $this->transaction->getOrderTransaction()->getId(),
+ self::VRPAYMENT_METADATA_ORDER_ID => $this->order->getId(),
+ self::VRPAYMENT_METADATA_ORDER_TRANSACTION_ID => $this->order->getTransactions()->first()->getId(),
self::VRPAYMENT_METADATA_SALES_CHANNEL_ID => $this->salesChannelContext->getSalesChannel()->getId(),
self::VRPAYMENT_METADATA_CUSTOMER_NAME => $customerName,
],
@@ -161,8 +198,8 @@ class TransactionPayload extends AbstractPayload
$transactionData['meta_data']['additionalAddress2'] = $additionalAddress2;
}
- if (!empty($this->transaction->getOrder()->getCustomerComment())) {
- $transactionData['meta_data']['customer_comment'] = $this->transaction->getOrder()->getCustomerComment();
+ if (!empty($this->order->getCustomerComment())) {
+ $transactionData['meta_data']['customer_comment'] = $this->order->getCustomerComment();
}
$vatIds = $customer->getVatIds();
@@ -198,7 +235,7 @@ class TransactionPayload extends AbstractPayload
$transactionPayload->setAllowedPaymentMethodConfigurations([$paymentConfiguration->getPaymentMethodConfigurationId()]);
$successUrl = $this->transaction->getReturnUrl() . '&status=paid';
- $failedUrl = $this->getFailUrl($this->transaction->getOrder()->getId()) . '&status=fail';
+ $failedUrl = $this->getFailUrl($this->order->getId()) . '&status=fail';
$transactionPayload->setSuccessUrl($successUrl)
->setFailedUrl($failedUrl);
@@ -219,7 +256,7 @@ class TransactionPayload extends AbstractPayload
protected function getLineItems(): array
{
$lineItems = [];
- $items = $this->transaction->getOrder()->getLineItems();
+ $items = $this->order->getLineItems() ?? [];
foreach ($items as $shopLineItem) {
if ($this->shouldSkipLineItem($shopLineItem)) {
@@ -307,36 +344,99 @@ class TransactionPayload extends AbstractPayload
protected function addDiscountLineItem($discount, array &$lineItems): void
{
$calculatedPrice = $discount->getPrice();
- $calculatedTaxesCollection = $calculatedPrice->getCalculatedTaxes();
+ $discountName = $discount->getLabel() ?? 'Unnamed';
+ $definition = $discount->getPriceDefinition();
- foreach ($calculatedTaxesCollection as $calculatedTax) {
- $rate = $calculatedTax->getTaxRate();
- $lineItem = new LineItemCreate();
- $amount = $this->calculateDiscountAmount($calculatedTax);
+ if ($this->order->getTaxStatus() === 'net' || $definition instanceof \Shopware\Core\Checkout\Cart\Price\Struct\AbsolutePriceDefinition) {
+ $calculatedTaxesCollection = $calculatedPrice->getCalculatedTaxes();
+ foreach ($calculatedTaxesCollection as $calculatedTax) {
+ $rate = $calculatedTax->getTaxRate();
+ $amount = $this->calculateDiscountAmount($calculatedTax);
- $discountName = $discount->getLabel();
- $lineItem->setAmountIncludingTax($amount)
- ->setName(sprintf('DISCOUNT: %s (%s%% tax)', $discount->getLabel(), $rate))
- ->setQuantity(1)
- ->setShippingRequired(false)
- ->setSku('sku-discount-' . $rate . '-' . $discountName, 200)
- ->setType(LineItemType::DISCOUNT)
- ->setUniqueId('coupon-sku-discount-' . $rate . '-' . $rate . '-' . $discountName);
+ $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
+ }
+ } else {
+ $taxRules = $calculatedPrice->getTaxRules();
- $taxRate = new TaxCreate(['title' => 'Discount Tax: ' . $rate, 'rate' => $rate]);
- $lineItem->setTaxes([$taxRate]);
-
- $lineItems[] = $lineItem;
+ if ($taxRules && $taxRules->count() > 0) {
+ foreach ($taxRules as $taxRule) {
+ $rate = $taxRule->getTaxRate();
+ $amount = $calculatedPrice->getTotalPrice();
+ $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
+ }
+ } else {
+ $rate = $this->getDefaultTaxRate();
+ $amount = $calculatedPrice->getTotalPrice();
+ $lineItems[] = $this->createDiscountLineItem($discountName, $amount, $rate);
+ }
}
}
+ /**
+ * @param string $discountName
+ * @param float $amount
+ * @param float $rate
+ * @return LineItemCreate
+ */
+ private function createDiscountLineItem(string $discountName, float $amount, float $rate): LineItemCreate
+ {
+ $lineItem = new LineItemCreate();
+
+ $discountSkuName = 'sku-discount-' . $rate . '-' . $discountName;
+ $discountTitle = sprintf('DISCOUNT: %s (%s%% tax)', $discountName, $rate);
+ if ($this->order->getTaxStatus() === 'tax-free') {
+ $discountSkuName = 'sku-discount-' . $discountName;
+ $discountTitle = sprintf('DISCOUNT: %s', $discountName);
+ }
+
+ $lineItem->setAmountIncludingTax($amount)
+ ->setName($discountTitle)
+ ->setQuantity(1)
+ ->setShippingRequired(false)
+ ->setSku($discountSkuName, 200)
+ ->setType(LineItemType::DISCOUNT)
+ ->setUniqueId('coupon-' . $discountSkuName);
+
+ $taxRate = new TaxCreate([
+ 'title' => 'Discount Tax: ' . $rate,
+ 'rate' => $rate,
+ ]);
+
+ if ($this->order->getTaxStatus() !== 'tax-free') {
+ $lineItem->setTaxes([$taxRate]);
+ }
+
+ return $lineItem;
+ }
+
+ /**
+ * @return float
+ */
+ private function getDefaultTaxRate(): float
+ {
+ /** @var SystemConfigService $systemConfigService */
+ $systemConfigService = $this->container->get(SystemConfigService::class);
+ $taxId = $systemConfigService->get('core.tax.defaultTaxRate');
+
+ if (!$taxId || !is_string($taxId)) {
+ return 21.0;
+ }
+
+ $criteria = new Criteria([$taxId]);
+ /** @var TaxRepository $taxRepository */
+ $taxRepository = $this->container->get('tax.repository');
+ $tax = $taxRepository->search($criteria, Context::createDefaultContext())->get($taxId);
+
+ return $tax instanceof TaxEntity ? $tax->getTaxRate() : 21.0;
+ }
+
/**
* Calculate discount amount including tax if necessary.
*/
protected function calculateDiscountAmount($calculatedTax): float
{
$amount = self::round($calculatedTax->getPrice());
- if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
+ if ($this->order->getTaxStatus() === 'net') {
$amount = self::round($amount + $calculatedTax->getTax());
}
return $amount;
@@ -357,7 +457,7 @@ class TransactionPayload extends AbstractPayload
*/
protected function addOptionalLineItems(array &$lineItems): void
{
- if (count($this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes()) === 1) {
+ if (count($this->order->getShippingCosts()->getCalculatedTaxes()) === 1) {
if ($shippingLineItem = $this->getShippingLineItem()) {
$lineItems[] = $shippingLineItem;
}
@@ -379,7 +479,7 @@ class TransactionPayload extends AbstractPayload
protected function getCustomProductOptionLabel(string $lineItemParentId): string
{
$label = '';
- foreach ($this->transaction->getOrder()->getLineItems() as $shopLineItem) {
+ foreach ($this->order->getLineItems() as $shopLineItem) {
if ($shopLineItem->getParentId() === $lineItemParentId && $shopLineItem->getType() === CustomProductsLineItemTypes::LINE_ITEM_TYPE_PRODUCT) {
$label = $shopLineItem->getLabel();
break;
@@ -404,10 +504,11 @@ class TransactionPayload extends AbstractPayload
$sku = $payLoad['productNumber'];
}
$sku = $this->fixLength($sku, 200);
+
$amount = $shopLineItem->getTotalPrice() ? self::round($shopLineItem->getTotalPrice()) : 0;
//include Tax Excluded for Net Tax display customer group
- if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
+ if ($this->order->getTaxStatus() === 'net') {
$amount = self::round($amount + $shopLineItem->getPrice()->getCalculatedTaxes()->getAmount());
}
@@ -443,7 +544,9 @@ class TransactionPayload extends AbstractPayload
}
if (!empty($taxes)) {
- $lineItem->setTaxes($taxes);
+ if ($this->order->getTaxStatus() !== 'tax-free') {
+ $lineItem->setTaxes($taxes);
+ }
}
if ($shopLineItem->getTotalPrice() >= 0) {
@@ -519,31 +622,34 @@ class TransactionPayload extends AbstractPayload
{
try {
- $amount = $this->transaction->getOrder()->getShippingTotal();
+ $amount = $this->order->getShippingTotal();
$amount = self::round($amount);
if ($amount > 0) {
$shippingName = $this->salesChannelContext->getShippingMethod()->getName() ?? $this->translator->trans('vrpayment.payload.shipping.name');
$taxes = $this->getTaxes(
- $this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes(),
+ $this->order->getShippingCosts()->getCalculatedTaxes(),
$shippingName
);
- if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
- $amount = self::round($amount + $this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes()->getAmount());
+ if ($this->order->getTaxStatus() === 'net') {
+ $amount = self::round($amount + $this->order->getShippingCosts()->getCalculatedTaxes()->getAmount());
}
$lineItem = (new LineItemCreate())
->setAmountIncludingTax($amount)
->setName($this->fixLength($shippingName . ' ' . $this->translator->trans('vrpayment.payload.shipping.lineItem'), 150))
- ->setQuantity($this->transaction->getOrder()->getShippingCosts()->getQuantity() ?? 1)
- ->setTaxes($taxes)
+ ->setQuantity($this->order->getShippingCosts()->getQuantity() ?? 1)
->setSku($this->fixLength($shippingName . '-Shipping', 200))
/** @noinspection PhpParamsInspection */
->setType(LineItemType::SHIPPING)
->setUniqueId($this->fixLength($shippingName . '-Shipping', 200));
+ if ($this->order->getTaxStatus() !== 'tax-free') {
+ $lineItem->setTaxes($taxes);
+ }
+
if (!$lineItem->valid()) {
$this->logger->critical('Shipping LineItem payload invalid:', $lineItem->listInvalidProperties());
throw new InvalidPayloadException('Shipping LineItem payload invalid:' . json_encode($lineItem->listInvalidProperties()));
@@ -564,15 +670,15 @@ class TransactionPayload extends AbstractPayload
protected function getMultipleShippingLineItems(): array
{
try {
- if ($this->transaction->getOrder()->getShippingTotal() > 0) {
+ if ($this->order->getShippingTotal() > 0) {
$lineItems = [];
$shippingName = $this->salesChannelContext->getShippingMethod()->getName() ?? $this->translator->trans('vrpayment.payload.shipping.name');
$isFirst = true;
- foreach ($this->transaction->getOrder()->getShippingCosts()->getCalculatedTaxes() as $taxItem) {
+ foreach ($this->order->getShippingCosts()->getCalculatedTaxes() as $taxItem) {
$amount = self::round($taxItem->getPrice());
- if ($this->transaction->getOrder()->getTaxStatus() === 'net') {
+ if ($this->order->getTaxStatus() === 'net') {
$amount = self::round($amount + $taxItem->getTax());
}
$taxRate = $taxItem->getTaxRate();
@@ -584,12 +690,15 @@ class TransactionPayload extends AbstractPayload
$lineItem = (new LineItemCreate())
->setAmountIncludingTax($amount)
->setName($this->fixLength($name . ' ' . $this->translator->trans('vrpayment.payload.shipping.lineItem'), 150))
- ->setQuantity($this->transaction->getOrder()->getShippingCosts()->getQuantity() ?? 1)
- ->setTaxes([$tax])
+ ->setQuantity($this->order->getShippingCosts()->getQuantity() ?? 1)
->setSku($this->fixLength($name . '-Shipping', 200))
->setType($isFirst ? LineItemType::SHIPPING : LineItemType::FEE) // First item as SHIPPING, rest as FEE
->setUniqueId($this->fixLength($name . '-Shipping', 200));
+ if ($this->order->getTaxStatus() !== 'tax-free') {
+ $lineItem->setTaxes([$tax]);
+ }
+
if (!$lineItem->valid()) {
$this->logger->critical('Shipping LineItem payload invalid:', $lineItem->listInvalidProperties());
throw new InvalidPayloadException('Shipping LineItem payload invalid:' . json_encode($lineItem->listInvalidProperties()));
@@ -623,14 +732,14 @@ class TransactionPayload extends AbstractPayload
return $lineItem->getAmountIncludingTax();
}, $lineItems));
- $adjustmentPrice = $this->transaction->getOrder()->getAmountTotal() - $lineItemPriceTotal;
+ $adjustmentPrice = $this->order->getAmountTotal() - $lineItemPriceTotal;
$adjustmentPrice = self::round($adjustmentPrice);
if (abs($adjustmentPrice) != 0) {
if ($this->settings->isLineItemConsistencyEnabled()) {
$error = strtr('LineItems total :lineItemTotal does not add up to order total :orderTotal', [
':lineItemTotal' => $lineItemPriceTotal,
- ':orderTotal' => $this->transaction->getOrder()->getAmountTotal(),
+ ':orderTotal' => $this->order->getAmountTotal(),
]);
$this->logger->critical($error);
throw new \Exception($error);
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
index 506861f..ec0cc3b 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig
@@ -4,21 +4,21 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_completion_amount %}
-
-
+ v-model:checked="isCompletion">
+
{% endblock %}
{% block vrpayment_order_action_completion_confirm_button %}
-
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
index 3f00152..6f86754 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig
@@ -4,23 +4,23 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_refund_amount_by_amount %}
-
-
+
{% endblock %}
{% block vrpayment_order_action_refund_confirm_button_by_amount %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
index c3aa0cc..37a7e2b 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig
@@ -4,13 +4,13 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_refund_amount_partial %}
-
-
+
{{ $tc('vrpayment-order.refundAction.maxAvailableAmountToRefund') }}:
@@ -20,12 +20,12 @@
{% block vrpayment_order_action_refund_confirm_button_partial %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
index b9274e8..d581002 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js
@@ -47,7 +47,9 @@ Component.register('vrpayment-order-action-refund-partial', {
createdComponent() {
this.isLoading = false;
this.currency = this.transactionData.transactions[0].currency;
- this.refundAmount = this.$parent.$parent.itemRefundableAmount;
+ if (!this.refundAmount) {
+ this.refundAmount = this.$parent.$parent.itemRefundableAmount;
+ }
},
createPartialRefund(itemUniqueId) {
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
index b1cf34d..a2bfbb1 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-selected/index.html.twig
@@ -5,12 +5,12 @@
{% block vrpayment_order_action_refund_confirm_button_selected %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
index d25ef15..2e3e421 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig
@@ -5,12 +5,12 @@
{% block vrpayment_order_action_refund_amount %}
-
-
+
{{ $tc('vrpayment-order.refundAction.maxAvailableItemsToRefund') }}:
@@ -20,12 +20,12 @@
{% block vrpayment_order_action_refund_confirm_button %}
-
+
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
index 98c67c1..62abf11 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig
@@ -4,21 +4,22 @@
@modal-close="$emit('modal-close')">
{% block vrpayment_order_action_void_amount %}
-
-
+ v-model:checked="isVoid">
+
{% endblock %}
{% block vrpayment_order_action_void_confirm_button %}
-
{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}
-
+
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
index 27d4108..aeac916 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig
@@ -1,6 +1,7 @@
{% block sw_order_detail_content_tabs_general %}
{% parent %}
+{# sw-tabs-item will dissappear. See: https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md#sw-tabs-is-removed #}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
index ff18ca8..f7ab85e 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
+++ b/src/Resources/app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.scss
@@ -3,7 +3,7 @@
margin-top: 40px;
}
- .sw-order-detail-base .sw-card-view__content {
+ .sw-order-detail-base .mt-card-view__content {
overflow-x: visible;
overflow-y: visible;
}
diff --git a/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
index 5d68090..30d37cc 100644
--- a/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig
@@ -1,61 +1,61 @@
{% block vrpayment_order_detail %}
-
+
{% block vrpayment_order_actions_section %}
-
+
{% block vrpayment_order_transaction_refunds_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.refund') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_completion_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.completion') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_void_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.void') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_download_invoice_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.download-invoice') }}
-
+
{% endblock %}
{% block vrpayment_order_transaction_download_packing_slip_action_button %}
-
{{ $tc('vrpayment-order.buttons.label.download-packing-slip') }}
-
+
{% endblock %}
-
+
{% endblock %}
-
+
{% block vrpayment_order_transaction_history_card %}
-
+
{% block vrpayment_order_transaction_history_grid %}
@@ -78,10 +78,10 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_transaction_line_items_card %}
-
+
{% block vrpayment_order_transaction_line_items_grid %}
@@ -131,10 +131,10 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_transaction_refunds_card %}
-
+
{% block vrpayment_order_transaction_refunds_grid %}
@@ -147,7 +147,7 @@
{% endblock %}
-
+
{% endblock %}
{% block vrpayment_order_actions_modal_refund_partial %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
index 024b3ff..68ca180 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig
@@ -1,4 +1,4 @@
-
@@ -7,16 +7,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :checked="props.currentValue"
+ @update:checked="props.updateCurrentValue">
+
@@ -25,19 +25,19 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :checked="props.currentValue"
+ @update:checked="props.updateCurrentValue">
+
-
+
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
index 90f9b5e..117ac2d 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig
@@ -1,6 +1,6 @@
{% block vrpayment_settings_content_card_channel_config_credentials %}
-
@@ -17,17 +17,17 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_SPACE_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ @update:model-value="props.updateCurrentValue">
+
{% endblock %}
@@ -38,17 +38,17 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_USER_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ @update:model-value="props.updateCurrentValue">
+
{% endblock %}
@@ -59,7 +59,7 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_APPLICATION_KEY]"
:customInheritationCheckFunction="checkTextFieldInheritance">
-
-
+ @update:model-value="props.updateCurrentValue">
+
{% endblock %}
{% endblock %}
+ {% verbatim %}
-
{{ $tc('vrpayment-settings.settingForm.credentials.button.label') }}
-
+
+ {% endverbatim %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
index 0760ce1..252b010 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig
@@ -1,5 +1,5 @@
{% block vrpayment_settings_content_card_channel_config_options %}
-
{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}
@@ -14,15 +14,15 @@
:inheritedValue="selectedSalesChannelId === null ? null : allConfigs['null'][CONFIG_SPACE_VIEW_ID]"
:customInheritationCheckFunction="checkNumberFieldInheritance">
-
-
+ :model-value="props.currentValue"
+ @update:model-value="props.updateCurrentValue">
+
{% endblock %}
@@ -55,16 +55,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_LINE_ITEM_CONSISTENCY_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :checked="props.currentValue"
+ @update:checked="props.updateCurrentValue">
+
{% endblock %}
@@ -75,16 +75,16 @@
:inheritedValue="selectedSalesChannelId == null ? null : allConfigs['null'][CONFIG_EMAIL_ENABLED]"
:customInheritationCheckFunction="checkBoolFieldInheritance">
-
-
+ :checked="props.currentValue"
+ @update:checked="props.updateCurrentValue">
+
{% endblock %}
@@ -92,6 +92,6 @@
{% endblock %}
{% endblock %}
-
+
{% endblock %}
diff --git a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
index ad1f95e..3fad643 100644
--- a/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
+++ b/src/Resources/app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig
@@ -1,5 +1,5 @@
{% block vrpayment_settings_icon %}
-
+
{% endblock %}',{Component:we}=Shopware;we.register("sw-vrpayment-settings-icon",{template:Se});const Te=`
`,{Component:Pe,Mixin:Ae}=Shopware;Pe.register("sw-vrpayment-storefront-options",{template:Te,name:"VRPaymentStorefrontOptions",mixins:[Ae.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{required:!0},isLoading:{type:Boolean,required:!0}},data(){return{...m}},methods:{checkTextFieldInheritance(e){return typeof e!="string"?!0:e.length<=0},checkNumberFieldInheritance(e){return typeof e!="number"?!0:e.length<=0},checkBoolFieldInheritance(e){return typeof e!="boolean"}}});const De=`
`,{Component:Ne,Mixin:ke}=Shopware;Ne.register("sw-vrpayment-advanced-options",{template:De,name:"VRPaymentAdvancedOptions",inject:["acl"],mixins:[ke.getByName("notification")],props:{actualConfigData:{type:Object,required:!0},allConfigs:{type:Object,required:!0},selectedSalesChannelId:{required:!0},isLoading:{type:Boolean,required:!0}},data(){return{...m}},methods:{checkTextFieldInheritance(e){return typeof e!="string"?!0:e.length<=0},checkNumberFieldInheritance(e){return typeof e!="number"?!0:e.length<=0},checkBoolFieldInheritance(e){return typeof e!="boolean"}}});const $e={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment plugin"},vrpayment:{label:"VRPayment berechtigungen"}}},"vrpayment-settings":{general:{descriptionTextModule:"VRPayment-Einstellungen",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"Dieser Wert sollte nicht leer sein.",salesChannelCard:{button:{description:"Klicken Sie auf diese Schaltfläche, um VRPayment als Standard-Zahlungsabwickler im ausgewählten Vertriebskanal festzulegen",label:"VRPayment als Standard-Zahlungsabwickler festlegen"},messageDefaultPaymentError:"VRPayment als Standard-Zahlungsabwickler konnte nicht festgelegt werden..",messageDefaultPaymentUpdated:"VRPayment als Standard-Zahlungsabwickler wurde festgelegt."},settingForm:{credentials:{applicationKey:{label:"Application Key",tooltipText:"Der Anwendungsschlüssel wird verwendet, um dieses Plugin mit der API VRPayment zu authentifizieren."},cardTitle:"Anmeldedaten",spaceId:{label:"Space ID",tooltipText:"Die Space ID wird verwendet, um dieses Plugin mit der API VRPayment zu authentifizieren."},userId:{label:"User ID",tooltipText:"Die Benutzer-ID wird verwendet, um dieses Plugin mit der VRPayment-API zu authentifizieren."},button:{description:"Klicken Sie auf diese Schaltfläche, um die VRPayment API zu testen",label:"API Verbindung testen"},alert:{title:"API-Test",successMessage:"Die Verbindung wurde erfolgreich getestet.",errorMessage:"Die Verbindung ist fehlgeschlagen. Versuchen Sie es erneut."}},messageSaveSuccess:"VRPayment-Einstellungen wurden gespeichert.",messageOrderDeliveryStateError:"VRPayment OrderDeliveryState konnte nicht gespeichert werden.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState wurde aktualisiert.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration konnte nicht gespeichert werden. Bitte überprüfen Sie Ihre Anmeldedaten.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration wurde registriert.",messageWebHookError:"VRPayment WebHook konnte nicht gespeichert werden. Bitte überprüfen Sie Ihre Zugangsdaten.",messageWebHookUpdated:"VRPayment WebHook wurde aktualisiert.",options:{cardTitle:"Optionen",emailEnabled:{label:"Auftragsbestätigung per E-Mail senden",tooltipText:"Wenn diese Einstellung aktiviert ist, erhalten Ihre Kunden eine E-Mail von Ihrem Geschäft, wenn die Zahlung ihrer Bestellung autorisiert ist."},integration:{label:"Integration",options:{iframe:"Iframe",payment_page:"Payment Page"},tooltipText:"Integration"},lineItemConsistencyEnabled:{label:"Konsistenz der Einzelposten",tooltipText:"Wenn diese Option aktiviert ist, stimmen die Summen der Einzelposten in VRPaymentPayment immer mit der Shopware-Bestellsumme überein."},spaceViewId:{label:"Space View ID",tooltipText:"Space View ID"}},save:"Speichern",storefrontOptions:{cardTitle:"Storefront-Optionen",invoiceDownloadEnabled:{label:"Rechnung Download",tooltipText:"Wenn diese Einstellung aktiviert ist, können Ihre Kunden Auftragsrechnungen von VRPayment herunterladen."}},advancedOptions:{cardTitle:"Erweiterte-Optionen",webhooksUpdateEnabled:{label:"Webhooks-Update",tooltipText:"Wenn diese Einstellung aktiviert ist, wird das Webhook-Update ausgelöst, wenn Sie die Einstellungen speichern"},paymentsUpdateEnabled:{label:"Payments-Update",tooltipText:"Wenn diese Einstellung aktiviert ist, wird die Aktualisierung der Zahlungsmethoden ausgelöst, wenn Sie die Einstellungen speichern"}},titleError:"Fehler",titleSuccess:"Erfolg"}}},Re={"sw-privileges":{permissions:{parents:{vrpayment:"VRPayment plugin"},vrpayment:{label:"VRPayment permissions"}}},"vrpayment-settings":{general:{descriptionTextModule:"VRPayment settings",mainMenuItemGeneral:"VRPayment"},header:"VRPayment",messageNotBlank:"This value should not be blank.",salesChannelCard:{button:{description:"Click this button to set VRPayment as default payment handler in the selected SalesChannel",label:"Set VRPayment as default payment handler"},messageDefaultPaymentError:"VRPayment as default payment could not be set.",messageDefaultPaymentUpdated:"VRPayment as default payment has been set."},settingForm:{credentials:{applicationKey:{label:"Application Key",tooltipText:"The Application Key is used to authenticate this plugin with the VRPayment API."},cardTitle:"Credentials",spaceId:{label:"Space ID",tooltipText:"The space ID is used to authenticate this plugin with the VRPayment API."},userId:{label:"User ID",tooltipText:"The user ID is used to authenticate this plugin with the VRPayment API."},button:{description:"Click this button to test the VRPayment API",label:"API connection test"},alert:{title:"API Test",successMessage:"The connection was successfully tested.",errorMessage:"The connection was failed. Try it again."}},messageSaveSuccess:"VRPayment settings have been saved.",messageOrderDeliveryStateError:"VRPayment OrderDeliveryState could not be saved.",messageOrderDeliveryStateUpdated:"VRPayment OrderDeliveryState has been updated.",messagePaymentMethodConfigurationError:"VRPayment PaymentMethodConfiguration could not be saved. Please check your credentials.",messagePaymentMethodConfigurationUpdated:"VRPayment PaymentMethodConfiguration has been registered.",messageWebHookError:"VRPayment WebHook could not be saved. Please check your credentials.",messageWebHookUpdated:"VRPayment WebHook has been updated.",options:{cardTitle:"Options",emailEnabled:{label:"Send order confirmation email",tooltipText:"If this setting is enabled your customers will receive an email from your store when their order payment is authorised"},integration:{label:"Integration",options:{iframe:"Iframe",payment_page:"Payment Page"},tooltipText:"Integration"},lineItemConsistencyEnabled:{label:"Line item consistency",tooltipText:"If this option is enabled line item totals in VRPaymentPayment will always match Shopware order total"},spaceViewId:{label:"Space View ID",tooltipText:"Space View ID"}},save:"Save",storefrontOptions:{cardTitle:"Storefront Options",invoiceDownloadEnabled:{label:"Invoice Download",tooltipText:"If this setting is enabled your customers will be able to download order invoices from VRPayment"}},advancedOptions:{cardTitle:"Advanced Options",webhooksUpdateEnabled:{label:"Webhooks Update",tooltipText:"If this setting is enabled webhook update will be triggered when you save settings"},paymentsUpdateEnabled:{label:"Payments Update",tooltipText:"If this setting is enabled payment methods update will be triggered when you save settings"}},titleError:"Error",titleSuccess:"Success"}}},Oe={"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"}}},Fe={"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:xe}=Shopware;xe.register("vrpayment-settings",{type:"plugin",name:"VRPayment",title:"vrpayment-settings.general.descriptionTextModule",description:"vrpayment-settings.general.descriptionTextModule",color:"#28d8ff",icon:"default-action-settings",version:"1.0.1",targetVersion:"1.0.1",snippets:{"de-DE":$e,"en-GB":Re,"fr-FR":Oe,"it-IT":Fe},routes:{index:{component:"vrpayment-settings",path:"index",meta:{parentPath:"sw.settings.index",privilege:"vrpayment.viewer"},props:{default:e=>({hash:e.params.hash})}}},settingsItem:{group:"plugins",to:"vrpayment.settings.index",iconComponent:"sw-vrpayment-settings-icon",backgroundEnabled:!0,privilege:"vrpayment.viewer"}});const p=Shopware.Classes.ApiService;class Ve extends p{constructor(t,a,n="vrpayment"){super(t,a,n)}registerWebHooks(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/register-web-hooks`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}checkApiConnection(t=null,a=null,n=null){const r=this.getBasicHeaders(),o=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/check-api-connection`;return this.httpClient.post(o,{spaceId:t,userId:a,applicationId:n},{headers:r}).then(s=>p.handleResponse(s))}setVRPaymentAsSalesChannelPaymentDefault(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/set-vrpayment-as-sales-channel-payment-default`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}synchronizePaymentMethodConfiguration(t=null){const a=this.getBasicHeaders(),n=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/synchronize-payment-method-configuration`;return this.httpClient.post(n,{salesChannelId:t},{headers:a}).then(r=>p.handleResponse(r))}installOrderDeliveryStates(){const t=this.getBasicHeaders(),a=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/install-order-delivery-states`;return this.httpClient.post(a,{},{headers:t}).then(n=>p.handleResponse(n))}}const h=Shopware.Classes.ApiService;class Le extends h{constructor(t,a,n="vrpayment"){super(t,a,n)}createRefund(t,a,n,r){const o=this.getBasicHeaders(),s=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund/`;return this.httpClient.post(s,{salesChannelId:t,transactionId:a,quantity:n,lineItemId:r},{headers:o}).then(i=>h.handleResponse(i))}createRefundByAmount(t,a,n){const r=this.getBasicHeaders(),o=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund-by-amount/`;return this.httpClient.post(o,{salesChannelId:t,transactionId:a,refundableAmount:n},{headers:r}).then(s=>h.handleResponse(s))}createPartialRefund(t,a,n,r){const o=this.getBasicHeaders(),s=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-partial-refund/`;return this.httpClient.post(s,{salesChannelId:t,transactionId:a,refundableAmount:n,lineItemId:r},{headers:o}).then(i=>h.handleResponse(i))}}const E=Shopware.Classes.ApiService;class Me extends E{constructor(t,a,n="vrpayment"){super(t,a,n)}getTransactionData(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-transaction-data/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>E.handleResponse(o))}getInvoiceDocument(t,a){return`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-invoice-document/${t}/${a}`}getPackingSlip(t,a){return`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-packing-slip/${t}/${a}`}}const S=Shopware.Classes.ApiService;class Be extends S{constructor(t,a,n="vrpayment"){super(t,a,n)}createTransactionCompletion(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-completion/create-transaction-completion/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>S.handleResponse(o))}}const w=Shopware.Classes.ApiService;class ze extends w{constructor(t,a,n="vrpayment"){super(t,a,n)}createTransactionVoid(t,a){const n=this.getBasicHeaders(),r=`${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-void/create-transaction-void/`;return this.httpClient.post(r,{salesChannelId:t,transactionId:a},{headers:n}).then(o=>w.handleResponse(o))}}const{Application:d}=Shopware;d.addServiceProvider("VRPaymentConfigurationService",e=>{const t=d.getContainer("init");return new Ve(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentRefundService",e=>{const t=d.getContainer("init");return new Le(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionService",e=>{const t=d.getContainer("init");return new Me(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionCompletionService",e=>{const t=d.getContainer("init");return new Be(t.httpClient,e.loginService)});d.addServiceProvider("VRPaymentTransactionVoidService",e=>{const t=d.getContainer("init");return new ze(t.httpClient,e.loginService)});
+//# sourceMappingURL=v-r-payment-payment-CRU13hxm.js.map
diff --git a/src/Resources/public/administration/assets/v-r-payment-payment-CRU13hxm.js.map b/src/Resources/public/administration/assets/v-r-payment-payment-CRU13hxm.js.map
new file mode 100644
index 0000000..0c2ed95
--- /dev/null
+++ b/src/Resources/public/administration/assets/v-r-payment-payment-CRU13hxm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"v-r-payment-payment-CRU13hxm.js","sources":["../../../app/administration/src/module/vrpayment-order/extension/sw-order/sw-order.html.twig","../../../app/administration/src/module/vrpayment-order/extension/sw-order/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-completion/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-partial/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-refund-by-amount/index.js","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.html.twig","../../../app/administration/src/module/vrpayment-order/component/vrpayment-order-action-void/index.js","../../../app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.html.twig","../../../app/administration/src/module/vrpayment-order/page/vrpayment-order-detail/index.js","../../../app/administration/src/module/vrpayment-order/index.js","../../../app/administration/src/module/vrpayment-settings/acl/index.js","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/index.html.twig","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/configuration-constants.js","../../../app/administration/src/module/vrpayment-settings/page/vrpayment-settings/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-credentials/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-options/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-settings-icon/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-storefront-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-storefront-options/index.js","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.html.twig","../../../app/administration/src/module/vrpayment-settings/component/sw-vrpayment-advanced-options/index.js","../../../app/administration/src/module/vrpayment-settings/index.js","../../../app/administration/src/core/service/api/vrpayment-configuration.service.js","../../../app/administration/src/core/service/api/vrpayment-refund.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction-completion.service.js","../../../app/administration/src/core/service/api/vrpayment-transaction-void.service.js","../../../app/administration/src/init/api-service.init.js"],"sourcesContent":["{% block sw_order_detail_content_tabs_general %}\n {% parent %}\n\n{# sw-tabs-item will dissappear. See: https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md#sw-tabs-is-removed #}\n\n\t{{ $tc('vrpayment-order.header') }}\n \n{% endblock %}\n\n{% block sw_order_detail_actions_slot_smart_bar_actions %}\n\n\t{% parent %}\n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './sw-order.html.twig';\nimport './sw-order.scss';\n\nconst {Component, Context} = Shopware;\nconst Criteria = Shopware.Data.Criteria;\n\nconst vrpaymentFormattedHandlerIdentifier = 'handler_vrpaymentpayment_vrpaymentpaymenthandler';\n\nComponent.override('sw-order-detail', {\n\ttemplate,\n\n\tdata() {\n\t\treturn {\n\t\t\tisVRPaymentPayment: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn !this.isVRPaymentPayment || this.$route.name !== 'vrpayment.order.detail';\n\t\t},\n\t\tshowTabs() {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\twatch: {\n\t\torderId: {\n\t\t\tdeep: true,\n\t\t\thandler() {\n\t\t\t\tif (!this.orderId) {\n\t\t\t\t\tthis.setIsVRPaymentPayment(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst orderRepository = this.repositoryFactory.create('order');\n\t\t\t\tconst orderCriteria = new Criteria(1, 1);\n\t\t\t\torderCriteria.addAssociation('transactions');\n\n\t\t\t\torderRepository.get(this.orderId, Context.api, orderCriteria).then((order) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(order.amountTotal <= 0) ||\n\t\t\t\t\t\t(order.transactions.length <= 0) ||\n\t\t\t\t\t\t!order.transactions[0].paymentMethodId\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.setIsVRPaymentPayment(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst paymentMethodId = order.transactions[0].paymentMethodId;\n\t\t\t\t\tif (paymentMethodId !== undefined && paymentMethodId !== null) {\n\t\t\t\t\t\tthis.setIsVRPaymentPayment(paymentMethodId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\timmediate: true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tsetIsVRPaymentPayment(paymentMethodId) {\n\t\t\tif (!paymentMethodId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst paymentMethodRepository = this.repositoryFactory.create('payment_method');\n\t\t\tpaymentMethodRepository.get(paymentMethodId, Context.api).then(\n\t\t\t\t(paymentMethod) => {\n\t\t\t\t\tthis.isVRPaymentPayment = (paymentMethod.formattedHandlerIdentifier === vrpaymentFormattedHandlerIdentifier);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_completion %}\n\n\n\t{% block vrpayment_order_action_completion_amount %}\n\t\t\n \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_completion_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-completion', {\n\n\ttemplate: template,\n\n\tinject: ['VRPaymentTransactionCompletionService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tisCompletion: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t},\n\n\t\tcompletion() {\n\t\t\tif (this.isCompletion) {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.VRPaymentTransactionCompletionService.createTransactionCompletion(\n\t\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\t\tthis.transactionData.transactions[0].id\n\t\t\t\t).then(() => {\n\t\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.captureAction.successTitle'),\n\t\t\t\t\t\tmessage: this.$tc('vrpayment-order.captureAction.successMessage')\n\t\t\t\t\t});\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_refund %}\n\n\n\t{% block vrpayment_order_action_refund_amount %}\n\n\t\t\n\t\t \n\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.maxAvailableItemsToRefund') }}:\n\t\t\t{{ this.$parent.$parent.itemRefundableQuantity }} \n\t\t
\n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trefundQuantity: 0,\n\t\t\tisLoading: true,\n\t\t\tcurrentLineItem: '',\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.refundQuantity = 1;\n\t\t},\n\n\t\trefund() {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundQuantity,\n\t\t\t\tthis.$parent.$parent.currentLineItem\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_refund_partial %}\n\n\n\t{% block vrpayment_order_action_refund_amount_partial %}\n\t\t\n\t\t \n\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.maxAvailableAmountToRefund') }}:\n\t\t\t{{ this.$parent.$parent.itemRefundableAmount }} \n\t\t
\n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button_partial %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund-partial', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tcurrency: this.transactionData.transactions[0].currency,\n\t\t\trefundAmount: 0.00,\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n createdComponent() {\n this.isLoading = false;\n this.currency = this.transactionData.transactions[0].currency;\n if (!this.refundAmount) {\n this.refundAmount = this.$parent.$parent.itemRefundableAmount;\n }\n },\n\n\t\tcreatePartialRefund(itemUniqueId) {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createPartialRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundAmount,\n\t\t\t\titemUniqueId\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n watch: {\n refundAmount(newValue) {\n if (newValue !== null) {\n this.refundAmount = Math.round(newValue * 100) / 100;\n }\n }\n }\n});\n","{% block vrpayment_order_action_refund_by_amount %}\n\n\n\t{% block vrpayment_order_action_refund_amount_by_amount %}\n\t\t\n\t\t \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_refund_confirm_button_by_amount %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-refund-by-amount', {\n\ttemplate,\n\n\tinject: ['VRPaymentRefundService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\torderId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tcurrency: this.transactionData.transactions[0].currency,\n\t\t\trefundAmount: 0,\n\t\t\trefundableAmount: 0,\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.currency = this.transactionData.transactions[0].currency;\n\t\t\tthis.refundAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t\tthis.refundableAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t},\n\n\t\trefundByAmount() {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefundByAmount(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\tthis.refundAmount\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.$emit('modal-close');\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t});\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n","{% block vrpayment_order_action_void %}\n\n\n\t{% block vrpayment_order_action_void_amount %}\n {# Review if this v-model:checked=\"isVoid\" needs to change to checked #}\n\t\t\n \n\t{% endblock %}\n\n\t{% block vrpayment_order_action_void_confirm_button %}\n\t\n\t\t\n\t\t\t{{ $tc('vrpayment-order.refundAction.confirmButton.text') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t \n \n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\n\nconst {Component, Mixin, Filter, Utils} = Shopware;\n\nComponent.register('vrpayment-order-action-void', {\n\ttemplate,\n\n\tinject: ['VRPaymentTransactionVoidService'],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\ttransactionData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t\tisVoid: false\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t},\n\t\tlineItemColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'uniqueId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.uniqueId'),\n\t\t\t\t\trawData: false,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tprimary: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'name',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.name'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'quantity',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.quantity'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amountIncludingTax',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.amountIncludingTax'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tinlineEdit: 'string',\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'type',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.type'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'taxAmount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.taxAmount'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tallowResize: true,\n\t\t\t\t\twidth: 'auto'\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.isLoading = false;\n\t\t\tthis.currency = this.transactionData.transactions[0].currency;\n\t\t\tthis.refundableAmount = this.transactionData.transactions[0].amountIncludingTax;\n\t\t\tthis.refundAmount = this.transactionData.transactions[0].amountIncludingTax;\n\t\t},\n\n\t\tvoidPayment() {\n\t\t\tif (this.isVoid) {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.VRPaymentTransactionVoidService.createTransactionVoid(\n\t\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\t\tthis.transactionData.transactions[0].id\n\t\t\t\t).then(() => {\n\t\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.voidAction.successTitle'),\n\t\t\t\t\t\tmessage: this.$tc('vrpayment-order.voidAction.successMessage')\n\t\t\t\t\t});\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t});\n\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t\tthis.$emit('modal-close');\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tthis.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n","{% block vrpayment_order_detail %}\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t{% block vrpayment_order_actions_section %}\n\t\t\t\t\n\t\t\t\t\t{% block vrpayment_order_transaction_refunds_action_button %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.refund') }}\n\t\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_completion_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.completion') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_void_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.void') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_download_invoice_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.download-invoice') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t\t{% block vrpayment_order_transaction_download_packing_slip_action_button %}\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.buttons.label.download-packing-slip') }}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\t\t \n\t\t{% block vrpayment_order_transaction_history_card %}\n\t\t
\n\t\t\t\n\n\t\t\t\t{% block vrpayment_order_transaction_history_grid %}\n\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.customerId') }}: {{ item.customerId }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.customerName') }}: {{ item.customerName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.creditCardHolder') }}: {{ item.creditCardHolder }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.paymentMethod') }}: {{ item.paymentMethodName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.paymentMethodBrand') }}: {{ item.brandName }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.PseudoCreditCardNumber') }}: {{ item.pseudoCardNumber }} \n\t\t\t\t\t\t{{ $tc('vrpayment-order.transactionHistory.CardExpire') }}: {{ item.cardExpireMonth }} / {{ item.cardExpireYear }} \n\t\t\t\t\t\tPayID: {{ item.payId }} \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_transaction_line_items_card %}\n
\n \n\n {% block vrpayment_order_transaction_line_items_grid %}\n \n {% block vrpayment_order_transaction_line_items_grid_grid_actions %}\n \n 0 || item.itemRefundedQuantity > 0\"\n @click=\"lineItemRefund(item.uniqueId)\">\n {{ $tc('vrpayment-order.buttons.label.refund-whole-line-item') }}\n \n\n 0\"\n @click=\"spawnModal('refund', item.uniqueId, item.refundableQuantity)\">\n {{ $tc('vrpayment-order.buttons.label.refund-line-item-by-quantity') }}\n \n\n 0\"\n @click=\"spawnModal('partialRefund', item.uniqueId, item.refundableQuantity, item.refundableAmount)\">\n {{ $tc('vrpayment-order.buttons.label.refund-line-item-parial') }}\n \n \n {% endblock %}\n {% block vrpayment_order_transaction_line_items_grid_bulk_actions %}\n \n \n {{ $tc('vrpayment-order.buttons.label.refund-line-item-selected') }}\n \n \n {% endblock %}\n\n \n {% endblock %}\n \n \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_transaction_refunds_card %}\n\t\t
0\">\n\t\t\t\n\n\t\t\t\t{% block vrpayment_order_transaction_refunds_grid %}\n\t\t\t\t\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\t\t\t \n\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund_partial %}\n\t\t\t
\n\t\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund %}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_refund_by_amount %}\n\t\t\t
\n\t\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_completion%}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t\t{% block vrpayment_order_actions_modal_void %}\n\t\t
\n\t\t \n\t\t{% endblock %}\n\t
\n\t
\n
\n{% endblock %}\n","/* global Shopware */\n\nimport '../../component/vrpayment-order-action-completion';\nimport '../../component/vrpayment-order-action-refund';\nimport '../../component/vrpayment-order-action-refund-partial';\nimport '../../component/vrpayment-order-action-refund-by-amount';\nimport '../../component/vrpayment-order-action-void';\nimport template from './index.html.twig';\nimport './index.scss';\n\nconst {Component, Mixin, Filter, Context, Utils} = Shopware;\nconst Criteria = Shopware.Data.Criteria;\n\nComponent.register('vrpayment-order-detail', {\n\ttemplate,\n\n\tinject: [\n\t\t'VRPaymentTransactionService',\n\t\t'VRPaymentRefundService',\n\t\t'repositoryFactory'\n\t],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttransactionData: {\n\t\t\t\ttransactions: [],\n\t\t\t\trefunds: []\n\t\t\t},\n\t\t\ttransaction: {},\n\t\t\tlineItems: [],\n\t\t\trefundableQuantity: 0,\n\t\t\titemRefundableQuantity: 0,\n\t\t\tisLoading: true,\n\t\t\torderId: '',\n\t\t\tcurrency: '',\n\t\t\tmodalType: '',\n\t\t\trefundAmount: 0.00,\n\t\t\trefundableAmount: 0.00,\n\t\t\titemRefundedAmount: 0.00,\n\t\t\titemRefundedQuantity: 0,\n\t\t\titemRefundableAmount: 0.00,\n\t\t\tcurrentLineItem: '',\n\t\t\trefundLineItemQuantity: [],\n\t\t\trefundLineItemAmount: [],\n\t\t\tselectedItems: []\n\t\t};\n\t},\n\n\tmetaInfo() {\n\t\treturn {\n\t\t\ttitle: this.$tc('vrpayment-order.header')\n\t\t};\n\t},\n\n\n\tcomputed: {\n\t\tdateFilter() {\n\t\t\treturn Filter.getByName('date');\n\t\t},\n\n\t\trelatedResourceColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'paymentMethodName',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.payment_method'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'state',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.state'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'currency',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.currency'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'authorized_amount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.authorized_amount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.transaction'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'customerId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.transactionHistory.types.customer'),\n\t\t\t\t\trawData: true\n\t\t\t\t}\n\t\t\t];\n\t\t},\n\n\t\tlineItemColumns() {\n\t\t\treturn [\n\t\t\t // It must be set in order to have correctly working checkbox mechanism\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'uniqueId',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.uniqueId'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'name',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.name'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'quantity',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.quantity'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amountIncludingTax',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.amountIncludingTax'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'type',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.type'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'taxAmount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.lineItem.types.taxAmount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'refundableQuantity',\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: false,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\n\t\trefundColumns() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tproperty: 'id',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.id'),\n\t\t\t\t\trawData: true,\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tprimary: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'amount',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.amount'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'state',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.state'),\n\t\t\t\t\trawData: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tproperty: 'createdOn',\n\t\t\t\t\tlabel: this.$tc('vrpayment-order.refund.types.createdOn'),\n\t\t\t\t\trawData: true\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route'() {\n\t\t\tthis.resetDataAttributes();\n\t\t\tthis.createdComponent();\n\t\t}\n\t},\n\n\tcreated() {\n\t\tthis.createdComponent();\n\t},\n\n\tmethods: {\n\t\tcreatedComponent() {\n\t\t\tthis.orderId = this.$route.params.id;\n\t\t\tconst orderRepository = this.repositoryFactory.create('order');\n\t\t\tconst orderCriteria = new Criteria(1, 1);\n\t\t\torderCriteria.addAssociation('transactions');\n\t\t\torderCriteria.getAssociation('transactions').addSorting(Criteria.sort('createdAt', 'DESC'));\n\n\t\t\torderRepository.get(this.orderId, Context.api, orderCriteria).then((order) => {\n\t\t\t\tthis.order = order;\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tvar totalAmountTemp = 0;\n\t\t\t\tvar refundsAmountTemp = 0;\n\t\t\t\tconst vrpaymentTransactionId = order.transactions[0].customFields.vrpayment_transaction_id;\n\t\t\t\tthis.VRPaymentTransactionService.getTransactionData(order.salesChannelId, vrpaymentTransactionId)\n\t\t\t\t\t.then((VRPaymentTransaction) => {\n\t\t\t\t\t\tthis.currency = VRPaymentTransaction.transactions[0].currency;\n\n\t\t\t\t\t\tVRPaymentTransaction.transactions[0].authorized_amount = Utils.format.currency(\n\t\t\t\t\t\t\tVRPaymentTransaction.transactions[0].authorizationAmount,\n\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tVRPaymentTransaction.refunds.forEach((refund) => {\n\t\t\t\t\t\t\trefundsAmountTemp = parseFloat(parseFloat(refundsAmountTemp) + parseFloat(refund.amount));\n\t\t\t\t\t\t\trefund.amount = Utils.format.currency(\n\t\t\t\t\t\t\t\trefund.amount,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\trefund.reductions.forEach((reduction) => {\n\t\t\t\t\t\t\t if (reduction.quantityReduction > 0) {\n if (this.refundLineItemQuantity[reduction.lineItemUniqueId] === undefined) {\n this.refundLineItemQuantity[reduction.lineItemUniqueId] = reduction.quantityReduction;\n } else {\n this.refundLineItemQuantity[reduction.lineItemUniqueId] += reduction.quantityReduction;\n }\n\t\t\t\t\t\t\t }\n if (reduction.unitPriceReduction > 0) {\n if (this.refundLineItemAmount[reduction.lineItemUniqueId] === undefined) {\n this.refundLineItemAmount[reduction.lineItemUniqueId] = reduction.unitPriceReduction;\n } else {\n this.refundLineItemAmount[reduction.lineItemUniqueId] += reduction.unitPriceReduction;\n }\n }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tVRPaymentTransaction.transactions[0].lineItems.forEach((lineItem) => {\n\t\t\t\t\t\t\tif (!lineItem.id) {\n\t\t\t\t\t\t\t\tlineItem.id = lineItem.uniqueId;\n }\n\n lineItem.itemRefundedAmount = parseFloat(this.refundLineItemAmount[lineItem.uniqueId] || 0) * parseInt(lineItem.quantity);\n lineItem.amountIncludingTax = parseFloat(lineItem.amountIncludingTax) || 0;\n\n lineItem.itemRefundedQuantity = parseInt(this.refundLineItemQuantity[lineItem.uniqueId]) || 0;\n lineItem.refundableAmount = parseFloat(\n (lineItem.amountIncludingTax - lineItem.itemRefundedAmount).toFixed(2)\n );\n\n\t\t\t\t\t\t\tlineItem.amountIncludingTax = Utils.format.currency(\n\t\t\t\t\t\t\t\tlineItem.amountIncludingTax,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tlineItem.taxAmount = Utils.format.currency(\n\t\t\t\t\t\t\t\tlineItem.taxAmount,\n\t\t\t\t\t\t\t\tthis.currency\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\ttotalAmountTemp = parseFloat(parseFloat(totalAmountTemp) + parseFloat(lineItem.unitPriceIncludingTax * lineItem.quantity));\n\n\t\t\t\t\t\t\tlineItem.refundableQuantity = parseInt(\n\t\t\t\t\t\t\t\tparseInt(lineItem.quantity) - parseInt(this.refundLineItemQuantity[lineItem.uniqueId] || 0)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.lineItems = VRPaymentTransaction.transactions[0].lineItems;\n\t\t\t\t\t\tthis.transactionData = VRPaymentTransaction;\n\t\t\t\t\t\tthis.transaction = this.transactionData.transactions[0];\n\t\t\t\t\t\tthis.refundAmount = Number(this.transactionData.transactions[0].amountIncludingTax);\n\t\t\t\t\t\tthis.refundableAmount = parseFloat(parseFloat(totalAmountTemp) - parseFloat(refundsAmountTemp));\n\n\t\t\t\t\t}).catch((errorResponse) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.paymentDetails.error.title'),\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\t\ttitle: this.$tc('vrpayment-order.paymentDetails.error.title'),\n\t\t\t\t\t\t\tmessage: errorResponse.message,\n\t\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tdownloadPackingSlip() {\n\t\t\twindow.open(\n\t\t\t\tthis.VRPaymentTransactionService.getPackingSlip(\n\t\t\t\t\tthis.transaction.metaData.salesChannelId,\n\t\t\t\t\tthis.transaction.id\n\t\t\t\t),\n\t\t\t\t'_blank'\n\t\t\t);\n\t\t},\n\n\t\tdownloadInvoice() {\n\t\t\twindow.open(\n\t\t\t\tthis.VRPaymentTransactionService.getInvoiceDocument(\n\t\t\t\t\tthis.transaction.metaData.salesChannelId,\n\t\t\t\t\tthis.transaction.id\n\t\t\t\t),\n\t\t\t\t'_blank'\n\t\t\t);\n\t\t},\n\n\t\tresetDataAttributes() {\n\t\t\tthis.transactionData = {\n\t\t\t\ttransactions: [],\n\t\t\t\trefunds: []\n\t\t\t};\n\t\t\tthis.lineItems = [];\n\t\t\tthis.refundLineItemQuantity = [];\n\t\t\tthis.refundLineItemAmount = [];\n\t\t\tthis.isLoading = true;\n\t\t},\n\n\t\tspawnModal(modalType, lineItemId, refundableQuantity, itemRefundableAmount) {\n\t\t\tthis.modalType = modalType;\n\t\t\tthis.currentLineItem = lineItemId;\n\t\t\tthis.itemRefundableQuantity = refundableQuantity;\n this.itemRefundableAmount = !isNaN(itemRefundableAmount) ? Math.round(itemRefundableAmount * 100) / 100 : 0;\n\t\t},\n\n\t\tcloseModal() {\n\t\t\tthis.modalType = '';\n\t\t},\n\n\t\tlineItemRefund(lineItemId) {\n\t\t\tthis.isLoading = true;\n\t\t\tthis.VRPaymentRefundService.createRefund(\n\t\t\t\tthis.transactionData.transactions[0].metaData.salesChannelId,\n\t\t\t\tthis.transactionData.transactions[0].id,\n\t\t\t\t0,\n\t\t\t\tlineItemId\n\t\t\t).then(() => {\n\t\t\t\tthis.createNotificationSuccess({\n\t\t\t\t\ttitle: this.$tc('vrpayment-order.refundAction.successTitle'),\n\t\t\t\t\tmessage: this.$tc('vrpayment-order.refundAction.successMessage')\n\t\t\t\t});\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n\t\t\t}).catch((errorResponse) => {\n\t\t\t\ttry {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.response.data.errors[0].title,\n\t\t\t\t\t\tmessage: errorResponse.response.data.errors[0].detail,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.createNotificationError({\n\t\t\t\t\t\ttitle: errorResponse.title,\n\t\t\t\t\t\tmessage: errorResponse.response.data,\n\t\t\t\t\t\tautoClose: false\n\t\t\t\t\t});\n\t\t\t\t} finally {\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tisSelectable(item) {\n\t\t\treturn item.refundableQuantity > 0 && item.refundableAmount > 0 && item.itemRefundedAmount == 0 && item.itemRefundedQuantity == 0;\n\t\t},\n\t\tonSelectionChanged(selection) {\n\t\t\tthis.selectedItems = Object.values(selection);\n\t\t},\n onPerformBulkAction() {\n if (this.selectedItems.length) {\n // Set isLoading to true to show the loader\n this.isLoading = true;\n\n // Force the DOM to update before proceeding with the asynchronous operations\n this.$nextTick(() => {\n const refundPromises = this.selectedItems.map((item) => {\n return this.lineItemRefundBulk(item.uniqueId); // Simulated refund action with delay\n });\n\n // Wait for all refund promises to complete\n Promise.all(refundPromises)\n .then(() => {\n // Once all promises are resolved, hide the loader and close the modal\n this.isLoading = false;\n this.$emit('modal-close');\n this.$nextTick(() => {\n this.$router.replace(`${this.$route.path}?hash=${Utils.createId()}`);\n });\n })\n .catch((error) => {\n // Handle any errors during the refund process\n this.createNotificationError({\n title: 'Error',\n message: 'Something went wrong with the refunds',\n autoClose: false\n });\n this.isLoading = false; // Ensure the loader is hidden even on error\n });\n });\n }\n },\n lineItemRefundBulk(lineItemId) {\n return new Promise((resolve, reject) => {\n this.VRPaymentRefundService.createRefund(\n this.transactionData.transactions[0].metaData.salesChannelId,\n this.transactionData.transactions[0].id,\n 0,\n lineItemId\n )\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-order.refundAction.successTitle'),\n message: this.$tc('vrpayment-order.refundAction.successMessage')\n });\n resolve();\n })\n .catch((errorResponse) => {\n try {\n this.createNotificationError({\n title: errorResponse.response.data.errors[0].title,\n message: errorResponse.response.data.errors[0].detail,\n autoClose: false\n });\n } catch (e) {\n this.createNotificationError({\n title: errorResponse.title,\n message: errorResponse.response.data,\n autoClose: false\n });\n } finally {\n reject();\n }\n });\n });\n },\n\t}\n});\n","/* global Shopware */\n\nimport './extension/sw-order';\nimport './page/vrpayment-order-detail';\n\nimport deDE from './snippet/de-DE.json';\nimport enGB from './snippet/en-GB.json';\nimport frFR from './snippet/fr-FR.json';\nimport itIT from './snippet/it-IT.json';\n\nconst {Module} = Shopware;\n\nModule.register('vrpayment-order', {\n\ttype: 'plugin',\n\tname: 'VRPayment',\n\ttitle: 'vrpayment-order.general.title',\n\tdescription: 'vrpayment-order.general.descriptionTextModule',\n\tversion: '1.0.1',\n\ttargetVersion: '1.0.1',\n\tcolor: '#2b52ff',\n\n\tsnippets: {\n\t\t'de-DE': deDE,\n\t\t'en-GB': enGB,\n\t\t'fr-FR': frFR,\n\t\t'it-IT': itIT\n\t},\n\n\trouteMiddleware(next, currentRoute) {\n\t\tif (currentRoute.name === 'sw.order.detail') {\n\t\t\tcurrentRoute.children.push({\n\t\t\t\tcomponent: 'vrpayment-order-detail',\n\t\t\t\tname: 'vrpayment.order.detail',\n\t\t\t\tisChildren: true,\n\t\t\t\tpath: '/sw/order/vrpayment/detail/:id'\n\t\t\t});\n\t\t}\n\t\tnext(currentRoute);\n\t}\n});\n","Shopware.Service('privileges').addPrivilegeMappingEntry({\n category: 'permissions',\n parent: 'vrpayment',\n key: 'vrpayment',\n roles: {\n viewer: {\n privileges: [\n 'sales_channel:read',\n 'sales_channel_payment_method:read',\n 'system_config:read'\n ],\n dependencies: []\n },\n editor: {\n privileges: [\n 'sales_channel:update',\n 'sales_channel_payment_method:create',\n 'sales_channel_payment_method:update',\n 'system_config:update',\n 'system_config:create',\n 'system_config:delete'\n ],\n dependencies: [\n 'vrpayment.viewer'\n ]\n }\n }\n});\n\nShopware.Service('privileges').addPrivilegeMappingEntry({\n category: 'permissions',\n parent: null,\n key: 'sales_channel',\n roles: {\n viewer: {\n privileges: [\n 'sales_channel_payment_method:read'\n ]\n },\n editor: {\n privileges: [\n 'payment_method:update'\n ]\n },\n creator: {\n privileges: [\n 'payment_method:create',\n 'shipping_method:create',\n 'delivery_time:create'\n ]\n },\n deleter: {\n privileges: [\n 'payment_method:delete'\n ]\n }\n }\n});\n","{% block vrpayment_settings %}\n\n\n\t{% block vrpayment_settings_header %}\n\t\n\t\t\n\t\t\t{{ $tc('sw-settings.index.title') }}\n\t\t\t \n\t\t\t{{ $tc('vrpayment-settings.header') }}\n\t\t \n\t \n\t{% endblock %}\n\n\t{% block vrpayment_settings_actions %}\n\t\n\t\t{% block vrpayment_settings_actions_save %}\n\t\t\n\t\t\t{{ $tc('vrpayment-settings.settingForm.save') }}\n\t\t \n\t\t{% endblock %}\n\t \n\t{% endblock %}\n\n\t{% block vrpayment_settings_content %}\n\t\n\n\t\t{% block vrpayment_settings_content_card %}\n\t\t\n\n\t\t\t{% block vrpayment_settings_content_card_channel_config %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel %}\n\t\t\t\t\n\n\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_title %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer %}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container %}\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container_text %}\n\t\t\t\t\t\t\t\t{{ $tc('vrpayment-settings.salesChannelCard.button.description') }}
\n\t\t\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_sales_channel_card_footer_container_button %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ $tc('vrpayment-settings.salesChannelCard.button.label') }}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t \n\t\t\t\t\t{% endblock %}\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_cards %}\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\n\n\t\t\t\t\t
\n\t\t\t\t \n\t\t\t\t{% endblock %}\n\n\t\t\t \n\t\t\t{% endblock %}\n\n\t\t\t{% block vrpayment_settings_content_card_loading %}\n\t\t\t \n\t\t\t{% endblock %}\n\t\t \n\t\t{% endblock %}\n\n\t \n\t{% endblock %}\n \n{% endblock %}\n","export const CONFIG_DOMAIN = 'VRPaymentPayment.config';\nexport const CONFIG_APPLICATION_KEY = CONFIG_DOMAIN + '.' + 'applicationKey';\nexport const CONFIG_EMAIL_ENABLED = CONFIG_DOMAIN + '.' + 'emailEnabled';\nexport const CONFIG_INTEGRATION = CONFIG_DOMAIN + '.' + 'integration';\nexport const CONFIG_LINE_ITEM_CONSISTENCY_ENABLED = CONFIG_DOMAIN + '.' + 'lineItemConsistencyEnabled';\nexport const CONFIG_SPACE_ID = CONFIG_DOMAIN + '.' + 'spaceId';\nexport const CONFIG_SPACE_VIEW_ID = CONFIG_DOMAIN + '.' + 'spaceViewId';\nexport const CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontInvoiceDownloadEnabled';\nexport const CONFIG_USER_ID = CONFIG_DOMAIN + '.' + 'userId';\nexport const CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontWebhooksUpdateEnabled';\nexport const CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED = CONFIG_DOMAIN + '.' + 'storefrontPaymentsUpdateEnabled';\n\nexport default {\n CONFIG_DOMAIN,\n CONFIG_APPLICATION_KEY,\n CONFIG_EMAIL_ENABLED,\n CONFIG_INTEGRATION,\n CONFIG_LINE_ITEM_CONSISTENCY_ENABLED,\n CONFIG_SPACE_ID,\n CONFIG_SPACE_VIEW_ID,\n CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED,\n CONFIG_USER_ID,\n CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED,\n CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED\n};","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from './configuration-constants';\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('vrpayment-settings', {\n\n template: template,\n\n inject: [\n 'acl',\n 'VRPaymentConfigurationService'\n ],\n\n mixins: [\n Mixin.getByName('notification'),\n Mixin.getByName('sw-inline-snippet')\n ],\n\n data() {\n return {\n\n config: {},\n\n isLoading: false,\n isTesting: false,\n\n isSaveSuccessful: false,\n\n applicationKeyFilled: false,\n applicationKeyErrorState: false,\n\n spaceIdFilled: false,\n spaceIdErrorState: false,\n\n userIdFilled: false,\n userIdErrorState: false,\n\n isSetDefaultPaymentSuccessful: false,\n isSettingDefaultPaymentMethods: false,\n\n configIntegrationDefaultValue: 'payment_page',\n configEmailEnabledDefaultValue: true,\n configLineItemConsistencyEnabledDefaultValue: true,\n configStorefrontInvoiceDownloadEnabledEnabledDefaultValue: true,\n configStorefrontWebhooksUpdateEnabledDefaultValue: true,\n configStorefrontPaymentsUpdateEnabledDefaultValue: true,\n\n ...constants\n };\n },\n\n props: {\n isLoading: {\n type: Boolean,\n required: true\n }\n },\n\n metaInfo() {\n return {\n title: this.$createTitle()\n };\n },\n\n watch: {\n config: {\n handler(configData) {\n const defaultConfig = this.$refs.configComponent.allConfigs.null;\n const salesChannelId = this.$refs.configComponent.selectedSalesChannelId;\n if (salesChannelId === null) {\n\n this.applicationKeyFilled = !!this.config[this.CONFIG_APPLICATION_KEY];\n this.spaceIdFilled = !!this.config[this.CONFIG_SPACE_ID];\n this.userIdFilled = !!this.config[this.CONFIG_USER_ID];\n\n if (!(this.CONFIG_INTEGRATION in this.config)) {\n this.config[this.CONFIG_INTEGRATION] = this.configIntegrationDefaultValue;\n }\n\n if (!(this.CONFIG_EMAIL_ENABLED in this.config)) {\n this.config[this.CONFIG_EMAIL_ENABLED] = this.configEmailEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config)) {\n this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED] = this.configLineItemConsistencyEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED] = this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] = this.configStorefrontWebhooksUpdateEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config)) {\n this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] = this.configStorefrontPaymentsUpdateEnabledDefaultValue;\n }\n\n } else {\n\n this.applicationKeyFilled = !!this.config[this.CONFIG_APPLICATION_KEY] || !!defaultConfig[this.CONFIG_APPLICATION_KEY];\n this.spaceIdFilled = !!this.config[this.CONFIG_SPACE_ID] || !!defaultConfig[this.CONFIG_SPACE_ID];\n this.userIdFilled = !!this.config[this.CONFIG_USER_ID] || !!defaultConfig[this.CONFIG_USER_ID];\n\n\n if (!(this.CONFIG_INTEGRATION in this.config) || !(this.CONFIG_INTEGRATION in defaultConfig)) {\n this.config[this.CONFIG_INTEGRATION] = this.configIntegrationDefaultValue;\n }\n\n if (!(this.CONFIG_EMAIL_ENABLED in this.config) || !(this.CONFIG_EMAIL_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_EMAIL_ENABLED] = this.configEmailEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in this.config) || !(this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_LINE_ITEM_CONSISTENCY_ENABLED] = this.configLineItemConsistencyEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_INVOICE_DOWNLOAD_ENABLED] = this.configStorefrontInvoiceDownloadEnabledEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] = this.configStorefrontWebhooksUpdateEnabledDefaultValue;\n }\n\n if (!(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in this.config) || !(this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED in defaultConfig)) {\n this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] = this.configStorefrontPaymentsUpdateEnabledDefaultValue;\n }\n }\n\n this.$emit('salesChannelChanged');\n this.$emit('update:value', configData);\n },\n deep: true\n }\n },\n\n methods: {\n checkTextFieldInheritance(value) {\n if (typeof value !== 'string') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkNumberFieldInheritance(value) {\n if (typeof value !== 'number') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkBoolFieldInheritance(value) {\n return typeof value !== 'boolean';\n },\n\n getInheritValue(key) {\n if (this.selectedSalesChannelId == null ) {\n return this.actualConfigData[key];\n } else {\n return this.allConfigs['null'][key];\n }\n },\n\n onSave() {\n if (!(this.spaceIdFilled && this.userIdFilled && this.applicationKeyFilled)) {\n this.setErrorStates();\n return;\n }\n this.save();\n },\n\n save() {\n this.isLoading = true;\n\n this.$refs.configComponent.save().then((res) => {\n if (res) {\n this.config = res;\n }\n this.registerWebHooks();\n this.synchronizePaymentMethodConfiguration();\n this.installOrderDeliveryStates();\n }).catch((e) => {\n console.error('Error:', e);\n this.isLoading = false;\n });\n },\n\n registerWebHooks() {\n if (this.config[this.CONFIG_STOREFRONT_WEBHOOKS_UPDATE_ENABLED] === false) {\n return false;\n }\n\n this.VRPaymentConfigurationService.registerWebHooks(this.$refs.configComponent.selectedSalesChannelId)\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messageWebHookUpdated')\n });\n }).catch((e) => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messageWebHookError')\n });\n this.isLoading = false;\n console.error('Error:', e);\n });\n },\n\n synchronizePaymentMethodConfiguration() {\n if (this.config[this.CONFIG_STOREFRONT_PAYMENTS_UPDATE_ENABLED] === false) {\n return false;\n }\n\n this.VRPaymentConfigurationService.synchronizePaymentMethodConfiguration(this.$refs.configComponent.selectedSalesChannelId)\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messagePaymentMethodConfigurationUpdated')\n });\n this.isLoading = false;\n }).catch((e) => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messagePaymentMethodConfigurationError')\n });\n this.isLoading = false;\n console.error('Error:', e);\n });\n },\n\n installOrderDeliveryStates(){\n this.VRPaymentConfigurationService.installOrderDeliveryStates()\n .then(() => {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.settingForm.messageOrderDeliveryStateUpdated')\n });\n this.isLoading = false;\n }).catch(() => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.titleError'),\n message: this.$tc('vrpayment-settings.settingForm.messageOrderDeliveryStateError')\n });\n this.isLoading = false;\n });\n },\n\n onSetPaymentMethodDefault() {\n this.isSettingDefaultPaymentMethods = true;\n this.VRPaymentConfigurationService.setVRPaymentAsSalesChannelPaymentDefault(\n this.$refs.configComponent.selectedSalesChannelId\n ).then(() => {\n this.isSettingDefaultPaymentMethods = false;\n this.isSetDefaultPaymentSuccessful = true;\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.titleSuccess'),\n message: this.$tc('vrpayment-settings.salesChannelCard.messageDefaultPaymentUpdated')\n });\n });\n },\n\n setErrorStates() {\n const messageNotBlankErrorState = {\n code: 1,\n detail: this.$tc('vrpayment-settings.messageNotBlank')\n };\n\n if (!this.spaceIdFilled) {\n this.spaceIdErrorState = messageNotBlankErrorState;\n }\n\n if (!this.userIdFilled) {\n this.userIdErrorState = messageNotBlankErrorState;\n }\n\n if (!this.applicationKeyFilled) {\n this.applicationKeyErrorState = messageNotBlankErrorState;\n }\n },\n\n // Handles the 'check-api-connection-event'.\n // Uses the provided apiConnectionData to perform API connection checks.\n onCheckApiConnection(apiConnectionData) {\n const { spaceId, userId, applicationKey } = apiConnectionData;\n this.isTesting = true;\n\n this.VRPaymentConfigurationService.checkApiConnection(spaceId, userId, applicationKey)\n .then((res) => {\n if (res.result === 200) {\n this.createNotificationSuccess({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.successMessage')\n });\n } else {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.errorMessage')\n });\n }\n this.isTesting = false;\n }).catch(() => {\n this.createNotificationError({\n title: this.$tc('vrpayment-settings.settingForm.credentials.alert.title'),\n message: this.$tc('vrpayment-settings.settingForm.credentials.alert.errorMessage')\n });\n this.isTesting = false;\n });\n }\n }\n});\n","{% block vrpayment_settings_content_card_channel_config_credentials %}\n\t\n\n\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_user_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_application_key %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t
\n\t\t\t\t{% endblock %}\n\n\t\t\t\t{% verbatim %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $tc('vrpayment-settings.settingForm.credentials.button.label') }}\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t{% endverbatim %}\n\n\t\t\t \n\t\t{% endblock %}\n\t \n\n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-credentials', {\n template: template,\n\n name: 'VRPaymentCredentials',\n\n inject: [\n 'acl'\n ],\n\n mixins: [\n Mixin.getByName('notification')\n ],\n\n props: {\n actualConfigData: {\n type: Object,\n required: true\n },\n allConfigs: {\n type: Object,\n required: true\n },\n\n selectedSalesChannelId: {\n required: true\n },\n spaceIdFilled: {\n type: Boolean,\n required: true\n },\n spaceIdErrorState: {\n required: true\n },\n userIdFilled: {\n type: Boolean,\n required: true\n },\n userIdErrorState: {\n required: true\n },\n applicationKeyFilled: {\n type: Boolean,\n required: true\n },\n applicationKeyErrorState: {\n required: true\n },\n isLoading: {\n type: Boolean,\n required: true\n },\n isTesting: {\n type: Boolean,\n required: false\n }\n },\n\n data() {\n return {\n ...constants\n };\n },\n\n methods: {\n\n checkTextFieldInheritance(value) {\n if (typeof value !== 'string') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkNumberFieldInheritance(value) {\n if (typeof value !== 'number') {\n return true;\n }\n\n return value.length <= 0;\n },\n\n checkBoolFieldInheritance(value) {\n return typeof value !== 'boolean';\n },\n\n // Emits the 'check-api-connection-event' with the current API connection parameters.\n // Used to trigger API connection testing from this component.\n emitCheckApiConnectionEvent() {\n const apiConnectionParams = {\n spaceId: this.actualConfigData[constants.CONFIG_SPACE_ID],\n userId: this.actualConfigData[constants.CONFIG_USER_ID],\n applicationKey: this.actualConfigData[constants.CONFIG_APPLICATION_KEY]\n };\n\n this.$emit('check-api-connection-event', apiConnectionParams);\n }\n }\n});\n","{% block vrpayment_settings_content_card_channel_config_options %}\n\t\n\n\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container %}\n\t\t\t\n\n\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings %}\n\t\t\t\t\t\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_space_view_id %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_integration %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_line_item_consistency_enabled %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\n\t\t\t\t\t\t{% block vrpayment_settings_content_card_channel_config_credentials_card_container_settings_email_enabled %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t{% endblock %}\n\t\t\t\t\t
\n\t\t\t\t{% endblock %}\n\t\t\t \n\t\t{% endblock %}\n\t \n\n{% endblock %}\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentOptions',\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tcomputed: {\n\t\tintegrationOptions() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'payment_page',\n\t\t\t\t\tname: this.$tc('vrpayment-settings.settingForm.options.integration.options.payment_page')\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'iframe',\n\t\t\t\t\tname: this.$tc('vrpayment-settings.settingForm.options.integration.options.iframe')\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","{% block vrpayment_settings_icon %}\n \n \n\n\n\t\n \n\n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t \n\t\n\t\n\t \n\t \n \n \n\n \n{% endblock %}\n","import template from './index.html.twig';\n\nconst { Component } = Shopware;\n\nComponent.register('sw-vrpayment-settings-icon', {\n template\n});\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t \n \n\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-storefront-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentStorefrontOptions',\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t
\n\t \n \n\n","/* global Shopware */\n\nimport template from './index.html.twig';\nimport constants from '../../page/vrpayment-settings/configuration-constants'\n\nconst {Component, Mixin} = Shopware;\n\nComponent.register('sw-vrpayment-advanced-options', {\n\ttemplate: template,\n\n\tname: 'VRPaymentAdvancedOptions',\n\n\tinject: [\n\t\t'acl'\n\t],\n\n\tmixins: [\n\t\tMixin.getByName('notification')\n\t],\n\n\tprops: {\n\t\tactualConfigData: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tallConfigs: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tselectedSalesChannelId: {\n\t\t\trequired: true\n\t\t},\n\t\tisLoading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t...constants\n\t\t};\n\t},\n\n\tmethods: {\n\t\tcheckTextFieldInheritance(value) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckNumberFieldInheritance(value) {\n\t\t\tif (typeof value !== 'number') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn value.length <= 0;\n\t\t},\n\n\t\tcheckBoolFieldInheritance(value) {\n\t\t\treturn typeof value !== 'boolean';\n\t\t}\n\t}\n});\n","/* global Shopware */\n\nimport './acl';\nimport './page/vrpayment-settings';\nimport './component/sw-vrpayment-credentials';\nimport './component/sw-vrpayment-options';\nimport './component/sw-vrpayment-settings-icon';\nimport './component/sw-vrpayment-storefront-options';\nimport './component/sw-vrpayment-advanced-options';\n\nimport deDE from './snippet/de-DE.json';\nimport enGB from './snippet/en-GB.json';\nimport frFR from './snippet/fr-FR.json';\nimport itIT from './snippet/it-IT.json';\n\nconst {Module} = Shopware;\n\nModule.register('vrpayment-settings', {\n\ttype: 'plugin',\n\tname: 'VRPayment',\n\ttitle: 'vrpayment-settings.general.descriptionTextModule',\n\tdescription: 'vrpayment-settings.general.descriptionTextModule',\n\tcolor: '#28d8ff',\n\ticon: 'default-action-settings',\n\tversion: '1.0.1',\n\ttargetVersion: '1.0.1',\n\n snippets: {\n 'de-DE': deDE,\n 'en-GB': enGB,\n 'fr-FR': frFR,\n 'it-IT': itIT,\n },\n\n\troutes: {\n\t\tindex: {\n\t\t\tcomponent: 'vrpayment-settings',\n\t\t\tpath: 'index',\n\t\t\tmeta: {\n\t\t\t\tparentPath: 'sw.settings.index',\n\t\t\t\tprivilege: 'vrpayment.viewer'\n\t\t\t},\n\t\t\tprops: {\n default: (route) => {\n return {\n hash: route.params.hash,\n };\n },\n },\n\t\t}\n\t},\n\n\tsettingsItem: {\n\t\tgroup: 'plugins',\n\t\tto: 'vrpayment.settings.index',\n\t\ticonComponent: 'sw-vrpayment-settings-icon',\n\t\tbackgroundEnabled: true,\n\t\tprivilege: 'vrpayment.viewer'\n\t}\n\n});\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Config\\Controller\\ConfigurationController\n */\nclass VRPaymentConfigurationService extends ApiService {\n\n\t/**\n\t * VRPaymentConfigurationService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Register web hooks\n\t *\n\t * @param {String|null} salesChannelId\n\t * @return {*}\n\t */\n\tregisterWebHooks(salesChannelId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/register-web-hooks`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Test API connection\n\t *\n\t * @param {int|null} spaceId\n\t * @param {int|null} userId\n\t * @param {String|null} applicationId\n\t * @return {*}\n\t */\n\tcheckApiConnection(spaceId = null, userId = null, applicationId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/check-api-connection`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tspaceId: spaceId,\n\t\t\t\tuserId: userId,\n\t\t\t\tapplicationId: applicationId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Set's the default payment method to VRPayment for the given salesChannel id.\n\t *\n\t * @param {String|null} salesChannelId\n\t *\n\t * @returns {Promise}\n\t */\n\tsetVRPaymentAsSalesChannelPaymentDefault(salesChannelId = null) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/set-vrpayment-as-sales-channel-payment-default`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param salesChannelId\n\t * @return {Promise}\n\t */\n\tsynchronizePaymentMethodConfiguration(salesChannelId = null) {\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/synchronize-payment-method-configuration`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @return {*}\n\t */\n\tinstallOrderDeliveryStates() {\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/configuration/install-order-delivery-states`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentConfigurationService;\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\RefundController\n */\nclass VRPaymentRefundService extends ApiService {\n\n\t/**\n\t * VRPaymentRefundService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {int} quantity\n\t * @param {int} lineItemId\n\t * @return {*}\n\t */\n\tcreateRefund(salesChannelId, transactionId, quantity, lineItemId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\tquantity: quantity,\n\t\t\t\tlineItemId: lineItemId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {float} refundableAmount\n\t * @return {*}\n\t */\n\tcreateRefundByAmount(salesChannelId, transactionId, refundableAmount) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-refund-by-amount/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\trefundableAmount: refundableAmount\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Refund a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @param {float} refundableAmount\n\t * @param {String} lineItemId\n\t * @return {*}\n\t */\n\tcreatePartialRefund(salesChannelId, transactionId, refundableAmount, lineItemId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/refund/create-partial-refund/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId,\n\t\t\t\trefundableAmount: refundableAmount,\n\t\t\t\tlineItemId: lineItemId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentRefundService;\n","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionController\n */\nclass VRPaymentTransactionService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Get transaction data\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tgetTransactionData(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-transaction-data/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n\n\t/**\n\t * Download Invoice Document\n\t *\n\t * @param context\n\t * @param salesChannelId\n\t * @param transactionId\n\t * @return {string}\n\t */\n\tgetInvoiceDocument(salesChannelId, transactionId) {\n\t\treturn `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-invoice-document/${salesChannelId}/${transactionId}`;\n\t}\n\n\t/**\n\t * Download Packing slip\n\t *\n\t * @param salesChannelId\n\t * @param transactionId\n\t * @return {string}\n\t */\n\tgetPackingSlip(salesChannelId, transactionId) {\n\t\treturn `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction/get-packing-slip/${salesChannelId}/${transactionId}`;\n\t}\n}\n\nexport default VRPaymentTransactionService;","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionCompletionController\n */\nclass VRPaymentTransactionCompletionService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionCompletionService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Complete a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tcreateTransactionCompletion(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-completion/create-transaction-completion/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentTransactionCompletionService;","/* global Shopware */\n\nconst ApiService = Shopware.Classes.ApiService;\n\n/**\n * @class VRPaymentPayment\\Core\\Api\\Transaction\\Controller\\TransactionVoidController\n */\nclass VRPaymentTransactionVoidService extends ApiService {\n\n\t/**\n\t * VRPaymentTransactionVoidService constructor\n\t *\n\t * @param httpClient\n\t * @param loginService\n\t * @param apiEndpoint\n\t */\n\tconstructor(httpClient, loginService, apiEndpoint = 'vrpayment') {\n\t\tsuper(httpClient, loginService, apiEndpoint);\n\t}\n\n\t/**\n\t * Void a transaction\n\t *\n\t * @param {String} salesChannelId\n\t * @param {int} transactionId\n\t * @return {*}\n\t */\n\tcreateTransactionVoid(salesChannelId, transactionId) {\n\n\t\tconst headers = this.getBasicHeaders();\n\t\tconst apiRoute = `${Shopware.Context.api.apiPath}/_action/${this.getApiBasePath()}/transaction-void/create-transaction-void/`;\n\n\t\treturn this.httpClient.post(\n\t\t\tapiRoute,\n\t\t\t{\n\t\t\t\tsalesChannelId: salesChannelId,\n\t\t\t\ttransactionId: transactionId\n\t\t\t},\n\t\t\t{\n\t\t\t\theaders: headers\n\t\t\t}\n\t\t).then((response) => {\n\t\t\treturn ApiService.handleResponse(response);\n\t\t});\n\t}\n}\n\nexport default VRPaymentTransactionVoidService;","/* global Shopware */\n\nimport VRPaymentConfigurationService from '../core/service/api/vrpayment-configuration.service';\nimport VRPaymentRefundService from '../core/service/api/vrpayment-refund.service';\nimport VRPaymentTransactionService from '../core/service/api/vrpayment-transaction.service';\nimport VRPaymentTransactionCompletionService\n\tfrom '../core/service/api/vrpayment-transaction-completion.service';\nimport VRPaymentTransactionVoidService\n\tfrom '../core/service/api/vrpayment-transaction-void.service';\n\n\nconst {Application} = Shopware;\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentConfigurationService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentConfigurationService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentRefundService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentRefundService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionCompletionService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionCompletionService(initContainer.httpClient, container.loginService);\n});\n\n// noinspection JSUnresolvedFunction\nApplication.addServiceProvider('VRPaymentTransactionVoidService', (container) => {\n\tconst initContainer = Application.getContainer('init');\n\treturn new VRPaymentTransactionVoidService(initContainer.httpClient, container.loginService);\n});"],"names":["template$c","Component","Context","Criteria","vrpaymentFormattedHandlerIdentifier","template","orderRepository","orderCriteria","order","paymentMethodId","paymentMethod","template$b","Mixin","Filter","Utils","errorResponse","template$a","template$9","itemUniqueId","newValue","template$8","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}
diff --git a/src/Resources/public/storefront/js/app.js b/src/Resources/public/storefront/js/app.js
index fc1c90c..773dfe8 100644
--- a/src/Resources/public/storefront/js/app.js
+++ b/src/Resources/public/storefront/js/app.js
@@ -29,7 +29,7 @@
payment_method_handler_status: 'input[name="vrpayment_payment_handler_validation_status"]',
payment_form_id: 'confirmOrderForm',
button_cancel_id: 'vrpaymentOrderCancel',
- button_home_override: 'vrpaymentHomeLink',
+ // button_home_override: 'vrpaymentHomeLink',
loader_id: 'vrpaymentLoader',
checkout_url: null,
checkout_url_id: 'checkoutUrl',
@@ -46,7 +46,7 @@
this.cart_recreate_url = document.getElementById(this.cart_recreate_url_id).value;
document.getElementById(this.button_cancel_id).addEventListener('click', this.recreateCart, false);
- document.getElementById(this.button_home_override).addEventListener('click', this.recreateCart, false);
+ // document.getElementById(this.button_home_override).addEventListener('click', this.recreateCart, false);
document.getElementById(this.payment_form_id).addEventListener('submit', this.submitPayment, false);
VRPaymentCheckout.getIframe();
diff --git a/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig b/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
index 5e6c15b..9aa434c 100644
--- a/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
+++ b/src/Resources/views/storefront/page/checkout/order/vrpayment.html.twig
@@ -1,15 +1,11 @@
{% sw_extends '@Storefront/storefront/page/checkout/_page.html.twig' %}
-{% block base_header %}
- {% sw_include '@VRPaymentPayment/storefront/page/checkout/order/vrpayment_header.html.twig' %}
-{% endblock %}
-
-{% block base_navigation %}{% endblock %}
{% block base_body_classes %}vrpayment-payment is-act-confirmpage{% endblock %}
{% block page_checkout_main_content %}
- {% block page_checkout_pay %}
- {% block page_checkout_confirm_header %}
+
+ {% block page_checkout_pay %}
+ {% block page_checkout_confirm_header %}
{{ "vrpayment.payHeader"|trans|sw_sanitize }}
@@ -144,10 +140,6 @@
{% endblock %}
-{% block base_footer %}
- {% sw_include '@Storefront/storefront/layout/footer/footer-minimal.html.twig' %}
-{% endblock %}
-
{% block base_body_script %}
{{ parent() }}
{% if page.extensions.vRPaymentData %}
diff --git a/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig b/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig
deleted file mode 100644
index 4d958c1..0000000
--- a/src/Resources/views/storefront/page/checkout/order/vrpayment_header.html.twig
+++ /dev/null
@@ -1,53 +0,0 @@
-{% sw_extends '@Storefront/storefront/layout/header/header-minimal.html.twig' %}
-
-{% block layout_header_minimal_logo %}
-
-{% endblock %}
-
-{% block layout_header_minimal_button %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/src/VRPaymentPayment.php b/src/VRPaymentPayment.php
index e305188..a6650cb 100644
--- a/src/VRPaymentPayment.php
+++ b/src/VRPaymentPayment.php
@@ -3,6 +3,7 @@
namespace VRPaymentPayment;
use Shopware\Core\{
+ Framework\Feature,
Framework\Plugin,
Framework\Plugin\Context\ActivateContext,
Framework\Plugin\Context\DeactivateContext,
@@ -21,6 +22,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
// expect the vendor folder on Shopware store releases
if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
@@ -82,19 +84,21 @@ class VRPaymentPayment extends Plugin {
{
parent::build($container);
- $locator = new FileLocator('Resources/config');
+ $confDir = \rtrim($this->getPath(), '/') . '/Resources/config';
+ $locator = new FileLocator($confDir);
$resolver = new LoaderResolver([
- new YamlFileLoader($container, $locator),
- new GlobFileLoader($container, $locator),
- new DirectoryLoader($container, $locator),
+ new YamlFileLoader($container, $locator),
+ new XmlFileLoader($container, $locator),
+ new GlobFileLoader($container, $locator),
+ new DirectoryLoader($container, $locator),
]);
$configLoader = new DelegatingLoader($resolver);
- $confDir = \rtrim($this->getPath(), '/') . '/Resources/config';
-
$configLoader->load($confDir . '/{packages}/*.yaml', 'glob');
+
+ $configLoader->load('services/core/checkout.xml');
}
public function enrichPrivileges(): array