From 14b3eaf131298ab8e70bdd529789c91821fbe4a2 Mon Sep 17 00:00:00 2001 From: Michiel Gerritsen Date: Sat, 2 Jun 2018 11:20:25 +0200 Subject: [PATCH 01/14] Added checks to see if the payment is available --- .../Observer/SalesOrderBeforeSaveObserver.php | 2 +- .../SalesOrderBeforeSaveObserverTest.php | 28 ++++++++++++++++--- .../Magento/Paypal/Plugin/OrderCanInvoice.php | 4 +++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php b/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php index ed8185e6dedeb..465c4916d8abb 100644 --- a/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php +++ b/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php @@ -21,7 +21,7 @@ public function execute(\Magento\Framework\Event\Observer $observer) /** @var \Magento\Sales\Model\Order $order */ $order = $observer->getEvent()->getOrder(); - if ($order->getPayment()->getMethodInstance()->getCode() != 'free') { + if ($order->getPayment() && $order->getPayment()->getMethodInstance()->getCode() != 'free') { return $this; } diff --git a/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php b/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php index b86fbc6b18263..47af32d554b68 100644 --- a/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php +++ b/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php @@ -61,7 +61,7 @@ public function testSalesOrderBeforeSaveCantUnhold() $paymentMock = $this->getMockBuilder( \Magento\Sales\Model\Order\Payment::class )->disableOriginalConstructor()->setMethods([])->getMock(); - $order->expects($this->once())->method('getPayment')->will($this->returnValue($paymentMock)); + $order->method('getPayment')->will($this->returnValue($paymentMock)); $methodInstance = $this->getMockBuilder( \Magento\Payment\Model\MethodInterface::class )->getMockForAbstractClass(); @@ -86,7 +86,7 @@ public function testSalesOrderBeforeSaveIsCanceled() $paymentMock = $this->getMockBuilder( \Magento\Sales\Model\Order\Payment::class )->disableOriginalConstructor()->setMethods([])->getMock(); - $order->expects($this->once())->method('getPayment')->will($this->returnValue($paymentMock)); + $order->method('getPayment')->will($this->returnValue($paymentMock)); $methodInstance = $this->getMockBuilder( \Magento\Payment\Model\MethodInterface::class )->getMockForAbstractClass(); @@ -114,7 +114,7 @@ public function testSalesOrderBeforeSaveIsClosed() $paymentMock = $this->getMockBuilder( \Magento\Sales\Model\Order\Payment::class )->disableOriginalConstructor()->setMethods([])->getMock(); - $order->expects($this->once())->method('getPayment')->will($this->returnValue($paymentMock)); + $order->method('getPayment')->will($this->returnValue($paymentMock)); $methodInstance = $this->getMockBuilder( \Magento\Payment\Model\MethodInterface::class )->getMockForAbstractClass(); @@ -156,6 +156,26 @@ public function testSalesOrderBeforeSaveSetForced() $this->salesOrderBeforeSaveObserver->execute($this->observerMock); } + /** + * The method should check that the payment is available, as this is not always the case. + */ + public function testDoesNothingWhenNoPaymentIsAvailable() + { + $this->_prepareEventMockWithMethods(['getOrder']); + + $order = $this->getMockBuilder(\Magento\Sales\Model\Order::class)->disableOriginalConstructor()->setMethods( + array_merge(['__wakeup', 'getPayment']) + )->getMock(); + + $this->eventMock->expects($this->once())->method('getOrder')->will( + $this->returnValue($order) + ); + + $order->expects($this->exactly(1))->method('getPayment')->willReturn(null); + + $this->salesOrderBeforeSaveObserver->execute($this->observerMock); + } + /** * Prepares EventMock with set of methods * @@ -184,7 +204,7 @@ private function _getPreparedOrderMethod($methodCode, $orderMethods = []) $paymentMock = $this->getMockBuilder( \Magento\Sales\Model\Order\Payment::class )->disableOriginalConstructor()->setMethods([])->getMock(); - $order->expects($this->once())->method('getPayment')->will($this->returnValue($paymentMock)); + $order->method('getPayment')->will($this->returnValue($paymentMock)); $methodInstance = $this->getMockBuilder( \Magento\Payment\Model\MethodInterface::class )->getMockForAbstractClass(); diff --git a/app/code/Magento/Paypal/Plugin/OrderCanInvoice.php b/app/code/Magento/Paypal/Plugin/OrderCanInvoice.php index 87abdf8264503..edb50acc5ee76 100644 --- a/app/code/Magento/Paypal/Plugin/OrderCanInvoice.php +++ b/app/code/Magento/Paypal/Plugin/OrderCanInvoice.php @@ -40,6 +40,10 @@ public function __construct(Express $express) */ public function afterCanInvoice(Order $order, bool $result): bool { + if (!$order->getPayment()) { + return false; + } + if ($this->express->isOrderAuthorizationAllowed($order->getPayment())) { return false; } From 3eb6c3e70e65fdadc92f30d4faba77751863580c Mon Sep 17 00:00:00 2001 From: nmalevanec Date: Mon, 8 Oct 2018 10:56:15 +0300 Subject: [PATCH 02/14] ENGCOM-2629: Added checks to see if the payment is available #15683 --- .../Payment/Observer/SalesOrderBeforeSaveObserver.php | 9 ++++++++- .../Unit/Observer/SalesOrderBeforeSaveObserverTest.php | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php b/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php index 465c4916d8abb..3d520db833164 100644 --- a/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php +++ b/app/code/Magento/Payment/Observer/SalesOrderBeforeSaveObserver.php @@ -15,13 +15,20 @@ class SalesOrderBeforeSaveObserver implements ObserverInterface * * @param \Magento\Framework\Event\Observer $observer * @return $this + * @throws \Magento\Framework\Exception\LocalizedException in case order has no payment specified. */ public function execute(\Magento\Framework\Event\Observer $observer) { /** @var \Magento\Sales\Model\Order $order */ $order = $observer->getEvent()->getOrder(); - if ($order->getPayment() && $order->getPayment()->getMethodInstance()->getCode() != 'free') { + if (!$order->getPayment()) { + throw new \Magento\Framework\Exception\LocalizedException( + __('Please provide payment for the order.') + ); + } + + if ($order->getPayment()->getMethodInstance()->getCode() != 'free') { return $this; } diff --git a/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php b/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php index 47af32d554b68..63ca1b47dc08c 100644 --- a/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php +++ b/app/code/Magento/Payment/Test/Unit/Observer/SalesOrderBeforeSaveObserverTest.php @@ -158,6 +158,9 @@ public function testSalesOrderBeforeSaveSetForced() /** * The method should check that the payment is available, as this is not always the case. + * + * @expectedException \Magento\Framework\Exception\LocalizedException + * @exceptedExceptionMessage Please provide payment for the order. */ public function testDoesNothingWhenNoPaymentIsAvailable() { From 7bc9c31cdba8a4c4aca2c7fe3276688124b9b75a Mon Sep 17 00:00:00 2001 From: Patrick McLain Date: Tue, 23 Oct 2018 08:23:45 -0400 Subject: [PATCH 03/14] Collect totals in placeOrder when no paymentMethod provided Quote item values such as `base_original_price` are only populated during total collection. Currently in `QuoteManagement::placeOrder` if `$paymentMethod` is passed `Payment::importData` collects the quote totals to populate these values. Payment methods like Auth.net DirectPost do pass a value for `$paymentMethod` during order placement which causes order items to be converted with zero values for the `original_price` attributes. Fixes #16050 --- app/code/Magento/Quote/Model/QuoteManagement.php | 2 ++ app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/code/Magento/Quote/Model/QuoteManagement.php b/app/code/Magento/Quote/Model/QuoteManagement.php index 451ad08d425f5..9084ca8066301 100644 --- a/app/code/Magento/Quote/Model/QuoteManagement.php +++ b/app/code/Magento/Quote/Model/QuoteManagement.php @@ -349,6 +349,8 @@ public function placeOrder($cartId, PaymentInterface $paymentMethod = null) $data = $paymentMethod->getData(); $quote->getPayment()->importData($data); + } else { + $quote->collectTotals(); } if ($quote->getCheckoutMethod() === self::METHOD_GUEST) { diff --git a/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php index 107445bb18d2a..72e516e35cd6e 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/QuoteManagementTest.php @@ -188,6 +188,7 @@ protected function setUp() 'setCustomerGroupId', 'assignCustomer', 'getPayment', + 'collectTotals' ]); $this->quoteAddressFactory = $this->createPartialMock( @@ -687,6 +688,7 @@ public function testPlaceOrderIfCustomerIsGuest() $service->expects($this->once())->method('submit')->willReturn($orderMock); $this->quoteMock->expects($this->atLeastOnce())->method('getId')->willReturn($cartId); + $this->quoteMock->expects($this->once())->method('collectTotals')->willReturnSelf(); $orderMock->expects($this->atLeastOnce())->method('getId')->willReturn($orderId); $orderMock->expects($this->atLeastOnce())->method('getIncrementId')->willReturn($orderIncrementId); From 389a16b3b2c6cf308c130b09cd08ab75c54dd88c Mon Sep 17 00:00:00 2001 From: Sviatoslav Mankivskyi Date: Wed, 24 Oct 2018 09:49:01 -0500 Subject: [PATCH 04/14] ENGCOM-3257: Collect totals in placeOrder when no paymentMethod provided #18768 --- app/code/Magento/Quote/Model/QuoteManagement.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Quote/Model/QuoteManagement.php b/app/code/Magento/Quote/Model/QuoteManagement.php index 9084ca8066301..6ed8393f80658 100644 --- a/app/code/Magento/Quote/Model/QuoteManagement.php +++ b/app/code/Magento/Quote/Model/QuoteManagement.php @@ -159,7 +159,7 @@ class QuoteManagement implements \Magento\Quote\Api\CartManagementInterface * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository * @param \Magento\Customer\Model\CustomerFactory $customerModelFactory - * @param \Magento\Quote\Model\Quote\AddressFactory $quoteAddressFactory, + * @param \Magento\Quote\Model\Quote\AddressFactory $quoteAddressFactory * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper * @param StoreManagerInterface $storeManager * @param \Magento\Checkout\Model\Session $checkoutSession @@ -221,7 +221,7 @@ public function __construct( } /** - * {@inheritdoc} + * @inheritdoc */ public function createEmptyCart() { @@ -241,7 +241,7 @@ public function createEmptyCart() } /** - * {@inheritdoc} + * @inheritdoc */ public function createEmptyCartForCustomer($customerId) { @@ -257,7 +257,7 @@ public function createEmptyCartForCustomer($customerId) } /** - * {@inheritdoc} + * @inheritdoc */ public function assignCustomer($cartId, $customerId, $storeId) { @@ -332,7 +332,7 @@ protected function createCustomerCart($customerId, $storeId) } /** - * {@inheritdoc} + * @inheritdoc */ public function placeOrder($cartId, PaymentInterface $paymentMethod = null) { @@ -381,7 +381,7 @@ public function placeOrder($cartId, PaymentInterface $paymentMethod = null) } /** - * {@inheritdoc} + * @inheritdoc */ public function getCartForCustomer($customerId) { @@ -408,6 +408,8 @@ public function submit(QuoteEntity $quote, $orderData = []) } /** + * Convert quote items to order items for quote + * * @param Quote $quote * @return array */ From 04af36ed9ec5bf498682b38857fd33991cfc13ff Mon Sep 17 00:00:00 2001 From: Jeroen Date: Fri, 26 Oct 2018 14:44:08 +0200 Subject: [PATCH 05/14] Cancel expired orders using OrderManagementInterface --- .../Model/CronJob/CleanExpiredOrders.php | 25 +++++++++++++++---- .../Model/CronJob/CleanExpiredOrdersTest.php | 22 +++++++++++++--- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php b/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php index 8a7bd0260df0f..80370c21d4d7b 100644 --- a/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php +++ b/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php @@ -3,8 +3,13 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Sales\Model\CronJob; +use Magento\Framework\App\ObjectManager; +use Magento\Sales\Api\OrderManagementInterface; +use Magento\Sales\Model\ResourceModel\Order\CollectionFactory; use Magento\Store\Model\StoresConfig; use Magento\Sales\Model\Order; @@ -16,20 +21,28 @@ class CleanExpiredOrders protected $storesConfig; /** - * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory + * @var CollectionFactory */ protected $orderCollectionFactory; + /** + * @var OrderManagementInterface + */ + private $orderManagement; + /** * @param StoresConfig $storesConfig - * @param \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $collectionFactory + * @param CollectionFactory $collectionFactory + * @param OrderManagementInterface|null $orderManagement */ public function __construct( StoresConfig $storesConfig, - \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $collectionFactory + CollectionFactory $collectionFactory, + OrderManagementInterface $orderManagement = null ) { $this->storesConfig = $storesConfig; $this->orderCollectionFactory = $collectionFactory; + $this->orderManagement = $orderManagement ?: ObjectManager::getInstance()->get(OrderManagementInterface::class); } /** @@ -48,8 +61,10 @@ public function execute() $orders->getSelect()->where( new \Zend_Db_Expr('TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, `updated_at`)) >= ' . $lifetime * 60) ); - $orders->walk('cancel'); - $orders->walk('save'); + + foreach ($orders->getAllIds() as $entityId) { + $this->orderManagement->cancel((int) $entityId); + } } } } diff --git a/app/code/Magento/Sales/Test/Unit/Model/CronJob/CleanExpiredOrdersTest.php b/app/code/Magento/Sales/Test/Unit/Model/CronJob/CleanExpiredOrdersTest.php index 269ce829e64d3..6844b908ea98d 100644 --- a/app/code/Magento/Sales/Test/Unit/Model/CronJob/CleanExpiredOrdersTest.php +++ b/app/code/Magento/Sales/Test/Unit/Model/CronJob/CleanExpiredOrdersTest.php @@ -26,6 +26,11 @@ class CleanExpiredOrdersTest extends \PHPUnit\Framework\TestCase */ protected $orderCollectionMock; + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $orderManagementMock; + /** * @var ObjectManager */ @@ -44,10 +49,12 @@ protected function setUp() ['create'] ); $this->orderCollectionMock = $this->createMock(\Magento\Sales\Model\ResourceModel\Order\Collection::class); + $this->orderManagementMock = $this->createMock(\Magento\Sales\Api\OrderManagementInterface::class); $this->model = new CleanExpiredOrders( $this->storesConfigMock, - $this->collectionFactoryMock + $this->collectionFactoryMock, + $this->orderManagementMock ); } @@ -64,8 +71,11 @@ public function testExecute() $this->collectionFactoryMock->expects($this->exactly(2)) ->method('create') ->willReturn($this->orderCollectionMock); + $this->orderCollectionMock->expects($this->exactly(2)) + ->method('getAllIds') + ->willReturn([1, 2]); $this->orderCollectionMock->expects($this->exactly(4))->method('addFieldToFilter'); - $this->orderCollectionMock->expects($this->exactly(4))->method('walk'); + $this->orderManagementMock->expects($this->exactly(4))->method('cancel'); $selectMock = $this->createMock(\Magento\Framework\DB\Select::class); $selectMock->expects($this->exactly(2))->method('where')->willReturnSelf(); @@ -92,14 +102,18 @@ public function testExecuteWithException() $this->collectionFactoryMock->expects($this->once()) ->method('create') ->willReturn($this->orderCollectionMock); + $this->orderCollectionMock->expects($this->once()) + ->method('getAllIds') + ->willReturn([1]); $this->orderCollectionMock->expects($this->exactly(2))->method('addFieldToFilter'); + $this->orderManagementMock->expects($this->once())->method('cancel'); $selectMock = $this->createMock(\Magento\Framework\DB\Select::class); $selectMock->expects($this->once())->method('where')->willReturnSelf(); $this->orderCollectionMock->expects($this->once())->method('getSelect')->willReturn($selectMock); - $this->orderCollectionMock->expects($this->once()) - ->method('walk') + $this->orderManagementMock->expects($this->once()) + ->method('cancel') ->willThrowException(new \Exception($exceptionMessage)); $this->model->execute(); From 577b17576161edc6a3587d4b93a66fcac60f91a7 Mon Sep 17 00:00:00 2001 From: Sviatoslav Mankivskyi Date: Mon, 5 Nov 2018 10:50:32 -0600 Subject: [PATCH 06/14] ENGCOM-3354: Cancel expired orders using OrderManagementInterface #18832 - Fixed docblock --- app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php b/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php index 80370c21d4d7b..999bb1786cf83 100644 --- a/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php +++ b/app/code/Magento/Sales/Model/CronJob/CleanExpiredOrders.php @@ -13,6 +13,9 @@ use Magento\Store\Model\StoresConfig; use Magento\Sales\Model\Order; +/** + * Class that provides functionality of cleaning expired quotes by cron + */ class CleanExpiredOrders { /** From ebfffe494247b4f49d2fb127b7823999202c2b7a Mon Sep 17 00:00:00 2001 From: Ravi Chandra Date: Mon, 12 Nov 2018 14:33:04 +0530 Subject: [PATCH 07/14] Fixed subscribe to newsletter if you already have an account issue #8952 --- .../Magento/Newsletter/Controller/Subscriber/NewAction.php | 5 +++-- .../Magento/Newsletter/Controller/SubscriberTest.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php index fd2a61702e909..a9ef89070c659 100644 --- a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php +++ b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php @@ -77,8 +77,9 @@ public function __construct( protected function validateEmailAvailable($email) { $websiteId = $this->_storeManager->getStore()->getWebsiteId(); - if ($this->_customerSession->getCustomerDataObject()->getEmail() !== $email - && !$this->customerAccountManagement->isEmailAvailable($email, $websiteId) + if ($this->_customerSession->isLoggedIn() + && ($this->_customerSession->getCustomerDataObject()->getEmail() !== $email + && !$this->customerAccountManagement->isEmailAvailable($email, $websiteId)) ) { throw new LocalizedException( __('This email address is already assigned to another user.') diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/Controller/SubscriberTest.php b/dev/tests/integration/testsuite/Magento/Newsletter/Controller/SubscriberTest.php index 5347881f5e7d4..9dbf5c4d2a2a9 100644 --- a/dev/tests/integration/testsuite/Magento/Newsletter/Controller/SubscriberTest.php +++ b/dev/tests/integration/testsuite/Magento/Newsletter/Controller/SubscriberTest.php @@ -57,7 +57,7 @@ public function testNewActionUsedEmail() $this->dispatch('newsletter/subscriber/new'); $this->assertSessionMessages($this->equalTo([ - 'There was a problem with the subscription: This email address is already assigned to another user.', + 'Thank you for your subscription.', ])); $this->assertRedirect($this->anything()); } From f1e7e3f200470d255f953dc7bfef91db72f0ddb3 Mon Sep 17 00:00:00 2001 From: gmachure Date: Fri, 16 Nov 2018 17:54:10 +0100 Subject: [PATCH 08/14] fix php 7.2 error : Countable interface not implemented --- lib/internal/Magento/Framework/File/Uploader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/File/Uploader.php b/lib/internal/Magento/Framework/File/Uploader.php index 9a6787ddbaffd..183afbf63fe0e 100644 --- a/lib/internal/Magento/Framework/File/Uploader.php +++ b/lib/internal/Magento/Framework/File/Uploader.php @@ -546,7 +546,7 @@ private function _setUploadFileId($fileId) preg_match("/^(.*?)\[(.*?)\]$/", $fileId, $file); - if (is_array($file) && count($file) > 0 && count($file[0]) > 0 && count($file[1]) > 0) { + if (is_array($file) && count($file) > 0 && !empty($file[0]) && (isset($file[1]) && !empty($file[1]))) { array_shift($file); $this->_uploadType = self::MULTIPLE_STYLE; From a7b9122344fe2b333a371089e54e567621ceca0c Mon Sep 17 00:00:00 2001 From: gmachure Date: Fri, 16 Nov 2018 23:19:13 +0100 Subject: [PATCH 09/14] remove redundant check --- lib/internal/Magento/Framework/File/Uploader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/File/Uploader.php b/lib/internal/Magento/Framework/File/Uploader.php index 183afbf63fe0e..6f44af7a17f29 100644 --- a/lib/internal/Magento/Framework/File/Uploader.php +++ b/lib/internal/Magento/Framework/File/Uploader.php @@ -546,7 +546,7 @@ private function _setUploadFileId($fileId) preg_match("/^(.*?)\[(.*?)\]$/", $fileId, $file); - if (is_array($file) && count($file) > 0 && !empty($file[0]) && (isset($file[1]) && !empty($file[1]))) { + if (is_array($file) && count($file) > 0 && !empty($file[0]) && !empty($file[1])) { array_shift($file); $this->_uploadType = self::MULTIPLE_STYLE; From f2b5b8674883156f59e91b7cb6c8a2249115ce2b Mon Sep 17 00:00:00 2001 From: Oleksandr Rykh Date: Wed, 28 Nov 2018 14:14:21 +0200 Subject: [PATCH 10/14] Fixed issue with Base Currency for website is CND when PayPal Payflow Pro is charging in USD --- app/code/Magento/Paypal/Model/Payflowpro.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Paypal/Model/Payflowpro.php b/app/code/Magento/Paypal/Model/Payflowpro.php index b5fdaf4ae9fd4..359b50d90bc45 100644 --- a/app/code/Magento/Paypal/Model/Payflowpro.php +++ b/app/code/Magento/Paypal/Model/Payflowpro.php @@ -420,6 +420,7 @@ public function capture(\Magento\Payment\Model\InfoInterface $payment, $amount) $request->setTrxtype(self::TRXTYPE_SALE); $request->setOrigid($payment->getAdditionalInformation(self::PNREF)); $payment->unsAdditionalInformation(self::PNREF); + $request->setData('currency', $payment->getOrder()->getBaseCurrencyCode()); } elseif ($payment->getParentTransactionId()) { $request = $this->buildBasicRequest(); $request->setOrigid($payment->getParentTransactionId()); From f38f09f879a7495772e5a3b2fc2445731ae2cb5b Mon Sep 17 00:00:00 2001 From: Richard BAYET Date: Wed, 5 Dec 2018 14:17:23 +0100 Subject: [PATCH 11/14] MAGETWO-96618: JS files relocation BC in 2.3 too --- .../Authorizenet/view/frontend/requirejs-config.js | 3 ++- .../Magento/Captcha/view/frontend/requirejs-config.js | 3 ++- .../Customer/view/frontend/requirejs-config.js | 4 +++- .../Downloadable/view/frontend/requirejs-config.js | 3 ++- .../GiftMessage/view/frontend/requirejs-config.js | 4 +++- .../Magento/Payment/view/frontend/requirejs-config.js | 3 ++- app/code/Magento/Paypal/view/base/requirejs-config.js | 3 ++- .../Magento/Paypal/view/frontend/requirejs-config.js | 1 + .../Magento/Sales/view/frontend/requirejs-config.js | 4 +++- .../Magento/Search/view/frontend/requirejs-config.js | 3 ++- .../SendFriend/view/frontend/web/requirejs-config.js | 11 +++++++++++ .../Translation/view/frontend/requirejs-config.js | 3 ++- .../Magento/Weee/view/frontend/requirejs-config.js | 3 ++- 13 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 app/code/Magento/SendFriend/view/frontend/web/requirejs-config.js diff --git a/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js b/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js index 2b57e5cc2fb0d..8c4c90bf111de 100644 --- a/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js +++ b/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - transparent: 'Magento_Payment/js/transparent' + transparent: 'Magento_Payment/js/transparent', + 'Magento_Payment/transparent': 'Magento_Payment/js/transparent' } } }; diff --git a/app/code/Magento/Captcha/view/frontend/requirejs-config.js b/app/code/Magento/Captcha/view/frontend/requirejs-config.js index 0f3394e41e7c2..42c80632d3e92 100644 --- a/app/code/Magento/Captcha/view/frontend/requirejs-config.js +++ b/app/code/Magento/Captcha/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - captcha: 'Magento_Captcha/js/captcha' + captcha: 'Magento_Captcha/js/captcha', + 'Magento_Captcha/captcha': 'Magento_Captcha/js/captcha' } } }; diff --git a/app/code/Magento/Customer/view/frontend/requirejs-config.js b/app/code/Magento/Customer/view/frontend/requirejs-config.js index 967bbdcc0e663..f1bf5c1d1b67f 100644 --- a/app/code/Magento/Customer/view/frontend/requirejs-config.js +++ b/app/code/Magento/Customer/view/frontend/requirejs-config.js @@ -11,7 +11,9 @@ var config = { changeEmailPassword: 'Magento_Customer/js/change-email-password', passwordStrengthIndicator: 'Magento_Customer/js/password-strength-indicator', zxcvbn: 'Magento_Customer/js/zxcvbn', - addressValidation: 'Magento_Customer/js/addressValidation' + addressValidation: 'Magento_Customer/js/addressValidation', + 'Magento_Customer/address': 'Magento_Customer/js/address', + 'Magento_Customer/change-email-password': 'Magento_Customer/js/change-email-password' } } }; diff --git a/app/code/Magento/Downloadable/view/frontend/requirejs-config.js b/app/code/Magento/Downloadable/view/frontend/requirejs-config.js index c3d33949eb012..f615966d801f7 100644 --- a/app/code/Magento/Downloadable/view/frontend/requirejs-config.js +++ b/app/code/Magento/Downloadable/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - downloadable: 'Magento_Downloadable/js/downloadable' + downloadable: 'Magento_Downloadable/js/downloadable', + 'Magento_Downloadable/downloadable': 'Magento_Downloadable/js/downloadable' } } }; diff --git a/app/code/Magento/GiftMessage/view/frontend/requirejs-config.js b/app/code/Magento/GiftMessage/view/frontend/requirejs-config.js index c3f8ecc45da38..f8a463bec37f9 100644 --- a/app/code/Magento/GiftMessage/view/frontend/requirejs-config.js +++ b/app/code/Magento/GiftMessage/view/frontend/requirejs-config.js @@ -7,7 +7,9 @@ var config = { map: { '*': { giftOptions: 'Magento_GiftMessage/js/gift-options', - extraOptions: 'Magento_GiftMessage/js/extra-options' + extraOptions: 'Magento_GiftMessage/js/extra-options', + 'Magento_GiftMessage/gift-options': 'Magento_GiftMessage/js/gift-options', + 'Magento_GiftMessage/extra-options': 'Magento_GiftMessage/js/extra-options' } } }; diff --git a/app/code/Magento/Payment/view/frontend/requirejs-config.js b/app/code/Magento/Payment/view/frontend/requirejs-config.js index efa24d129e8ec..949b1554a6f7d 100644 --- a/app/code/Magento/Payment/view/frontend/requirejs-config.js +++ b/app/code/Magento/Payment/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - creditCardType: 'Magento_Payment/js/cc-type' + creditCardType: 'Magento_Payment/js/cc-type', + 'Magento_Payment/cc-type': 'Magento_Payment/js/cc-type' } } }; diff --git a/app/code/Magento/Paypal/view/base/requirejs-config.js b/app/code/Magento/Paypal/view/base/requirejs-config.js index 2b57e5cc2fb0d..8c4c90bf111de 100644 --- a/app/code/Magento/Paypal/view/base/requirejs-config.js +++ b/app/code/Magento/Paypal/view/base/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - transparent: 'Magento_Payment/js/transparent' + transparent: 'Magento_Payment/js/transparent', + 'Magento_Payment/transparent': 'Magento_Payment/js/transparent' } } }; diff --git a/app/code/Magento/Paypal/view/frontend/requirejs-config.js b/app/code/Magento/Paypal/view/frontend/requirejs-config.js index f2ac876f560c9..223ade43d86e5 100644 --- a/app/code/Magento/Paypal/view/frontend/requirejs-config.js +++ b/app/code/Magento/Paypal/view/frontend/requirejs-config.js @@ -7,6 +7,7 @@ var config = { map: { '*': { orderReview: 'Magento_Paypal/js/order-review', + 'Magento_Paypal/order-review': 'Magento_Paypal/js/order-review', paypalCheckout: 'Magento_Paypal/js/paypal-checkout' } }, diff --git a/app/code/Magento/Sales/view/frontend/requirejs-config.js b/app/code/Magento/Sales/view/frontend/requirejs-config.js index 658960c749f8c..4d323684afff6 100644 --- a/app/code/Magento/Sales/view/frontend/requirejs-config.js +++ b/app/code/Magento/Sales/view/frontend/requirejs-config.js @@ -7,7 +7,9 @@ var config = { map: { '*': { giftMessage: 'Magento_Sales/js/gift-message', - ordersReturns: 'Magento_Sales/js/orders-returns' + ordersReturns: 'Magento_Sales/js/orders-returns', + 'Magento_Sales/gift-message': 'Magento_Sales/js/gift-message', + 'Magento_Sales/orders-returns': 'Magento_Sales/js/orders-returns' } } }; diff --git a/app/code/Magento/Search/view/frontend/requirejs-config.js b/app/code/Magento/Search/view/frontend/requirejs-config.js index cca294dd3689d..d945944daa1b0 100644 --- a/app/code/Magento/Search/view/frontend/requirejs-config.js +++ b/app/code/Magento/Search/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - quickSearch: 'Magento_Search/js/form-mini' + quickSearch: 'Magento_Search/js/form-mini', + 'Magento_Search/form-mini': 'Magento_Search/js/form-mini' } } }; diff --git a/app/code/Magento/SendFriend/view/frontend/web/requirejs-config.js b/app/code/Magento/SendFriend/view/frontend/web/requirejs-config.js new file mode 100644 index 0000000000000..8e85666c2362a --- /dev/null +++ b/app/code/Magento/SendFriend/view/frontend/web/requirejs-config.js @@ -0,0 +1,11 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +var config = { + map: { + '*': { + 'Magento_SendFriend/back-event': 'Magento_SendFriend/js/back-event' + } + } +}; diff --git a/app/code/Magento/Translation/view/frontend/requirejs-config.js b/app/code/Magento/Translation/view/frontend/requirejs-config.js index 4414f0d153ee8..b4b3ce0f8c554 100644 --- a/app/code/Magento/Translation/view/frontend/requirejs-config.js +++ b/app/code/Magento/Translation/view/frontend/requirejs-config.js @@ -7,7 +7,8 @@ var config = { map: { '*': { editTrigger: 'mage/edit-trigger', - addClass: 'Magento_Translation/js/add-class' + addClass: 'Magento_Translation/js/add-class', + 'Magento_Translation/add-class': 'Magento_Translation/js/add-class' } }, deps: [ diff --git a/app/code/Magento/Weee/view/frontend/requirejs-config.js b/app/code/Magento/Weee/view/frontend/requirejs-config.js index 5b1b3a0f7ec73..94c59da65216d 100644 --- a/app/code/Magento/Weee/view/frontend/requirejs-config.js +++ b/app/code/Magento/Weee/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - 'taxToggle': 'Magento_Weee/js/tax-toggle' + 'taxToggle': 'Magento_Weee/js/tax-toggle', + 'Magento_Weee/tax-toggle': 'Magento_Weee/js/tax-toggle' } } }; From 22d69a96c02d18335c73bdd32afa64c5fbc9b6c0 Mon Sep 17 00:00:00 2001 From: Thomas Klein Date: Fri, 7 Dec 2018 14:45:28 +0100 Subject: [PATCH 12/14] fix missing title on additional cache management --- .../view/adminhtml/templates/system/cache/additional.phtml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/cache/additional.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/cache/additional.phtml index 8e30afdf51f7f..b4bc42b95d0aa 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/cache/additional.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/cache/additional.phtml @@ -11,10 +11,10 @@ $permissions = $block->getData('permissions'); ?> hasAccessToAdditionalActions()): ?>
+

+ escapeHtml(__('Additional Cache Management')); ?> +

hasAccessToFlushCatalogImages()): ?> -

- escapeHtml(__('Additional Cache Management')); ?> -