Aumentar as vendas da regra de destino

9

Eu tenho um problema estranho com as vendas de regra da Magento Target.

Cenário: Magento EE 1.12. Mais de 30 visualizações de loja na mesma instância do Magento. 30k + produtos. A maioria dos produtos tem as mesmas configurações em todas as visualizações da loja. Eu criei uma regra para mostrar upsells da seguinte maneira. "Mostrar produtos da mesma categoria com preço 100% ou mais que o produto atual". Configurações para mostrar upsells: 'Apenas com base em regras' (o problema é reproduzido em 'Com base em regras e selecionado'). Eu salvei a regra. reindexou tudo. Tudo parece bom, surgem os upsells (para os produtos que testei), conforme definido pela regra, MAS… Depois de algum tempo para o mesmo produto em uma loja, os upsells aparecem e, em outros, não. O produto tem as mesmas configurações em todas as visualizações da loja. (e deve ter o mesmo aumento de vendas.)

Se eu modificar algo na regra e salvá-lo novamente, as vendas diretas começarão a aparecer em todas as visualizações da loja, mas após algum tempo o problema será reproduzido.

Após digitar o código, descobri que os upsells gerados pela regra de destino são mantidos na tabela enterprise_targetrule_index_upsell para evitar a análise de todas as regras a cada vez. Aqui está como isso funciona. (a tabela é truncada ao salvar uma regra) Se houver algum upselling de 'regra de destino' na tabela que mencionei, eles serão recuperados. Se não estiverem, as regras serão analisadas e o resultado será colocado na tabela de índices. Aqui estão alguns registros dessa tabela para um produto específico.

+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| 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 |

Como você pode ver, os upsells do produto com o ID 17372 são iguais em todas as visualizações da loja, exceto store_id 20, que está em branco. Não há nada de especial na loja 20. Todos os produtos envolvidos aqui estão disponíveis em todas as lojas.

Qualquer ideia?

Obrigado. Marius.

Marius
fonte
11
O seu está cronconfigurado corretamente? IIRC as regras são re-construída todas as noites e sem um ativo cronirá produzir um comportamento estranho
Ben Lessani - Sonassi
O cron está ativo e é executado todas as manhãs sem problemas.
Marius
Eu encontrei uma outra coisa. Após salvar a regra, a tabela 'enterprise_targetrule_product' contém todos os produtos, mas após algum tempo todos eles desaparecem, exceto um, nem sempre o mesmo. Desde que os IDs do produto estejam na tabela acima, tudo funcionará.
Marius
11
ao salvar um produto, as regras de destino são indexadas para esse produto e isso acaba sendo feito: (Mage_Rule_Model_Resource_Abstract :: bindRuleToEntity ()) $ adapter-> delete ($ this-> getTable ($ entityInfo ['association_table']), $ adapter -> quoteInto ($ entityInfo ['rule_id_field']. 'IN (?) AND', $ ruleIds). $ adapter-> quoteInto ($ entityInfo ['entity_id_field']. 'NOT IN (?)', $ entityIds); Isso exclui todos os outros produtos da lista de produtos afetados. Se eu definir o modo do índice de targetrule como 'manual', o problema não será reproduzido. Mas isso não resolverá o problema. Apenas o oculta.
Marius
Alguma razão para alguém votar contra isso?
FlorinelChis

Respostas:

7

No EE 1.13, esse bug parece estar corrigido (mas o EE 1.13 se foi)

Em Enterprise_TargetRule_Model_Resource_Index::saveProductIndex, a linha com o problema foi substituída por (dica: 4th param "false")

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

e, em Mage_Rule_Model_Resource_Abstract, a função bindRuleToEntityfoi alterada para:

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

e a linha $adapter->delete(...)foi enrolada

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)
    );
 }

Outro bug, shell / indexer.php --reindex targetrule, não faz nada; portanto, você não pode reindexar via cron / console, corrigindo adicionando Enterprise_TargetRule_Model_Index:

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

MAIS TARDE: veja este patch https://github.com/magendooro/targetrulefix

carco
fonte
Estou na 1.13.1 e estou tendo uma Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'-> essa chave vem enterprise_targetrule_index_related... você tem alguma idéia se está relacionada às alterações mencionadas?
Fra
1

Decidi adicionar o que encontrei como resposta para que esta pergunta não seja marcada como não respondida.

ao salvar um produto, as regras de destino são indexadas para esse produto e acaba fazendo isso :( 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); 

Isso exclui todos os outros produtos da lista de produtos afetados. Se eu definir o modo do índice de targetrule como 'manual', o problema não será reproduzido. Mas isso não resolve. Apenas o esconde.

Do meu ponto de vista, este é um grave bug do Magento EE.

Marius
fonte
A resposta aceita resolveu seu problema? Estou tendo o mesmo problema na EE 1.11.1.0
dchayka
Fez por mim ..
Marius