Correos electrónicos de notificación de stock para productos configurables

8

Recientemente tuve un problema con una tienda, cuando comencé a notar que ciertos correos electrónicos de notificación de stock no se enviaban. Todos los correos electrónicos para productos simples están bien, pero cuando se trata de productos configurables, aquí está mi problema:

En este momento, los clientes pueden suscribirse a los correos electrónicos de notificación de existencias. El trabajo cron funciona bien y, lógicamente, el sistema solo los envía cuando están realmente en stock y no están configurados en 0. Sin embargo, los productos configurables siempre están configurados en 0, y los productos simples que pertenecen a este configurable cambian el stock. Entonces, lo que sucede ahora es que las personas solo pueden suscribirse a un producto cuando TODOS los tamaños están agotados (por lo que ni siquiera pueden seleccionar un tamaño sobre el que desean recibir información), pero luego cuando los zapatos, por ejemplo, se reabastecen , no reciben una notificación porque el configurable (que es el producto al que se suscribieron) todavía está en 0.

Estoy seguro de que no soy la primera persona que se encuentra con este problema, por lo que me preguntaba si alguien ha podido solucionarlo o encontrar una solución.

magin
fuente

Respuestas:

1

Parece que tendrá que ajustar su código en dos lugares. Primero, donde su código verifica para cada producto si los clientes pueden suscribirse. Segundo, donde su código (el trabajo cron, supongo) verifica los cambios de stock para los productos.

En primera instancia, puede permitir la suscripción si alguno de los productos secundarios está agotado:

    $allowSubscriptionForProduct = false;
    if ($product->getData('type_id') == 'configurable') {
        $childProductIds = Mage::getModel('catalog/product_type_configurable')
            ->getChildrenIds($product->getId())
        foreach ($childProductIds[0] as $childProductId) {
            $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($childProductId);
            if ($stock->getData('is_in_stock') == 1) {
                $allowSubscriptionForProduct = true;
                break;
            }
        }
    }
    if ($allowSubscriptionForProduct === true) {
        // change a product attribute to let customers subscribe to this product. 
    }

NB: $ childProductIds tiene una estructura extraña. Esperaría una matriz de identificadores, pero getChildrenIds () ajusta esa matriz en otra matriz. De ahí el [0] en el bucle foreach.

En la segunda instancia, debe pasar del producto secundario al producto configurable principal.

    foreach ($simpleProductThatWasOutOfStock as $outOfStockSimpleProduct) {
        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($outOfStockSimpleProduct->getId());
        if ($stock->getData('is_in_stock') == 1) {
            $configurableProductIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($outOfStockSimpleProduct->getId())
            foreach ($configurableProductIds as $configurableProductId) {
                // use the code that schedules/sends the email notifications 
            }
        }
    }

Sin el código real que está utilizando, es difícil ser más preciso. Espero que esto te ponga en el camino correcto al menos.

Estas entradas también pueden ser útiles. Para verificar el estado del stock:

https://stackoverflow.com/a/2703800

https://stackoverflow.com/a/31612963

Pasando del producto hijo al padre configurable:

https://stackoverflow.com/a/1706297

https://magento.stackexchange.com/a/30245

Vincent_v_E
fuente
0

Es posible que necesite un código personalizado o usar cualquier extensión que proporcione funcionalidades tales como el trabajo del producto configurable basado en el producto principal, no según el producto simple.

MageComp
fuente