Email quản trị hàng ngày cho các sản phẩm đã hết hàng ngày hôm đó


7

Tôi đang cố gắng thiết lập một kịch bản để gửi email hàng ngày đến quản trị viên của mình để cho họ biết những gì đã hết hàng ngày hôm đó.

Nó không cần phải là bất cứ thứ gì lạ mắt, thậm chí có thể viết các mục vào một tệp văn bản khi các sản phẩm hết hàng cho đến hết ngày khi các tệp văn bản đó được gửi đi dưới dạng email và bị xóa cho ngày hôm sau?

Cảm ơn!


1
Bạn đã tìm thấy một câu trả lời ở đây? Nếu có, xin vui lòng đánh dấu nó là giải pháp.
Fabian Blechschmidt

Câu trả lời:


8

Ngoài nguồn cấp dữ liệu RSS tích hợp, có hai cách để bạn thực sự gửi email cho mình - câu trả lời thực sự cho câu hỏi thực tế của bạn:

Mua một phần mở rộng:

Tôi không có kinh nghiệm với tiện ích mở rộng này, nhưng đã được đề cập trên StackOverflow:

http: //www.magentoc Commerce.com/magento-connect/irzoo-lowstockreport-1278.html

Tự làm

Tạo một người quan sát cho cataloginventory/stock_item- trên sự kiện lưu. Tất cả các mô hình có lưu sự kiện được cung cấp bởi Mage_Core_Model_Abstract. Khi lưu, nó sẽ gọi cho người quan sát của bạn, bạn có thể kiểm tra mức chứng khoán tại thời điểm đó.

<global>
    <events>
        <cataloginventory_stock_item_save_after>
            <observers>
                <mymodule_stock_item_save>
                    <type>singleton</type>
                    <class>yourmodel/observer</class>
                    <method>lowStockReport</method>
                </mymodule_stock_item_save>
            </observers>
        </cataloginventory_stock_item_save_after>
    </events>
</global>

Quan sát viên.php:

<?php

class MyCompany_MyModule_Model_Observer
{
    public function lowStockReport($observer)
    {
        $event = $observer->getEvent();
        $stockItem = $event->getItem();

        if($stockItem->getQty() < $stockItem->getNotifyStockQty()){

            //stock is lower than the notify amount, send email

            $product = Mage::getModel('catalog/product')->load($stockItem->getProductId());

            $body = "{$product->getName()} :: {$product->getSku()} just Ran out of stock:\n\n";
            $body .= "Current Qty: {$stockItem->getQty()}\n";
            $body .= "Low Stock Date: {$stockItem->getLowStockDate()}\n";

            $mail = new Zend_Mail();
            $mail->setType(Zend_Mime::MULTIPART_RELATED);
            $mail->setBodyHtml($body);
            $mail->setFrom('lowstock@yourwebsite.com', 'Low Stock Notifier');
            $mail->addTo('youremail@gmail.com', 'Your Name Here');
            $mail->setSubject('[Notice] An Item Has Gone Out of Stock');
            $mail->send();
        }
    }
}

Điều này sẽ gửi email mỗi khi mô hình vật phẩm được lưu và số lượng có sẵn thấp hơn số lượng thông báo được đặt trong Quản trị> Danh mục> Quản lý sản phẩm.

Mong rằng sẽ giúp.


2
Các tuyến đường DIY ở đây là đi đúng hướng. OP đã yêu cầu một email mỗi đêm, vì vậy tôi sẽ đề xuất một bảng có các cột 'sản phẩm_id', 'dấu thời gian' và 'được thông báo'. Khi một sản phẩm hết hàng, thêm một mục, khi nó trở lại, loại bỏ mục đó. Hàng đêm bạn gửi email cho tất cả những người không được thông báo và đặt cờ. Điều đó giúp bạn không thông báo nhiều lần cho mỗi sản phẩm, nhưng bạn sẽ nhận được thông báo vào lần tiếp theo sản phẩm hết hàng.
Lee Saferite

1
Thật không may, cataloginventory_stock_item_save_aftersự kiện này không được kích hoạt khi mua, ít nhất là trong các phiên bản Magento gần đây. Xem tại đây để biết các giải pháp thay thế: magento.stackexchange.com/questions/25207/ mẹo
Fabian Schmengler

Một thay đổi nhỏ đối với lời giải thích tuyệt vời của @philwinkle Thay vì: $ stockItem = $ observer-> getEvent () sử dụng: $ stockItem = $ observer-> getEvent () .getgetItem ()
diazwatson 16/1/2016

1

Câu hỏi cũ, tuy nhiên tôi không cảm thấy như nó đã thực sự được trả lời. Tôi sẽ thêm một và cronjob vào tệp config.xml trong một mô-đun tùy chỉnh, tìm ra sản phẩm nào sẽ cần có trong e-mail bằng cách xây dựng bộ sưu tập (như bên dưới), sau đó gửi email kết quả.

    $date = strtotime('yesterday');

    $collection = Mage::getModel('cataloginventory/stock_item')
    ->getCollection()
    ->addFieldToFilter('backorders', 0) 
    ->addFieldToFilter('is_in_stock', 0) 
    ->addFieldToFilter('manage_stock', 1) 
    ->addFieldToFilter('low_stock_date', array('date' => true, 'from' => date("Y-m-d", $date)))
    ->getAllIds();

-1

Mặc dù không phải là thông báo hết hàng, Magento cung cấp nguồn cấp RSS có nguồn gốc thấp có thể phù hợp với nhu cầu của bạn.

Nguồn cấp dữ liệu RSS thấp


Làm thế nào tôi có thể nhận được báo cáo có thể tải xuống, rss chỉ cần xem báo cáo
Gem

-1

Bạn chỉ có thể sử dụng nguồn cấp dữ liệu RSS gốc cho kho lưu trữ - chạy khác biệt so với kho của ngày hôm trước (nghĩa là để tìm những gì đã thay đổi) - sau đó loại bỏ email dựa trên kết quả.

Nó sẽ là một tập lệnh PHP siêu đơn giản ~ 10 dòng.


Nếu bạn muốn một cái gì đó tinh vi hơn như một phần mở rộng thích hợp, thì bạn sẽ cần thêm một người quan sát vào order_savechỉ mục hoặc chỉ số chứng khoán - để có thể nắm bắt sau đó một giá trị dưới 0 - và tạo một bản tóm tắt dựa trên các giá trị đó.


Tôi không có kinh nghiệm để xây dựng điều này một cách đáng tiếc nhưng nếu bạn làm thế, bạn có quan tâm đến một khoản phí cho dịch vụ của mình không? Khách hàng của tôi sẽ thực sự được hưởng lợi từ nó.
Adam Ross
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.