Reglas objetivo aumentar las ventas

9

Tengo un problema extraño con las ventas de la regla de Magento Target.

Escenario: Magento EE 1.12. Más de 30 vistas de la tienda en la misma instancia de Magento. 30k + productos. La mayoría de los productos tienen la misma configuración en todas las vistas de la tienda. He creado una regla para mostrar las ventas adicionales de la siguiente manera. "Mostrar productos de la misma categoría con un precio del 100% o más que el producto actual". Configuración para mostrar ventas adicionales: 'Solo basado en reglas' (el problema se reproduce para 'Basado en reglas y seleccionado'). He guardado la regla. reindexado todo. Todo parece verse bien, aparecen las ventas adicionales (para los productos que probé) según lo definido por la regla, PERO ... Después de un tiempo para el mismo producto en una vista de la tienda, aparecen las ventas adicionales y en otras vistas de la tienda no. El producto tiene la misma configuración en todas las vistas de la tienda. (y debería tener las mismas ventas adicionales).

Si modifico algo en la regla y lo guardo nuevamente, las ventas adicionales comienzan a aparecer en todas las vistas de la tienda, pero después de un tiempo el problema se reproduce.

Después de cavar en el código, descubrí que las ventas adicionales generadas por la regla de destino se mantienen en la tabla enterprise_targetrule_index_upsell para evitar analizar todas las reglas cada vez. Así es como funciona. (la tabla se trunca al guardar una regla) Si hay ventas adicionales de 'regla objetivo' en la tabla que mencioné, entonces se recuperan. Si no lo están, las reglas se analizan y el resultado se coloca en la tabla de índice. Aquí hay algunos registros de esa tabla para un producto 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 puede ver, las ventas adicionales para el producto con id 17372 son todas iguales en todas las vistas de la tienda, excepto store_id 20, que está en blanco. No hay nada especial en la tienda 20. Todos los productos involucrados aquí están disponibles en todas las tiendas.

¿Alguna idea?

Gracias. Marius

Marius
fuente
1
¿Está cronconfigurado correctamente? IIRC las reglas se reconstruyen todas las noches y sin un activo cronproducirá un comportamiento extraño
Ben Lessani - Sonassi
El cron está activo y se ejecuta cada mañana sin problemas.
Marius
Encontré otra cosa. Después de guardar la regla, la tabla 'enterprise_targetrule_product' contiene todos los productos, pero después de un tiempo todos se han ido, excepto uno, no siempre el mismo. Mientras los identificadores de producto estén en la tabla anterior, todo funciona.
Marius
1
al guardar un producto, las reglas de destino se indexan para ese producto y termina haciendo esto: (Mage_Rule_Model_Resource_Abstract :: bindRuleToEntity ()) $ adapter-> delete ($ this-> getTable ($ entityInfo ['asociaciones_table']), $ adaptador -> quoteInto ($ entityInfo ['rule_id_field']. 'IN (?) AND', $ ruleIds). $ adapter-> quoteInto ($ entityInfo ['entity_id_field']. 'NOT IN (?)', $ entityIds); Esto elimina todos los demás productos de la lista de productos afectados. Si configuro el modo para el índice de destino como 'manual', el problema no se reproduce. Pero esto no lo resuelve. Simplemente lo oculta.
Marius
¿Alguna razón para que alguien rechace esto?
FlorinelChis

Respuestas:

7

En EE 1.13, este error parece estar solucionado (pero EE 1.13 ya no está)

En Enterprise_TargetRule_Model_Resource_Index::saveProductIndex, la línea con el problema fue reemplazada por (sugerencia: 4to parámetro "falso")

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

y, en Mage_Rule_Model_Resource_Abstract, la función bindRuleToEntityse cambió a:

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

y la línea $adapter->delete(...)estaba envuelta en

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

Otro error, shell / indexer.php --reindex targetrule no hace nada, por lo tanto, no puede reindexar a través de cron / console, arregle agregando Enterprise_TargetRule_Model_Index:

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

MÁS TARDE: vea este parche https://github.com/magendooro/targetrulefix

carco
fuente
Estoy en 1.13.1 y tengo un Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'-> esta clave proviene de enterprise_targetrule_index_related... ¿Tienes alguna idea de si está relacionada con los cambios mencionados?
Fra
1

Decidí agregar lo que encontré como respuesta para que esta pregunta no se marque como sin respuesta.

al guardar un producto, las reglas de destino se indexan para ese producto y termina haciendo esto :( 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); 

Esto elimina todos los demás productos de la lista de productos afectados. Si configuro el modo para el índice de targettrule en 'manual', el problema no se reproduce. Pero esto no lo resuelve. Simplemente lo esconde.

Desde mi punto de vista, este es un error grave de Magento EE.

Marius
fuente
¿La respuesta aceptada resolvió su problema? Tengo el mismo problema en EE 1.11.1.0
dchayka
Lo hizo por mí ..
Marius