Skip to content

Commit 4e540ad

Browse files
committed
ACP2E-4312: Cross-Website Guest Order Assignment Bug in MergeGuestOrder Plugin
1 parent dbf4e37 commit 4e540ad

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

app/code/Magento/CustomerGraphQl/Model/GetGuestOrdersByEmail.php

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,51 @@
77

88
namespace Magento\CustomerGraphQl\Model;
99

10+
use Magento\Customer\Api\Data\CustomerInterface;
11+
use Magento\Customer\Model\Config\Share;
1012
use Magento\Framework\Api\SearchCriteriaBuilder;
13+
use Magento\Framework\App\Config\ScopeConfigInterface;
1114
use Magento\Sales\Api\OrderRepositoryInterface;
1215
use Magento\Sales\Api\Data\OrderSearchResultInterface;
1316

1417
class GetGuestOrdersByEmail
1518
{
1619
/**
1720
* @param OrderRepositoryInterface $orderRepository
21+
* @param ScopeConfigInterface $scopeConfig
1822
* @param SearchCriteriaBuilder $searchCriteriaBuilder
1923
*/
2024
public function __construct(
2125
private readonly OrderRepositoryInterface $orderRepository,
22-
private SearchCriteriaBuilder $searchCriteriaBuilder
26+
private readonly ScopeConfigInterface $scopeConfig,
27+
private readonly SearchCriteriaBuilder $searchCriteriaBuilder
2328
) {
2429
}
2530

2631
/**
2732
* Retrieve customer orders collection
2833
*
29-
* @param string $email
34+
* @param CustomerInterface $customer
3035
* @return OrderSearchResultInterface
3136
*/
32-
public function execute(string $email): OrderSearchResultInterface
37+
public function execute(CustomerInterface $customer): OrderSearchResultInterface
3338
{
34-
$this->searchCriteriaBuilder->addFilter(
35-
'customer_email',
36-
$email,
37-
'eq'
38-
)->addFilter(
39-
'customer_is_guest',
40-
1,
41-
'eq'
39+
$this->searchCriteriaBuilder
40+
->addFilter('customer_email', $customer->getEmail())
41+
->addFilter('customer_is_guest', 1);
42+
43+
$customerAccountShareScope = (int)$this->scopeConfig->getValue(
44+
Share::XML_PATH_CUSTOMER_ACCOUNT_SHARE,
45+
ScopeConfigInterface::SCOPE_TYPE_DEFAULT
4246
);
47+
48+
if ($customerAccountShareScope === Share::SHARE_WEBSITE) {
49+
$this->searchCriteriaBuilder->addFilter(
50+
'store_id',
51+
$customer->getStoreId()
52+
);
53+
}
54+
4355
return $this->orderRepository->getList($this->searchCriteriaBuilder->create());
4456
}
4557
}

app/code/Magento/CustomerGraphQl/Plugin/Model/MergeGuestOrder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function __construct(
3333
*/
3434
public function afterCreateAccount(AccountManagement $subject, CustomerInterface $customer)
3535
{
36-
$searchResult = $this->getGuestOrdersByEmail->execute($customer->getEmail());
36+
$searchResult = $this->getGuestOrdersByEmail->execute($customer);
3737
foreach ($searchResult->getItems() as $order) {
3838
$this->customerAssignment->execute($order, $customer);
3939
}

0 commit comments

Comments
 (0)