@@ -292,25 +292,26 @@ protected function doReindexByIds($ids)
292
292
293
293
/** @var Rule[] $activeRules */
294
294
$ activeRules = $ this ->getActiveRules ()->getItems ();
295
- foreach ($ activeRules as $ rule ) {
296
- $ ruleWebsiteIds = $ rule ->getWebsiteIds ();
297
- if (!$ rule ->getIsActive () || empty ($ ruleWebsiteIds )) {
298
- continue ;
299
- }
295
+ foreach ($ ids as $ productId ) {
296
+ foreach ($ activeRules as $ activeRule ) {
297
+ $ rule = clone $ activeRule ;
298
+ $ rule ->setProductsFilter ($ productId );
299
+ $ matchedProductIds = $ rule ->getMatchingProductIds ();
300
+ if (!isset ($ matchedProductIds [$ productId ])) {
301
+ continue ;
302
+ }
300
303
301
- foreach ($ ids as $ productId ) {
302
- $ rule ->setProductsFilter ([$ productId ]);
303
- if ($ rule ->getMatchingProductIds ()) {
304
- $ this ->assignProductToRule ($ rule , $ productId , $ ruleWebsiteIds );
304
+ $ websiteIds = array_keys (array_filter ($ matchedProductIds [$ productId ]));
305
+ if (empty ($ websiteIds )) {
306
+ continue ;
305
307
}
308
+
309
+ $ this ->assignProductToRule ($ rule , $ productId , $ websiteIds );
306
310
}
307
- }
308
311
309
- foreach ($ ids as $ productId ) {
310
312
$ this ->cleanProductPriceIndex ([$ productId ]);
311
313
$ this ->reindexRuleProductPrice ->execute ($ this ->batchCount , $ productId );
312
314
}
313
-
314
315
$ this ->reindexRuleGroupWebsite ->execute ();
315
316
}
316
317
0 commit comments