Skip to content

Commit 621f207

Browse files
committed
ACP2E-279: Customer details are lost after editing an order.
1 parent 1cbb2a2 commit 621f207

File tree

3 files changed

+14
-52
lines changed

3 files changed

+14
-52
lines changed

app/code/Magento/Sales/Controller/Adminhtml/Order/AddressSave.php

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class AddressSave extends Order implements HttpPostActionInterface
4141
*
4242
* @see _isAllowed()
4343
*/
44-
public const ADMIN_RESOURCE = 'Magento_Sales::actions_edit';
44+
const ADMIN_RESOURCE = 'Magento_Sales::actions_edit';
4545

4646
/**
4747
* @var RegionFactory
@@ -72,7 +72,6 @@ class AddressSave extends Order implements HttpPostActionInterface
7272
* @param LoggerInterface $logger
7373
* @param RegionFactory|null $regionFactory
7474
* @param OrderAddressRepositoryInterface|null $orderAddressRepository
75-
* @param AttributeMetadataDataProvider|null $attributeMetadataDataProvider
7675
*
7776
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
7877
*/
@@ -138,26 +137,6 @@ public function execute()
138137
'order_id' => $address->getParentId()
139138
]
140139
);
141-
if ($address->getAddressType() === AddressModel::TYPE_BILLING) {
142-
$order = $address->getOrder();
143-
$quote = $this->_objectManager->create(
144-
\Magento\Quote\Model\Quote::class
145-
)->load(
146-
$order->getQuoteId()
147-
);
148-
$quote->setCustomerSuffix($address->getSuffix())
149-
->setCustomerFirstname($address->getFirstname())
150-
->setCustomerLastname($address->getLastname())
151-
->setCustomerMiddlename($address->getMiddlename())
152-
->setCustomerPrefix($address->getPrefix())
153-
->save();
154-
$order->setCustomerSuffix($address->getSuffix())
155-
->setCustomerFirstname($address->getFirstname())
156-
->setCustomerLastname($address->getLastname())
157-
->setCustomerMiddlename($address->getMiddlename())
158-
->setCustomerPrefix($address->getPrefix())
159-
->save();
160-
}
161140
$this->messageManager->addSuccessMessage(__('You updated the order address.'));
162141
return $resultRedirect->setPath('sales/*/view', ['order_id' => $address->getParentId()]);
163142
} catch (LocalizedException $e) {

app/code/Magento/Sales/Model/AdminOrder/Create.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,18 +1842,20 @@ public function _prepareCustomer()
18421842
->setStoreId($store->getId())
18431843
->setWebsiteId($store->getWebsiteId())
18441844
->setCreatedAt(null);
1845+
$customer = $this->_validateCustomerData($customer);
1846+
} elseif (!$customer->getId()) {
1847+
/** Create new customer */
1848+
$customerBillingAddressDataObject = $this->getBillingAddress()->exportCustomerAddress();
1849+
$customer->setSuffix($customerBillingAddressDataObject->getSuffix())
1850+
->setFirstname($customerBillingAddressDataObject->getFirstname())
1851+
->setLastname($customerBillingAddressDataObject->getLastname())
1852+
->setMiddlename($customerBillingAddressDataObject->getMiddlename())
1853+
->setPrefix($customerBillingAddressDataObject->getPrefix())
1854+
->setStoreId($store->getId())
1855+
->setWebsiteId($store->getWebsiteId())
1856+
->setEmail($this->_getNewCustomerEmail());
1857+
$customer = $this->_validateCustomerData($customer);
18451858
}
1846-
1847-
$customerBillingAddressDataObject = $this->getBillingAddress()->exportCustomerAddress();
1848-
$customer->setSuffix($customerBillingAddressDataObject->getSuffix())
1849-
->setFirstname($customerBillingAddressDataObject->getFirstname())
1850-
->setLastname($customerBillingAddressDataObject->getLastname())
1851-
->setMiddlename($customerBillingAddressDataObject->getMiddlename())
1852-
->setPrefix($customerBillingAddressDataObject->getPrefix())
1853-
->setStoreId($store->getId())
1854-
->setWebsiteId($store->getWebsiteId())
1855-
->setEmail($this->_getNewCustomerEmail());
1856-
$customer = $this->_validateCustomerData($customer);
18571859
$this->getQuote()->setCustomer($customer);
18581860

18591861
if ($this->getBillingAddress()->getSaveInAddressBook()) {

dev/tests/integration/testsuite/Magento/Sales/Controller/Adminhtml/Order/AddressSaveTest.php

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,8 @@
1010
use Magento\Framework\App\Request\Http as HttpRequest;
1111
use Magento\Sales\Api\Data\OrderAddressInterface;
1212
use Magento\Sales\Api\Data\OrderInterface;
13-
use Magento\Sales\Api\OrderRepositoryInterface;
1413
use Magento\Sales\Api\Data\OrderInterfaceFactory;
1514
use Magento\Sales\Api\OrderAddressRepositoryInterface;
16-
use Magento\Sales\Model\Order as Order;
17-
use Magento\Quote\Model\Quote as Quote;
1815
use Magento\Sales\Model\Order\Address as AddressType;
1916
use Magento\TestFramework\TestCase\AbstractBackendController;
2017

@@ -49,7 +46,6 @@ protected function setUp(): void
4946
* @dataProvider addressTypeProvider
5047
*
5148
* @magentoDataFixture Magento/Sales/_files/order.php
52-
* @magentoDataFixture Magento/Sales/_files/quote.php
5349
*
5450
* @param string $type
5551
* @return void
@@ -66,14 +62,7 @@ public function testSave(string $type): void
6662
OrderAddressInterface::POSTCODE => '97203',
6763
OrderAddressInterface::TELEPHONE => '5555555555',
6864
];
69-
$quote = $this->_objectManager->create(Quote::class);
70-
$quote->load('test01', 'reserved_order_id');
71-
7265
$order = $this->orderFactory->create()->loadByIncrementId(100000001);
73-
$order->setQuoteId($quote->getId());
74-
$orderRepository = $this->_objectManager->create(OrderRepositoryInterface::class);
75-
$orderRepository->save($order);
76-
7766
$addressId = $this->getAddressIdByType($order, $type);
7867
$this->dispatchWithParams(
7968
['address_id' => $addressId],
@@ -146,14 +135,6 @@ private function assertAddressData(int $addressId, array $expectedData): void
146135
? $this->assertEquals(reset($value), $address->getData($key))
147136
: $this->assertEquals($value, $address->getData($key));
148137
}
149-
if ($address->getAddressType() === 'billing') {
150-
$order = $this->_objectManager->create(Order::class)->load($address->getParentId());
151-
$quote = $this->_objectManager->create(Quote::class)->load($order->getQuoteId());
152-
$this->assertEquals('New test name', $quote->getCustomerFirstname());
153-
$this->assertEquals('New test lastname', $quote->getCustomerLastname());
154-
$this->assertEquals($quote->getCustomerFirstname(), $order->getCustomerFirstname());
155-
$this->assertEquals($quote->getCustomerLastname(), $order->getCustomerLastname());
156-
}
157138
}
158139

159140
/**

0 commit comments

Comments
 (0)