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
fuente
cron
configurado correctamente? IIRC las reglas se reconstruyen todas las noches y sin un activocron
producirá un comportamiento extrañoRespuestas:
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ónbindRuleToEntity
se cambió a:y la línea
$adapter->delete(...)
estaba envuelta enOtro 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
:MÁS TARDE: vea este parche https://github.com/magendooro/targetrulefix
fuente
Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'
-> esta clave proviene deenterprise_targetrule_index_related
... ¿Tienes alguna idea de si está relacionada con los cambios mencionados?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()
)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.
fuente