Email thông báo chứng khoán cho các sản phẩm cấu hình


8

Gần đây tôi gặp phải một vấn đề với một cửa hàng, khi tôi bắt đầu nhận thấy một số email thông báo chứng khoán nhất định không được gửi. Tất cả các e-mail cho các sản phẩm đơn giản đều ổn, nhưng khi nói đến các sản phẩm có thể định cấu hình, đây là vấn đề của tôi:

Ngay bây giờ, khách hàng có thể đăng ký e-mail thông báo chứng khoán. Công việc định kỳ chạy tốt và hệ thống chỉ gửi chúng khi chúng thực sự tồn kho và không được đặt thành 0. Tuy nhiên, các sản phẩm có thể định cấu hình luôn được đặt thành 0 và các sản phẩm đơn giản thuộc cấu hình này sẽ thay đổi cổ phiếu. Vì vậy, điều xảy ra bây giờ là, mọi người chỉ có thể đăng ký một sản phẩm khi TẤT CẢ các kích cỡ đã hết hàng (vì vậy thậm chí không thể chọn kích thước mà họ muốn nhận thông tin), nhưng sau đó, ví dụ như khi giày được đặt lại , họ không nhận được thông báo vì cấu hình (là sản phẩm họ đã đăng ký) vẫn ở mức 0.

Tôi chắc chắn tôi không phải là người đầu tiên gặp phải vấn đề này, vì vậy tôi tự hỏi liệu có ai có thể giải quyết vấn đề này không hoặc tìm giải pháp?

Câu trả lời:


1

Có vẻ như bạn sẽ cần điều chỉnh mã của mình ở hai nơi. Đầu tiên, nơi mã của bạn kiểm tra từng sản phẩm xem khách hàng có được phép đăng ký không. Thứ hai, nơi mã của bạn (công việc định kỳ tôi giả sử) kiểm tra các thay đổi chứng khoán cho các sản phẩm.

Trong trường hợp đầu tiên, bạn có thể cho phép đăng ký nếu bất kỳ sản phẩm con nào hết hàng:

    $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: $ childSản phẩm có cấu trúc lạ. Tôi mong đợi một mảng id, nhưng getChildrenIds () kết thúc mảng đó trong mảng khác. Do đó [0] trong vòng lặp foreach.

Trong trường hợp thứ hai, bạn cần chuyển từ sản phẩm con sang sản phẩm có thể định cấu hình cha.

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

Không có mã thực tế mà bạn đang sử dụng, thật khó để chính xác hơn. Tôi hy vọng điều này sẽ đưa bạn đi đúng hướng ít nhất.

Những mục này cũng có thể hữu ích. Để kiểm tra trạng thái chứng khoán:

https://stackoverflow.com/a/2703800

https://stackoverflow.com/a/31612963

Đi từ sản phẩm con đến cha mẹ có thể cấu hình:

https://stackoverflow.com/a/1706297

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


0

Bạn có thể cần tùy chỉnh mã hoặc sử dụng bất kỳ tiện ích mở rộng nào cung cấp chức năng như sản phẩm có thể định cấu hình hoạt động dựa trên sản phẩm chính không theo sản phẩm đơn giản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.