From 0fc66b8cbdb471f19fc07bf54bc14cc55ab2ca64 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 11 Jun 2024 09:19:24 +0300 Subject: [PATCH 01/74] PIPRES-427: ideal v2 improvements --- changelog.md | 3 + .../PaymentOption/IdealDropdownInfoBlock.php | 61 ----------------- src/Builder/FormBuilder.php | 25 ------- src/Config/Config.php | 7 +- .../PaymentOption/PaymentOptionHandler.php | 4 -- src/Install/Installer.php | 1 - src/Install/Uninstall.php | 1 - .../IdealPaymentOptionProvider.php | 27 +------- src/Service/ConfigFieldService.php | 1 - src/Service/IssuerService.php | 67 ------------------- src/Service/SettingsSaveService.php | 2 - upgrade/Upgrade-2.0.0.php | 1 - upgrade/Upgrade-6.0.1.php | 3 - upgrade/Upgrade-6.2.1.php | 24 +++++++ views/css/mollie.css | 27 -------- views/css/mollie_15.css | 27 -------- views/templates/hook/ideal_dropdown.tpl | 60 ----------------- views/templates/hook/payment.tpl | 38 ----------- 18 files changed, 29 insertions(+), 350 deletions(-) delete mode 100644 src/Builder/Content/PaymentOption/IdealDropdownInfoBlock.php delete mode 100644 src/Service/IssuerService.php create mode 100644 upgrade/Upgrade-6.2.1.php delete mode 100644 views/templates/hook/ideal_dropdown.tpl diff --git a/changelog.md b/changelog.md index 2d0a3e828..09a8211bc 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,9 @@ # Changelog # +## Changes in release 6.2.1 ## ++ Ideal v2 payment method improvement + ## Changes in release 6.2.0 ## + New payment methods: Bancomat and Alma + Apple certificate update diff --git a/src/Builder/Content/PaymentOption/IdealDropdownInfoBlock.php b/src/Builder/Content/PaymentOption/IdealDropdownInfoBlock.php deleted file mode 100644 index 318bbff0d..000000000 --- a/src/Builder/Content/PaymentOption/IdealDropdownInfoBlock.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @copyright Mollie B.V. - * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md - * - * @see https://github.com/mollie/PrestaShop - * @codingStandardsIgnoreStart - */ - -namespace Mollie\Builder\Content\PaymentOption; - -use Mollie; -use Mollie\Api\Types\PaymentMethod; -use Mollie\Builder\TemplateBuilderInterface; -use Mollie\Service\IssuerService; - -if (!defined('_PS_VERSION_')) { - exit; -} - -class IdealDropdownInfoBlock implements TemplateBuilderInterface -{ - /** - * @var Mollie - */ - private $module; - - /** - * @var IssuerService - */ - private $issuerService; - - public function __construct(Mollie $module, IssuerService $issuerService) - { - $this->module = $module; - $this->issuerService = $issuerService; - } - - /** - * {@inheritDoc} - */ - public function buildParams() - { - return [ - 'idealIssuers' => $this->getIdealIssuers(), - ]; - } - - /** - * @return array - */ - private function getIdealIssuers() - { - $issuers = $this->issuerService->getIdealIssuers(); - - return isset($issuers[PaymentMethod::IDEAL]) ? $issuers[PaymentMethod::IDEAL] : []; - } -} diff --git a/src/Builder/FormBuilder.php b/src/Builder/FormBuilder.php index 871d53870..2af16f9e8 100644 --- a/src/Builder/FormBuilder.php +++ b/src/Builder/FormBuilder.php @@ -372,31 +372,6 @@ protected function getAccountSettingsSection($isApiKeyProvided) ], ]; - $input = array_merge($input, [ - [ - 'type' => 'select', - 'label' => $this->module->l('Issuer list', self::FILE_NAME), - 'tab' => $generalSettings, - 'desc' => $this->module->l('Some payment methods (e.g. iDEAL) have an issuer list. Select where to display the list.', self::FILE_NAME), - 'name' => Config::MOLLIE_ISSUERS[(int) $this->configuration->get(Config::MOLLIE_ENVIRONMENT) ? 'production' : 'sandbox'], - 'options' => [ - 'query' => [ - [ - 'id' => Config::ISSUERS_ON_CLICK, - 'name' => $this->module->l('In the shop checkout', self::FILE_NAME), - ], - [ - 'id' => Config::ISSUERS_PAYMENT_PAGE, - 'name' => $this->module->l('In the Mollie Checkout', self::FILE_NAME), - ], - ], - 'id' => 'id', - 'name' => 'name', - ], - ], - ] - ); - $input[] = [ 'type' => 'mollie-h2', 'tab' => $generalSettings, diff --git a/src/Config/Config.php b/src/Config/Config.php index a20d2dd87..6ca067414 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -82,8 +82,6 @@ class Config const LOGOS_NORMAL = 'normal'; const LOGOS_HIDE = 'hide'; - const ISSUERS_ON_CLICK = 'on-click'; - const ISSUERS_PAYMENT_PAGE = 'payment-page'; const METHODS_CONFIG = 'MOLLIE_METHODS_CONFIG'; const ENVIRONMENT_TEST = 0; @@ -113,10 +111,7 @@ class Config const MOLLIE_IMAGES = 'MOLLIE_IMAGES'; const MOLLIE_SHOW_RESEND_PAYMENT_LINK = 'MOLLIE_SHOW_RESEND_PAYMENT_LINK'; - const MOLLIE_ISSUERS = [ - 'sandbox' => 'MOLLIE_SANDBOX_ISSUERS', - 'production' => 'MOLLIE_PRODUCTION_ISSUERS', - ]; + const MOLLIE_CSS = 'MOLLIE_CSS'; const MOLLIE_DEBUG_LOG = 'MOLLIE_DEBUG_LOG'; const MOLLIE_METHOD_COUNTRIES = 'MOLLIE_METHOD_COUNTRIES'; diff --git a/src/Handler/PaymentOption/PaymentOptionHandler.php b/src/Handler/PaymentOption/PaymentOptionHandler.php index 1fe2ab067..414490995 100644 --- a/src/Handler/PaymentOption/PaymentOptionHandler.php +++ b/src/Handler/PaymentOption/PaymentOptionHandler.php @@ -125,10 +125,6 @@ private function isIdealPaymentMethod(MolPaymentMethod $paymentMethod) return false; } - if ($this->configurationAdapter->get(Config::MOLLIE_ISSUERS) !== Config::ISSUERS_ON_CLICK) { - return false; - } - return true; } diff --git a/src/Install/Installer.php b/src/Install/Installer.php index 15720d22d..60bcc10eb 100644 --- a/src/Install/Installer.php +++ b/src/Install/Installer.php @@ -187,7 +187,6 @@ protected function initConfig() $this->configurationAdapter->updateValue(Config::MOLLIE_PAYMENTSCREEN_LOCALE, Config::PAYMENTSCREEN_LOCALE_BROWSER_LOCALE); $this->configurationAdapter->updateValue(Config::MOLLIE_IFRAME, true); $this->configurationAdapter->updateValue(Config::MOLLIE_IMAGES, Config::LOGOS_NORMAL); - $this->configurationAdapter->updateValue(Config::MOLLIE_ISSUERS, Config::ISSUERS_ON_CLICK); $this->configurationAdapter->updateValue(Config::MOLLIE_CSS, ''); $this->configurationAdapter->updateValue(Config::MOLLIE_TRACKING_URLS, ''); $this->configurationAdapter->updateValue(Config::MOLLIE_DEBUG_LOG, Config::DEBUG_LOG_ERRORS); diff --git a/src/Install/Uninstall.php b/src/Install/Uninstall.php index 8a15ced6c..95b8d84ea 100644 --- a/src/Install/Uninstall.php +++ b/src/Install/Uninstall.php @@ -75,7 +75,6 @@ private function deleteConfig() Config::MOLLIE_SEND_ORDER_CONFIRMATION, Config::MOLLIE_IFRAME, Config::MOLLIE_IMAGES, - Config::MOLLIE_ISSUERS, Config::MOLLIE_CSS, Config::MOLLIE_DEBUG_LOG, Config::MOLLIE_DISPLAY_ERRORS, diff --git a/src/Provider/PaymentOption/IdealPaymentOptionProvider.php b/src/Provider/PaymentOption/IdealPaymentOptionProvider.php index dbf78324c..61d6ce1d9 100644 --- a/src/Provider/PaymentOption/IdealPaymentOptionProvider.php +++ b/src/Provider/PaymentOption/IdealPaymentOptionProvider.php @@ -38,7 +38,6 @@ use Mollie; use Mollie\Adapter\LegacyContext; -use Mollie\Builder\Content\PaymentOption\IdealDropdownInfoBlock; use Mollie\Provider\CreditCardLogoProvider; use Mollie\Provider\OrderTotal\OrderTotalProviderInterface; use Mollie\Provider\PaymentFeeProviderInterface; @@ -81,11 +80,6 @@ class IdealPaymentOptionProvider implements PaymentOptionProviderInterface */ private $templateParser; - /** - * @var IdealDropdownInfoBlock - */ - private $idealDropdownInfoBlock; - /** * @var LanguageService */ @@ -99,7 +93,6 @@ public function __construct( CreditCardLogoProvider $creditCardLogoProvider, PaymentFeeProviderInterface $paymentFeeProvider, TemplateParserInterface $templateParser, - IdealDropdownInfoBlock $idealDropdownInfoBlock, LanguageService $languageService, OrderTotalProviderInterface $orderTotalProvider ) { @@ -108,7 +101,6 @@ public function __construct( $this->creditCardLogoProvider = $creditCardLogoProvider; $this->paymentFeeProvider = $paymentFeeProvider; $this->templateParser = $templateParser; - $this->idealDropdownInfoBlock = $idealDropdownInfoBlock; $this->languageService = $languageService; $this->orderTotalProvider = $orderTotalProvider; } @@ -131,19 +123,7 @@ public function getPaymentOption(MolPaymentMethod $paymentMethod): PaymentOption ['method' => $paymentMethod->getPaymentMethodName(), 'rand' => Mollie\Utility\TimeUtility::getCurrentTimeStamp()], true )); - $paymentOption->setInputs([ - 'token' => [ - 'name' => 'issuer', - 'type' => 'hidden', - 'value' => '', - ], - ]); - - $paymentOption->setAdditionalInformation($this->templateParser->parseTemplate( - $this->context->getSmarty(), - $this->idealDropdownInfoBlock, - $this->module->getLocalPath() . 'views/templates/hook/ideal_dropdown.tpl' - )); + $paymentOption->setLogo($this->creditCardLogoProvider->getMethodOptionLogo($paymentMethod)); $paymentFeeData = $this->paymentFeeProvider->getPaymentFee($paymentMethod, $this->orderTotalProvider->getOrderTotal()); @@ -151,11 +131,6 @@ public function getPaymentOption(MolPaymentMethod $paymentMethod): PaymentOption if ($paymentFeeData->isActive()) { $paymentOption->setInputs( [ - [ - 'name' => 'issuer', - 'type' => 'hidden', - 'value' => '', - ], [ 'type' => 'hidden', 'name' => 'payment-fee-price', diff --git a/src/Service/ConfigFieldService.php b/src/Service/ConfigFieldService.php index 054904753..7c8717696 100644 --- a/src/Service/ConfigFieldService.php +++ b/src/Service/ConfigFieldService.php @@ -68,7 +68,6 @@ public function getConfigFieldsValues() Config::MOLLIE_CSS => $this->configurationAdapter->get(Config::MOLLIE_CSS), Config::MOLLIE_IMAGES => $this->configurationAdapter->get(Config::MOLLIE_IMAGES), Config::MOLLIE_SHOW_RESEND_PAYMENT_LINK => $this->configurationAdapter->get(Config::MOLLIE_SHOW_RESEND_PAYMENT_LINK), - Config::MOLLIE_ISSUERS[(int) $this->configurationAdapter->get(Config::MOLLIE_ENVIRONMENT) ? 'production' : 'sandbox'] => $this->configurationAdapter->get(Config::MOLLIE_ISSUERS), Config::MOLLIE_METHOD_COUNTRIES => $this->configurationAdapter->get(Config::MOLLIE_METHOD_COUNTRIES), Config::MOLLIE_METHOD_COUNTRIES_DISPLAY => $this->configurationAdapter->get(Config::MOLLIE_METHOD_COUNTRIES_DISPLAY), diff --git a/src/Service/IssuerService.php b/src/Service/IssuerService.php deleted file mode 100644 index bfe0c5400..000000000 --- a/src/Service/IssuerService.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @copyright Mollie B.V. - * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md - * - * @see https://github.com/mollie/PrestaShop - * @codingStandardsIgnoreStart - */ - -namespace Mollie\Service; - -use Configuration; -use Context; -use Mollie; -use Mollie\Api\Types\PaymentMethod; -use Mollie\Repository\PaymentMethodRepository; - -if (!defined('_PS_VERSION_')) { - exit; -} - -class IssuerService -{ - /** - * @var PaymentMethodRepository - */ - private $paymentMethodRepository; - /** - * @var Mollie - */ - private $module; - - public function __construct(Mollie $module, PaymentMethodRepository $paymentMethodRepository) - { - $this->paymentMethodRepository = $paymentMethodRepository; - $this->module = $module; - } - - public function getIdealIssuers() - { - $environment = (int) Configuration::get(Mollie\Config\Config::MOLLIE_ENVIRONMENT); - - $methodId = $this->paymentMethodRepository->getPaymentMethodIdByMethodId(PaymentMethod::IDEAL, $environment); - $method = new \MolPaymentMethod($methodId); - $issuersJson = $this->paymentMethodRepository->getPaymentMethodIssuersByPaymentMethodId($methodId); - $issuers = json_decode($issuersJson, true); - $issuerList[PaymentMethod::IDEAL] = []; - if (!$issuers) { - return $issuerList; - } - $context = Context::getContext(); - foreach ($issuers as $issuer) { - $issuer['href'] = $context->link->getModuleLink( - $this->module->name, - 'payment', - ['method' => $method->id_method, 'issuer' => $issuer['id'], 'rand' => time()], - true - ); - $issuerList[PaymentMethod::IDEAL][$issuer['id']] = $issuer; - } - - return $issuerList; - } -} diff --git a/src/Service/SettingsSaveService.php b/src/Service/SettingsSaveService.php index 64a305ff3..7eff900e7 100644 --- a/src/Service/SettingsSaveService.php +++ b/src/Service/SettingsSaveService.php @@ -246,7 +246,6 @@ public function saveSettings(&$errors = []) $mollieImages = $this->tools->getValue(Config::MOLLIE_IMAGES); $showResentPayment = $this->tools->getValue(Config::MOLLIE_SHOW_RESEND_PAYMENT_LINK); - $mollieIssuers = $this->tools->getValue(Config::MOLLIE_ISSUERS[$environment ? 'production' : 'sandbox']); $mollieCss = $this->tools->getValue(Config::MOLLIE_CSS); if (!isset($mollieCss)) { @@ -308,7 +307,6 @@ public function saveSettings(&$errors = []) $this->configurationAdapter->updateValue(Config::MOLLIE_SINGLE_CLICK_PAYMENT, $mollieSingleClickPaymentEnabled); $this->configurationAdapter->updateValue(Config::MOLLIE_IMAGES, $mollieImages); $this->configurationAdapter->updateValue(Config::MOLLIE_SHOW_RESEND_PAYMENT_LINK, $showResentPayment); - $this->configurationAdapter->updateValue(Config::MOLLIE_ISSUERS, $mollieIssuers); $this->configurationAdapter->updateValue(Config::MOLLIE_METHOD_COUNTRIES, (int) $mollieMethodCountriesEnabled); $this->configurationAdapter->updateValue(Config::MOLLIE_METHOD_COUNTRIES_DISPLAY, (int) $mollieMethodCountriesDisplayEnabled); $this->configurationAdapter->updateValue(Config::MOLLIE_CSS, $mollieCss); diff --git a/upgrade/Upgrade-2.0.0.php b/upgrade/Upgrade-2.0.0.php index 0e37d81b2..3f71fec5d 100644 --- a/upgrade/Upgrade-2.0.0.php +++ b/upgrade/Upgrade-2.0.0.php @@ -22,7 +22,6 @@ function upgrade_module_2_0_0() { Configuration::deleteByName('MOLLIE_VERSION'); - Configuration::updateValue('MOLLIE_ISSUERS', 'payment-page'); return true; } diff --git a/upgrade/Upgrade-6.0.1.php b/upgrade/Upgrade-6.0.1.php index d3566b40e..ffe19bced 100644 --- a/upgrade/Upgrade-6.0.1.php +++ b/upgrade/Upgrade-6.0.1.php @@ -24,9 +24,6 @@ function upgrade_module_6_0_1(Mollie $module): bool $configuration->updateValue(Config::MOLLIE_IFRAME['production'], Configuration::get('MOLLIE_IFRAME')); $configuration->updateValue(Config::MOLLIE_IFRAME['sandbox'], Configuration::get('MOLLIE_IFRAME')); - $configuration->updateValue(Config::MOLLIE_ISSUERS['production'], Configuration::get('MOLLIE_ISSUERS')); - $configuration->updateValue(Config::MOLLIE_ISSUERS['sandbox'], Configuration::get('MOLLIE_ISSUERS')); - $configuration->updateValue(Config::MOLLIE_SINGLE_CLICK_PAYMENT['production'], Configuration::get('MOLLIE_SINGLE_CLICK_PAYMENT')); $configuration->updateValue(Config::MOLLIE_SINGLE_CLICK_PAYMENT['sandbox'], Configuration::get('MOLLIE_SINGLE_CLICK_PAYMENT')); diff --git a/upgrade/Upgrade-6.2.1.php b/upgrade/Upgrade-6.2.1.php new file mode 100644 index 000000000..fb6c41176 --- /dev/null +++ b/upgrade/Upgrade-6.2.1.php @@ -0,0 +1,24 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + */ + +use Mollie\Adapter\ConfigurationAdapter; +use Mollie\Config\Config; + +if (!defined('_PS_VERSION_')) { + exit; +} + +function upgrade_module_6_2_1(Mollie $module): bool +{ + //todo remove issuers list config + //todo remove table with issuers + return true; +} \ No newline at end of file diff --git a/views/css/mollie.css b/views/css/mollie.css index ab5788b86..4685bb507 100644 --- a/views/css/mollie.css +++ b/views/css/mollie.css @@ -30,33 +30,6 @@ color: #747474; } -/****Mollie issuers****/ -.mollie_issuer { - margin-left: auto; - margin-right: auto; - max-width: 400px; -} - -.mollie_issuer_page { - box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, .2); - margin-top: 2rem; - margin-bottom: 2rem; - background: #fff; - padding: 1.25rem 1.875rem; -} - -.mollie_issuers { - font-size: 16px; - margin-top: 1.25rem; -} - -.mollie_issuers select, .mollie_issuers input { - border: 1px solid #D6D4D4; - border-radius: 4px; - background: #FBFBFB; - height: 20px; -} - .sortable-helper { border-width: 2px!important; -webkit-box-shadow: 2px 2px 16px -2px rgba(0,0,0,0.75); diff --git a/views/css/mollie_15.css b/views/css/mollie_15.css index 9f2f62fa8..cd644bff2 100644 --- a/views/css/mollie_15.css +++ b/views/css/mollie_15.css @@ -27,33 +27,6 @@ color: #747474; } -/****Mollie issuers****/ -.mollie_issuer { - margin-left: auto; - margin-right: auto; - max-width: 400px; -} - -.mollie_issuer_page { - box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, .2); - margin-top: 2rem; - margin-bottom: 2rem; - background: #fff; - padding: 1.25rem 1.875rem; -} - -.mollie_issuers { - font-size: 16px; - margin-top: 1.25rem; -} - -.mollie_issuers select, .mollie_issuers input { - border: 1px solid #D6D4D4; - border-radius: 4px; - background: #FBFBFB; - height: 20px; -} - .sortable-helper { border-width: 2px!important; -webkit-box-shadow: 2px 2px 16px -2px rgba(0,0,0,0.75); diff --git a/views/templates/hook/ideal_dropdown.tpl b/views/templates/hook/ideal_dropdown.tpl deleted file mode 100644 index 911304211..000000000 --- a/views/templates/hook/ideal_dropdown.tpl +++ /dev/null @@ -1,60 +0,0 @@ -{** - * Mollie https://www.mollie.nl - * - * @author Mollie B.V. - * @copyright Mollie B.V. - * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md - * - * @see https://github.com/mollie/PrestaShop - * @codingStandardsIgnoreStart - *} - - - diff --git a/views/templates/hook/payment.tpl b/views/templates/hook/payment.tpl index 0a3316e97..e111aaa3d 100644 --- a/views/templates/hook/payment.tpl +++ b/views/templates/hook/payment.tpl @@ -62,41 +62,3 @@ {include file="./init_urls.tpl"} - -{if !empty($issuers['ideal']) && $issuer_setting === $ISSUERS_ON_CLICK} - -{/if} From 853065e044cb5da55fbb90490ea775cc4e6951b3 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 11 Jun 2024 09:36:54 +0300 Subject: [PATCH 02/74] PIPRES-427: related data with issuers deleted --- controllers/front/payment.php | 2 - src/DTO/Object/Payment.php | 19 --------- src/DTO/PaymentData.php | 22 ----------- src/Entity/MolPaymentMethodIssuer.php | 39 ------------------- src/Install/DatabaseTableInstaller.php | 6 --- src/Install/DatabaseTableUninstaller.php | 1 - src/Repository/PaymentMethodRepository.php | 24 ------------ .../PaymentMethodRepositoryInterface.php | 4 -- src/Service/ApiService.php | 3 +- src/Service/PaymentMethodService.php | 8 ---- src/Service/SettingsSaveService.php | 17 -------- tests/seed/database/prestashop_8.sql | 9 ----- upgrade/Upgrade-4.0.0.php | 5 --- upgrade/Upgrade-6.2.1.php | 8 ++-- 14 files changed, 6 insertions(+), 161 deletions(-) delete mode 100644 src/Entity/MolPaymentMethodIssuer.php diff --git a/controllers/front/payment.php b/controllers/front/payment.php index 62119cd9b..3425c13fe 100644 --- a/controllers/front/payment.php +++ b/controllers/front/payment.php @@ -70,7 +70,6 @@ public function initContent() } $method = Tools::getValue('method'); - $issuer = Tools::getValue('issuer') ?: null; $originalAmount = $cart->getOrderTotal( true, @@ -105,7 +104,6 @@ public function initContent() $amount, Tools::strtoupper($this->context->currency->iso_code), $method, - $issuer, (int) $cart->id, $customer->secure_key, $paymentMethodObj, diff --git a/src/DTO/Object/Payment.php b/src/DTO/Object/Payment.php index a10e81d3f..f8591ef31 100644 --- a/src/DTO/Object/Payment.php +++ b/src/DTO/Object/Payment.php @@ -23,8 +23,6 @@ class Payment implements \JsonSerializable /** @var string */ private $webhookUrl; /** @var ?string */ - private $issuer; - /** @var ?string */ private $customerId; /** @var ?string */ private $applePayPaymentToken; @@ -60,22 +58,6 @@ public function setWebhookUrl(string $webhookUrl): void $this->webhookUrl = $webhookUrl; } - /** - * @return ?string - */ - public function getIssuer(): ?string - { - return $this->issuer; - } - - /** - * @maps issuer - */ - public function setIssuer(string $issuer): void - { - $this->issuer = $issuer; - } - /** * @return ?string */ @@ -131,7 +113,6 @@ public function jsonSerialize() $result = []; $result['cardToken'] = $this->getCardToken(); $result['webhookUrl'] = $this->getWebhookUrl(); - $result['issuer'] = $this->getIssuer(); $result['customerId'] = $this->getCustomerId(); $result['applePayPaymentToken'] = $this->getApplePayPaymentToken(); $result['company'] = $this->getCompany() ? $this->getCompany()->jsonSerialize() : null; diff --git a/src/DTO/PaymentData.php b/src/DTO/PaymentData.php index 78a40dc7d..68d00f2d1 100644 --- a/src/DTO/PaymentData.php +++ b/src/DTO/PaymentData.php @@ -58,11 +58,6 @@ class PaymentData implements JsonSerializable */ private $locale; - /** - * @var string - */ - private $issuer; - /** * @var string */ @@ -230,22 +225,6 @@ public function setLocale($locale) $this->locale = $locale; } - /** - * @return string - */ - public function getIssuer() - { - return $this->issuer; - } - - /** - * @param string $issuer - */ - public function setIssuer($issuer) - { - $this->issuer = $issuer; - } - /** * @return string */ @@ -387,7 +366,6 @@ public function jsonSerialize() 'method' => $this->getMethod(), 'metadata' => $this->getMetadata(), 'locale' => $this->getLocale(), - 'issuer' => $this->getIssuer(), 'cardToken' => $this->getCardToken(), 'customerId' => $this->getCustomerId(), 'applePayPaymentToken' => $this->getApplePayToken(), diff --git a/src/Entity/MolPaymentMethodIssuer.php b/src/Entity/MolPaymentMethodIssuer.php deleted file mode 100644 index 932acc12b..000000000 --- a/src/Entity/MolPaymentMethodIssuer.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @copyright Mollie B.V. - * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md - * - * @see https://github.com/mollie/PrestaShop - * @codingStandardsIgnoreStart - */ -if (!defined('_PS_VERSION_')) { - exit; -} - -class MolPaymentMethodIssuer extends ObjectModel -{ - /** - * @var int - */ - public $id_payment_method; - - /** - * @var string - */ - public $issuers_json; - - /** - * @var array - */ - public static $definition = [ - 'table' => 'mol_payment_method_issuer', - 'primary' => 'id_payment_method_issuer', - 'fields' => [ - 'id_payment_method' => ['type' => self::TYPE_INT, 'validate' => 'isInt'], - 'issuers_json' => ['type' => self::TYPE_STRING, 'validate' => 'isString'], - ], - ]; -} diff --git a/src/Install/DatabaseTableInstaller.php b/src/Install/DatabaseTableInstaller.php index b931e2b5c..efeff8aae 100644 --- a/src/Install/DatabaseTableInstaller.php +++ b/src/Install/DatabaseTableInstaller.php @@ -85,12 +85,6 @@ private function getCommands() `id_shop` INT(64) DEFAULT 1 ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; - $sql[] = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_payment_method_issuer` ( - `id_payment_method_issuer` INT(64) NOT NULL PRIMARY KEY AUTO_INCREMENT, - `id_payment_method` INT(64) NOT NULL, - `issuers_json` TEXT NOT NULL - ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; - $sql[] = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_order_payment_fee` ( `id_mol_order_payment_fee` INT(64) NOT NULL PRIMARY KEY AUTO_INCREMENT, `id_cart` INT(64) NOT NULL, diff --git a/src/Install/DatabaseTableUninstaller.php b/src/Install/DatabaseTableUninstaller.php index 30510c4ee..2a92d160c 100644 --- a/src/Install/DatabaseTableUninstaller.php +++ b/src/Install/DatabaseTableUninstaller.php @@ -37,7 +37,6 @@ private function getCommands(): array $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_country`;'; $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_payment_method`;'; - $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_payment_method_issuer`;'; $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_carrier_information`;'; $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_pending_order_cart`;'; $sql[] = 'DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_excluded_country`;'; diff --git a/src/Repository/PaymentMethodRepository.php b/src/Repository/PaymentMethodRepository.php index 119b5130e..651979d14 100644 --- a/src/Repository/PaymentMethodRepository.php +++ b/src/Repository/PaymentMethodRepository.php @@ -38,30 +38,6 @@ public function __construct() parent::__construct(MolPaymentMethod::class); } - /** - * @param string $paymentMethodId - * - * @return false|string|null - */ - public function getPaymentMethodIssuersByPaymentMethodId($paymentMethodId) - { - $sql = 'Select issuers_json FROM `' . _DB_PREFIX_ . 'mol_payment_method_issuer` WHERE id_payment_method = "' . pSQL($paymentMethodId) . '"'; - - return Db::getInstance()->getValue($sql); - } - - /** - * @param string $paymentMethodId - * - * @return bool - */ - public function deletePaymentMethodIssuersByPaymentMethodId($paymentMethodId) - { - $sql = 'DELETE FROM `' . _DB_PREFIX_ . 'mol_payment_method_issuer` WHERE id_payment_method = "' . pSQL($paymentMethodId) . '"'; - - return Db::getInstance()->execute($sql); - } - /** * @param int $environment * diff --git a/src/Repository/PaymentMethodRepositoryInterface.php b/src/Repository/PaymentMethodRepositoryInterface.php index 696a1cddb..f0eb0fdb6 100644 --- a/src/Repository/PaymentMethodRepositoryInterface.php +++ b/src/Repository/PaymentMethodRepositoryInterface.php @@ -20,10 +20,6 @@ interface PaymentMethodRepositoryInterface extends ReadOnlyRepositoryInterface { - public function getPaymentMethodIssuersByPaymentMethodId($paymentMethodId); - - public function deletePaymentMethodIssuersByPaymentMethodId($paymentMethodId); - public function deleteOldPaymentMethods(array $savedPaymentMethods, $environment, int $shopId); public function getPaymentMethodIdByMethodId($paymentMethodId, $environment, $shopId = null); diff --git a/src/Service/ApiService.php b/src/Service/ApiService.php index 481c5a29b..4f557430c 100644 --- a/src/Service/ApiService.php +++ b/src/Service/ApiService.php @@ -119,7 +119,7 @@ public function getMethodsForConfig(MollieApiClient $api) try { /** Requires local param or fails */ /** @var BaseCollection|MethodCollection $apiMethods */ - $apiMethods = $api->methods->allAvailable(['locale' => '', 'include' => 'issuers']); + $apiMethods = $api->methods->allAvailable(['locale' => '']); $apiMethods = $apiMethods->getArrayCopy(); /** @var Method $method */ foreach ($apiMethods as $key => $method) { @@ -153,7 +153,6 @@ public function getMethodsForConfig(MollieApiClient $api) 'name' => $apiMethod->description, 'available' => !in_array($apiMethod->id, $notAvailable), 'image' => (array) $apiMethod->image, - 'issuers' => $apiMethod->issuers, 'tipEnableSSL' => $tipEnableSSL, 'minimumAmount' => $apiMethod->minimumAmount ? [ 'value' => NumberUtility::toPrecision( diff --git a/src/Service/PaymentMethodService.php b/src/Service/PaymentMethodService.php index 24fce0c4c..411ea16e6 100644 --- a/src/Service/PaymentMethodService.php +++ b/src/Service/PaymentMethodService.php @@ -258,7 +258,6 @@ public function getMethodsForCheckout() * @param float|string $amount * @param string $currency * @param string $method - * @param string|null $issuer * @param int|Cart $cartId * @param string $secureKey * @param string $orderReference @@ -272,7 +271,6 @@ public function getPaymentData( $amount, $currency, $method, - $issuer, $cartId, $secureKey, MolPaymentMethod $molPaymentMethod, @@ -337,7 +335,6 @@ public function getPaymentData( $paymentData->setMethod($molPaymentMethod->id_method); $paymentData->setDescription($orderReference); - $paymentData->setIssuer($issuer); if (isset($cart->id_address_invoice)) { $billingAddress = new Address((int) $cart->id_address_invoice); @@ -457,10 +454,6 @@ public function getPaymentData( true )); - if (!empty($issuer)) { - $payment->setIssuer($issuer); - } - if ($molPaymentMethod->id_method === PaymentMethod::CREDITCARD) { $molCustomer = $this->handleCustomerInfo($cart->id_customer, $saveCard, $useSavedCard); if ($molCustomer && !empty($molCustomer->customer_id)) { @@ -536,7 +529,6 @@ private function getSupportedMollieMethods(?string $sequenceType = null): array $methods = $this->module->getApiClient()->methods->allActive( [ 'resource' => 'orders', - 'include' => 'issuers', 'includeWallets' => 'applepay', 'locale' => $this->context->getLanguageLocale(), 'billingCountry' => $country->iso_code, diff --git a/src/Service/SettingsSaveService.php b/src/Service/SettingsSaveService.php index 7eff900e7..e55747606 100644 --- a/src/Service/SettingsSaveService.php +++ b/src/Service/SettingsSaveService.php @@ -28,7 +28,6 @@ use Mollie\Repository\CountryRepository; use Mollie\Repository\PaymentMethodRepositoryInterface; use Mollie\Utility\TagsUtility; -use MolPaymentMethodIssuer; use OrderState; use PrestaShopDatabaseException; use PrestaShopException; @@ -185,22 +184,6 @@ public function saveSettings(&$errors = []) continue; } - if (!$this->paymentMethodRepository->deletePaymentMethodIssuersByPaymentMethodId($paymentMethod->id)) { - $errors[] = $this->module->l('Something went wrong. Couldn\'t delete old payment methods issuers', self::FILE_NAME) . ":{$method['id']}"; - continue; - } - - if ($method['issuers']) { - $paymentMethodIssuer = new MolPaymentMethodIssuer(); - $paymentMethodIssuer->issuers_json = json_encode($method['issuers']); - $paymentMethodIssuer->id_payment_method = $paymentMethod->id; - try { - $paymentMethodIssuer->add(); - } catch (Exception $e) { - $errors[] = $this->module->l('Something went wrong. Couldn\'t save your payment methods issuer', self::FILE_NAME); - } - } - $countries = $this->tools->getValue(Config::MOLLIE_METHOD_CERTAIN_COUNTRIES . $method['id']); $excludedCountries = $this->tools->getValue( Config::MOLLIE_METHOD_EXCLUDE_CERTAIN_COUNTRIES . $method['id'] diff --git a/tests/seed/database/prestashop_8.sql b/tests/seed/database/prestashop_8.sql index 22e1c4b0f..59fb043ef 100644 --- a/tests/seed/database/prestashop_8.sql +++ b/tests/seed/database/prestashop_8.sql @@ -11935,15 +11935,6 @@ CREATE TABLE `ps_mol_payment_method` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `ps_mol_payment_method_issuer`; -CREATE TABLE `ps_mol_payment_method_issuer` ( - `id_payment_method_issuer` int(64) NOT NULL AUTO_INCREMENT, - `id_payment_method` int(64) NOT NULL, - `issuers_json` text NOT NULL, - PRIMARY KEY (`id_payment_method_issuer`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - DROP TABLE IF EXISTS `ps_mol_pending_order_cart`; CREATE TABLE `ps_mol_pending_order_cart` ( `id_mol_pending_order_cart` int(64) NOT NULL AUTO_INCREMENT, diff --git a/upgrade/Upgrade-4.0.0.php b/upgrade/Upgrade-4.0.0.php index bbc81a102..f2b228eab 100644 --- a/upgrade/Upgrade-4.0.0.php +++ b/upgrade/Upgrade-4.0.0.php @@ -37,11 +37,6 @@ function upgrade_module_4_0_0(Mollie $module) `images_json` TEXT ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; - $sql[] = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_payment_method_issuer` ( - `id_payment_method_issuer` INT(64) NOT NULL PRIMARY KEY AUTO_INCREMENT, - `id_payment_method` INT(64) NOT NULL, - `issuers_json` TEXT NOT NULL - ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; $sql[] = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_order_fee` ( `id_mol_order_fee` INT(64) NOT NULL PRIMARY KEY AUTO_INCREMENT, diff --git a/upgrade/Upgrade-6.2.1.php b/upgrade/Upgrade-6.2.1.php index fb6c41176..37c612ae0 100644 --- a/upgrade/Upgrade-6.2.1.php +++ b/upgrade/Upgrade-6.2.1.php @@ -18,7 +18,9 @@ function upgrade_module_6_2_1(Mollie $module): bool { - //todo remove issuers list config - //todo remove table with issuers - return true; + $isTableDeleted = Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_payment_method_issuer`'); + $isSandboxConfigDeleted = Configuration::deleteByName('MOLLIE_SANDBOX_ISSUERS'); + $isProdConfigDeleted = Configuration::deleteByName('MOLLIE_PRODUCTION_ISSUERS'); + + return $isTableDeleted && $isSandboxConfigDeleted && $isProdConfigDeleted; } \ No newline at end of file From 9200e4069120da6837beb9eb193277c07d7ab25f Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 11 Jun 2024 09:57:43 +0300 Subject: [PATCH 03/74] PIPRES-427: removed issuers from payment data --- controllers/front/bancontactAjax.php | 1 - mollie.php | 1 - src/Application/CommandHandler/CreateApplePayOrderHandler.php | 1 - 3 files changed, 3 deletions(-) diff --git a/controllers/front/bancontactAjax.php b/controllers/front/bancontactAjax.php index 352c761a8..3cfdb68bd 100644 --- a/controllers/front/bancontactAjax.php +++ b/controllers/front/bancontactAjax.php @@ -64,7 +64,6 @@ private function createTransaction() $cart->getOrderTotal(), $currency->iso_code, PaymentMethod::BANCONTACT, - null, $cart->id, $cart->secure_key, $paymentMethod, diff --git a/mollie.php b/mollie.php index 0439674d1..695e1e226 100755 --- a/mollie.php +++ b/mollie.php @@ -931,7 +931,6 @@ public function hookActionValidateOrder($params) $totalPaid, $currency, '', - null, $cartId, $customerKey, $paymentMethodObj, diff --git a/src/Application/CommandHandler/CreateApplePayOrderHandler.php b/src/Application/CommandHandler/CreateApplePayOrderHandler.php index 62aa4770b..93a271b61 100644 --- a/src/Application/CommandHandler/CreateApplePayOrderHandler.php +++ b/src/Application/CommandHandler/CreateApplePayOrderHandler.php @@ -198,7 +198,6 @@ private function createMollieTransaction(Cart $cart, string $cardToken) $cart->getOrderTotal(true, Cart::BOTH, null, $cart->id_carrier), Tools::strtoupper($currency->iso_code), Config::APPLEPAY, - null, (int) $cart->id, $cart->secure_key, $paymentMethodObj, From 0d61764cbbf2fe0b2646d63b777f4a033628c89b Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 18 Jun 2024 11:02:04 +0300 Subject: [PATCH 04/74] PIPRES-443: performance improvements --- composer.json | 2 +- src/ServiceProvider/PrestashopContainer.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index ab171d36f..6f4806454 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "mollie/mollie-api-php": "v2.65.0", "segmentio/analytics-php": "^1.5", "sentry/sentry": "3.17.0", - "league/container": "2.5.0", + "league/container": "3.3.3", "prestashop/module-lib-service-container": "v2.0", "webmozart/assert": "^1.11", "symfony/http-client": "^4.4", diff --git a/src/ServiceProvider/PrestashopContainer.php b/src/ServiceProvider/PrestashopContainer.php index 87b0c62bb..8f13e4f13 100644 --- a/src/ServiceProvider/PrestashopContainer.php +++ b/src/ServiceProvider/PrestashopContainer.php @@ -14,15 +14,15 @@ namespace Mollie\ServiceProvider; -use Interop\Container\ContainerInterface as InteropContainerInterface; use PrestaShop\PrestaShop\Adapter\SymfonyContainer; +use Psr\Container\ContainerInterface as PsrContainerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; if (!defined('_PS_VERSION_')) { exit; } -class PrestashopContainer implements InteropContainerInterface +class PrestashopContainer implements PsrContainerInterface { /** @var SymfonyContainer|ContainerInterface|null */ private $container; From 162eb30ebdbf0547cb742db62c2d2699bfff14a3 Mon Sep 17 00:00:00 2001 From: Gytautas Zumaras <96050852+GytisZum@users.noreply.github.com> Date: Tue, 25 Jun 2024 13:16:44 +0300 Subject: [PATCH 05/74] Update Upgrade-6.2.1.php --- upgrade/Upgrade-6.2.1.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/upgrade/Upgrade-6.2.1.php b/upgrade/Upgrade-6.2.1.php index 37c612ae0..1a486e55a 100644 --- a/upgrade/Upgrade-6.2.1.php +++ b/upgrade/Upgrade-6.2.1.php @@ -19,8 +19,8 @@ function upgrade_module_6_2_1(Mollie $module): bool { $isTableDeleted = Db::getInstance()->execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'mol_payment_method_issuer`'); - $isSandboxConfigDeleted = Configuration::deleteByName('MOLLIE_SANDBOX_ISSUERS'); - $isProdConfigDeleted = Configuration::deleteByName('MOLLIE_PRODUCTION_ISSUERS'); + Configuration::deleteByName('MOLLIE_SANDBOX_ISSUERS'); + Configuration::deleteByName('MOLLIE_PRODUCTION_ISSUERS'); - return $isTableDeleted && $isSandboxConfigDeleted && $isProdConfigDeleted; -} \ No newline at end of file + return $isTableDeleted; +} From b119af559f22d080206cd6ed0ece39c16986f588 Mon Sep 17 00:00:00 2001 From: Gytautas Zumaras <96050852+GytisZum@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:29:17 +0300 Subject: [PATCH 06/74] Update mollie.php --- mollie.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mollie.php b/mollie.php index 695e1e226..c68e33c91 100755 --- a/mollie.php +++ b/mollie.php @@ -84,7 +84,7 @@ public function __construct() { $this->name = 'mollie'; $this->tab = 'payments_gateways'; - $this->version = '6.2.0'; + $this->version = '6.2.1'; $this->author = 'Mollie B.V.'; $this->need_instance = 1; $this->bootstrap = true; From 98c174e7b4c430627c1456392dcda907b8d4228f Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 26 Jun 2024 14:20:01 +0300 Subject: [PATCH 07/74] PIPRES-445: HTTP status handling improvements --- .php-cs-fixer.dist.php | 15 ------------ Makefile | 3 +-- changelog.md | 3 +++ controllers/front/webhook.php | 44 ++++++++++++++++++++++------------- 4 files changed, 32 insertions(+), 33 deletions(-) delete mode 100644 .php-cs-fixer.dist.php diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php deleted file mode 100644 index 8d68a2263..000000000 --- a/.php-cs-fixer.dist.php +++ /dev/null @@ -1,15 +0,0 @@ -setUsingCache(true) - ->getFinder() - ->in(__DIR__) - ->exclude('translations') - ->exclude('mails') - ->exclude('libraries') - ->exclude('vendor') - ->exclude('upgrade'); - -return $config; diff --git a/Makefile b/Makefile index 7c3ace459..194247360 100755 --- a/Makefile +++ b/Makefile @@ -90,8 +90,7 @@ npm-package-install: prepare-zip: composer install --no-dev --optimize-autoloader --classmap-authoritative composer dump-autoload --no-dev --optimize --classmap-authoritative - cp .github/.htaccess vendor/.htaccess - rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist + rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist .php-cs-fixer.dist.php diff --git a/changelog.md b/changelog.md index 09a8211bc..24953f1bd 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,9 @@ # Changelog # +## Changes in release 6.2.2 ## ++ Error handling improvements + ## Changes in release 6.2.1 ## + Ideal v2 payment method improvement diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index fa2710aa3..6b245fe23 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -11,8 +11,10 @@ */ use Mollie\Adapter\ToolsAdapter; +use Mollie\Api\Exceptions\ApiException; use Mollie\Controller\AbstractMollieController; use Mollie\Errors\Http\HttpStatusCode; +use Mollie\Exception\TransactionException; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Infrastructure\Response\JsonResponse; use Mollie\Logger\PrestaLoggerInterface; @@ -50,9 +52,6 @@ public function initContent(): void /** @var PrestaLoggerInterface $logger */ $logger = $this->module->getService(PrestaLoggerInterface::class); - /** @var ErrorHandler $errorHandler */ - $errorHandler = $this->module->getService(ErrorHandler::class); - /** @var ToolsAdapter $tools */ $tools = $this->module->getService(ToolsAdapter::class); @@ -95,20 +94,12 @@ public function initContent(): void try { $this->executeWebhook($transactionId); + } catch (ApiException $exception) { + $this->handleException($exception, HttpStatusCode::HTTP_BAD_REQUEST, 'Api request failed'); + } catch (TransactionException $exception) { + $this->handleException($exception, $exception->getCode(), 'Failed to handle transaction'); } catch (\Throwable $exception) { - $logger->error('Failed to handle webhook', [ - 'Exception message' => $exception->getMessage(), - 'Exception code' => $exception->getCode(), - ]); - - $errorHandler->handle($exception, $exception->getCode(), false); - - $this->releaseLock(); - - $this->ajaxResponse(JsonResponse::error( - $this->module->l('Failed to handle webhook', self::FILE_NAME), - $exception->getCode() - )); + $this->handleException($exception, HttpStatusCode::HTTP_BAD_REQUEST, 'Failed to handle webhook'); } $this->releaseLock(); @@ -158,4 +149,25 @@ private function setContext(int $cartId): void $this->context->cart = $cart; } + + private function handleException(\Throwable $exception, int $httpStatusCode, string $logMessage): void + { + /** @var PrestaLoggerInterface $logger */ + $logger = $this->module->getService(PrestaLoggerInterface::class); + + /** @var ErrorHandler $errorHandler */ + $errorHandler = $this->module->getService(ErrorHandler::class); + + $logger->error($logMessage, [ + 'Exception message' => $exception->getMessage(), + 'Exception code' => $httpStatusCode + ]); + + $errorHandler->handle($exception, $httpStatusCode, false); + $this->releaseLock(); + $this->ajaxResponse(JsonResponse::error( + $this->module->l('Failed to handle webhook', self::FILE_NAME), + $httpStatusCode + )); + } } From 1ecdcdc5fc3410b80bc49f8f3cb6db57f2c1b5de Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 26 Jun 2024 14:22:22 +0300 Subject: [PATCH 08/74] cs fixer file reverted --- .php-cs-fixer.dist.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .php-cs-fixer.dist.php diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 000000000..59646bbb0 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,15 @@ +setUsingCache(true) + ->getFinder() + ->in(__DIR__) + ->exclude('translations') + ->exclude('mails') + ->exclude('libraries') + ->exclude('vendor') + ->exclude('upgrade'); + +return $config; \ No newline at end of file From 084001d59b5c4aaf9971eeb3f866d78fefdad623 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 3 Jul 2024 14:23:13 +0300 Subject: [PATCH 09/74] PIPRES-441: new payment methods added and giropay method deleted --- Makefile | 14 ++++++++++++-- README.md | 2 +- README_DE.md | 5 ----- README_ES.md | 5 ----- README_FR.md | 5 ----- README_NL.md | 5 ----- controllers/front/webhook.php | 2 +- .../03_mollie.ps1785.PaymentTestsOrdersAPI.js | 14 +------------- .../05_mollie.ps1785.PaymentTestsPaymentsAPI.js | 14 +------------- .../e2e/ps8/03_mollie.ps8.PaymentTestsOrdersAPI.js | 13 ------------- .../ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js | 13 ------------- cypress/support/commands.js | 4 ++-- src/Config/Config.php | 10 ++++++++-- src/Service/ApiService.php | 3 +++ src/Service/TransactionService.php | 5 +++++ 15 files changed, 34 insertions(+), 80 deletions(-) diff --git a/Makefile b/Makefile index 7c3ace459..dea5c6703 100755 --- a/Makefile +++ b/Makefile @@ -93,6 +93,16 @@ prepare-zip: cp .github/.htaccess vendor/.htaccess rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist - - +# Define SQL commands +SQL_COMMANDS := \ + "UPDATE \`ps_configuration\` SET \`value\` = '1' WHERE \`name\` = 'PS_SSL_ENABLED';" \ + "UPDATE \`ps_configuration\` SET \`value\` = '1' WHERE \`name\` = 'PS_SSL_ENABLED_EVERYWHERE';" \ + "UPDATE \`ps_shop_url\` SET \`domain\` = '$(DOMAIN_NAME)' WHERE active = 1;" \ + "UPDATE \`ps_shop_url\` SET \`domain_ssl\` = '$(DOMAIN_NAME)' WHERE active = 1;" + +# Target to change shop URL +change-shop-url: + @echo "Executing SQL commands to change shop URL..." + docker exec -i $(DOCKER_CONTAINER_NAME) mysql -u$(MYSQL_USER) -p$(MYSQL_PASSWORD) $(MYSQL_DATABASE) -e "$(SQL_COMMANDS)" + @echo "Shop URL updated successfully." diff --git a/README.md b/README.md index 639346878..847b381e4 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Receive payments from European customers with ease. Mollie provides payment meth Choose the best payment provider available for your online PrestaShop store. Create your merchant account at [Mollie.com](https://www.mollie.com/). -Mollie supports the following payment methods: iDEAL, Credit card, Bancontact, SOFORT Banking, ING Home’Pay, Bank transfers, PayPal, KBC / CBC Payment Button, Belfius, CartaSi, Cartes Bancaires, EPS, Giropay, Klarna: Pay later, Klarna: Slice it +Mollie supports the following payment methods: iDEAL, Credit card, Bancontact, SOFORT Banking, ING Home’Pay, Bank transfers, PayPal, KBC / CBC Payment Button, Belfius, CartaSi, Cartes Bancaires, EPS, Klarna: Pay later, Klarna: Slice it [![Build Status](https://travis-ci.org/mollie/PrestaShop.svg?branch=master)](https://travis-ci.org/mollie/PrestaShop) [![Greenkeeper badge](https://badges.greenkeeper.io/mollie/PrestaShop.svg)](https://greenkeeper.io/) diff --git a/README_DE.md b/README_DE.md index acf6f2a01..c255125c5 100644 --- a/README_DE.md +++ b/README_DE.md @@ -128,11 +128,6 @@ Die Karten tragen ebenfalls das Markenzeichen von Visa. Dies macht sie zur wichtigsten Zahlungsmethode in Österreich, die bei österreichischen Konsumenten hohe Beliebtheit genießt. -### Giropay -[Giropay](https://www.mollie.com/de/payments/giropay). Giropay ist eine der beliebtesten Überweisungsmethoden Deutschlands. - -Deutsche Kunden schenken dieser Zahlungsmethode ihr Vertrauen, da sie von über 1.500 Banken landesweit unterstützt wird. - ### Klarna: Rechnung [Klarna: Rechnung](https://www.mollie.com/de/payments/klarna-pay-later). Klarna ist eine flexible Zahlungslösung, die Ihren Kunden verschiedene, flexible Zahlungsmöglichkeiten zur Verfügung stellt. diff --git a/README_ES.md b/README_ES.md index 1bf6155e9..df0f1fe9a 100644 --- a/README_ES.md +++ b/README_ES.md @@ -128,11 +128,6 @@ Las tarjetas que comparten marca con Visa. Esto hace que el EPS sea el principal tipo de pago por transferencia bancaria en Austria y muy popular entre los compradores austriacos. -### Giropay -[Giropay](https://www.mollie.com/es/payments/giropay). Giropay es un tipo de pago por transferencia bancaria, popular en Alemania. - -Utiliza más de 1.500 bancos alemanes, lo que lo convierte en un tipo de pago confiable para los clientes alemanes. - ### Klarna: Pay later [Klarna: Pay later](https://www.mollie.com/es/payments/klarna-pay-later). Klarna es una solución de pago flexible que les permite a sus clientes diversas formas de pago flexibles. diff --git a/README_FR.md b/README_FR.md index ccd4ff9d5..bb1cc73e5 100644 --- a/README_FR.md +++ b/README_FR.md @@ -128,11 +128,6 @@ Les cartes sont co-marquées avec Visa. Devenue très populaire auprès des consommateurs autrichiens, EPS est la référence en matière de virement bancaire en Autriche. -### Giropay -[Giropay](https://www.mollie.com/fr/payments/giropay). Giropay est une méthode de paiement très populaire de virement bancaire en Allemagne. - -Utilisé par plus de 15000 à travers le pays, cela en fait un moyen de paiement fiable, réputé auprès des consommateurs allemands. - ### Klarna : Pay later [Klarna : Pay later](https://www.mollie.com/fr/payments/klarna-pay-later). Klarna est une solution de paiement flexible, qui permet à vos clients des modes de paiement variés. diff --git a/README_NL.md b/README_NL.md index c2d142407..3b9554016 100644 --- a/README_NL.md +++ b/README_NL.md @@ -117,11 +117,6 @@ De kaarten zijn co-branded met Visa. Dit maakt EPS de belangrijkste betaalmethode voor bankoverboekingen in Oostenrijk en zeer populair bij Oostenrijkse klanten. -### Giropay -[Giropay](https://www.mollie.com/nl/payments/giropay). Giropay is een populaire bankoverboeking betaalmethode in Duitsland. - -Het maakt gebruik van meer dan 1.500 Duitse banken, waardoor het een vertrouwde betaalmethode is onder Duitse klanten. - ### Klarna: Achteraf betalen [Klarna: Achteraf betalen](https://www.mollie.com/nl/payments/klarna-pay-later). Klarna is een flexibele betaaloplossing, waarmee je je klanten diverse mogelijkheden voor uitgestelde betaling biedt. diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index fa2710aa3..251bfade8 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -131,7 +131,7 @@ protected function executeWebhook(string $transactionId): void } else { $transaction = $this->module->getApiClient()->payments->get($transactionId); - if ($transaction->orderId) { + if ($transaction->orderId && $transaction->status !== 'expired') { $transaction = $this->module->getApiClient()->orders->get($transaction->orderId, ['embed' => 'payments']); } } diff --git a/cypress/e2e/ps1785/03_mollie.ps1785.PaymentTestsOrdersAPI.js b/cypress/e2e/ps1785/03_mollie.ps1785.PaymentTestsOrdersAPI.js index 9f28a15a3..9d69131bc 100755 --- a/cypress/e2e/ps1785/03_mollie.ps1785.PaymentTestsOrdersAPI.js +++ b/cypress/e2e/ps1785/03_mollie.ps1785.PaymentTestsOrdersAPI.js @@ -215,19 +215,7 @@ it('C339365: 28 Przelewy24 Checkouting [Orders API]', () => { it('C339366: 29 Przelewy24 Order Shipping, Refunding [Orders API]', () => { cy.OrderRefundingShippingOrdersAPI() }) -it('C339367: 30 Giropay Checkouting [Orders API]', () => { - cy.navigatingToThePayment() - //Payment method choosing - cy.contains('giropay').click({force:true}) - cy.get('.condition-label > .js-terms').click({force:true}) - cy.contains('Place order').click() - cy.get('[value="paid"]').click() - cy.get('[class="button form__button"]').click() - cy.get('#content-hook_order_confirmation > .card-block').should('be.visible') -}); -it('C339368: 31 Giropay Order Shipping, Refunding [Orders API]', () => { - cy.OrderRefundingShippingOrdersAPI() -}) + it('C339369: 32 EPS Checkouting [Orders API]', () => { cy.navigatingToThePayment() //Payment method choosing diff --git a/cypress/e2e/ps1785/05_mollie.ps1785.PaymentTestsPaymentsAPI.js b/cypress/e2e/ps1785/05_mollie.ps1785.PaymentTestsPaymentsAPI.js index faffc9163..a78b25544 100755 --- a/cypress/e2e/ps1785/05_mollie.ps1785.PaymentTestsPaymentsAPI.js +++ b/cypress/e2e/ps1785/05_mollie.ps1785.PaymentTestsPaymentsAPI.js @@ -180,19 +180,7 @@ it('C339391: 56 Przelewy24 Checkouting [Payments API]', () => { it('C339392: 57 Przelewy24 BO Refunding, Partial Refunding [Payments API]', () => { cy.OrderRefundingPartialPaymentsAPI() }); -it('C339393: 58 Giropay Checkouting [Payments API]', () => { - cy.navigatingToThePayment() - //Payment method choosing - cy.contains('giropay').click({force:true}) - cy.get('.condition-label > .js-terms').click({force:true}) - cy.contains('Place order').click() - cy.get('[value="paid"]').click() - cy.get('[class="button form__button"]').click() - cy.get('#content-hook_order_confirmation > .card-block').should('be.visible') -}); -it('C339394: 59 Giropay BO Refunding, Partial Refunding [Payments API]', () => { - cy.OrderRefundingPartialPaymentsAPI() -}); + it('C339395: 60 EPS Checkouting [Payments API]', () => { cy.navigatingToThePayment() //Payment method choosing diff --git a/cypress/e2e/ps8/03_mollie.ps8.PaymentTestsOrdersAPI.js b/cypress/e2e/ps8/03_mollie.ps8.PaymentTestsOrdersAPI.js index 85586a8c3..c6964ffa2 100755 --- a/cypress/e2e/ps8/03_mollie.ps8.PaymentTestsOrdersAPI.js +++ b/cypress/e2e/ps8/03_mollie.ps8.PaymentTestsOrdersAPI.js @@ -204,19 +204,6 @@ it('C339365: 28 Przelewy24 Checkouting [Orders API]', () => { it('C339366: 29 Przelewy24 Order Shipping, Refunding [Orders API]', () => { cy.OrderRefundingShippingOrdersAPI() }) -it('C339367: 30 Giropay Checkouting [Orders API]', () => { - cy.navigatingToThePaymentPS8() - //Payment method choosing - cy.contains('giropay').click({force:true}) - cy.get('.condition-label > .js-terms').click({force:true}) - cy.contains('Place order').click() - cy.get('[value="paid"]').click() - cy.get('[class="button form__button"]').click() - cy.get('#content-hook_order_confirmation > .card-block').should('be.visible') -}); -it('C339368: 31 Giropay Order Shipping, Refunding [Orders API]', () => { - cy.OrderRefundingShippingOrdersAPI() -}) it('C339369: 32 EPS Checkouting [Orders API]', () => { cy.navigatingToThePaymentPS8() //Payment method choosing diff --git a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js index fd98721ef..8b0657a29 100755 --- a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js +++ b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js @@ -170,19 +170,6 @@ it('C339391: 56 Przelewy24 Checkouting [Payments API]', () => { it('C339392: 57 Przelewy24 BO Refunding, Partial Refunding [Payments API]', () => { cy.OrderRefundingPartialPaymentsAPI() }); -it('C339393: 58 Giropay Checkouting [Payments API]', () => { - cy.navigatingToThePaymentPS8() - //Payment method choosing - cy.contains('giropay').click({force:true}) - cy.get('.condition-label > .js-terms').click({force:true}) - cy.contains('Place order').click() - cy.get('[value="paid"]').click() - cy.get('[class="button form__button"]').click() - cy.get('#content-hook_order_confirmation > .card-block').should('be.visible') -}); -it('C339394: 59 Giropay BO Refunding, Partial Refunding [Payments API]', () => { - cy.OrderRefundingPartialPaymentsAPI() -}); it('C339395: 60 EPS Checkouting [Payments API]', () => { cy.navigatingToThePaymentPS8() //Payment method choosing diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 860faab4d..c398bce51 100755 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -42,7 +42,7 @@ import 'cypress-iframe'; // Cypress.Commands.add("login", (email, password) => { ... }) Cypress.Commands.add("ConfOrdersAPI1784", () => { - const paymentMethods = ["applepay", "ideal", "creditcard", "in3", "klarnapaylater", "klarnapaynow", "klarnasliceit", "paypal", "banktransfer", "bancontact", "eps", "giropay", "przelewy24", "kbc", "belfius", "voucher", "directdebit", "billie", "klarna", "twint", "blik", "bancomatpay"]; + const paymentMethods = ["applepay", "ideal", "creditcard", "in3", "klarnapaylater", "klarnapaynow", "klarnasliceit", "paypal", "banktransfer", "bancontact", "eps", "przelewy24", "kbc", "belfius", "voucher", "directdebit", "billie", "klarna", "twint", "blik", "bancomatpay"]; // Iterate through the paymentMethods array using forEach paymentMethods.forEach(method => { @@ -59,7 +59,7 @@ Cypress.Commands.add("ConfOrdersAPI1784", () => { }) Cypress.Commands.add("ConfPaymentsAPI1784", () => { - const paymentMethods = ["giropay", "eps", "przelewy24", "kbc", "belfius", "bancontact", "creditcard", "ideal", "banktransfer", "paypal", "applepay", "twint", "blik", "bancomatpay"]; + const paymentMethods = ["eps", "przelewy24", "kbc", "belfius", "bancontact", "creditcard", "ideal", "banktransfer", "paypal", "applepay", "twint", "blik", "bancomatpay"]; // Iterate through the paymentMethods array using forEach paymentMethods.forEach(method => { diff --git a/src/Config/Config.php b/src/Config/Config.php index 6ca067414..2ce5beaab 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -47,7 +47,6 @@ class Config 'ideal' => ['nl'], 'bancontact' => ['be'], 'paypal' => [], - 'giropay' => ['de'], 'eps' => ['at'], 'belfius' => ['be'], 'inghomepay' => ['be'], @@ -64,6 +63,9 @@ class Config 'ro', 'bl', 'mf', 'pm', 'sm', 'sk', 'sl', 'es', 'se', 'ch', 'gb', 'uk', ], 'mybank' => [], + 'trustly' => ['at', 'de', 'ee', 'es', 'fi', 'lt', 'lv', 'nl'], + 'riverty' => ['nl','be','de','at'], + 'payconiq' => [], ]; const SUPPORTED_PHP_VERSION = '5.6'; @@ -240,6 +242,7 @@ class Config const MOLLIE_METHOD_ID_APPLE_PAY = 'applepay'; const MOLLIE_VOUCHER_METHOD_ID = 'voucher'; const MOLLIE_in3_METHOD_ID = 'in3'; + const RIVERTY = 'riverty'; const MOLLIE_VOUCHER_CATEGORY_NULL = 'null'; const MOLLIE_VOUCHER_CATEGORY_MEAL = 'meal'; @@ -275,6 +278,7 @@ class Config PaymentMethod::BILLIE, self::MOLLIE_VOUCHER_METHOD_ID, self::MOLLIE_in3_METHOD_ID, + self::RIVERTY, ]; const PAYMENT_API_ONLY_METHODS = [ @@ -301,7 +305,6 @@ class Config 'directdebit' => 'Direct Debit', 'eps' => 'EPS', 'giftcard' => 'Giftcard', - 'giropay' => 'Giropay', 'ideal' => 'iDEAL', 'inghomepay' => 'ING Homepay', 'kbc' => 'KBC', @@ -322,6 +325,9 @@ class Config 'alma' => 'Alma', 'blik' => 'BLIK', 'klarna' => 'Pay with Klarna.', + 'riverty' => 'Riverty', + 'payconiq' => 'Payconiq', + 'trustly' => 'Trustly', ]; const MOLLIE_BUTTON_ORDER_TOTAL_REFRESH = 'MOLLIE_BUTTON_ORDER_TOTAL_REFRESH'; diff --git a/src/Service/ApiService.php b/src/Service/ApiService.php index 4f557430c..f7629d5f8 100644 --- a/src/Service/ApiService.php +++ b/src/Service/ApiService.php @@ -123,6 +123,9 @@ public function getMethodsForConfig(MollieApiClient $api) $apiMethods = $apiMethods->getArrayCopy(); /** @var Method $method */ foreach ($apiMethods as $key => $method) { + if ($method->status === 'pending-review') { // TODO REMOVE THIS ONCE RIVERTY IS IMPLEMENTED + continue; + } if ($method->status !== 'activated') { unset($apiMethods[$key]); } diff --git a/src/Service/TransactionService.php b/src/Service/TransactionService.php index d34a154e0..2b1781ac4 100644 --- a/src/Service/TransactionService.php +++ b/src/Service/TransactionService.php @@ -170,6 +170,9 @@ public function processTransaction($apiPayment) return $apiPayment; } + /** @var PrestaLoggerInterface $logger */ + $logger = $this->module->getService(PrestaLoggerInterface::class); + $logger->error($apiPayment->resource); switch ($apiPayment->resource) { case Config::MOLLIE_API_STATUS_PAYMENT: PrestaShopLogger::addLog(__METHOD__ . ' said: Starting to process PAYMENT transaction.', Config::NOTICE); @@ -284,6 +287,8 @@ public function processTransaction($apiPayment) $this->configurationAdapter->get(Config::MOLLIE_AUTHORIZABLE_PAYMENT_INVOICE_ON_STATUS) === Config::MOLLIE_AUTHORIZABLE_PAYMENT_STATUS_DEFAULT; + + $logger->error($apiPayment->method); if ( !$isAuthorizablePaymentInvoiceOnStatusDefault && $apiPayment->status === OrderStatus::STATUS_COMPLETED From 16143fec62f67e92d103a81be8255b95a4d47138 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 3 Jul 2024 14:32:48 +0300 Subject: [PATCH 10/74] not needed changes deleted --- Makefile | 14 -------------- controllers/front/webhook.php | 2 +- src/Config/Config.php | 2 +- src/Service/ApiService.php | 3 --- src/Service/TransactionService.php | 5 ----- 5 files changed, 2 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index dea5c6703..09bc04377 100755 --- a/Makefile +++ b/Makefile @@ -92,17 +92,3 @@ prepare-zip: composer dump-autoload --no-dev --optimize --classmap-authoritative cp .github/.htaccess vendor/.htaccess rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist - -# Define SQL commands -SQL_COMMANDS := \ - "UPDATE \`ps_configuration\` SET \`value\` = '1' WHERE \`name\` = 'PS_SSL_ENABLED';" \ - "UPDATE \`ps_configuration\` SET \`value\` = '1' WHERE \`name\` = 'PS_SSL_ENABLED_EVERYWHERE';" \ - "UPDATE \`ps_shop_url\` SET \`domain\` = '$(DOMAIN_NAME)' WHERE active = 1;" \ - "UPDATE \`ps_shop_url\` SET \`domain_ssl\` = '$(DOMAIN_NAME)' WHERE active = 1;" - -# Target to change shop URL -change-shop-url: - @echo "Executing SQL commands to change shop URL..." - docker exec -i $(DOCKER_CONTAINER_NAME) mysql -u$(MYSQL_USER) -p$(MYSQL_PASSWORD) $(MYSQL_DATABASE) -e "$(SQL_COMMANDS)" - @echo "Shop URL updated successfully." - diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index 251bfade8..fa2710aa3 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -131,7 +131,7 @@ protected function executeWebhook(string $transactionId): void } else { $transaction = $this->module->getApiClient()->payments->get($transactionId); - if ($transaction->orderId && $transaction->status !== 'expired') { + if ($transaction->orderId) { $transaction = $this->module->getApiClient()->orders->get($transaction->orderId, ['embed' => 'payments']); } } diff --git a/src/Config/Config.php b/src/Config/Config.php index 2ce5beaab..946946d57 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -64,7 +64,7 @@ class Config ], 'mybank' => [], 'trustly' => ['at', 'de', 'ee', 'es', 'fi', 'lt', 'lv', 'nl'], - 'riverty' => ['nl','be','de','at'], + 'riverty' => ['nl', 'be', 'de', 'at'], 'payconiq' => [], ]; diff --git a/src/Service/ApiService.php b/src/Service/ApiService.php index f7629d5f8..4f557430c 100644 --- a/src/Service/ApiService.php +++ b/src/Service/ApiService.php @@ -123,9 +123,6 @@ public function getMethodsForConfig(MollieApiClient $api) $apiMethods = $apiMethods->getArrayCopy(); /** @var Method $method */ foreach ($apiMethods as $key => $method) { - if ($method->status === 'pending-review') { // TODO REMOVE THIS ONCE RIVERTY IS IMPLEMENTED - continue; - } if ($method->status !== 'activated') { unset($apiMethods[$key]); } diff --git a/src/Service/TransactionService.php b/src/Service/TransactionService.php index 2b1781ac4..d34a154e0 100644 --- a/src/Service/TransactionService.php +++ b/src/Service/TransactionService.php @@ -170,9 +170,6 @@ public function processTransaction($apiPayment) return $apiPayment; } - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); - $logger->error($apiPayment->resource); switch ($apiPayment->resource) { case Config::MOLLIE_API_STATUS_PAYMENT: PrestaShopLogger::addLog(__METHOD__ . ' said: Starting to process PAYMENT transaction.', Config::NOTICE); @@ -287,8 +284,6 @@ public function processTransaction($apiPayment) $this->configurationAdapter->get(Config::MOLLIE_AUTHORIZABLE_PAYMENT_INVOICE_ON_STATUS) === Config::MOLLIE_AUTHORIZABLE_PAYMENT_STATUS_DEFAULT; - - $logger->error($apiPayment->method); if ( !$isAuthorizablePaymentInvoiceOnStatusDefault && $apiPayment->status === OrderStatus::STATUS_COMPLETED From d78829636f2183917e9e536c2d4ed36b56ded830 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 8 Jul 2024 13:38:21 +0300 Subject: [PATCH 11/74] PIPRES-449: mobile phone fix then field is removed --- src/Provider/PhoneNumberProvider.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Provider/PhoneNumberProvider.php b/src/Provider/PhoneNumberProvider.php index 022d144a5..fa60bdce1 100644 --- a/src/Provider/PhoneNumberProvider.php +++ b/src/Provider/PhoneNumberProvider.php @@ -13,6 +13,8 @@ namespace Mollie\Provider; use Address; +use AddressFormat; +use Country; if (!defined('_PS_VERSION_')) { exit; @@ -53,6 +55,12 @@ public function getFromAddress(Address $address) private function getMobileOrPhone(Address $address) { - return $address->phone_mobile ?: $address->phone; + $addressFormat = new AddressFormat((int) $address->id_country); + + if (strpos($addressFormat->format, 'phone_mobile') !== false) { + return $address->phone_mobile ?: $address->phone; + } + + return $address->phone; } } From 9dd7463b53334294ca4555fba6af368e1ea53b85 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 8 Jul 2024 13:39:40 +0300 Subject: [PATCH 12/74] removed unused use statement --- src/Provider/PhoneNumberProvider.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Provider/PhoneNumberProvider.php b/src/Provider/PhoneNumberProvider.php index fa60bdce1..86c016dc6 100644 --- a/src/Provider/PhoneNumberProvider.php +++ b/src/Provider/PhoneNumberProvider.php @@ -14,7 +14,6 @@ use Address; use AddressFormat; -use Country; if (!defined('_PS_VERSION_')) { exit; From 3b88829bd666f87e077daf94f67a68b23ec7b049 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 8 Jul 2024 13:43:04 +0300 Subject: [PATCH 13/74] php cs fixer fix --- controllers/front/webhook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index 6b245fe23..abca3b115 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -150,7 +150,7 @@ private function setContext(int $cartId): void $this->context->cart = $cart; } - private function handleException(\Throwable $exception, int $httpStatusCode, string $logMessage): void + private function handleException(Throwable $exception, int $httpStatusCode, string $logMessage): void { /** @var PrestaLoggerInterface $logger */ $logger = $this->module->getService(PrestaLoggerInterface::class); @@ -160,7 +160,7 @@ private function handleException(\Throwable $exception, int $httpStatusCode, str $logger->error($logMessage, [ 'Exception message' => $exception->getMessage(), - 'Exception code' => $httpStatusCode + 'Exception code' => $httpStatusCode, ]); $errorHandler->handle($exception, $httpStatusCode, false); From dfccc8cb3480945833cbb4f76d3c4d714e4f4539 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 8 Jul 2024 14:05:23 +0300 Subject: [PATCH 14/74] cs fixer --- .php-cs-fixer.dist.php | 2 +- Makefile | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 59646bbb0..8d68a2263 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -12,4 +12,4 @@ ->exclude('vendor') ->exclude('upgrade'); -return $config; \ No newline at end of file +return $config; diff --git a/Makefile b/Makefile index 194247360..de3a68b13 100755 --- a/Makefile +++ b/Makefile @@ -91,7 +91,3 @@ prepare-zip: composer install --no-dev --optimize-autoloader --classmap-authoritative composer dump-autoload --no-dev --optimize --classmap-authoritative rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist .php-cs-fixer.dist.php - - - - From a585439671785ae2321a70d2eee76f912d32bc05 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 16 Jul 2024 09:33:42 +0300 Subject: [PATCH 15/74] logs added to track installation progress --- mollie.php | 8 ++++++++ src/Install/Installer.php | 9 +++++++++ subscription/Install/Installer.php | 11 +++++++++++ 3 files changed, 28 insertions(+) diff --git a/mollie.php b/mollie.php index c68e33c91..203aff5b4 100755 --- a/mollie.php +++ b/mollie.php @@ -155,6 +155,8 @@ private function loadEnv() */ public function install() { + PrestaShopLogger::addLog('Mollie install started', 1, null, 'Mollie', 1); + if (!$this->isPhpVersionCompliant()) { $this->_errors[] = $this->l('You\'re using an outdated PHP version. Upgrade your PHP version to use this module. The Mollie module supports versions PHP 7.2.0 and higher.'); @@ -166,9 +168,11 @@ public function install() return false; } + PrestaShopLogger::addLog('Mollie prestashop install successful', 1, null, 'Mollie', 1); // TODO inject base install and subscription services $coreInstaller = $this->getService(Mollie\Install\Installer::class); + PrestaShopLogger::addLog('Mollie core install initiated', 1, null, 'Mollie', 1); if (!$coreInstaller->install()) { $this->_errors = array_merge($this->_errors, $coreInstaller->getErrors()); @@ -176,6 +180,8 @@ public function install() return false; } + PrestaShopLogger::addLog('Mollie core install successful', 1, null, 'Mollie', 1); + $subscriptionInstaller = new Installer( new DatabaseTableInstaller(), new AttributeInstaller( @@ -187,6 +193,7 @@ public function install() ), new HookInstaller($this) ); + PrestaShopLogger::addLog('Mollie subscription installer initiated', 1, null, 'Mollie', 1); if (!$subscriptionInstaller->install()) { $this->_errors = array_merge($this->_errors, $subscriptionInstaller->getErrors()); @@ -194,6 +201,7 @@ public function install() return false; } + PrestaShopLogger::addLog('Mollie subscription install successful', 1, null, 'Mollie', 1); return true; } diff --git a/src/Install/Installer.php b/src/Install/Installer.php index 60bcc10eb..2560f1359 100644 --- a/src/Install/Installer.php +++ b/src/Install/Installer.php @@ -28,6 +28,7 @@ use Mollie\Utility\MultiLangUtility; use OrderState; use PrestaShopException; +use PrestaShopLogger; use Tab; use Tools; use Validate; @@ -96,8 +97,11 @@ public function install() $this->module->registerHook($hook); } + PrestaShopLogger::addLog('Mollie hooks registered successful', 1, null, 'Mollie', 1); + try { $this->orderStateInstaller->install(); + PrestaShopLogger::addLog('Mollie order state install successful', 1, null, 'Mollie', 1); } catch (CouldNotInstallModule $e) { $errorHandler->handle($e, $e->getCode(), false); $this->errors[] = $this->module->l('Unable to install Mollie statuses', self::FILE_NAME); @@ -107,6 +111,8 @@ public function install() try { $this->initConfig(); + PrestaShopLogger::addLog('Mollie configurations installed', 1, null, 'Mollie', 1); + } catch (Exception $e) { $errorHandler->handle($e, $e->getCode(), false); $this->errors[] = $this->module->l('Unable to install config', self::FILE_NAME); @@ -115,6 +121,7 @@ public function install() } try { $this->setDefaultCarrierStatuses(); + PrestaShopLogger::addLog('Mollie default carriers installed', 1, null, 'Mollie', 1); } catch (Exception $e) { $errorHandler->handle($e, $e->getCode(), false); $this->errors[] = $this->module->l('Unable to install default carrier statuses', self::FILE_NAME); @@ -126,6 +133,7 @@ public function install() try { $this->installVoucherFeatures(); + PrestaShopLogger::addLog('Mollie voucher features installed', 1, null, 'Mollie', 1); } catch (Exception $e) { $errorHandler->handle($e, $e->getCode(), false); $this->errors[] = $this->module->l('Unable to install voucher attributes', self::FILE_NAME); @@ -134,6 +142,7 @@ public function install() } $this->copyEmailTemplates(); + PrestaShopLogger::addLog('Mollie email templates copied', 1, null, 'Mollie', 1); return $this->databaseTableInstaller->install(); } diff --git a/subscription/Install/Installer.php b/subscription/Install/Installer.php index 6d854ad74..8cfe08d43 100644 --- a/subscription/Install/Installer.php +++ b/subscription/Install/Installer.php @@ -14,6 +14,8 @@ namespace Mollie\Subscription\Install; +use PrestaShopLogger; + if (!defined('_PS_VERSION_')) { exit; } @@ -43,22 +45,31 @@ public function install(): bool { if (!$this->databaseInstaller->install()) { $this->errors = $this->databaseInstaller->getErrors(); + PrestaShopLogger::addLog('Mollie subscription databases install failed', 1, null, 'Mollie', 1); return false; } + PrestaShopLogger::addLog('Mollie subscription databases installed', 1, null, 'Mollie', 1); + if (!$this->attributeInstaller->install()) { $this->errors = $this->attributeInstaller->getErrors(); + PrestaShopLogger::addLog('Mollie subscription attributes install failed', 1, null, 'Mollie', 1); return false; } + PrestaShopLogger::addLog('Mollie subscription attributes install successful', 1, null, 'Mollie', 1); + if (!$this->hookInstaller->install()) { $this->errors = $this->hookInstaller->getErrors(); + PrestaShopLogger::addLog('Mollie subscription hooks install failed', 1, null, 'Mollie', 1); return false; } + PrestaShopLogger::addLog('Mollie subscription hooks install successful', 1, null, 'Mollie', 1); + return true; } } From b5d1c8e1b9779d87cb4cdcb6e6a1a16fdab38ede Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 16 Jul 2024 10:05:22 +0300 Subject: [PATCH 16/74] logs added --- src/Install/Installer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Install/Installer.php b/src/Install/Installer.php index 2560f1359..f8c52300b 100644 --- a/src/Install/Installer.php +++ b/src/Install/Installer.php @@ -112,7 +112,6 @@ public function install() try { $this->initConfig(); PrestaShopLogger::addLog('Mollie configurations installed', 1, null, 'Mollie', 1); - } catch (Exception $e) { $errorHandler->handle($e, $e->getCode(), false); $this->errors[] = $this->module->l('Unable to install config', self::FILE_NAME); From 8a25f8be3ead6be8664a5b21f19ec0e915fb7dfb Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 16 Jul 2024 10:25:41 +0300 Subject: [PATCH 17/74] version bump and changelog updated --- changelog.md | 5 +++++ mollie.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 24953f1bd..78048bcf8 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,11 @@ ## Changes in release 6.2.2 ## + Error handling improvements ++ Mobile phone fix then field is removed ++ Riverty, Trustly, Payconiq payment methods added and GiroPay removed ++ HTTP status ++ Dependencies version bump ++ Improved installation process ## Changes in release 6.2.1 ## + Ideal v2 payment method improvement diff --git a/mollie.php b/mollie.php index 203aff5b4..21621619f 100755 --- a/mollie.php +++ b/mollie.php @@ -84,7 +84,7 @@ public function __construct() { $this->name = 'mollie'; $this->tab = 'payments_gateways'; - $this->version = '6.2.1'; + $this->version = '6.2.2'; $this->author = 'Mollie B.V.'; $this->need_instance = 1; $this->bootstrap = true; From 68f873db871ac9c04e0c06dad18cc2b7d28b0e11 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 16 Jul 2024 13:53:40 +0300 Subject: [PATCH 18/74] component link fix --- views/templates/admin/mollie_components_info.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/templates/admin/mollie_components_info.tpl b/views/templates/admin/mollie_components_info.tpl index 830d8d9dc..585712b76 100644 --- a/views/templates/admin/mollie_components_info.tpl +++ b/views/templates/admin/mollie_components_info.tpl @@ -8,7 +8,7 @@ * @see https://github.com/mollie/PrestaShop * @codingStandardsIgnoreStart *} - From 7357931d0f8f7b342374bf551edbb63eb961903e Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 30 Jul 2024 13:50:12 +0300 Subject: [PATCH 19/74] fix order states installation --- src/Install/OrderStateInstaller.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Install/OrderStateInstaller.php b/src/Install/OrderStateInstaller.php index 5dd1e4c0a..68dcb119e 100644 --- a/src/Install/OrderStateInstaller.php +++ b/src/Install/OrderStateInstaller.php @@ -202,6 +202,9 @@ private function createOrderState(OrderStateData $orderStateInstallerData): Orde private function updateStateConfiguration(string $key, OrderState $orderState): void { - $this->configurationAdapter->updateValue($key, (int) $orderState->id); + $shops = \Shop::getShops(); + foreach ($shops as $shop) { + $this->configurationAdapter->updateValue($key, (int) $orderState->id, false, null, (int) $shop['id_shop']); + } } } From e72d8d44516f603927f0bef3c67a53980bd436bf Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 30 Jul 2024 13:57:26 +0300 Subject: [PATCH 20/74] version bump --- changelog.md | 2 ++ controllers/admin/AdminMollieSettingsController.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 78048bcf8..7db6d6de7 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,8 @@ ![Mollie](https://www.mollie.nl/files/Mollie-Logo-Style-Small.png) # Changelog # +## Changes in release 6.2.3 ## ++ Multi shop improvements with order states ## Changes in release 6.2.2 ## + Error handling improvements diff --git a/controllers/admin/AdminMollieSettingsController.php b/controllers/admin/AdminMollieSettingsController.php index 614bc18c7..da395c199 100644 --- a/controllers/admin/AdminMollieSettingsController.php +++ b/controllers/admin/AdminMollieSettingsController.php @@ -100,7 +100,7 @@ public function postProcess() $this->module->getLocalPath() . 'views/templates/admin/logo.tpl' ); - $this->initCloudSyncAndPsAccounts(); +// $this->initCloudSyncAndPsAccounts(); /** @var \Mollie\Repository\ModuleRepository $moduleRepository */ $moduleRepository = $this->module->getService(\Mollie\Repository\ModuleRepository::class); From 4d844ccde4995cbcdd9202988ddfdcdf2e7c2b39 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 5 Aug 2024 11:04:54 +0300 Subject: [PATCH 21/74] invalid format for phone field fix --- src/DTO/OrderData.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DTO/OrderData.php b/src/DTO/OrderData.php index ebb19ef8d..9c013bade 100644 --- a/src/DTO/OrderData.php +++ b/src/DTO/OrderData.php @@ -433,7 +433,7 @@ public function jsonSerialize() 'familyName' => $this->cleanUpInput($this->getBillingAddress()->lastname), 'email' => $this->cleanUpInput($this->getEmail()), 'title' => $this->cleanUpInput($this->getTitle()), - 'phone' => $this->cleanUpInput($this->getBillingPhoneNumber()), + 'phone' => $this->getBillingPhoneNumber(), ], 'shippingAddress' => [ 'organizationName' => $this->cleanUpInput($this->getShippingAddress()->company), @@ -446,7 +446,7 @@ public function jsonSerialize() 'familyName' => $this->cleanUpInput($this->getShippingAddress()->lastname), 'email' => $this->cleanUpInput($this->getEmail()), 'title' => $this->cleanUpInput($this->getTitle()), - 'phone' => $this->cleanUpInput($this->getDeliveryPhoneNumber()), + 'phone' => $this->getDeliveryPhoneNumber(), ], 'redirectUrl' => $this->getRedirectUrl(), 'webhookUrl' => $this->getWebhookUrl(), From 8b53c015515774123428dfd70a8ad8b5ac8c56f4 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 13 Aug 2024 16:06:34 +0300 Subject: [PATCH 22/74] PIPRES-461: Number utility service refactoring --- src/Utility/NumberUtility.php | 198 ++++++++++++++++++++++------------ 1 file changed, 129 insertions(+), 69 deletions(-) diff --git a/src/Utility/NumberUtility.php b/src/Utility/NumberUtility.php index ca4babd47..195823dc0 100644 --- a/src/Utility/NumberUtility.php +++ b/src/Utility/NumberUtility.php @@ -13,7 +13,7 @@ namespace Mollie\Utility; use PrestaShop\Decimal\DecimalNumber; -use PrestaShop\Decimal\Number; +use PrestaShop\Decimal\Exception\DivisionByZeroException; use PrestaShop\Decimal\Operation\Rounding; if (!defined('_PS_VERSION_')) { @@ -24,14 +24,21 @@ class NumberUtility { public const DECIMAL_PRECISION = 2; public const FLOAT_PRECISION = 6; - private const ROUNDING = Rounding::ROUND_HALF_UP; - - // TODO make all methods consistent: either pass string/float as parameter or cast members to Number/DecimalNumber class beforehand. + private const ROUNDING_MODE = Rounding::ROUND_HALF_UP; + /** + * Converts a float number to a specified precision. + * + * @param float $number + * @param int $precision + * @param string $roundingMode + * + * @return float + */ public static function toPrecision( float $number, int $precision = self::DECIMAL_PRECISION, - string $roundingMode = self::ROUNDING + string $roundingMode = self::ROUNDING_MODE ): float { $decimalNumber = self::getNumber($number); @@ -39,142 +46,195 @@ public static function toPrecision( } /** - * Decreases number by its given percentage - * E.g 75/1.5 = 50. + * Decreases a number by a given percentage. * * @param float $number * @param float $percentage * * @return float - * - * @throws \PrestaShop\Decimal\Exception\DivisionByZeroException + * @throws DivisionByZeroException */ - public static function decreaseByPercentage($number, $percentage) + public static function decreaseByPercentage(float $number, float $percentage): float { - if (!$percentage || $percentage <= 0) { + if ($percentage <= 0) { return $number; } + $numberTransformed = self::getNumber($number); - $totalDecrease = self::toPercentageIncrease($percentage); - $decrement = (string) $numberTransformed->dividedBy(self::getNumber($totalDecrease)); + $percentageIncrease = self::toPercentageIncrease($percentage); + $decrement = $numberTransformed->dividedBy(self::getNumber($percentageIncrease)); - return (float) $decrement; + return (float) $decrement->toPrecision(self::DECIMAL_PRECISION, self::ROUNDING_MODE); } - public static function increaseByPercentage($number, $percentage) + /** + * Increases a number by a given percentage. + * + * @param float $number + * @param float $percentage + * + * @return float + */ + public static function increaseByPercentage(float $number, float $percentage): float { - if (!$percentage || $percentage <= 0) { + if ($percentage <= 0) { return $number; } + $numberTransformed = self::getNumber($number); $percentageIncrease = self::toPercentageIncrease($percentage); - $percentageIncreaseTransformed = self::getNumber($percentageIncrease); - $result = (string) $numberTransformed->times($percentageIncreaseTransformed); + $result = $numberTransformed->times(self::getNumber($percentageIncrease)); - return (float) $result; + return (float) $result->toPrecision(self::DECIMAL_PRECISION, self::ROUNDING_MODE); } /** - * E.g 21% will become 1.21. + * Converts a percentage to its decimal increase (e.g., 21% becomes 1.21). * * @param float $percentage * * @return float */ - public static function toPercentageIncrease($percentage) + public static function toPercentageIncrease(float $percentage): float { $percentageNumber = self::getNumber($percentage); $smallerNumber = $percentageNumber->dividedBy(self::getNumber(100)); - $result = (string) $smallerNumber->plus(self::getNumber(1)); + $result = $smallerNumber->plus(self::getNumber(1)); - return (float) $result; + return (float) $result->toPrecision(self::FLOAT_PRECISION, self::ROUNDING_MODE); } + /** + * Multiplies two numbers with precision. + * + * @param float $target + * @param float $factor + * @param int $precision + * @param string $roundingMode + * + * @return float + */ public static function times( float $target, float $factor, int $precision = self::FLOAT_PRECISION, - string $roundingMode = self::ROUNDING + string $roundingMode = self::ROUNDING_MODE ): float { - $firstNumber = self::getNumber($target); - $secondNumber = self::getNumber($factor); - - $result = $firstNumber->times($secondNumber); + $result = self::getNumber($target)->times(self::getNumber($factor)); return (float) $result->toPrecision($precision, $roundingMode); } + /** + * Divides a number by another with precision. + * + * @param float $target + * @param float $divisor + * @param int $precision + * @param string $roundingMode + * + * @return float + * @throws DivisionByZeroException + */ public static function divide( float $target, float $divisor, int $precision = self::FLOAT_PRECISION, - string $roundingMode = self::ROUNDING + string $roundingMode = self::ROUNDING_MODE ): float { - $firstNumber = self::getNumber($target); - $secondNumber = self::getNumber($divisor); - - $result = $firstNumber->dividedBy($secondNumber, $precision); + $result = self::getNumber($target)->dividedBy(self::getNumber($divisor), $precision); return (float) $result->toPrecision($precision, $roundingMode); } + /** + * Checks if two numbers are equal. + * + * @param float $a + * @param float $b + * + * @return bool + */ public static function isEqual(float $a, float $b): bool { - $firstNumber = self::getNumber($a); - $secondNumber = self::getNumber($b); - - return $firstNumber->equals($secondNumber); + return self::getNumber($a)->equals(self::getNumber($b)); } - public static function isLowerThan($a, $b) + /** + * Checks if one number is lower than another. + * + * @param float $a + * @param float $b + * + * @return bool + */ + public static function isLowerThan(float $a, float $b): bool { - $firstNumber = self::getNumber($a); - $secondNumber = self::getNumber($b); - - return $firstNumber->isLowerThan($secondNumber); + return self::getNumber($a)->isLowerThan(self::getNumber($b)); } - public static function isLowerOrEqualThan($a, $b) + /** + * Checks if one number is lower than or equal to another. + * + * @param float $a + * @param float $b + * + * @return bool + */ + public static function isLowerOrEqualThan(float $a, float $b): bool { - $firstNumber = self::getNumber($a); - $secondNumber = self::getNumber($b); - - return $firstNumber->isLowerOrEqualThan($secondNumber); + return self::getNumber($a)->isLowerOrEqualThan(self::getNumber($b)); } + /** + * Checks if one number is greater than another. + * + * @param float $target + * @param float $comparison + * + * @return bool + */ public static function isGreaterThan(float $target, float $comparison): bool { - $firstNumber = self::getNumber($target); - $secondNumber = self::getNumber($comparison); - - return $firstNumber->isGreaterThan($secondNumber); + return self::getNumber($target)->isGreaterThan(self::getNumber($comparison)); } - public static function minus($a, $b) + /** + * Subtracts one number from another. + * + * @param float $a + * @param float $b + * + * @return float + */ + public static function minus(float $a, float $b): float { - $firstNumber = self::getNumber($a); - $secondNumber = self::getNumber($b); - - return (float) ((string) $firstNumber->minus($secondNumber)); + return (float) self::getNumber($a)->minus(self::getNumber($b))->toPrecision(self::FLOAT_PRECISION, self::ROUNDING_MODE); } - public static function plus($a, $b) + /** + * Adds two numbers together. + * + * @param float $a + * @param float $b + * + * @return float + */ + public static function plus(float $a, float $b): float { - $firstNumber = self::getNumber($a); - $secondNumber = self::getNumber($b); - - return (float) ((string) $firstNumber->plus($secondNumber)); + return (float) self::getNumber($a)->plus(self::getNumber($b))->toPrecision(self::FLOAT_PRECISION, self::ROUNDING_MODE); } /** - * @return Number|DecimalNumber + * Creates a Number or DecimalNumber instance from a float. + * + * @param float $number + * + * @return DecimalNumber */ - private static function getNumber(float $number) + private static function getNumber(float $number): DecimalNumber { - if (is_subclass_of(Number::class, DecimalNumber::class)) { - return new DecimalNumber((string) $number); - } - - return new Number((string) $number); + // Assuming DecimalNumber is the preferred class based on the use case. + return new DecimalNumber((string) $number); } -} +} \ No newline at end of file From 9731aa2ac834a9a02cd29f499c6ceda074ef1d8c Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 28 Aug 2024 12:22:00 +0300 Subject: [PATCH 23/74] multishop improvements --- src/Install/OrderStateInstaller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Install/OrderStateInstaller.php b/src/Install/OrderStateInstaller.php index 68dcb119e..58123f5be 100644 --- a/src/Install/OrderStateInstaller.php +++ b/src/Install/OrderStateInstaller.php @@ -155,6 +155,8 @@ private function enableState(string $key): void $existingStateId = (int) $this->configurationAdapter->get($key); $orderState = new OrderState($existingStateId); + $this->updateStateConfiguration($key, $orderState); + if ((bool) !$orderState->deleted) { return; } From 118987d0bd82a39354a2e1870e9bf5e7788db026 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 28 Aug 2024 15:14:34 +0300 Subject: [PATCH 24/74] italian transklations --- it.php | 417 ++++++++++++++++++++++++++++++++++++++++++++++++ translation.csv | 413 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 830 insertions(+) create mode 100644 it.php create mode 100644 translation.csv diff --git a/it.php b/it.php new file mode 100644 index 000000000..70bb072f2 --- /dev/null +++ b/it.php @@ -0,0 +1,417 @@ +mollie_7c478959c218087ffc4ad5d96e7f66a6"'] = '"Mollie"'; +$_MODULE['"<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5"'] = '"Pagamenti Mollie"'; +$_MODULE['"<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac"'] = '"Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive."'; +$_MODULE['"<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd"'] = '"Non è stato possibile installare il modulo"'; +$_MODULE['"<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2"'] = '"Grazie. Abbiamo ricevuto il pagamento."'; +$_MODULE['"<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5"'] = '"AJAX"'; +$_MODULE['"<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; +$_MODULE['"<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7"'] = '"FAQ Abbonamenti"'; +$_MODULE['"<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237"'] = '"Link di pagamento"'; +$_MODULE['"<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968"'] = ' please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com"'; +$_MODULE['"<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27"'] = '"Errore di pagamento:"'; +$_MODULE['"<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57"'] = '"Il cliente deve aver effettuato il login per acquistare l\'elemento in abbonamento."'; +$_MODULE['"<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c"'] = '"Non è possibile rimuovere l\'indirizzo associato all\'abbonamento"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252"'] = '"Creazione di abbonamento"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304"'] = ' assign it a Mollie subscription attribute."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83"'] = '"Punti IMPORTANTI"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf"'] = ' make sure you always include \'none\' as a fallback."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621"'] = '"Punti IMPORTANTI sul vettore per l\'abbonamento "'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f"'] = '"Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736"'] = '"Il vettore dovrebbe coprire tutte le regioni supportate dal negozio."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f"'] = '"Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5"'] = ' subscription orders must be cancelled and carrier re-selected in module settings."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb"'] = '"Regole del carrello"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc"'] = '"Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f"'] = '"Confezioni regalo"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc"'] = '"La funzione di confezione regalo non è supportata per gli ordini in abbonamento."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1"'] = '"Creazione di ordini ricorrenti"'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6"'] = '"Mollie for Prestashop crea automaticamente un nuovo ordine quando l\'ordine precedente viene pagato."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4"'] = '"Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento."'; +$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1"'] = '"L\'ordine ricorrente sovrascriverà l\'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie."'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4"'] = '"Selezionare il negozio che desidera configurare"'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88"'] = '"Impossibile salvare le opzioni. Riprovare o contattare l\'assistenza."'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf"'] = '"Opzioni salvate con successo."'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06"'] = '"Vettore non trovato"'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95"'] = '"Annullato con successo"'; +$_MODULE['"<{mollie}prestashop>subscriptioncontroller_0e1248f1d840e05ee74190cb30e23c51"'] = '"Non è stato possibile annullare l\'abbonamento"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_b718adec73e04ce3ec720dd11a06a308"'] = '"ID"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_9bf79c7f10eadd0b612b8c354ad19bdc"'] = '"ID abbonamento"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_d37c2bf1bd3143847fca087b354f920e"'] = '"ID cliente"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_f11b368cddfe37c47af9b9d91c6ba4f0"'] = '"Nome e cognome"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_b5a7adde1af5c87d7fd797b6245c2a39"'] = '"Descrizione"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_ec53a8c4f07baed5d8825072c89799be"'] = '"Stato"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399"'] = '"Prezzo totale"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c"'] = '"Valuta"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa"'] = '"Azioni"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; +$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76"'] = '"Annullare l\'abbonamento selezionato?"'; +$_MODULE['"<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962"'] = '"Selezionare il suo vettore"'; +$_MODULE['"<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205"'] = '"Non è stato possibile aggiungere gli attributi"'; +$_MODULE['"<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf"'] = '"Non è stato possibile cancellare degli attributi"'; +$_MODULE['"<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d"'] = '"Conflitto di risorse"'; +$_MODULE['"<{mollie}prestashop>abstractmolliecontroller_8f8913c1f755436db84ae169e37c61f9"'] = '"Errore interno"'; +$_MODULE['"<{mollie}prestashop>formbuilder_c9cc8cce247e49bae79f15173ce97354"'] = '"Salva"'; +$_MODULE['"<{mollie}prestashop>formbuilder_0ba29c6a1afacf586b03a26162c72274"'] = '"Ambiente"'; +$_MODULE['"<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b"'] = '"Test"'; +$_MODULE['"<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0"'] = '"Live"'; +$_MODULE['"<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd"'] = '"Test della chiave API"'; +$_MODULE['"<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e"'] = '"Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live."'; +$_MODULE['"<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a"'] = '"Chiave API live"'; +$_MODULE['"<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c"'] = '"Chiave API di test"'; +$_MODULE['"<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19"'] = '"Ha già un account Mollie?"'; +$_MODULE['"<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32"'] = '"Abilitato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241"'] = '"Disabilitato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6"'] = '"Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]"'; +$_MODULE['"<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded"'] = '"Chiave API Live"'; +$_MODULE['"<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9"'] = '"Utilizza Mollie Components per le carte di credito"'; +$_MODULE['"<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57"'] = '"Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione."'; +$_MODULE['"<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b"'] = '"Leggere di più su Mollie Components e come migliorano la conversione"'; +$_MODULE['"<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5"'] = '"Utilizzare pagamenti con un solo clic per le carte di credito"'; +$_MODULE['"<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0"'] = '"Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione."'; +$_MODULE['"<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae"'] = '"Metodi di pagamento"'; +$_MODULE['"<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49"'] = '"[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API."'; +$_MODULE['"<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269"'] = '"Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR."'; +$_MODULE['"<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f"'] = '"Usa il locale selezionato nel webshop"'; +$_MODULE['"<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6"'] = ' your shop uses the browser\'s locale. "'; +$_MODULE['"<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f"'] = '"Utilizza il locale del webshop"'; +$_MODULE['"<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419"'] = '"Utilizza il locale del browser"'; +$_MODULE['"<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135"'] = '"Invia l\'e-mail di conferma dell\'ordine"'; +$_MODULE['"<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb"'] = '"Quando l\'ordine viene pagato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c"'] = '"Mai"'; +$_MODULE['"<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844"'] = '"Selezionare quando creare la fattura dell\'Ordine"'; +$_MODULE['"<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67"'] = '"Predefinito"'; +$_MODULE['"<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3"'] = '"Autorizzato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d"'] = '"Spedito"'; +$_MODULE['"<{mollie}prestashop>formbuilder_7c4e7ada50c8572336f872fced4d1852"'] = '"Stato per i pagamenti %s"'; +$_MODULE['"<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2"'] = '"I pagamenti di `%s` ottengono lo stato di `%s`."'; +$_MODULE['"<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039"'] = '"Invia un\'e-mail a %s"'; +$_MODULE['"<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c"'] = ' self::FILE_NAME"'; +$_MODULE['"<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605"'] = '"Saltare questo stato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2"'] = '"Stati dell\'ordine"'; +$_MODULE['"<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983"'] = '"Impostazioni visive"'; +$_MODULE['"<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157"'] = '"Immagini"'; +$_MODULE['"<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219"'] = ' normal'; +$_MODULE['"<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0"'] = '"Nascondere"'; +$_MODULE['"<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0"'] = '"Normale"'; +$_MODULE['"<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3"'] = '"Grande"'; +$_MODULE['"<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5"'] = '"File CSS"'; +$_MODULE['"<{mollie}prestashop>formbuilder_13efb943fd692917410355eb926d24a2"'] = ' [1]{THEME}[/1]'; +$_MODULE['"<{mollie}prestashop>formbuilder_1191f888f0cc23f95aa77aacb094503b"'] = '"Informazioni sulla spedizione"'; +$_MODULE['"<{mollie}prestashop>formbuilder_2526a2ff1547e6fe751081693d8631af"'] = '"Spedisci automaticamente sugli stati contrassegnati"'; +$_MODULE['"<{mollie}prestashop>formbuilder_006a37d93d3c3fb1b097dcf477f84a99"'] = '"Abilita per inviare automaticamente le informazioni sulla spedizione quando un ordine ottiene uno stato contrassegnato."'; +$_MODULE['"<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4"'] = '"Spedisci automaticamente quando uno di questi stati è raggiunto"'; +$_MODULE['"<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988"'] = ' the module automatically sends shipment information"'; +$_MODULE['"<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d"'] = '"Mostra"'; +$_MODULE['"<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8"'] = '"Disattivare questo stato"'; +$_MODULE['"<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797"'] = '"Livello di debug"'; +$_MODULE['"<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91"'] = '"Mostra errori"'; +$_MODULE['"<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9"'] = '"Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging."'; +$_MODULE['"<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d"'] = '"Livello di log"'; +$_MODULE['"<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62"'] = '"Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]"'; +$_MODULE['"<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5"'] = '"Nessuno"'; +$_MODULE['"<{mollie}prestashop>formbuilder_5ef0c737746fae2ca90e66c39333f8f6"'] = '"Errori"'; +$_MODULE['"<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c"'] = '"Tutto"'; +$_MODULE['"<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed"'] = '"Impostazioni generali"'; +$_MODULE['"<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998"'] = '"Impostazioni avanzate"'; +$_MODULE['"<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680"'] = '"Tutti"'; +$_MODULE['"<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65"'] = '"Nessun vettore"'; +$_MODULE['"<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81"'] = '"Nuovo buono per il suo ordine %s"'; +$_MODULE['"<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546"'] = '"Si è verificato un errore durante l\'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885"'] = '"Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f"'] = '"Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5"'] = '"L\'opzione di pagamento scelta non è disponibile per l\'importo totale del suo ordine. La preghiamo di considerare un\'altra opzione di pagamento e riprovare."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di spedizione."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di pagamento."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) è un pagamento regolare."'; +$_MODULE['"<{mollie}prestashop>exceptionservice_90d4e1683d6b1745120d0a254d58e4ea"'] = '"Eccezione sconosciuta in Mollie"'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b"'] = '"La chiave API deve iniziare con test o live."'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45"'] = '"Chiave API sbagliata!"'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab"'] = '"Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento"'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04"'] = '"Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente."'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408"'] = ' please try resetting Mollie module."'; +$_MODULE['"<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f"'] = '"La configurazione è stata salvata!"'; +$_MODULE['"<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df"'] = '"L\'ordine non poteva essere rimborsato!"'; +$_MODULE['"<{mollie}prestashop>refundservice_ccb168b5a6a86eb100dc2dee754a316b"'] = '"Motivo:"'; +$_MODULE['"<{mollie}prestashop>refundservice_e12682d2e0650f2783b22d956d2b947a"'] = '"L\'ordine è stato rimborsato!"'; +$_MODULE['"<{mollie}prestashop>refundservice_88928f236ceccc4c2e0f2eb643d85341"'] = '"Mollie trasferirà l\'importo al cliente il giorno lavorativo successivo."'; +$_MODULE['"<{mollie}prestashop>refundservice_65718b7293759bcf2ca7257aba3d3179"'] = '"Non è stato possibile rimborsare i prodotti!"'; +$_MODULE['"<{mollie}prestashop>languageservice_e0010a0a1a3259ab5c06a19bad532851"'] = '"Pagato"'; +$_MODULE['"<{mollie}prestashop>languageservice_07ca5050e697392c9ed47e6453f1453f"'] = '"Completato"'; +$_MODULE['"<{mollie}prestashop>languageservice_a206428462686af481cb072b8db11784"'] = '"Autorizzato"'; +$_MODULE['"<{mollie}prestashop>languageservice_0e22fe7d45f8e5632a4abf369b24e29c"'] = '"Annullato"'; +$_MODULE['"<{mollie}prestashop>languageservice_24fe48030f7d3097d5882535b04c3fa8"'] = '"Scaduto"'; +$_MODULE['"<{mollie}prestashop>languageservice_cc61945cbbf46721a053467c395c666f"'] = '"Rimborsato"'; +$_MODULE['"<{mollie}prestashop>languageservice_c3bf447eabe632720a3aa1a7ce401274"'] = '"Aperto"'; +$_MODULE['"<{mollie}prestashop>languageservice_c7bece6685d4556fcb8dfdcd72d720f5"'] = '"In attesa"'; +$_MODULE['"<{mollie}prestashop>languageservice_9f004157e4c148dac71da3ae5906351f"'] = '"Parzialmente rimborsato"'; +$_MODULE['"<{mollie}prestashop>languageservice_a7b2273fe3a1293885769855e2f3e6ba"'] = '"Chargeback"'; +$_MODULE['"<{mollie}prestashop>languageservice_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; +$_MODULE['"<{mollie}prestashop>languageservice_ea9cf7e47ff33b2be14e6dd07cbcefc6"'] = '"Spedizione"'; +$_MODULE['"<{mollie}prestashop>languageservice_484f5a79672cebe198ebdde45a1d672f"'] = '"Confezioni regalo"'; +$_MODULE['"<{mollie}prestashop>languageservice_e2b7dec8fa4b498156dfee6e4c84b156"'] = '"Questo metodo di pagamento non è disponibile."'; +$_MODULE['"<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c"'] = '"Non è stato possibile annullare i prodotti!"'; +$_MODULE['"<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd"'] = '"Non è stato possibile spedire i prodotti!"'; +$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1"'] = '"Non è stato possibile creare l\'email di seconda possibilità!"'; +$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2"'] = '"Non è stato possibile creare un\'e-mail di seconda possibilità - errore API"'; +$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d"'] = '"Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato!"'; +$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7"'] = '"L\'e-mail di seconda possibilità è stata inviata con successo!"'; +$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e"'] = '"Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato o è scaduto!"'; +$_MODULE['"<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18"'] = '"Invierà nuovamente un\'email con il link di pagamento al cliente"'; +$_MODULE['"<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305"'] = '"Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github."'; +$_MODULE['"<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8"'] = '"Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato."'; +$_MODULE['"<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; +$_MODULE['"<{mollie}prestashop>bancontactpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; +$_MODULE['"<{mollie}prestashop>creditcardpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; +$_MODULE['"<{mollie}prestashop>creditcardsingleclickpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; +$_MODULE['"<{mollie}prestashop>basepaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; +$_MODULE['"<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2"'] = '"Non è stato possibile creare una transazione Mollie."'; +$_MODULE['"<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e"'] = '"Non è stato possibile trovare l\'ordine corrispondente al carrello."'; +$_MODULE['"<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a"'] = '"Non è stato possibile installare gli stati di Mollie"'; +$_MODULE['"<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f"'] = '"Non è stato possibile installare la configurazione"'; +$_MODULE['"<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8"'] = '"Non è stato possibile installare gli stati predefiniti del vettore"'; +$_MODULE['"<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b"'] = '"Non è stato possibile installare gli attributi del voucher"'; +$_MODULE['"<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c"'] = '"Non è stato possibile copiare i modelli di e-mail:"'; +$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6"'] = '"Non è stato possibile creare una directory per il certificato apple pay direct"'; +$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6"'] = '"Non è stato possibile creare una cartella perché mancano i permessi di scrittura:"'; +$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5"'] = '"Non è stato possibile copiare il certificato apple pay direct"'; +$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415"'] = '"Caricare un file .jpg o .png."'; +$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e"'] = '"Si è verificato un errore durante il caricamento del logo."'; +$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160"'] = '"Nessuna commissione è stata inviata."'; +$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12"'] = '"Commissione non valida"'; +$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a"'] = '"ID gruppo regole fiscali mancante"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e"'] = '"Aggiornare il modulo Mollie"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4"'] = '"Selezionare il negozio che si desidera configurare"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84"'] = '"Selezionare lo stato dell\'ordine per \"Stato in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\"""."'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec"'] = '"Inserire una descrizione"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd"'] = '"L\'importo minimo inserito non è corretto"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0"'] = '"L\'importo massimo inserito non è corretto"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5"'] = '"Caricare un\'immagine %s%x%s1%"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc"'] = '"File non valido: %s%"'; +$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a"'] = '"Le tabelle del database sono mancanti. Reimpostare il modulo."'; +$_MODULE['"<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17"'] = '"Totale"'; +$_MODULE['"<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d"'] = '"Totale (tasse incluse)"'; +$_MODULE['"<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea"'] = '"Totale (tasse escluse)"'; +$_MODULE['"<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836"'] = '"Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta."'; +$_MODULE['"<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645"'] = '"Il servizio di abbonamento è disattivato. Modificare l\'attributo a Abbonamento: nessuno."'; +$_MODULE['"<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179"'] = '"Errore sconosciuto. Riprovare o modificare l\'attributo a Abbonamento: nessuno."'; +$_MODULE['"<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac"'] = '"Errore: token non valido."'; +$_MODULE['"<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe"'] = '"Non è stato possibile ottenere il nuovo metodo di pagamento."'; +$_MODULE['"<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8"'] = '"Non è stato possibile ottenere un ordine ricorrente."'; +$_MODULE['"<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd"'] = '"L\'abbonamento è stato annullato con successo."'; +$_MODULE['"<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f"'] = '"Si è verificato un errore durante la creazione del pagamento. Contattare l\'assistenza clienti."'; +$_MODULE['"<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067"'] = '"Non è stato possibile salvare le informazioni dell\'ordine."'; +$_MODULE['"<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e"'] = '"Non esiste un ordine con questo ID."'; +$_MODULE['"<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d"'] = '"Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante."'; +$_MODULE['"<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227"'] = '"Non è autorizzato a visualizzare questa pagina."'; +$_MODULE['"<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf"'] = '"Il pagamento non è andato a buon fine. La preghiamo di riprovare."'; +$_MODULE['"<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0"'] = '"Il pagamento non è riuscito perché gli importi dell\'ordine e del pagamento sono diversi. La preghiamo di riprovare."'; +$_MODULE['"<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7"'] = '"Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante."'; +$_MODULE['"<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7"'] = '"Test chiave API: Fallito! La chiave deve iniziare con test_."'; +$_MODULE['"<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847"'] = '"Test chiave API: Riuscito!"'; +$_MODULE['"<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180"'] = '"Metodi abilitati:"'; +$_MODULE['"<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7"'] = '"Test chiave API: Fallito! La chiave non esiste."'; +$_MODULE['"<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e"'] = '"Chiave API live: Fallita! La chiave deve iniziare con live_."'; +$_MODULE['"<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61"'] = '"Chiave API live: Riuscito!"'; +$_MODULE['"<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439"'] = '"Chiave API live: Fallita! La chiave non esiste."'; +$_MODULE['"<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844"'] = '"Selezionare quando creare la fattura dell\'Ordine"'; +$_MODULE['"<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34"'] = '"Predefinito: La fattura viene creata in base alle Impostazioni dell\'ordine > Stati. Non viene creato uno stato personalizzato."'; +$_MODULE['"<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb"'] = '"Autorizzato: Crea una fattura completa quando l\'ordine è autorizzato. Viene creato uno stato personalizzato."'; +$_MODULE['"<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d"'] = '"Alla spedizione: Crea una fattura completa quando l\'ordine viene spedito. Viene creato uno stato personalizzato."'; +$_MODULE['"<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; +$_MODULE['"<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9"'] = '"Inviare un\'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell\'ordine)"'; +$_MODULE['"<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99"'] = '"Sta attualmente utilizzando la versione %s di questo modulo. L\'ultima versione è %s."'; +$_MODULE['"<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8"'] = '"[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità."'; +$_MODULE['"<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad"'] = '"Clicca qui"'; +$_MODULE['"<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884"'] = '"per creare un account"'; +$_MODULE['"<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f"'] = '"Sviluppato da Invertus"'; +$_MODULE['"<{mollie}prestashop>form_1c04b154909c88cfc62b3362c88445af"'] = '"- l\'agenzia più avanzata tecnicamente dell\'ecosistema PrestaShop."'; +$_MODULE['"<{mollie}prestashop>form_0f13aa29b5bc9e8a1b6597dc5987ea46"'] = '"Vai al centro di assistenza Mollie"'; +$_MODULE['"<{mollie}prestashop>form_1c2e79c1715dbe3f3208a7991abc50f0"'] = '"Contatta Mollie"'; +$_MODULE['"<{mollie}prestashop>form_2d059d2c499450d4e083d28f5f47f63d"'] = '"Contatta Invertus"'; +$_MODULE['"<{mollie}prestashop>form_00d23a76e43b46dae9ec7aa9dcbebb32"'] = '"Abilitato"'; +$_MODULE['"<{mollie}prestashop>form_bafd7322c6e97d25b6299b5d6fe8920b"'] = '"No"'; +$_MODULE['"<{mollie}prestashop>form_93cba07454f06a4a960172bbd6e2a435"'] = '"Sì"'; +$_MODULE['"<{mollie}prestashop>form_b61254f89b6f2ef061fb628f04a93fe8"'] = '"Pagina del prodotto Apple Pay Direct"'; +$_MODULE['"<{mollie}prestashop>form_9fa70bd7cc082c6eafd9f6c04782de2c"'] = '"Pagina del carrello Apple Pay Direct"'; +$_MODULE['"<{mollie}prestashop>form_020f1a50a78b13a12f304d64dda57020"'] = '"Stile del pulsante Apple Pay Direct"'; +$_MODULE['"<{mollie}prestashop>form_9c12f952ca3695bb3043ddcc0ceaaf80"'] = '"Codice QR"'; +$_MODULE['"<{mollie}prestashop>form_b78a3223503896721cca1303f776159b"'] = '"Titolo"'; +$_MODULE['"<{mollie}prestashop>form_4c3880bb027f159e801041b1021e88e8"'] = '"Metodo"'; +$_MODULE['"<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4"'] = '"Payments API"'; +$_MODULE['"<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51"'] = '"Orders API"'; +$_MODULE['"<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1"'] = '"Descrizione della transazione"'; +$_MODULE['"<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29"'] = '"Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:"'; +$_MODULE['"<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d"'] = '"Accettare pagamenti da:"'; +$_MODULE['"<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee"'] = '"Tutti i paesi"'; +$_MODULE['"<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce"'] = '"Paesi selezionati"'; +$_MODULE['"<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc"'] = '"Accettare pagamenti da paesi specifici:"'; +$_MODULE['"<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a"'] = '"Escludere i pagamenti da specifici paesi:"'; +$_MODULE['"<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; +$_MODULE['"<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45"'] = '"Nessuna commissione"'; +$_MODULE['"<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543"'] = '"Commissione fissa"'; +$_MODULE['"<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c"'] = '"Percentuale"'; +$_MODULE['"<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085"'] = '"Limite combinato per supplemento di pagamento"'; +$_MODULE['"<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f"'] = '"Aggiungere \"(payment_fee}}"" nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni"'; +$_MODULE['"<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409"'] = '"Traduzioni"'; +$_MODULE['"<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4"'] = '"Includere le tasse nella commissione totale del pagamento"'; +$_MODULE['"<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81"'] = '"Commissione fissa (tasse incluse)"'; +$_MODULE['"<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c"'] = '"Commissione fissa (tasse escluse)"'; +$_MODULE['"<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc"'] = '"Gruppo regole fiscali per commissione fissa"'; +$_MODULE['"<{mollie}prestashop>form_e457ab8b899c330b05e1bbe6539a50df"'] = '"Quota percentuale"'; +$_MODULE['"<{mollie}prestashop>form_a1eeaac9cc0281aa432a7503fd79c340"'] = '"Commissione massima"'; +$_MODULE['"<{mollie}prestashop>form_80a2645c681d607705f5baab7cf7d2cb"'] = '"Importo minimo"'; +$_MODULE['"<{mollie}prestashop>form_a14ecf18ea57e0ae5ebcd930102d7cbd"'] = '"L\'importo minimo predefinito in Mollie è:"'; +$_MODULE['"<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7"'] = '"Importo massimo"'; +$_MODULE['"<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6"'] = '"L\'importo massimo predefinito non ha limitazioni"'; +$_MODULE['"<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9"'] = '"L\'importo massimo predefinito in Mollie è:"'; +$_MODULE['"<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a"'] = '"Utilizzare un logo personalizzato"'; +$_MODULE['"<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f"'] = '"Caricare un logo personalizzato"'; +$_MODULE['"<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7"'] = '"Aggiungere file"'; +$_MODULE['"<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571"'] = '"Utilizzare un file .png o .jpg fino a 256x64 pixel."'; +$_MODULE['"<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7"'] = '"Il suo logo personalizzato"'; +$_MODULE['"<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873"'] = '"Categoria"'; +$_MODULE['"<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754"'] = '"Nessuno"'; +$_MODULE['"<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789"'] = '"pasto"'; +$_MODULE['"<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e"'] = '"regalo"'; +$_MODULE['"<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45"'] = '"eco"'; +$_MODULE['"<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446"'] = '"Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop."'; +$_MODULE['"<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae"'] = '"Configurare le informazioni sulla spedizione da inviare a Mollie"'; +$_MODULE['"<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb"'] = '"Può utilizzare le seguenti variabili per gli URL del vettore"'; +$_MODULE['"<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26"'] = '"Numero di spedizione"'; +$_MODULE['"<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d"'] = '"Codice paese di fatturazione"'; +$_MODULE['"<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f"'] = '"Codice postale di fatturazione"'; +$_MODULE['"<{mollie}prestashop>form_0d12e3c554976ad1f76c5db2b6c127ad"'] = '"Codice del paese di spedizione"'; +$_MODULE['"<{mollie}prestashop>form_c824a8b18f09dc7e58bacf446be6735c"'] = '"Codice postale di spedizione"'; +$_MODULE['"<{mollie}prestashop>form_0a867177f4a701a9f33de5ab21c42593"'] = '"Codice lingua a 2 lettere"'; +$_MODULE['"<{mollie}prestashop>form_49ee3087348e8d44e1feda1917443987"'] = '"Nome"'; +$_MODULE['"<{mollie}prestashop>form_cefb9190a0a2b3301f3e4d44ad14e6c0"'] = '"Fonte URL"'; +$_MODULE['"<{mollie}prestashop>form_812a48ba719daeda82e4da8e812d426c"'] = '"URL personalizzato"'; +$_MODULE['"<{mollie}prestashop>form_962b59a5f12eabd9c05f11b5f0aada85"'] = '"Non spedire automaticamente"'; +$_MODULE['"<{mollie}prestashop>form_703490ffd308d337cd5aac50567e9670"'] = '"Nessuna informazione sulla tracciabilità"'; +$_MODULE['"<{mollie}prestashop>form_de28ef21a06f3978c05f3d808b15eaab"'] = '"URL del vettore"'; +$_MODULE['"<{mollie}prestashop>form_e55f75a29310d7b60f7ac1d390c8ae42"'] = '"Modulo"'; +$_MODULE['"<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a"'] = '"Questa opzione non è necessaria per l\'API attualmente selezionato."'; +$_MODULE['"<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828"'] = '"Questa opzione non è necessaria per l\'API selezionata"'; +$_MODULE['"<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d"'] = '"Mostra"'; +$_MODULE['"<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0"'] = '"Nascondere"'; +$_MODULE['"<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5"'] = '"Nessun metodo di pagamento Mollie ancora abilitato"'; +$_MODULE['"<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950"'] = '"Attivare i metodi di pagamento nel proprio account Mollie."'; +$_MODULE['"<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26"'] = '"Configurare"'; +$_MODULE['"<{mollie}prestashop>form_20d053df791cc72594d141b24276597f"'] = '"Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento."'; +$_MODULE['"<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a"'] = '"È sicuro?"'; +$_MODULE['"<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f"'] = '"È sicuro di voler rimborsare questo ordine?"'; +$_MODULE['"<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714"'] = '"Rimborso"'; +$_MODULE['"<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; +$_MODULE['"<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8"'] = '"Rimborsare ordine"'; +$_MODULE['"<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1"'] = '"Rimborsabile"'; +$_MODULE['"<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090"'] = '"Rimborso parziale"'; +$_MODULE['"<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a"'] = '"Importo non valido"'; +$_MODULE['"<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872"'] = '"Inserire un importo valido"'; +$_MODULE['"<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782"'] = '"Rimborso non riuscito"'; +$_MODULE['"<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f"'] = '"Informazioni sul pagamento"'; +$_MODULE['"<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008"'] = '"ID transazione"'; +$_MODULE['"<{mollie}prestashop>order_info_782678f4ba02feb3e9ecd51e902cd16b"'] = '"Cronologia dei rimborsi"'; +$_MODULE['"<{mollie}prestashop>order_info_c5b41ae59bd6585750f536615a6bc20b"'] = '"Non ci sono rimborsi"'; +$_MODULE['"<{mollie}prestashop>order_info_b718adec73e04ce3ec720dd11a06a308"'] = '"ID"'; +$_MODULE['"<{mollie}prestashop>order_info_44749712dbec183e983dcd78a7736c41"'] = '"Data"'; +$_MODULE['"<{mollie}prestashop>order_info_b2f40690858b404ed10e62bdf422c704"'] = '"Importo"'; +$_MODULE['"<{mollie}prestashop>order_info_53beb26d8bca00f56fbd295fdee83459"'] = '"Rimborsi"'; +$_MODULE['"<{mollie}prestashop>order_info_daef64964ee3b9b904f5d467586e217f"'] = '"Pagamenti"'; +$_MODULE['"<{mollie}prestashop>order_info_e25be354288565757726f3295e4f3ef9"'] = '"Importo attuale"'; +$_MODULE['"<{mollie}prestashop>order_info_068f80c7519d0528fb08e82137a72131"'] = '"Prodotti"'; +$_MODULE['"<{mollie}prestashop>order_info_ec53a8c4f07baed5d8825072c89799be"'] = '"Stato"'; +$_MODULE['"<{mollie}prestashop>order_info_747cf5c8587184b9e489ff897d97c20d"'] = '"Spedito"'; +$_MODULE['"<{mollie}prestashop>order_info_0e22fe7d45f8e5632a4abf369b24e29c"'] = '"Annullato"'; +$_MODULE['"<{mollie}prestashop>order_info_cc61945cbbf46721a053467c395c666f"'] = '"Rimborsato"'; +$_MODULE['"<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2"'] = '"Prezzo unitario"'; +$_MODULE['"<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459"'] = '"Importo IVA"'; +$_MODULE['"<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d"'] = '"Importo totale"'; +$_MODULE['"<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac"'] = '"Spedire"'; +$_MODULE['"<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd"'] = '"Rivedi spedizione"'; +$_MODULE['"<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67"'] = '"Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità'; +$_MODULE['"<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022"'] = '"Rivedi rimborso"'; +$_MODULE['"<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb"'] = '"Esaminare i prodotti inclusi nel rimborso. Se necessario'; +$_MODULE['"<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08"'] = '"Rivedi annullamento"'; +$_MODULE['"<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e"'] = '"Esaminare i prodotti inclusi nel annullamento. Se necessario'; +$_MODULE['"<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564"'] = '"OK"'; +$_MODULE['"<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164"'] = '"Spedire prodotti"'; +$_MODULE['"<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a"'] = '"Dettagli di tracciamento"'; +$_MODULE['"<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7"'] = '"Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente."'; +$_MODULE['"<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937"'] = '"Salta i dettagli di tracciamento"'; +$_MODULE['"<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d"'] = '"opzionale"'; +$_MODULE['"<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f"'] = '"Ad esempio FedEx"'; +$_MODULE['"<{mollie}prestashop>order_info_593ed3a37aa1a3ece4a4d796fb4e2e03"'] = '"Queste informazioni sono necessarie"'; +$_MODULE['"<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56"'] = '"Codice di tracciamento"'; +$_MODULE['"<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d"'] = '"URL"'; +$_MODULE['"<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb"'] = '"Vettore"'; +$_MODULE['"<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283"'] = '"Spedire tutto"'; +$_MODULE['"<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7"'] = '"Annulla tutto"'; +$_MODULE['"<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204"'] = '"Rimborsa tutto"'; +$_MODULE['"<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292"'] = '"Informazioni sulla transazione"'; +$_MODULE['"<{mollie}prestashop>order_info_61066fef1e8173dc711f55bbedb8839c"'] = '"Informazioni sul buono"'; +$_MODULE['"<{mollie}prestashop>order_info_1eefa98a18a384699fe611fbfd8ab0c9"'] = '"Non ci sono prodotti"'; +$_MODULE['"<{mollie}prestashop>order_info_a25c753ee3e4be15ec0daa5a40deb7b8"'] = '"Si è verificato un errore"'; +$_MODULE['"<{mollie}prestashop>order_info_2df3102f3fe061003dee820a72e1b1ed"'] = '"Non è stato possibile spedire"'; +$_MODULE['"<{mollie}prestashop>order_info_3efc29552025b4e68de04f415b0b8806"'] = '"Non è stato possibile rimborsare"'; +$_MODULE['"<{mollie}prestashop>order_info_468a92810b526750be9664461db6bf91"'] = '"Non è stato possibile annullare"'; +$_MODULE['"<{mollie}prestashop>order_info_2427b479f15af44582dc151ef95a90d0"'] = '"I rimborsi non sono attualmente disponibili"'; +$_MODULE['"<{mollie}prestashop>order_info_20c72bbfdf74d618a4b8a11100e864a0"'] = '"Il rimborso è stato effettuato con successo!"'; +$_MODULE['"<{mollie}prestashop>order_info_c7eb2a728623db5eedf0e12d21ffa604"'] = '"La spedizione è stata effettuata con successo!"'; +$_MODULE['"<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59"'] = '"L\'ordine è stato annullato con successo!"'; +$_MODULE['"<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8"'] = '"Metodo"'; +$_MODULE['"<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234"'] = '"Emittente"'; +$_MODULE['"<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6"'] = '"Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s."'; +$_MODULE['"<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84"'] = '"Selezionare uno stato d\'ordine per \"Stato per in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\"""."'; +$_MODULE['"<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea"'] = '"Utilizzare la carta salvata"'; +$_MODULE['"<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b"'] = '"Salvare la carta"'; +$_MODULE['"<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c"'] = '"Pagamenti sicuri forniti da"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507"'] = '"Inserire i dati della carta"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06"'] = '"Nome sulla carta"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79"'] = '"Numero di carta"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182"'] = '"Data di scadenza"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197"'] = '"CVC/CVV"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b"'] = '"Salvare la carta"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea"'] = '"Utilizzare la carta salvata"'; +$_MODULE['"<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c"'] = '"Pagamenti sicuri forniti da"'; +$_MODULE['"<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724"'] = '"Commissione di pagamento:"'; +$_MODULE['"<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9"'] = '"Scansione QR"'; +$_MODULE['"<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf"'] = '"Aprire l\'app Bancontact per scansionare il codice QR"'; +$_MODULE['"<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c"'] = '"O"'; +$_MODULE['"<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd"'] = '"Continuare senza codice QR"'; +$_MODULE['"<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; +$_MODULE['"<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; +$_MODULE['"<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9"'] = '"Torna al carrello"'; +$_MODULE['"<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da"'] = '"Pagamento"'; +$_MODULE['"<{mollie}prestashop>error_1e97d97a923eaddd810e056c828e99ea"'] = '"Errore di pagamento"'; +$_MODULE['"<{mollie}prestashop>error_a25c753ee3e4be15ec0daa5a40deb7b8"'] = '"Si è verificato un errore"'; +$_MODULE['"<{mollie}prestashop>error_47e1924c444fafe9fdfce444790f0ba9"'] = '"Torna al carrello"'; +$_MODULE['"<{mollie}prestashop>order_fail_28726b6ad52c9eae94be432666f93449"'] = '"L\'ordine è stato annullato"'; +$_MODULE['"<{mollie}prestashop>mollie_return_ebdf0f490b617d7efa3025d3625cec85"'] = '"Bentornato"'; +$_MODULE['"<{mollie}prestashop>mollie_return_300225ee958b6350abc51805dab83c24"'] = '"Continua gli acquisti"'; +$_MODULE['"<{mollie}prestashop>mollie_wait_bc0dd919f9a70dbb62f3f7afd68d6d68"'] = '"In attesa dello stato di pagamento"'; +$_MODULE['"<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b"'] = '"Mollie iDEAL QR"'; +$_MODULE['"<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85"'] = '"Bentornato"'; +$_MODULE['"<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572"'] = '"Il pagamento è stato annullato"'; +$_MODULE['"<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b"'] = '"Il pagamento è completo. Grazie per il suo ordine!"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0"'] = '"Prodotto:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c"'] = '"Quantità:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee"'] = '"Prezzo unitario:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa"'] = '"Totale:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c"'] = '"Stato dell\'abbonamento."'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8"'] = '"Data di inizio dell\'abbonamento:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd"'] = '"Prossima data di pagamento:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350"'] = '"Data di annullamento:"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d"'] = '"Dettagli dell\'ordine di abbonamento"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3"'] = '"Aggiornare il metodo di pagamento dell\'abbonamento"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b"'] = ' you can select it here."'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6"'] = '"Aggiornare"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112"'] = '"Annullare l\'abbonamento"'; +$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; +$_MODULE['"<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; +$_MODULE['"<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; diff --git a/translation.csv b/translation.csv new file mode 100644 index 000000000..2b6cef704 --- /dev/null +++ b/translation.csv @@ -0,0 +1,413 @@ +"ID,IT","EN","IT","" +"<{mollie}prestashop>mollie_7c478959c218087ffc4ad5d96e7f66a6","Mollie","Mollie","" +"<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5","Mollie Payments","Pagamenti Mollie","" +"<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac","You're using an outdated PHP version. Upgrade your PHP version to use this module. The Mollie module supports versions PHP 7.2.0 and higher.","Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive.","" +"<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd","Unable to install module","Non è stato possibile installare il modulo","" +"<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2","Thank you. We received your payment.","Grazie. Abbiamo ricevuto il pagamento.","" +"<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5","AJAX","AJAX","" +"<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" +"<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7","Subscription FAQ","FAQ Abbonamenti","" +"<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237","Payment link","Link di pagamento","" +"<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968","The module upload requires an extra refresh. Please upload the Mollie module ZIP file once again. If you still get this error message after attempting another upload, please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com","Il caricamento del modulo richiede un ulteriore aggiornamento. La preghiamo di caricare nuovamente il file ZIP del modulo Mollie. Se continua a ricevere questo messaggio di errore dopo aver tentato un altro caricamento, può contattare il supporto Mollie con questo screenshot e le guideranno attraverso i prossimi passaggi: info@mollie.com","" +"<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27","Payment error:","Errore di pagamento:","" +"<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57","Customer must be logged in to buy subscription item.","Il cliente deve aver effettuato il login per acquistare l'elemento in abbonamento.","" +"<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c","You can't remove address associated with subscription","Non è possibile rimuovere l'indirizzo associato all'abbonamento","" +"<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252","Subscription creation","Creazione di abbonamento","" +"<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304","To create a subscription option for a product variation, assign it a Mollie subscription attribute.","Per creare un'opzione di abbonamento per una variazione di prodotto, assegnale un attributo di abbonamento Mollie.","" +"<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83","IMPORTANT points","Punti IMPORTANTI","" +"<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf","When you add Mollie subscription attributes, make sure you always include 'none' as a fallback.","Quando aggiunge gli attributi di abbonamento di Mollie, si assicuri di includere sempre 'nessuna' come opzione di riserva.","" +"<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621","IMPORTANT subscription carrier points","Punti IMPORTANTI sul vettore per l'abbonamento ","" +"<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f","Make sure to select default carrier for recurring orders in advanced settings.","Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate.","" +"<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736","Carrier should cover all supported shop regions.","Il vettore dovrebbe coprire tutte le regioni supportate dal negozio.","" +"<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f","Carrier cannot be changed after first subscription order is placed.","Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento.","" +"<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5","Selected carrier pricing/weight settings or carrier selection in Mollie should not change. If they do, subscription orders must be cancelled and carrier re-selected in module settings.","Le impostazioni di prezzo/peso del vettore selezionato o la selezione del vettore in Mollie non dovrebbero cambiare. Se ciò dovesse accadere, gli ordini in abbonamento devono essere annullati e il vettore deve essere nuovamente selezionato nelle impostazioni del modulo.","" +"<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb","Cart rules","Regole del carrello","" +"<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc","Do not use cart rules with subscription products as this will cause errors due to incorrect pricing.","Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati.","" +"<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f","Gift wrapping","Confezioni regalo","" +"<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc","Gift wrapping feature is not supported for subscription orders.","La funzione di confezione regalo non è supportata per gli ordini in abbonamento.","" +"<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1","Recurring order creation","Creazione di ordini ricorrenti","" +"<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6","Mollie for Prestashop automatically creates a new order when the previous order is paid for.","Mollie for Prestashop crea automaticamente un nuovo ordine quando l'ordine precedente viene pagato.","" +"<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4","Recurring orders always use the product price that was specified when the related subscription was created.","Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento.","" +"<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1","Recurring order will override the ?Method? payment setting and will be using Mollie?s Payment API.","L'ordine ricorrente sovrascriverà l'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie.","" +"<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4","Select the shop that you want to configure","Selezionare il negozio che desidera configurare","" +"<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88","Failed to save options. Try again or contact support.","Impossibile salvare le opzioni. Riprovare o contattare l'assistenza.","" +"<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf","Options saved successfully.","Opzioni salvate con successo.","" +"<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06","Carrier not found","Vettore non trovato","" +"<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95","Successfully canceled","Annullato con successo","" +"<{mollie}prestashop>subscriptioncontroller_0e1248f1d840e05ee74190cb30e23c51","Failed to cancel subscription","Non è stato possibile annullare l'abbonamento","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_b718adec73e04ce3ec720dd11a06a308","ID","ID","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_9bf79c7f10eadd0b612b8c354ad19bdc","Subscription ID","ID abbonamento","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_d37c2bf1bd3143847fca087b354f920e","Customer ID","ID cliente","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_f11b368cddfe37c47af9b9d91c6ba4f0","Full name","Nome e cognome","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_b5a7adde1af5c87d7fd797b6245c2a39","Description","Descrizione","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_ec53a8c4f07baed5d8825072c89799be","Status","Stato","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399","Total price","Prezzo totale","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c","Currency","Valuta","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa","Actions","Azioni","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" +"<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76","Cancel selected subscription?","Annullare l'abbonamento selezionato?","" +"<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962","Choose your carrier","Selezionare il suo vettore","" +"<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205","Failed to add attributes","Non è stato possibile aggiungere gli attributi","" +"<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf","Failed to delete attributes","Non è stato possibile cancellare degli attributi","" +"<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d","Resource conflict","Conflitto di risorse","" +"<{mollie}prestashop>abstractmolliecontroller_8f8913c1f755436db84ae169e37c61f9","Internal error","Errore interno","" +"<{mollie}prestashop>formbuilder_c9cc8cce247e49bae79f15173ce97354","Save","Salva","" +"<{mollie}prestashop>formbuilder_0ba29c6a1afacf586b03a26162c72274","Environment","Ambiente","" +"<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b","Test","Test","" +"<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0","Live","Live","" +"<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd","API Key Test","Test della chiave API","" +"<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e","Go to your [1]Mollie account[/1] to get your API keys. They start with test and live.","Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live.","" +"<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a","Live API key","Chiave API live","" +"<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c","Test API key","Chiave API di test","" +"<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19","Do you already have a Mollie account?","Ha già un account Mollie?","" +"<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32","Enabled","Abilitato","" +"<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241","Disabled","Disabilitato","" +"<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6","You can find your API key in your [1]Mollie Profile[/1]","Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]","" +"<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded","API Key Live","Chiave API Live","" +"<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9","Use Mollie Components for credit cards","Utilizza Mollie Components per le carte di credito","" +"<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57","Read more about [1]Mollie Components[/1] and how it improves your conversion.","Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione.","" +"<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b","Read more about Mollie Components and how it improves your conversion","Leggere di più su Mollie Components e come migliorano la conversione","" +"<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5","Use one-click payments for credit cards","Utilizzare pagamenti con un solo clic per le carte di credito","" +"<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0","Read more about [1]Single Click Payments[/1] and how it improves your conversion.","Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione.","" +"<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae","Payment methods","Metodi di pagamento","" +"<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49","[1]Read more[/1] about the differences between Payments and Orders API.","[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API.","" +"<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269","Only available with your Live API key and Payments API. [1]Learn more[/1] about QR Codes.","Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR.","" +"<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f","Use selected locale in webshop","Usa il locale selezionato nel webshop","" +"<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6","Activate to use your shop's [1]locale[/1]. Otherwise, your shop uses the browser's locale. ","Attivare per utilizzare il [1]locale del negozio[/1]. Altrimenti, il negozio utilizza il locale del browser.","" +"<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f","Use webshop locale","Utilizza il locale del webshop","" +"<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419","Use browser locale","Utilizza il locale del browser","" +"<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135","Send order confirmation email","Invia l'e-mail di conferma dell'ordine","" +"<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb","When the order is paid","Quando l'ordine viene pagato","" +"<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c","Never","Mai","" +"<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844","Select when to create the Order invoice","Selezionare quando creare la fattura dell'Ordine","" +"<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67","Default","Predefinito","" +"<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3","Authorised","Autorizzato","" +"<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d","Shipped","Spedito","" +"<{mollie}prestashop>formbuilder_7c4e7ada50c8572336f872fced4d1852","Status for %s payments","Stato per i pagamenti %s","" +"<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2","`%s` payments get `%s` status","I pagamenti di `%s` ottengono lo stato di `%s`.","" +"<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039","Send email when %s","Invia un'e-mail a %s","" +"<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c","Send email when transaction status becomes %s?, self::FILE_NAME","Invia un'e-mail quando lo stato della transazione diventa %s?, self::FILE_NAME","" +"<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605","Skip this status","Saltare questo stato","" +"<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2","Order statuses","Stati dell'ordine","" +"<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983","Visual settings","Impostazioni visive","" +"<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157","Images","Immagini","" +"<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219","Show big, normal, or no payment method logos on checkout.","Mostra loghi dei metodi di pagamento grandi, normali o nessun logo al momento del checkout.","" +"<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0","Hide","Nascondere","" +"<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0","Normal","Normale","" +"<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3","Big","Grande","" +"<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5","CSS file","File CSS","" +"<{mollie}prestashop>formbuilder_13efb943fd692917410355eb926d24a2","Leave empty for the default stylesheet. Include the file path when applying custom CSS. You can use [1]{BASE}[/1], [1]{THEME}[/1], [1]{CSS}[/1], [1]{MOBILE}[/1], [1]{MOBILE_CSS}[/1], and [1]{OVERRIDE}[/1] for easy folder mapping.","Lasciare vuoto per il foglio di stile predefinito. Includere il percorso del file quando si applica un CSS personalizzato. È possibile utilizzare [1]{BASE}[/1], [1]{THEME}[/1], [1]{CSS}[/1], [1]{MOBILE}[/1], [1]{MOBILE_CSS}[/1] e [1]{OVERRIDE}[/1] per facilitare la mappatura delle cartelle.","" +"<{mollie}prestashop>formbuilder_1191f888f0cc23f95aa77aacb094503b","Shipment information","Informazioni sulla spedizione","" +"<{mollie}prestashop>formbuilder_2526a2ff1547e6fe751081693d8631af","Automatically ship on marked statuses","Spedisci automaticamente sugli stati contrassegnati","" +"<{mollie}prestashop>formbuilder_006a37d93d3c3fb1b097dcf477f84a99","Enable to automatically send shipment information when an order gets a marked status.","Abilita per inviare automaticamente le informazioni sulla spedizione quando un ordine ottiene uno stato contrassegnato.","" +"<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4","Automatically ship when one of these statuses is reached","Spedisci automaticamente quando uno di questi stati è raggiunto","" +"<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988","If an order reaches one of these statuses, the module automatically sends shipment information","Se un ordine raggiunge uno di questi stati, il modulo invia automaticamente le informazioni sulla spedizione.","" +"<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d","Show","Mostra","" +"<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8","Disable this status","Disattivare questo stato","" +"<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797","Debug level","Livello di debug","" +"<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91","Display errors","Mostra errori","" +"<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9","Enable to display full error messages in the webshop. Only use this for debugging.","Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging.","" +"<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d","Log level","Livello di log","" +"<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62","Recommended level: Errors. Set to Everything to monitor incoming webhook requests. [1]View logs.[/1]","Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]","" +"<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5","Nothing","Nessuno","" +"<{mollie}prestashop>formbuilder_5ef0c737746fae2ca90e66c39333f8f6","Errors","Errori","" +"<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c","Everything","Tutto","" +"<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed","General settings","Impostazioni generali","" +"<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998","Advanced settings","Impostazioni avanzate","" +"<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680","All","Tutti","" +"<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65","No carrier","Nessun vettore","" +"<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81","New voucher for your order %s","Nuovo buono per il suo ordine %s","" +"<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546","An error occurred while initializing your payment. Please contact our customer support.","Si è verificato un errore durante l'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti.","" +"<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885","It looks like you have entered incorrect phone number format in billing address step. Please change the number and try again.","Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare.","" +"<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f","It looks like you have entered incorrect phone number format in shipping address step. Please change the number and try again.","Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare.","" +"<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5","Chosen payment option is unavailable for your order total amount. Please consider using other payment option and try again.","L'opzione di pagamento scelta non è disponibile per l'importo totale del suo ordine. La preghiamo di considerare un'altra opzione di pagamento e riprovare.","" +"<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef","Shipment information cannot be sent. Order reference (%s) has no shipping information.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) non contiene informazioni di spedizione.","" +"<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870","Shipment information cannot be sent. Order reference (%s) has no payment information.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) non contiene informazioni di pagamento.","" +"<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d","Shipment information cannot be sent. Order reference (%s) is a regular payment.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) è un pagamento regolare.","" +"<{mollie}prestashop>exceptionservice_90d4e1683d6b1745120d0a254d58e4ea","Unknown exception in Mollie","Eccezione sconosciuta in Mollie","" +"<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b","The API key needs to start with test or live.","La chiave API deve iniziare con test o live.","" +"<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45","Wrong API Key!","Chiave API sbagliata!","" +"<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab","Something went wrong. Couldn't save your payment methods","Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento","" +"<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04","Grant permissions for the folder or visit [1]ApplePay[/1] to see how it can be added manually","Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente.","" +"<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408","There are issues with your authorizable payment statuses, please try resetting Mollie module.","Ci sono problemi con i suoi stati di pagamento autorizzabili, la preghiamo di provare a reimpostare il modulo Mollie.","" +"<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f","The configuration has been saved!","La configurazione è stata salvata!","" +"<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df","The order could not be refunded!","L'ordine non poteva essere rimborsato!","" +"<{mollie}prestashop>refundservice_ccb168b5a6a86eb100dc2dee754a316b","Reason:","Motivo:","" +"<{mollie}prestashop>refundservice_e12682d2e0650f2783b22d956d2b947a","The order has been refunded!","L'ordine è stato rimborsato!","" +"<{mollie}prestashop>refundservice_88928f236ceccc4c2e0f2eb643d85341","Mollie will transfer the amount back to the customer on the next business day.","Mollie trasferirà l'importo al cliente il giorno lavorativo successivo.","" +"<{mollie}prestashop>refundservice_65718b7293759bcf2ca7257aba3d3179","The product(s) could not be refunded!","Non è stato possibile rimborsare i prodotti!","" +"<{mollie}prestashop>languageservice_e0010a0a1a3259ab5c06a19bad532851","Paid","Pagato","" +"<{mollie}prestashop>languageservice_07ca5050e697392c9ed47e6453f1453f","Completed","Completato","" +"<{mollie}prestashop>languageservice_a206428462686af481cb072b8db11784","Authorized","Autorizzato","" +"<{mollie}prestashop>languageservice_0e22fe7d45f8e5632a4abf369b24e29c","Canceled","Annullato","" +"<{mollie}prestashop>languageservice_24fe48030f7d3097d5882535b04c3fa8","Expired","Scaduto","" +"<{mollie}prestashop>languageservice_cc61945cbbf46721a053467c395c666f","Refunded","Rimborsato","" +"<{mollie}prestashop>languageservice_c3bf447eabe632720a3aa1a7ce401274","Open","Aperto","" +"<{mollie}prestashop>languageservice_c7bece6685d4556fcb8dfdcd72d720f5","Awaiting","In attesa","" +"<{mollie}prestashop>languageservice_9f004157e4c148dac71da3ae5906351f","Partially refunded","Parzialmente rimborsato","" +"<{mollie}prestashop>languageservice_a7b2273fe3a1293885769855e2f3e6ba","Chargeback","Chargeback","" +"<{mollie}prestashop>languageservice_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" +"<{mollie}prestashop>languageservice_ea9cf7e47ff33b2be14e6dd07cbcefc6","Shipping","Spedizione","" +"<{mollie}prestashop>languageservice_484f5a79672cebe198ebdde45a1d672f","Gift wrapping","Confezioni regalo","" +"<{mollie}prestashop>languageservice_e2b7dec8fa4b498156dfee6e4c84b156","This payment method is not available.","Questo metodo di pagamento non è disponibile.","" +"<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c","The product(s) could not be canceled!","Non è stato possibile annullare i prodotti!","" +"<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd","The product(s) could not be shipped!","Non è stato possibile spedire i prodotti!","" +"<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1","Failed to created second chance email!","Non è stato possibile creare l'email di seconda possibilità!","" +"<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2","Failed to create second chance email - API error","Non è stato possibile creare un'e-mail di seconda possibilità - errore API","" +"<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d","Failed to send second chance email! Order is already paid!","Non è stato possibile inviare l'e-mail di seconda possibilità! L'ordine è già stato pagato!","" +"<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7","Second chance email was successfully send!","L'e-mail di seconda possibilità è stata inviata con successo!","" +"<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e","Failed to send second chance email! Order is already paid or expired!","Non è stato possibile inviare l'e-mail di seconda possibilità! L'ordine è già stato pagato o è scaduto!","" +"<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18","You will resend email with payment link to the customer","Invierà nuovamente un'email con il link di pagamento al cliente","" +"<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305","Warning: Could not retrieve update xml file from github.","Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github.","" +"<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8","Warning: Update xml file from github follows an unexpected format.","Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato.","" +"<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" +"<{mollie}prestashop>bancontactpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" +"<{mollie}prestashop>creditcardpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" +"<{mollie}prestashop>creditcardsingleclickpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" +"<{mollie}prestashop>basepaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" +"<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2","Failed to create mollie transaction.","Non è stato possibile creare una transazione Mollie.","" +"<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e","Couldn't find order by cart.","Non è stato possibile trovare l'ordine corrispondente al carrello.","" +"<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a","Unable to install Mollie statuses","Non è stato possibile installare gli stati di Mollie","" +"<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f","Unable to install config","Non è stato possibile installare la configurazione","" +"<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8","Unable to install default carrier statuses","Non è stato possibile installare gli stati predefiniti del vettore","" +"<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b","Unable to install voucher attributes","Non è stato possibile installare gli attributi del voucher","" +"<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c","Could not copy email templates:","Non è stato possibile copiare i modelli di e-mail:","" +"<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6","Failed to create dir for apple pay direct certificate","Non è stato possibile creare una directory per il certificato apple pay direct","" +"<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6","Can't create folder because of missing write permissions: ","Non è stato possibile creare una cartella perché mancano i permessi di scrittura:","" +"<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5","Failed to copy apple pay direct certificate","Non è stato possibile copiare il certificato apple pay direct","" +"<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415","Upload a .jpg or .png file.","Caricare un file .jpg o .png.","" +"<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e","Something went wrong when uploading your logo.","Si è verificato un errore durante il caricamento del logo.","" +"<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160","No fee was submitted.","Nessuna commissione è stata inviata.","" +"<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12","Invalid fee","Commissione non valida","" +"<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a","Missing tax rules group ID","ID gruppo regole fiscali mancante","" +"<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e","Please upgrade Mollie module","Aggiornare il modulo Mollie","" +"<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4","Select the shop that you want to configure","Selezionare il negozio che si desidera configurare","" +"<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84","Select an order status for \"Status for Awaiting payments\""" in the \"""Advanced settings\""" tab""","Selezionare lo stato dell'ordine per \"Stato in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\""".","" +"<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec","Enter a description","Inserire una descrizione","" +"<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd","You have entered incorrect min amount","L'importo minimo inserito non è corretto","" +"<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0","You have entered incorrect max amount","L'importo massimo inserito non è corretto","" +"<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5","Upload an image %s%x%s1%","Caricare un'immagine %s%x%s1%","" +"<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc","Invalid file: %s%","File non valido: %s%","" +"<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a","The database tables are missing. Reset the module.","Le tabelle del database sono mancanti. Reimpostare il modulo.","" +"<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17","Total","Totale","" +"<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d","Total (tax incl.)","Totale (tasse incluse)","" +"<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea","Total (tax excl.)","Totale (tasse escluse)","" +"<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836","Please note: Only one subscription product can be added to the cart at a time.","Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta.","" +"<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645","Subscription service is disabled. Please change the attribute to Subscription: none.","Il servizio di abbonamento è disattivato. Modificare l'attributo a Abbonamento: nessuno.","" +"<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179","Unknown error. Try again or change the attribute to Subscription: none.","Errore sconosciuto. Riprovare o modificare l'attributo a Abbonamento: nessuno.","" +"<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac","Error: token invalid.","Errore: token non valido.","" +"<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe","Failed to get new payment method. ","Non è stato possibile ottenere il nuovo metodo di pagamento.","" +"<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8","Failed to get recurring order.","Non è stato possibile ottenere un ordine ricorrente.","" +"<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd","Successfully canceled subscription.","L'abbonamento è stato annullato con successo.","" +"<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f","An error occurred when creating your payment. Contact customer support.","Si è verificato un errore durante la creazione del pagamento. Contattare l'assistenza clienti.","" +"<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067","Failed to save order information.","Non è stato possibile salvare le informazioni dell'ordine.","" +"<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e","There is no order with this ID.","Non esiste un ordine con questo ID.","" +"<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d","The payment is still being processed. You'll be notified when the bank or merchant confirms the payment./merchant.","Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante.","" +"<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227","You're not authorised to see this page.","Non è autorizzato a visualizzare questa pagina.","" +"<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf","Your payment was not successful. Try again.","Il pagamento non è andato a buon fine. La preghiamo di riprovare.","" +"<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0","The payment failed because the order and payment amounts are different. Try again.","Il pagamento non è riuscito perché gli importi dell'ordine e del pagamento sono diversi. La preghiamo di riprovare.","" +"<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7","We have not received a definite payment status. You will be notified as soon as we receive a confirmation of the bank/merchant.","Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante.","" +"<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7","Test API key: Failed! Key must start with test_.","Test chiave API: Fallito! La chiave deve iniziare con test_.","" +"<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847","Test API key: Successful!","Test chiave API: Riuscito!","" +"<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180","Enabled Methods:","Metodi abilitati:","" +"<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7","Test API key: Failed! Key does not exist.","Test chiave API: Fallito! La chiave non esiste.","" +"<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e","Live API key: Failed! Key must start with live_.","Chiave API live: Fallita! La chiave deve iniziare con live_.","" +"<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61","Live API key: Successful!","Chiave API live: Riuscito!","" +"<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439","Live API key: Failed! Key does not exist.","Chiave API live: Fallita! La chiave non esiste.","" +"<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844","Select when to create the Order invoice","Selezionare quando creare la fattura dell'Ordine","" +"<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34","Default: The invoice is created based on Order settings > Statuses. There is no custom status created.","Predefinito: La fattura viene creata in base alle Impostazioni dell'ordine > Stati. Non viene creato uno stato personalizzato.","" +"<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb","Authorised: Create a full invoice when the order is authorized. Custom status is created.","Autorizzato: Crea una fattura completa quando l'ordine è autorizzato. Viene creato uno stato personalizzato.","" +"<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d","On Shipment: Create a full invoice when the order is shipped. Custom status is created.","Alla spedizione: Crea una fattura completa quando l'ordine viene spedito. Viene creato uno stato personalizzato.","" +"<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" +"<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9","Send a payment email to the customer. (Will be sent after creating the order)","Inviare un'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell'ordine)","" +"<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99","You are currently using version %s of this module. The latest version is %s.","Sta attualmente utilizzando la versione %s di questo modulo. L'ultima versione è %s.","" +"<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8","[1]Update[/1] the module to enjoy the latest features.","[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità.","" +"<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad","Click here","Clicca qui","" +"<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884","to create an account","per creare un account","" +"<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f","Developed by Invertus","Sviluppato da Invertus","" +"<{mollie}prestashop>form_1c04b154909c88cfc62b3362c88445af"," - the most technically advanced agency in the PrestaShop ecosystem.","- l'agenzia più avanzata tecnicamente dell'ecosistema PrestaShop.","" +"<{mollie}prestashop>form_0f13aa29b5bc9e8a1b6597dc5987ea46","Go to Mollie help centre","Vai al centro di assistenza Mollie","" +"<{mollie}prestashop>form_1c2e79c1715dbe3f3208a7991abc50f0","Contact Mollie","Contatta Mollie","" +"<{mollie}prestashop>form_2d059d2c499450d4e083d28f5f47f63d","Contact Invertus","Contatta Invertus","" +"<{mollie}prestashop>form_00d23a76e43b46dae9ec7aa9dcbebb32","Enabled","Abilitato","" +"<{mollie}prestashop>form_bafd7322c6e97d25b6299b5d6fe8920b","No","No","" +"<{mollie}prestashop>form_93cba07454f06a4a960172bbd6e2a435","Yes","Sì","" +"<{mollie}prestashop>form_b61254f89b6f2ef061fb628f04a93fe8","Apple Pay Direct product page ","Pagina del prodotto Apple Pay Direct","" +"<{mollie}prestashop>form_9fa70bd7cc082c6eafd9f6c04782de2c","Apple Pay Direct cart page ","Pagina del carrello Apple Pay Direct","" +"<{mollie}prestashop>form_020f1a50a78b13a12f304d64dda57020","Apple Pay Direct button style","Stile del pulsante Apple Pay Direct","" +"<{mollie}prestashop>form_9c12f952ca3695bb3043ddcc0ceaaf80","QR code","Codice QR","" +"<{mollie}prestashop>form_b78a3223503896721cca1303f776159b","Title","Titolo","" +"<{mollie}prestashop>form_4c3880bb027f159e801041b1021e88e8","Method","Metodo","" +"<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4","Payments API","Payments API","" +"<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51","Orders API","Orders API","" +"<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1","Transaction description","Descrizione della transazione","" +"<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29","Use any of the following variables to create a transaction description for payments that use this method:","Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:","" +"<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d","Accept payments from:","Accettare pagamenti da:","" +"<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee","All countries","Tutti i paesi","" +"<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce","Selected countries","Paesi selezionati","" +"<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc","Accept payments from specific countries:","Accettare pagamenti da paesi specifici:","" +"<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a","Exclude payments from specific countries:","Escludere i pagamenti da specifici paesi:","" +"<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" +"<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45","No fee","Nessuna commissione","" +"<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543","Fixed fee","Commissione fissa","" +"<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c","Percentage","Percentuale","" +"<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085","Combined payment surcharge limit","Limite combinato per supplemento di pagamento","" +"<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f","Add \"(payment_fee}\""" in email translations to display it in your email template. For more information","Aggiungere \"(payment_fee}}"" nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni","" +"<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409","Translations","Traduzioni","" +"<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4","Include taxes in the total payment fee","Includere le tasse nella commissione totale del pagamento","" +"<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81","Fixed fee (tax incl)","Commissione fissa (tasse incluse)","" +"<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c","Fixed fee (tax excl)","Commissione fissa (tasse escluse)","" +"<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc","Tax rules group for fixed fee","Gruppo regole fiscali per commissione fissa","" +"<{mollie}prestashop>form_e457ab8b899c330b05e1bbe6539a50df","Percentage fee","Quota percentuale","" +"<{mollie}prestashop>form_a1eeaac9cc0281aa432a7503fd79c340","Maximum fee","Commissione massima","" +"<{mollie}prestashop>form_80a2645c681d607705f5baab7cf7d2cb","Min amount","Importo minimo","" +"<{mollie}prestashop>form_a14ecf18ea57e0ae5ebcd930102d7cbd","Default min amount in mollie is:","L'importo minimo predefinito in Mollie è:","" +"<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7","Max amount","Importo massimo","" +"<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6","Default max amount has no limitation","L'importo massimo predefinito non ha limitazioni","" +"<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9","Default max amount in mollie is:","L'importo massimo predefinito in Mollie è:","" +"<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a","Use custom logo","Utilizzare un logo personalizzato","" +"<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f","Upload custom logo","Caricare un logo personalizzato","" +"<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7","Add file","Aggiungere file","" +"<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571","Use a .png or .jpg file of up to 256x64 pixels","Utilizzare un file .png o .jpg fino a 256x64 pixel.","" +"<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7","Your custom logo","Il suo logo personalizzato","" +"<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873","Category","Categoria","" +"<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754","None","Nessuno","" +"<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789","meal","pasto","" +"<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e","gift","regalo","" +"<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45","eco","eco","" +"<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446","Select a category to use for all products in your webshop.","Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop.","" +"<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae","Configure the shipment information to send to Mollie","Configurare le informazioni sulla spedizione da inviare a Mollie","" +"<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb","You can use the following variables for the carrier URLs","Può utilizzare le seguenti variabili per gli URL del vettore","" +"<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26","Shipping number","Numero di spedizione","" +"<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d","Billing country code","Codice paese di fatturazione","" +"<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f","Billing postcode","Codice postale di fatturazione","" +"<{mollie}prestashop>form_0d12e3c554976ad1f76c5db2b6c127ad","Shipping country code","Codice del paese di spedizione","" +"<{mollie}prestashop>form_c824a8b18f09dc7e58bacf446be6735c","Shipping postcode","Codice postale di spedizione","" +"<{mollie}prestashop>form_0a867177f4a701a9f33de5ab21c42593","2-letter language code","Codice lingua a 2 lettere","" +"<{mollie}prestashop>form_49ee3087348e8d44e1feda1917443987","Name","Nome","" +"<{mollie}prestashop>form_cefb9190a0a2b3301f3e4d44ad14e6c0","URL source","Fonte URL","" +"<{mollie}prestashop>form_812a48ba719daeda82e4da8e812d426c","Custom URL","URL personalizzato","" +"<{mollie}prestashop>form_962b59a5f12eabd9c05f11b5f0aada85","Do not automatically ship","Non spedire automaticamente","" +"<{mollie}prestashop>form_703490ffd308d337cd5aac50567e9670","No tracking information","Nessuna informazione sulla tracciabilità","" +"<{mollie}prestashop>form_de28ef21a06f3978c05f3d808b15eaab","Carrier URL","URL del vettore","" +"<{mollie}prestashop>form_e55f75a29310d7b60f7ac1d390c8ae42","Module","Modulo","" +"<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a","This option is not required for the currently selected API","Questa opzione non è necessaria per l'API attualmente selezionato.","" +"<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828","This option is not required for the selected API","Questa opzione non è necessaria per l'API selezionata","" +"<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d","Show","Mostra","" +"<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0","Hide","Nascondere","" +"<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5","No Mollie payment methods enabled yet","Nessun metodo di pagamento Mollie ancora abilitato","" +"<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950","Enable payment methods in your Mollie account.","Attivare i metodi di pagamento nel proprio account Mollie.","" +"<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26","Configure","Configurare","" +"<{mollie}prestashop>form_20d053df791cc72594d141b24276597f","Scroll down and save the changes you made to your environment or API keys before configuring your payment methods.","Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento.","" +"<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a","Are you sure?","È sicuro?","" +"<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f","Are you sure you want to refund this order?","È sicuro di voler rimborsare questo ordine?","" +"<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714","Refund","Rimborso","" +"<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" +"<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8","Refund order","Rimborsare ordine","" +"<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1","Refundable","Rimborsabile","" +"<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090","Partial refund","Rimborso parziale","" +"<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a","Invalid amount","Importo non valido","" +"<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872","Enter a valid amount","Inserire un importo valido","" +"<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782","Refund failed","Rimborso non riuscito","" +"<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f","Payment info","Informazioni sul pagamento","" +"<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008","Transaction ID","ID transazione","" +"<{mollie}prestashop>order_info_782678f4ba02feb3e9ecd51e902cd16b","Refund history","Cronologia dei rimborsi","" +"<{mollie}prestashop>order_info_c5b41ae59bd6585750f536615a6bc20b","There are no refunds","Non ci sono rimborsi","" +"<{mollie}prestashop>order_info_b718adec73e04ce3ec720dd11a06a308","ID","ID","" +"<{mollie}prestashop>order_info_44749712dbec183e983dcd78a7736c41","Date","Data","" +"<{mollie}prestashop>order_info_b2f40690858b404ed10e62bdf422c704","Amount","Importo","" +"<{mollie}prestashop>order_info_53beb26d8bca00f56fbd295fdee83459","Refunds","Rimborsi","" +"<{mollie}prestashop>order_info_daef64964ee3b9b904f5d467586e217f","Payments","Pagamenti","" +"<{mollie}prestashop>order_info_e25be354288565757726f3295e4f3ef9","Current amount","Importo attuale","" +"<{mollie}prestashop>order_info_068f80c7519d0528fb08e82137a72131","Products","Prodotti","" +"<{mollie}prestashop>order_info_ec53a8c4f07baed5d8825072c89799be","Status","Stato","" +"<{mollie}prestashop>order_info_747cf5c8587184b9e489ff897d97c20d","Shipped","Spedito","" +"<{mollie}prestashop>order_info_0e22fe7d45f8e5632a4abf369b24e29c","Canceled","Annullato","" +"<{mollie}prestashop>order_info_cc61945cbbf46721a053467c395c666f","Refunded","Rimborsato","" +"<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2","Unit price","Prezzo unitario","" +"<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459","VAT amount","Importo IVA","" +"<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d","Total amount","Importo totale","" +"<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac","Ship","Spedire","" +"<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd","Review shipment","Rivedi spedizione","" +"<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67","Review the products included in the shipment. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità, se necessario.","" +"<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022","Review refund","Rivedi rimborso","" +"<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb","Review the products included in the refund. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nel rimborso. Se necessario, è possibile rimuovere gli articoli o modificare la quantità.","" +"<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08","Review cancellation","Rivedi annullamento","" +"<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e","Review the products included in the cancellation. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nel annullamento. Se necessario, è possibile rimuovere gli articoli o modificare la quantità.","" +"<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564","OK","OK","" +"<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164","Ship products","Spedire prodotti","" +"<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a","Tracking details","Dettagli di tracciamento","" +"<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7","Add tracking information to record that you shipped products to your customer.","Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente.","" +"<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937","Skip tracking details","Salta i dettagli di tracciamento","" +"<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d","optional","opzionale","" +"<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f","E.g. FedEx","Ad esempio FedEx","" +"<{mollie}prestashop>order_info_593ed3a37aa1a3ece4a4d796fb4e2e03","This information is required","Queste informazioni sono necessarie","" +"<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56","Tracking code","Codice di tracciamento","" +"<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d","URL","URL","" +"<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb","Carrier","Vettore","" +"<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283","Ship all","Spedire tutto","" +"<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7","Cancel all","Annulla tutto","" +"<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204","Refund all","Rimborsa tutto","" +"<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292","Transaction info","Informazioni sulla transazione","" +"<{mollie}prestashop>order_info_61066fef1e8173dc711f55bbedb8839c","Voucher info","Informazioni sul buono","" +"<{mollie}prestashop>order_info_1eefa98a18a384699fe611fbfd8ab0c9","There are no products","Non ci sono prodotti","" +"<{mollie}prestashop>order_info_a25c753ee3e4be15ec0daa5a40deb7b8","An error occurred","Si è verificato un errore","" +"<{mollie}prestashop>order_info_2df3102f3fe061003dee820a72e1b1ed","Unable to ship","Non è stato possibile spedire","" +"<{mollie}prestashop>order_info_3efc29552025b4e68de04f415b0b8806","Unable to refund","Non è stato possibile rimborsare","" +"<{mollie}prestashop>order_info_468a92810b526750be9664461db6bf91","Unable to cancel","Non è stato possibile annullare","" +"<{mollie}prestashop>order_info_2427b479f15af44582dc151ef95a90d0","Refunds are currently unavailable","I rimborsi non sono attualmente disponibili","" +"<{mollie}prestashop>order_info_20c72bbfdf74d618a4b8a11100e864a0","Refund was made successfully!","Il rimborso è stato effettuato con successo!","" +"<{mollie}prestashop>order_info_c7eb2a728623db5eedf0e12d21ffa604","Shipment was made successfully!","La spedizione è stata effettuata con successo!","" +"<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59","Order was canceled successfully!","L'ordine è stato annullato con successo!","" +"<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8","Method","Metodo","" +"<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234","Issuer","Emittente","" +"<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6","This order was (partially) paid for with a voucher. You can refund a maximum of %1s.","Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s.","" +"<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84","Select an order status for \"Status for Awaiting payments\""" in the \"""Advanced settings\""" tab""","Selezionare uno stato d'ordine per \"Stato per in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\""".","" +"<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea","Use saved card","Utilizzare la carta salvata","" +"<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b","Save card","Salvare la carta","" +"<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c","Secure payments provided by","Pagamenti sicuri forniti da","" +"<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507","Enter your card information","Inserire i dati della carta","" +"<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06","Name on card","Nome sulla carta","" +"<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79","Card number","Numero di carta","" +"<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182","Expiry date","Data di scadenza","" +"<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197","CVC/CVV","CVC/CVV","" +"<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b","Save card","Salvare la carta","" +"<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea","Use saved card","Utilizzare la carta salvata","" +"<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c","Secure payments provided by","Pagamenti sicuri forniti da","" +"<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724","Payment Fee:","Commissione di pagamento:","" +"<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9","Scan QR","Scansione QR","" +"<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf","Open your Bancontact app to scan the QR code","Aprire l'app Bancontact per scansionare il codice QR","" +"<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c","Or","O","" +"<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd","Continue without QR code","Continuare senza codice QR","" +"<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" +"<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" +"<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9","Back to your shopping cart","Torna al carrello","" +"<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da","Payment","Pagamento","" +"<{mollie}prestashop>error_1e97d97a923eaddd810e056c828e99ea","Payment error","Errore di pagamento","" +"<{mollie}prestashop>error_a25c753ee3e4be15ec0daa5a40deb7b8","An error occurred","Si è verificato un errore","" +"<{mollie}prestashop>error_47e1924c444fafe9fdfce444790f0ba9","Back to your shopping cart","Torna al carrello","" +"<{mollie}prestashop>order_fail_28726b6ad52c9eae94be432666f93449","Your order is canceled","L'ordine è stato annullato","" +"<{mollie}prestashop>mollie_return_ebdf0f490b617d7efa3025d3625cec85","Welcome back","Bentornato","" +"<{mollie}prestashop>mollie_return_300225ee958b6350abc51805dab83c24","Continue shopping","Continua gli acquisti","" +"<{mollie}prestashop>mollie_wait_bc0dd919f9a70dbb62f3f7afd68d6d68","Awaiting payment status","In attesa dello stato di pagamento","" +"<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b","Mollie iDEAL QR","Mollie iDEAL QR","" +"<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85","Welcome back","Bentornato","" +"<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572","The payment has been cancelled","Il pagamento è stato annullato","" +"<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b","The payment is complete. Thank you for your order!","Il pagamento è completo. Grazie per il suo ordine!","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0","Product:","Prodotto:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c","Quantity:","Quantità:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee","Unit price:","Prezzo unitario:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa","Total:","Totale:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c","Subscription status:","Stato dell'abbonamento.","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8","Subscription start date:","Data di inizio dell'abbonamento:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd","Next payment date:","Prossima data di pagamento:","" +"<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350","Cancelled date:","Data di annullamento:","" +"<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d","Subscription order details","Dettagli dell'ordine di abbonamento","" +"<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3","Update subscription payment method","Aggiornare il metodo di pagamento dell'abbonamento","" +"<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b","If you would like to update the payment method of a subscription, you can select it here.","Se desidera aggiornare il metodo di pagamento di un abbonamento, può selezionarlo qui.","" +"<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6","Update","Aggiornare","" +"<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112","Cancel subscription","Annullare l'abbonamento","" +"<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" +"<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be"," Subscriptions","Abbonamenti","" +"<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" From ff78ed59aa0bec87b6850ef3fc089dc4968369ad Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 28 Aug 2024 15:21:01 +0300 Subject: [PATCH 25/74] translations updated --- translations/it.php | 417 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 411 insertions(+), 6 deletions(-) diff --git a/translations/it.php b/translations/it.php index 19bc68372..a2aa0b3d1 100644 --- a/translations/it.php +++ b/translations/it.php @@ -11,12 +11,417 @@ */ global $_MODULE; -$_MODULE = array(); -$_MODULE['<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507'] = 'Inserisci le informazioni della tua carta'; -$_MODULE['<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06'] = 'Intestatario della carta'; -$_MODULE['<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79'] = 'Numero della carta'; +$_MODULE = []; + +$_MODULE['<{mollie}prestashop>mollie_7c478959c218087ffc4ad5d96e7f66a6'] = 'Mollie'; +$_MODULE['<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5'] = 'Pagamenti Mollie'; +$_MODULE['<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac'] = 'Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive.'; +$_MODULE['<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd'] = 'Non è stato possibile installare il modulo'; +$_MODULE['<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2'] = 'Grazie. Abbiamo ricevuto il pagamento.'; +$_MODULE['<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5'] = 'AJAX'; +$_MODULE['<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; +$_MODULE['<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7'] = 'FAQ Abbonamenti'; +$_MODULE['<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237'] = 'Link di pagamento'; +$_MODULE['<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968'] = ' please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com'; +$_MODULE['<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27'] = 'Errore di pagamento:'; +$_MODULE['<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57'] = 'Il cliente deve aver effettuato il login per acquistare l\'elemento in abbonamento.'; +$_MODULE['<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c'] = 'Non è possibile rimuovere l\'indirizzo associato all\'abbonamento'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252'] = 'Creazione di abbonamento'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304'] = ' assign it a Mollie subscription attribute.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83'] = 'Punti IMPORTANTI'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf'] = ' make sure you always include \'none\' as a fallback.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621'] = 'Punti IMPORTANTI sul vettore per l\'abbonamento '; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f'] = 'Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736'] = 'Il vettore dovrebbe coprire tutte le regioni supportate dal negozio.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f'] = 'Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5'] = ' subscription orders must be cancelled and carrier re-selected in module settings.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb'] = 'Regole del carrello'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc'] = 'Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f'] = 'Confezioni regalo'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc'] = 'La funzione di confezione regalo non è supportata per gli ordini in abbonamento.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1'] = 'Creazione di ordini ricorrenti'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6'] = 'Mollie for Prestashop crea automaticamente un nuovo ordine quando l\'ordine precedente viene pagato.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4'] = 'Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1'] = 'L\'ordine ricorrente sovrascriverà l\'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie.'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Selezionare il negozio che desidera configurare'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88'] = 'Impossibile salvare le opzioni. Riprovare o contattare l\'assistenza.'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf'] = 'Opzioni salvate con successo.'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06'] = 'Vettore non trovato'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95'] = 'Annullato con successo'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_0e1248f1d840e05ee74190cb30e23c51'] = 'Non è stato possibile annullare l\'abbonamento'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_9bf79c7f10eadd0b612b8c354ad19bdc'] = 'ID abbonamento'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_d37c2bf1bd3143847fca087b354f920e'] = 'ID cliente'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_f11b368cddfe37c47af9b9d91c6ba4f0'] = 'Nome e cognome'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_b5a7adde1af5c87d7fd797b6245c2a39'] = 'Descrizione'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_ec53a8c4f07baed5d8825072c89799be'] = 'Stato'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399'] = 'Prezzo totale'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c'] = 'Valuta'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa'] = 'Azioni'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76'] = 'Annullare l\'abbonamento selezionato?'; +$_MODULE['<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962'] = 'Selezionare il suo vettore'; +$_MODULE['<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205'] = 'Non è stato possibile aggiungere gli attributi'; +$_MODULE['<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf'] = 'Non è stato possibile cancellare degli attributi'; +$_MODULE['<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d'] = 'Conflitto di risorse'; +$_MODULE['<{mollie}prestashop>abstractmolliecontroller_8f8913c1f755436db84ae169e37c61f9'] = 'Errore interno'; +$_MODULE['<{mollie}prestashop>formbuilder_c9cc8cce247e49bae79f15173ce97354'] = 'Salva'; +$_MODULE['<{mollie}prestashop>formbuilder_0ba29c6a1afacf586b03a26162c72274'] = 'Ambiente'; +$_MODULE['<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b'] = 'Test'; +$_MODULE['<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0'] = 'Live'; +$_MODULE['<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd'] = 'Test della chiave API'; +$_MODULE['<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e'] = 'Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live.'; +$_MODULE['<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a'] = 'Chiave API live'; +$_MODULE['<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c'] = 'Chiave API di test'; +$_MODULE['<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19'] = 'Ha già un account Mollie?'; +$_MODULE['<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Abilitato'; +$_MODULE['<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabilitato'; +$_MODULE['<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6'] = 'Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]'; +$_MODULE['<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded'] = 'Chiave API Live'; +$_MODULE['<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9'] = 'Utilizza Mollie Components per le carte di credito'; +$_MODULE['<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57'] = 'Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione.'; +$_MODULE['<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b'] = 'Leggere di più su Mollie Components e come migliorano la conversione'; +$_MODULE['<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5'] = 'Utilizzare pagamenti con un solo clic per le carte di credito'; +$_MODULE['<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0'] = 'Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione.'; +$_MODULE['<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae'] = 'Metodi di pagamento'; +$_MODULE['<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49'] = '[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API.'; +$_MODULE['<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269'] = 'Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR.'; +$_MODULE['<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f'] = 'Usa il locale selezionato nel webshop'; +$_MODULE['<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6'] = ' your shop uses the browser\'s locale. '; +$_MODULE['<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f'] = 'Utilizza il locale del webshop'; +$_MODULE['<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419'] = 'Utilizza il locale del browser'; +$_MODULE['<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135'] = 'Invia l\'e-mail di conferma dell\'ordine'; +$_MODULE['<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb'] = 'Quando l\'ordine viene pagato'; +$_MODULE['<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c'] = 'Mai'; +$_MODULE['<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844'] = 'Selezionare quando creare la fattura dell\'Ordine'; +$_MODULE['<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67'] = 'Predefinito'; +$_MODULE['<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3'] = 'Autorizzato'; +$_MODULE['<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d'] = 'Spedito'; +$_MODULE['<{mollie}prestashop>formbuilder_7c4e7ada50c8572336f872fced4d1852'] = 'Stato per i pagamenti %s'; +$_MODULE['<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2'] = 'I pagamenti di `%s` ottengono lo stato di `%s`.'; +$_MODULE['<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039'] = 'Invia un\'e-mail a %s'; +$_MODULE['<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c'] = ' self::FILE_NAME'; +$_MODULE['<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605'] = 'Saltare questo stato'; +$_MODULE['<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2'] = 'Stati dell\'ordine'; +$_MODULE['<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983'] = 'Impostazioni visive'; +$_MODULE['<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157'] = 'Immagini'; +$_MODULE['<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219'] = ' normal'; +$_MODULE['<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondere'; +$_MODULE['<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0'] = 'Normale'; +$_MODULE['<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3'] = 'Grande'; +$_MODULE['<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5'] = 'File CSS'; +$_MODULE['<{mollie}prestashop>formbuilder_13efb943fd692917410355eb926d24a2'] = ' [1]{THEME}[/1]'; +$_MODULE['<{mollie}prestashop>formbuilder_1191f888f0cc23f95aa77aacb094503b'] = 'Informazioni sulla spedizione'; +$_MODULE['<{mollie}prestashop>formbuilder_2526a2ff1547e6fe751081693d8631af'] = 'Spedisci automaticamente sugli stati contrassegnati'; +$_MODULE['<{mollie}prestashop>formbuilder_006a37d93d3c3fb1b097dcf477f84a99'] = 'Abilita per inviare automaticamente le informazioni sulla spedizione quando un ordine ottiene uno stato contrassegnato.'; +$_MODULE['<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4'] = 'Spedisci automaticamente quando uno di questi stati è raggiunto'; +$_MODULE['<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988'] = ' the module automatically sends shipment information'; +$_MODULE['<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d'] = 'Mostra'; +$_MODULE['<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8'] = 'Disattivare questo stato'; +$_MODULE['<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797'] = 'Livello di debug'; +$_MODULE['<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91'] = 'Mostra errori'; +$_MODULE['<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9'] = 'Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging.'; +$_MODULE['<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d'] = 'Livello di log'; +$_MODULE['<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62'] = 'Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]'; +$_MODULE['<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5'] = 'Nessuno'; +$_MODULE['<{mollie}prestashop>formbuilder_5ef0c737746fae2ca90e66c39333f8f6'] = 'Errori'; +$_MODULE['<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c'] = 'Tutto'; +$_MODULE['<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed'] = 'Impostazioni generali'; +$_MODULE['<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998'] = 'Impostazioni avanzate'; +$_MODULE['<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tutti'; +$_MODULE['<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65'] = 'Nessun vettore'; +$_MODULE['<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81'] = 'Nuovo buono per il suo ordine %s'; +$_MODULE['<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546'] = 'Si è verificato un errore durante l\'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti.'; +$_MODULE['<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885'] = 'Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare.'; +$_MODULE['<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f'] = 'Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare.'; +$_MODULE['<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5'] = 'L\'opzione di pagamento scelta non è disponibile per l\'importo totale del suo ordine. La preghiamo di considerare un\'altra opzione di pagamento e riprovare.'; +$_MODULE['<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di spedizione.'; +$_MODULE['<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di pagamento.'; +$_MODULE['<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) è un pagamento regolare.'; +$_MODULE['<{mollie}prestashop>exceptionservice_90d4e1683d6b1745120d0a254d58e4ea'] = 'Eccezione sconosciuta in Mollie'; +$_MODULE['<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b'] = 'La chiave API deve iniziare con test o live.'; +$_MODULE['<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45'] = 'Chiave API sbagliata!'; +$_MODULE['<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab'] = 'Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento'; +$_MODULE['<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04'] = 'Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente.'; +$_MODULE['<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408'] = ' please try resetting Mollie module.'; +$_MODULE['<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f'] = 'La configurazione è stata salvata!'; +$_MODULE['<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df'] = 'L\'ordine non poteva essere rimborsato!'; +$_MODULE['<{mollie}prestashop>refundservice_ccb168b5a6a86eb100dc2dee754a316b'] = 'Motivo:'; +$_MODULE['<{mollie}prestashop>refundservice_e12682d2e0650f2783b22d956d2b947a'] = 'L\'ordine è stato rimborsato!'; +$_MODULE['<{mollie}prestashop>refundservice_88928f236ceccc4c2e0f2eb643d85341'] = 'Mollie trasferirà l\'importo al cliente il giorno lavorativo successivo.'; +$_MODULE['<{mollie}prestashop>refundservice_65718b7293759bcf2ca7257aba3d3179'] = 'Non è stato possibile rimborsare i prodotti!'; +$_MODULE['<{mollie}prestashop>languageservice_e0010a0a1a3259ab5c06a19bad532851'] = 'Pagato'; +$_MODULE['<{mollie}prestashop>languageservice_07ca5050e697392c9ed47e6453f1453f'] = 'Completato'; +$_MODULE['<{mollie}prestashop>languageservice_a206428462686af481cb072b8db11784'] = 'Autorizzato'; +$_MODULE['<{mollie}prestashop>languageservice_0e22fe7d45f8e5632a4abf369b24e29c'] = 'Annullato'; +$_MODULE['<{mollie}prestashop>languageservice_24fe48030f7d3097d5882535b04c3fa8'] = 'Scaduto'; +$_MODULE['<{mollie}prestashop>languageservice_cc61945cbbf46721a053467c395c666f'] = 'Rimborsato'; +$_MODULE['<{mollie}prestashop>languageservice_c3bf447eabe632720a3aa1a7ce401274'] = 'Aperto'; +$_MODULE['<{mollie}prestashop>languageservice_c7bece6685d4556fcb8dfdcd72d720f5'] = 'In attesa'; +$_MODULE['<{mollie}prestashop>languageservice_9f004157e4c148dac71da3ae5906351f'] = 'Parzialmente rimborsato'; +$_MODULE['<{mollie}prestashop>languageservice_a7b2273fe3a1293885769855e2f3e6ba'] = 'Chargeback'; +$_MODULE['<{mollie}prestashop>languageservice_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; +$_MODULE['<{mollie}prestashop>languageservice_ea9cf7e47ff33b2be14e6dd07cbcefc6'] = 'Spedizione'; +$_MODULE['<{mollie}prestashop>languageservice_484f5a79672cebe198ebdde45a1d672f'] = 'Confezioni regalo'; +$_MODULE['<{mollie}prestashop>languageservice_e2b7dec8fa4b498156dfee6e4c84b156'] = 'Questo metodo di pagamento non è disponibile.'; +$_MODULE['<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c'] = 'Non è stato possibile annullare i prodotti!'; +$_MODULE['<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd'] = 'Non è stato possibile spedire i prodotti!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1'] = 'Non è stato possibile creare l\'email di seconda possibilità!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2'] = 'Non è stato possibile creare un\'e-mail di seconda possibilità - errore API'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d'] = 'Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7'] = 'L\'e-mail di seconda possibilità è stata inviata con successo!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e'] = 'Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato o è scaduto!'; +$_MODULE['<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18'] = 'Invierà nuovamente un\'email con il link di pagamento al cliente'; +$_MODULE['<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305'] = 'Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github.'; +$_MODULE['<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8'] = 'Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato.'; +$_MODULE['<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; +$_MODULE['<{mollie}prestashop>bancontactpaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; +$_MODULE['<{mollie}prestashop>creditcardpaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; +$_MODULE['<{mollie}prestashop>creditcardsingleclickpaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; +$_MODULE['<{mollie}prestashop>basepaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; +$_MODULE['<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2'] = 'Non è stato possibile creare una transazione Mollie.'; +$_MODULE['<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e'] = 'Non è stato possibile trovare l\'ordine corrispondente al carrello.'; +$_MODULE['<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a'] = 'Non è stato possibile installare gli stati di Mollie'; +$_MODULE['<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f'] = 'Non è stato possibile installare la configurazione'; +$_MODULE['<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8'] = 'Non è stato possibile installare gli stati predefiniti del vettore'; +$_MODULE['<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b'] = 'Non è stato possibile installare gli attributi del voucher'; +$_MODULE['<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c'] = 'Non è stato possibile copiare i modelli di e-mail:'; +$_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6'] = 'Non è stato possibile creare una directory per il certificato apple pay direct'; +$_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6'] = 'Non è stato possibile creare una cartella perché mancano i permessi di scrittura:'; +$_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5'] = 'Non è stato possibile copiare il certificato apple pay direct'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415'] = 'Caricare un file .jpg o .png.'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e'] = 'Si è verificato un errore durante il caricamento del logo.'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160'] = 'Nessuna commissione è stata inviata.'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12'] = 'Commissione non valida'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a'] = 'ID gruppo regole fiscali mancante'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e'] = 'Aggiornare il modulo Mollie'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Selezionare il negozio che si desidera configurare'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Selezionare lo stato dell\'ordine per \Stato in attesa di pagamento\ nella scheda \Impostazioni avanzate\.'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec'] = 'Inserire una descrizione'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd'] = 'L\'importo minimo inserito non è corretto'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0'] = 'L\'importo massimo inserito non è corretto'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5'] = 'Caricare un\'immagine %s%x%s1%'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc'] = 'File non valido: %s%'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a'] = 'Le tabelle del database sono mancanti. Reimpostare il modulo.'; +$_MODULE['<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17'] = 'Totale'; +$_MODULE['<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d'] = 'Totale (tasse incluse)'; +$_MODULE['<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea'] = 'Totale (tasse escluse)'; +$_MODULE['<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836'] = 'Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta.'; +$_MODULE['<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645'] = 'Il servizio di abbonamento è disattivato. Modificare l\'attributo a Abbonamento: nessuno.'; +$_MODULE['<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179'] = 'Errore sconosciuto. Riprovare o modificare l\'attributo a Abbonamento: nessuno.'; +$_MODULE['<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac'] = 'Errore: token non valido.'; +$_MODULE['<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe'] = 'Non è stato possibile ottenere il nuovo metodo di pagamento.'; +$_MODULE['<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8'] = 'Non è stato possibile ottenere un ordine ricorrente.'; +$_MODULE['<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd'] = 'L\'abbonamento è stato annullato con successo.'; +$_MODULE['<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f'] = 'Si è verificato un errore durante la creazione del pagamento. Contattare l\'assistenza clienti.'; +$_MODULE['<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067'] = 'Non è stato possibile salvare le informazioni dell\'ordine.'; +$_MODULE['<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e'] = 'Non esiste un ordine con questo ID.'; +$_MODULE['<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d'] = 'Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante.'; +$_MODULE['<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227'] = 'Non è autorizzato a visualizzare questa pagina.'; +$_MODULE['<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf'] = 'Il pagamento non è andato a buon fine. La preghiamo di riprovare.'; +$_MODULE['<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0'] = 'Il pagamento non è riuscito perché gli importi dell\'ordine e del pagamento sono diversi. La preghiamo di riprovare.'; +$_MODULE['<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7'] = 'Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante.'; +$_MODULE['<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7'] = 'Test chiave API: Fallito! La chiave deve iniziare con test_.'; +$_MODULE['<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847'] = 'Test chiave API: Riuscito!'; +$_MODULE['<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180'] = 'Metodi abilitati:'; +$_MODULE['<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7'] = 'Test chiave API: Fallito! La chiave non esiste.'; +$_MODULE['<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e'] = 'Chiave API live: Fallita! La chiave deve iniziare con live_.'; +$_MODULE['<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61'] = 'Chiave API live: Riuscito!'; +$_MODULE['<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439'] = 'Chiave API live: Fallita! La chiave non esiste.'; +$_MODULE['<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844'] = 'Selezionare quando creare la fattura dell\'Ordine'; +$_MODULE['<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34'] = 'Predefinito: La fattura viene creata in base alle Impostazioni dell\'ordine > Stati. Non viene creato uno stato personalizzato.'; +$_MODULE['<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb'] = 'Autorizzato: Crea una fattura completa quando l\'ordine è autorizzato. Viene creato uno stato personalizzato.'; +$_MODULE['<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d'] = 'Alla spedizione: Crea una fattura completa quando l\'ordine viene spedito. Viene creato uno stato personalizzato.'; +$_MODULE['<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; +$_MODULE['<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9'] = 'Inviare un\'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell\'ordine)'; +$_MODULE['<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99'] = 'Sta attualmente utilizzando la versione %s di questo modulo. L\'ultima versione è %s.'; +$_MODULE['<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8'] = '[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità.'; +$_MODULE['<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad'] = 'Clicca qui'; +$_MODULE['<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884'] = 'per creare un account'; +$_MODULE['<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f'] = 'Sviluppato da Invertus'; +$_MODULE['<{mollie}prestashop>form_1c04b154909c88cfc62b3362c88445af'] = '- l\'agenzia più avanzata tecnicamente dell\'ecosistema PrestaShop.'; +$_MODULE['<{mollie}prestashop>form_0f13aa29b5bc9e8a1b6597dc5987ea46'] = 'Vai al centro di assistenza Mollie'; +$_MODULE['<{mollie}prestashop>form_1c2e79c1715dbe3f3208a7991abc50f0'] = 'Contatta Mollie'; +$_MODULE['<{mollie}prestashop>form_2d059d2c499450d4e083d28f5f47f63d'] = 'Contatta Invertus'; +$_MODULE['<{mollie}prestashop>form_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Abilitato'; +$_MODULE['<{mollie}prestashop>form_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No'; +$_MODULE['<{mollie}prestashop>form_93cba07454f06a4a960172bbd6e2a435'] = 'Sì'; +$_MODULE['<{mollie}prestashop>form_b61254f89b6f2ef061fb628f04a93fe8'] = 'Pagina del prodotto Apple Pay Direct'; +$_MODULE['<{mollie}prestashop>form_9fa70bd7cc082c6eafd9f6c04782de2c'] = 'Pagina del carrello Apple Pay Direct'; +$_MODULE['<{mollie}prestashop>form_020f1a50a78b13a12f304d64dda57020'] = 'Stile del pulsante Apple Pay Direct'; +$_MODULE['<{mollie}prestashop>form_9c12f952ca3695bb3043ddcc0ceaaf80'] = 'Codice QR'; +$_MODULE['<{mollie}prestashop>form_b78a3223503896721cca1303f776159b'] = 'Titolo'; +$_MODULE['<{mollie}prestashop>form_4c3880bb027f159e801041b1021e88e8'] = 'Metodo'; +$_MODULE['<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4'] = 'Payments API'; +$_MODULE['<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51'] = 'Orders API'; +$_MODULE['<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1'] = 'Descrizione della transazione'; +$_MODULE['<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29'] = 'Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:'; +$_MODULE['<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d'] = 'Accettare pagamenti da:'; +$_MODULE['<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee'] = 'Tutti i paesi'; +$_MODULE['<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce'] = 'Paesi selezionati'; +$_MODULE['<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc'] = 'Accettare pagamenti da paesi specifici:'; +$_MODULE['<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a'] = 'Escludere i pagamenti da specifici paesi:'; +$_MODULE['<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; +$_MODULE['<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45'] = 'Nessuna commissione'; +$_MODULE['<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543'] = 'Commissione fissa'; +$_MODULE['<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c'] = 'Percentuale'; +$_MODULE['<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085'] = 'Limite combinato per supplemento di pagamento'; +$_MODULE['<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f'] = 'Aggiungere \(payment_fee}} nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni'; +$_MODULE['<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409'] = 'Traduzioni'; +$_MODULE['<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4'] = 'Includere le tasse nella commissione totale del pagamento'; +$_MODULE['<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81'] = 'Commissione fissa (tasse incluse)'; +$_MODULE['<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c'] = 'Commissione fissa (tasse escluse)'; +$_MODULE['<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc'] = 'Gruppo regole fiscali per commissione fissa'; +$_MODULE['<{mollie}prestashop>form_e457ab8b899c330b05e1bbe6539a50df'] = 'Quota percentuale'; +$_MODULE['<{mollie}prestashop>form_a1eeaac9cc0281aa432a7503fd79c340'] = 'Commissione massima'; +$_MODULE['<{mollie}prestashop>form_80a2645c681d607705f5baab7cf7d2cb'] = 'Importo minimo'; +$_MODULE['<{mollie}prestashop>form_a14ecf18ea57e0ae5ebcd930102d7cbd'] = 'L\'importo minimo predefinito in Mollie è:'; +$_MODULE['<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7'] = 'Importo massimo'; +$_MODULE['<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6'] = 'L\'importo massimo predefinito non ha limitazioni'; +$_MODULE['<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9'] = 'L\'importo massimo predefinito in Mollie è:'; +$_MODULE['<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a'] = 'Utilizzare un logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f'] = 'Caricare un logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7'] = 'Aggiungere file'; +$_MODULE['<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571'] = 'Utilizzare un file .png o .jpg fino a 256x64 pixel.'; +$_MODULE['<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7'] = 'Il suo logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873'] = 'Categoria'; +$_MODULE['<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754'] = 'Nessuno'; +$_MODULE['<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789'] = 'pasto'; +$_MODULE['<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e'] = 'regalo'; +$_MODULE['<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45'] = 'eco'; +$_MODULE['<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446'] = 'Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop.'; +$_MODULE['<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae'] = 'Configurare le informazioni sulla spedizione da inviare a Mollie'; +$_MODULE['<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb'] = 'Può utilizzare le seguenti variabili per gli URL del vettore'; +$_MODULE['<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26'] = 'Numero di spedizione'; +$_MODULE['<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d'] = 'Codice paese di fatturazione'; +$_MODULE['<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f'] = 'Codice postale di fatturazione'; +$_MODULE['<{mollie}prestashop>form_0d12e3c554976ad1f76c5db2b6c127ad'] = 'Codice del paese di spedizione'; +$_MODULE['<{mollie}prestashop>form_c824a8b18f09dc7e58bacf446be6735c'] = 'Codice postale di spedizione'; +$_MODULE['<{mollie}prestashop>form_0a867177f4a701a9f33de5ab21c42593'] = 'Codice lingua a 2 lettere'; +$_MODULE['<{mollie}prestashop>form_49ee3087348e8d44e1feda1917443987'] = 'Nome'; +$_MODULE['<{mollie}prestashop>form_cefb9190a0a2b3301f3e4d44ad14e6c0'] = 'Fonte URL'; +$_MODULE['<{mollie}prestashop>form_812a48ba719daeda82e4da8e812d426c'] = 'URL personalizzato'; +$_MODULE['<{mollie}prestashop>form_962b59a5f12eabd9c05f11b5f0aada85'] = 'Non spedire automaticamente'; +$_MODULE['<{mollie}prestashop>form_703490ffd308d337cd5aac50567e9670'] = 'Nessuna informazione sulla tracciabilità'; +$_MODULE['<{mollie}prestashop>form_de28ef21a06f3978c05f3d808b15eaab'] = 'URL del vettore'; +$_MODULE['<{mollie}prestashop>form_e55f75a29310d7b60f7ac1d390c8ae42'] = 'Modulo'; +$_MODULE['<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a'] = 'Questa opzione non è necessaria per l\'API attualmente selezionato.'; +$_MODULE['<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828'] = 'Questa opzione non è necessaria per l\'API selezionata'; +$_MODULE['<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d'] = 'Mostra'; +$_MODULE['<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondere'; +$_MODULE['<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5'] = 'Nessun metodo di pagamento Mollie ancora abilitato'; +$_MODULE['<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950'] = 'Attivare i metodi di pagamento nel proprio account Mollie.'; +$_MODULE['<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26'] = 'Configurare'; +$_MODULE['<{mollie}prestashop>form_20d053df791cc72594d141b24276597f'] = 'Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento.'; +$_MODULE['<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a'] = 'È sicuro?'; +$_MODULE['<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f'] = 'È sicuro di voler rimborsare questo ordine?'; +$_MODULE['<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714'] = 'Rimborso'; +$_MODULE['<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8'] = 'Rimborsare ordine'; +$_MODULE['<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1'] = 'Rimborsabile'; +$_MODULE['<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090'] = 'Rimborso parziale'; +$_MODULE['<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a'] = 'Importo non valido'; +$_MODULE['<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872'] = 'Inserire un importo valido'; +$_MODULE['<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782'] = 'Rimborso non riuscito'; +$_MODULE['<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f'] = 'Informazioni sul pagamento'; +$_MODULE['<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008'] = 'ID transazione'; +$_MODULE['<{mollie}prestashop>order_info_782678f4ba02feb3e9ecd51e902cd16b'] = 'Cronologia dei rimborsi'; +$_MODULE['<{mollie}prestashop>order_info_c5b41ae59bd6585750f536615a6bc20b'] = 'Non ci sono rimborsi'; +$_MODULE['<{mollie}prestashop>order_info_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_MODULE['<{mollie}prestashop>order_info_44749712dbec183e983dcd78a7736c41'] = 'Data'; +$_MODULE['<{mollie}prestashop>order_info_b2f40690858b404ed10e62bdf422c704'] = 'Importo'; +$_MODULE['<{mollie}prestashop>order_info_53beb26d8bca00f56fbd295fdee83459'] = 'Rimborsi'; +$_MODULE['<{mollie}prestashop>order_info_daef64964ee3b9b904f5d467586e217f'] = 'Pagamenti'; +$_MODULE['<{mollie}prestashop>order_info_e25be354288565757726f3295e4f3ef9'] = 'Importo attuale'; +$_MODULE['<{mollie}prestashop>order_info_068f80c7519d0528fb08e82137a72131'] = 'Prodotti'; +$_MODULE['<{mollie}prestashop>order_info_ec53a8c4f07baed5d8825072c89799be'] = 'Stato'; +$_MODULE['<{mollie}prestashop>order_info_747cf5c8587184b9e489ff897d97c20d'] = 'Spedito'; +$_MODULE['<{mollie}prestashop>order_info_0e22fe7d45f8e5632a4abf369b24e29c'] = 'Annullato'; +$_MODULE['<{mollie}prestashop>order_info_cc61945cbbf46721a053467c395c666f'] = 'Rimborsato'; +$_MODULE['<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2'] = 'Prezzo unitario'; +$_MODULE['<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459'] = 'Importo IVA'; +$_MODULE['<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d'] = 'Importo totale'; +$_MODULE['<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac'] = 'Spedire'; +$_MODULE['<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd'] = 'Rivedi spedizione'; +$_MODULE['<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67'] = 'Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità'; +$_MODULE['<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022'] = 'Rivedi rimborso'; +$_MODULE['<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb'] = 'Esaminare i prodotti inclusi nel rimborso. Se necessario'; +$_MODULE['<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08'] = 'Rivedi annullamento'; +$_MODULE['<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e'] = 'Esaminare i prodotti inclusi nel annullamento. Se necessario'; +$_MODULE['<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK'; +$_MODULE['<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164'] = 'Spedire prodotti'; +$_MODULE['<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a'] = 'Dettagli di tracciamento'; +$_MODULE['<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7'] = 'Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente.'; +$_MODULE['<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937'] = 'Salta i dettagli di tracciamento'; +$_MODULE['<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d'] = 'opzionale'; +$_MODULE['<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f'] = 'Ad esempio FedEx'; +$_MODULE['<{mollie}prestashop>order_info_593ed3a37aa1a3ece4a4d796fb4e2e03'] = 'Queste informazioni sono necessarie'; +$_MODULE['<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56'] = 'Codice di tracciamento'; +$_MODULE['<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d'] = 'URL'; +$_MODULE['<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb'] = 'Vettore'; +$_MODULE['<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283'] = 'Spedire tutto'; +$_MODULE['<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7'] = 'Annulla tutto'; +$_MODULE['<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204'] = 'Rimborsa tutto'; +$_MODULE['<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292'] = 'Informazioni sulla transazione'; +$_MODULE['<{mollie}prestashop>order_info_61066fef1e8173dc711f55bbedb8839c'] = 'Informazioni sul buono'; +$_MODULE['<{mollie}prestashop>order_info_1eefa98a18a384699fe611fbfd8ab0c9'] = 'Non ci sono prodotti'; +$_MODULE['<{mollie}prestashop>order_info_a25c753ee3e4be15ec0daa5a40deb7b8'] = 'Si è verificato un errore'; +$_MODULE['<{mollie}prestashop>order_info_2df3102f3fe061003dee820a72e1b1ed'] = 'Non è stato possibile spedire'; +$_MODULE['<{mollie}prestashop>order_info_3efc29552025b4e68de04f415b0b8806'] = 'Non è stato possibile rimborsare'; +$_MODULE['<{mollie}prestashop>order_info_468a92810b526750be9664461db6bf91'] = 'Non è stato possibile annullare'; +$_MODULE['<{mollie}prestashop>order_info_2427b479f15af44582dc151ef95a90d0'] = 'I rimborsi non sono attualmente disponibili'; +$_MODULE['<{mollie}prestashop>order_info_20c72bbfdf74d618a4b8a11100e864a0'] = 'Il rimborso è stato effettuato con successo!'; +$_MODULE['<{mollie}prestashop>order_info_c7eb2a728623db5eedf0e12d21ffa604'] = 'La spedizione è stata effettuata con successo!'; +$_MODULE['<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59'] = 'L\'ordine è stato annullato con successo!'; +$_MODULE['<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8'] = 'Metodo'; +$_MODULE['<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234'] = 'Emittente'; +$_MODULE['<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6'] = 'Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s.'; +$_MODULE['<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Selezionare uno stato d\'ordine per \Stato per in attesa di pagamento\ nella scheda \Impostazioni avanzate\.'; +$_MODULE['<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea'] = 'Utilizzare la carta salvata'; +$_MODULE['<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b'] = 'Salvare la carta'; +$_MODULE['<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c'] = 'Pagamenti sicuri forniti da'; +$_MODULE['<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507'] = 'Inserire i dati della carta'; +$_MODULE['<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06'] = 'Nome sulla carta'; +$_MODULE['<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79'] = 'Numero di carta'; $_MODULE['<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182'] = 'Data di scadenza'; $_MODULE['<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197'] = 'CVC/CVV'; -$_MODULE['<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b'] = 'Salva la carta'; -$_MODULE['<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea'] = 'Utilizzare la carta salvata/registrata'; +$_MODULE['<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b'] = 'Salvare la carta'; +$_MODULE['<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea'] = 'Utilizzare la carta salvata'; $_MODULE['<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c'] = 'Pagamenti sicuri forniti da'; +$_MODULE['<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724'] = 'Commissione di pagamento:'; +$_MODULE['<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9'] = 'Scansione QR'; +$_MODULE['<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf'] = 'Aprire l\'app Bancontact per scansionare il codice QR'; +$_MODULE['<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c'] = 'O'; +$_MODULE['<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd'] = 'Continuare senza codice QR'; +$_MODULE['<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; +$_MODULE['<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9'] = 'Torna al carrello'; +$_MODULE['<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da'] = 'Pagamento'; +$_MODULE['<{mollie}prestashop>error_1e97d97a923eaddd810e056c828e99ea'] = 'Errore di pagamento'; +$_MODULE['<{mollie}prestashop>error_a25c753ee3e4be15ec0daa5a40deb7b8'] = 'Si è verificato un errore'; +$_MODULE['<{mollie}prestashop>error_47e1924c444fafe9fdfce444790f0ba9'] = 'Torna al carrello'; +$_MODULE['<{mollie}prestashop>order_fail_28726b6ad52c9eae94be432666f93449'] = 'L\'ordine è stato annullato'; +$_MODULE['<{mollie}prestashop>mollie_return_ebdf0f490b617d7efa3025d3625cec85'] = 'Bentornato'; +$_MODULE['<{mollie}prestashop>mollie_return_300225ee958b6350abc51805dab83c24'] = 'Continua gli acquisti'; +$_MODULE['<{mollie}prestashop>mollie_wait_bc0dd919f9a70dbb62f3f7afd68d6d68'] = 'In attesa dello stato di pagamento'; +$_MODULE['<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b'] = 'Mollie iDEAL QR'; +$_MODULE['<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85'] = 'Bentornato'; +$_MODULE['<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572'] = 'Il pagamento è stato annullato'; +$_MODULE['<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b'] = 'Il pagamento è completo. Grazie per il suo ordine!'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0'] = 'Prodotto:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c'] = 'Quantità:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee'] = 'Prezzo unitario:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa'] = 'Totale:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c'] = 'Stato dell\'abbonamento.'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8'] = 'Data di inizio dell\'abbonamento:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd'] = 'Prossima data di pagamento:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350'] = 'Data di annullamento:'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d'] = 'Dettagli dell\'ordine di abbonamento'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3'] = 'Aggiornare il metodo di pagamento dell\'abbonamento'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b'] = ' you can select it here.'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6'] = 'Aggiornare'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112'] = 'Annullare l\'abbonamento'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; +$_MODULE['<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; From 440d9fdf153c7e9ebb8ae6a1d787e0651613e187 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 28 Aug 2024 15:59:35 +0300 Subject: [PATCH 26/74] deleted not needed files --- it.php | 417 ------------------------------------------------ translation.csv | 413 ----------------------------------------------- 2 files changed, 830 deletions(-) delete mode 100644 it.php delete mode 100644 translation.csv diff --git a/it.php b/it.php deleted file mode 100644 index 70bb072f2..000000000 --- a/it.php +++ /dev/null @@ -1,417 +0,0 @@ -mollie_7c478959c218087ffc4ad5d96e7f66a6"'] = '"Mollie"'; -$_MODULE['"<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5"'] = '"Pagamenti Mollie"'; -$_MODULE['"<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac"'] = '"Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive."'; -$_MODULE['"<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd"'] = '"Non è stato possibile installare il modulo"'; -$_MODULE['"<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2"'] = '"Grazie. Abbiamo ricevuto il pagamento."'; -$_MODULE['"<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5"'] = '"AJAX"'; -$_MODULE['"<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; -$_MODULE['"<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7"'] = '"FAQ Abbonamenti"'; -$_MODULE['"<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237"'] = '"Link di pagamento"'; -$_MODULE['"<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968"'] = ' please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com"'; -$_MODULE['"<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27"'] = '"Errore di pagamento:"'; -$_MODULE['"<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57"'] = '"Il cliente deve aver effettuato il login per acquistare l\'elemento in abbonamento."'; -$_MODULE['"<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c"'] = '"Non è possibile rimuovere l\'indirizzo associato all\'abbonamento"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252"'] = '"Creazione di abbonamento"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304"'] = ' assign it a Mollie subscription attribute."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83"'] = '"Punti IMPORTANTI"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf"'] = ' make sure you always include \'none\' as a fallback."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621"'] = '"Punti IMPORTANTI sul vettore per l\'abbonamento "'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f"'] = '"Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736"'] = '"Il vettore dovrebbe coprire tutte le regioni supportate dal negozio."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f"'] = '"Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5"'] = ' subscription orders must be cancelled and carrier re-selected in module settings."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb"'] = '"Regole del carrello"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc"'] = '"Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f"'] = '"Confezioni regalo"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc"'] = '"La funzione di confezione regalo non è supportata per gli ordini in abbonamento."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1"'] = '"Creazione di ordini ricorrenti"'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6"'] = '"Mollie for Prestashop crea automaticamente un nuovo ordine quando l\'ordine precedente viene pagato."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4"'] = '"Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento."'; -$_MODULE['"<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1"'] = '"L\'ordine ricorrente sovrascriverà l\'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie."'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4"'] = '"Selezionare il negozio che desidera configurare"'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88"'] = '"Impossibile salvare le opzioni. Riprovare o contattare l\'assistenza."'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf"'] = '"Opzioni salvate con successo."'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06"'] = '"Vettore non trovato"'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95"'] = '"Annullato con successo"'; -$_MODULE['"<{mollie}prestashop>subscriptioncontroller_0e1248f1d840e05ee74190cb30e23c51"'] = '"Non è stato possibile annullare l\'abbonamento"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_b718adec73e04ce3ec720dd11a06a308"'] = '"ID"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_9bf79c7f10eadd0b612b8c354ad19bdc"'] = '"ID abbonamento"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_d37c2bf1bd3143847fca087b354f920e"'] = '"ID cliente"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_f11b368cddfe37c47af9b9d91c6ba4f0"'] = '"Nome e cognome"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_b5a7adde1af5c87d7fd797b6245c2a39"'] = '"Descrizione"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_ec53a8c4f07baed5d8825072c89799be"'] = '"Stato"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399"'] = '"Prezzo totale"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c"'] = '"Valuta"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa"'] = '"Azioni"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; -$_MODULE['"<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76"'] = '"Annullare l\'abbonamento selezionato?"'; -$_MODULE['"<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962"'] = '"Selezionare il suo vettore"'; -$_MODULE['"<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205"'] = '"Non è stato possibile aggiungere gli attributi"'; -$_MODULE['"<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf"'] = '"Non è stato possibile cancellare degli attributi"'; -$_MODULE['"<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d"'] = '"Conflitto di risorse"'; -$_MODULE['"<{mollie}prestashop>abstractmolliecontroller_8f8913c1f755436db84ae169e37c61f9"'] = '"Errore interno"'; -$_MODULE['"<{mollie}prestashop>formbuilder_c9cc8cce247e49bae79f15173ce97354"'] = '"Salva"'; -$_MODULE['"<{mollie}prestashop>formbuilder_0ba29c6a1afacf586b03a26162c72274"'] = '"Ambiente"'; -$_MODULE['"<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b"'] = '"Test"'; -$_MODULE['"<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0"'] = '"Live"'; -$_MODULE['"<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd"'] = '"Test della chiave API"'; -$_MODULE['"<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e"'] = '"Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live."'; -$_MODULE['"<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a"'] = '"Chiave API live"'; -$_MODULE['"<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c"'] = '"Chiave API di test"'; -$_MODULE['"<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19"'] = '"Ha già un account Mollie?"'; -$_MODULE['"<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32"'] = '"Abilitato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241"'] = '"Disabilitato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6"'] = '"Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]"'; -$_MODULE['"<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded"'] = '"Chiave API Live"'; -$_MODULE['"<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9"'] = '"Utilizza Mollie Components per le carte di credito"'; -$_MODULE['"<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57"'] = '"Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione."'; -$_MODULE['"<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b"'] = '"Leggere di più su Mollie Components e come migliorano la conversione"'; -$_MODULE['"<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5"'] = '"Utilizzare pagamenti con un solo clic per le carte di credito"'; -$_MODULE['"<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0"'] = '"Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione."'; -$_MODULE['"<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae"'] = '"Metodi di pagamento"'; -$_MODULE['"<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49"'] = '"[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API."'; -$_MODULE['"<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269"'] = '"Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR."'; -$_MODULE['"<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f"'] = '"Usa il locale selezionato nel webshop"'; -$_MODULE['"<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6"'] = ' your shop uses the browser\'s locale. "'; -$_MODULE['"<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f"'] = '"Utilizza il locale del webshop"'; -$_MODULE['"<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419"'] = '"Utilizza il locale del browser"'; -$_MODULE['"<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135"'] = '"Invia l\'e-mail di conferma dell\'ordine"'; -$_MODULE['"<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb"'] = '"Quando l\'ordine viene pagato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c"'] = '"Mai"'; -$_MODULE['"<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844"'] = '"Selezionare quando creare la fattura dell\'Ordine"'; -$_MODULE['"<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67"'] = '"Predefinito"'; -$_MODULE['"<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3"'] = '"Autorizzato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d"'] = '"Spedito"'; -$_MODULE['"<{mollie}prestashop>formbuilder_7c4e7ada50c8572336f872fced4d1852"'] = '"Stato per i pagamenti %s"'; -$_MODULE['"<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2"'] = '"I pagamenti di `%s` ottengono lo stato di `%s`."'; -$_MODULE['"<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039"'] = '"Invia un\'e-mail a %s"'; -$_MODULE['"<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c"'] = ' self::FILE_NAME"'; -$_MODULE['"<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605"'] = '"Saltare questo stato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2"'] = '"Stati dell\'ordine"'; -$_MODULE['"<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983"'] = '"Impostazioni visive"'; -$_MODULE['"<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157"'] = '"Immagini"'; -$_MODULE['"<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219"'] = ' normal'; -$_MODULE['"<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0"'] = '"Nascondere"'; -$_MODULE['"<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0"'] = '"Normale"'; -$_MODULE['"<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3"'] = '"Grande"'; -$_MODULE['"<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5"'] = '"File CSS"'; -$_MODULE['"<{mollie}prestashop>formbuilder_13efb943fd692917410355eb926d24a2"'] = ' [1]{THEME}[/1]'; -$_MODULE['"<{mollie}prestashop>formbuilder_1191f888f0cc23f95aa77aacb094503b"'] = '"Informazioni sulla spedizione"'; -$_MODULE['"<{mollie}prestashop>formbuilder_2526a2ff1547e6fe751081693d8631af"'] = '"Spedisci automaticamente sugli stati contrassegnati"'; -$_MODULE['"<{mollie}prestashop>formbuilder_006a37d93d3c3fb1b097dcf477f84a99"'] = '"Abilita per inviare automaticamente le informazioni sulla spedizione quando un ordine ottiene uno stato contrassegnato."'; -$_MODULE['"<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4"'] = '"Spedisci automaticamente quando uno di questi stati è raggiunto"'; -$_MODULE['"<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988"'] = ' the module automatically sends shipment information"'; -$_MODULE['"<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d"'] = '"Mostra"'; -$_MODULE['"<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8"'] = '"Disattivare questo stato"'; -$_MODULE['"<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797"'] = '"Livello di debug"'; -$_MODULE['"<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91"'] = '"Mostra errori"'; -$_MODULE['"<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9"'] = '"Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging."'; -$_MODULE['"<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d"'] = '"Livello di log"'; -$_MODULE['"<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62"'] = '"Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]"'; -$_MODULE['"<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5"'] = '"Nessuno"'; -$_MODULE['"<{mollie}prestashop>formbuilder_5ef0c737746fae2ca90e66c39333f8f6"'] = '"Errori"'; -$_MODULE['"<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c"'] = '"Tutto"'; -$_MODULE['"<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed"'] = '"Impostazioni generali"'; -$_MODULE['"<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998"'] = '"Impostazioni avanzate"'; -$_MODULE['"<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680"'] = '"Tutti"'; -$_MODULE['"<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65"'] = '"Nessun vettore"'; -$_MODULE['"<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81"'] = '"Nuovo buono per il suo ordine %s"'; -$_MODULE['"<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546"'] = '"Si è verificato un errore durante l\'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885"'] = '"Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f"'] = '"Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5"'] = '"L\'opzione di pagamento scelta non è disponibile per l\'importo totale del suo ordine. La preghiamo di considerare un\'altra opzione di pagamento e riprovare."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di spedizione."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di pagamento."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d"'] = '"Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) è un pagamento regolare."'; -$_MODULE['"<{mollie}prestashop>exceptionservice_90d4e1683d6b1745120d0a254d58e4ea"'] = '"Eccezione sconosciuta in Mollie"'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b"'] = '"La chiave API deve iniziare con test o live."'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45"'] = '"Chiave API sbagliata!"'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab"'] = '"Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento"'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04"'] = '"Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente."'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408"'] = ' please try resetting Mollie module."'; -$_MODULE['"<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f"'] = '"La configurazione è stata salvata!"'; -$_MODULE['"<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df"'] = '"L\'ordine non poteva essere rimborsato!"'; -$_MODULE['"<{mollie}prestashop>refundservice_ccb168b5a6a86eb100dc2dee754a316b"'] = '"Motivo:"'; -$_MODULE['"<{mollie}prestashop>refundservice_e12682d2e0650f2783b22d956d2b947a"'] = '"L\'ordine è stato rimborsato!"'; -$_MODULE['"<{mollie}prestashop>refundservice_88928f236ceccc4c2e0f2eb643d85341"'] = '"Mollie trasferirà l\'importo al cliente il giorno lavorativo successivo."'; -$_MODULE['"<{mollie}prestashop>refundservice_65718b7293759bcf2ca7257aba3d3179"'] = '"Non è stato possibile rimborsare i prodotti!"'; -$_MODULE['"<{mollie}prestashop>languageservice_e0010a0a1a3259ab5c06a19bad532851"'] = '"Pagato"'; -$_MODULE['"<{mollie}prestashop>languageservice_07ca5050e697392c9ed47e6453f1453f"'] = '"Completato"'; -$_MODULE['"<{mollie}prestashop>languageservice_a206428462686af481cb072b8db11784"'] = '"Autorizzato"'; -$_MODULE['"<{mollie}prestashop>languageservice_0e22fe7d45f8e5632a4abf369b24e29c"'] = '"Annullato"'; -$_MODULE['"<{mollie}prestashop>languageservice_24fe48030f7d3097d5882535b04c3fa8"'] = '"Scaduto"'; -$_MODULE['"<{mollie}prestashop>languageservice_cc61945cbbf46721a053467c395c666f"'] = '"Rimborsato"'; -$_MODULE['"<{mollie}prestashop>languageservice_c3bf447eabe632720a3aa1a7ce401274"'] = '"Aperto"'; -$_MODULE['"<{mollie}prestashop>languageservice_c7bece6685d4556fcb8dfdcd72d720f5"'] = '"In attesa"'; -$_MODULE['"<{mollie}prestashop>languageservice_9f004157e4c148dac71da3ae5906351f"'] = '"Parzialmente rimborsato"'; -$_MODULE['"<{mollie}prestashop>languageservice_a7b2273fe3a1293885769855e2f3e6ba"'] = '"Chargeback"'; -$_MODULE['"<{mollie}prestashop>languageservice_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; -$_MODULE['"<{mollie}prestashop>languageservice_ea9cf7e47ff33b2be14e6dd07cbcefc6"'] = '"Spedizione"'; -$_MODULE['"<{mollie}prestashop>languageservice_484f5a79672cebe198ebdde45a1d672f"'] = '"Confezioni regalo"'; -$_MODULE['"<{mollie}prestashop>languageservice_e2b7dec8fa4b498156dfee6e4c84b156"'] = '"Questo metodo di pagamento non è disponibile."'; -$_MODULE['"<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c"'] = '"Non è stato possibile annullare i prodotti!"'; -$_MODULE['"<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd"'] = '"Non è stato possibile spedire i prodotti!"'; -$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1"'] = '"Non è stato possibile creare l\'email di seconda possibilità!"'; -$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2"'] = '"Non è stato possibile creare un\'e-mail di seconda possibilità - errore API"'; -$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d"'] = '"Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato!"'; -$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7"'] = '"L\'e-mail di seconda possibilità è stata inviata con successo!"'; -$_MODULE['"<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e"'] = '"Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato o è scaduto!"'; -$_MODULE['"<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18"'] = '"Invierà nuovamente un\'email con il link di pagamento al cliente"'; -$_MODULE['"<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305"'] = '"Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github."'; -$_MODULE['"<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8"'] = '"Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato."'; -$_MODULE['"<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; -$_MODULE['"<{mollie}prestashop>bancontactpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; -$_MODULE['"<{mollie}prestashop>creditcardpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; -$_MODULE['"<{mollie}prestashop>creditcardsingleclickpaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; -$_MODULE['"<{mollie}prestashop>basepaymentoptionprovider_0b135af05e690cf2fca288a143759716"'] = '"Commissione di pagamento: %1s"'; -$_MODULE['"<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2"'] = '"Non è stato possibile creare una transazione Mollie."'; -$_MODULE['"<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e"'] = '"Non è stato possibile trovare l\'ordine corrispondente al carrello."'; -$_MODULE['"<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a"'] = '"Non è stato possibile installare gli stati di Mollie"'; -$_MODULE['"<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f"'] = '"Non è stato possibile installare la configurazione"'; -$_MODULE['"<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8"'] = '"Non è stato possibile installare gli stati predefiniti del vettore"'; -$_MODULE['"<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b"'] = '"Non è stato possibile installare gli attributi del voucher"'; -$_MODULE['"<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c"'] = '"Non è stato possibile copiare i modelli di e-mail:"'; -$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6"'] = '"Non è stato possibile creare una directory per il certificato apple pay direct"'; -$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6"'] = '"Non è stato possibile creare una cartella perché mancano i permessi di scrittura:"'; -$_MODULE['"<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5"'] = '"Non è stato possibile copiare il certificato apple pay direct"'; -$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415"'] = '"Caricare un file .jpg o .png."'; -$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e"'] = '"Si è verificato un errore durante il caricamento del logo."'; -$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160"'] = '"Nessuna commissione è stata inviata."'; -$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12"'] = '"Commissione non valida"'; -$_MODULE['"<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a"'] = '"ID gruppo regole fiscali mancante"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e"'] = '"Aggiornare il modulo Mollie"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4"'] = '"Selezionare il negozio che si desidera configurare"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84"'] = '"Selezionare lo stato dell\'ordine per \"Stato in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\"""."'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec"'] = '"Inserire una descrizione"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd"'] = '"L\'importo minimo inserito non è corretto"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0"'] = '"L\'importo massimo inserito non è corretto"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5"'] = '"Caricare un\'immagine %s%x%s1%"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc"'] = '"File non valido: %s%"'; -$_MODULE['"<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a"'] = '"Le tabelle del database sono mancanti. Reimpostare il modulo."'; -$_MODULE['"<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17"'] = '"Totale"'; -$_MODULE['"<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d"'] = '"Totale (tasse incluse)"'; -$_MODULE['"<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea"'] = '"Totale (tasse escluse)"'; -$_MODULE['"<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836"'] = '"Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta."'; -$_MODULE['"<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645"'] = '"Il servizio di abbonamento è disattivato. Modificare l\'attributo a Abbonamento: nessuno."'; -$_MODULE['"<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179"'] = '"Errore sconosciuto. Riprovare o modificare l\'attributo a Abbonamento: nessuno."'; -$_MODULE['"<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac"'] = '"Errore: token non valido."'; -$_MODULE['"<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe"'] = '"Non è stato possibile ottenere il nuovo metodo di pagamento."'; -$_MODULE['"<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8"'] = '"Non è stato possibile ottenere un ordine ricorrente."'; -$_MODULE['"<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd"'] = '"L\'abbonamento è stato annullato con successo."'; -$_MODULE['"<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f"'] = '"Si è verificato un errore durante la creazione del pagamento. Contattare l\'assistenza clienti."'; -$_MODULE['"<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067"'] = '"Non è stato possibile salvare le informazioni dell\'ordine."'; -$_MODULE['"<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e"'] = '"Non esiste un ordine con questo ID."'; -$_MODULE['"<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d"'] = '"Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante."'; -$_MODULE['"<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227"'] = '"Non è autorizzato a visualizzare questa pagina."'; -$_MODULE['"<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf"'] = '"Il pagamento non è andato a buon fine. La preghiamo di riprovare."'; -$_MODULE['"<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0"'] = '"Il pagamento non è riuscito perché gli importi dell\'ordine e del pagamento sono diversi. La preghiamo di riprovare."'; -$_MODULE['"<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7"'] = '"Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante."'; -$_MODULE['"<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7"'] = '"Test chiave API: Fallito! La chiave deve iniziare con test_."'; -$_MODULE['"<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847"'] = '"Test chiave API: Riuscito!"'; -$_MODULE['"<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180"'] = '"Metodi abilitati:"'; -$_MODULE['"<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7"'] = '"Test chiave API: Fallito! La chiave non esiste."'; -$_MODULE['"<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e"'] = '"Chiave API live: Fallita! La chiave deve iniziare con live_."'; -$_MODULE['"<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61"'] = '"Chiave API live: Riuscito!"'; -$_MODULE['"<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439"'] = '"Chiave API live: Fallita! La chiave non esiste."'; -$_MODULE['"<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844"'] = '"Selezionare quando creare la fattura dell\'Ordine"'; -$_MODULE['"<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34"'] = '"Predefinito: La fattura viene creata in base alle Impostazioni dell\'ordine > Stati. Non viene creato uno stato personalizzato."'; -$_MODULE['"<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb"'] = '"Autorizzato: Crea una fattura completa quando l\'ordine è autorizzato. Viene creato uno stato personalizzato."'; -$_MODULE['"<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d"'] = '"Alla spedizione: Crea una fattura completa quando l\'ordine viene spedito. Viene creato uno stato personalizzato."'; -$_MODULE['"<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; -$_MODULE['"<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9"'] = '"Inviare un\'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell\'ordine)"'; -$_MODULE['"<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99"'] = '"Sta attualmente utilizzando la versione %s di questo modulo. L\'ultima versione è %s."'; -$_MODULE['"<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8"'] = '"[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità."'; -$_MODULE['"<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad"'] = '"Clicca qui"'; -$_MODULE['"<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884"'] = '"per creare un account"'; -$_MODULE['"<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f"'] = '"Sviluppato da Invertus"'; -$_MODULE['"<{mollie}prestashop>form_1c04b154909c88cfc62b3362c88445af"'] = '"- l\'agenzia più avanzata tecnicamente dell\'ecosistema PrestaShop."'; -$_MODULE['"<{mollie}prestashop>form_0f13aa29b5bc9e8a1b6597dc5987ea46"'] = '"Vai al centro di assistenza Mollie"'; -$_MODULE['"<{mollie}prestashop>form_1c2e79c1715dbe3f3208a7991abc50f0"'] = '"Contatta Mollie"'; -$_MODULE['"<{mollie}prestashop>form_2d059d2c499450d4e083d28f5f47f63d"'] = '"Contatta Invertus"'; -$_MODULE['"<{mollie}prestashop>form_00d23a76e43b46dae9ec7aa9dcbebb32"'] = '"Abilitato"'; -$_MODULE['"<{mollie}prestashop>form_bafd7322c6e97d25b6299b5d6fe8920b"'] = '"No"'; -$_MODULE['"<{mollie}prestashop>form_93cba07454f06a4a960172bbd6e2a435"'] = '"Sì"'; -$_MODULE['"<{mollie}prestashop>form_b61254f89b6f2ef061fb628f04a93fe8"'] = '"Pagina del prodotto Apple Pay Direct"'; -$_MODULE['"<{mollie}prestashop>form_9fa70bd7cc082c6eafd9f6c04782de2c"'] = '"Pagina del carrello Apple Pay Direct"'; -$_MODULE['"<{mollie}prestashop>form_020f1a50a78b13a12f304d64dda57020"'] = '"Stile del pulsante Apple Pay Direct"'; -$_MODULE['"<{mollie}prestashop>form_9c12f952ca3695bb3043ddcc0ceaaf80"'] = '"Codice QR"'; -$_MODULE['"<{mollie}prestashop>form_b78a3223503896721cca1303f776159b"'] = '"Titolo"'; -$_MODULE['"<{mollie}prestashop>form_4c3880bb027f159e801041b1021e88e8"'] = '"Metodo"'; -$_MODULE['"<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4"'] = '"Payments API"'; -$_MODULE['"<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51"'] = '"Orders API"'; -$_MODULE['"<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1"'] = '"Descrizione della transazione"'; -$_MODULE['"<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29"'] = '"Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:"'; -$_MODULE['"<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d"'] = '"Accettare pagamenti da:"'; -$_MODULE['"<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee"'] = '"Tutti i paesi"'; -$_MODULE['"<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce"'] = '"Paesi selezionati"'; -$_MODULE['"<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc"'] = '"Accettare pagamenti da paesi specifici:"'; -$_MODULE['"<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a"'] = '"Escludere i pagamenti da specifici paesi:"'; -$_MODULE['"<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; -$_MODULE['"<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45"'] = '"Nessuna commissione"'; -$_MODULE['"<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543"'] = '"Commissione fissa"'; -$_MODULE['"<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c"'] = '"Percentuale"'; -$_MODULE['"<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085"'] = '"Limite combinato per supplemento di pagamento"'; -$_MODULE['"<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f"'] = '"Aggiungere \"(payment_fee}}"" nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni"'; -$_MODULE['"<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409"'] = '"Traduzioni"'; -$_MODULE['"<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4"'] = '"Includere le tasse nella commissione totale del pagamento"'; -$_MODULE['"<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81"'] = '"Commissione fissa (tasse incluse)"'; -$_MODULE['"<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c"'] = '"Commissione fissa (tasse escluse)"'; -$_MODULE['"<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc"'] = '"Gruppo regole fiscali per commissione fissa"'; -$_MODULE['"<{mollie}prestashop>form_e457ab8b899c330b05e1bbe6539a50df"'] = '"Quota percentuale"'; -$_MODULE['"<{mollie}prestashop>form_a1eeaac9cc0281aa432a7503fd79c340"'] = '"Commissione massima"'; -$_MODULE['"<{mollie}prestashop>form_80a2645c681d607705f5baab7cf7d2cb"'] = '"Importo minimo"'; -$_MODULE['"<{mollie}prestashop>form_a14ecf18ea57e0ae5ebcd930102d7cbd"'] = '"L\'importo minimo predefinito in Mollie è:"'; -$_MODULE['"<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7"'] = '"Importo massimo"'; -$_MODULE['"<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6"'] = '"L\'importo massimo predefinito non ha limitazioni"'; -$_MODULE['"<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9"'] = '"L\'importo massimo predefinito in Mollie è:"'; -$_MODULE['"<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a"'] = '"Utilizzare un logo personalizzato"'; -$_MODULE['"<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f"'] = '"Caricare un logo personalizzato"'; -$_MODULE['"<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7"'] = '"Aggiungere file"'; -$_MODULE['"<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571"'] = '"Utilizzare un file .png o .jpg fino a 256x64 pixel."'; -$_MODULE['"<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7"'] = '"Il suo logo personalizzato"'; -$_MODULE['"<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873"'] = '"Categoria"'; -$_MODULE['"<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754"'] = '"Nessuno"'; -$_MODULE['"<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789"'] = '"pasto"'; -$_MODULE['"<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e"'] = '"regalo"'; -$_MODULE['"<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45"'] = '"eco"'; -$_MODULE['"<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446"'] = '"Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop."'; -$_MODULE['"<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae"'] = '"Configurare le informazioni sulla spedizione da inviare a Mollie"'; -$_MODULE['"<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb"'] = '"Può utilizzare le seguenti variabili per gli URL del vettore"'; -$_MODULE['"<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26"'] = '"Numero di spedizione"'; -$_MODULE['"<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d"'] = '"Codice paese di fatturazione"'; -$_MODULE['"<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f"'] = '"Codice postale di fatturazione"'; -$_MODULE['"<{mollie}prestashop>form_0d12e3c554976ad1f76c5db2b6c127ad"'] = '"Codice del paese di spedizione"'; -$_MODULE['"<{mollie}prestashop>form_c824a8b18f09dc7e58bacf446be6735c"'] = '"Codice postale di spedizione"'; -$_MODULE['"<{mollie}prestashop>form_0a867177f4a701a9f33de5ab21c42593"'] = '"Codice lingua a 2 lettere"'; -$_MODULE['"<{mollie}prestashop>form_49ee3087348e8d44e1feda1917443987"'] = '"Nome"'; -$_MODULE['"<{mollie}prestashop>form_cefb9190a0a2b3301f3e4d44ad14e6c0"'] = '"Fonte URL"'; -$_MODULE['"<{mollie}prestashop>form_812a48ba719daeda82e4da8e812d426c"'] = '"URL personalizzato"'; -$_MODULE['"<{mollie}prestashop>form_962b59a5f12eabd9c05f11b5f0aada85"'] = '"Non spedire automaticamente"'; -$_MODULE['"<{mollie}prestashop>form_703490ffd308d337cd5aac50567e9670"'] = '"Nessuna informazione sulla tracciabilità"'; -$_MODULE['"<{mollie}prestashop>form_de28ef21a06f3978c05f3d808b15eaab"'] = '"URL del vettore"'; -$_MODULE['"<{mollie}prestashop>form_e55f75a29310d7b60f7ac1d390c8ae42"'] = '"Modulo"'; -$_MODULE['"<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a"'] = '"Questa opzione non è necessaria per l\'API attualmente selezionato."'; -$_MODULE['"<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828"'] = '"Questa opzione non è necessaria per l\'API selezionata"'; -$_MODULE['"<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d"'] = '"Mostra"'; -$_MODULE['"<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0"'] = '"Nascondere"'; -$_MODULE['"<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5"'] = '"Nessun metodo di pagamento Mollie ancora abilitato"'; -$_MODULE['"<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950"'] = '"Attivare i metodi di pagamento nel proprio account Mollie."'; -$_MODULE['"<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26"'] = '"Configurare"'; -$_MODULE['"<{mollie}prestashop>form_20d053df791cc72594d141b24276597f"'] = '"Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento."'; -$_MODULE['"<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a"'] = '"È sicuro?"'; -$_MODULE['"<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f"'] = '"È sicuro di voler rimborsare questo ordine?"'; -$_MODULE['"<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714"'] = '"Rimborso"'; -$_MODULE['"<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; -$_MODULE['"<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8"'] = '"Rimborsare ordine"'; -$_MODULE['"<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1"'] = '"Rimborsabile"'; -$_MODULE['"<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090"'] = '"Rimborso parziale"'; -$_MODULE['"<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a"'] = '"Importo non valido"'; -$_MODULE['"<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872"'] = '"Inserire un importo valido"'; -$_MODULE['"<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782"'] = '"Rimborso non riuscito"'; -$_MODULE['"<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f"'] = '"Informazioni sul pagamento"'; -$_MODULE['"<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008"'] = '"ID transazione"'; -$_MODULE['"<{mollie}prestashop>order_info_782678f4ba02feb3e9ecd51e902cd16b"'] = '"Cronologia dei rimborsi"'; -$_MODULE['"<{mollie}prestashop>order_info_c5b41ae59bd6585750f536615a6bc20b"'] = '"Non ci sono rimborsi"'; -$_MODULE['"<{mollie}prestashop>order_info_b718adec73e04ce3ec720dd11a06a308"'] = '"ID"'; -$_MODULE['"<{mollie}prestashop>order_info_44749712dbec183e983dcd78a7736c41"'] = '"Data"'; -$_MODULE['"<{mollie}prestashop>order_info_b2f40690858b404ed10e62bdf422c704"'] = '"Importo"'; -$_MODULE['"<{mollie}prestashop>order_info_53beb26d8bca00f56fbd295fdee83459"'] = '"Rimborsi"'; -$_MODULE['"<{mollie}prestashop>order_info_daef64964ee3b9b904f5d467586e217f"'] = '"Pagamenti"'; -$_MODULE['"<{mollie}prestashop>order_info_e25be354288565757726f3295e4f3ef9"'] = '"Importo attuale"'; -$_MODULE['"<{mollie}prestashop>order_info_068f80c7519d0528fb08e82137a72131"'] = '"Prodotti"'; -$_MODULE['"<{mollie}prestashop>order_info_ec53a8c4f07baed5d8825072c89799be"'] = '"Stato"'; -$_MODULE['"<{mollie}prestashop>order_info_747cf5c8587184b9e489ff897d97c20d"'] = '"Spedito"'; -$_MODULE['"<{mollie}prestashop>order_info_0e22fe7d45f8e5632a4abf369b24e29c"'] = '"Annullato"'; -$_MODULE['"<{mollie}prestashop>order_info_cc61945cbbf46721a053467c395c666f"'] = '"Rimborsato"'; -$_MODULE['"<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2"'] = '"Prezzo unitario"'; -$_MODULE['"<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459"'] = '"Importo IVA"'; -$_MODULE['"<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d"'] = '"Importo totale"'; -$_MODULE['"<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac"'] = '"Spedire"'; -$_MODULE['"<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd"'] = '"Rivedi spedizione"'; -$_MODULE['"<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67"'] = '"Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità'; -$_MODULE['"<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022"'] = '"Rivedi rimborso"'; -$_MODULE['"<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb"'] = '"Esaminare i prodotti inclusi nel rimborso. Se necessario'; -$_MODULE['"<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08"'] = '"Rivedi annullamento"'; -$_MODULE['"<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e"'] = '"Esaminare i prodotti inclusi nel annullamento. Se necessario'; -$_MODULE['"<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564"'] = '"OK"'; -$_MODULE['"<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164"'] = '"Spedire prodotti"'; -$_MODULE['"<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a"'] = '"Dettagli di tracciamento"'; -$_MODULE['"<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7"'] = '"Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente."'; -$_MODULE['"<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937"'] = '"Salta i dettagli di tracciamento"'; -$_MODULE['"<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d"'] = '"opzionale"'; -$_MODULE['"<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f"'] = '"Ad esempio FedEx"'; -$_MODULE['"<{mollie}prestashop>order_info_593ed3a37aa1a3ece4a4d796fb4e2e03"'] = '"Queste informazioni sono necessarie"'; -$_MODULE['"<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56"'] = '"Codice di tracciamento"'; -$_MODULE['"<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d"'] = '"URL"'; -$_MODULE['"<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb"'] = '"Vettore"'; -$_MODULE['"<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283"'] = '"Spedire tutto"'; -$_MODULE['"<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7"'] = '"Annulla tutto"'; -$_MODULE['"<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204"'] = '"Rimborsa tutto"'; -$_MODULE['"<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292"'] = '"Informazioni sulla transazione"'; -$_MODULE['"<{mollie}prestashop>order_info_61066fef1e8173dc711f55bbedb8839c"'] = '"Informazioni sul buono"'; -$_MODULE['"<{mollie}prestashop>order_info_1eefa98a18a384699fe611fbfd8ab0c9"'] = '"Non ci sono prodotti"'; -$_MODULE['"<{mollie}prestashop>order_info_a25c753ee3e4be15ec0daa5a40deb7b8"'] = '"Si è verificato un errore"'; -$_MODULE['"<{mollie}prestashop>order_info_2df3102f3fe061003dee820a72e1b1ed"'] = '"Non è stato possibile spedire"'; -$_MODULE['"<{mollie}prestashop>order_info_3efc29552025b4e68de04f415b0b8806"'] = '"Non è stato possibile rimborsare"'; -$_MODULE['"<{mollie}prestashop>order_info_468a92810b526750be9664461db6bf91"'] = '"Non è stato possibile annullare"'; -$_MODULE['"<{mollie}prestashop>order_info_2427b479f15af44582dc151ef95a90d0"'] = '"I rimborsi non sono attualmente disponibili"'; -$_MODULE['"<{mollie}prestashop>order_info_20c72bbfdf74d618a4b8a11100e864a0"'] = '"Il rimborso è stato effettuato con successo!"'; -$_MODULE['"<{mollie}prestashop>order_info_c7eb2a728623db5eedf0e12d21ffa604"'] = '"La spedizione è stata effettuata con successo!"'; -$_MODULE['"<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59"'] = '"L\'ordine è stato annullato con successo!"'; -$_MODULE['"<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8"'] = '"Metodo"'; -$_MODULE['"<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234"'] = '"Emittente"'; -$_MODULE['"<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6"'] = '"Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s."'; -$_MODULE['"<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84"'] = '"Selezionare uno stato d\'ordine per \"Stato per in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\"""."'; -$_MODULE['"<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea"'] = '"Utilizzare la carta salvata"'; -$_MODULE['"<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b"'] = '"Salvare la carta"'; -$_MODULE['"<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c"'] = '"Pagamenti sicuri forniti da"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507"'] = '"Inserire i dati della carta"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06"'] = '"Nome sulla carta"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79"'] = '"Numero di carta"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182"'] = '"Data di scadenza"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197"'] = '"CVC/CVV"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b"'] = '"Salvare la carta"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea"'] = '"Utilizzare la carta salvata"'; -$_MODULE['"<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c"'] = '"Pagamenti sicuri forniti da"'; -$_MODULE['"<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724"'] = '"Commissione di pagamento:"'; -$_MODULE['"<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9"'] = '"Scansione QR"'; -$_MODULE['"<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf"'] = '"Aprire l\'app Bancontact per scansionare il codice QR"'; -$_MODULE['"<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c"'] = '"O"'; -$_MODULE['"<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd"'] = '"Continuare senza codice QR"'; -$_MODULE['"<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; -$_MODULE['"<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97"'] = '"Commissione di pagamento"'; -$_MODULE['"<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9"'] = '"Torna al carrello"'; -$_MODULE['"<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da"'] = '"Pagamento"'; -$_MODULE['"<{mollie}prestashop>error_1e97d97a923eaddd810e056c828e99ea"'] = '"Errore di pagamento"'; -$_MODULE['"<{mollie}prestashop>error_a25c753ee3e4be15ec0daa5a40deb7b8"'] = '"Si è verificato un errore"'; -$_MODULE['"<{mollie}prestashop>error_47e1924c444fafe9fdfce444790f0ba9"'] = '"Torna al carrello"'; -$_MODULE['"<{mollie}prestashop>order_fail_28726b6ad52c9eae94be432666f93449"'] = '"L\'ordine è stato annullato"'; -$_MODULE['"<{mollie}prestashop>mollie_return_ebdf0f490b617d7efa3025d3625cec85"'] = '"Bentornato"'; -$_MODULE['"<{mollie}prestashop>mollie_return_300225ee958b6350abc51805dab83c24"'] = '"Continua gli acquisti"'; -$_MODULE['"<{mollie}prestashop>mollie_wait_bc0dd919f9a70dbb62f3f7afd68d6d68"'] = '"In attesa dello stato di pagamento"'; -$_MODULE['"<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b"'] = '"Mollie iDEAL QR"'; -$_MODULE['"<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85"'] = '"Bentornato"'; -$_MODULE['"<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572"'] = '"Il pagamento è stato annullato"'; -$_MODULE['"<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b"'] = '"Il pagamento è completo. Grazie per il suo ordine!"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0"'] = '"Prodotto:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c"'] = '"Quantità:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee"'] = '"Prezzo unitario:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa"'] = '"Totale:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c"'] = '"Stato dell\'abbonamento."'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8"'] = '"Data di inizio dell\'abbonamento:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd"'] = '"Prossima data di pagamento:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350"'] = '"Data di annullamento:"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d"'] = '"Dettagli dell\'ordine di abbonamento"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3"'] = '"Aggiornare il metodo di pagamento dell\'abbonamento"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b"'] = ' you can select it here."'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6"'] = '"Aggiornare"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112"'] = '"Annullare l\'abbonamento"'; -$_MODULE['"<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19"'] = '"Annullare"'; -$_MODULE['"<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; -$_MODULE['"<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be"'] = '"Abbonamenti"'; diff --git a/translation.csv b/translation.csv deleted file mode 100644 index 2b6cef704..000000000 --- a/translation.csv +++ /dev/null @@ -1,413 +0,0 @@ -"ID,IT","EN","IT","" -"<{mollie}prestashop>mollie_7c478959c218087ffc4ad5d96e7f66a6","Mollie","Mollie","" -"<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5","Mollie Payments","Pagamenti Mollie","" -"<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac","You're using an outdated PHP version. Upgrade your PHP version to use this module. The Mollie module supports versions PHP 7.2.0 and higher.","Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive.","" -"<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd","Unable to install module","Non è stato possibile installare il modulo","" -"<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2","Thank you. We received your payment.","Grazie. Abbiamo ricevuto il pagamento.","" -"<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5","AJAX","AJAX","" -"<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" -"<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7","Subscription FAQ","FAQ Abbonamenti","" -"<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237","Payment link","Link di pagamento","" -"<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968","The module upload requires an extra refresh. Please upload the Mollie module ZIP file once again. If you still get this error message after attempting another upload, please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com","Il caricamento del modulo richiede un ulteriore aggiornamento. La preghiamo di caricare nuovamente il file ZIP del modulo Mollie. Se continua a ricevere questo messaggio di errore dopo aver tentato un altro caricamento, può contattare il supporto Mollie con questo screenshot e le guideranno attraverso i prossimi passaggi: info@mollie.com","" -"<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27","Payment error:","Errore di pagamento:","" -"<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57","Customer must be logged in to buy subscription item.","Il cliente deve aver effettuato il login per acquistare l'elemento in abbonamento.","" -"<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c","You can't remove address associated with subscription","Non è possibile rimuovere l'indirizzo associato all'abbonamento","" -"<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252","Subscription creation","Creazione di abbonamento","" -"<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304","To create a subscription option for a product variation, assign it a Mollie subscription attribute.","Per creare un'opzione di abbonamento per una variazione di prodotto, assegnale un attributo di abbonamento Mollie.","" -"<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83","IMPORTANT points","Punti IMPORTANTI","" -"<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf","When you add Mollie subscription attributes, make sure you always include 'none' as a fallback.","Quando aggiunge gli attributi di abbonamento di Mollie, si assicuri di includere sempre 'nessuna' come opzione di riserva.","" -"<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621","IMPORTANT subscription carrier points","Punti IMPORTANTI sul vettore per l'abbonamento ","" -"<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f","Make sure to select default carrier for recurring orders in advanced settings.","Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate.","" -"<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736","Carrier should cover all supported shop regions.","Il vettore dovrebbe coprire tutte le regioni supportate dal negozio.","" -"<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f","Carrier cannot be changed after first subscription order is placed.","Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento.","" -"<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5","Selected carrier pricing/weight settings or carrier selection in Mollie should not change. If they do, subscription orders must be cancelled and carrier re-selected in module settings.","Le impostazioni di prezzo/peso del vettore selezionato o la selezione del vettore in Mollie non dovrebbero cambiare. Se ciò dovesse accadere, gli ordini in abbonamento devono essere annullati e il vettore deve essere nuovamente selezionato nelle impostazioni del modulo.","" -"<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb","Cart rules","Regole del carrello","" -"<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc","Do not use cart rules with subscription products as this will cause errors due to incorrect pricing.","Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati.","" -"<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f","Gift wrapping","Confezioni regalo","" -"<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc","Gift wrapping feature is not supported for subscription orders.","La funzione di confezione regalo non è supportata per gli ordini in abbonamento.","" -"<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1","Recurring order creation","Creazione di ordini ricorrenti","" -"<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6","Mollie for Prestashop automatically creates a new order when the previous order is paid for.","Mollie for Prestashop crea automaticamente un nuovo ordine quando l'ordine precedente viene pagato.","" -"<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4","Recurring orders always use the product price that was specified when the related subscription was created.","Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento.","" -"<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1","Recurring order will override the ?Method? payment setting and will be using Mollie?s Payment API.","L'ordine ricorrente sovrascriverà l'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie.","" -"<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4","Select the shop that you want to configure","Selezionare il negozio che desidera configurare","" -"<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88","Failed to save options. Try again or contact support.","Impossibile salvare le opzioni. Riprovare o contattare l'assistenza.","" -"<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf","Options saved successfully.","Opzioni salvate con successo.","" -"<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06","Carrier not found","Vettore non trovato","" -"<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95","Successfully canceled","Annullato con successo","" -"<{mollie}prestashop>subscriptioncontroller_0e1248f1d840e05ee74190cb30e23c51","Failed to cancel subscription","Non è stato possibile annullare l'abbonamento","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_b718adec73e04ce3ec720dd11a06a308","ID","ID","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_9bf79c7f10eadd0b612b8c354ad19bdc","Subscription ID","ID abbonamento","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_d37c2bf1bd3143847fca087b354f920e","Customer ID","ID cliente","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_f11b368cddfe37c47af9b9d91c6ba4f0","Full name","Nome e cognome","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_b5a7adde1af5c87d7fd797b6245c2a39","Description","Descrizione","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_ec53a8c4f07baed5d8825072c89799be","Status","Stato","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399","Total price","Prezzo totale","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c","Currency","Valuta","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa","Actions","Azioni","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" -"<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76","Cancel selected subscription?","Annullare l'abbonamento selezionato?","" -"<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962","Choose your carrier","Selezionare il suo vettore","" -"<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205","Failed to add attributes","Non è stato possibile aggiungere gli attributi","" -"<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf","Failed to delete attributes","Non è stato possibile cancellare degli attributi","" -"<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d","Resource conflict","Conflitto di risorse","" -"<{mollie}prestashop>abstractmolliecontroller_8f8913c1f755436db84ae169e37c61f9","Internal error","Errore interno","" -"<{mollie}prestashop>formbuilder_c9cc8cce247e49bae79f15173ce97354","Save","Salva","" -"<{mollie}prestashop>formbuilder_0ba29c6a1afacf586b03a26162c72274","Environment","Ambiente","" -"<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b","Test","Test","" -"<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0","Live","Live","" -"<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd","API Key Test","Test della chiave API","" -"<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e","Go to your [1]Mollie account[/1] to get your API keys. They start with test and live.","Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live.","" -"<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a","Live API key","Chiave API live","" -"<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c","Test API key","Chiave API di test","" -"<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19","Do you already have a Mollie account?","Ha già un account Mollie?","" -"<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32","Enabled","Abilitato","" -"<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241","Disabled","Disabilitato","" -"<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6","You can find your API key in your [1]Mollie Profile[/1]","Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]","" -"<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded","API Key Live","Chiave API Live","" -"<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9","Use Mollie Components for credit cards","Utilizza Mollie Components per le carte di credito","" -"<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57","Read more about [1]Mollie Components[/1] and how it improves your conversion.","Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione.","" -"<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b","Read more about Mollie Components and how it improves your conversion","Leggere di più su Mollie Components e come migliorano la conversione","" -"<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5","Use one-click payments for credit cards","Utilizzare pagamenti con un solo clic per le carte di credito","" -"<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0","Read more about [1]Single Click Payments[/1] and how it improves your conversion.","Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione.","" -"<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae","Payment methods","Metodi di pagamento","" -"<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49","[1]Read more[/1] about the differences between Payments and Orders API.","[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API.","" -"<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269","Only available with your Live API key and Payments API. [1]Learn more[/1] about QR Codes.","Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR.","" -"<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f","Use selected locale in webshop","Usa il locale selezionato nel webshop","" -"<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6","Activate to use your shop's [1]locale[/1]. Otherwise, your shop uses the browser's locale. ","Attivare per utilizzare il [1]locale del negozio[/1]. Altrimenti, il negozio utilizza il locale del browser.","" -"<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f","Use webshop locale","Utilizza il locale del webshop","" -"<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419","Use browser locale","Utilizza il locale del browser","" -"<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135","Send order confirmation email","Invia l'e-mail di conferma dell'ordine","" -"<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb","When the order is paid","Quando l'ordine viene pagato","" -"<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c","Never","Mai","" -"<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844","Select when to create the Order invoice","Selezionare quando creare la fattura dell'Ordine","" -"<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67","Default","Predefinito","" -"<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3","Authorised","Autorizzato","" -"<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d","Shipped","Spedito","" -"<{mollie}prestashop>formbuilder_7c4e7ada50c8572336f872fced4d1852","Status for %s payments","Stato per i pagamenti %s","" -"<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2","`%s` payments get `%s` status","I pagamenti di `%s` ottengono lo stato di `%s`.","" -"<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039","Send email when %s","Invia un'e-mail a %s","" -"<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c","Send email when transaction status becomes %s?, self::FILE_NAME","Invia un'e-mail quando lo stato della transazione diventa %s?, self::FILE_NAME","" -"<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605","Skip this status","Saltare questo stato","" -"<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2","Order statuses","Stati dell'ordine","" -"<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983","Visual settings","Impostazioni visive","" -"<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157","Images","Immagini","" -"<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219","Show big, normal, or no payment method logos on checkout.","Mostra loghi dei metodi di pagamento grandi, normali o nessun logo al momento del checkout.","" -"<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0","Hide","Nascondere","" -"<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0","Normal","Normale","" -"<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3","Big","Grande","" -"<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5","CSS file","File CSS","" -"<{mollie}prestashop>formbuilder_13efb943fd692917410355eb926d24a2","Leave empty for the default stylesheet. Include the file path when applying custom CSS. You can use [1]{BASE}[/1], [1]{THEME}[/1], [1]{CSS}[/1], [1]{MOBILE}[/1], [1]{MOBILE_CSS}[/1], and [1]{OVERRIDE}[/1] for easy folder mapping.","Lasciare vuoto per il foglio di stile predefinito. Includere il percorso del file quando si applica un CSS personalizzato. È possibile utilizzare [1]{BASE}[/1], [1]{THEME}[/1], [1]{CSS}[/1], [1]{MOBILE}[/1], [1]{MOBILE_CSS}[/1] e [1]{OVERRIDE}[/1] per facilitare la mappatura delle cartelle.","" -"<{mollie}prestashop>formbuilder_1191f888f0cc23f95aa77aacb094503b","Shipment information","Informazioni sulla spedizione","" -"<{mollie}prestashop>formbuilder_2526a2ff1547e6fe751081693d8631af","Automatically ship on marked statuses","Spedisci automaticamente sugli stati contrassegnati","" -"<{mollie}prestashop>formbuilder_006a37d93d3c3fb1b097dcf477f84a99","Enable to automatically send shipment information when an order gets a marked status.","Abilita per inviare automaticamente le informazioni sulla spedizione quando un ordine ottiene uno stato contrassegnato.","" -"<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4","Automatically ship when one of these statuses is reached","Spedisci automaticamente quando uno di questi stati è raggiunto","" -"<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988","If an order reaches one of these statuses, the module automatically sends shipment information","Se un ordine raggiunge uno di questi stati, il modulo invia automaticamente le informazioni sulla spedizione.","" -"<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d","Show","Mostra","" -"<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8","Disable this status","Disattivare questo stato","" -"<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797","Debug level","Livello di debug","" -"<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91","Display errors","Mostra errori","" -"<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9","Enable to display full error messages in the webshop. Only use this for debugging.","Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging.","" -"<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d","Log level","Livello di log","" -"<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62","Recommended level: Errors. Set to Everything to monitor incoming webhook requests. [1]View logs.[/1]","Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]","" -"<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5","Nothing","Nessuno","" -"<{mollie}prestashop>formbuilder_5ef0c737746fae2ca90e66c39333f8f6","Errors","Errori","" -"<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c","Everything","Tutto","" -"<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed","General settings","Impostazioni generali","" -"<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998","Advanced settings","Impostazioni avanzate","" -"<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680","All","Tutti","" -"<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65","No carrier","Nessun vettore","" -"<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81","New voucher for your order %s","Nuovo buono per il suo ordine %s","" -"<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546","An error occurred while initializing your payment. Please contact our customer support.","Si è verificato un errore durante l'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti.","" -"<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885","It looks like you have entered incorrect phone number format in billing address step. Please change the number and try again.","Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare.","" -"<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f","It looks like you have entered incorrect phone number format in shipping address step. Please change the number and try again.","Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare.","" -"<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5","Chosen payment option is unavailable for your order total amount. Please consider using other payment option and try again.","L'opzione di pagamento scelta non è disponibile per l'importo totale del suo ordine. La preghiamo di considerare un'altra opzione di pagamento e riprovare.","" -"<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef","Shipment information cannot be sent. Order reference (%s) has no shipping information.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) non contiene informazioni di spedizione.","" -"<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870","Shipment information cannot be sent. Order reference (%s) has no payment information.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) non contiene informazioni di pagamento.","" -"<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d","Shipment information cannot be sent. Order reference (%s) is a regular payment.","Le informazioni sulla spedizione non possono essere inviate. L'ordine di riferimento (%s) è un pagamento regolare.","" -"<{mollie}prestashop>exceptionservice_90d4e1683d6b1745120d0a254d58e4ea","Unknown exception in Mollie","Eccezione sconosciuta in Mollie","" -"<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b","The API key needs to start with test or live.","La chiave API deve iniziare con test o live.","" -"<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45","Wrong API Key!","Chiave API sbagliata!","" -"<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab","Something went wrong. Couldn't save your payment methods","Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento","" -"<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04","Grant permissions for the folder or visit [1]ApplePay[/1] to see how it can be added manually","Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente.","" -"<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408","There are issues with your authorizable payment statuses, please try resetting Mollie module.","Ci sono problemi con i suoi stati di pagamento autorizzabili, la preghiamo di provare a reimpostare il modulo Mollie.","" -"<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f","The configuration has been saved!","La configurazione è stata salvata!","" -"<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df","The order could not be refunded!","L'ordine non poteva essere rimborsato!","" -"<{mollie}prestashop>refundservice_ccb168b5a6a86eb100dc2dee754a316b","Reason:","Motivo:","" -"<{mollie}prestashop>refundservice_e12682d2e0650f2783b22d956d2b947a","The order has been refunded!","L'ordine è stato rimborsato!","" -"<{mollie}prestashop>refundservice_88928f236ceccc4c2e0f2eb643d85341","Mollie will transfer the amount back to the customer on the next business day.","Mollie trasferirà l'importo al cliente il giorno lavorativo successivo.","" -"<{mollie}prestashop>refundservice_65718b7293759bcf2ca7257aba3d3179","The product(s) could not be refunded!","Non è stato possibile rimborsare i prodotti!","" -"<{mollie}prestashop>languageservice_e0010a0a1a3259ab5c06a19bad532851","Paid","Pagato","" -"<{mollie}prestashop>languageservice_07ca5050e697392c9ed47e6453f1453f","Completed","Completato","" -"<{mollie}prestashop>languageservice_a206428462686af481cb072b8db11784","Authorized","Autorizzato","" -"<{mollie}prestashop>languageservice_0e22fe7d45f8e5632a4abf369b24e29c","Canceled","Annullato","" -"<{mollie}prestashop>languageservice_24fe48030f7d3097d5882535b04c3fa8","Expired","Scaduto","" -"<{mollie}prestashop>languageservice_cc61945cbbf46721a053467c395c666f","Refunded","Rimborsato","" -"<{mollie}prestashop>languageservice_c3bf447eabe632720a3aa1a7ce401274","Open","Aperto","" -"<{mollie}prestashop>languageservice_c7bece6685d4556fcb8dfdcd72d720f5","Awaiting","In attesa","" -"<{mollie}prestashop>languageservice_9f004157e4c148dac71da3ae5906351f","Partially refunded","Parzialmente rimborsato","" -"<{mollie}prestashop>languageservice_a7b2273fe3a1293885769855e2f3e6ba","Chargeback","Chargeback","" -"<{mollie}prestashop>languageservice_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" -"<{mollie}prestashop>languageservice_ea9cf7e47ff33b2be14e6dd07cbcefc6","Shipping","Spedizione","" -"<{mollie}prestashop>languageservice_484f5a79672cebe198ebdde45a1d672f","Gift wrapping","Confezioni regalo","" -"<{mollie}prestashop>languageservice_e2b7dec8fa4b498156dfee6e4c84b156","This payment method is not available.","Questo metodo di pagamento non è disponibile.","" -"<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c","The product(s) could not be canceled!","Non è stato possibile annullare i prodotti!","" -"<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd","The product(s) could not be shipped!","Non è stato possibile spedire i prodotti!","" -"<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1","Failed to created second chance email!","Non è stato possibile creare l'email di seconda possibilità!","" -"<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2","Failed to create second chance email - API error","Non è stato possibile creare un'e-mail di seconda possibilità - errore API","" -"<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d","Failed to send second chance email! Order is already paid!","Non è stato possibile inviare l'e-mail di seconda possibilità! L'ordine è già stato pagato!","" -"<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7","Second chance email was successfully send!","L'e-mail di seconda possibilità è stata inviata con successo!","" -"<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e","Failed to send second chance email! Order is already paid or expired!","Non è stato possibile inviare l'e-mail di seconda possibilità! L'ordine è già stato pagato o è scaduto!","" -"<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18","You will resend email with payment link to the customer","Invierà nuovamente un'email con il link di pagamento al cliente","" -"<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305","Warning: Could not retrieve update xml file from github.","Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github.","" -"<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8","Warning: Update xml file from github follows an unexpected format.","Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato.","" -"<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" -"<{mollie}prestashop>bancontactpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" -"<{mollie}prestashop>creditcardpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" -"<{mollie}prestashop>creditcardsingleclickpaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" -"<{mollie}prestashop>basepaymentoptionprovider_0b135af05e690cf2fca288a143759716","Payment Fee: %1s","Commissione di pagamento: %1s","" -"<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2","Failed to create mollie transaction.","Non è stato possibile creare una transazione Mollie.","" -"<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e","Couldn't find order by cart.","Non è stato possibile trovare l'ordine corrispondente al carrello.","" -"<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a","Unable to install Mollie statuses","Non è stato possibile installare gli stati di Mollie","" -"<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f","Unable to install config","Non è stato possibile installare la configurazione","" -"<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8","Unable to install default carrier statuses","Non è stato possibile installare gli stati predefiniti del vettore","" -"<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b","Unable to install voucher attributes","Non è stato possibile installare gli attributi del voucher","" -"<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c","Could not copy email templates:","Non è stato possibile copiare i modelli di e-mail:","" -"<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6","Failed to create dir for apple pay direct certificate","Non è stato possibile creare una directory per il certificato apple pay direct","" -"<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6","Can't create folder because of missing write permissions: ","Non è stato possibile creare una cartella perché mancano i permessi di scrittura:","" -"<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5","Failed to copy apple pay direct certificate","Non è stato possibile copiare il certificato apple pay direct","" -"<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415","Upload a .jpg or .png file.","Caricare un file .jpg o .png.","" -"<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e","Something went wrong when uploading your logo.","Si è verificato un errore durante il caricamento del logo.","" -"<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160","No fee was submitted.","Nessuna commissione è stata inviata.","" -"<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12","Invalid fee","Commissione non valida","" -"<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a","Missing tax rules group ID","ID gruppo regole fiscali mancante","" -"<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e","Please upgrade Mollie module","Aggiornare il modulo Mollie","" -"<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4","Select the shop that you want to configure","Selezionare il negozio che si desidera configurare","" -"<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84","Select an order status for \"Status for Awaiting payments\""" in the \"""Advanced settings\""" tab""","Selezionare lo stato dell'ordine per \"Stato in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\""".","" -"<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec","Enter a description","Inserire una descrizione","" -"<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd","You have entered incorrect min amount","L'importo minimo inserito non è corretto","" -"<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0","You have entered incorrect max amount","L'importo massimo inserito non è corretto","" -"<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5","Upload an image %s%x%s1%","Caricare un'immagine %s%x%s1%","" -"<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc","Invalid file: %s%","File non valido: %s%","" -"<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a","The database tables are missing. Reset the module.","Le tabelle del database sono mancanti. Reimpostare il modulo.","" -"<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17","Total","Totale","" -"<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d","Total (tax incl.)","Totale (tasse incluse)","" -"<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea","Total (tax excl.)","Totale (tasse escluse)","" -"<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836","Please note: Only one subscription product can be added to the cart at a time.","Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta.","" -"<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645","Subscription service is disabled. Please change the attribute to Subscription: none.","Il servizio di abbonamento è disattivato. Modificare l'attributo a Abbonamento: nessuno.","" -"<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179","Unknown error. Try again or change the attribute to Subscription: none.","Errore sconosciuto. Riprovare o modificare l'attributo a Abbonamento: nessuno.","" -"<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac","Error: token invalid.","Errore: token non valido.","" -"<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe","Failed to get new payment method. ","Non è stato possibile ottenere il nuovo metodo di pagamento.","" -"<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8","Failed to get recurring order.","Non è stato possibile ottenere un ordine ricorrente.","" -"<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd","Successfully canceled subscription.","L'abbonamento è stato annullato con successo.","" -"<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f","An error occurred when creating your payment. Contact customer support.","Si è verificato un errore durante la creazione del pagamento. Contattare l'assistenza clienti.","" -"<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067","Failed to save order information.","Non è stato possibile salvare le informazioni dell'ordine.","" -"<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e","There is no order with this ID.","Non esiste un ordine con questo ID.","" -"<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d","The payment is still being processed. You'll be notified when the bank or merchant confirms the payment./merchant.","Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante.","" -"<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227","You're not authorised to see this page.","Non è autorizzato a visualizzare questa pagina.","" -"<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf","Your payment was not successful. Try again.","Il pagamento non è andato a buon fine. La preghiamo di riprovare.","" -"<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0","The payment failed because the order and payment amounts are different. Try again.","Il pagamento non è riuscito perché gli importi dell'ordine e del pagamento sono diversi. La preghiamo di riprovare.","" -"<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7","We have not received a definite payment status. You will be notified as soon as we receive a confirmation of the bank/merchant.","Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante.","" -"<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7","Test API key: Failed! Key must start with test_.","Test chiave API: Fallito! La chiave deve iniziare con test_.","" -"<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847","Test API key: Successful!","Test chiave API: Riuscito!","" -"<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180","Enabled Methods:","Metodi abilitati:","" -"<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7","Test API key: Failed! Key does not exist.","Test chiave API: Fallito! La chiave non esiste.","" -"<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e","Live API key: Failed! Key must start with live_.","Chiave API live: Fallita! La chiave deve iniziare con live_.","" -"<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61","Live API key: Successful!","Chiave API live: Riuscito!","" -"<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439","Live API key: Failed! Key does not exist.","Chiave API live: Fallita! La chiave non esiste.","" -"<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844","Select when to create the Order invoice","Selezionare quando creare la fattura dell'Ordine","" -"<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34","Default: The invoice is created based on Order settings > Statuses. There is no custom status created.","Predefinito: La fattura viene creata in base alle Impostazioni dell'ordine > Stati. Non viene creato uno stato personalizzato.","" -"<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb","Authorised: Create a full invoice when the order is authorized. Custom status is created.","Autorizzato: Crea una fattura completa quando l'ordine è autorizzato. Viene creato uno stato personalizzato.","" -"<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d","On Shipment: Create a full invoice when the order is shipped. Custom status is created.","Alla spedizione: Crea una fattura completa quando l'ordine viene spedito. Viene creato uno stato personalizzato.","" -"<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" -"<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9","Send a payment email to the customer. (Will be sent after creating the order)","Inviare un'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell'ordine)","" -"<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99","You are currently using version %s of this module. The latest version is %s.","Sta attualmente utilizzando la versione %s di questo modulo. L'ultima versione è %s.","" -"<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8","[1]Update[/1] the module to enjoy the latest features.","[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità.","" -"<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad","Click here","Clicca qui","" -"<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884","to create an account","per creare un account","" -"<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f","Developed by Invertus","Sviluppato da Invertus","" -"<{mollie}prestashop>form_1c04b154909c88cfc62b3362c88445af"," - the most technically advanced agency in the PrestaShop ecosystem.","- l'agenzia più avanzata tecnicamente dell'ecosistema PrestaShop.","" -"<{mollie}prestashop>form_0f13aa29b5bc9e8a1b6597dc5987ea46","Go to Mollie help centre","Vai al centro di assistenza Mollie","" -"<{mollie}prestashop>form_1c2e79c1715dbe3f3208a7991abc50f0","Contact Mollie","Contatta Mollie","" -"<{mollie}prestashop>form_2d059d2c499450d4e083d28f5f47f63d","Contact Invertus","Contatta Invertus","" -"<{mollie}prestashop>form_00d23a76e43b46dae9ec7aa9dcbebb32","Enabled","Abilitato","" -"<{mollie}prestashop>form_bafd7322c6e97d25b6299b5d6fe8920b","No","No","" -"<{mollie}prestashop>form_93cba07454f06a4a960172bbd6e2a435","Yes","Sì","" -"<{mollie}prestashop>form_b61254f89b6f2ef061fb628f04a93fe8","Apple Pay Direct product page ","Pagina del prodotto Apple Pay Direct","" -"<{mollie}prestashop>form_9fa70bd7cc082c6eafd9f6c04782de2c","Apple Pay Direct cart page ","Pagina del carrello Apple Pay Direct","" -"<{mollie}prestashop>form_020f1a50a78b13a12f304d64dda57020","Apple Pay Direct button style","Stile del pulsante Apple Pay Direct","" -"<{mollie}prestashop>form_9c12f952ca3695bb3043ddcc0ceaaf80","QR code","Codice QR","" -"<{mollie}prestashop>form_b78a3223503896721cca1303f776159b","Title","Titolo","" -"<{mollie}prestashop>form_4c3880bb027f159e801041b1021e88e8","Method","Metodo","" -"<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4","Payments API","Payments API","" -"<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51","Orders API","Orders API","" -"<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1","Transaction description","Descrizione della transazione","" -"<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29","Use any of the following variables to create a transaction description for payments that use this method:","Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:","" -"<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d","Accept payments from:","Accettare pagamenti da:","" -"<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee","All countries","Tutti i paesi","" -"<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce","Selected countries","Paesi selezionati","" -"<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc","Accept payments from specific countries:","Accettare pagamenti da paesi specifici:","" -"<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a","Exclude payments from specific countries:","Escludere i pagamenti da specifici paesi:","" -"<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" -"<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45","No fee","Nessuna commissione","" -"<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543","Fixed fee","Commissione fissa","" -"<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c","Percentage","Percentuale","" -"<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085","Combined payment surcharge limit","Limite combinato per supplemento di pagamento","" -"<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f","Add \"(payment_fee}\""" in email translations to display it in your email template. For more information","Aggiungere \"(payment_fee}}"" nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni","" -"<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409","Translations","Traduzioni","" -"<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4","Include taxes in the total payment fee","Includere le tasse nella commissione totale del pagamento","" -"<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81","Fixed fee (tax incl)","Commissione fissa (tasse incluse)","" -"<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c","Fixed fee (tax excl)","Commissione fissa (tasse escluse)","" -"<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc","Tax rules group for fixed fee","Gruppo regole fiscali per commissione fissa","" -"<{mollie}prestashop>form_e457ab8b899c330b05e1bbe6539a50df","Percentage fee","Quota percentuale","" -"<{mollie}prestashop>form_a1eeaac9cc0281aa432a7503fd79c340","Maximum fee","Commissione massima","" -"<{mollie}prestashop>form_80a2645c681d607705f5baab7cf7d2cb","Min amount","Importo minimo","" -"<{mollie}prestashop>form_a14ecf18ea57e0ae5ebcd930102d7cbd","Default min amount in mollie is:","L'importo minimo predefinito in Mollie è:","" -"<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7","Max amount","Importo massimo","" -"<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6","Default max amount has no limitation","L'importo massimo predefinito non ha limitazioni","" -"<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9","Default max amount in mollie is:","L'importo massimo predefinito in Mollie è:","" -"<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a","Use custom logo","Utilizzare un logo personalizzato","" -"<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f","Upload custom logo","Caricare un logo personalizzato","" -"<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7","Add file","Aggiungere file","" -"<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571","Use a .png or .jpg file of up to 256x64 pixels","Utilizzare un file .png o .jpg fino a 256x64 pixel.","" -"<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7","Your custom logo","Il suo logo personalizzato","" -"<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873","Category","Categoria","" -"<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754","None","Nessuno","" -"<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789","meal","pasto","" -"<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e","gift","regalo","" -"<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45","eco","eco","" -"<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446","Select a category to use for all products in your webshop.","Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop.","" -"<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae","Configure the shipment information to send to Mollie","Configurare le informazioni sulla spedizione da inviare a Mollie","" -"<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb","You can use the following variables for the carrier URLs","Può utilizzare le seguenti variabili per gli URL del vettore","" -"<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26","Shipping number","Numero di spedizione","" -"<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d","Billing country code","Codice paese di fatturazione","" -"<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f","Billing postcode","Codice postale di fatturazione","" -"<{mollie}prestashop>form_0d12e3c554976ad1f76c5db2b6c127ad","Shipping country code","Codice del paese di spedizione","" -"<{mollie}prestashop>form_c824a8b18f09dc7e58bacf446be6735c","Shipping postcode","Codice postale di spedizione","" -"<{mollie}prestashop>form_0a867177f4a701a9f33de5ab21c42593","2-letter language code","Codice lingua a 2 lettere","" -"<{mollie}prestashop>form_49ee3087348e8d44e1feda1917443987","Name","Nome","" -"<{mollie}prestashop>form_cefb9190a0a2b3301f3e4d44ad14e6c0","URL source","Fonte URL","" -"<{mollie}prestashop>form_812a48ba719daeda82e4da8e812d426c","Custom URL","URL personalizzato","" -"<{mollie}prestashop>form_962b59a5f12eabd9c05f11b5f0aada85","Do not automatically ship","Non spedire automaticamente","" -"<{mollie}prestashop>form_703490ffd308d337cd5aac50567e9670","No tracking information","Nessuna informazione sulla tracciabilità","" -"<{mollie}prestashop>form_de28ef21a06f3978c05f3d808b15eaab","Carrier URL","URL del vettore","" -"<{mollie}prestashop>form_e55f75a29310d7b60f7ac1d390c8ae42","Module","Modulo","" -"<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a","This option is not required for the currently selected API","Questa opzione non è necessaria per l'API attualmente selezionato.","" -"<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828","This option is not required for the selected API","Questa opzione non è necessaria per l'API selezionata","" -"<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d","Show","Mostra","" -"<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0","Hide","Nascondere","" -"<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5","No Mollie payment methods enabled yet","Nessun metodo di pagamento Mollie ancora abilitato","" -"<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950","Enable payment methods in your Mollie account.","Attivare i metodi di pagamento nel proprio account Mollie.","" -"<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26","Configure","Configurare","" -"<{mollie}prestashop>form_20d053df791cc72594d141b24276597f","Scroll down and save the changes you made to your environment or API keys before configuring your payment methods.","Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento.","" -"<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a","Are you sure?","È sicuro?","" -"<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f","Are you sure you want to refund this order?","È sicuro di voler rimborsare questo ordine?","" -"<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714","Refund","Rimborso","" -"<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" -"<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8","Refund order","Rimborsare ordine","" -"<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1","Refundable","Rimborsabile","" -"<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090","Partial refund","Rimborso parziale","" -"<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a","Invalid amount","Importo non valido","" -"<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872","Enter a valid amount","Inserire un importo valido","" -"<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782","Refund failed","Rimborso non riuscito","" -"<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f","Payment info","Informazioni sul pagamento","" -"<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008","Transaction ID","ID transazione","" -"<{mollie}prestashop>order_info_782678f4ba02feb3e9ecd51e902cd16b","Refund history","Cronologia dei rimborsi","" -"<{mollie}prestashop>order_info_c5b41ae59bd6585750f536615a6bc20b","There are no refunds","Non ci sono rimborsi","" -"<{mollie}prestashop>order_info_b718adec73e04ce3ec720dd11a06a308","ID","ID","" -"<{mollie}prestashop>order_info_44749712dbec183e983dcd78a7736c41","Date","Data","" -"<{mollie}prestashop>order_info_b2f40690858b404ed10e62bdf422c704","Amount","Importo","" -"<{mollie}prestashop>order_info_53beb26d8bca00f56fbd295fdee83459","Refunds","Rimborsi","" -"<{mollie}prestashop>order_info_daef64964ee3b9b904f5d467586e217f","Payments","Pagamenti","" -"<{mollie}prestashop>order_info_e25be354288565757726f3295e4f3ef9","Current amount","Importo attuale","" -"<{mollie}prestashop>order_info_068f80c7519d0528fb08e82137a72131","Products","Prodotti","" -"<{mollie}prestashop>order_info_ec53a8c4f07baed5d8825072c89799be","Status","Stato","" -"<{mollie}prestashop>order_info_747cf5c8587184b9e489ff897d97c20d","Shipped","Spedito","" -"<{mollie}prestashop>order_info_0e22fe7d45f8e5632a4abf369b24e29c","Canceled","Annullato","" -"<{mollie}prestashop>order_info_cc61945cbbf46721a053467c395c666f","Refunded","Rimborsato","" -"<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2","Unit price","Prezzo unitario","" -"<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459","VAT amount","Importo IVA","" -"<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d","Total amount","Importo totale","" -"<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac","Ship","Spedire","" -"<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd","Review shipment","Rivedi spedizione","" -"<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67","Review the products included in the shipment. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità, se necessario.","" -"<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022","Review refund","Rivedi rimborso","" -"<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb","Review the products included in the refund. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nel rimborso. Se necessario, è possibile rimuovere gli articoli o modificare la quantità.","" -"<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08","Review cancellation","Rivedi annullamento","" -"<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e","Review the products included in the cancellation. You can remove items or change the quantity if needed.","Esaminare i prodotti inclusi nel annullamento. Se necessario, è possibile rimuovere gli articoli o modificare la quantità.","" -"<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564","OK","OK","" -"<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164","Ship products","Spedire prodotti","" -"<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a","Tracking details","Dettagli di tracciamento","" -"<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7","Add tracking information to record that you shipped products to your customer.","Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente.","" -"<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937","Skip tracking details","Salta i dettagli di tracciamento","" -"<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d","optional","opzionale","" -"<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f","E.g. FedEx","Ad esempio FedEx","" -"<{mollie}prestashop>order_info_593ed3a37aa1a3ece4a4d796fb4e2e03","This information is required","Queste informazioni sono necessarie","" -"<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56","Tracking code","Codice di tracciamento","" -"<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d","URL","URL","" -"<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb","Carrier","Vettore","" -"<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283","Ship all","Spedire tutto","" -"<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7","Cancel all","Annulla tutto","" -"<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204","Refund all","Rimborsa tutto","" -"<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292","Transaction info","Informazioni sulla transazione","" -"<{mollie}prestashop>order_info_61066fef1e8173dc711f55bbedb8839c","Voucher info","Informazioni sul buono","" -"<{mollie}prestashop>order_info_1eefa98a18a384699fe611fbfd8ab0c9","There are no products","Non ci sono prodotti","" -"<{mollie}prestashop>order_info_a25c753ee3e4be15ec0daa5a40deb7b8","An error occurred","Si è verificato un errore","" -"<{mollie}prestashop>order_info_2df3102f3fe061003dee820a72e1b1ed","Unable to ship","Non è stato possibile spedire","" -"<{mollie}prestashop>order_info_3efc29552025b4e68de04f415b0b8806","Unable to refund","Non è stato possibile rimborsare","" -"<{mollie}prestashop>order_info_468a92810b526750be9664461db6bf91","Unable to cancel","Non è stato possibile annullare","" -"<{mollie}prestashop>order_info_2427b479f15af44582dc151ef95a90d0","Refunds are currently unavailable","I rimborsi non sono attualmente disponibili","" -"<{mollie}prestashop>order_info_20c72bbfdf74d618a4b8a11100e864a0","Refund was made successfully!","Il rimborso è stato effettuato con successo!","" -"<{mollie}prestashop>order_info_c7eb2a728623db5eedf0e12d21ffa604","Shipment was made successfully!","La spedizione è stata effettuata con successo!","" -"<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59","Order was canceled successfully!","L'ordine è stato annullato con successo!","" -"<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8","Method","Metodo","" -"<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234","Issuer","Emittente","" -"<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6","This order was (partially) paid for with a voucher. You can refund a maximum of %1s.","Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s.","" -"<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84","Select an order status for \"Status for Awaiting payments\""" in the \"""Advanced settings\""" tab""","Selezionare uno stato d'ordine per \"Stato per in attesa di pagamento\""" nella scheda \"""Impostazioni avanzate\""".","" -"<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea","Use saved card","Utilizzare la carta salvata","" -"<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b","Save card","Salvare la carta","" -"<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c","Secure payments provided by","Pagamenti sicuri forniti da","" -"<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507","Enter your card information","Inserire i dati della carta","" -"<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06","Name on card","Nome sulla carta","" -"<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79","Card number","Numero di carta","" -"<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182","Expiry date","Data di scadenza","" -"<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197","CVC/CVV","CVC/CVV","" -"<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b","Save card","Salvare la carta","" -"<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea","Use saved card","Utilizzare la carta salvata","" -"<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c","Secure payments provided by","Pagamenti sicuri forniti da","" -"<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724","Payment Fee:","Commissione di pagamento:","" -"<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9","Scan QR","Scansione QR","" -"<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf","Open your Bancontact app to scan the QR code","Aprire l'app Bancontact per scansionare il codice QR","" -"<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c","Or","O","" -"<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd","Continue without QR code","Continuare senza codice QR","" -"<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" -"<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97","Payment fee","Commissione di pagamento","" -"<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9","Back to your shopping cart","Torna al carrello","" -"<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da","Payment","Pagamento","" -"<{mollie}prestashop>error_1e97d97a923eaddd810e056c828e99ea","Payment error","Errore di pagamento","" -"<{mollie}prestashop>error_a25c753ee3e4be15ec0daa5a40deb7b8","An error occurred","Si è verificato un errore","" -"<{mollie}prestashop>error_47e1924c444fafe9fdfce444790f0ba9","Back to your shopping cart","Torna al carrello","" -"<{mollie}prestashop>order_fail_28726b6ad52c9eae94be432666f93449","Your order is canceled","L'ordine è stato annullato","" -"<{mollie}prestashop>mollie_return_ebdf0f490b617d7efa3025d3625cec85","Welcome back","Bentornato","" -"<{mollie}prestashop>mollie_return_300225ee958b6350abc51805dab83c24","Continue shopping","Continua gli acquisti","" -"<{mollie}prestashop>mollie_wait_bc0dd919f9a70dbb62f3f7afd68d6d68","Awaiting payment status","In attesa dello stato di pagamento","" -"<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b","Mollie iDEAL QR","Mollie iDEAL QR","" -"<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85","Welcome back","Bentornato","" -"<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572","The payment has been cancelled","Il pagamento è stato annullato","" -"<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b","The payment is complete. Thank you for your order!","Il pagamento è completo. Grazie per il suo ordine!","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0","Product:","Prodotto:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c","Quantity:","Quantità:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee","Unit price:","Prezzo unitario:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa","Total:","Totale:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c","Subscription status:","Stato dell'abbonamento.","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8","Subscription start date:","Data di inizio dell'abbonamento:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd","Next payment date:","Prossima data di pagamento:","" -"<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350","Cancelled date:","Data di annullamento:","" -"<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d","Subscription order details","Dettagli dell'ordine di abbonamento","" -"<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3","Update subscription payment method","Aggiornare il metodo di pagamento dell'abbonamento","" -"<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b","If you would like to update the payment method of a subscription, you can select it here.","Se desidera aggiornare il metodo di pagamento di un abbonamento, può selezionarlo qui.","" -"<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6","Update","Aggiornare","" -"<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112","Cancel subscription","Annullare l'abbonamento","" -"<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19","Cancel","Annullare","" -"<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be"," Subscriptions","Abbonamenti","" -"<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be","Subscriptions","Abbonamenti","" From 6f7b31713be9e3b2fb15c8060968a26f4ab485ff Mon Sep 17 00:00:00 2001 From: Pascal Alberty Date: Wed, 28 Aug 2024 16:05:58 +0200 Subject: [PATCH 27/74] Go through all combination attributes to check subscription interval --- .../Provider/SubscriptionStartDateProvider.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/subscription/Provider/SubscriptionStartDateProvider.php b/subscription/Provider/SubscriptionStartDateProvider.php index ba415d9f4..0f5d9e12d 100644 --- a/subscription/Provider/SubscriptionStartDateProvider.php +++ b/subscription/Provider/SubscriptionStartDateProvider.php @@ -61,16 +61,14 @@ public function getSubscriptionStartDate(Combination $combination) case $this->configuration->get(Config::SUBSCRIPTION_ATTRIBUTE_YEARLY): $interval = new DateInterval('P1Y'); break; - default: - throw new SubscriptionIntervalException(sprintf('No interval exists for this %s attribute', $combination->id)); } // Add the interval to the current time - $currentTime->add($interval); - - return $currentTime->format('Y-m-d'); + if ($interval !== null) { + $currentTime->add($interval); + return $currentTime->format('Y-m-d'); + } } - - throw new SubscriptionIntervalException(sprintf('No interval exists for this %s attribute', $combination->id)); + throw new SubscriptionIntervalException(sprintf('No interval exists for this %s attribute', $combination->id)); } } From a83b36d8dc807eefd14236b5c1d6713b97c8e7fc Mon Sep 17 00:00:00 2001 From: Gytautas Zumaras <96050852+GytisZum@users.noreply.github.com> Date: Tue, 3 Sep 2024 10:44:02 +0300 Subject: [PATCH 28/74] Cs fixer --- src/Utility/NumberUtility.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Utility/NumberUtility.php b/src/Utility/NumberUtility.php index 195823dc0..24fba4584 100644 --- a/src/Utility/NumberUtility.php +++ b/src/Utility/NumberUtility.php @@ -52,6 +52,7 @@ public static function toPrecision( * @param float $percentage * * @return float + * * @throws DivisionByZeroException */ public static function decreaseByPercentage(float $number, float $percentage): float @@ -134,6 +135,7 @@ public static function times( * @param string $roundingMode * * @return float + * * @throws DivisionByZeroException */ public static function divide( @@ -237,4 +239,4 @@ private static function getNumber(float $number): DecimalNumber // Assuming DecimalNumber is the preferred class based on the use case. return new DecimalNumber((string) $number); } -} \ No newline at end of file +} From 15a46996250806d3471d105dc6d2684f2bc6265e Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 13:47:09 +0300 Subject: [PATCH 29/74] PIPRES-462: Logging improvements --- changelog.md | 1 + composer.json | 3 +- .../admin/AdminMollieLogsController.php | 336 ++++++++++++++++++ .../admin/AdminMollieLogsParentController.php | 22 ++ .../admin/AdminMollieSettingsController.php | 16 +- mollie.php | 21 +- src/Adapter/ConfigurationAdapter.php | 11 + src/Adapter/ToolsAdapter.php | 5 + src/Config/Config.php | 6 + src/Entity/MolLog.php | 45 +++ src/Entity/ObjectModelEntityManager.php | 75 ++++ src/Entity/ObjectModelUnitOfWork.php | 53 +++ src/Install/DatabaseTableInstaller.php | 13 + src/Logger/LogFormatter.php | 27 ++ src/Logger/LogFormatterInterface.php | 23 ++ src/Logger/Logger.php | 172 +++++++++ src/Logger/LoggerInterface.php | 17 + .../PrestashopLoggerRepositoryInterface.php | 32 ++ src/Repository/CollectionRepository.php | 56 +++ src/Repository/MolLogRepository.php | 54 +++ src/Repository/MolLogRepositoryInterface.php | 24 ++ src/Repository/PrestashopLoggerRepository.php | 63 ++++ .../ReadOnlyCollectionRepositoryInterface.php | 39 ++ .../EntityManager/EntityManagerInterface.php | 10 +- .../ObjectModelEntityManager.php | 75 ++++ .../EntityManager/ObjectModelUnitOfWork.php | 53 +++ src/ServiceProvider/BaseServiceProvider.php | 31 ++ src/Utility/ExceptionUtility.php | 49 +++ .../NumberIdempotencyProvider.php} | 13 +- src/Utility/VersionUtility.php | 46 +++ upgrade/Upgrade-6.2.3.php | 72 ++++ views/css/admin/logs/index.php | 21 ++ views/css/admin/logs/log.css | 99 ++++++ views/js/admin/logs/index.php | 21 ++ views/js/admin/logs/log.js | 55 +++ views/templates/admin/logs/index.php | 21 ++ views/templates/admin/logs/log_modal.tpl | 46 +++ .../admin/logs/severity_level_column.tpl | 23 ++ .../templates/admin/logs/severity_levels.tpl | 25 ++ 39 files changed, 1758 insertions(+), 16 deletions(-) create mode 100644 controllers/admin/AdminMollieLogsController.php create mode 100644 controllers/admin/AdminMollieLogsParentController.php create mode 100644 src/Entity/MolLog.php create mode 100644 src/Entity/ObjectModelEntityManager.php create mode 100644 src/Entity/ObjectModelUnitOfWork.php create mode 100644 src/Logger/LogFormatter.php create mode 100644 src/Logger/LogFormatterInterface.php create mode 100644 src/Logger/Logger.php create mode 100644 src/Logger/LoggerInterface.php create mode 100644 src/Logger/PrestashopLoggerRepositoryInterface.php create mode 100644 src/Repository/CollectionRepository.php create mode 100644 src/Repository/MolLogRepository.php create mode 100644 src/Repository/MolLogRepositoryInterface.php create mode 100644 src/Repository/PrestashopLoggerRepository.php create mode 100644 src/Repository/ReadOnlyCollectionRepositoryInterface.php create mode 100644 src/Service/EntityManager/ObjectModelEntityManager.php create mode 100644 src/Service/EntityManager/ObjectModelUnitOfWork.php create mode 100644 src/Utility/ExceptionUtility.php rename src/{Service/EntityManager/ObjectModelManager.php => Utility/NumberIdempotencyProvider.php} (59%) create mode 100644 src/Utility/VersionUtility.php create mode 100644 upgrade/Upgrade-6.2.3.php create mode 100755 views/css/admin/logs/index.php create mode 100755 views/css/admin/logs/log.css create mode 100755 views/js/admin/logs/index.php create mode 100755 views/js/admin/logs/log.js create mode 100755 views/templates/admin/logs/index.php create mode 100755 views/templates/admin/logs/log_modal.tpl create mode 100755 views/templates/admin/logs/severity_level_column.tpl create mode 100755 views/templates/admin/logs/severity_levels.tpl diff --git a/changelog.md b/changelog.md index 7db6d6de7..8d4c43aeb 100644 --- a/changelog.md +++ b/changelog.md @@ -3,6 +3,7 @@ # Changelog # ## Changes in release 6.2.3 ## + Multi shop improvements with order states ++ Logging improvements ## Changes in release 6.2.2 ## + Error handling improvements diff --git a/composer.json b/composer.json index 6f4806454..499663da4 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "http-interop/http-factory-guzzle": "^1.1", "php-http/message-factory": "^1.1", "prestashop/prestashop-accounts-installer": "^1.0.4", - "prestashop/module-lib-mbo-installer": "^2.0" + "prestashop/module-lib-mbo-installer": "^2.0", + "dusank/knapsack": "^10.0" }, "require-dev": { "roave/security-advisories": "dev-latest", diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php new file mode 100644 index 000000000..f0e331ff7 --- /dev/null +++ b/controllers/admin/AdminMollieLogsController.php @@ -0,0 +1,336 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +use Mollie\Config\Config; +use Mollie\Logger\LogFormatter; +use Mollie\Repository\MolLogRepositoryInterface; +use Mollie\Utility\ExceptionUtility; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; +use Mollie\Utility\VersionUtility; +use Mollie\Adapter\Shop; + +if (!defined('_PS_VERSION_')) { + exit; +} +class AdminMollieLogsController extends ModuleAdminController +{ + const FILE_NAME = 'AdminMollieLogsController'; + + const LOG_INFORMATION_TYPE_REQUEST = 'request'; + const LOG_INFORMATION_TYPE_RESPONSE = 'response'; + const LOG_INFORMATION_TYPE_CONTEXT = 'context'; + + public function __construct() + { + $this->bootstrap = true; + $this->table = 'log'; + $this->className = 'PrestaShopLogger'; + $this->lang = false; + $this->noLink = true; + + parent::__construct(); + + $this->toolbar_btn = []; + $this->fields_list = [ + 'id_log' => [ + 'title' => $this->module->l('ID', self::FILE_NAME), + 'align' => 'text-center', + 'class' => 'fixed-width-xs', + ], + 'severity' => [ + 'title' => $this->module->l('Severity (1-4)', self::FILE_NAME), + 'align' => 'text-center', + 'class' => 'fixed-width-xs', + 'callback' => 'printSeverityLevel', + ], + 'message' => [ + 'title' => $this->module->l('Message', self::FILE_NAME), + ], + 'request' => [ + 'title' => $this->module->l('Request', self::FILE_NAME), + 'align' => 'text-center', + 'callback' => 'printRequestButton', + 'orderby' => false, + 'search' => false, + 'remove_onclick' => true, + ], + 'response' => [ + 'title' => $this->module->l('Response', self::FILE_NAME), + 'align' => 'text-center', + 'callback' => 'printResponseButton', + 'orderby' => false, + 'search' => false, + 'remove_onclick' => true, + ], + 'context' => [ + 'title' => $this->module->l('Context', self::FILE_NAME), + 'align' => 'text-center', + 'callback' => 'printContextButton', + 'orderby' => false, + 'search' => false, + 'remove_onclick' => true, + ], + 'date_add' => [ + 'title' => $this->module->l('Date', self::FILE_NAME), + 'align' => 'right', + 'type' => 'datetime', + 'filter_key' => 'a!date_add', + ], + ]; + + $this->_orderBy = 'id_log'; + $this->_orderWay = 'desc'; + + $this->_select .= ' + REPLACE(a.`message`, "' . LogFormatter::MOLLIE_LOG_PREFIX . '", "") as message, + kpl.request, kpl.response, kpl.context + '; + + $shopIdCheck = ''; + + if (VersionUtility::isPsVersionGreaterOrEqualTo('1.7.8.0')) { + $shopIdCheck = ' AND kpl.id_shop = a.id_shop'; + } + + $this->_join .= ' JOIN ' . _DB_PREFIX_ . 'mol_logs kpl ON (kpl.id_log = a.id_log' . $shopIdCheck . ' AND a.object_type = "' . pSQL(Logger::LOG_OBJECT_TYPE) . '")'; + $this->_use_found_rows = false; + $this->list_no_link = true; + } + + /** + * @return false|string + * + * @throws SmartyException + */ + public function displaySeverityInformation() + { + return $this->context->smarty->fetch( + "{$this->module->getLocalPath()}views/templates/admin/logs/severity_levels.tpl" + ); + } + + /** + * @throws SmartyException + */ + public function initContent(): void + { + // NOTE: we cannot add new logs here. + if (isset($this->toolbar_btn['new'])) { + unset($this->toolbar_btn['new']); + } + + $this->content .= $this->displaySeverityInformation(); + + parent::initContent(); + } + + public function setMedia($isNewTheme = false): void + { + parent::setMedia($isNewTheme); + + Media::addJsDef([ + 'mollie' => [ + 'logsUrl' => Context::getContext()->link->getAdminLink(Config::LOGS_MODULE_TAB_CONTROLLER_NAME), + ], + ]); + + $this->addJS($this->module->getPathUri() . 'views/js/admin/logs/log.js', false); + $this->addCss($this->module->getPathUri() . 'views/css/admin/logs/log.css'); + } + + /** + * @param string $request + * @param array $data + * + * @return false|string + * + * @throws SmartyException + */ + public function printRequestButton(string $request, array $data) + { + return $this->getDisplayButton($data['id_log'], $request, self::LOG_INFORMATION_TYPE_REQUEST); + } + + /** + * @param string $response + * @param array $data + * + * @return false|string + * + * @throws SmartyException + */ + public function printResponseButton(string $response, array $data) + { + return $this->getDisplayButton($data['id_log'], $response, self::LOG_INFORMATION_TYPE_RESPONSE); + } + + /** + * @param string $context + * @param array $data + * + * @return false|string + * + * @throws SmartyException + */ + public function printContextButton(string $context, array $data) + { + return $this->getDisplayButton($data['id_log'], $context, self::LOG_INFORMATION_TYPE_CONTEXT); + } + + /** + * @param int $level + * + * @return false|string + * + * @throws SmartyException + */ + public function printSeverityLevel(int $level) + { + $this->context->smarty->assign([ + 'log_severity_level' => $level, + 'log_severity_level_informative' => defined('\PrestaShopLogger::LOG_SEVERITY_LEVEL_INFORMATIVE') ? + PrestaShopLogger::LOG_SEVERITY_LEVEL_INFORMATIVE : + Config::LOG_SEVERITY_LEVEL_INFORMATIVE, + 'log_severity_level_warning' => defined('\PrestaShopLogger::LOG_SEVERITY_LEVEL_WARNING') ? + PrestaShopLogger::LOG_SEVERITY_LEVEL_WARNING : + Config::LOG_SEVERITY_LEVEL_WARNING, + 'log_severity_level_error' => defined('\PrestaShopLogger::LOG_SEVERITY_LEVEL_ERROR') ? + PrestaShopLogger::LOG_SEVERITY_LEVEL_ERROR : + Config::LOG_SEVERITY_LEVEL_ERROR, + 'log_severity_level_major' => defined('\PrestaShopLogger::LOG_SEVERITY_LEVEL_MAJOR') ? + PrestaShopLogger::LOG_SEVERITY_LEVEL_MAJOR : + Config::LOG_SEVERITY_LEVEL_MAJOR, + ]); + + return $this->context->smarty->fetch( + "{$this->module->getLocalPath()}views/templates/admin/logs/severity_level_column.tpl" + ); + } + + /** + * @param int $logId + * @param string $data + * @param string $logInformationType + * + * @return false|string + * + * @throws SmartyException + */ + public function getDisplayButton(int $logId, string $data, string $logInformationType) + { + $unserializedData = json_decode($data); + + if (empty($unserializedData)) { + return '--'; + } + + $this->context->smarty->assign([ + 'log_id' => $logId, + 'log_information_type' => $logInformationType, + ]); + + return $this->context->smarty->fetch( + "{$this->module->getLocalPath()}views/templates/admin/logs/log_modal.tpl" + ); + } + + public function displayAjaxGetLog() + { + /** @var \Mollie\Adapter\ToolsAdapter $tools */ + $tools = $this->module->getService(\Mollie\Adapter\ToolsAdapter::class); + + /** @var MolLogRepositoryInterface $logRepository */ + $logRepository = $this->module->getService(MolLogRepositoryInterface::class); + + /** @var Shop $shopContext */ + $shopContext = $this->module->getService(Shop::class); + + $logId = $tools->getValueAsInt('log_id'); + + /** @var LoggerInterface $logger */ + $logger = $this->module->getService(LoggerInterface::class); + + try { + /** @var \MolLog|null $log */ + $log = $logRepository->findOneBy([ + 'id_log' => $logId, + 'id_shop' => $shopContext->getShop()->id, + ]); + } catch (\Exception $exception) { + $logger->error('Failed to find log', [ + 'context' => [ + 'id_log' => $logId, + 'id_shop' => $shopContext->getShop()->id, + ], + 'exceptions' => ExceptionUtility::getExceptions($exception), + ]); + + $this->ajaxResponse(json_encode([ + 'error' => true, + 'message' => $this->module->l('Failed to find log.', self::FILE_NAME), + ])); + } + + if (!$log) { + $logger->error('No log information found.', [ + 'context' => [ + 'id_log' => $logId, + 'id_shop' => $shopContext->getShop()->id, + ], + 'exceptions' => [], + ]); + + $this->ajaxResponse(json_encode([ + 'error' => true, + 'message' => $this->module->l('No log information found.', self::FILE_NAME), + ])); + } + + $this->ajaxResponse(json_encode([ + 'error' => false, + 'log' => [ + self::LOG_INFORMATION_TYPE_REQUEST => $log->request, + self::LOG_INFORMATION_TYPE_RESPONSE => $log->response, + self::LOG_INFORMATION_TYPE_CONTEXT => $log->context, + ], + ])); + } + + /** + * @param null $value + * @param null $controller + * @param null $method + * + * @return never + * + * @throws \PrestaShopException + */ + protected function ajaxResponse($value = null, $controller = null, $method = null) + { + /** @var LoggerInterface $logger */ + $logger = $this->module->getService(LoggerInterface::class); + + try { + $this->ajaxDie($value, $controller, $method); + } catch (\Exception $exception) { + $logger->error('Could not return ajax response', [ + 'context' => [ + 'response' => json_encode($value ?: []), + 'exceptions' => ExceptionUtility::getExceptions($exception), + ], + ]); + } + + exit; + } +} \ No newline at end of file diff --git a/controllers/admin/AdminMollieLogsParentController.php b/controllers/admin/AdminMollieLogsParentController.php new file mode 100644 index 000000000..e4ffe4218 --- /dev/null +++ b/controllers/admin/AdminMollieLogsParentController.php @@ -0,0 +1,22 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +if (!defined('_PS_VERSION_')) { + exit; +} +class AdminMollieLogsParentController extends ModuleAdminController +{ + public function init() + { + Tools::redirectAdmin($this->context->link->getAdminLink('AdminMollieLogs')); + } +} \ No newline at end of file diff --git a/controllers/admin/AdminMollieSettingsController.php b/controllers/admin/AdminMollieSettingsController.php index da395c199..da5871c28 100644 --- a/controllers/admin/AdminMollieSettingsController.php +++ b/controllers/admin/AdminMollieSettingsController.php @@ -12,6 +12,9 @@ declare(strict_types=1); +use Mollie\Logger\LoggerInterface; +use Mollie\Utility\ExceptionUtility; + if (!defined('_PS_VERSION_')) { exit; } @@ -91,6 +94,17 @@ private function initCloudSyncAndPsAccounts(): void public function postProcess() { + try { + /** @var \Mollie\Logger\LoggerInterface $logger */ + $logger = $this->module->getService(\Mollie\Logger\LoggerInterface::class); + + $logger->error('Failed to present payment option assets.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions(new Exception('Failed to present payment option assets.')), + ]); + } catch (PrestaShopException $e) { + + } /** @var \Mollie\Service\Content\TemplateParserInterface $templateParser */ $templateParser = $this->module->getService(\Mollie\Service\Content\TemplateParserInterface::class); @@ -100,7 +114,7 @@ public function postProcess() $this->module->getLocalPath() . 'views/templates/admin/logo.tpl' ); -// $this->initCloudSyncAndPsAccounts(); + $this->initCloudSyncAndPsAccounts(); /** @var \Mollie\Repository\ModuleRepository $moduleRepository */ $moduleRepository = $this->module->getService(\Mollie\Repository\ModuleRepository::class); diff --git a/mollie.php b/mollie.php index 21621619f..188e733e1 100755 --- a/mollie.php +++ b/mollie.php @@ -20,6 +20,7 @@ use Mollie\Exception\ShipmentCannotBeSentException; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Handler\Shipment\ShipmentSenderHandlerInterface; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Provider\ProfileIdProviderInterface; use Mollie\Repository\MolOrderPaymentFeeRepositoryInterface; @@ -36,6 +37,7 @@ use Mollie\Subscription\Repository\LanguageRepository as LanguageAdapter; use Mollie\Subscription\Repository\RecurringOrderRepositoryInterface; use Mollie\Subscription\Validator\CanProductBeAddedToCartValidator; +use Mollie\Utility\ExceptionUtility; use Mollie\Utility\PsVersionUtility; use Mollie\Verification\IsPaymentInformationAvailable; use PrestaShop\PrestaShop\Core\Localization\Locale\Repository; @@ -74,6 +76,11 @@ class Mollie extends PaymentModule const ADMIN_MOLLIE_SUBSCRIPTION_ORDERS_CONTROLLER = 'AdminMollieSubscriptionOrders'; const ADMIN_MOLLIE_SUBSCRIPTION_FAQ_PARENT_CONTROLLER = 'AdminMollieSubscriptionFAQParent'; const ADMIN_MOLLIE_SUBSCRIPTION_FAQ_CONTROLLER = 'AdminMollieSubscriptionFAQ'; + + const ADMIN_MOLLIE_LOGS_CONTROLLER = 'AdminMollieLogs'; + + const ADMIN_MOLLIE_LOGS_PARENT_CONTROLLER = 'AdminMollieLogsParent'; + /** @var LeagueServiceContainerProvider */ private $containerProvider; @@ -84,7 +91,7 @@ public function __construct() { $this->name = 'mollie'; $this->tab = 'payments_gateways'; - $this->version = '6.2.2'; + $this->version = '6.2.3'; $this->author = 'Mollie B.V.'; $this->need_instance = 1; $this->bootstrap = true; @@ -865,6 +872,18 @@ public function getTabs() 'parent_class_name' => self::ADMIN_MOLLIE_TAB_CONTROLLER, 'module_tab' => true, ], + [ + 'name' => $this->l('Logs'), + 'class_name' => self::ADMIN_MOLLIE_LOGS_PARENT_CONTROLLER, + 'parent_class_name' => self::ADMIN_MOLLIE_CONTROLLER, + 'module_tab' => true, + ], + [ + 'name' => $this->l('Logs'), + 'class_name' => self::ADMIN_MOLLIE_LOGS_CONTROLLER, + 'parent_class_name' => self::ADMIN_MOLLIE_TAB_CONTROLLER, + 'module_tab' => true, + ], ]; } diff --git a/src/Adapter/ConfigurationAdapter.php b/src/Adapter/ConfigurationAdapter.php index 73cd185a7..bac043b55 100644 --- a/src/Adapter/ConfigurationAdapter.php +++ b/src/Adapter/ConfigurationAdapter.php @@ -74,6 +74,17 @@ public function delete($key): void \Configuration::deleteByName($this->parseKeyByEnvironment($key)); } + public function getAsInteger($id, ?int $shopId = null) + { + $result = $this->get($id, $shopId); + + if (in_array($result, ['null', 'false', '0', null, false, 0], true)) { + return 0; + } + + return (int) $result; + } + /** * @param string|array{production: string, sandbox: string} $key */ diff --git a/src/Adapter/ToolsAdapter.php b/src/Adapter/ToolsAdapter.php index 436f5a315..91adbfc11 100644 --- a/src/Adapter/ToolsAdapter.php +++ b/src/Adapter/ToolsAdapter.php @@ -47,4 +47,9 @@ public function isSubmit(string $string): bool { return (bool) Tools::isSubmit($string); } + + public function getValueAsInt($value, $defaultValue = 0) + { + return (int) Tools::getValue($value, $defaultValue); + } } diff --git a/src/Config/Config.php b/src/Config/Config.php index 946946d57..aed49aeb8 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -30,6 +30,7 @@ class Config const SENTRY_KEY = 'https://c2c43f02599847d682e0a1fb7843600f@o497594.ingest.sentry.io/5573860'; const SENTRY_ENV = 'MISSING_ENV'; + const LOGS_MODULE_TAB_CONTROLLER_NAME = 'AdminMollieLogs'; /** * Default payment method availability. @@ -330,6 +331,11 @@ class Config 'trustly' => 'Trustly', ]; + public const LOG_SEVERITY_LEVEL_INFORMATIVE = 1; + public const LOG_SEVERITY_LEVEL_WARNING = 2; + public const LOG_SEVERITY_LEVEL_ERROR = 3; + public const LOG_SEVERITY_LEVEL_MAJOR = 4; + const MOLLIE_BUTTON_ORDER_TOTAL_REFRESH = 'MOLLIE_BUTTON_ORDER_TOTAL_REFRESH'; // TODO migrate functions below to separate service diff --git a/src/Entity/MolLog.php b/src/Entity/MolLog.php new file mode 100644 index 000000000..dbda19c17 --- /dev/null +++ b/src/Entity/MolLog.php @@ -0,0 +1,45 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +if (!defined('_PS_VERSION_')) { + exit; +} + +class MolLog extends ObjectModel +{ + public $id_mollie_log; + + public $id_log; + + public $id_shop; + + public $request; + + public $response; + + public $context; + + public $date_add; + + public static $definition = [ + 'table' => 'mol_logs', + 'primary' => 'id_mollie_log', + 'fields' => [ + 'id_log' => ['type' => self::TYPE_INT, 'validate' => 'isInt'], + 'id_shop' => ['type' => self::TYPE_INT, 'validate' => 'isInt'], + 'request' => ['type' => self::TYPE_STRING, 'validate' => 'isString'], + 'response' => ['type' => self::TYPE_STRING, 'validate' => 'isString'], + 'context' => ['type' => self::TYPE_STRING, 'validate' => 'isString'], + 'date_add' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'], + ], + ]; +} diff --git a/src/Entity/ObjectModelEntityManager.php b/src/Entity/ObjectModelEntityManager.php new file mode 100644 index 000000000..bbb26b76c --- /dev/null +++ b/src/Entity/ObjectModelEntityManager.php @@ -0,0 +1,75 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +use Mollie\Service\EntityManager\EntityManagerInterface; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class ObjectModelEntityManager implements EntityManagerInterface +{ + private $unitOfWork; + + public function __construct(ObjectModelUnitOfWork $unitOfWork) + { + $this->unitOfWork = $unitOfWork; + } + + /** + * @param \ObjectModel $model + * @param string $unitOfWorkType + * @param string|null $specificKey + * for example external_id key to make it easier to keep + * track of which object model is related to which external_id + */ + public function persist( + \ObjectModel $model, + string $unitOfWorkType, + ?string $specificKey = null + ): EntityManagerInterface { + $this->unitOfWork->setWork($model, $unitOfWorkType, $specificKey); + + return $this; + } + + /** + * @return array<\ObjectModel> + * + * @throws \PrestaShopDatabaseException + * @throws \PrestaShopException + */ + public function flush(): array + { + $persistenceModels = $this->unitOfWork->getWork(); + $persistedModels = []; + + foreach ($persistenceModels as $externalId => $persistenceModel) { + if ($persistenceModel['unit_of_work_type'] === ObjectModelUnitOfWork::UNIT_OF_WORK_SAVE) { + $persistenceModel['object']->save(); + } + + if ($persistenceModel['unit_of_work_type'] === ObjectModelUnitOfWork::UNIT_OF_WORK_DELETE) { + $persistenceModel['object']->delete(); + } + + if (!empty($externalId)) { + $persistedModels[$externalId] = $persistenceModel['object']; + } else { + $persistedModels[] = $persistenceModel['object']; + } + } + $this->unitOfWork->clearWork(); + + return $persistedModels; + } +} diff --git a/src/Entity/ObjectModelUnitOfWork.php b/src/Entity/ObjectModelUnitOfWork.php new file mode 100644 index 000000000..ed55cc82d --- /dev/null +++ b/src/Entity/ObjectModelUnitOfWork.php @@ -0,0 +1,53 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +use Mollie\Service\EntityManager\EntityManagerInterface; + +if (!defined('_PS_VERSION_')) { + exit; +} + +/** In memory entity manager object model unit of work */ +class ObjectModelUnitOfWork +{ + public const UNIT_OF_WORK_SAVE = 'UNIT_OF_WORK_SAVE'; + public const UNIT_OF_WORK_DELETE = 'UNIT_OF_WORK_DELETE'; + + private $work = []; + + public function setWork(\ObjectModel $objectModel, string $unitOfWorkType, ?string $specificKey = null): void + { + $work = [ + 'unit_of_work_type' => $unitOfWorkType, + 'object' => $objectModel, + ]; + + if (!is_null($specificKey)) { + $this->work[$specificKey] = $work; + } else { + $this->work[] = $work; + } + } + + /** + * @return array + */ + public function getWork(): array + { + return $this->work; + } + + public function clearWork(): void + { + $this->work = []; + } +} diff --git a/src/Install/DatabaseTableInstaller.php b/src/Install/DatabaseTableInstaller.php index efeff8aae..6489402c9 100644 --- a/src/Install/DatabaseTableInstaller.php +++ b/src/Install/DatabaseTableInstaller.php @@ -138,6 +138,19 @@ private function getCommands() ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8; '; + $sql[] = ' + CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_logs` ( + `id_mollie_log` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, + `id_log` INT(11), + `id_shop` INT(11), + `request` TEXT, + `response` TEXT, + `context` TEXT, + `date_add` DATETIME NOT NULL, + INDEX (`id_log`), + INDEX (`id_shop`) + ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; + return $sql; } diff --git a/src/Logger/LogFormatter.php b/src/Logger/LogFormatter.php new file mode 100644 index 000000000..dd671b4e1 --- /dev/null +++ b/src/Logger/LogFormatter.php @@ -0,0 +1,27 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Logger; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class LogFormatter implements LogFormatterInterface +{ + const MOLLIE_LOG_PREFIX = 'MOLLIE_MODULE_LOG:'; + + public function getMessage(string $message): string + { + return self::MOLLIE_LOG_PREFIX . ' ' . $message; + } +} \ No newline at end of file diff --git a/src/Logger/LogFormatterInterface.php b/src/Logger/LogFormatterInterface.php new file mode 100644 index 000000000..a0603cc45 --- /dev/null +++ b/src/Logger/LogFormatterInterface.php @@ -0,0 +1,23 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Logger; + +interface LogFormatterInterface +{ + /** + * @param string $message - an actual error message + * + * @return string + */ + public function getMessage(string $message): string; +} \ No newline at end of file diff --git a/src/Logger/Logger.php b/src/Logger/Logger.php new file mode 100644 index 000000000..9abb47357 --- /dev/null +++ b/src/Logger/Logger.php @@ -0,0 +1,172 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Logger; + +use Mollie\Adapter\ConfigurationAdapter; +use Mollie\Adapter\Context; +use Mollie\Config\Config; +use Mollie\Service\EntityManager\EntityManagerInterface; +use Mollie\Service\EntityManager\ObjectModelUnitOfWork; +use Mollie\Utility\NumberIdempotencyProvider; + +class Logger implements LoggerInterface +{ + public const FILE_NAME = 'Logger'; + + public const LOG_OBJECT_TYPE = 'mollieLog'; + + public const SEVERITY_INFO = 1; + public const SEVERITY_WARNING = 2; + public const SEVERITY_ERROR = 3; + + private $logFormatter; + private $configuration; + private $context; + private $entityManager; + private $idempotencyProvider; + private $prestashopLoggerRepository; + + public function __construct( + LogFormatterInterface $logFormatter, + ConfigurationAdapter $configuration, + Context $context, + EntityManagerInterface $entityManager, + NumberIdempotencyProvider $idempotencyProvider, + PrestashopLoggerRepositoryInterface $prestashopLoggerRepository + ) { + $this->logFormatter = $logFormatter; + $this->configuration = $configuration; + $this->context = $context; + $this->entityManager = $entityManager; + $this->idempotencyProvider = $idempotencyProvider; + $this->prestashopLoggerRepository = $prestashopLoggerRepository; + } + + public function emergency($message, array $context = []) + { + $this->log( + $this->configuration->getAsInteger( + 'PS_LOGS_BY_EMAIL', + $this->context->getShopId() + ), + $message, + $context + ); + } + + public function alert($message, array $context = []) + { + $this->log(self::SEVERITY_WARNING, $message, $context); + } + + public function critical($message, array $context = []) + { + $this->log( + $this->configuration->getAsInteger( // todo + 'PS_LOGS_BY_EMAIL', + $this->context->getShopId() + ), + $message, + $context + ); + } + + public function error($message, array $context = []) + { + $this->log(self::SEVERITY_ERROR, $message, $context); + } + + public function warning($message, array $context = []) + { + $this->log(self::SEVERITY_WARNING, $message, $context); + } + + public function notice($message, array $context = []) + { + $this->log(self::SEVERITY_INFO, $message, $context); + } + + public function info($message, array $context = []) + { + $this->log(self::SEVERITY_INFO, $message, $context); + } + + public function debug($message, array $context = []) + { + if (!$this->configuration->get(Config::MOLLIE_DEBUG_LOG)) { // todo check for value + return; + } + + $this->log(self::SEVERITY_INFO, $message, $context); + } + + public function log($level, $message, array $context = []) + { + $idempotencyKey = $this->idempotencyProvider->getIdempotencyKey(); + + \PrestaShopLogger::addLog( + $this->logFormatter->getMessage($message), + $level, + null, + self::LOG_OBJECT_TYPE, + $idempotencyKey + ); + + $logId = $this->prestashopLoggerRepository->getLogIdByObjectId( + $idempotencyKey, + $this->context->getShopId() + ); + + if (!$logId) { + return; + } + + $this->logContext($logId, $context); + } + + private function logContext($logId, array $context) + { + $request = ''; + $response = ''; + + if (isset($context['request'])) { + $request = $context['request']; + unset($context['request']); + } + + if (isset($context['response'])) { + $response = $context['response']; + unset($context['response']); + } + + $log = new \MolLog(); + $log->id_log = $logId; + $log->id_shop = $this->context->getShopId(); + $log->context = json_encode($this->getFilledContextWithShopData($context)); + $log->request = json_encode($request); + $log->response = json_encode($response); + + $this->entityManager->persist($log, ObjectModelUnitOfWork::UNIT_OF_WORK_SAVE); + $this->entityManager->flush(); + } + + private function getFilledContextWithShopData(array $context = []) + { + $context['context_id_customer'] = $this->context->getCustomerId(); + $context['id_shop'] = $this->context->getShopId(); + $context['currency'] = $this->context->getCurrencyIso(); + $context['id_language'] = $this->context->getLanguageId(); + + return $context; + } +} diff --git a/src/Logger/LoggerInterface.php b/src/Logger/LoggerInterface.php new file mode 100644 index 000000000..d6230e177 --- /dev/null +++ b/src/Logger/LoggerInterface.php @@ -0,0 +1,17 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Logger; + +interface LoggerInterface extends \Psr\Log\LoggerInterface +{ +} diff --git a/src/Logger/PrestashopLoggerRepositoryInterface.php b/src/Logger/PrestashopLoggerRepositoryInterface.php new file mode 100644 index 000000000..d7c19fbef --- /dev/null +++ b/src/Logger/PrestashopLoggerRepositoryInterface.php @@ -0,0 +1,32 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Logger; + +use Mollie\Repository\ReadOnlyCollectionRepositoryInterface; + +if (!defined('_PS_VERSION_')) { + exit; +} + +interface PrestashopLoggerRepositoryInterface extends ReadOnlyCollectionRepositoryInterface +{ + /** + * @param string $objectId + * @param int $shopId + * + * @return int|null + */ + public function getLogIdByObjectId(string $objectId, ?int $shopId): ?int; + + public function prune(int $daysToKeep): void; +} diff --git a/src/Repository/CollectionRepository.php b/src/Repository/CollectionRepository.php new file mode 100644 index 000000000..467f6071f --- /dev/null +++ b/src/Repository/CollectionRepository.php @@ -0,0 +1,56 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class CollectionRepository implements ReadOnlyCollectionRepositoryInterface +{ + /** + * @var string + */ + private $fullyClassifiedClassName; + + public function __construct(string $fullyClassifiedClassName) + { + $this->fullyClassifiedClassName = $fullyClassifiedClassName; + } + + public function findAllInCollection($langId = null): \PrestaShopCollection + { + return new \PrestaShopCollection($this->fullyClassifiedClassName, $langId); + } + + /** + * @param array $keyValueCriteria + * @param $langId + * + * @return bool|\ObjectModel|null + * + * @throws \PrestaShopException + */ + public function findOneBy(array $keyValueCriteria, $langId = null): ?\ObjectModel + { + $psCollection = new \PrestaShopCollection($this->fullyClassifiedClassName, $langId); + + foreach ($keyValueCriteria as $field => $value) { + $psCollection = $psCollection->where($field, '=', $value); + } + + $first = $psCollection->getFirst(); + + return false === $first ? null : $first; + } +} diff --git a/src/Repository/MolLogRepository.php b/src/Repository/MolLogRepository.php new file mode 100644 index 000000000..70b874602 --- /dev/null +++ b/src/Repository/MolLogRepository.php @@ -0,0 +1,54 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +use DusanKasan\Knapsack\Collection; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class MolLogRepository extends CollectionRepository implements MolLogRepositoryInterface +{ + public function __construct() + { + parent::__construct(\MolLog::class); + } + + public function prune(int $daysToKeep): void + { + Collection::from( + $this->findAllInCollection() + ->sqlWhere('DATEDIFF(NOW(),date_add) >= ' . $daysToKeep) + ) + ->each(function (\MolLog $log) { + $log->delete(); + }) + ->realize(); + } + + public function findAll(int $langId = null): \PrestaShopCollection + { + // TODO: Implement findAll() method. + } + + public function findAllBy(array $keyValueCriteria, int $langId = null): ?\PrestaShopCollection + { + // TODO: Implement findAllBy() method. + } + + public function findOrFail(array $keyValueCriteria, int $langId = null): \ObjectModel + { + // TODO: Implement findOrFail() method. + } +} diff --git a/src/Repository/MolLogRepositoryInterface.php b/src/Repository/MolLogRepositoryInterface.php new file mode 100644 index 000000000..e1f06ddb8 --- /dev/null +++ b/src/Repository/MolLogRepositoryInterface.php @@ -0,0 +1,24 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +use Mollie\Shared\Infrastructure\Repository\ReadOnlyRepositoryInterface; + +if (!defined('_PS_VERSION_')) { + exit; +} + +interface MolLogRepositoryInterface extends ReadOnlyRepositoryInterface +{ + public function prune(int $daysToKeep): void; +} diff --git a/src/Repository/PrestashopLoggerRepository.php b/src/Repository/PrestashopLoggerRepository.php new file mode 100644 index 000000000..bb22178f5 --- /dev/null +++ b/src/Repository/PrestashopLoggerRepository.php @@ -0,0 +1,63 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +use DusanKasan\Knapsack\Collection; +use Mollie\Logger\Logger; +use Mollie\Logger\PrestashopLoggerRepositoryInterface; +use Mollie\Utility\VersionUtility; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class PrestashopLoggerRepository extends CollectionRepository implements PrestashopLoggerRepositoryInterface +{ + public function __construct() + { + parent::__construct(\PrestaShopLogger::class); + } + + /** {@inheritDoc} */ + public function getLogIdByObjectId(string $objectId, ?int $shopId): ?int + { + $query = new \DbQuery(); + + $query + ->select('l.id_log') + ->from('log', 'l') + ->where('l.object_id = "' . pSQL($objectId) . '"') + ->orderBy('l.id_log DESC'); + + if (VersionUtility::isPsVersionGreaterOrEqualTo('1.7.8.0')) { + $query->where('l.id_shop = ' . (int) $shopId); + } + + $logId = \Db::getInstance()->getValue($query); + + return (int) $logId ?: null; + } + + public function prune(int $daysToKeep): void + { + Collection::from( + $this->findAllInCollection() + ->sqlWhere('DATEDIFF(NOW(),date_add) >= ' . $daysToKeep) + ->where('object_type', '=', Logger::LOG_OBJECT_TYPE) + ) + ->each(function (\PrestaShopLogger $log) { + $log->delete(); + }) + ->realize(); + } +} diff --git a/src/Repository/ReadOnlyCollectionRepositoryInterface.php b/src/Repository/ReadOnlyCollectionRepositoryInterface.php new file mode 100644 index 000000000..6af7aed4b --- /dev/null +++ b/src/Repository/ReadOnlyCollectionRepositoryInterface.php @@ -0,0 +1,39 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +if (!defined('_PS_VERSION_')) { + exit; +} + +interface ReadOnlyCollectionRepositoryInterface +{ + /** + * @param int|null $langId - objects which ussualy are type of array will become strings. E.g + * $product->name is string instead of multidimensional array where key is id_language. + * Always pass language id + * unless there is a special need not to. Synchronization or smth. + * It saves quite a lot performance wise. + * + * @return \PrestaShopCollection + */ + public function findAllInCollection($langId = null): \PrestaShopCollection; + + /** + * @param array $keyValueCriteria - e.g [ 'id_cart' => 5 ] + * @param int|null $langId + * + * @return \ObjectModel|null + */ + public function findOneBy(array $keyValueCriteria, $langId = null): ?\ObjectModel; +} diff --git a/src/Service/EntityManager/EntityManagerInterface.php b/src/Service/EntityManager/EntityManagerInterface.php index cb4877180..53d0e7813 100644 --- a/src/Service/EntityManager/EntityManagerInterface.php +++ b/src/Service/EntityManager/EntityManagerInterface.php @@ -12,17 +12,17 @@ namespace Mollie\Service\EntityManager; -use ObjectModel; -use PrestaShopException; - if (!defined('_PS_VERSION_')) { exit; } + interface EntityManagerInterface { /** - * @throws PrestaShopException + * @return array<\ObjectModel> + * + * @throws \PrestaShopException */ - public function flush(ObjectModel $model); + public function flush(): array; } diff --git a/src/Service/EntityManager/ObjectModelEntityManager.php b/src/Service/EntityManager/ObjectModelEntityManager.php new file mode 100644 index 000000000..ad6c7c0e6 --- /dev/null +++ b/src/Service/EntityManager/ObjectModelEntityManager.php @@ -0,0 +1,75 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Service\EntityManager; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class ObjectModelEntityManager implements EntityManagerInterface +{ + private $unitOfWork; + + public function __construct(ObjectModelUnitOfWork $unitOfWork) + { + $this->unitOfWork = $unitOfWork; + } + + /** + * @param \ObjectModel $model + * @param string $unitOfWorkType + * @param string|null $specificKey + * for example external_id key to make it easier to keep + * track of which object model is related to which external_id + */ + public function persist( + \ObjectModel $model, + string $unitOfWorkType, + ?string $specificKey = null + ): EntityManagerInterface { + $this->unitOfWork->setWork($model, $unitOfWorkType, $specificKey); + + return $this; + } + + /** + * @return array<\ObjectModel> + * + * @throws \PrestaShopDatabaseException + * @throws \PrestaShopException + */ + public function flush(): array + { + $persistenceModels = $this->unitOfWork->getWork(); + $persistedModels = []; + + foreach ($persistenceModels as $externalId => $persistenceModel) { + if ($persistenceModel['unit_of_work_type'] === ObjectModelUnitOfWork::UNIT_OF_WORK_SAVE) { + $persistenceModel['object']->save(); + } + + if ($persistenceModel['unit_of_work_type'] === ObjectModelUnitOfWork::UNIT_OF_WORK_DELETE) { + $persistenceModel['object']->delete(); + } + + if (!empty($externalId)) { + $persistedModels[$externalId] = $persistenceModel['object']; + } else { + $persistedModels[] = $persistenceModel['object']; + } + } + $this->unitOfWork->clearWork(); + + return $persistedModels; + } +} diff --git a/src/Service/EntityManager/ObjectModelUnitOfWork.php b/src/Service/EntityManager/ObjectModelUnitOfWork.php new file mode 100644 index 000000000..50e6385c6 --- /dev/null +++ b/src/Service/EntityManager/ObjectModelUnitOfWork.php @@ -0,0 +1,53 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Service\EntityManager; + +if (!defined('_PS_VERSION_')) { + exit; +} + +/** In memory entity manager object model unit of work */ +class ObjectModelUnitOfWork +{ + public const UNIT_OF_WORK_SAVE = 'UNIT_OF_WORK_SAVE'; + public const UNIT_OF_WORK_DELETE = 'UNIT_OF_WORK_DELETE'; + + private $work = []; + + public function setWork(\ObjectModel $objectModel, string $unitOfWorkType, ?string $specificKey = null): void + { + $work = [ + 'unit_of_work_type' => $unitOfWorkType, + 'object' => $objectModel, + ]; + + if (!is_null($specificKey)) { + $this->work[$specificKey] = $work; + } else { + $this->work[] = $work; + } + } + + /** + * @return array + */ + public function getWork(): array + { + return $this->work; + } + + public function clearWork(): void + { + $this->work = []; + } +} diff --git a/src/ServiceProvider/BaseServiceProvider.php b/src/ServiceProvider/BaseServiceProvider.php index 876fbf367..933fe69e5 100644 --- a/src/ServiceProvider/BaseServiceProvider.php +++ b/src/ServiceProvider/BaseServiceProvider.php @@ -16,6 +16,8 @@ use League\Container\Container; use Mollie; +use Mollie\Adapter\ConfigurationAdapter; +use Mollie\Adapter\Context; use Mollie\Builder\ApiTestFeedbackBuilder; use Mollie\Factory\ModuleFactory; use Mollie\Handler\Api\OrderEndpointPaymentTypeHandler; @@ -33,8 +35,13 @@ use Mollie\Handler\Shipment\ShipmentSenderHandler; use Mollie\Handler\Shipment\ShipmentSenderHandlerInterface; use Mollie\Install\UninstallerInterface; +use Mollie\Logger\LogFormatter; +use Mollie\Logger\LogFormatterInterface; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLogger; use Mollie\Logger\PrestaLoggerInterface; +use Mollie\Logger\PrestashopLoggerRepositoryInterface; use Mollie\Provider\CreditCardLogoProvider; use Mollie\Provider\CustomLogoProviderInterface; use Mollie\Provider\EnvironmentVersionProvider; @@ -71,6 +78,8 @@ use Mollie\Repository\GenderRepositoryInterface; use Mollie\Repository\MolCustomerRepository; use Mollie\Repository\MolCustomerRepositoryInterface; +use Mollie\Repository\MolLogRepository; +use Mollie\Repository\MolLogRepositoryInterface; use Mollie\Repository\MolOrderPaymentFeeRepository; use Mollie\Repository\MolOrderPaymentFeeRepositoryInterface; use Mollie\Repository\OrderRepository; @@ -79,8 +88,10 @@ use Mollie\Repository\PaymentMethodRepositoryInterface; use Mollie\Repository\PendingOrderCartRuleRepository; use Mollie\Repository\PendingOrderCartRuleRepositoryInterface; +use Mollie\Repository\PrestashopLoggerRepository; use Mollie\Repository\ProductRepository; use Mollie\Repository\ProductRepositoryInterface; +use Mollie\Repository\ReadOnlyCollectionRepositoryInterface; use Mollie\Repository\TaxRepository; use Mollie\Repository\TaxRepositoryInterface; use Mollie\Repository\TaxRuleRepository; @@ -90,6 +101,9 @@ use Mollie\Service\ApiKeyService; use Mollie\Service\Content\SmartyTemplateParser; use Mollie\Service\Content\TemplateParserInterface; +use Mollie\Service\EntityManager\EntityManagerInterface; +use Mollie\Service\EntityManager\ObjectModelEntityManager; +use Mollie\Service\EntityManager\ObjectModelUnitOfWork; use Mollie\Service\PaymentMethod\PaymentMethodRestrictionValidation; use Mollie\Service\PaymentMethod\PaymentMethodRestrictionValidation\AmountPaymentMethodRestrictionValidator; use Mollie\Service\PaymentMethod\PaymentMethodRestrictionValidation\ApplePayPaymentMethodRestrictionValidator; @@ -123,6 +137,7 @@ use Mollie\Subscription\Utility\ClockInterface; use Mollie\Utility\Decoder\DecoderInterface; use Mollie\Utility\Decoder\JsonDecoder; +use Mollie\Utility\NumberIdempotencyProvider; use Mollie\Verification\PaymentType\CanBeRegularPaymentType; use Mollie\Verification\PaymentType\PaymentTypeVerificationInterface; use Mollie\Verification\Shipment\CanSendShipment; @@ -252,6 +267,22 @@ public function register(Container $container) $service = $this->addService($container, ApiTestFeedbackBuilder::class, ApiTestFeedbackBuilder::class); $this->addServiceArgument($service, $container->get(ModuleFactory::class)->getModuleVersion() ?? ''); $this->addServiceArgument($service, ApiKeyService::class); + + $this->addService($container, PrestashopLoggerRepositoryInterface::class, PrestashopLoggerRepository::class); + $this->addService($container, MolLogRepositoryInterface::class, MolLogRepository::class); + + $service = $this->addService($container, LoggerInterface::class, Logger::class); + $this->addServiceArgument($service, LogFormatterInterface::class); + $this->addServiceArgument($service, ConfigurationAdapter::class); + $this->addServiceArgument($service, Context::class); + $this->addServiceArgument($service, EntityManagerInterface::class); + $this->addServiceArgument($service, NumberIdempotencyProvider::class); + $this->addServiceArgument($service, PrestashopLoggerRepositoryInterface::class); + + $this->addService($container, LogFormatterInterface::class, LogFormatter::class); + + $service = $this->addService($container, EntityManagerInterface::class, ObjectModelEntityManager::class); + $this->addServiceArgument($service, ObjectModelUnitOfWork::class); } private function addService(Container $container, $className, $service) diff --git a/src/Utility/ExceptionUtility.php b/src/Utility/ExceptionUtility.php new file mode 100644 index 000000000..bbddd687a --- /dev/null +++ b/src/Utility/ExceptionUtility.php @@ -0,0 +1,49 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Utility; + +use Configuration; +use Mollie\Config\Config; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class ExceptionUtility +{ + public static function getExceptions(\Throwable $exception) + { + if (method_exists($exception, 'getExceptions')) { + return $exception->getExceptions(); + } + + return [self::toArray($exception)]; + } + + public static function toArray(\Throwable $exception): array + { + if (method_exists($exception, 'getContext')) { + $context = $exception->getContext(); + } else { + $context = []; + } + + return [ + 'message' => (string) $exception->getMessage(), + 'code' => (int) $exception->getCode(), + 'file' => (string) $exception->getFile(), + 'line' => (int) $exception->getLine(), + 'context' => $context, + ]; + } +} diff --git a/src/Service/EntityManager/ObjectModelManager.php b/src/Utility/NumberIdempotencyProvider.php similarity index 59% rename from src/Service/EntityManager/ObjectModelManager.php rename to src/Utility/NumberIdempotencyProvider.php index 62b1c4e64..962863a90 100644 --- a/src/Service/EntityManager/ObjectModelManager.php +++ b/src/Utility/NumberIdempotencyProvider.php @@ -10,21 +10,18 @@ * @codingStandardsIgnoreStart */ -namespace Mollie\Service\EntityManager; +namespace Mollie\Utility; -use ObjectModel; +use Language; if (!defined('_PS_VERSION_')) { exit; } -class ObjectModelManager implements EntityManagerInterface +class NumberIdempotencyProvider { - /** - * @throws \PrestaShopException - */ - public function flush(ObjectModel $model) + public function getIdempotencyKey(): string { - $model->save(); + return (string) mt_rand(); } } diff --git a/src/Utility/VersionUtility.php b/src/Utility/VersionUtility.php new file mode 100644 index 000000000..679ae02d2 --- /dev/null +++ b/src/Utility/VersionUtility.php @@ -0,0 +1,46 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Utility; + +class VersionUtility +{ + public static function isPsVersionLessThan($version): ?int + { + return version_compare(_PS_VERSION_, $version, '<'); + } + + public static function isPsVersionGreaterThan($version): ?int + { + return version_compare(_PS_VERSION_, $version, '>'); + } + + public static function isPsVersionGreaterOrEqualTo($version): ?int + { + return version_compare(_PS_VERSION_, $version, '>='); + } + + public static function isPsVersionLessThanOrEqualTo($version): ?int + { + return version_compare(_PS_VERSION_, $version, '<='); + } + + public static function isPsVersionEqualTo($version): ?int + { + return version_compare(_PS_VERSION_, $version, '='); + } + + public static function current(): string + { + return _PS_VERSION_; + } +} diff --git a/upgrade/Upgrade-6.2.3.php b/upgrade/Upgrade-6.2.3.php new file mode 100644 index 000000000..9b9ba3105 --- /dev/null +++ b/upgrade/Upgrade-6.2.3.php @@ -0,0 +1,72 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + */ + +use Mollie\Adapter\ConfigurationAdapter; +use Mollie\Config\Config; + +if (!defined('_PS_VERSION_')) { + exit; +} + +function upgrade_module_6_2_3(Mollie $module): bool +{ + // Create the new mol_logs table + $sql = 'CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'mol_logs` ( + `id_mollie_log` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, + `id_log` INT(11), + `id_shop` INT(11), + `request` TEXT, + `response` TEXT, + `context` TEXT, + `date_add` DATETIME NOT NULL, + INDEX (`id_log`), + INDEX (`id_shop`) + ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=utf8;'; + + $isTableCreated = Db::getInstance()->execute($sql); + if (!$isTableCreated) { + return false; // If the table creation fails, return false + } + + // Install the necessary tabs + $tabs = [ + [ + 'name' => $module->l('Logs'), + 'class_name' => $module::ADMIN_MOLLIE_LOGS_PARENT_CONTROLLER, + 'parent_class_name' => $module::ADMIN_MOLLIE_CONTROLLER, + 'module_tab' => true, + ], + [ + 'name' => $module->l('Logs'), + 'class_name' => $module::ADMIN_MOLLIE_LOGS_CONTROLLER, + 'parent_class_name' => $module::ADMIN_MOLLIE_TAB_CONTROLLER, + 'module_tab' => true, + ], + ]; + + foreach ($tabs as $tabData) { + $tab = new Tab(); + $tab->name = []; + foreach (Language::getLanguages(true) as $lang) { + $tab->name[$lang['id_lang']] = $tabData['name']; + } + $tab->class_name = $tabData['class_name']; + $tab->id_parent = Tab::getIdFromClassName($tabData['parent_class_name']); + $tab->module = $module->name; + $tab->active = 1; + + if (!$tab->add()) { + return false; // Return false if any tab creation fails + } + } + + return $isTableCreated; +} diff --git a/views/css/admin/logs/index.php b/views/css/admin/logs/index.php new file mode 100755 index 000000000..c005d9315 --- /dev/null +++ b/views/css/admin/logs/index.php @@ -0,0 +1,21 @@ + jQuery.parseJSON(response)) + .then(data => { + $('.log-modal-content-spinner').addClass('hidden'); + + $('#log-modal-' + logId + '-request .log-modal-content-data').removeClass('hidden').html(prettyJson(data.log.request)); + $('#log-modal-' + logId + '-response .log-modal-content-data').removeClass('hidden').html(prettyJson(data.log.response)); + $('#log-modal-' + logId + '-context .log-modal-content-data').removeClass('hidden').html(prettyJson(data.log.context)); + }) + }); +}); + +function prettyJson(json) { + return JSON.stringify(jQuery.parseJSON(json), null, 2); +} diff --git a/views/templates/admin/logs/index.php b/views/templates/admin/logs/index.php new file mode 100755 index 000000000..c005d9315 --- /dev/null +++ b/views/templates/admin/logs/index.php @@ -0,0 +1,21 @@ + + {l s='View' mod='mollie'} + + + + + diff --git a/views/templates/admin/logs/severity_level_column.tpl b/views/templates/admin/logs/severity_level_column.tpl new file mode 100755 index 000000000..682ca4032 --- /dev/null +++ b/views/templates/admin/logs/severity_level_column.tpl @@ -0,0 +1,23 @@ +{** + * NOTICE OF LICENSE + * + * @author Mastercard Inc. www.mastercard.com + * @copyright Copyright (c) permanent, Mastercard Inc. + * @license Apache-2.0 + * + * @see /LICENSE + * + * International Registered Trademark & Property of Mastercard Inc. + *} + +{if $log_severity_level == $log_severity_level_informative} + {l s='Informative only' mod='mollie'} ({$log_severity_level|intval}) +{elseif $log_severity_level == $log_severity_level_warning} + {l s='Warning' mod='mollie'} ({$log_severity_level|intval}) +{elseif $log_severity_level == $log_severity_level_error} + {l s='Error' mod='mollie'} ({$log_severity_level|intval}) +{elseif $log_severity_level == $log_severity_level_major} + {l s='Major issue (crash)!' mod='mollie'} ({$log_severity_level|intval}) +{else} + {$log_severity_level|escape:'htmlall':'UTF-8'} +{/if} diff --git a/views/templates/admin/logs/severity_levels.tpl b/views/templates/admin/logs/severity_levels.tpl new file mode 100755 index 000000000..7b0a78a6b --- /dev/null +++ b/views/templates/admin/logs/severity_levels.tpl @@ -0,0 +1,25 @@ +{** + * NOTICE OF LICENSE + * + * @author Mastercard Inc. www.mastercard.com + * @copyright Copyright (c) permanent, Mastercard Inc. + * @license Apache-2.0 + * + * @see /LICENSE + * + * International Registered Trademark & Property of Mastercard Inc. + *} + +
+

+ + {l s='Severity levels:' mod='mollie'} +

+

{l s='Meaning of severity levels:' mod='mollie'}

+
    +
  1. {l s='Info' mod='mollie'}
  2. +
  3. {l s='Warning' mod='mollie'}
  4. +
  5. {l s='Error' mod='mollie'}
  6. +
  7. {l s='Fatal' mod='mollie'}
  8. +
+
From 87706d67d0df6c7df411ddb67d3789e23c77c93e Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 15:04:18 +0300 Subject: [PATCH 30/74] fixed modal view --- src/Repository/MolLogRepository.php | 15 ++------ src/Repository/MolLogRepositoryInterface.php | 2 -- .../ReadOnlyRepositoryInterface.php | 35 +++++++++++++++++++ views/css/admin/logs/log.css | 13 ++++--- views/js/admin/logs/log.js | 13 ++++--- views/templates/admin/logs/log_modal.tpl | 12 +++---- .../admin/logs/severity_level_column.tpl | 13 +++---- .../templates/admin/logs/severity_levels.tpl | 13 +++---- 8 files changed, 70 insertions(+), 46 deletions(-) create mode 100644 src/Repository/ReadOnlyRepositoryInterface.php diff --git a/src/Repository/MolLogRepository.php b/src/Repository/MolLogRepository.php index 70b874602..4d0f9cd8d 100644 --- a/src/Repository/MolLogRepository.php +++ b/src/Repository/MolLogRepository.php @@ -13,6 +13,7 @@ namespace Mollie\Repository; use DusanKasan\Knapsack\Collection; +use Mollie\Subscription\Exception\NotImplementedException; if (!defined('_PS_VERSION_')) { exit; @@ -37,18 +38,8 @@ public function prune(int $daysToKeep): void ->realize(); } - public function findAll(int $langId = null): \PrestaShopCollection + public function findAll() { - // TODO: Implement findAll() method. - } - - public function findAllBy(array $keyValueCriteria, int $langId = null): ?\PrestaShopCollection - { - // TODO: Implement findAllBy() method. - } - - public function findOrFail(array $keyValueCriteria, int $langId = null): \ObjectModel - { - // TODO: Implement findOrFail() method. + throw new NotImplementedException('Find all not implemented'); } } diff --git a/src/Repository/MolLogRepositoryInterface.php b/src/Repository/MolLogRepositoryInterface.php index e1f06ddb8..5e2c0d618 100644 --- a/src/Repository/MolLogRepositoryInterface.php +++ b/src/Repository/MolLogRepositoryInterface.php @@ -12,8 +12,6 @@ namespace Mollie\Repository; -use Mollie\Shared\Infrastructure\Repository\ReadOnlyRepositoryInterface; - if (!defined('_PS_VERSION_')) { exit; } diff --git a/src/Repository/ReadOnlyRepositoryInterface.php b/src/Repository/ReadOnlyRepositoryInterface.php new file mode 100644 index 000000000..2597ebed9 --- /dev/null +++ b/src/Repository/ReadOnlyRepositoryInterface.php @@ -0,0 +1,35 @@ + + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ + +namespace Mollie\Repository; + +use ObjectModel; +use PrestaShopCollection; + +if (!defined('_PS_VERSION_')) { + exit; +} + +interface ReadOnlyRepositoryInterface +{ + /** + * @return PrestaShopCollection + */ + public function findAll(); + + /** + * @param array $keyValueCriteria - e.g [ 'id_cart' => 5 ] + * + * @return ObjectModel|null + */ + public function findOneBy(array $keyValueCriteria); +} diff --git a/views/css/admin/logs/log.css b/views/css/admin/logs/log.css index ca01cd3bf..b87948e15 100755 --- a/views/css/admin/logs/log.css +++ b/views/css/admin/logs/log.css @@ -1,13 +1,12 @@ /** - * NOTICE OF LICENSE + * Mollie https://www.mollie.nl * - * @author Mastercard Inc. www.mastercard.com - * @copyright Copyright (c) permanent, Mastercard Inc. - * @license Apache-2.0 + * @author Mollie B.V. + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md * - * @see /LICENSE - * - * International Registered Trademark & Property of Mastercard Inc. + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart */ .button { diff --git a/views/js/admin/logs/log.js b/views/js/admin/logs/log.js index 52a2da2d9..f36b101c8 100755 --- a/views/js/admin/logs/log.js +++ b/views/js/admin/logs/log.js @@ -1,13 +1,12 @@ /** - * NOTICE OF LICENSE + * Mollie https://www.mollie.nl * - * @author Mastercard Inc. www.mastercard.com - * @copyright Copyright (c) permanent, Mastercard Inc. - * @license Apache-2.0 + * @author Mollie B.V. + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md * - * @see /LICENSE - * - * International Registered Trademark & Property of Mastercard Inc. + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart */ $(document).ready(function () { diff --git a/views/templates/admin/logs/log_modal.tpl b/views/templates/admin/logs/log_modal.tpl index 44427032c..85f936b7f 100755 --- a/views/templates/admin/logs/log_modal.tpl +++ b/views/templates/admin/logs/log_modal.tpl @@ -1,13 +1,13 @@ {** - * NOTICE OF LICENSE + * Mollie https://www.mollie.nl * - * @author Mastercard Inc. www.mastercard.com - * @copyright Copyright (c) permanent, Mastercard Inc. - * @license Apache-2.0 + * @author Mollie B.V. + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md * - * @see /LICENSE + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart * - * International Registered Trademark & Property of Mastercard Inc. *}
+ * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md * - * @see /LICENSE + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart * - * International Registered Trademark & Property of Mastercard Inc. *} + {if $log_severity_level == $log_severity_level_informative} {l s='Informative only' mod='mollie'} ({$log_severity_level|intval}) {elseif $log_severity_level == $log_severity_level_warning} diff --git a/views/templates/admin/logs/severity_levels.tpl b/views/templates/admin/logs/severity_levels.tpl index 7b0a78a6b..3620ae32d 100755 --- a/views/templates/admin/logs/severity_levels.tpl +++ b/views/templates/admin/logs/severity_levels.tpl @@ -1,15 +1,16 @@ {** - * NOTICE OF LICENSE + * Mollie https://www.mollie.nl * - * @author Mastercard Inc. www.mastercard.com - * @copyright Copyright (c) permanent, Mastercard Inc. - * @license Apache-2.0 + * @author Mollie B.V. + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md * - * @see /LICENSE + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart * - * International Registered Trademark & Property of Mastercard Inc. *} +

From dadd12cfd82c6ff9af7929e6c7ca079cf2a73a20 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 15:12:45 +0300 Subject: [PATCH 31/74] cs fixer --- src/Config/Config.php | 1 - src/Entity/MolLog.php | 1 - src/Entity/ObjectModelEntityManager.php | 2 +- src/Entity/ObjectModelUnitOfWork.php | 5 +---- src/Logger/LogFormatter.php | 2 +- src/Logger/LogFormatterInterface.php | 2 +- src/Service/EntityManager/EntityManagerInterface.php | 1 - src/ServiceProvider/BaseServiceProvider.php | 1 - src/Utility/ExceptionUtility.php | 3 --- src/Utility/NumberIdempotencyProvider.php | 2 -- 10 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/Config/Config.php b/src/Config/Config.php index aed49aeb8..0546e17b2 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -30,7 +30,6 @@ class Config const SENTRY_KEY = 'https://c2c43f02599847d682e0a1fb7843600f@o497594.ingest.sentry.io/5573860'; const SENTRY_ENV = 'MISSING_ENV'; - const LOGS_MODULE_TAB_CONTROLLER_NAME = 'AdminMollieLogs'; /** * Default payment method availability. diff --git a/src/Entity/MolLog.php b/src/Entity/MolLog.php index dbda19c17..4e6b6a362 100644 --- a/src/Entity/MolLog.php +++ b/src/Entity/MolLog.php @@ -9,7 +9,6 @@ * @see https://github.com/mollie/PrestaShop * @codingStandardsIgnoreStart */ - if (!defined('_PS_VERSION_')) { exit; } diff --git a/src/Entity/ObjectModelEntityManager.php b/src/Entity/ObjectModelEntityManager.php index bbb26b76c..02483b9c4 100644 --- a/src/Entity/ObjectModelEntityManager.php +++ b/src/Entity/ObjectModelEntityManager.php @@ -33,7 +33,7 @@ public function __construct(ObjectModelUnitOfWork $unitOfWork) * track of which object model is related to which external_id */ public function persist( - \ObjectModel $model, + ObjectModel $model, string $unitOfWorkType, ?string $specificKey = null ): EntityManagerInterface { diff --git a/src/Entity/ObjectModelUnitOfWork.php b/src/Entity/ObjectModelUnitOfWork.php index ed55cc82d..95a49cbe7 100644 --- a/src/Entity/ObjectModelUnitOfWork.php +++ b/src/Entity/ObjectModelUnitOfWork.php @@ -9,9 +9,6 @@ * @see https://github.com/mollie/PrestaShop * @codingStandardsIgnoreStart */ - -use Mollie\Service\EntityManager\EntityManagerInterface; - if (!defined('_PS_VERSION_')) { exit; } @@ -24,7 +21,7 @@ class ObjectModelUnitOfWork private $work = []; - public function setWork(\ObjectModel $objectModel, string $unitOfWorkType, ?string $specificKey = null): void + public function setWork(ObjectModel $objectModel, string $unitOfWorkType, ?string $specificKey = null): void { $work = [ 'unit_of_work_type' => $unitOfWorkType, diff --git a/src/Logger/LogFormatter.php b/src/Logger/LogFormatter.php index dd671b4e1..e19009def 100644 --- a/src/Logger/LogFormatter.php +++ b/src/Logger/LogFormatter.php @@ -24,4 +24,4 @@ public function getMessage(string $message): string { return self::MOLLIE_LOG_PREFIX . ' ' . $message; } -} \ No newline at end of file +} diff --git a/src/Logger/LogFormatterInterface.php b/src/Logger/LogFormatterInterface.php index a0603cc45..ae2690e24 100644 --- a/src/Logger/LogFormatterInterface.php +++ b/src/Logger/LogFormatterInterface.php @@ -20,4 +20,4 @@ interface LogFormatterInterface * @return string */ public function getMessage(string $message): string; -} \ No newline at end of file +} diff --git a/src/Service/EntityManager/EntityManagerInterface.php b/src/Service/EntityManager/EntityManagerInterface.php index 53d0e7813..3dbdd71de 100644 --- a/src/Service/EntityManager/EntityManagerInterface.php +++ b/src/Service/EntityManager/EntityManagerInterface.php @@ -16,7 +16,6 @@ exit; } - interface EntityManagerInterface { /** diff --git a/src/ServiceProvider/BaseServiceProvider.php b/src/ServiceProvider/BaseServiceProvider.php index 933fe69e5..eb12124ee 100644 --- a/src/ServiceProvider/BaseServiceProvider.php +++ b/src/ServiceProvider/BaseServiceProvider.php @@ -91,7 +91,6 @@ use Mollie\Repository\PrestashopLoggerRepository; use Mollie\Repository\ProductRepository; use Mollie\Repository\ProductRepositoryInterface; -use Mollie\Repository\ReadOnlyCollectionRepositoryInterface; use Mollie\Repository\TaxRepository; use Mollie\Repository\TaxRepositoryInterface; use Mollie\Repository\TaxRuleRepository; diff --git a/src/Utility/ExceptionUtility.php b/src/Utility/ExceptionUtility.php index bbddd687a..45978b8b3 100644 --- a/src/Utility/ExceptionUtility.php +++ b/src/Utility/ExceptionUtility.php @@ -12,9 +12,6 @@ namespace Mollie\Utility; -use Configuration; -use Mollie\Config\Config; - if (!defined('_PS_VERSION_')) { exit; } diff --git a/src/Utility/NumberIdempotencyProvider.php b/src/Utility/NumberIdempotencyProvider.php index 962863a90..2af8db85b 100644 --- a/src/Utility/NumberIdempotencyProvider.php +++ b/src/Utility/NumberIdempotencyProvider.php @@ -12,8 +12,6 @@ namespace Mollie\Utility; -use Language; - if (!defined('_PS_VERSION_')) { exit; } From 0e227b17638bab1db83d972976e51de816b44908 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 15:13:01 +0300 Subject: [PATCH 32/74] cs fixer --- composer.json | 11 +++++++++-- controllers/admin/AdminMollieLogsController.php | 10 +++++----- controllers/admin/AdminMollieLogsParentController.php | 3 +-- controllers/admin/AdminMollieSettingsController.php | 2 -- mollie.php | 2 -- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 499663da4..4127a996b 100644 --- a/composer.json +++ b/composer.json @@ -2,6 +2,12 @@ "name": "mollie/prestashop", "license": "AFL-3.0", "description": "Mollie module for PrestaShop", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/Invertus/Knapsack.git" + } + ], "require": { "ext-curl": "*", "ext-json": "*", @@ -18,13 +24,14 @@ "php-http/message-factory": "^1.1", "prestashop/prestashop-accounts-installer": "^1.0.4", "prestashop/module-lib-mbo-installer": "^2.0", - "dusank/knapsack": "^10.0" + "invertus/knapsack": "^10.0" }, "require-dev": { "roave/security-advisories": "dev-latest", "invertus/prestashop-models": "^1.0", "prestashop/php-dev-tools": "*", - "phpunit/phpunit": "~5.7" + "phpunit/phpunit": "~5.7", + "friendsofphp/php-cs-fixer": "^2.19" }, "autoload-dev": { "psr-4": { diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index f0e331ff7..4d30724ce 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -10,14 +10,14 @@ * @codingStandardsIgnoreStart */ +use Mollie\Adapter\Shop; use Mollie\Config\Config; use Mollie\Logger\LogFormatter; -use Mollie\Repository\MolLogRepositoryInterface; -use Mollie\Utility\ExceptionUtility; use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; +use Mollie\Repository\MolLogRepositoryInterface; +use Mollie\Utility\ExceptionUtility; use Mollie\Utility\VersionUtility; -use Mollie\Adapter\Shop; if (!defined('_PS_VERSION_')) { exit; @@ -140,7 +140,7 @@ public function setMedia($isNewTheme = false): void Media::addJsDef([ 'mollie' => [ - 'logsUrl' => Context::getContext()->link->getAdminLink(Config::LOGS_MODULE_TAB_CONTROLLER_NAME), + 'logsUrl' => Context::getContext()->link->getAdminLink(Mollie::ADMIN_MOLLIE_LOGS_CONTROLLER), ], ]); @@ -333,4 +333,4 @@ protected function ajaxResponse($value = null, $controller = null, $method = nul exit; } -} \ No newline at end of file +} diff --git a/controllers/admin/AdminMollieLogsParentController.php b/controllers/admin/AdminMollieLogsParentController.php index e4ffe4218..c9d3d04d0 100644 --- a/controllers/admin/AdminMollieLogsParentController.php +++ b/controllers/admin/AdminMollieLogsParentController.php @@ -9,7 +9,6 @@ * @see https://github.com/mollie/PrestaShop * @codingStandardsIgnoreStart */ - if (!defined('_PS_VERSION_')) { exit; } @@ -19,4 +18,4 @@ public function init() { Tools::redirectAdmin($this->context->link->getAdminLink('AdminMollieLogs')); } -} \ No newline at end of file +} diff --git a/controllers/admin/AdminMollieSettingsController.php b/controllers/admin/AdminMollieSettingsController.php index da5871c28..fd7dc6abe 100644 --- a/controllers/admin/AdminMollieSettingsController.php +++ b/controllers/admin/AdminMollieSettingsController.php @@ -12,7 +12,6 @@ declare(strict_types=1); -use Mollie\Logger\LoggerInterface; use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { @@ -103,7 +102,6 @@ public function postProcess() 'exceptions' => ExceptionUtility::getExceptions(new Exception('Failed to present payment option assets.')), ]); } catch (PrestaShopException $e) { - } /** @var \Mollie\Service\Content\TemplateParserInterface $templateParser */ $templateParser = $this->module->getService(\Mollie\Service\Content\TemplateParserInterface::class); diff --git a/mollie.php b/mollie.php index 188e733e1..57969e2a2 100755 --- a/mollie.php +++ b/mollie.php @@ -20,7 +20,6 @@ use Mollie\Exception\ShipmentCannotBeSentException; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Handler\Shipment\ShipmentSenderHandlerInterface; -use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Provider\ProfileIdProviderInterface; use Mollie\Repository\MolOrderPaymentFeeRepositoryInterface; @@ -37,7 +36,6 @@ use Mollie\Subscription\Repository\LanguageRepository as LanguageAdapter; use Mollie\Subscription\Repository\RecurringOrderRepositoryInterface; use Mollie\Subscription\Validator\CanProductBeAddedToCartValidator; -use Mollie\Utility\ExceptionUtility; use Mollie\Utility\PsVersionUtility; use Mollie\Verification\IsPaymentInformationAvailable; use PrestaShop\PrestaShop\Core\Localization\Locale\Repository; From c34ac74c43a2d852fd50a91cce588d9b1a08c92d Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 15:34:44 +0300 Subject: [PATCH 33/74] stan fix --- .../admin/AdminMollieLogsController.php | 7 +++++-- src/Repository/CollectionRepository.php | 4 ++-- src/Repository/MolLogRepository.php | 2 +- src/Repository/PrestashopLoggerRepository.php | 2 +- src/Utility/VersionUtility.php | 20 +++++++++---------- tests/phpstan/phpstan_base.neon | 1 + 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index 4d30724ce..4974afcf9 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -24,6 +24,9 @@ } class AdminMollieLogsController extends ModuleAdminController { + /** @var Mollie */ + public $module; + const FILE_NAME = 'AdminMollieLogsController'; const LOG_INFORMATION_TYPE_REQUEST = 'request'; @@ -311,11 +314,11 @@ public function displayAjaxGetLog() * @param null $controller * @param null $method * - * @return never + * @return void * * @throws \PrestaShopException */ - protected function ajaxResponse($value = null, $controller = null, $method = null) + protected function ajaxResponse($value = null, $controller = null, $method = null): void { /** @var LoggerInterface $logger */ $logger = $this->module->getService(LoggerInterface::class); diff --git a/src/Repository/CollectionRepository.php b/src/Repository/CollectionRepository.php index 467f6071f..904eb1f1f 100644 --- a/src/Repository/CollectionRepository.php +++ b/src/Repository/CollectionRepository.php @@ -35,9 +35,9 @@ public function findAllInCollection($langId = null): \PrestaShopCollection /** * @param array $keyValueCriteria - * @param $langId + * @param int|null $langId * - * @return bool|\ObjectModel|null + * @return \ObjectModel|null * * @throws \PrestaShopException */ diff --git a/src/Repository/MolLogRepository.php b/src/Repository/MolLogRepository.php index 4d0f9cd8d..451c2dfaa 100644 --- a/src/Repository/MolLogRepository.php +++ b/src/Repository/MolLogRepository.php @@ -12,7 +12,7 @@ namespace Mollie\Repository; -use DusanKasan\Knapsack\Collection; +use Invertus\Knapsack\Collection; use Mollie\Subscription\Exception\NotImplementedException; if (!defined('_PS_VERSION_')) { diff --git a/src/Repository/PrestashopLoggerRepository.php b/src/Repository/PrestashopLoggerRepository.php index bb22178f5..3a18d1c55 100644 --- a/src/Repository/PrestashopLoggerRepository.php +++ b/src/Repository/PrestashopLoggerRepository.php @@ -12,7 +12,7 @@ namespace Mollie\Repository; -use DusanKasan\Knapsack\Collection; +use Invertus\Knapsack\Collection; use Mollie\Logger\Logger; use Mollie\Logger\PrestashopLoggerRepositoryInterface; use Mollie\Utility\VersionUtility; diff --git a/src/Utility/VersionUtility.php b/src/Utility/VersionUtility.php index 679ae02d2..8b073156a 100644 --- a/src/Utility/VersionUtility.php +++ b/src/Utility/VersionUtility.php @@ -14,29 +14,29 @@ class VersionUtility { - public static function isPsVersionLessThan($version): ?int + public static function isPsVersionLessThan($version): int { - return version_compare(_PS_VERSION_, $version, '<'); + return (int) version_compare(_PS_VERSION_, $version, '<'); } - public static function isPsVersionGreaterThan($version): ?int + public static function isPsVersionGreaterThan($version): int { - return version_compare(_PS_VERSION_, $version, '>'); + return (int) version_compare(_PS_VERSION_, $version, '>'); } - public static function isPsVersionGreaterOrEqualTo($version): ?int + public static function isPsVersionGreaterOrEqualTo($version): int { - return version_compare(_PS_VERSION_, $version, '>='); + return (int) version_compare(_PS_VERSION_, $version, '>='); } - public static function isPsVersionLessThanOrEqualTo($version): ?int + public static function isPsVersionLessThanOrEqualTo($version): int { - return version_compare(_PS_VERSION_, $version, '<='); + return (int)version_compare(_PS_VERSION_, $version, '<='); } - public static function isPsVersionEqualTo($version): ?int + public static function isPsVersionEqualTo($version): int { - return version_compare(_PS_VERSION_, $version, '='); + return (int) version_compare(_PS_VERSION_, $version, '='); } public static function current(): string diff --git a/tests/phpstan/phpstan_base.neon b/tests/phpstan/phpstan_base.neon index bde2361d4..45fa1b372 100644 --- a/tests/phpstan/phpstan_base.neon +++ b/tests/phpstan/phpstan_base.neon @@ -42,5 +42,6 @@ parameters: - '#Parameter \#1 \$value of method ControllerCore\:\:ajaxRender\(\) expects null, string\|false given.#' - '#Call to function is_subclass_of\(\) with.*will always evaluate to false.#' - '#Call to function is_array\(\) with.*will always evaluate to false.#' + - '#Property AdminControllerCore\:\:\$_use_found_rows (string) does not accept false.#' level: 5 From a177540d9c5483610b7da5b81ba445f128132030 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 15:58:13 +0300 Subject: [PATCH 34/74] cs fixer --- controllers/admin/AdminMollieLogsController.php | 2 +- src/Utility/VersionUtility.php | 2 +- tests/phpstan/phpstan_base.neon | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index 4974afcf9..d24f5f9af 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -310,7 +310,7 @@ public function displayAjaxGetLog() } /** - * @param null $value + * @param string|false|null $value * @param null $controller * @param null $method * diff --git a/src/Utility/VersionUtility.php b/src/Utility/VersionUtility.php index 8b073156a..c3c27468f 100644 --- a/src/Utility/VersionUtility.php +++ b/src/Utility/VersionUtility.php @@ -31,7 +31,7 @@ public static function isPsVersionGreaterOrEqualTo($version): int public static function isPsVersionLessThanOrEqualTo($version): int { - return (int)version_compare(_PS_VERSION_, $version, '<='); + return (int) version_compare(_PS_VERSION_, $version, '<='); } public static function isPsVersionEqualTo($version): int diff --git a/tests/phpstan/phpstan_base.neon b/tests/phpstan/phpstan_base.neon index 45fa1b372..d864a72a9 100644 --- a/tests/phpstan/phpstan_base.neon +++ b/tests/phpstan/phpstan_base.neon @@ -43,5 +43,9 @@ parameters: - '#Call to function is_subclass_of\(\) with.*will always evaluate to false.#' - '#Call to function is_array\(\) with.*will always evaluate to false.#' - '#Property AdminControllerCore\:\:\$_use_found_rows (string) does not accept false.#' + - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_INFORMATIVE.#' + - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_WARNING.#' + - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_ERROR.#' + - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_MAJOR.#' level: 5 From 4633e38a0723204baa37b17730873c3e50455b90 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 3 Sep 2024 16:15:37 +0300 Subject: [PATCH 35/74] stan fix --- controllers/admin/AdminMollieLogsController.php | 1 + src/Repository/CollectionRepository.php | 2 +- tests/phpstan/phpstan_base.neon | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index d24f5f9af..0741c8985 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -262,6 +262,7 @@ public function displayAjaxGetLog() /** @var LoggerInterface $logger */ $logger = $this->module->getService(LoggerInterface::class); + $log = null; try { /** @var \MolLog|null $log */ diff --git a/src/Repository/CollectionRepository.php b/src/Repository/CollectionRepository.php index 904eb1f1f..b199168d0 100644 --- a/src/Repository/CollectionRepository.php +++ b/src/Repository/CollectionRepository.php @@ -51,6 +51,6 @@ public function findOneBy(array $keyValueCriteria, $langId = null): ?\ObjectMode $first = $psCollection->getFirst(); - return false === $first ? null : $first; + return $first == false ? null : $first; } } diff --git a/tests/phpstan/phpstan_base.neon b/tests/phpstan/phpstan_base.neon index d864a72a9..e8bf24d4b 100644 --- a/tests/phpstan/phpstan_base.neon +++ b/tests/phpstan/phpstan_base.neon @@ -42,7 +42,7 @@ parameters: - '#Parameter \#1 \$value of method ControllerCore\:\:ajaxRender\(\) expects null, string\|false given.#' - '#Call to function is_subclass_of\(\) with.*will always evaluate to false.#' - '#Call to function is_array\(\) with.*will always evaluate to false.#' - - '#Property AdminControllerCore\:\:\$_use_found_rows (string) does not accept false.#' + - '#Property AdminControllerCore\:\:\$_use_found_rows \(string\) does not accept false.#' - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_INFORMATIVE.#' - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_WARNING.#' - '#Access to undefined constant PrestaShopLogger::LOG_SEVERITY_LEVEL_ERROR.#' From 6d60a26e1165bb7186d813ebb19669813b343c81 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 9 Sep 2024 14:52:56 +0300 Subject: [PATCH 36/74] apple pay fix --- src/ServiceProvider/BaseServiceProvider.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/ServiceProvider/BaseServiceProvider.php b/src/ServiceProvider/BaseServiceProvider.php index 876fbf367..e5f90bbc3 100644 --- a/src/ServiceProvider/BaseServiceProvider.php +++ b/src/ServiceProvider/BaseServiceProvider.php @@ -16,6 +16,9 @@ use League\Container\Container; use Mollie; +use Mollie\Adapter\ConfigurationAdapter; +use Mollie\Adapter\Context; +use Mollie\Adapter\Shop; use Mollie\Builder\ApiTestFeedbackBuilder; use Mollie\Factory\ModuleFactory; use Mollie\Handler\Api\OrderEndpointPaymentTypeHandler; @@ -51,6 +54,7 @@ use Mollie\Provider\ProfileIdProviderInterface; use Mollie\Provider\Shipment\AutomaticShipmentSenderStatusesProvider; use Mollie\Provider\Shipment\AutomaticShipmentSenderStatusesProviderInterface; +use Mollie\Provider\TaxCalculatorProvider; use Mollie\Provider\UpdateMessageProvider; use Mollie\Provider\UpdateMessageProviderInterface; use Mollie\Repository\AddressFormatRepository; @@ -88,6 +92,8 @@ use Mollie\Repository\TaxRulesGroupRepository; use Mollie\Repository\TaxRulesGroupRepositoryInterface; use Mollie\Service\ApiKeyService; +use Mollie\Service\ApiService; +use Mollie\Service\ApiServiceInterface; use Mollie\Service\Content\SmartyTemplateParser; use Mollie\Service\Content\TemplateParserInterface; use Mollie\Service\PaymentMethod\PaymentMethodRestrictionValidation; @@ -104,6 +110,7 @@ use Mollie\Service\Shipment\ShipmentInformationSenderInterface; use Mollie\Service\ShipmentService; use Mollie\Service\ShipmentServiceInterface; +use Mollie\Service\TransactionService; use Mollie\Shared\Core\Shared\Repository\CurrencyRepository; use Mollie\Shared\Core\Shared\Repository\CurrencyRepositoryInterface; use Mollie\Subscription\Grid\Accessibility\SubscriptionCancelAccessibility; @@ -252,6 +259,16 @@ public function register(Container $container) $service = $this->addService($container, ApiTestFeedbackBuilder::class, ApiTestFeedbackBuilder::class); $this->addServiceArgument($service, $container->get(ModuleFactory::class)->getModuleVersion() ?? ''); $this->addServiceArgument($service, ApiKeyService::class); + + $service = $this->addService($container, ApiServiceInterface::class, ApiService::class); + $this->addServiceArgument($service, PaymentMethodRepository::class); + $this->addServiceArgument($service, CountryRepository::class); + $this->addServiceArgument($service, PaymentMethodSortProviderInterface::class); + $this->addServiceArgument($service, ConfigurationAdapter::class); + $this->addServiceArgument($service, TransactionService::class); + $this->addServiceArgument($service, Shop::class); + $this->addServiceArgument($service, TaxCalculatorProvider::class); + $this->addServiceArgument($service, Context::class); } private function addService(Container $container, $className, $service) From 0ad23056d23280f9befd20b68ecc985f17d345e5 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 10 Sep 2024 13:38:50 +0300 Subject: [PATCH 37/74] export logs functionality --- .../admin/AdminMollieLogsController.php | 107 +++++++++++++++++- src/Adapter/Context.php | 10 ++ 2 files changed, 114 insertions(+), 3 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index 0741c8985..90ce1eb33 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -10,6 +10,7 @@ * @codingStandardsIgnoreStart */ +use Mollie\Adapter\ConfigurationAdapter; use Mollie\Adapter\Shop; use Mollie\Config\Config; use Mollie\Logger\LogFormatter; @@ -40,6 +41,7 @@ public function __construct() $this->className = 'PrestaShopLogger'; $this->lang = false; $this->noLink = true; + $this->allow_export = true; parent::__construct(); @@ -96,16 +98,16 @@ public function __construct() $this->_select .= ' REPLACE(a.`message`, "' . LogFormatter::MOLLIE_LOG_PREFIX . '", "") as message, - kpl.request, kpl.response, kpl.context + ml.request, ml.response, ml.context '; $shopIdCheck = ''; if (VersionUtility::isPsVersionGreaterOrEqualTo('1.7.8.0')) { - $shopIdCheck = ' AND kpl.id_shop = a.id_shop'; + $shopIdCheck = ' AND ml.id_shop = a.id_shop'; } - $this->_join .= ' JOIN ' . _DB_PREFIX_ . 'mol_logs kpl ON (kpl.id_log = a.id_log' . $shopIdCheck . ' AND a.object_type = "' . pSQL(Logger::LOG_OBJECT_TYPE) . '")'; + $this->_join .= ' JOIN ' . _DB_PREFIX_ . 'mol_logs ml ON (ml.id_log = a.id_log' . $shopIdCheck . ' AND a.object_type = "' . pSQL(Logger::LOG_OBJECT_TYPE) . '")'; $this->_use_found_rows = false; $this->list_no_link = true; } @@ -337,4 +339,103 @@ protected function ajaxResponse($value = null, $controller = null, $method = nul exit; } + + public function processExport($textDelimiter = '"') + { + // clean buffer + if (ob_get_level() && ob_get_length() > 0) { + ob_clean(); + } + + header('Content-type: text/csv'); + header('Content-Type: application/force-download; charset=UTF-8'); + header('Cache-Control: no-store, no-cache'); + header('Content-disposition: attachment; filename="' . $this->table . '_' . date('Y-m-d_His') . '.csv"'); + + $fd = fopen('php://output', 'wb'); + + /** @var $configuration */ + $configuration = $this->module->getService(ConfigurationAdapter::class); + + /** @var Context $context */ + $context = $this->module->getService(Mollie\Adapter\Context::class); + + $storeInfo = [ + 'PrestaShop Version' => _PS_VERSION_, + 'PHP Version' => phpversion(), + 'Module Version' => $this->module->version, + 'MySQL Version' => \DB::getInstance()->getVersion(), + 'Shop URL' => $context->getShopDomain(), + 'Shop Name' => $context->getShopName(), + ]; + + $moduleConfigurations = [ + 'Environment' => $configuration->get(Config::MOLLIE_ENVIRONMENT) ? "Production" : "Sandbox", + 'Components' => $configuration->get(Config::MOLLIE_IFRAME), + 'OCP' => $configuration->get(Config::MOLLIE_SINGLE_CLICK_PAYMENT), + 'Locale Webshop' => $configuration->get(Config::MOLLIE_PAYMENTSCREEN_LOCALE), + 'Subscriptions enabled' => $configuration->get(Config::MOLLIE_SUBSCRIPTION_ENABLED), + ]; + + $psSettings = [ + 'Default country' => $configuration->get('PS_COUNTRY_DEFAULT'), + 'Default currency' => $configuration->get('PS_CURRENCY_DEFAULT'), + 'Default language' => $configuration->get('PS_LANG_DEFAULT'), + 'Round mode' => $configuration->get('PS_PRICE_ROUND_MODE'), + 'Round type' => $configuration->get('PS_ROUND_TYPE'), + 'Current theme name' => $context->getShopThemeName(), + 'PHP memory limit' => ini_get('memory_limit'), + ]; + + $moduleConfigurationsInfo = "**Module configurations:**\n"; + foreach ($moduleConfigurations as $key => $value) { + $moduleConfigurationsInfo .= "- $key: $value\n"; + } + + $psSettingsInfo = "**Prestashop settings:**\n"; + foreach ($psSettings as $key => $value) { + $psSettingsInfo .= "- $key: $value\n"; + } + + fputcsv($fd, array_keys($storeInfo), ';', $textDelimiter); + fputcsv($fd, $storeInfo, ';', $textDelimiter); + fputcsv($fd, [], ';', $textDelimiter); + + fputcsv($fd, [$moduleConfigurationsInfo], ';', $textDelimiter); + fputcsv($fd, [$psSettingsInfo], ';', $textDelimiter); + + $query = new \DbQuery(); + + $query + ->select('ml.id_log, l.severity, l.message, ml.request, ml.response, ml.context, ml.date_add') + ->from('mol_logs', 'ml') + ->leftJoin('log', 'l', 'ml.id_log = l.id_log') + ->orderBy('ml.id_log DESC') + ->limit(1000); + + $result = \Db::getInstance()->executeS($query); + + $firstRow = $result[0]; + foreach ($firstRow as $key => $value) { + $headers[] = strtoupper($key); + } + + $fd = fopen('php://output', 'wb'); + + fputcsv($fd, $headers, ';', $textDelimiter); + + $content = !empty($result) ? $result : []; + + foreach ($content as $row) { + $rowValues = []; + foreach ($row as $key => $value) { + $rowValues[] = $value; + } + + fputcsv($fd, $rowValues, ';', $textDelimiter); + } + + @fclose($fd); + die; + } } diff --git a/src/Adapter/Context.php b/src/Adapter/Context.php index a83249315..e9df2691b 100644 --- a/src/Adapter/Context.php +++ b/src/Adapter/Context.php @@ -135,6 +135,16 @@ public function getShopGroupId(): int return (int) PrestashopContext::getContext()->shop->id_shop_group; } + public function getShopThemeName(): string + { + return PrestashopContext::getContext()->shop->theme_name; + } + + public function getShopName(): string + { + return PrestashopContext::getContext()->shop->name; + } + public function formatPrice(float $price, string $isoCode): string { $locale = PrestashopContext::getContext()->getCurrentLocale(); From b63457559c9ca9f2d4867bdaabeb62b3fdf3c563 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 16 Sep 2024 14:37:10 +0300 Subject: [PATCH 38/74] front controller logging added --- .../admin/AdminMollieSettingsController.php | 41 ++++++++++++++----- controllers/front/ajax.php | 26 ++++++++++++ controllers/front/applePayDirectAjax.php | 10 +++++ controllers/front/bancontactAjax.php | 11 +++++ controllers/front/fail.php | 11 +++++ controllers/front/payScreen.php | 11 +++++ controllers/front/payment.php | 26 ++++++++++++ controllers/front/recurringOrderDetail.php | 26 +++++++++--- controllers/front/return.php | 9 ++++ .../front/subscriptionUpdateWebhook.php | 15 ++++--- controllers/front/subscriptionWebhook.php | 15 ++++--- controllers/front/subscriptions.php | 11 +++++ controllers/front/webhook.php | 27 +++++++----- src/Logger/Logger.php | 8 +++- src/ServiceProvider/BaseServiceProvider.php | 9 ++-- 15 files changed, 214 insertions(+), 42 deletions(-) diff --git a/controllers/admin/AdminMollieSettingsController.php b/controllers/admin/AdminMollieSettingsController.php index fd7dc6abe..e577559be 100644 --- a/controllers/admin/AdminMollieSettingsController.php +++ b/controllers/admin/AdminMollieSettingsController.php @@ -12,6 +12,8 @@ declare(strict_types=1); +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { @@ -45,10 +47,19 @@ private function initCloudSyncAndPsAccounts(): void $this->context->smarty->assign('module_dir', $this->module->getPathUri()); $moduleManager = PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder::getInstance()->build(); + + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + try { $accountsFacade = $this->module->getService('Mollie.PsAccountsFacade'); $accountsService = $accountsFacade->getPsAccountsService(); } catch (PrestaShop\PsAccountsInstaller\Installer\Exception\InstallerException $e) { + $logger->error('Failed to initiate ps_accounts', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + try { $accountsInstaller = $this->module->getService('Mollie.PsAccountsInstaller'); $accountsInstaller->install(); @@ -57,9 +68,15 @@ private function initCloudSyncAndPsAccounts(): void } catch (Exception $e) { $this->context->controller->errors[] = $e->getMessage(); + $logger->error('Failed to install ps_accounts', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + return; } } + try { Media::addJsDef([ 'contextPsAccounts' => $accountsFacade->getPsAccountsPresenter() @@ -70,6 +87,11 @@ private function initCloudSyncAndPsAccounts(): void $this->context->smarty->assign('urlAccountsCdn', $accountsService->getAccountsCdn()); } catch (Exception $e) { $this->context->controller->errors[] = $e->getMessage(); + + $logger->error('Failed to load ps accounts CDN', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); } if ($moduleManager->isInstalled('ps_eventbus')) { @@ -93,16 +115,6 @@ private function initCloudSyncAndPsAccounts(): void public function postProcess() { - try { - /** @var \Mollie\Logger\LoggerInterface $logger */ - $logger = $this->module->getService(\Mollie\Logger\LoggerInterface::class); - - $logger->error('Failed to present payment option assets.', [ - 'context' => [], - 'exceptions' => ExceptionUtility::getExceptions(new Exception('Failed to present payment option assets.')), - ]); - } catch (PrestaShopException $e) { - } /** @var \Mollie\Service\Content\TemplateParserInterface $templateParser */ $templateParser = $this->module->getService(\Mollie\Service\Content\TemplateParserInterface::class); @@ -194,12 +206,21 @@ public function postProcess() /** @var \Mollie\Builder\FormBuilder $settingsFormBuilder */ $settingsFormBuilder = $this->module->getService(\Mollie\Builder\FormBuilder::class); + + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + try { $html .= $settingsFormBuilder->buildSettingsForm(); } catch (PrestaShopDatabaseException $e) { $errorHandler = \Mollie\Handler\ErrorHandler\ErrorHandler::getInstance(); $errorHandler->handle($e, $e->getCode(), false); $this->context->controller->errors[] = $this->module->l('The database tables are missing. Reset the module.'); + + $logger->error('The database tables are missing. Reset the module.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); } $this->content .= $html; diff --git a/controllers/front/ajax.php b/controllers/front/ajax.php index 5e222be7d..c783eef32 100644 --- a/controllers/front/ajax.php +++ b/controllers/front/ajax.php @@ -16,10 +16,13 @@ use Mollie\Errors\Http\HttpStatusCode; use Mollie\Exception\FailedToProvidePaymentFeeException; use Mollie\Infrastructure\Response\JsonResponse; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Provider\PaymentFeeProviderInterface; use Mollie\Shared\Core\Shared\Repository\CurrencyRepositoryInterface; use Mollie\Subscription\Exception\ExceptionCode; use Mollie\Subscription\Validator\CanProductBeAddedToCartValidator; +use Mollie\Utility\ExceptionUtility; use Mollie\Utility\NumberUtility; if (!defined('_PS_VERSION_')) { @@ -35,6 +38,11 @@ class MollieAjaxModuleFrontController extends AbstractMollieController public function postProcess(): void { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $action = Tools::getValue('action'); switch ($action) { @@ -47,6 +55,8 @@ public function postProcess(): void case 'validateProduct': $this->validateProduct(); } + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } private function getTotalCartPrice(): void @@ -92,6 +102,9 @@ private function getTotalCartPrice(): void /** @var ConfigurationAdapter $configuration */ $configuration = $this->module->getService(ConfigurationAdapter::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + try { $paymentFeeData = $paymentFeeProvider->getPaymentFee($molPaymentMethod, (float) $cart->getOrderTotal()); } catch (FailedToProvidePaymentFeeException $exception) { @@ -100,6 +113,11 @@ private function getTotalCartPrice(): void 'message' => 'Failed to get payment fee data.', ]; + $logger->error('Failed to get payment fee data.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), + ]); + $this->returnDefaultOrderSummaryBlock($cart, $errorData); exit; @@ -190,6 +208,9 @@ private function validateProduct(): void /** @var CanProductBeAddedToCartValidator $canProductBeAddedToCartValidator */ $canProductBeAddedToCartValidator = $this->module->getService(CanProductBeAddedToCartValidator::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + $product = Tools::getValue('product'); try { @@ -213,6 +234,11 @@ private function validateProduct(): void $this->module->l('Unknown error. Try again or change the attribute to Subscription: none.', self::FILE_NAME), HttpStatusCode::HTTP_BAD_REQUEST )); + + $logger->error('Unknown error.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), + ]); } $this->ajaxResponse(JsonResponse::success([])); diff --git a/controllers/front/applePayDirectAjax.php b/controllers/front/applePayDirectAjax.php index d561f469a..b00c12085 100644 --- a/controllers/front/applePayDirectAjax.php +++ b/controllers/front/applePayDirectAjax.php @@ -20,6 +20,8 @@ use Mollie\Application\CommandHandler\UpdateApplePayShippingMethodHandler; use Mollie\Builder\ApplePayDirect\ApplePayOrderBuilder; use Mollie\Builder\ApplePayDirect\ApplePayProductBuilder; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Utility\OrderRecoverUtility; if (!defined('_PS_VERSION_')) { @@ -28,11 +30,17 @@ class MollieApplePayDirectAjaxModuleFrontController extends ModuleFrontController { + private const FILE_NAME = 'applePayDirectAjax'; /** @var Mollie */ public $module; public function postProcess() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $action = Tools::getValue('action'); switch ($action) { case 'mollie_apple_pay_validation': @@ -50,6 +58,8 @@ public function postProcess() case 'mollie_apple_pay_get_total_price': $this->getTotalApplePayCartPrice(); } + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } private function getApplePaySession() diff --git a/controllers/front/bancontactAjax.php b/controllers/front/bancontactAjax.php index 3cfdb68bd..abf90b537 100644 --- a/controllers/front/bancontactAjax.php +++ b/controllers/front/bancontactAjax.php @@ -15,6 +15,8 @@ use Mollie\Exception\OrderCreationException; use Mollie\Exception\RetryOverException; use Mollie\Handler\RetryHandlerInterface; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Repository\PaymentMethodRepositoryInterface; use Mollie\Service\PaymentMethodService; use Mollie\Utility\OrderNumberUtility; @@ -26,11 +28,18 @@ class MollieBancontactAjaxModuleFrontController extends ModuleFrontController { + private const FILE_NAME = 'bancontactAjax'; + /** @var Mollie */ public $module; public function postProcess() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $action = Tools::getValue('action'); switch ($action) { case 'createTransaction': @@ -39,6 +48,8 @@ public function postProcess() case 'checkForPaidTransaction': $this->checkForPaidTransaction(); } + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } private function createTransaction() diff --git a/controllers/front/fail.php b/controllers/front/fail.php index 291bfd6d5..4f9d4d381 100644 --- a/controllers/front/fail.php +++ b/controllers/front/fail.php @@ -10,6 +10,8 @@ * @codingStandardsIgnoreStart */ +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use PrestaShop\PrestaShop\Adapter\Order\OrderPresenter; if (!defined('_PS_VERSION_')) { @@ -18,6 +20,8 @@ class MollieFailModuleFrontController extends ModuleFrontController { + public const FILE_NAME = 'fail'; + /** * ID Order Variable Declaration. * @@ -52,6 +56,11 @@ public function init() { parent::init(); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $this->id_cart = (int) Tools::getValue('cartId', 0); $redirectLink = 'index.php?controller=history'; @@ -78,6 +87,8 @@ public function init() } /* @phpstan-ignore-next-line */ $this->order_presenter = new OrderPresenter(); + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } public function initContent() diff --git a/controllers/front/payScreen.php b/controllers/front/payScreen.php index ec651118c..d2a3aac2c 100644 --- a/controllers/front/payScreen.php +++ b/controllers/front/payScreen.php @@ -11,6 +11,8 @@ */ use Mollie\Api\Types\PaymentMethod; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Provider\ProfileIdProviderInterface; if (!defined('_PS_VERSION_')) { @@ -19,11 +21,18 @@ class MolliePayScreenModuleFrontController extends ModuleFrontController { + public const FILE_NAME = 'payScreen' ; + /** @var Mollie */ public $module; public function postProcess() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $cardToken = Tools::getValue('mollieCardToken'); $isSaveCard = (bool) Tools::getValue('mollieSaveCard'); $useSavedCard = (bool) Tools::getValue('mollieUseSavedCard'); @@ -41,6 +50,8 @@ public function postProcess() true ); + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); + Tools::redirect($validateUrl); } diff --git a/controllers/front/payment.php b/controllers/front/payment.php index 3425c13fe..11081bcc5 100644 --- a/controllers/front/payment.php +++ b/controllers/front/payment.php @@ -13,11 +13,14 @@ use Mollie\Api\Types\PaymentMethod; use Mollie\Exception\OrderCreationException; use Mollie\Handler\Order\OrderCreationHandler; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Repository\PaymentMethodRepositoryInterface; use Mollie\Service\ExceptionService; use Mollie\Service\MollieOrderCreationService; use Mollie\Service\PaymentMethodService; use Mollie\Subscription\Validator\SubscriptionOrderValidator; +use Mollie\Utility\ExceptionUtility; use Mollie\Utility\OrderNumberUtility; if (!defined('_PS_VERSION_')) { @@ -52,6 +55,12 @@ class MolliePaymentModuleFrontController extends ModuleFrontController public function initContent() { parent::initContent(); + + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + /** @var Cart $cart */ $cart = $this->context->cart; $customer = new Customer($cart->id_customer); @@ -133,6 +142,11 @@ public function initContent() } $this->errors[] = $message; + $logger->error('An error occurred when creating mollie payment', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + return false; } catch (PrestaShopException $e) { $this->setTemplate('error.tpl'); @@ -140,6 +154,11 @@ public function initContent() ? $e->getMessage() . ' Cart Dump: ' . json_encode($paymentData, JSON_PRETTY_PRINT) : $this->module->l('An error occurred when creating your payment. Contact customer support.', self::FILE_NAME); + $logger->error('An error occurred when creating payment', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + return false; } @@ -163,9 +182,16 @@ public function initContent() $this->setTemplate('error.tpl'); $this->errors[] = $this->module->l('Failed to save order information.', self::FILE_NAME); + $logger->error('Failed to save order information.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + return false; } + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); + // Go to payment url if (null !== $apiPayment->getCheckoutUrl()) { Tools::redirect($apiPayment->getCheckoutUrl()); diff --git a/controllers/front/recurringOrderDetail.php b/controllers/front/recurringOrderDetail.php index 610f28a17..0886ced1b 100644 --- a/controllers/front/recurringOrderDetail.php +++ b/controllers/front/recurringOrderDetail.php @@ -11,11 +11,14 @@ */ use Mollie\Controller\AbstractMollieController; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Subscription\Handler\FreeOrderCreationHandler; use Mollie\Subscription\Handler\SubscriptionCancellationHandler; use Mollie\Subscription\Presenter\RecurringOrderPresenter; use Mollie\Subscription\Repository\RecurringOrderRepositoryInterface; +use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { exit; @@ -37,6 +40,11 @@ class MollieRecurringOrderDetailModuleFrontController extends AbstractMollieCont */ public function postProcess() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + if (Tools::isSubmit('submitUpdatePaymentMethod')) { $this->updatePaymentMethod(); } @@ -44,6 +52,8 @@ public function postProcess() if (Tools::isSubmit('submitCancelSubscriptionMethod')) { $this->cancelSubscription(); } + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } /** @@ -53,6 +63,9 @@ public function postProcess() */ public function initContent() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + $recurringOrderId = (int) Tools::getValue('id_mol_recurring_order'); $recurringOrderId = Validate::isUnsignedId($recurringOrderId) ? $recurringOrderId : false; @@ -67,7 +80,10 @@ public function initContent() 'id_mol_recurring_order' => $recurringOrderId, ]); } catch (\Throwable $exception) { - // TODO add notification about data retrieve failure + $logger->error('Data retrieve failure', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), + ]); Tools::redirect($failureRedirectUrl); @@ -80,8 +96,8 @@ public function initContent() return; } - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); + /** @var Logger $logger */ + $logger = $this->module->getService(LoggerInterface::class); /** @var RecurringOrderPresenter $recurringOrderPresenter */ $recurringOrderPresenter = $this->module->getService(RecurringOrderPresenter::class); @@ -93,8 +109,8 @@ public function initContent() ]); } catch (Throwable $exception) { $logger->error('Failed to present subscription order', [ - 'Exception message' => $exception->getMessage(), - 'Exception code' => $exception->getCode(), + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), ]); Tools::redirect($failureRedirectUrl); diff --git a/controllers/front/return.php b/controllers/front/return.php index 0fb44e7f6..c74a90fa3 100644 --- a/controllers/front/return.php +++ b/controllers/front/return.php @@ -15,6 +15,8 @@ use Mollie\Config\Config; use Mollie\Controller\AbstractMollieController; use Mollie\Factory\CustomerFactory; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Repository\PaymentMethodRepository; use Mollie\Service\PaymentReturnService; use Mollie\Utility\ArrayUtility; @@ -48,6 +50,11 @@ class MollieReturnModuleFrontController extends AbstractMollieController */ public function initContent() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $idCart = (int) Tools::getValue('cart_id'); $key = Tools::getValue('key'); $orderNumber = Tools::getValue('order_number'); @@ -139,6 +146,8 @@ public function initContent() } else { $this->setTemplate('mollie_return.tpl'); } + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } /** diff --git a/controllers/front/subscriptionUpdateWebhook.php b/controllers/front/subscriptionUpdateWebhook.php index 704434d0a..89563b47f 100644 --- a/controllers/front/subscriptionUpdateWebhook.php +++ b/controllers/front/subscriptionUpdateWebhook.php @@ -15,8 +15,11 @@ use Mollie\Errors\Http\HttpStatusCode; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Infrastructure\Response\JsonResponse; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Subscription\Handler\SubscriptionPaymentMethodUpdateHandler; +use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { exit; @@ -46,8 +49,10 @@ protected function displayMaintenancePage() public function initContent() { - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); /** @var ErrorHandler $errorHandler */ $errorHandler = $this->module->getService(ErrorHandler::class); @@ -111,8 +116,8 @@ public function initContent() $subscriptionPaymentMethodUpdateHandler->handle($transactionId, $subscriptionId); } catch (\Throwable $exception) { $logger->error('Failed to handle subscription update', [ - 'Exception message' => $exception->getMessage(), - 'Exception code' => $exception->getCode(), + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), ]); $errorHandler->handle($exception, null, false); @@ -127,7 +132,7 @@ public function initContent() $this->releaseLock(); - $logger->info(sprintf('%s - Controller action ended', self::FILE_NAME)); + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); $this->ajaxResponse(JsonResponse::success([])); } diff --git a/controllers/front/subscriptionWebhook.php b/controllers/front/subscriptionWebhook.php index 1c524a507..7a417fcf0 100644 --- a/controllers/front/subscriptionWebhook.php +++ b/controllers/front/subscriptionWebhook.php @@ -15,8 +15,11 @@ use Mollie\Errors\Http\HttpStatusCode; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Infrastructure\Response\JsonResponse; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Subscription\Handler\RecurringOrderHandler; +use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { exit; @@ -46,8 +49,10 @@ protected function displayMaintenancePage() public function initContent() { - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); /** @var ErrorHandler $errorHandler */ $errorHandler = $this->module->getService(ErrorHandler::class); @@ -99,8 +104,8 @@ public function initContent() $recurringOrderHandler->handle($transactionId); } catch (\Throwable $exception) { $logger->error('Failed to handle recurring order', [ - 'Exception message' => $exception->getMessage(), - 'Exception code' => $exception->getCode(), + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), ]); $errorHandler->handle($exception, null, false); @@ -115,7 +120,7 @@ public function initContent() $this->releaseLock(); - $logger->info(sprintf('%s - Controller action ended', self::FILE_NAME)); + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); $this->ajaxResponse(JsonResponse::success([])); } diff --git a/controllers/front/subscriptions.php b/controllers/front/subscriptions.php index 3ad31e3fc..2f273f75b 100644 --- a/controllers/front/subscriptions.php +++ b/controllers/front/subscriptions.php @@ -10,6 +10,8 @@ * @codingStandardsIgnoreStart */ +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Repository\MolCustomerRepositoryInterface; use Mollie\Subscription\Presenter\RecurringOrdersPresenter; @@ -38,6 +40,8 @@ class mollieSubscriptionsModuleFrontController extends ModuleFrontController { + private const FILE_NAME = 'subscriptions'; + /** * @var Mollie */ @@ -54,6 +58,11 @@ class mollieSubscriptionsModuleFrontController extends ModuleFrontController public function initContent() { + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); + $this->display_column_right = false; $this->display_column_left = false; @@ -75,6 +84,8 @@ public function initContent() $this->prepareTemplate( $molCustomer ? $recurringOrdersPresenter->present($molCustomer->customer_id) : [] ); + + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); } public function setMedia() diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index abca3b115..37d0850c0 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -10,6 +10,7 @@ * @codingStandardsIgnoreStart */ +use Invertus\Faire\Infrastructure\Utility\ExceptionUtility; use Mollie\Adapter\ToolsAdapter; use Mollie\Api\Exceptions\ApiException; use Mollie\Controller\AbstractMollieController; @@ -17,6 +18,8 @@ use Mollie\Exception\TransactionException; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Infrastructure\Response\JsonResponse; +use Mollie\Logger\Logger; +use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Service\TransactionService; use Mollie\Utility\TransactionUtility; @@ -49,14 +52,14 @@ protected function displayMaintenancePage() public function initContent(): void { - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + + $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); /** @var ToolsAdapter $tools */ $tools = $this->module->getService(ToolsAdapter::class); - $logger->info(sprintf('%s - Controller called', self::FILE_NAME)); - if (!$this->module->getApiClient()) { $logger->error(sprintf('Unauthorized in %s', self::FILE_NAME)); @@ -104,7 +107,7 @@ public function initContent(): void $this->releaseLock(); - $logger->info(sprintf('%s - Controller action ended', self::FILE_NAME)); + $logger->debug(sprintf('%s - Controller action ended', self::FILE_NAME)); $this->ajaxResponse(JsonResponse::success([])); } @@ -117,6 +120,9 @@ protected function executeWebhook(string $transactionId): void /** @var TransactionService $transactionService */ $transactionService = $this->module->getService(TransactionService::class); + /** @var Logger $logger **/ + $logger = $this->module->getService(LoggerInterface::class); + if (TransactionUtility::isOrderTransaction($transactionId)) { $transaction = $this->module->getApiClient()->orders->get($transactionId, ['embed' => 'payments']); } else { @@ -131,6 +137,7 @@ protected function executeWebhook(string $transactionId): void if (!$cartId) { // TODO webhook structure will change, no need to create custom exception for one time usage + $logger->error(sprintf('Missing Cart ID. Transaction ID: [%s]', $transactionId)); throw new \Exception(sprintf('Missing Cart ID. Transaction ID: [%s]', $transactionId), HttpStatusCode::HTTP_NOT_FOUND); } @@ -152,15 +159,15 @@ private function setContext(int $cartId): void private function handleException(Throwable $exception, int $httpStatusCode, string $logMessage): void { - /** @var PrestaLoggerInterface $logger */ - $logger = $this->module->getService(PrestaLoggerInterface::class); + /** @var Logger $logger */ + $logger = $this->module->getService(LoggerInterface::class); /** @var ErrorHandler $errorHandler */ $errorHandler = $this->module->getService(ErrorHandler::class); - $logger->error($logMessage, [ - 'Exception message' => $exception->getMessage(), - 'Exception code' => $httpStatusCode, + $logger->error('An error occurred when creating mollie payment', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($exception), ]); $errorHandler->handle($exception, $httpStatusCode, false); diff --git a/src/Logger/Logger.php b/src/Logger/Logger.php index 9abb47357..ea4a1908e 100644 --- a/src/Logger/Logger.php +++ b/src/Logger/Logger.php @@ -72,7 +72,7 @@ public function alert($message, array $context = []) public function critical($message, array $context = []) { $this->log( - $this->configuration->getAsInteger( // todo + $this->configuration->getAsInteger( 'PS_LOGS_BY_EMAIL', $this->context->getShopId() ), @@ -103,7 +103,11 @@ public function info($message, array $context = []) public function debug($message, array $context = []) { - if (!$this->configuration->get(Config::MOLLIE_DEBUG_LOG)) { // todo check for value + if ((int) $this->configuration->get(Config::MOLLIE_DEBUG_LOG) === Config::DEBUG_LOG_NONE) { + return; + } + + if ((int) $this->configuration->get(Config::MOLLIE_DEBUG_LOG) === Config::DEBUG_LOG_ERRORS) { return; } diff --git a/src/ServiceProvider/BaseServiceProvider.php b/src/ServiceProvider/BaseServiceProvider.php index eb12124ee..39ae3a454 100644 --- a/src/ServiceProvider/BaseServiceProvider.php +++ b/src/ServiceProvider/BaseServiceProvider.php @@ -269,6 +269,10 @@ public function register(Container $container) $this->addService($container, PrestashopLoggerRepositoryInterface::class, PrestashopLoggerRepository::class); $this->addService($container, MolLogRepositoryInterface::class, MolLogRepository::class); + $this->addService($container, LogFormatterInterface::class, LogFormatter::class); + + $service = $this->addService($container, EntityManagerInterface::class, ObjectModelEntityManager::class); + $this->addServiceArgument($service, ObjectModelUnitOfWork::class); $service = $this->addService($container, LoggerInterface::class, Logger::class); $this->addServiceArgument($service, LogFormatterInterface::class); @@ -277,11 +281,6 @@ public function register(Container $container) $this->addServiceArgument($service, EntityManagerInterface::class); $this->addServiceArgument($service, NumberIdempotencyProvider::class); $this->addServiceArgument($service, PrestashopLoggerRepositoryInterface::class); - - $this->addService($container, LogFormatterInterface::class, LogFormatter::class); - - $service = $this->addService($container, EntityManagerInterface::class, ObjectModelEntityManager::class); - $this->addServiceArgument($service, ObjectModelUnitOfWork::class); } private function addService(Container $container, $className, $service) From 2ebd7d2e20f7f61a0b448e799eb2742ea228909a Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 17 Sep 2024 10:47:17 +0300 Subject: [PATCH 39/74] it translations updated --- translations/it.php | 254 +++++++++++++++++++++----------------------- 1 file changed, 122 insertions(+), 132 deletions(-) diff --git a/translations/it.php b/translations/it.php index a2aa0b3d1..6a59e5bae 100644 --- a/translations/it.php +++ b/translations/it.php @@ -1,50 +1,40 @@ - - * @copyright Mollie B.V. - * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md - * - * @see https://github.com/mollie/PrestaShop - * @codingStandardsIgnoreStart - */ +mollie_7c478959c218087ffc4ad5d96e7f66a6'] = 'Mollie'; -$_MODULE['<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5'] = 'Pagamenti Mollie'; -$_MODULE['<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac'] = 'Sta utilizzando una versione PHP non aggiornata. La preghiamo di aggiornare la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive.'; +$_MODULE['<{mollie}prestashop>mollie_95b3b272e06dcc3cc2aa62f6887aebc5'] = 'Mollie Payments'; +$_MODULE['<{mollie}prestashop>mollie_6bedf641eb10773a0069acb02fd7f8ac'] = 'Stai utilizzando una versione PHP non aggiornata. Aggiorna la versione di PHP per utilizzare questo modulo. Il modulo Mollie supporta le versioni PHP 7.2.0 e successive'; $_MODULE['<{mollie}prestashop>mollie_46e2d06b80d816b2916f1f27492fbabd'] = 'Non è stato possibile installare il modulo'; -$_MODULE['<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2'] = 'Grazie. Abbiamo ricevuto il pagamento.'; +$_MODULE['<{mollie}prestashop>mollie_f51ae8e015ae0be2c4a8d5b9ee160ac2'] = 'Grazie. Abbiamo ricevuto il tuo pagamento'; $_MODULE['<{mollie}prestashop>mollie_a34a6659bceae779f28185e757abfca5'] = 'AJAX'; $_MODULE['<{mollie}prestashop>mollie_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; $_MODULE['<{mollie}prestashop>mollie_79b279ae50c49015bbc70cb91ed8e7c7'] = 'FAQ Abbonamenti'; $_MODULE['<{mollie}prestashop>mollie_f9c43173e5db74a01dd11ce73fbbb237'] = 'Link di pagamento'; $_MODULE['<{mollie}prestashop>mollie_da72870a79e82cbcbffe83612e5d7968'] = ' please contact Mollie support with this screenshot and they will guide through the next steps: info@mollie.com'; $_MODULE['<{mollie}prestashop>mollie_ab552f085567bbe63872c10a3596cd27'] = 'Errore di pagamento:'; -$_MODULE['<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57'] = 'Il cliente deve aver effettuato il login per acquistare l\'elemento in abbonamento.'; -$_MODULE['<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c'] = 'Non è possibile rimuovere l\'indirizzo associato all\'abbonamento'; +$_MODULE['<{mollie}prestashop>mollie_76303c4f7c410bdc9ac636c63ce2dd57'] = 'Il cliente deve aver effettuato il login per acquistare articoli in abbonamento'; +$_MODULE['<{mollie}prestashop>mollie_44572b4daf09470411df1b114f34472c'] = 'Non puoi rimuovere l\'indirizzo associato all\'abbonamento'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_38af3b4b766a41e7abd5a67b30aa3252'] = 'Creazione di abbonamento'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_d24892cee2206a282f2da551c9b3a304'] = ' assign it a Mollie subscription attribute.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_81c97809c908ee9375f3e00fca33ef83'] = 'Punti IMPORTANTI'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_3e069600ef900b2e98f23b727cd100cf'] = ' make sure you always include \'none\' as a fallback.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_c13d080743619c08b7490506b659d621'] = 'Punti IMPORTANTI sul vettore per l\'abbonamento '; -$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f'] = 'Si assicuri di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_eb0b4ddca36b363a427bf335c5c3550f'] = 'Assicurati di selezionare il vettore predefinito per gli ordini ricorrenti nelle impostazioni avanzate'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_b9aefba8e2f89d7bffc685b64aa0d736'] = 'Il vettore dovrebbe coprire tutte le regioni supportate dal negozio.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_4c47d0a7f71225d19b24b78aac64902f'] = 'Il vettore non può essere cambiato dopo che è stato effettuato il primo ordine di abbonamento.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_0f6a3974ead9594357aab192664a7eb5'] = ' subscription orders must be cancelled and carrier re-selected in module settings.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_3b8c8bf8ab2226d5a44454a20ad7fafb'] = 'Regole del carrello'; -$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc'] = 'Non utilizzare le regole del carrello con i prodotti in abbonamento per non incorrere in errori dovuti a prezzi errati.'; +$_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_77667491a6d007a7062b669917599bbc'] = 'Non utilizzare le regole del carrello con i prodotti in abbonamento'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_484f5a79672cebe198ebdde45a1d672f'] = 'Confezioni regalo'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_f5f883e559bd9ec0885fc6397a5aedcc'] = 'La funzione di confezione regalo non è supportata per gli ordini in abbonamento.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_ca1e79f242bd752219bcd277c81388c1'] = 'Creazione di ordini ricorrenti'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_8d94b7e95d45f3794e5954d07096d1e6'] = 'Mollie for Prestashop crea automaticamente un nuovo ordine quando l\'ordine precedente viene pagato.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_fefdd14033551369993a8f0f381844b4'] = 'Gli ordini ricorrenti utilizzano sempre il prezzo del prodotto specificato al momento della creazione del relativo abbonamento.'; $_MODULE['<{mollie}prestashop>subscriptionfaqcontroller_8fd39e0e481c4f296e74f28779c7aee1'] = 'L\'ordine ricorrente sovrascriverà l\'impostazione del ?Metodo? di pagamento e utilizzerà il Payments API di Mollie.'; -$_MODULE['<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Selezionare il negozio che desidera configurare'; -$_MODULE['<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88'] = 'Impossibile salvare le opzioni. Riprovare o contattare l\'assistenza.'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Seleziona il negozio che vuoi configurare'; +$_MODULE['<{mollie}prestashop>subscriptioncontroller_d397e034dae1adee47e6d4a91df4aa88'] = 'Non è stato possibile salvare le opzioni. Riprova o contatta l\'assistenza'; $_MODULE['<{mollie}prestashop>subscriptioncontroller_d52009581ee35883c8d5fb0fb6e87bbf'] = 'Opzioni salvate con successo.'; $_MODULE['<{mollie}prestashop>subscriptioncontroller_6b7c88b7c128f8c430c993211ba24e06'] = 'Vettore non trovato'; $_MODULE['<{mollie}prestashop>subscriptioncontroller_78a9815ae364d67deb2b8427ea6c6a95'] = 'Annullato con successo'; @@ -59,9 +49,9 @@ $_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_0eede552438475bdfe820c13f24c9399'] = 'Prezzo totale'; $_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_386c339d37e737a436499d423a77df0c'] = 'Valuta'; $_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_06df33001c1d7187fdd81ea1f5b277aa'] = 'Azioni'; -$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; -$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76'] = 'Annullare l\'abbonamento selezionato?'; -$_MODULE['<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962'] = 'Selezionare il suo vettore'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_ea4788705e6873b424c65e91c2846b19'] = 'Annulla'; +$_MODULE['<{mollie}prestashop>subscriptiongriddefinitionfactory_805a483e4f806eb7f6d44661b90e0d76'] = 'Annulla l\'abbonamento selezionato'; +$_MODULE['<{mollie}prestashop>subscriptionoptionstype_d27f3c2977da307854a974ade1316962'] = 'Seleziona il tuo vettore'; $_MODULE['<{mollie}prestashop>attributeinstaller_142d1355d40f10a77bb020f57efb2205'] = 'Non è stato possibile aggiungere gli attributi'; $_MODULE['<{mollie}prestashop>attributeuninstaller_90ff30630b1f92f3faab5e841e0743bf'] = 'Non è stato possibile cancellare degli attributi'; $_MODULE['<{mollie}prestashop>abstractmolliecontroller_dbfd87145ffce60928d0790df013993d'] = 'Conflitto di risorse'; @@ -71,30 +61,30 @@ $_MODULE['<{mollie}prestashop>formbuilder_0cbc6611f5540bd0809a388dc95a615b'] = 'Test'; $_MODULE['<{mollie}prestashop>formbuilder_955ad3298db330b5ee880c2c9e6f23a0'] = 'Live'; $_MODULE['<{mollie}prestashop>formbuilder_4960b33741696799508da451687efccd'] = 'Test della chiave API'; -$_MODULE['<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e'] = 'Accedere al proprio [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live.'; -$_MODULE['<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a'] = 'Chiave API live'; -$_MODULE['<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c'] = 'Chiave API di test'; -$_MODULE['<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19'] = 'Ha già un account Mollie?'; +$_MODULE['<{mollie}prestashop>formbuilder_0b9b6233430526f6e791aec72fea349e'] = 'Accedi al tuo [1]account Mollie[/1] per ottenere le chiavi API. Iniziano con test e live'; +$_MODULE['<{mollie}prestashop>formbuilder_1460d8f2c6a41fef185dfbf0e09bc83a'] = 'Chiave Live API'; +$_MODULE['<{mollie}prestashop>formbuilder_0408302fc36580b66e3417aa178c7f1c'] = 'Chiave Test API'; +$_MODULE['<{mollie}prestashop>formbuilder_48b55607a3eeefcff54c4ab448f97b19'] = 'Hai già un account Mollie?'; $_MODULE['<{mollie}prestashop>formbuilder_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Abilitato'; $_MODULE['<{mollie}prestashop>formbuilder_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabilitato'; -$_MODULE['<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6'] = 'Può trovare la sua chiave API nel suo [1]Profilo Mollie[/1]'; -$_MODULE['<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded'] = 'Chiave API Live'; -$_MODULE['<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9'] = 'Utilizza Mollie Components per le carte di credito'; -$_MODULE['<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57'] = 'Leggere di più su [1]Mollie Components[/1] e come migliorano la conversione.'; -$_MODULE['<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b'] = 'Leggere di più su Mollie Components e come migliorano la conversione'; -$_MODULE['<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5'] = 'Utilizzare pagamenti con un solo clic per le carte di credito'; -$_MODULE['<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0'] = 'Per saperne di più su [1]Pagamenti con un solo clic[/1] e come migliorano la conversione.'; +$_MODULE['<{mollie}prestashop>formbuilder_9170bcfedaabf0c63ac0c83ce5858dc6'] = 'Puoi trovare la tua chiave API nel tuo [1]Profilo Mollie[/1]'; +$_MODULE['<{mollie}prestashop>formbuilder_646135a12f4ae070d40da46430daaded'] = 'Chiave Live API'; +$_MODULE['<{mollie}prestashop>formbuilder_7d0c43b98588c17b05056fc083510ab9'] = 'Usa Mollie Components per le carte di credito'; +$_MODULE['<{mollie}prestashop>formbuilder_bfc84235d9d3895be4cfa0ee0412af57'] = 'Leggi di più su [1]Mollie Components[/1] e come migliorano la tua conversione'; +$_MODULE['<{mollie}prestashop>formbuilder_909af42213273854f58bea8d7808eb6b'] = 'Leggi di più su Mollie Components e come migliorano la tua conversione'; +$_MODULE['<{mollie}prestashop>formbuilder_9c9958bac135060c84f718c61923e6c5'] = 'Usa i pagamenti con un solo clic per le carte di credito'; +$_MODULE['<{mollie}prestashop>formbuilder_92968265b3faf1ec015af33113d500c0'] = 'Leggi di più sui [1]Pagamenti con un solo clic[/1] e come migliorano la tua conversione'; $_MODULE['<{mollie}prestashop>formbuilder_0da8d9a75492046bea7f314521e07cae'] = 'Metodi di pagamento'; $_MODULE['<{mollie}prestashop>formbuilder_74dbaca44b19c1c92febdedec6166a49'] = '[1]Scopri di più[/1] sulle differenze tra Payments API e Orders API.'; -$_MODULE['<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269'] = 'Disponibile solo con la sua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR.'; +$_MODULE['<{mollie}prestashop>formbuilder_f61403acdc1d08c30cbcf22c618ca269'] = 'Disponibile solo con la tua chiave Live API e Payments API. [1]Per saperne di più[/1] sui codici QR'; $_MODULE['<{mollie}prestashop>formbuilder_32ab57c87500f2183d67824e6c87b47f'] = 'Usa il locale selezionato nel webshop'; $_MODULE['<{mollie}prestashop>formbuilder_de0cfd39a173ec704a040cc290a8efe6'] = ' your shop uses the browser\'s locale. '; -$_MODULE['<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f'] = 'Utilizza il locale del webshop'; -$_MODULE['<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419'] = 'Utilizza il locale del browser'; +$_MODULE['<{mollie}prestashop>formbuilder_038ad19c73f8b677ecbe6c6b20d7629f'] = 'Usa il locale del webshop'; +$_MODULE['<{mollie}prestashop>formbuilder_94ba578e5e5d9aa8a86254825c7e1419'] = 'Usa il locale del browser'; $_MODULE['<{mollie}prestashop>formbuilder_92096d969b04d49647628839ec4f1135'] = 'Invia l\'e-mail di conferma dell\'ordine'; -$_MODULE['<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb'] = 'Quando l\'ordine viene pagato'; +$_MODULE['<{mollie}prestashop>formbuilder_14e89590ba118ac8104d558332f0dfcb'] = 'Quando l\'ordine è pagato'; $_MODULE['<{mollie}prestashop>formbuilder_6e7b34fa59e1bd229b207892956dc41c'] = 'Mai'; -$_MODULE['<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844'] = 'Selezionare quando creare la fattura dell\'Ordine'; +$_MODULE['<{mollie}prestashop>formbuilder_c661f63930e98aaa930c2e9210181844'] = 'Seleziona quando creare la fattura dell\'ordine'; $_MODULE['<{mollie}prestashop>formbuilder_7a1920d61156abc05a60135aefe8bc67'] = 'Predefinito'; $_MODULE['<{mollie}prestashop>formbuilder_feb60fbcfdaa2db807f0d1f9e48696b3'] = 'Autorizzato'; $_MODULE['<{mollie}prestashop>formbuilder_747cf5c8587184b9e489ff897d97c20d'] = 'Spedito'; @@ -102,12 +92,12 @@ $_MODULE['<{mollie}prestashop>formbuilder_e6bbc38dfcf7ef9277455126a3265ea2'] = 'I pagamenti di `%s` ottengono lo stato di `%s`.'; $_MODULE['<{mollie}prestashop>formbuilder_c7b8fe7d300a1931137ed822ca0bc039'] = 'Invia un\'e-mail a %s'; $_MODULE['<{mollie}prestashop>formbuilder_ca8c581b923a595b83808bb3abfe3a1c'] = ' self::FILE_NAME'; -$_MODULE['<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605'] = 'Saltare questo stato'; +$_MODULE['<{mollie}prestashop>formbuilder_7aace0dc23ee8b74744bdf79c98a2605'] = 'Salta questo stato'; $_MODULE['<{mollie}prestashop>formbuilder_33af8066d3c83110d4bd897f687cedd2'] = 'Stati dell\'ordine'; $_MODULE['<{mollie}prestashop>formbuilder_8bfe6d183da9aedb9d813187c08a0983'] = 'Impostazioni visive'; $_MODULE['<{mollie}prestashop>formbuilder_fff0d600f8a0b5e19e88bfb821dd1157'] = 'Immagini'; $_MODULE['<{mollie}prestashop>formbuilder_ba5bb6d9e1e2c29692a2a765d8e36219'] = ' normal'; -$_MODULE['<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondere'; +$_MODULE['<{mollie}prestashop>formbuilder_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondi'; $_MODULE['<{mollie}prestashop>formbuilder_960b44c579bc2f6818d2daaf9e4c16f0'] = 'Normale'; $_MODULE['<{mollie}prestashop>formbuilder_d491538da818a2ba11a3195ba035cfd3'] = 'Grande'; $_MODULE['<{mollie}prestashop>formbuilder_1547ffc579d657d13fd5fedf12cbfae5'] = 'File CSS'; @@ -118,10 +108,10 @@ $_MODULE['<{mollie}prestashop>formbuilder_c1df8a5243557cbd8a7a31c11aab3db4'] = 'Spedisci automaticamente quando uno di questi stati è raggiunto'; $_MODULE['<{mollie}prestashop>formbuilder_457407a27f479866bdc59408d4fdc988'] = ' the module automatically sends shipment information'; $_MODULE['<{mollie}prestashop>formbuilder_498f79c4c5bbde77f1bceb6c86fd0f6d'] = 'Mostra'; -$_MODULE['<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8'] = 'Disattivare questo stato'; +$_MODULE['<{mollie}prestashop>formbuilder_4695fd3a22023ab53a2151f797975ff8'] = 'Disattiva questo stato'; $_MODULE['<{mollie}prestashop>formbuilder_dc6e4b439165a4e104c9f3cbfcfe2797'] = 'Livello di debug'; $_MODULE['<{mollie}prestashop>formbuilder_500aa80d6aea3cc9701b566c5f92ed91'] = 'Mostra errori'; -$_MODULE['<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9'] = 'Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizzare solo per il debugging.'; +$_MODULE['<{mollie}prestashop>formbuilder_cab709fdb87c17638983cc611a0bd2b9'] = 'Abilita per mostrare i messaggi di errore completi nel negozio online. Utilizza solo per il debugging'; $_MODULE['<{mollie}prestashop>formbuilder_e5114c4b69585ba5883d456a74c1cd5d'] = 'Livello di log'; $_MODULE['<{mollie}prestashop>formbuilder_921a6d905eef99631c9c73c317799e62'] = 'Livello raccomandato: Errori. Imposta su Tutto per monitorare le richieste webhook in arrivo. [1]Visualizza i log.[/1]'; $_MODULE['<{mollie}prestashop>formbuilder_f80a4ad87fee7c9fdc19b7769495fdb5'] = 'Nessuno'; @@ -129,13 +119,13 @@ $_MODULE['<{mollie}prestashop>formbuilder_709468af25e91284821d1bdbfdded24c'] = 'Tutto'; $_MODULE['<{mollie}prestashop>formbuilder_de62775a71fc2bf7a13d7530ae24a7ed'] = 'Impostazioni generali'; $_MODULE['<{mollie}prestashop>formbuilder_fe4c6a5e7bd6793b37370e4e46daf998'] = 'Impostazioni avanzate'; -$_MODULE['<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tutti'; +$_MODULE['<{mollie}prestashop>countryservice_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tutto'; $_MODULE['<{mollie}prestashop>mailservice_ed13b3693357ebed3751cb71cb639e65'] = 'Nessun vettore'; -$_MODULE['<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81'] = 'Nuovo buono per il suo ordine %s'; -$_MODULE['<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546'] = 'Si è verificato un errore durante l\'inizializzazione del pagamento. La preghiamo di contattare il nostro servizio clienti.'; -$_MODULE['<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885'] = 'Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di fatturazione. La preghiamo di modificare il numero e riprovare.'; -$_MODULE['<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f'] = 'Sembra che abbia inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di spedizione. La preghiamo di modificare il numero e riprovare.'; -$_MODULE['<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5'] = 'L\'opzione di pagamento scelta non è disponibile per l\'importo totale del suo ordine. La preghiamo di considerare un\'altra opzione di pagamento e riprovare.'; +$_MODULE['<{mollie}prestashop>mailservice_fca7e8d1c86db11246e429e40aa10c81'] = 'Nuovo buono per il tuo ordine %s'; +$_MODULE['<{mollie}prestashop>exceptionservice_c2f73af3130be4b4967a475ab846c546'] = 'Si è verificato un errore durante l\'inizializzazione del pagamento. Per favore contatta la nostra assistenza clienti'; +$_MODULE['<{mollie}prestashop>exceptionservice_8fd8f922a86b3622988898a8da551885'] = 'Sembra che hai inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di fatturazione. Per favore modifica il numero e riprova.'; +$_MODULE['<{mollie}prestashop>exceptionservice_68b9bbd9d890e51e2127e4e90b0b5b5f'] = 'Sembra che hai inserito un formato di numero di telefono errato nel passaggio dell\'indirizzo di spedizione. Per favore modifica il numero e riprova.'; +$_MODULE['<{mollie}prestashop>exceptionservice_108f5defcbead775ce45ff2a78e588e5'] = 'L\'opzione di pagamento scelta non è disponibile per l\'importo totale del tuo ordine. Si prega di considerare un\'altra opzione di pagamento e riprovare.'; $_MODULE['<{mollie}prestashop>exceptionservice_937929bed64aacbd3993a735493efeef'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di spedizione.'; $_MODULE['<{mollie}prestashop>exceptionservice_9a0534c60f4e5a21b1f454e768b88870'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) non contiene informazioni di pagamento.'; $_MODULE['<{mollie}prestashop>exceptionservice_297b3145aec456c3df61ac592533196d'] = 'Le informazioni sulla spedizione non possono essere inviate. L\'ordine di riferimento (%s) è un pagamento regolare.'; @@ -143,7 +133,7 @@ $_MODULE['<{mollie}prestashop>settingssaveservice_1f93fc361bfc627c89a46e1b6c28df2b'] = 'La chiave API deve iniziare con test o live.'; $_MODULE['<{mollie}prestashop>settingssaveservice_3edebc882ca3c4ed5346f3daa6c60f45'] = 'Chiave API sbagliata!'; $_MODULE['<{mollie}prestashop>settingssaveservice_d0fb18e6788aea02c962decbe15918ab'] = 'Qualcosa è andato storto. Non è stato possibile salvare i metodi di pagamento'; -$_MODULE['<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04'] = 'Conceda i permessi per la cartella o visiti [1]ApplePay[/1] per vedere come aggiungerla manualmente.'; +$_MODULE['<{mollie}prestashop>settingssaveservice_1437630a92a84bc747757e3f1022ee04'] = 'Concedi i permessi per la cartella o visita [1]ApplePay[/1] per vedere come aggiungerli manualmente'; $_MODULE['<{mollie}prestashop>settingssaveservice_342886361b594a2909b0e3b6bf9a5408'] = ' please try resetting Mollie module.'; $_MODULE['<{mollie}prestashop>settingssaveservice_6ab1adfed768d989b47c908755fe677f'] = 'La configurazione è stata salvata!'; $_MODULE['<{mollie}prestashop>refundservice_7d4272540fdafa5fad96a0a6ec5166df'] = 'L\'ordine non poteva essere rimborsato!'; @@ -168,11 +158,11 @@ $_MODULE['<{mollie}prestashop>cancelservice_324b178753a80ddbe85bc5c2bc64636c'] = 'Non è stato possibile annullare i prodotti!'; $_MODULE['<{mollie}prestashop>shipservice_0f251428a8b2c8c90b0f8d8bbd6556cd'] = 'Non è stato possibile spedire i prodotti!'; $_MODULE['<{mollie}prestashop>molliepaymentmailservice_4c35c2333b8091a076a4c2d1db8709e1'] = 'Non è stato possibile creare l\'email di seconda possibilità!'; -$_MODULE['<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2'] = 'Non è stato possibile creare un\'e-mail di seconda possibilità - errore API'; -$_MODULE['<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d'] = 'Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato!'; -$_MODULE['<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7'] = 'L\'e-mail di seconda possibilità è stata inviata con successo!'; -$_MODULE['<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e'] = 'Non è stato possibile inviare l\'e-mail di seconda possibilità! L\'ordine è già stato pagato o è scaduto!'; -$_MODULE['<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18'] = 'Invierà nuovamente un\'email con il link di pagamento al cliente'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_0c278e7f327f2058a1b759691f838de2'] = 'Non è stato possibile creare un\'email di seconda possibilità - errore API'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_f8347b8a83efc618a7d74089a58a351d'] = 'Non è stato possibile inviare l\'email di seconda possibilità! L\'ordine è già stato pagato!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_21ca2c7b403a7963dc174b3892a10bc7'] = 'L\'email di seconda possibilità è stata inviata con successo!'; +$_MODULE['<{mollie}prestashop>molliepaymentmailservice_7d4e9f222469e74d17fde11ca66e587e'] = 'Non è stato possibile inviare l\'email di seconda possibilità! L\'ordine è già stato pagato o è scaduto!'; +$_MODULE['<{mollie}prestashop>orderlistactionbuilder_5678cf484b844064515349752b1ccb18'] = 'Invierai nuovamente un\'email con il link di pagamento al cliente'; $_MODULE['<{mollie}prestashop>updatemessageprovider_048ef1905ff33382d7660a68a6199305'] = 'Attenzione: Non è stato possibile recuperare il file xml di aggiornamento da github.'; $_MODULE['<{mollie}prestashop>updatemessageprovider_711d42f319398490b32cd0e2f0b8ccb8'] = 'Attenzione: Il file xml di aggiornamento da github segue un formato inaspettato.'; $_MODULE['<{mollie}prestashop>idealpaymentoptionprovider_0b135af05e690cf2fca288a143759716'] = 'Commissione di pagamento: %1s'; @@ -183,60 +173,60 @@ $_MODULE['<{mollie}prestashop>createapplepayorderhandler_01d98a6c787e997dcb1c2e65935dcea2'] = 'Non è stato possibile creare una transazione Mollie.'; $_MODULE['<{mollie}prestashop>createapplepayorderhandler_f551e100249d06979879b69762f7370e'] = 'Non è stato possibile trovare l\'ordine corrispondente al carrello.'; $_MODULE['<{mollie}prestashop>installer_8aef54a7e234af543698d0eb818e576a'] = 'Non è stato possibile installare gli stati di Mollie'; -$_MODULE['<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f'] = 'Non è stato possibile installare la configurazione'; +$_MODULE['<{mollie}prestashop>installer_2a1cc1f6a56903156703cf4f997a640f'] = 'Non è stato possibile installare config'; $_MODULE['<{mollie}prestashop>installer_a473868cd56c59f4cee5d511a29ef3f8'] = 'Non è stato possibile installare gli stati predefiniti del vettore'; $_MODULE['<{mollie}prestashop>installer_77240e73b3e9b64c47052880f87b6a8b'] = 'Non è stato possibile installare gli attributi del voucher'; -$_MODULE['<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c'] = 'Non è stato possibile copiare i modelli di e-mail:'; +$_MODULE['<{mollie}prestashop>installer_407748408f99fed49e067dee67df619c'] = 'Non è stato possibile copiare i modelli di email:'; $_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_5e3e4ef8f2ed24f34757f4bea44660d6'] = 'Non è stato possibile creare una directory per il certificato apple pay direct'; $_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_6d1a1343d17c6e8aa72d0e4c7b0fe6a6'] = 'Non è stato possibile creare una cartella perché mancano i permessi di scrittura:'; $_MODULE['<{mollie}prestashop>applepaydirectcertificatehandler_4b2c49344e2ee0dfb2fe0187e85006b5'] = 'Non è stato possibile copiare il certificato apple pay direct'; -$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415'] = 'Caricare un file .jpg o .png.'; -$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e'] = 'Si è verificato un errore durante il caricamento del logo.'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_0753ca16446b5bbb04afc9e00a079415'] = 'Carica un file .jpg o .png.'; +$_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_bfe103d948d5f7e7126aa1a13220d79e'] = 'Si è verificato un errore durante il caricamento del tuo logo.'; $_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_19db85bb27b89b6db9c3d46295710160'] = 'Nessuna commissione è stata inviata.'; $_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_038385a2334e67fa21ec3f7fcb08fa12'] = 'Commissione non valida'; $_MODULE['<{mollie}prestashop>adminmollieajaxcontroller_2969822535b8feef4920d105ae37ec6a'] = 'ID gruppo regole fiscali mancante'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e'] = 'Aggiornare il modulo Mollie'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Selezionare il negozio che si desidera configurare'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Selezionare lo stato dell\'ordine per \Stato in attesa di pagamento\ nella scheda \Impostazioni avanzate\.'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec'] = 'Inserire una descrizione'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd'] = 'L\'importo minimo inserito non è corretto'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_329d067eb590f966ceeaed2bacf99d8e'] = 'Per favore aggiorna il modulo Mollie'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_4a0df35e9183f634bdfda31938430cf4'] = 'Seleziona il negozio che vuoi configurare'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Selezionare lo stato dell\'ordine per "Stato in attesa di pagamento" nella scheda "Impostazioni avanzate".'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_a50d3d131d9daa7a4bbc3dc0aa71eeec'] = 'Inserisci una descrizione.'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_79e5e3c4ae741f839d9fba86491af0bd'] = 'L\'importo minimo inserito non è corretto.'; $_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_9f828c1c1bfd9a00710a62b9db1ae9f0'] = 'L\'importo massimo inserito non è corretto'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5'] = 'Caricare un\'immagine %s%x%s1%'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_dc89c7013e3451362e42e6507e9495c5'] = 'Carica un\'immagine %s%x%s1%'; $_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_29c9f9173adc3f11dce098b8095234bc'] = 'File non valido: %s%'; -$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a'] = 'Le tabelle del database sono mancanti. Reimpostare il modulo.'; +$_MODULE['<{mollie}prestashop>adminmolliesettingscontroller_6c8c16f8a394066a8f3f0a56597eb56a'] = 'Le tabelle del database sono mancanti. Reimposta il modulo.'; $_MODULE['<{mollie}prestashop>ajax_96b0141273eabab320119c467cdcaf17'] = 'Totale'; $_MODULE['<{mollie}prestashop>ajax_adc852563bca51fb6b10c7905010406d'] = 'Totale (tasse incluse)'; $_MODULE['<{mollie}prestashop>ajax_8faf99e02e4d0ccb4dd933404f87a4ea'] = 'Totale (tasse escluse)'; $_MODULE['<{mollie}prestashop>ajax_f6b587bf6c679ef85d87081927d93836'] = 'Attenzione: è possibile aggiungere al carrello un solo prodotto in abbonamento alla volta.'; -$_MODULE['<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645'] = 'Il servizio di abbonamento è disattivato. Modificare l\'attributo a Abbonamento: nessuno.'; -$_MODULE['<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179'] = 'Errore sconosciuto. Riprovare o modificare l\'attributo a Abbonamento: nessuno.'; +$_MODULE['<{mollie}prestashop>ajax_37978ed65eed73bebb3e77f81b3eb645'] = 'Il servizio di abbonamento è disattivato. Modifica l\'attributo a Abbonamento: nessuno.'; +$_MODULE['<{mollie}prestashop>ajax_95519f54dae99dd8640138bf750a2179'] = 'Errore sconosciuto. Riprova o modifica l\'attributo a Abbonamento: nessuno.'; $_MODULE['<{mollie}prestashop>recurringorderdetail_719998bd6f56db26319fa391238b21ac'] = 'Errore: token non valido.'; $_MODULE['<{mollie}prestashop>recurringorderdetail_d9db35b2599c7346411609d265ef48fe'] = 'Non è stato possibile ottenere il nuovo metodo di pagamento.'; $_MODULE['<{mollie}prestashop>recurringorderdetail_669d84e5441cf94ef5ad7e454f862fc8'] = 'Non è stato possibile ottenere un ordine ricorrente.'; $_MODULE['<{mollie}prestashop>recurringorderdetail_ace46baf149d2cd3e72e9e2d7e9030dd'] = 'L\'abbonamento è stato annullato con successo.'; -$_MODULE['<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f'] = 'Si è verificato un errore durante la creazione del pagamento. Contattare l\'assistenza clienti.'; +$_MODULE['<{mollie}prestashop>payment_70f9483ea2c46793fa11a5e1db1ba26f'] = 'Si è verificato un errore durante la creazione del pagamento. Contatta l\'assistenza clienti.'; $_MODULE['<{mollie}prestashop>payment_e6147f750d52d1483872fd56ff219067'] = 'Non è stato possibile salvare le informazioni dell\'ordine.'; $_MODULE['<{mollie}prestashop>return_4800c6edcc3810ee9c82cb22083c9f2e'] = 'Non esiste un ordine con questo ID.'; $_MODULE['<{mollie}prestashop>return_56a6035a7e7c1e1afa8169517367462d'] = 'Il pagamento è ancora in fase di elaborazione. Riceverà una notifica quando la banca o il commerciante confermeranno il pagamento./commerciante.'; -$_MODULE['<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227'] = 'Non è autorizzato a visualizzare questa pagina.'; -$_MODULE['<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf'] = 'Il pagamento non è andato a buon fine. La preghiamo di riprovare.'; -$_MODULE['<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0'] = 'Il pagamento non è riuscito perché gli importi dell\'ordine e del pagamento sono diversi. La preghiamo di riprovare.'; -$_MODULE['<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7'] = 'Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverà una notifica non appena riceveremo la conferma dalla banca/commerciante.'; -$_MODULE['<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7'] = 'Test chiave API: Fallito! La chiave deve iniziare con test_.'; -$_MODULE['<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847'] = 'Test chiave API: Riuscito!'; +$_MODULE['<{mollie}prestashop>return_5c9322dc182e8bea0b6c472495469227'] = 'Non sei autorizzato a visualizzare questa pagina.'; +$_MODULE['<{mollie}prestashop>return_4eb09eb8686ff437b3d31cd5aa2f5bbf'] = 'Il pagamento non è andato a buon fine. Riprova.'; +$_MODULE['<{mollie}prestashop>return_e854fe62ab224e46276912a3514ca2b0'] = 'Il pagamento non è riuscito perché gli importi dell\'ordine e del pagamento sono diversi. Riprova.'; +$_MODULE['<{mollie}prestashop>return_b34487c5f391f47b893ee3c61f8f9ab7'] = 'Non abbiamo ricevuto uno stato di pagamento definitivo. Riceverai una notifica non appena riceveremo la conferma dalla banca/commerciante.'; +$_MODULE['<{mollie}prestashop>api_test_results_7e3305352e66d78619cf51140c3d77a7'] = 'Chiave Test API: Fallita! La chiave deve iniziare con test_'; +$_MODULE['<{mollie}prestashop>api_test_results_8b4a27e207907c6eae2af4c520ed6847'] = 'Chiave Test API: Riuscita!'; $_MODULE['<{mollie}prestashop>api_test_results_06c42c0313dd08aa55b929e9611e9180'] = 'Metodi abilitati:'; -$_MODULE['<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7'] = 'Test chiave API: Fallito! La chiave non esiste.'; -$_MODULE['<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e'] = 'Chiave API live: Fallita! La chiave deve iniziare con live_.'; -$_MODULE['<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61'] = 'Chiave API live: Riuscito!'; -$_MODULE['<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439'] = 'Chiave API live: Fallita! La chiave non esiste.'; -$_MODULE['<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844'] = 'Selezionare quando creare la fattura dell\'Ordine'; +$_MODULE['<{mollie}prestashop>api_test_results_d08f64a86a82229769819777bc1867a7'] = 'Chiave Test API: Fallita! La chiave non esiste.'; +$_MODULE['<{mollie}prestashop>api_test_results_a4f4ff12086e1ed2e2a08e44f40bee7e'] = 'Chiave Live API: Fallita! La chiave deve iniziare con live_.'; +$_MODULE['<{mollie}prestashop>api_test_results_2360a37494efa46ba19353f395759f61'] = 'Chiave Live API: Riuscita!'; +$_MODULE['<{mollie}prestashop>api_test_results_d8ee1e19be219a7bd9b234f04637e439'] = 'Chiave Live API: Fallita! La chiave non esiste.'; +$_MODULE['<{mollie}prestashop>invoice_description_c661f63930e98aaa930c2e9210181844'] = 'Seleziona quando creare la fattura dell\'ordine'; $_MODULE['<{mollie}prestashop>invoice_description_5aa6fbc3548a8e2925de1e8e69897d34'] = 'Predefinito: La fattura viene creata in base alle Impostazioni dell\'ordine > Stati. Non viene creato uno stato personalizzato.'; $_MODULE['<{mollie}prestashop>invoice_description_cd2e6d0dbf60a94bb38b522ac80ee9eb'] = 'Autorizzato: Crea una fattura completa quando l\'ordine è autorizzato. Viene creato uno stato personalizzato.'; $_MODULE['<{mollie}prestashop>invoice_description_fc397a4bb3def49c285df7311261498d'] = 'Alla spedizione: Crea una fattura completa quando l\'ordine viene spedito. Viene creato uno stato personalizzato.'; $_MODULE['<{mollie}prestashop>invoice_fee_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; -$_MODULE['<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9'] = 'Inviare un\'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell\'ordine)'; -$_MODULE['<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99'] = 'Sta attualmente utilizzando la versione %s di questo modulo. L\'ultima versione è %s.'; -$_MODULE['<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8'] = '[1]Aggiornare[/1] il modulo per usufruire delle ultime funzionalità.'; +$_MODULE['<{mollie}prestashop>email_checkbox_b78daad7755ecce594af1e90afc0c2a9'] = 'Invia un\'e-mail di pagamento al cliente. (Verrà inviata dopo la creazione dell\'ordine)'; +$_MODULE['<{mollie}prestashop>new_release_584b9a7e2030fae4a7ddae4d5825bd99'] = 'Stai attualmente utilizzando la versione %s di questo modulo. L\'ultima versione è %s.'; +$_MODULE['<{mollie}prestashop>new_release_fcf6bb33e06a5cdf71a4a630ab9451f8'] = '[1]Aggiorna[/1] il modulo per usufruire delle ultime funzionalità.'; $_MODULE['<{mollie}prestashop>create_new_account_link_936ccdb97115e9f35a11d35e3d5b5cad'] = 'Clicca qui'; $_MODULE['<{mollie}prestashop>create_new_account_link_6e339c3dbc6cbc279b54ffb5e8292884'] = 'per creare un account'; $_MODULE['<{mollie}prestashop>form_26ce015f99bef6d5de2142b2b774525f'] = 'Sviluppato da Invertus'; @@ -256,20 +246,20 @@ $_MODULE['<{mollie}prestashop>form_8c2b4949d892b39b236545951f10bbd4'] = 'Payments API'; $_MODULE['<{mollie}prestashop>form_a8b0255f70ecc140a1b5134ae5217e51'] = 'Orders API'; $_MODULE['<{mollie}prestashop>form_cb6c048266284ce0a4036f435849e7d1'] = 'Descrizione della transazione'; -$_MODULE['<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29'] = 'Utilizzare una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:'; -$_MODULE['<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d'] = 'Accettare pagamenti da:'; +$_MODULE['<{mollie}prestashop>form_049068ab66bb1411469a8399aa624a29'] = 'Utilizza una delle seguenti variabili per creare una descrizione della transazione per i pagamenti che utilizzano questo metodo:'; +$_MODULE['<{mollie}prestashop>form_9e9e2ae89ca753fd8529d1af55867f2d'] = 'Accetta pagamenti da:'; $_MODULE['<{mollie}prestashop>form_c3987e4cac14a8456515f0d200da04ee'] = 'Tutti i paesi'; $_MODULE['<{mollie}prestashop>form_7c160ccb02560f1adb25fb6b86d9ebce'] = 'Paesi selezionati'; -$_MODULE['<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc'] = 'Accettare pagamenti da paesi specifici:'; -$_MODULE['<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a'] = 'Escludere i pagamenti da specifici paesi:'; +$_MODULE['<{mollie}prestashop>form_82dae25b510c71eeeb41e72f005977fc'] = 'Accetta pagamenti da paesi specifici:'; +$_MODULE['<{mollie}prestashop>form_43c7d89bbf53d68bea0c63205848d87a'] = 'Escludi i pagamenti da paesi specifici:'; $_MODULE['<{mollie}prestashop>form_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; $_MODULE['<{mollie}prestashop>form_87ab78d85f4f0f5143ed2e549719bc45'] = 'Nessuna commissione'; $_MODULE['<{mollie}prestashop>form_dc7d3d42b2b2b79bf2711799b38f2543'] = 'Commissione fissa'; $_MODULE['<{mollie}prestashop>form_37be07209f53a5d636d5c904ca9ae64c'] = 'Percentuale'; -$_MODULE['<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085'] = 'Limite combinato per supplemento di pagamento'; +$_MODULE['<{mollie}prestashop>form_9e984321e77b6a6ce8ef2844df646085'] = 'Limite supplemento pagamento combinato'; $_MODULE['<{mollie}prestashop>form_a6e220d6f8929d250e7637c45f4f781f'] = 'Aggiungere \(payment_fee}} nelle traduzioni e-mail per visualizzarle nel suo modello di e-mail. Per ulteriori informazioni'; $_MODULE['<{mollie}prestashop>form_0b8d92bc19b720bb1065649535463409'] = 'Traduzioni'; -$_MODULE['<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4'] = 'Includere le tasse nella commissione totale del pagamento'; +$_MODULE['<{mollie}prestashop>form_06c01c4462adf64483f4563530b5fea4'] = 'Includi le tasse nella commissione totale del pagamento'; $_MODULE['<{mollie}prestashop>form_cc5aba4e257ea02c1f8b8b566eab0d81'] = 'Commissione fissa (tasse incluse)'; $_MODULE['<{mollie}prestashop>form_3e2843c31ec8d64ed7731733c0a8776c'] = 'Commissione fissa (tasse escluse)'; $_MODULE['<{mollie}prestashop>form_74dfbb3dcf80ca484183092d1ec4c6fc'] = 'Gruppo regole fiscali per commissione fissa'; @@ -280,19 +270,19 @@ $_MODULE['<{mollie}prestashop>form_7d48ddaff550ef9e47ed788f50d860e7'] = 'Importo massimo'; $_MODULE['<{mollie}prestashop>form_8e680f4d04edd57a82330efe361bf3a6'] = 'L\'importo massimo predefinito non ha limitazioni'; $_MODULE['<{mollie}prestashop>form_521c2e0375d1b1266cbb0418d5ff32a9'] = 'L\'importo massimo predefinito in Mollie è:'; -$_MODULE['<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a'] = 'Utilizzare un logo personalizzato'; -$_MODULE['<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f'] = 'Caricare un logo personalizzato'; -$_MODULE['<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7'] = 'Aggiungere file'; -$_MODULE['<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571'] = 'Utilizzare un file .png o .jpg fino a 256x64 pixel.'; -$_MODULE['<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7'] = 'Il suo logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_d91f2eea3f7396346614c62eac89544a'] = 'Usa un logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_285cd00bd164be38b93c8a198155f12f'] = 'Carica un logo personalizzato'; +$_MODULE['<{mollie}prestashop>form_58be4de806253a6ee411b6c0c99296c7'] = 'Aggiungi file'; +$_MODULE['<{mollie}prestashop>form_4babe7767cf1639749b60d70ffaf6571'] = 'Utilizza un file .png o .jpg fino a 256x64 pixel.'; +$_MODULE['<{mollie}prestashop>form_37b9d37be8a47e970b04fe5c29ff77c7'] = 'Il tuo logo personalizzato'; $_MODULE['<{mollie}prestashop>form_3adbdb3ac060038aa0e6e6c138ef9873'] = 'Categoria'; $_MODULE['<{mollie}prestashop>form_6adf97f83acf6453d4a6a4b1070f3754'] = 'Nessuno'; $_MODULE['<{mollie}prestashop>form_d9ed7694f0cdbc0ce83246bc1db2d789'] = 'pasto'; $_MODULE['<{mollie}prestashop>form_a0ec3b461abf4bc16ad615481260140e'] = 'regalo'; $_MODULE['<{mollie}prestashop>form_e434dd9c7f573fb03924e0c4d3d44d45'] = 'eco'; -$_MODULE['<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446'] = 'Selezionare una categoria da utilizzare per tutti i prodotti del suo webshop.'; -$_MODULE['<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae'] = 'Configurare le informazioni sulla spedizione da inviare a Mollie'; -$_MODULE['<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb'] = 'Può utilizzare le seguenti variabili per gli URL del vettore'; +$_MODULE['<{mollie}prestashop>form_8e7a0855b5c921c5172c41d27047b446'] = 'Seleziona una categoria da utilizzare per tutti i prodotti del suo webshop'; +$_MODULE['<{mollie}prestashop>form_f12cef06d777d5540450d316354948ae'] = 'Configura le informazioni sulla spedizione da inviare a Mollie'; +$_MODULE['<{mollie}prestashop>form_078436e14998fc6f6b6668ac2f523bbb'] = 'Puoi usare le seguenti variabili per gli URL del vettore'; $_MODULE['<{mollie}prestashop>form_910d956cb2615e5739ac06c7f08fba26'] = 'Numero di spedizione'; $_MODULE['<{mollie}prestashop>form_e7e862a02819a1610f271ffea15ed47d'] = 'Codice paese di fatturazione'; $_MODULE['<{mollie}prestashop>form_5723a18d8a8a6052a57489df5be59a8f'] = 'Codice postale di fatturazione'; @@ -309,20 +299,20 @@ $_MODULE['<{mollie}prestashop>form_da93de158db2fbe49f35f6038711584a'] = 'Questa opzione non è necessaria per l\'API attualmente selezionato.'; $_MODULE['<{mollie}prestashop>form_218fb15ca7f2db8aa36080323a038828'] = 'Questa opzione non è necessaria per l\'API selezionata'; $_MODULE['<{mollie}prestashop>form_498f79c4c5bbde77f1bceb6c86fd0f6d'] = 'Mostra'; -$_MODULE['<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondere'; +$_MODULE['<{mollie}prestashop>form_62a5e490880a92eef74f167d9dc6dca0'] = 'Nascondi'; $_MODULE['<{mollie}prestashop>form_c266b1bce5e949cf41b5951f747862a5'] = 'Nessun metodo di pagamento Mollie ancora abilitato'; -$_MODULE['<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950'] = 'Attivare i metodi di pagamento nel proprio account Mollie.'; -$_MODULE['<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26'] = 'Configurare'; -$_MODULE['<{mollie}prestashop>form_20d053df791cc72594d141b24276597f'] = 'Scorrere verso il basso e salvare le modifiche apportate al suo ambiente o alle chiavi API prima di configurare i metodi di pagamento.'; -$_MODULE['<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a'] = 'È sicuro?'; -$_MODULE['<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f'] = 'È sicuro di voler rimborsare questo ordine?'; +$_MODULE['<{mollie}prestashop>form_27079483c3ba47b2c7369723473c4950'] = 'Attiva i metodi di pagamento nel tuo account Mollie.'; +$_MODULE['<{mollie}prestashop>form_f1206f9fadc5ce41694f69129aecac26'] = 'Configura'; +$_MODULE['<{mollie}prestashop>form_20d053df791cc72594d141b24276597f'] = 'Scorri verso il basso e salva le modifiche apportate al tuo ambiente o alle chiavi API prima di configurare i metodi di pagamento.'; +$_MODULE['<{mollie}prestashop>order_info_729a51874fe901b092899e9e8b31c97a'] = 'Sei sicuro?'; +$_MODULE['<{mollie}prestashop>order_info_ccaf4ee393d094ecde7f21b15fdf8f1f'] = 'Sei sicuro di voler rimborsare questo ordine?'; $_MODULE['<{mollie}prestashop>order_info_76f0ed934de85cc7131910b32ede7714'] = 'Rimborso'; -$_MODULE['<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; -$_MODULE['<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8'] = 'Rimborsare ordine'; +$_MODULE['<{mollie}prestashop>order_info_ea4788705e6873b424c65e91c2846b19'] = 'Annulla'; +$_MODULE['<{mollie}prestashop>order_info_88ba0dcbc82905637e98317e0302cfd8'] = 'Rimborsa ordine'; $_MODULE['<{mollie}prestashop>order_info_e03ed4aabeff96ca7c80a6bae8ddfcc1'] = 'Rimborsabile'; $_MODULE['<{mollie}prestashop>order_info_77fd2b4393b379bedd30efcd5df02090'] = 'Rimborso parziale'; $_MODULE['<{mollie}prestashop>order_info_a9ced76f2dd6907220fa95b3a136b04a'] = 'Importo non valido'; -$_MODULE['<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872'] = 'Inserire un importo valido'; +$_MODULE['<{mollie}prestashop>order_info_a0114b0c8ef3e187c610e4e56da55872'] = 'Inserisci un importo valido'; $_MODULE['<{mollie}prestashop>order_info_3cc4859e502556d0d848c3bc38618782'] = 'Rimborso non riuscito'; $_MODULE['<{mollie}prestashop>order_info_d5cfd0f69cd548e5d3b9edde5ff1b48f'] = 'Informazioni sul pagamento'; $_MODULE['<{mollie}prestashop>order_info_88427ec035734b45aae9f7d8859a5008'] = 'ID transazione'; @@ -342,17 +332,17 @@ $_MODULE['<{mollie}prestashop>order_info_6c957f72dc8cdacc75762f2cbdcdfaf2'] = 'Prezzo unitario'; $_MODULE['<{mollie}prestashop>order_info_126b36c5eb7a576cd6ae15bbcf3a9459'] = 'Importo IVA'; $_MODULE['<{mollie}prestashop>order_info_bc30768048a7bbfd2d158d722c140c6d'] = 'Importo totale'; -$_MODULE['<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac'] = 'Spedire'; +$_MODULE['<{mollie}prestashop>order_info_0387832795db3eb2e05f4365fba5ddac'] = 'Spedisci'; $_MODULE['<{mollie}prestashop>order_info_55453aad10c96e452556a106447313bd'] = 'Rivedi spedizione'; -$_MODULE['<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67'] = 'Esaminare i prodotti inclusi nella spedizione. È possibile rimuovere gli articoli o modificare la quantità'; +$_MODULE['<{mollie}prestashop>order_info_2d68a678f279a6a1fade94ef7bef9e67'] = 'Esamina i prodotti inclusi nella spedizione. Puoi rimuovere gli articoli o modificare la quantità'; $_MODULE['<{mollie}prestashop>order_info_e29500a07ea67b3f9b48c85bccece022'] = 'Rivedi rimborso'; -$_MODULE['<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb'] = 'Esaminare i prodotti inclusi nel rimborso. Se necessario'; +$_MODULE['<{mollie}prestashop>order_info_63e6dc84e5605dc561a14e7f86643bbb'] = 'Esamina i prodotti inclusi nel rimborso. Se necessario'; $_MODULE['<{mollie}prestashop>order_info_51de729ebc17bf6c37d2708ba317dd08'] = 'Rivedi annullamento'; -$_MODULE['<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e'] = 'Esaminare i prodotti inclusi nel annullamento. Se necessario'; +$_MODULE['<{mollie}prestashop>order_info_50317d996a7817c56aac958f4042680e'] = 'Esamina i prodotti inclusi nel annullamento. Se necessario'; $_MODULE['<{mollie}prestashop>order_info_e0aa021e21dddbd6d8cecec71e9cf564'] = 'OK'; -$_MODULE['<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164'] = 'Spedire prodotti'; +$_MODULE['<{mollie}prestashop>order_info_163bcc6065b16c6369c7a4de44cff164'] = 'Spedisci prodotti'; $_MODULE['<{mollie}prestashop>order_info_433557a938a920888445ce2c7df67d5a'] = 'Dettagli di tracciamento'; -$_MODULE['<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7'] = 'Aggiungere le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente.'; +$_MODULE['<{mollie}prestashop>order_info_50399bf464ce4b79ed9f58f63d9376e7'] = 'Aggiungi le informazioni di tracciamento per registrare la spedizione dei prodotti al cliente.'; $_MODULE['<{mollie}prestashop>order_info_26b6254fefc06894825a50dfbe803937'] = 'Salta i dettagli di tracciamento'; $_MODULE['<{mollie}prestashop>order_info_d57c24f3fe52d16e7169b912dd647f0d'] = 'opzionale'; $_MODULE['<{mollie}prestashop>order_info_2df417909bda5f3ddc210a0abe65231f'] = 'Ad esempio FedEx'; @@ -360,7 +350,7 @@ $_MODULE['<{mollie}prestashop>order_info_933292561b46133ff5348c7740874c56'] = 'Codice di tracciamento'; $_MODULE['<{mollie}prestashop>order_info_e6b391a8d2c4d45902a23a8b6585703d'] = 'URL'; $_MODULE['<{mollie}prestashop>order_info_914419aa32f04011357d3b604a86d7eb'] = 'Vettore'; -$_MODULE['<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283'] = 'Spedire tutto'; +$_MODULE['<{mollie}prestashop>order_info_23a902ac637359fe67ceaccbe2c68283'] = 'Spedisci tutto'; $_MODULE['<{mollie}prestashop>order_info_2a6e9f678c7267fe16f57bcd3285f1d7'] = 'Annulla tutto'; $_MODULE['<{mollie}prestashop>order_info_05ced64413f9ff5d3602c3e257f36204'] = 'Rimborsa tutto'; $_MODULE['<{mollie}prestashop>order_info_bfe005bff7ecacd6ecceacdd7fb79292'] = 'Informazioni sulla transazione'; @@ -376,25 +366,25 @@ $_MODULE['<{mollie}prestashop>order_info_fab41c52197c448eea0edde8951e4e59'] = 'L\'ordine è stato annullato con successo!'; $_MODULE['<{mollie}prestashop>order_info_4c3880bb027f159e801041b1021e88e8'] = 'Metodo'; $_MODULE['<{mollie}prestashop>order_info_51360304ea03557e79bdf5ff9cd2e234'] = 'Emittente'; -$_MODULE['<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6'] = 'Questo ordine è stato (parzialmente) pagato con un buono. È possibile rimborsare un massimo di %1s.'; -$_MODULE['<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Selezionare uno stato d\'ordine per \Stato per in attesa di pagamento\ nella scheda \Impostazioni avanzate\.'; -$_MODULE['<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea'] = 'Utilizzare la carta salvata'; -$_MODULE['<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b'] = 'Salvare la carta'; +$_MODULE['<{mollie}prestashop>order_info_4e274e8865560b88192b72e486210cc6'] = 'Questo ordine è stato (parzialmente) pagato con un buono. Puoi rimborsare un massimo di %1s.'; +$_MODULE['<{mollie}prestashop>mollie_awaiting_order_status_error_56ce2a4e08c9d84441b90ab4c4b66f84'] = 'Seleziona uno stato d\'ordine per \Stato per in attesa di pagamento\ nella scheda \Impostazioni avanzate\.'; +$_MODULE['<{mollie}prestashop>mollie_single_click_ee2b8214cd8479d18e873181505b48ea'] = 'Usa la carta salvata'; +$_MODULE['<{mollie}prestashop>mollie_single_click_fc7775bdfa339217149389b7392af83b'] = 'Salva la carta'; $_MODULE['<{mollie}prestashop>mollie_single_click_49753ba0559e716a708373951ea87d1c'] = 'Pagamenti sicuri forniti da'; -$_MODULE['<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507'] = 'Inserire i dati della carta'; +$_MODULE['<{mollie}prestashop>mollie_iframe_a4b29064de828b87f9f9b6fa145cb507'] = 'Inserisci i dati della tua carta'; $_MODULE['<{mollie}prestashop>mollie_iframe_c2b63e85bd5e4dc9b6cf5a4693847e06'] = 'Nome sulla carta'; $_MODULE['<{mollie}prestashop>mollie_iframe_a44217022190f5734b2f72ba1e4f8a79'] = 'Numero di carta'; $_MODULE['<{mollie}prestashop>mollie_iframe_95b16127e70e8a90220404fb48343182'] = 'Data di scadenza'; $_MODULE['<{mollie}prestashop>mollie_iframe_b2fddfad59392b3dba82cb9809712197'] = 'CVC/CVV'; -$_MODULE['<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b'] = 'Salvare la carta'; -$_MODULE['<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea'] = 'Utilizzare la carta salvata'; +$_MODULE['<{mollie}prestashop>mollie_iframe_fc7775bdfa339217149389b7392af83b'] = 'Salva la carta'; +$_MODULE['<{mollie}prestashop>mollie_iframe_ee2b8214cd8479d18e873181505b48ea'] = 'Usa la carta salvata'; $_MODULE['<{mollie}prestashop>mollie_iframe_49753ba0559e716a708373951ea87d1c'] = 'Pagamenti sicuri forniti da'; $_MODULE['<{mollie}prestashop>payment_334721e5f1ee825da687fcaede010724'] = 'Commissione di pagamento:'; -$_MODULE['<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9'] = 'Scansione QR'; -$_MODULE['<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf'] = 'Aprire l\'app Bancontact per scansionare il codice QR'; +$_MODULE['<{mollie}prestashop>qr_code_abf4a6b673b5166357317067cbeadee9'] = 'Scansiona codice QR'; +$_MODULE['<{mollie}prestashop>qr_code_9e8480dfad348fb6f83db31570d1decf'] = 'Apri l\'app Bancontact per scansionare il codice QR'; $_MODULE['<{mollie}prestashop>qr_code_3a2d5fe857d8f9541136a124c2edec6c'] = 'O'; -$_MODULE['<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd'] = 'Continuare senza codice QR'; -$_MODULE['<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>qr_code_fc258b840545ee1ec431efe82bd4dcbd'] = 'Continua senza codice QR'; +$_MODULE['<{mollie}prestashop>qr_code_ea4788705e6873b424c65e91c2846b19'] = 'Annulla'; $_MODULE['<{mollie}prestashop>order-confirmation-table_020c2091aec3019d02193cef080bcf97'] = 'Commissione di pagamento'; $_MODULE['<{mollie}prestashop>17_error_47e1924c444fafe9fdfce444790f0ba9'] = 'Torna al carrello'; $_MODULE['<{mollie}prestashop>error_c453a4b8e8d98e82f35b67f433e3b4da'] = 'Pagamento'; @@ -408,20 +398,20 @@ $_MODULE['<{mollie}prestashop>qr_done_92816c7248d010591f699db3aaf6287b'] = 'Mollie iDEAL QR'; $_MODULE['<{mollie}prestashop>qr_done_ebdf0f490b617d7efa3025d3625cec85'] = 'Bentornato'; $_MODULE['<{mollie}prestashop>qr_done_c3171108158ad72d80e4f5068d312572'] = 'Il pagamento è stato annullato'; -$_MODULE['<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b'] = 'Il pagamento è completo. Grazie per il suo ordine!'; +$_MODULE['<{mollie}prestashop>qr_done_47db50323146abe9d975fb6616cefa3b'] = 'Il pagamento è completo. Grazie per il tuo ordine!'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_465d60b936c982d7b57674f30ba022d0'] = 'Prodotto:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_3d0d1f906e27800531e054a3b6787b7c'] = 'Quantità:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_bbc8c3f199c22b3951a52bc9821971ee'] = 'Prezzo unitario:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_66c4c5112f455a19afde47829df363fa'] = 'Totale:'; -$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c'] = 'Stato dell\'abbonamento.'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_dfc1493d2a91fecbec8fc7b9621ea52c'] = 'Stato dell\'abbonamento:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_bc687e68cac6a434d614f732a6bb35a8'] = 'Data di inizio dell\'abbonamento:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_625b79d4b6d9f937623d7f4f68b4efcd'] = 'Prossima data di pagamento:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetailproduct_d6eb8b047631f376e10e2db6a60da350'] = 'Data di annullamento:'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetail_dd73b66f5abedea1529fc619f07cc88d'] = 'Dettagli dell\'ordine di abbonamento'; -$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3'] = 'Aggiornare il metodo di pagamento dell\'abbonamento'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_7a76bd4a08a9d06cac7b74942507dca3'] = 'Aggiorna il metodo di pagamento dell\'abbonamento'; $_MODULE['<{mollie}prestashop>customerrecurringorderdetail_34120aa4b83400b21af7641b425d109b'] = ' you can select it here.'; -$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6'] = 'Aggiornare'; -$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112'] = 'Annullare l\'abbonamento'; -$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19'] = 'Annullare'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_06933067aafd48425d67bcb01bba5cb6'] = 'Aggiorna'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_01660840b062884fd856f49c71246112'] = 'Annulla l\'abbonamento'; +$_MODULE['<{mollie}prestashop>customerrecurringorderdetail_ea4788705e6873b424c65e91c2846b19'] = 'Annulla'; $_MODULE['<{mollie}prestashop>customeraccount_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; $_MODULE['<{mollie}prestashop>customersubscriptionsdata_4ca2c509994c2776d0880357b4e8e5be'] = 'Abbonamenti'; From 74fbdb23f6c997707da7bfa2bd3bdd5c0dff8f33 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 17 Sep 2024 10:48:41 +0300 Subject: [PATCH 40/74] licence header added --- translations/it.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/it.php b/translations/it.php index 6a59e5bae..971f0fa00 100644 --- a/translations/it.php +++ b/translations/it.php @@ -1,4 +1,14 @@ - + * @copyright Mollie B.V. + * @license https://github.com/mollie/PrestaShop/blob/master/LICENSE.md + * + * @see https://github.com/mollie/PrestaShop + * @codingStandardsIgnoreStart + */ global $_MODULE; $_MODULE = array(); From b6ea02e7f1e7059f8f676a65fb071e3261545443 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 17 Sep 2024 11:02:03 +0300 Subject: [PATCH 41/74] php stan fix --- controllers/admin/AdminMollieLogsController.php | 8 +++++--- controllers/front/fail.php | 3 +++ src/ServiceProvider/BaseServiceProvider.php | 16 ++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index 90ce1eb33..8012a7e7e 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -354,17 +354,17 @@ public function processExport($textDelimiter = '"') $fd = fopen('php://output', 'wb'); - /** @var $configuration */ + /** @var ConfigurationAdapter $configuration */ $configuration = $this->module->getService(ConfigurationAdapter::class); - /** @var Context $context */ + /** @var Mollie\Adapter\Context $context */ $context = $this->module->getService(Mollie\Adapter\Context::class); $storeInfo = [ 'PrestaShop Version' => _PS_VERSION_, 'PHP Version' => phpversion(), 'Module Version' => $this->module->version, - 'MySQL Version' => \DB::getInstance()->getVersion(), + 'MySQL Version' => \Db::getInstance()->getVersion(), 'Shop URL' => $context->getShopDomain(), 'Shop Name' => $context->getShopName(), ]; @@ -416,6 +416,8 @@ public function processExport($textDelimiter = '"') $result = \Db::getInstance()->executeS($query); $firstRow = $result[0]; + $headers = []; + foreach ($firstRow as $key => $value) { $headers[] = strtoupper($key); } diff --git a/controllers/front/fail.php b/controllers/front/fail.php index 4f9d4d381..d784eb547 100644 --- a/controllers/front/fail.php +++ b/controllers/front/fail.php @@ -52,6 +52,9 @@ class MollieFailModuleFrontController extends ModuleFrontController */ private $order_presenter; + /** @var Mollie */ + public $module; + public function init() { parent::init(); diff --git a/src/ServiceProvider/BaseServiceProvider.php b/src/ServiceProvider/BaseServiceProvider.php index 65e5a32f3..2fd5701bf 100644 --- a/src/ServiceProvider/BaseServiceProvider.php +++ b/src/ServiceProvider/BaseServiceProvider.php @@ -18,10 +18,7 @@ use Mollie; use Mollie\Adapter\ConfigurationAdapter; use Mollie\Adapter\Context; -<<<<<<< HEAD -======= use Mollie\Adapter\Shop; ->>>>>>> 13cbbc95537a7794b4241af3e508f1bb12281781 use Mollie\Builder\ApiTestFeedbackBuilder; use Mollie\Factory\ModuleFactory; use Mollie\Handler\Api\OrderEndpointPaymentTypeHandler; @@ -275,13 +272,8 @@ public function register(Container $container) $this->addServiceArgument($service, $container->get(ModuleFactory::class)->getModuleVersion() ?? ''); $this->addServiceArgument($service, ApiKeyService::class); -<<<<<<< HEAD $this->addService($container, PrestashopLoggerRepositoryInterface::class, PrestashopLoggerRepository::class); $this->addService($container, MolLogRepositoryInterface::class, MolLogRepository::class); - $this->addService($container, LogFormatterInterface::class, LogFormatter::class); - - $service = $this->addService($container, EntityManagerInterface::class, ObjectModelEntityManager::class); - $this->addServiceArgument($service, ObjectModelUnitOfWork::class); $service = $this->addService($container, LoggerInterface::class, Logger::class); $this->addServiceArgument($service, LogFormatterInterface::class); @@ -290,7 +282,9 @@ public function register(Container $container) $this->addServiceArgument($service, EntityManagerInterface::class); $this->addServiceArgument($service, NumberIdempotencyProvider::class); $this->addServiceArgument($service, PrestashopLoggerRepositoryInterface::class); -======= + + $this->addService($container, LogFormatterInterface::class, LogFormatter::class); + $service = $this->addService($container, ApiServiceInterface::class, ApiService::class); $this->addServiceArgument($service, PaymentMethodRepository::class); $this->addServiceArgument($service, CountryRepository::class); @@ -300,7 +294,9 @@ public function register(Container $container) $this->addServiceArgument($service, Shop::class); $this->addServiceArgument($service, TaxCalculatorProvider::class); $this->addServiceArgument($service, Context::class); ->>>>>>> 13cbbc95537a7794b4241af3e508f1bb12281781 + + $service = $this->addService($container, EntityManagerInterface::class, ObjectModelEntityManager::class); + $this->addServiceArgument($service, ObjectModelUnitOfWork::class); } private function addService(Container $container, $className, $service) From 27c7b9cd64e28b6920183cb3a7ed6f014a8c1fb2 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 17 Sep 2024 11:38:59 +0300 Subject: [PATCH 42/74] php cs fixer --- controllers/admin/AdminMollieLogsController.php | 4 ++-- controllers/admin/AdminMollieSettingsController.php | 6 ++---- controllers/front/ajax.php | 6 +++--- controllers/front/applePayDirectAjax.php | 2 +- controllers/front/bancontactAjax.php | 2 +- controllers/front/fail.php | 2 +- controllers/front/payScreen.php | 4 ++-- controllers/front/payment.php | 2 +- controllers/front/recurringOrderDetail.php | 5 ++--- controllers/front/return.php | 2 +- controllers/front/subscriptionUpdateWebhook.php | 3 +-- controllers/front/subscriptionWebhook.php | 3 +-- controllers/front/subscriptions.php | 2 +- controllers/front/webhook.php | 5 ++--- mollie.php | 3 +-- src/Controller/AbstractMollieController.php | 3 +-- src/Handler/ErrorHandler/ErrorHandler.php | 2 +- subscription/Install/AttributeUninstaller.php | 1 - 18 files changed, 24 insertions(+), 33 deletions(-) diff --git a/controllers/admin/AdminMollieLogsController.php b/controllers/admin/AdminMollieLogsController.php index 8012a7e7e..d44b2f114 100644 --- a/controllers/admin/AdminMollieLogsController.php +++ b/controllers/admin/AdminMollieLogsController.php @@ -370,7 +370,7 @@ public function processExport($textDelimiter = '"') ]; $moduleConfigurations = [ - 'Environment' => $configuration->get(Config::MOLLIE_ENVIRONMENT) ? "Production" : "Sandbox", + 'Environment' => $configuration->get(Config::MOLLIE_ENVIRONMENT) ? 'Production' : 'Sandbox', 'Components' => $configuration->get(Config::MOLLIE_IFRAME), 'OCP' => $configuration->get(Config::MOLLIE_SINGLE_CLICK_PAYMENT), 'Locale Webshop' => $configuration->get(Config::MOLLIE_PAYMENTSCREEN_LOCALE), @@ -438,6 +438,6 @@ public function processExport($textDelimiter = '"') } @fclose($fd); - die; + exit; } } diff --git a/controllers/admin/AdminMollieSettingsController.php b/controllers/admin/AdminMollieSettingsController.php index 0d630a90a..f27d749ed 100644 --- a/controllers/admin/AdminMollieSettingsController.php +++ b/controllers/admin/AdminMollieSettingsController.php @@ -47,8 +47,7 @@ private function initCloudSyncAndPsAccounts(): void $this->context->smarty->assign('module_dir', $this->module->getPathUri()); $moduleManager = PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder::getInstance()->build(); - - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); try { @@ -206,8 +205,7 @@ public function postProcess() /** @var \Mollie\Builder\FormBuilder $settingsFormBuilder */ $settingsFormBuilder = $this->module->getService(\Mollie\Builder\FormBuilder::class); - - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); try { diff --git a/controllers/front/ajax.php b/controllers/front/ajax.php index c783eef32..7f91675e0 100644 --- a/controllers/front/ajax.php +++ b/controllers/front/ajax.php @@ -38,7 +38,7 @@ class MollieAjaxModuleFrontController extends AbstractMollieController public function postProcess(): void { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); @@ -102,7 +102,7 @@ private function getTotalCartPrice(): void /** @var ConfigurationAdapter $configuration */ $configuration = $this->module->getService(ConfigurationAdapter::class); - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); try { @@ -208,7 +208,7 @@ private function validateProduct(): void /** @var CanProductBeAddedToCartValidator $canProductBeAddedToCartValidator */ $canProductBeAddedToCartValidator = $this->module->getService(CanProductBeAddedToCartValidator::class); - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $product = Tools::getValue('product'); diff --git a/controllers/front/applePayDirectAjax.php b/controllers/front/applePayDirectAjax.php index b00c12085..2fb24644f 100644 --- a/controllers/front/applePayDirectAjax.php +++ b/controllers/front/applePayDirectAjax.php @@ -36,7 +36,7 @@ class MollieApplePayDirectAjaxModuleFrontController extends ModuleFrontControlle public function postProcess() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/bancontactAjax.php b/controllers/front/bancontactAjax.php index abf90b537..1fa1f1e6e 100644 --- a/controllers/front/bancontactAjax.php +++ b/controllers/front/bancontactAjax.php @@ -35,7 +35,7 @@ class MollieBancontactAjaxModuleFrontController extends ModuleFrontController public function postProcess() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/fail.php b/controllers/front/fail.php index d784eb547..89c1eb533 100644 --- a/controllers/front/fail.php +++ b/controllers/front/fail.php @@ -59,7 +59,7 @@ public function init() { parent::init(); - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/payScreen.php b/controllers/front/payScreen.php index d2a3aac2c..7709f176e 100644 --- a/controllers/front/payScreen.php +++ b/controllers/front/payScreen.php @@ -21,14 +21,14 @@ class MolliePayScreenModuleFrontController extends ModuleFrontController { - public const FILE_NAME = 'payScreen' ; + public const FILE_NAME = 'payScreen'; /** @var Mollie */ public $module; public function postProcess() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/payment.php b/controllers/front/payment.php index 11081bcc5..ad45cc624 100644 --- a/controllers/front/payment.php +++ b/controllers/front/payment.php @@ -56,7 +56,7 @@ public function initContent() { parent::initContent(); - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/recurringOrderDetail.php b/controllers/front/recurringOrderDetail.php index 0886ced1b..cd9163a57 100644 --- a/controllers/front/recurringOrderDetail.php +++ b/controllers/front/recurringOrderDetail.php @@ -13,7 +13,6 @@ use Mollie\Controller\AbstractMollieController; use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; -use Mollie\Logger\PrestaLoggerInterface; use Mollie\Subscription\Handler\FreeOrderCreationHandler; use Mollie\Subscription\Handler\SubscriptionCancellationHandler; use Mollie\Subscription\Presenter\RecurringOrderPresenter; @@ -40,7 +39,7 @@ class MollieRecurringOrderDetailModuleFrontController extends AbstractMollieCont */ public function postProcess() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); @@ -63,7 +62,7 @@ public function postProcess() */ public function initContent() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $recurringOrderId = (int) Tools::getValue('id_mol_recurring_order'); diff --git a/controllers/front/return.php b/controllers/front/return.php index c74a90fa3..d5c664310 100644 --- a/controllers/front/return.php +++ b/controllers/front/return.php @@ -50,7 +50,7 @@ class MollieReturnModuleFrontController extends AbstractMollieController */ public function initContent() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/subscriptionUpdateWebhook.php b/controllers/front/subscriptionUpdateWebhook.php index ef93bdf0d..e6a3ec1b8 100644 --- a/controllers/front/subscriptionUpdateWebhook.php +++ b/controllers/front/subscriptionUpdateWebhook.php @@ -18,7 +18,6 @@ use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; use Mollie\Subscription\Handler\SubscriptionPaymentMethodUpdateHandler; -use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { exit; @@ -48,7 +47,7 @@ protected function displayMaintenancePage() public function initContent() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/subscriptionWebhook.php b/controllers/front/subscriptionWebhook.php index f7d002377..15be1c3a9 100644 --- a/controllers/front/subscriptionWebhook.php +++ b/controllers/front/subscriptionWebhook.php @@ -18,7 +18,6 @@ use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; use Mollie\Subscription\Handler\RecurringOrderHandler; -use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { exit; @@ -48,7 +47,7 @@ protected function displayMaintenancePage() public function initContent() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/subscriptions.php b/controllers/front/subscriptions.php index 2f273f75b..6dc1dcd34 100644 --- a/controllers/front/subscriptions.php +++ b/controllers/front/subscriptions.php @@ -58,7 +58,7 @@ class mollieSubscriptionsModuleFrontController extends ModuleFrontController public function initContent() { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); diff --git a/controllers/front/webhook.php b/controllers/front/webhook.php index 0e2d2fac1..b298395f0 100644 --- a/controllers/front/webhook.php +++ b/controllers/front/webhook.php @@ -10,7 +10,6 @@ * @codingStandardsIgnoreStart */ -use Invertus\Faire\Infrastructure\Utility\ExceptionUtility; use Mollie\Adapter\ToolsAdapter; use Mollie\Api\Exceptions\ApiException; use Mollie\Controller\AbstractMollieController; @@ -51,7 +50,7 @@ protected function displayMaintenancePage() public function initContent(): void { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->debug(sprintf('%s - Controller called', self::FILE_NAME)); @@ -119,7 +118,7 @@ protected function executeWebhook(string $transactionId): void /** @var TransactionService $transactionService */ $transactionService = $this->module->getService(TransactionService::class); - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); if (TransactionUtility::isOrderTransaction($transactionId)) { diff --git a/mollie.php b/mollie.php index 20e55256b..57969e2a2 100755 --- a/mollie.php +++ b/mollie.php @@ -20,7 +20,6 @@ use Mollie\Exception\ShipmentCannotBeSentException; use Mollie\Handler\ErrorHandler\ErrorHandler; use Mollie\Handler\Shipment\ShipmentSenderHandlerInterface; -use Mollie\Logger\LoggerInterface; use Mollie\Logger\PrestaLoggerInterface; use Mollie\Provider\ProfileIdProviderInterface; use Mollie\Repository\MolOrderPaymentFeeRepositoryInterface; @@ -103,7 +102,7 @@ public function __construct() $this->description = $this->l('Mollie Payments'); $this->loadEnv(); -// ErrorHandler::getInstance($this); + ErrorHandler::getInstance($this); } /** diff --git a/src/Controller/AbstractMollieController.php b/src/Controller/AbstractMollieController.php index 11c87c25f..bec2c1547 100644 --- a/src/Controller/AbstractMollieController.php +++ b/src/Controller/AbstractMollieController.php @@ -18,7 +18,6 @@ use Mollie\Infrastructure\Response\Response; use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; -use Mollie\Logger\PrestaLoggerInterface; use Mollie\Utility\ExceptionUtility; if (!defined('_PS_VERSION_')) { @@ -104,7 +103,7 @@ protected function applyLock(string $resource): Response if (!$this->lock->acquire()) { $logger->error('Lock resource conflict', [ - 'context' => [] + 'context' => [], ]); return Response::respond( diff --git a/src/Handler/ErrorHandler/ErrorHandler.php b/src/Handler/ErrorHandler/ErrorHandler.php index 2a3105ff4..d9da002a7 100644 --- a/src/Handler/ErrorHandler/ErrorHandler.php +++ b/src/Handler/ErrorHandler/ErrorHandler.php @@ -111,7 +111,7 @@ public function __construct(Mollie $module, Env $env = null) public function handle(\Throwable $error, ?int $code = null, ?bool $throw = true): void { if ((int) Configuration::get(Config::MOLLIE_DEBUG_LOG) === Config::DEBUG_LOG_ERRORS) { - /** @var Logger $logger **/ + /** @var Logger $logger * */ $logger = $this->module->getService(LoggerInterface::class); $logger->error($error->getMessage(), [ diff --git a/subscription/Install/AttributeUninstaller.php b/subscription/Install/AttributeUninstaller.php index b23722692..927016a05 100644 --- a/subscription/Install/AttributeUninstaller.php +++ b/subscription/Install/AttributeUninstaller.php @@ -19,7 +19,6 @@ use Mollie\Adapter\ProductAttributeAdapter; use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; -use Mollie\Logger\PrestaLoggerInterface; use Mollie\Subscription\Config\Config; use PrestaShopException; use Psr\Log\LogLevel; From 0c348706e7154c63a8804509f5a46470ad5fcc22 Mon Sep 17 00:00:00 2001 From: Pascal Alberty Date: Tue, 17 Sep 2024 15:00:05 +0200 Subject: [PATCH 43/74] PHP formating and add default for $interval --- subscription/Provider/SubscriptionStartDateProvider.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/subscription/Provider/SubscriptionStartDateProvider.php b/subscription/Provider/SubscriptionStartDateProvider.php index 0f5d9e12d..fb86fc060 100644 --- a/subscription/Provider/SubscriptionStartDateProvider.php +++ b/subscription/Provider/SubscriptionStartDateProvider.php @@ -61,14 +61,17 @@ public function getSubscriptionStartDate(Combination $combination) case $this->configuration->get(Config::SUBSCRIPTION_ATTRIBUTE_YEARLY): $interval = new DateInterval('P1Y'); break; + default: + $interval = null; } // Add the interval to the current time if ($interval !== null) { $currentTime->add($interval); + return $currentTime->format('Y-m-d'); } } - throw new SubscriptionIntervalException(sprintf('No interval exists for this %s attribute', $combination->id)); + throw new SubscriptionIntervalException(sprintf('No interval exists for this %s attribute', $combination->id)); } } From edd67a65f42bef63dfbf59cfa18219cba78b3478 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 24 Sep 2024 15:52:30 +0300 Subject: [PATCH 44/74] apple pay fix --- controllers/front/applePayDirectAjax.php | 19 ++++++++++++++++++- .../UpdateApplePayShippingContactHandler.php | 9 ++++++++- .../applePayDirect/applePayDirectProduct.js | 3 +++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/controllers/front/applePayDirectAjax.php b/controllers/front/applePayDirectAjax.php index 2fb24644f..8171c7000 100644 --- a/controllers/front/applePayDirectAjax.php +++ b/controllers/front/applePayDirectAjax.php @@ -20,8 +20,10 @@ use Mollie\Application\CommandHandler\UpdateApplePayShippingMethodHandler; use Mollie\Builder\ApplePayDirect\ApplePayOrderBuilder; use Mollie\Builder\ApplePayDirect\ApplePayProductBuilder; +use Mollie\Exception\FailedToProvidePaymentFeeException; use Mollie\Logger\Logger; use Mollie\Logger\LoggerInterface; +use Mollie\Utility\ExceptionUtility; use Mollie\Utility\OrderRecoverUtility; if (!defined('_PS_VERSION_')) { @@ -101,6 +103,8 @@ private function updateAppleShippingContact() $handler = $this->module->getService(UpdateApplePayShippingContactHandler::class); /** @var ApplePayProductBuilder $productBuilder */ $productBuilder = $this->module->getService(ApplePayProductBuilder::class); + /** @var Logger $logger * */ + $logger = $this->module->getService(LoggerInterface::class); $simplifiedContent = Tools::getValue('simplifiedContact'); $cartId = (int) Tools::getValue('cartId'); @@ -120,7 +124,20 @@ private function updateAppleShippingContact() $simplifiedContent['locality'], $customerId ); - $result = $handler->handle($command); + + try { + $result = $handler->handle($command); + } catch (FailedToProvidePaymentFeeException $e) { + $logger->error('Failed to find apple pay address.', [ + 'context' => [], + 'exceptions' => ExceptionUtility::getExceptions($e), + ]); + + $result = [ + 'success' => false, + 'message' => $this->module->l('Failed to find address. Please try again.', self::FILE_NAME) + ]; + } $this->ajaxDie(json_encode($result)); } diff --git a/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php b/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php index e51f41424..6c8a97d7a 100644 --- a/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php +++ b/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php @@ -60,7 +60,7 @@ public function handle(UpdateApplePayShippingContact $command): array $invoiceAddress = $this->createAddress($customer->id, $command); $cart = $this->updateCart($customer, $deliveryAddress->id, $invoiceAddress->id, $command->getCartId()); $this->addProductToCart($cart, $command); - + $this->updateContext($cart, $customer, $deliveryAddress); $country = new Country($deliveryAddress->id_country); $applePayCarriers = $this->applePayCarriersBuilder->build(Carrier::getCarriersForOrder($country->id_zone), $country->id_zone); @@ -142,4 +142,11 @@ private function addProductToCart(Cart $cart, UpdateApplePayShippingContact $com $cart->updateQty($product->getWantedQuantity(), $product->getProductId(), $product->getProductAttribute()); } } + + private function updateContext(Cart $cart, Customer $customer) + { + $context = \Context::getContext(); + $context->cart = $cart; + \Context::getContext()->updateCustomer($customer); + } } diff --git a/views/js/front/applePayDirect/applePayDirectProduct.js b/views/js/front/applePayDirect/applePayDirectProduct.js index 03a900799..6bb3940a3 100644 --- a/views/js/front/applePayDirect/applePayDirectProduct.js +++ b/views/js/front/applePayDirect/applePayDirectProduct.js @@ -193,6 +193,9 @@ $(document).ready(function () { }, [] ); + } else { + console.warn(applePayShippingContactUpdate) + session.abort() } }, error: (jqXHR, textStatus, errorThrown) => { From 1312a115988cb9427c17a0f81794531bea139141 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 24 Sep 2024 16:16:47 +0300 Subject: [PATCH 45/74] cs fixer and stan fixes --- controllers/front/applePayDirectAjax.php | 7 +++++-- .../UpdateApplePayShippingContactHandler.php | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/controllers/front/applePayDirectAjax.php b/controllers/front/applePayDirectAjax.php index 8171c7000..3890099ca 100644 --- a/controllers/front/applePayDirectAjax.php +++ b/controllers/front/applePayDirectAjax.php @@ -129,13 +129,16 @@ private function updateAppleShippingContact() $result = $handler->handle($command); } catch (FailedToProvidePaymentFeeException $e) { $logger->error('Failed to find apple pay address.', [ - 'context' => [], + 'context' => [ + 'cartId' => $cartId, + 'customerId' => $customerId, + ], 'exceptions' => ExceptionUtility::getExceptions($e), ]); $result = [ 'success' => false, - 'message' => $this->module->l('Failed to find address. Please try again.', self::FILE_NAME) + 'message' => $this->module->l('Failed to find address. Please try again. CartId ' . $cartId, self::FILE_NAME), ]; } diff --git a/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php b/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php index 6c8a97d7a..1f0f64a0d 100644 --- a/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php +++ b/src/Application/CommandHandler/UpdateApplePayShippingContactHandler.php @@ -60,7 +60,7 @@ public function handle(UpdateApplePayShippingContact $command): array $invoiceAddress = $this->createAddress($customer->id, $command); $cart = $this->updateCart($customer, $deliveryAddress->id, $invoiceAddress->id, $command->getCartId()); $this->addProductToCart($cart, $command); - $this->updateContext($cart, $customer, $deliveryAddress); + $this->updateContext($cart, $customer); $country = new Country($deliveryAddress->id_country); $applePayCarriers = $this->applePayCarriersBuilder->build(Carrier::getCarriersForOrder($country->id_zone), $country->id_zone); From 652487a5159fb0f0044a0bf0930bbe780c6e5db7 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 1 Oct 2024 10:02:37 +0300 Subject: [PATCH 46/74] changelog updated --- changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog.md b/changelog.md index 8d4c43aeb..eb2c90030 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,8 @@ ## Changes in release 6.2.3 ## + Multi shop improvements with order states + Logging improvements ++ Phone field validation improvements ++ Italian language compatibility ## Changes in release 6.2.2 ## + Error handling improvements From 7784bf1fdea9552f660d61b39d5b9421b9343f62 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 1 Oct 2024 11:49:31 +0300 Subject: [PATCH 47/74] tabs fix during upgrade --- upgrade/Upgrade-6.2.3.php | 154 +++++++++++++++++++++++++++++++------- 1 file changed, 127 insertions(+), 27 deletions(-) diff --git a/upgrade/Upgrade-6.2.3.php b/upgrade/Upgrade-6.2.3.php index 9b9ba3105..3293e2235 100644 --- a/upgrade/Upgrade-6.2.3.php +++ b/upgrade/Upgrade-6.2.3.php @@ -11,6 +11,9 @@ use Mollie\Adapter\ConfigurationAdapter; use Mollie\Config\Config; +use Mollie\Install\InstallerInterface; +use PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabRegister; +use Symfony\Component\HttpFoundation\ParameterBag; if (!defined('_PS_VERSION_')) { exit; @@ -36,37 +39,134 @@ function upgrade_module_6_2_3(Mollie $module): bool return false; // If the table creation fails, return false } - // Install the necessary tabs - $tabs = [ - [ - 'name' => $module->l('Logs'), - 'class_name' => $module::ADMIN_MOLLIE_LOGS_PARENT_CONTROLLER, - 'parent_class_name' => $module::ADMIN_MOLLIE_CONTROLLER, - 'module_tab' => true, - ], + if (!deleteOldTabs623($module)) { + return false; + } + + // only for 1.7.6 version + if (version_compare(_PS_VERSION_, '1.7.7.0', '<')) { + if (!deleteOldTabAuthorizationRoles623($module)) { + return false; + } + } + + /** @var Mollie\Install\Installer $installer */ + $installer = $module->getService(Mollie\Install\Installer::class); + + $installer->installSpecificTabs(); + + /** @var ModuleTabRegister $tabRegister */ + $tabRegister = $module->getService('prestashop.adapter.module.tab.register'); + + $moduleAdapter = new \PrestaShop\PrestaShop\Adapter\Module\Module(); + $moduleAdapter->instance = $module; + $moduleAdapter->disk = new ParameterBag( [ - 'name' => $module->l('Logs'), - 'class_name' => $module::ADMIN_MOLLIE_LOGS_CONTROLLER, - 'parent_class_name' => $module::ADMIN_MOLLIE_TAB_CONTROLLER, - 'module_tab' => true, - ], - ]; - - foreach ($tabs as $tabData) { - $tab = new Tab(); - $tab->name = []; - foreach (Language::getLanguages(true) as $lang) { - $tab->name[$lang['id_lang']] = $tabData['name']; + 'filemtype' => 0, + 'is_present' => 1, + 'is_valid' => 1, + 'version' => null, + 'path' => '', + ] + ); + + $moduleAdapter->attributes->set('name', $module->name); + + $tabRegister->registerTabs($moduleAdapter); + + return $isTableCreated; +} + +function deleteOldTabs623($module): bool +{ + $classNames = [$module::ADMIN_MOLLIE_CONTROLLER, $module::ADMIN_MOLLIE_AJAX_CONTROLLER]; + $preparedClassNames = []; + + foreach ($classNames as $className) { + $preparedClassNames[] = pSQL($className); + } + + $preparedClassNames = implode("', '", $preparedClassNames); + + $sql = ' + SELECT id_tab + FROM `' . _DB_PREFIX_ . 'tab` + WHERE class_name IN (\'' . $preparedClassNames . '\'); + '; + + try { + $tabIds = Db::getInstance()->executeS($sql); + } catch (Exception $e) { + return false; + } + + if (empty($tabIds)) { + return true; + } + + $preparedTabIds = []; + + foreach ($tabIds as $tabId) { + $preparedTabIds[] = (int) $tabId['id_tab']; + } + + $preparedTabIds = implode(", ", $preparedTabIds); + + $sql = ' + DELETE FROM `' . _DB_PREFIX_ . 'tab` + WHERE id_tab IN (' . $preparedTabIds . '); + '; + + try { + if (!Db::getInstance()->execute($sql)) { + return false; } - $tab->class_name = $tabData['class_name']; - $tab->id_parent = Tab::getIdFromClassName($tabData['parent_class_name']); - $tab->module = $module->name; - $tab->active = 1; + } catch (Exception $e) { + return false; + } - if (!$tab->add()) { - return false; // Return false if any tab creation fails + $sql = ' + DELETE FROM `' . _DB_PREFIX_ . 'tab_lang` + WHERE id_tab IN (' . $preparedTabIds . '); + '; + + try { + if (!Db::getInstance()->execute($sql)) { + return false; } + } catch (Exception $e) { + return false; } - return $isTableCreated; + return true; } + +function deleteOldTabAuthorizationRoles623($module): bool +{ + $controllers = [$module::ADMIN_MOLLIE_CONTROLLER, $module::ADMIN_MOLLIE_AJAX_CONTROLLER]; + $preparedTabs = []; + + foreach ($controllers as $controller) { + $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_CREATE'; + $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_READ'; + $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_UPDATE'; + $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_DELETE'; + } + + $preparedTabs = implode("', '", $preparedTabs); + + $sql = ' + DELETE FROM `' . _DB_PREFIX_ . 'authorization_role` + WHERE slug IN (\'' . $preparedTabs . '\'); + '; + + try { + if (!Db::getInstance()->execute($sql)) { + return false; + } + } catch (Exception $e) { + return false; + } + + return true; +} \ No newline at end of file From 5c8b1d37d0490e6645b534c514a4d5ddd506c801 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 1 Oct 2024 11:51:12 +0300 Subject: [PATCH 48/74] cs fix --- upgrade/Upgrade-6.2.3.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/upgrade/Upgrade-6.2.3.php b/upgrade/Upgrade-6.2.3.php index 3293e2235..c499ad34c 100644 --- a/upgrade/Upgrade-6.2.3.php +++ b/upgrade/Upgrade-6.2.3.php @@ -9,9 +9,6 @@ * @see https://github.com/mollie/PrestaShop */ -use Mollie\Adapter\ConfigurationAdapter; -use Mollie\Config\Config; -use Mollie\Install\InstallerInterface; use PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabRegister; use Symfony\Component\HttpFoundation\ParameterBag; From 0b35b935fef00871078120f8a1824d84d0b9b2a1 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 1 Oct 2024 12:41:45 +0300 Subject: [PATCH 49/74] tab position fix --- upgrade/Upgrade-6.2.3.php | 110 -------------------------------------- 1 file changed, 110 deletions(-) diff --git a/upgrade/Upgrade-6.2.3.php b/upgrade/Upgrade-6.2.3.php index c499ad34c..d230c4248 100644 --- a/upgrade/Upgrade-6.2.3.php +++ b/upgrade/Upgrade-6.2.3.php @@ -36,22 +36,6 @@ function upgrade_module_6_2_3(Mollie $module): bool return false; // If the table creation fails, return false } - if (!deleteOldTabs623($module)) { - return false; - } - - // only for 1.7.6 version - if (version_compare(_PS_VERSION_, '1.7.7.0', '<')) { - if (!deleteOldTabAuthorizationRoles623($module)) { - return false; - } - } - - /** @var Mollie\Install\Installer $installer */ - $installer = $module->getService(Mollie\Install\Installer::class); - - $installer->installSpecificTabs(); - /** @var ModuleTabRegister $tabRegister */ $tabRegister = $module->getService('prestashop.adapter.module.tab.register'); @@ -73,97 +57,3 @@ function upgrade_module_6_2_3(Mollie $module): bool return $isTableCreated; } - -function deleteOldTabs623($module): bool -{ - $classNames = [$module::ADMIN_MOLLIE_CONTROLLER, $module::ADMIN_MOLLIE_AJAX_CONTROLLER]; - $preparedClassNames = []; - - foreach ($classNames as $className) { - $preparedClassNames[] = pSQL($className); - } - - $preparedClassNames = implode("', '", $preparedClassNames); - - $sql = ' - SELECT id_tab - FROM `' . _DB_PREFIX_ . 'tab` - WHERE class_name IN (\'' . $preparedClassNames . '\'); - '; - - try { - $tabIds = Db::getInstance()->executeS($sql); - } catch (Exception $e) { - return false; - } - - if (empty($tabIds)) { - return true; - } - - $preparedTabIds = []; - - foreach ($tabIds as $tabId) { - $preparedTabIds[] = (int) $tabId['id_tab']; - } - - $preparedTabIds = implode(", ", $preparedTabIds); - - $sql = ' - DELETE FROM `' . _DB_PREFIX_ . 'tab` - WHERE id_tab IN (' . $preparedTabIds . '); - '; - - try { - if (!Db::getInstance()->execute($sql)) { - return false; - } - } catch (Exception $e) { - return false; - } - - $sql = ' - DELETE FROM `' . _DB_PREFIX_ . 'tab_lang` - WHERE id_tab IN (' . $preparedTabIds . '); - '; - - try { - if (!Db::getInstance()->execute($sql)) { - return false; - } - } catch (Exception $e) { - return false; - } - - return true; -} - -function deleteOldTabAuthorizationRoles623($module): bool -{ - $controllers = [$module::ADMIN_MOLLIE_CONTROLLER, $module::ADMIN_MOLLIE_AJAX_CONTROLLER]; - $preparedTabs = []; - - foreach ($controllers as $controller) { - $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_CREATE'; - $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_READ'; - $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_UPDATE'; - $preparedTabs[] = 'ROLE_MOD_TAB_' . pSQL($controller) . '_DELETE'; - } - - $preparedTabs = implode("', '", $preparedTabs); - - $sql = ' - DELETE FROM `' . _DB_PREFIX_ . 'authorization_role` - WHERE slug IN (\'' . $preparedTabs . '\'); - '; - - try { - if (!Db::getInstance()->execute($sql)) { - return false; - } - } catch (Exception $e) { - return false; - } - - return true; -} \ No newline at end of file From 2d85c6c1a38ee9b3b3c48fd30a956424cc449460 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 1 Oct 2024 16:09:12 +0300 Subject: [PATCH 50/74] allow alma to have order api --- src/Config/Config.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Config/Config.php b/src/Config/Config.php index 0546e17b2..7bb76294f 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -282,7 +282,6 @@ class Config ]; const PAYMENT_API_ONLY_METHODS = [ - PaymentMethod::ALMA, ]; const ROUTE_RESEND_SECOND_CHANCE_PAYMENT_MESSAGE = 'mollie_module_admin_resend_payment_message'; From b123cd3a28287d6a3a0c9afe903f0cfe468af9ea Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 2 Oct 2024 10:56:18 +0300 Subject: [PATCH 51/74] improved payment api request --- src/DTO/PaymentData.php | 22 ++++++++++++++++++++++ src/Service/PaymentMethodService.php | 1 + 2 files changed, 23 insertions(+) diff --git a/src/DTO/PaymentData.php b/src/DTO/PaymentData.php index 68d00f2d1..31e3043e0 100644 --- a/src/DTO/PaymentData.php +++ b/src/DTO/PaymentData.php @@ -339,6 +339,22 @@ public function setSubscriptionOrder(bool $subscriptionOrder): void $this->subscriptionOrder = $subscriptionOrder; } + /** + * @return string + */ + public function getEmail() + { + return $this->email; + } + + /** + * @param string $email + */ + public function setEmail($email) + { + $this->email = $email; + } + public function jsonSerialize() { $result = [ @@ -347,6 +363,9 @@ public function jsonSerialize() 'value' => (string) $this->getAmount()->getValue(), ], 'billingAddress' => [ + 'givenName' => $this->cleanUpInput($this->getBillingAddress()->firstname), + 'familyName' => $this->cleanUpInput($this->getBillingAddress()->lastname), + 'email' => $this->cleanUpInput($this->getEmail()), 'streetAndNumber' => $this->cleanUpInput($this->getBillingAddress()->address1), 'streetAdditional' => $this->cleanUpInput($this->getBillingAddress()->address2, null), 'city' => $this->cleanUpInput($this->getBillingAddress()->city), @@ -354,6 +373,9 @@ public function jsonSerialize() 'country' => $this->cleanUpInput(Country::getIsoById($this->getBillingAddress()->id_country)), ], 'shippingAddress' => [ + 'givenName' => $this->cleanUpInput($this->getBillingAddress()->firstname), + 'familyName' => $this->cleanUpInput($this->getBillingAddress()->lastname), + 'email' => $this->cleanUpInput($this->getEmail()), 'streetAndNumber' => $this->cleanUpInput($this->getShippingAddress()->address1), 'streetAdditional' => $this->cleanUpInput($this->getShippingAddress()->address2, null), 'city' => $this->cleanUpInput($this->getShippingAddress()->city), diff --git a/src/Service/PaymentMethodService.php b/src/Service/PaymentMethodService.php index 411ea16e6..ecf936f67 100644 --- a/src/Service/PaymentMethodService.php +++ b/src/Service/PaymentMethodService.php @@ -335,6 +335,7 @@ public function getPaymentData( $paymentData->setMethod($molPaymentMethod->id_method); $paymentData->setDescription($orderReference); + $paymentData->setEmail($customer->email); if (isset($cart->id_address_invoice)) { $billingAddress = new Address((int) $cart->id_address_invoice); From d6f8efa3fd5418ca3c2515d70678348496429942 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 2 Oct 2024 10:58:17 +0300 Subject: [PATCH 52/74] stan fix --- src/DTO/PaymentData.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/DTO/PaymentData.php b/src/DTO/PaymentData.php index 31e3043e0..513f5dc42 100644 --- a/src/DTO/PaymentData.php +++ b/src/DTO/PaymentData.php @@ -101,6 +101,11 @@ class PaymentData implements JsonSerializable */ private $subscriptionOrder = false; + /** + * @var string + */ + private $email; + public function __construct( Amount $amount, $description, From 611d5c774c7fc91b78d580dffeec9ce0f45c85ad Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 10:45:54 +0300 Subject: [PATCH 53/74] PIPRES-475: delivery address column name in subscription tab --- subscription/Repository/RecurringOrderRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subscription/Repository/RecurringOrderRepository.php b/subscription/Repository/RecurringOrderRepository.php index 3e70cb39e..0ec15530f 100644 --- a/subscription/Repository/RecurringOrderRepository.php +++ b/subscription/Repository/RecurringOrderRepository.php @@ -36,7 +36,7 @@ public function getAllOrdersBasedOnStatuses(array $statuses, int $shopId): array 'mro.id_mol_recurring_order as id, mro.mollie_subscription_id, mro.mollie_customer_id, mro.id_cart, mro.id_mol_recurring_orders_product as id_recurring_product, - mro.id_address_invoice, mro.id_delivery_address' + mro.id_address_invoice, mro.id_address_delivery' ) ->from('mol_recurring_order', 'mro') ->leftJoin( From a0f29a3a95f926d832617d15e4aba904c3a6c093 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 15:19:24 +0300 Subject: [PATCH 54/74] PIPRES-459: Github workflow improvements --- .github/pull_request_template.md | 26 +++++++++++++++++++ .github/workflows/create_zip.yml | 40 +++++++++++++++++++++++++++++ .github/workflows/test.yml | 44 +++++++++++++++++++++++++++++++- 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/create_zip.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..c76d83d2c --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,26 @@ +**What was implemented/fixed with this PR?** + +--- + + +
+ +**How did I test these changes?** + +--- + + +
+
+ +--- + +[!] Don't forget to include JIRA task number in PR name or branch name. [!] + +[!] Don't forget to update *changelog.md* with new changes. [!] + +- [ ] Verify if the version is correct. +- [ ] Update demo environments used for testing. +- [ ] Ensure changelog contains all changes. +- [ ] Update documentation if needed. +- [ ] Test if everything works properly. diff --git a/.github/workflows/create_zip.yml b/.github/workflows/create_zip.yml new file mode 100644 index 000000000..9b1db3f98 --- /dev/null +++ b/.github/workflows/create_zip.yml @@ -0,0 +1,40 @@ +name: Create module ZIP + +on: + workflow_dispatch: + +jobs: + prepare-zip: + name: Prepare module ZIP artifact + runs-on: ubuntu-latest + env: + MODULE_NAME: mollie + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.12.0 + with: + access_token: ${{ github.token }} + + - name: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Build module ZIP + run: | + composer install --no-dev --optimize-autoloader --classmap-authoritative + composer dump-autoload --no-dev --optimize --classmap-authoritative + cp .github/.htaccess vendor/.htaccess + rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist .php-cs-fixer.dist.php + mkdir ${{ env.MODULE_NAME }} + rsync -Rr ./ ./${{ env.MODULE_NAME }} + chmod -R 777 ${{ env.MODULE_NAME }}/var/cache + shopt -s extglob + rm -r !(${{ env.MODULE_NAME }}) + find . -maxdepth 1 -type f -exec rm "{}" \; + cd ${{ env.MODULE_NAME }} && rm -rf ${{ env.MODULE_NAME }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ env.MODULE_NAME }} + path: ./ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1d84d2267..9959773e2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,12 @@ name: Tests -on: [ pull_request ] +on: + pull_request: + branches: + - '**' + push: + branches: + - 'master' jobs: php-cs-fixer: @@ -62,3 +68,39 @@ jobs: - name: Run PHPStan run: docker run --rm --volumes-from temp-ps -v $PWD:/web/module -e _PS_ROOT_DIR_=/var/www/html --workdir=/web/module phpstan/phpstan:0.12 analyse --configuration=/web/module/tests/phpstan/phpstan_base.neon --debug --error-format github + + prepare-zip: + name: Prepare module ZIP artifact + runs-on: ubuntu-latest + needs: [ test ] + env: + MODULE_NAME: mollie + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.12.0 + with: + access_token: ${{ github.token }} + + - name: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Build module ZIP + run: | + composer install --no-dev --optimize-autoloader --classmap-authoritative + composer dump-autoload --no-dev --optimize --classmap-authoritative + cp .github/.htaccess vendor/.htaccess + rm -rf .git .github tests .php-cs-fixer.php Makefile cypress* docker-compose*.yml package.json package-lock.json .docker + mkdir ${{ env.MODULE_NAME }} + rsync -Rr ./ ./${{ env.MODULE_NAME }} + chmod -R 777 ${{ env.MODULE_NAME }}/var/cache + shopt -s extglob + rm -r !(${{ env.MODULE_NAME }}) + find . -maxdepth 1 -type f -exec rm "{}" \; + cd ${{ env.MODULE_NAME }} && rm -rf ${{ env.MODULE_NAME }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ env.MODULE_NAME }} + path: ./ \ No newline at end of file From cc8410f5b4892c4aa07ab755328aec623ce864d5 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 15:21:58 +0300 Subject: [PATCH 55/74] changelog added --- changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index eb2c90030..294ffeec8 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,10 @@ ![Mollie](https://www.mollie.nl/files/Mollie-Logo-Style-Small.png) # Changelog # + +## Changes in release 6.2.4 ## ++ Workflow improvements + ## Changes in release 6.2.3 ## + Multi shop improvements with order states + Logging improvements From 1a2c12ca0eacc63f1f6435ae694121b90e197c61 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 15:25:16 +0300 Subject: [PATCH 56/74] cancel workflow removed due to permission issues --- .github/workflows/test.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9959773e2..79bc21821 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,11 +76,7 @@ jobs: env: MODULE_NAME: mollie steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.12.0 - with: - access_token: ${{ github.token }} - + # todo ask for permissions to add cancel previous workflow action - name: checkout uses: actions/checkout@v4 with: From 9ec397641840c8a8b35846dc706ff95fef702231 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 15:27:53 +0300 Subject: [PATCH 57/74] htaccess copy removed --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 79bc21821..b35333641 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -86,7 +86,6 @@ jobs: run: | composer install --no-dev --optimize-autoloader --classmap-authoritative composer dump-autoload --no-dev --optimize --classmap-authoritative - cp .github/.htaccess vendor/.htaccess rm -rf .git .github tests .php-cs-fixer.php Makefile cypress* docker-compose*.yml package.json package-lock.json .docker mkdir ${{ env.MODULE_NAME }} rsync -Rr ./ ./${{ env.MODULE_NAME }} From 1e68eff58e946a2371b7dbdc19efb54f8c65b79e Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 7 Oct 2024 15:30:06 +0300 Subject: [PATCH 58/74] removed not needed file from workflow zip creation --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b35333641..32f780890 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -89,7 +89,6 @@ jobs: rm -rf .git .github tests .php-cs-fixer.php Makefile cypress* docker-compose*.yml package.json package-lock.json .docker mkdir ${{ env.MODULE_NAME }} rsync -Rr ./ ./${{ env.MODULE_NAME }} - chmod -R 777 ${{ env.MODULE_NAME }}/var/cache shopt -s extglob rm -r !(${{ env.MODULE_NAME }}) find . -maxdepth 1 -type f -exec rm "{}" \; From dbcf634a6c06e84349a84fb138b2f7d675b1558d Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 9 Oct 2024 10:30:51 +0300 Subject: [PATCH 59/74] fixed number utility for low ps version --- src/Utility/NumberUtility.php | 14 +++++++++----- views/css/admin/logs/index.php | 0 views/css/admin/logs/log.css | 0 views/js/admin/logs/index.php | 0 views/js/admin/logs/log.js | 0 views/templates/admin/logs/index.php | 0 views/templates/admin/logs/log_modal.tpl | 0 .../templates/admin/logs/severity_level_column.tpl | 0 views/templates/admin/logs/severity_levels.tpl | 0 9 files changed, 9 insertions(+), 5 deletions(-) mode change 100755 => 100644 views/css/admin/logs/index.php mode change 100755 => 100644 views/css/admin/logs/log.css mode change 100755 => 100644 views/js/admin/logs/index.php mode change 100755 => 100644 views/js/admin/logs/log.js mode change 100755 => 100644 views/templates/admin/logs/index.php mode change 100755 => 100644 views/templates/admin/logs/log_modal.tpl mode change 100755 => 100644 views/templates/admin/logs/severity_level_column.tpl mode change 100755 => 100644 views/templates/admin/logs/severity_levels.tpl diff --git a/src/Utility/NumberUtility.php b/src/Utility/NumberUtility.php index 24fba4584..a0cc74de6 100644 --- a/src/Utility/NumberUtility.php +++ b/src/Utility/NumberUtility.php @@ -14,6 +14,7 @@ use PrestaShop\Decimal\DecimalNumber; use PrestaShop\Decimal\Exception\DivisionByZeroException; +use PrestaShop\Decimal\Number; use PrestaShop\Decimal\Operation\Rounding; if (!defined('_PS_VERSION_')) { @@ -228,15 +229,18 @@ public static function plus(float $a, float $b): float } /** - * Creates a Number or DecimalNumber instance from a float. + * Creates a Number or DecimalNumber instance based on the current environment. * * @param float $number * - * @return DecimalNumber + * @return DecimalNumber|Number */ - private static function getNumber(float $number): DecimalNumber + private static function getNumber(float $number) { - // Assuming DecimalNumber is the preferred class based on the use case. - return new DecimalNumber((string) $number); + if (is_subclass_of(Number::class, DecimalNumber::class)) { + return new DecimalNumber((string) $number); + } + + return new Number((string) $number); } } diff --git a/views/css/admin/logs/index.php b/views/css/admin/logs/index.php old mode 100755 new mode 100644 diff --git a/views/css/admin/logs/log.css b/views/css/admin/logs/log.css old mode 100755 new mode 100644 diff --git a/views/js/admin/logs/index.php b/views/js/admin/logs/index.php old mode 100755 new mode 100644 diff --git a/views/js/admin/logs/log.js b/views/js/admin/logs/log.js old mode 100755 new mode 100644 diff --git a/views/templates/admin/logs/index.php b/views/templates/admin/logs/index.php old mode 100755 new mode 100644 diff --git a/views/templates/admin/logs/log_modal.tpl b/views/templates/admin/logs/log_modal.tpl old mode 100755 new mode 100644 diff --git a/views/templates/admin/logs/severity_level_column.tpl b/views/templates/admin/logs/severity_level_column.tpl old mode 100755 new mode 100644 diff --git a/views/templates/admin/logs/severity_levels.tpl b/views/templates/admin/logs/severity_levels.tpl old mode 100755 new mode 100644 From 53ec4d7d33908121c8c86f575c5a800bd426c6e4 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 5 Nov 2024 16:03:46 +0200 Subject: [PATCH 60/74] PIPRES-483/ satispay payment method added --- src/Config/Config.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Config/Config.php b/src/Config/Config.php index 7bb76294f..be66347a7 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -59,11 +59,16 @@ class Config 'cartesbancaires' => ['fr'], 'directdebit' => [ 'fi', 'at', 'pt', 'be', 'bg', 'es', 'hr', 'cy', 'cz', 'dk', 'ee', 'fr', 'gf', 'de', 'gi', 'gr', 'gp', 'gg', 'hu', - 'is', 'ie', 'im', 'it', 'je', 'lv', 'li', 'lt', 'lu', 'pt', 'mt', 'mq', 'yt', 'mc', 'nl', 'no', 'pl', 'pt', 're', - 'ro', 'bl', 'mf', 'pm', 'sm', 'sk', 'sl', 'es', 'se', 'ch', 'gb', 'uk', + 'is', 'ie', 'im', 'it', 'je', 'lv', 'li', 'lt', 'lu', 'mt', 'mq', 'yt', 'mc', 'nl', 'no', 'pl', 're', + 'ro', 'bl', 'mf', 'pm', 'sm', 'sk', 'sl', 'se', 'ch', 'gb', 'uk', ], 'mybank' => [], 'trustly' => ['at', 'de', 'ee', 'es', 'fi', 'lt', 'lv', 'nl'], + 'satispay' => [ + 'at', 'be', 'bg', 'hr', 'cy', 'cz', 'dk', 'ee', 'fi', 'fr', 'de', 'gr', 'hu', 'is', 'ie', + 'it', 'lv', 'lt', 'lu', 'mt', 'nl', 'no', 'pl', 'pt', 'ro', 'sk', 'si', 'es', 'se', 'ch', + 'li', 'gb', 'tr' + ], 'riverty' => ['nl', 'be', 'de', 'at'], 'payconiq' => [], ]; @@ -327,6 +332,7 @@ class Config 'riverty' => 'Riverty', 'payconiq' => 'Payconiq', 'trustly' => 'Trustly', + 'satispay' => 'Satispay', ]; public const LOG_SEVERITY_LEVEL_INFORMATIVE = 1; From b07edec80be5550ab2a387697d7c028208486d9a Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 5 Nov 2024 16:47:24 +0200 Subject: [PATCH 61/74] PIPRES:482/paybybank payment method added --- src/Config/Config.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Config/Config.php b/src/Config/Config.php index be66347a7..f6efba51f 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -71,6 +71,7 @@ class Config ], 'riverty' => ['nl', 'be', 'de', 'at'], 'payconiq' => [], + 'paybybank' => ['at', 'be', 'cy', 'ee', 'fi', 'fr', 'de', 'gr', 'ie', 'it', 'lv', 'lt', 'lu', 'mt', 'nl', 'pt', 'sk', 'si', 'es', 'uk'], ]; const SUPPORTED_PHP_VERSION = '5.6'; @@ -333,6 +334,7 @@ class Config 'payconiq' => 'Payconiq', 'trustly' => 'Trustly', 'satispay' => 'Satispay', + 'paybybank' => 'Pay by Bank', ]; public const LOG_SEVERITY_LEVEL_INFORMATIVE = 1; From 7a5db6ab66bf267e80f33a83ae01be25ac12ce0e Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 5 Nov 2024 16:55:37 +0200 Subject: [PATCH 62/74] php cs fixer fix --- src/Config/Config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Config/Config.php b/src/Config/Config.php index be66347a7..f7e47583b 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -67,7 +67,7 @@ class Config 'satispay' => [ 'at', 'be', 'bg', 'hr', 'cy', 'cz', 'dk', 'ee', 'fi', 'fr', 'de', 'gr', 'hu', 'is', 'ie', 'it', 'lv', 'lt', 'lu', 'mt', 'nl', 'no', 'pl', 'pt', 'ro', 'sk', 'si', 'es', 'se', 'ch', - 'li', 'gb', 'tr' + 'li', 'gb', 'tr', ], 'riverty' => ['nl', 'be', 'de', 'at'], 'payconiq' => [], From 27fbd81c500f7a057b8feb39d255d0d2418cf56f Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 5 Nov 2024 16:57:23 +0200 Subject: [PATCH 63/74] php cs fixer --- src/Config/Config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Config/Config.php b/src/Config/Config.php index f6efba51f..27abc82aa 100644 --- a/src/Config/Config.php +++ b/src/Config/Config.php @@ -67,7 +67,7 @@ class Config 'satispay' => [ 'at', 'be', 'bg', 'hr', 'cy', 'cz', 'dk', 'ee', 'fi', 'fr', 'de', 'gr', 'hu', 'is', 'ie', 'it', 'lv', 'lt', 'lu', 'mt', 'nl', 'no', 'pl', 'pt', 'ro', 'sk', 'si', 'es', 'se', 'ch', - 'li', 'gb', 'tr' + 'li', 'gb', 'tr', ], 'riverty' => ['nl', 'be', 'de', 'at'], 'payconiq' => [], From 8efb374bbf37f70453df01dc9b36421f395a2033 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Wed, 6 Nov 2024 12:00:33 +0200 Subject: [PATCH 64/74] updated pull request template --- .github/pull_request_template.md | 35 +++++++++++--------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c76d83d2c..1ee9a406e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,26 +1,15 @@ -**What was implemented/fixed with this PR?** + -
- -**How did I test these changes?** - ---- - - -
-
- ---- - -[!] Don't forget to include JIRA task number in PR name or branch name. [!] - -[!] Don't forget to update *changelog.md* with new changes. [!] - -- [ ] Verify if the version is correct. -- [ ] Update demo environments used for testing. -- [ ] Ensure changelog contains all changes. -- [ ] Update documentation if needed. -- [ ] Test if everything works properly. +| Questions | Answers +|-----------------| ------------------------------------------------------- +| Branch? | Master/Release +| Description? | Please be specific when describing the PR.
Every detail helps: versions, browser/server configuration, specific module/theme, etc. Feel free to add more information below this table. +| Type? | bug fix / improvement / new feature / refacto +| How to test? | Indicate how to verify that this change works as expected. +| Fixed issue ? | If none leave blank +| Sponsor company | Your company or customer's name goes here (if applicable). \ No newline at end of file From 9da907150e361028edca058f214591886544d0d3 Mon Sep 17 00:00:00 2001 From: Gytautas Zumaras <96050852+GytisZum@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:03:15 +0200 Subject: [PATCH 65/74] Update pull_request_template.md --- .github/pull_request_template.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 1ee9a406e..2405b8fb2 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -9,7 +9,6 @@ Please take the time to edit the "Answers" rows below with the necessary informa |-----------------| ------------------------------------------------------- | Branch? | Master/Release | Description? | Please be specific when describing the PR.
Every detail helps: versions, browser/server configuration, specific module/theme, etc. Feel free to add more information below this table. -| Type? | bug fix / improvement / new feature / refacto +| Type? | bug fix / improvement / new feature / refactoring | How to test? | Indicate how to verify that this change works as expected. | Fixed issue ? | If none leave blank -| Sponsor company | Your company or customer's name goes here (if applicable). \ No newline at end of file From 78a59b31a7201c73e06f867ce10540e28a8d8e07 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Thu, 7 Nov 2024 10:01:18 +0200 Subject: [PATCH 66/74] changlog and version bump --- changelog.md | 2 ++ mollie.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 294ffeec8..bf7f3bf8f 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,8 @@ ## Changes in release 6.2.4 ## + Workflow improvements ++ Satispay payment method added ++ Pay by Bank payment method added ## Changes in release 6.2.3 ## + Multi shop improvements with order states diff --git a/mollie.php b/mollie.php index 57969e2a2..4e7c91505 100755 --- a/mollie.php +++ b/mollie.php @@ -89,7 +89,7 @@ public function __construct() { $this->name = 'mollie'; $this->tab = 'payments_gateways'; - $this->version = '6.2.3'; + $this->version = '6.2.4'; $this->author = 'Mollie B.V.'; $this->need_instance = 1; $this->bootstrap = true; From 02aa8a6c116fa2a62a0dc8cc57604fea7548f546 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Mon, 11 Nov 2024 09:41:55 +0200 Subject: [PATCH 67/74] removed conflicting dependency --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 4127a996b..9e6cbf27d 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,6 @@ "invertus/knapsack": "^10.0" }, "require-dev": { - "roave/security-advisories": "dev-latest", "invertus/prestashop-models": "^1.0", "prestashop/php-dev-tools": "*", "phpunit/phpunit": "~5.7", From d45dd8011721d7996d495bf58a92df13b57c6ea1 Mon Sep 17 00:00:00 2001 From: Gytautas Date: Tue, 12 Nov 2024 11:38:46 +0200 Subject: [PATCH 68/74] modified zip creation --- .github/workflows/create_zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create_zip.yml b/.github/workflows/create_zip.yml index 9b1db3f98..b83d575bd 100644 --- a/.github/workflows/create_zip.yml +++ b/.github/workflows/create_zip.yml @@ -26,9 +26,9 @@ jobs: composer dump-autoload --no-dev --optimize --classmap-authoritative cp .github/.htaccess vendor/.htaccess rm -rf .git .docker .editorconfig .github tests .php-cs-fixer.php Makefile cypress .docker cypress.config.js cypress.env.json docker-compose*.yml .gitignore bin codeception.yml package-lock.json package.json .php_cs.dist .php-cs-fixer.dist .php-cs-fixer.dist.php + mv .env.dist .env mkdir ${{ env.MODULE_NAME }} rsync -Rr ./ ./${{ env.MODULE_NAME }} - chmod -R 777 ${{ env.MODULE_NAME }}/var/cache shopt -s extglob rm -r !(${{ env.MODULE_NAME }}) find . -maxdepth 1 -type f -exec rm "{}" \; From 0fd692698e0ea017addfc689c3f2aba9932141ca Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 17:59:13 +0200 Subject: [PATCH 69/74] upload artifact version increase --- .github/workflows/E2E_On_PR.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/E2E_On_PR.yml b/.github/workflows/E2E_On_PR.yml index 119cf4207..63ca01d8c 100755 --- a/.github/workflows/E2E_On_PR.yml +++ b/.github/workflows/E2E_On_PR.yml @@ -102,7 +102,7 @@ jobs: - name: Archive videos and screenshots if: ${{ always() }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Cypress_Mollie_videos_screenshots_${{ matrix.prestashop }} retention-days: 2 From 02a0ca4231f5d26671489b84328542dc2860e28d Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 18:08:01 +0200 Subject: [PATCH 70/74] fix --- .github/workflows/E2E_On_PR.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/E2E_On_PR.yml b/.github/workflows/E2E_On_PR.yml index 63ca01d8c..62eeebda9 100755 --- a/.github/workflows/E2E_On_PR.yml +++ b/.github/workflows/E2E_On_PR.yml @@ -59,7 +59,7 @@ jobs: run: | ${{ matrix.make }} - - name: Waiting for Ngrok tunnel + - name: Waiting for Ngrok run: | URL="${{ matrix.url }}" TIMEOUT=120 From 874d2b63d7629bcefff67caf1672f9c540c71d77 Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 18:10:09 +0200 Subject: [PATCH 71/74] fix --- .github/workflows/E2E_On_PR.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/E2E_On_PR.yml b/.github/workflows/E2E_On_PR.yml index 62eeebda9..ed658e494 100755 --- a/.github/workflows/E2E_On_PR.yml +++ b/.github/workflows/E2E_On_PR.yml @@ -1,7 +1,6 @@ name: Cypress E2E Automation [develop branch] on: pull_request: - types: [opened, reopened] branches: [develop, develop**, develop-**] concurrency: From 507dcc9045707d601c6f66e60d0e38d7d50e8992 Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 18:15:35 +0200 Subject: [PATCH 72/74] fix --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index de3a68b13..e675d76ee 100755 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ module = mollie # target: fix-lint - Launch php cs fixer fix-lint: - docker-compose run --rm php sh -c "vendor/bin/php-cs-fixer fix --using-cache=no" + docker compose run --rm php sh -c "vendor/bin/php-cs-fixer fix --using-cache=no" # Launch the PS build and E2E Cypress app automatically. Eexample: make VERSION=1785 e2eh1785_local, make VERSION=8 e2eh8_local etc. # Warning: .env with secrets must be imported if you wanna test locally! This checks the .env existence, ignoring if there is no such on your machine. @@ -17,9 +17,9 @@ endif e2eh$(VERSION)_local: composer install # detaching containers - docker-compose -f docker-compose.$(VERSION).yml up -d --force-recreate + docker compose -f docker-compose.$(VERSION).yml up -d --force-recreate # sees what containers are running - docker-compose -f docker-compose.$(VERSION).yml ps + docker compose -f docker-compose.$(VERSION).yml ps make waiting-for-containers-local make seeding-customized-sql make installing-uninstalling-enabling-module @@ -29,9 +29,9 @@ e2eh$(VERSION)_local: # For CI build with PS autoinstall e2eh$(VERSION): # detaching containers - docker-compose -f docker-compose.$(VERSION).yml up -d --force-recreate + docker compose -f docker-compose.$(VERSION).yml up -d --force-recreate # sees what containers are running - docker-compose -f docker-compose.$(VERSION).yml ps + docker compose -f docker-compose.$(VERSION).yml ps make waiting-for-containers-CI make seeding-customized-sql make installing-uninstalling-enabling-module From a619c24e760da6d8bf1dcd6bd2ae040484834ee3 Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 20:02:32 +0200 Subject: [PATCH 73/74] test przelewy24 update --- cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js | 1 - 1 file changed, 1 deletion(-) diff --git a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js index 8b0657a29..227d190c1 100755 --- a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js +++ b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js @@ -162,7 +162,6 @@ it('C339391: 56 Przelewy24 Checkouting [Payments API]', () => { cy.get('.condition-label > .js-terms').click({force:true}) cy.contains('Place order').click() cy.get('.input-float > input').type('testing@testing.com') - cy.get('[class="button form__button"]').click() cy.get('[value="paid"]').click() cy.get('[class="button form__button"]').click() cy.get('#content-hook_order_confirmation > .card-block').should('be.visible') From 2501effe6b8fe97fc9dfc02322ffece51d36e34a Mon Sep 17 00:00:00 2001 From: Justas Vaitkus Date: Fri, 15 Nov 2024 20:39:38 +0200 Subject: [PATCH 74/74] fix --- cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js | 1 - 1 file changed, 1 deletion(-) diff --git a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js index 227d190c1..2aa23bbc0 100755 --- a/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js +++ b/cypress/e2e/ps8/05_mollie.ps8.PaymentTestsPaymentsAPI.js @@ -161,7 +161,6 @@ it('C339391: 56 Przelewy24 Checkouting [Payments API]', () => { cy.contains('Przelewy24').click({force:true}) cy.get('.condition-label > .js-terms').click({force:true}) cy.contains('Place order').click() - cy.get('.input-float > input').type('testing@testing.com') cy.get('[value="paid"]').click() cy.get('[class="button form__button"]').click() cy.get('#content-hook_order_confirmation > .card-block').should('be.visible')