대상 규칙 상향 판매


9

Magento Target 규칙을 상향 판매하는 데 이상한 문제가 있습니다.

시나리오 : 마 젠토 EE 1.12. 동일한 Magento 인스턴스에서 30 개 이상의 스토어 뷰 30k + 제품 대부분의 제품은 모든 상점보기에서 동일한 설정을 갖습니다. 다음과 같이 상향 판매를 표시하는 규칙을 만들었습니다. “현재 제품보다 가격이 100 % 이상인 동일한 카테고리의 제품을 표시합니다.” 상향 판매를 표시하기위한 설정 : '규칙 기반 만'(문제는 '규칙 기반 및 선택'에 대한 재생산). 규칙을 저장했습니다. 모든 것을 다시 색인화했습니다. 모든 이음새가 정상으로 보이지만 업셀은 규칙에 정의 된대로 테스트합니다 (하지만 테스트 한 제품의 경우). 그러나 한 상점보기에서 동일한 제품에 대한 일정 시간이 지나면 업셀이 표시되고 다른 상점보기에서는 그렇지 않습니다. 제품은 모든 상점보기에서 동일한 설정을 갖습니다. (또한 동일한 상향 판매가 있어야합니다.)

규칙에서 무언가를 수정하고 다시 저장하면 업셀이 모든 상점보기에 표시되기 시작하지만 얼마 후 문제가 재현됩니다.

코드를 파고 들었을 때마다 대상 규칙에 의해 생성 된 상향 판매가 Enterprise_targetrule_index_upsell 테이블에 보관되어 매번 모든 규칙을 구문 분석하지 않도록합니다. 작동 방식은 다음과 같습니다. (규칙을 저장할 때 테이블이 잘립니다.) 위에서 언급 한 테이블에 '대상 규칙'상향 판매가있는 경우 검색됩니다. 그렇지 않은 경우 규칙이 구문 분석되고 결과가 색인 테이블에 저장됩니다. 다음은 특정 제품에 대한 해당 테이블의 일부 레코드입니다.

+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| entity_id | store_id | customer_group_id | product_ids                                                         | customer_segment_id |
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
|     17372 |        2 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |        5 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       17 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       18 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       19 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       20 |                 0 |                                                                     |                   0 |
|     17372 |       21 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       22 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       23 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |

보시다시피 id가 17372 인 제품의 상향 판매량은 비어있는 store_id 20을 제외하고 모든 상점보기에서 모두 동일합니다. 매장 20에는 특별한 것이 없습니다. 여기에 관련된 모든 제품은 모든 매장에서 구입할 수 있습니다.

어떤 생각?

감사. 마리우스.


1
당신의되어 cron제대로 구성. IIRC 규칙은 야간에 재건되며 적극적으로 활동하지 않으면 cron이상한 행동을하게됩니다
Ben Lessani – Sonassi

크론은 활성화되어 있으며 매일 아침 문제없이 실행됩니다.
Marius

나는 다른 것을 발견했다. 규칙을 저장 한 후 'enterprise_targetrule_product'테이블에는 모든 제품이 포함되지만 일정 시간이 지나면 항상 같은 제품을 제외한 모든 제품이 사라집니다. 제품 ID가 위 표에있는 한 모든 것이 작동합니다.
Marius

1
제품을 저장할 때 대상 규칙이 해당 제품에 대해 색인화되고 결과는 다음과 같습니다. (Mage_Rule_Model_Resource_Abstract :: bindRuleToEntity ()) $ adapter-> delete ($ this-> getTable ($ entityInfo [ 'associations_table']) -> quoteInto ($ entityInfo [ 'rule_id_field']. 'IN (?) AND', $ ruleIds) $ adapter-> quoteInto ($ entityInfo [ 'entity_id_field']. 'NOT IN (?)', $ entityIds); . 내가 재현되지 않는 '수동'문제에 targetrule 지수의 모드를 설정하면이 영향을받는 제품 목록에서 다른 모든 제품을 삭제하지만 그것을 해결되지 않으면 그것은 단지를 숨 깁니다...
마리우스

누군가 이것을 거절하는 이유가 있습니까?
FlorinelChis

답변:


7

EE 1.13에서는이 버그가 수정 된 것으로 보입니다 (그러나 EE 1.13은 사라졌습니다)

에서 Enterprise_TargetRule_Model_Resource_Index::saveProductIndex문제가있는 줄이 (힌트 : 4 번째 매개 변수 "false")로 대체되었습니다.

$targetRule->bindRuleToEntity($ruleId, $productId, 'product', false);

에서 Mage_Rule_Model_Resource_Abstract에서 기능 bindRuleToEntity이 다음과 같이 변경되었습니다.

public function bindRuleToEntity($ruleIds, $entityIds, $entityType, $deleteOldResults = true)

그리고 줄 $adapter->delete(...)에 싸여

if ($deleteOldResults) {
    $adapter->delete($this->getTable($entityInfo['associations_table']),
           $adapter->quoteInto($entityInfo['rule_id_field']   . ' IN (?) AND ', $ruleIds) .
           $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)',  $entityIds)
    );
 }

또 다른 버그 인 shell / indexer.php --reindex targetrule은 아무것도하지 않으므로 cron / console을 통해 다시 색인을 생성 할 수 없습니다 Enterprise_TargetRule_Model_Index.

public function reindexAll() {
    return $this->_getResource()->cleanIndex();
}

나중에 :이 패치를 참조하십시오 https://github.com/magendooro/targetrulefix


나는 1.13.1에 있고 Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'->이 키가 있습니다 enterprise_targetrule_index_related... 언급 된 변경 사항과 관련이 있다면 어떤 아이디어가 있습니까?
Fra

1

나는 내가 찾은 것을 답변으로 추가하기로 결정했기 때문에이 질문은 답이없는 것으로 표시되지 않습니다.

제품을 저장할 때 해당 제품에 대한 대상 규칙이 색인화되고 다음과 같이 수행됩니다. ( Mage_Rule_Model_Resource_Abstract::bindRuleToEntity())

$adapter->delete($this->getTable($entityInfo['associations_table']), $adapter->quoteInto($entityInfo['rule_id_field'] . ' IN (?) AND ', $ruleIds) . $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)', $entityIds); 

영향을받는 제품 목록에서 다른 모든 제품이 삭제됩니다. targetrule 인덱스의 모드를 'manual'로 설정하면 문제가 재현되지 않습니다. 그러나 이것은 해결되지 않습니다. 그냥 숨 깁니다.

내 관점에서 이것은 심각한 Magento EE 버그입니다.


답변을 받아도 문제가 해결 되었습니까? 나는 EE 1.11.1.0에서 같은 문제를 겪고있다
dchayka

그것은 나를 위해 ..
마리우스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.