Skip to content

Commit a45198d

Browse files
committed
ACP2E-3955: [Mainline] Price of product in cart affected by catalog price rule doesn't change when rule is updated
- Initial solution
1 parent fab20b0 commit a45198d

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\CatalogRule\Plugin\Model\Indexer;
9+
10+
use Magento\Catalog\Model\Indexer\Product\Price;
11+
use Magento\Quote\Model\ResourceModel\Quote as QuoteResourceModel;
12+
13+
/**
14+
* Recollect quote on product ids after rule change.
15+
*/
16+
class RecollectQuoteAfterRuleChange
17+
{
18+
/**
19+
* @param QuoteResourceModel $quoteResourceModel
20+
*/
21+
public function __construct(
22+
private readonly QuoteResourceModel $quoteResourceModel
23+
) {
24+
}
25+
26+
/**
27+
* Recollect quote on product ids after rule change.
28+
*
29+
* @param Price $subject
30+
* @param $result
31+
* @param array $ids
32+
* @return void
33+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
34+
*/
35+
public function afterExecute(Price $subject, $result, array $ids)
36+
{
37+
$this->quoteResourceModel->markQuotesRecollect($ids);
38+
}
39+
}

app/code/Magento/CatalogRule/etc/di.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,7 @@
164164
<argument name="customConditionProvider" xsi:type="object">CatalogRuleCustomConditionProvider</argument>
165165
</arguments>
166166
</type>
167+
<type name="Magento\Catalog\Model\Indexer\Product\Price">
168+
<plugin name="recollect_quote_after_rule_change" type="Magento\CatalogRule\Plugin\Model\Indexer\RecollectQuoteAfterRuleChange"/>
169+
</type>
167170
</config>

0 commit comments

Comments
 (0)