From dd894104d2caef9b7476d951837a0def185e77e4 Mon Sep 17 00:00:00 2001 From: heyqule Date: Thu, 4 May 2017 10:50:00 -0400 Subject: [PATCH 1/6] #9439 Save region details in order address edit. Region is missing in admin order view after order edit. The reason is that the address only save region ID. This fixes AddressSave controller to save region code and name. --- .../Adminhtml/Order/AddressSave.php | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index db0c2b2f5991b..822e2c5bd686d 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -6,6 +6,14 @@ */ namespace Magento\Sales\Controller\Adminhtml\Order; +use Magento\Directory\Model\RegionFactory; +use Magento\Backend\App\Action; +use Magento\Sales\Api\OrderManagementInterface; +use Magento\Sales\Api\OrderRepositoryInterface; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\Exception\InputException; +use Psr\Log\LoggerInterface; + class AddressSave extends \Magento\Sales\Controller\Adminhtml\Order { /** @@ -15,6 +23,46 @@ class AddressSave extends \Magento\Sales\Controller\Adminhtml\Order */ const ADMIN_RESOURCE = 'Magento_Sales::actions_edit'; + /** @var RegionFactory $regionFactory */ + protected $regionFactory; + + /** + * @param Action\Context $context + * @param \Magento\Framework\Registry $coreRegistry + * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory + * @param \Magento\Framework\Translate\InlineInterface $translateInline + * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory + * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory + * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory + * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory + * @param OrderManagementInterface $orderManagement + * @param OrderRepositoryInterface $orderRepository + * @param LoggerInterface $logger + * @param RegionFactory $regionFactory + * + * @SuppressWarnings(PHPMD.ExcessiveParameterList) + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ + public function __construct( + Action\Context $context, + \Magento\Framework\Registry $coreRegistry, + \Magento\Framework\App\Response\Http\FileFactory $fileFactory, + \Magento\Framework\Translate\InlineInterface $translateInline, + \Magento\Framework\View\Result\PageFactory $resultPageFactory, + \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, + \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory, + \Magento\Framework\Controller\Result\RawFactory $resultRawFactory, + OrderManagementInterface $orderManagement, + OrderRepositoryInterface $orderRepository, + LoggerInterface $logger, + RegionFactory $regionFactory + ) { + $this->regionFactory = $regionFactory; + parent::__construct($context,$coreRegistry,$fileFactory,$translateInline, + $resultPageFactory,$resultJsonFactory,$resultLayoutFactory,$resultRawFactory, + $orderManagement,$orderRepository,$logger); + } + /** * Save order address * @@ -32,6 +80,14 @@ public function execute() if ($data && $address->getId()) { $address->addData($data); try { + if($address->getRegion() == null) { + $regionId = $address->getRegionId(); + /** @var \Magento\Directory\Model\Region $region */ + $region = $this->regionFactory->create(); + $region->getResource()->load($region,$regionId); + $address->setRegion($region->getName()); + $address->setRegionCode($region->getCode()); + } $address->save(); $this->_eventManager->dispatch( 'admin_sales_order_address_update', From c5dc0e032ae0cec0b8f9862ac199fbdfd2dd0bb0 Mon Sep 17 00:00:00 2001 From: heyqule Date: Thu, 4 May 2017 11:42:46 -0400 Subject: [PATCH 2/6] Fix the code format according to Travis Test --- .../Adminhtml/Order/AddressSave.php | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index 822e2c5bd686d..15d3987238acf 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -58,9 +58,19 @@ public function __construct( RegionFactory $regionFactory ) { $this->regionFactory = $regionFactory; - parent::__construct($context,$coreRegistry,$fileFactory,$translateInline, - $resultPageFactory,$resultJsonFactory,$resultLayoutFactory,$resultRawFactory, - $orderManagement,$orderRepository,$logger); + parent::__construct( + $context, + $coreRegistry, + $fileFactory, + $translateInline, + $resultPageFactory, + $resultJsonFactory, + $resultLayoutFactory, + $resultRawFactory, + $orderManagement, + $orderRepository, + $logger + ); } /** @@ -80,11 +90,11 @@ public function execute() if ($data && $address->getId()) { $address->addData($data); try { - if($address->getRegion() == null) { + if($address->getRegion() == null) { $regionId = $address->getRegionId(); /** @var \Magento\Directory\Model\Region $region */ $region = $this->regionFactory->create(); - $region->getResource()->load($region,$regionId); + $region->getResource()->load($region, $regionId); $address->setRegion($region->getName()); $address->setRegionCode($region->getCode()); } From 4c60b1e22795de62c80b7b8bb689f63f2ace88ee Mon Sep 17 00:00:00 2001 From: heyqule Date: Thu, 4 May 2017 13:35:35 -0400 Subject: [PATCH 3/6] additonal travis error fixes --- .../Sales/Controller/Adminhtml/Order/AddressSave.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index 15d3987238acf..d5c738812bf2c 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -14,6 +14,10 @@ use Magento\Framework\Exception\InputException; use Psr\Log\LoggerInterface; +/** + * @SuppressWarnings(PHPMD.NumberOfChildren) + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class AddressSave extends \Magento\Sales\Controller\Adminhtml\Order { /** @@ -59,10 +63,10 @@ public function __construct( ) { $this->regionFactory = $regionFactory; parent::__construct( - $context, + $context, $coreRegistry, $fileFactory, - $translateInline, + $translateInline, $resultPageFactory, $resultJsonFactory, $resultLayoutFactory, @@ -90,14 +94,14 @@ public function execute() if ($data && $address->getId()) { $address->addData($data); try { - if($address->getRegion() == null) { + if ($address->getRegion() == null) { $regionId = $address->getRegionId(); /** @var \Magento\Directory\Model\Region $region */ $region = $this->regionFactory->create(); $region->getResource()->load($region, $regionId); $address->setRegion($region->getName()); $address->setRegionCode($region->getCode()); - } + } $address->save(); $this->_eventManager->dispatch( 'admin_sales_order_address_update', From 58494304fc37021d5cddd4edbd8ee4ae083058f5 Mon Sep 17 00:00:00 2001 From: heyqule Date: Mon, 22 May 2017 11:59:50 -0400 Subject: [PATCH 4/6] Code compatibility fix Fix code compatibility according to @okorshenko Change variable to private. Fix constructor based on Backward Compatible Development guide --- .../Sales/Controller/Adminhtml/Order/AddressSave.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index d5c738812bf2c..bff39422ab267 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -28,8 +28,8 @@ class AddressSave extends \Magento\Sales\Controller\Adminhtml\Order const ADMIN_RESOURCE = 'Magento_Sales::actions_edit'; /** @var RegionFactory $regionFactory */ - protected $regionFactory; - + private $regionFactory; + /** * @param Action\Context $context * @param \Magento\Framework\Registry $coreRegistry @@ -59,9 +59,8 @@ public function __construct( OrderManagementInterface $orderManagement, OrderRepositoryInterface $orderRepository, LoggerInterface $logger, - RegionFactory $regionFactory + RegionFactory $regionFactory = null ) { - $this->regionFactory = $regionFactory; parent::__construct( $context, $coreRegistry, @@ -75,8 +74,9 @@ public function __construct( $orderRepository, $logger ); + $this->regionFactory = $regionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()->get('\Magento\Directory\Model\RegionFactory'); } - + /** * Save order address * From 23a813e3454f7718f731c4e7fba0749490860f45 Mon Sep 17 00:00:00 2001 From: heyqule Date: Mon, 22 May 2017 16:08:48 -0400 Subject: [PATCH 5/6] Code Style fix --- .../Magento/Sales/Controller/Adminhtml/Order/AddressSave.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index bff39422ab267..169217e6a49b7 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -74,7 +74,8 @@ public function __construct( $orderRepository, $logger ); - $this->regionFactory = $regionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()->get('\Magento\Directory\Model\RegionFactory'); + $this->regionFactory = + $regionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()->get('\Magento\Directory\Model\RegionFactory'); } /** From ca99890dc08fe81bdea40157195e8ef501ef6472 Mon Sep 17 00:00:00 2001 From: heyqule Date: Mon, 22 May 2017 23:54:12 -0400 Subject: [PATCH 6/6] Code Style Fix --- .../Magento/Sales/Controller/Adminhtml/Order/AddressSave.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php index 169217e6a49b7..11ad5b9c37b6c 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php @@ -74,8 +74,9 @@ public function __construct( $orderRepository, $logger ); - $this->regionFactory = - $regionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()->get('\Magento\Directory\Model\RegionFactory'); + $this->regionFactory = $regionFactory ?: + \Magento\Framework\App\ObjectManager::getInstance() + ->get('\Magento\Directory\Model\RegionFactory'); } /**