0

わかりました、これをどこでも検索していて、何も思いつきません... DydacompのMail order Managerソフトウェアからの同期プログラムを介して、Magento Community 1.7.0.2に追跡番号を外部から入力しています... - Magentoで注文を閉じます追跡番号を追加しますが、mage で追跡メールの送信機能をトリガーしません。- 私が調査したところ、おそらくこれを行うことができるように見えるオブザーバーなどがいることがわかりましたが、20時間後に見つけることができるすべてのブログなどを精査した後、機能するものを思いつくことができません!

このリンクは本当に正しい方向にあるようです...しかし、このコードブロックをどこに置くべきですか? あらゆる種類の場所に配置しようとしましたが、どれも機能しません: 配送追跡番号が設定されている場合、プログラムで電子メールを送信します

どんな助けでも大歓迎です。

4

1 に答える 1

1

似たようなものを開発しました。「配達済み」(完了ステータス) の最後の注文をチェックする (1 日 1 回) cron によってアクティブ化されるモジュールを作成しました。

cron magento モジュールで関数を実行するには、config.xml に追加します。

<crontab>
    <jobs>            
        <myModule_myFunction>
            <schedule><cron_expr>*/60 * * * *</cron_expr></schedule>
            <run><model>emailtracker/cron::myFunction</model></run>
        </myModule_myFunction>
    </jobs>
</crontab>

物資を注文するには、次のコード スニペットを使用できます。

$orders = Mage::getModel('sales/order')->getCollection()
        ->addFieldToFilter('status', 'complete')
        ->addAttributeToFilter('created_at', array('gteq' => $dataForFilter));

私が作成した注文のコレクションであることに注意してください。すでに行われたすべての注文を取得しないように、日付でフィルターをかけます。

追跡メール配信を受け取る可能性のある最近の完全な注文のコレクションを使用して、重要な注文を実際に処理できます。

コレクションで実行する foreach を作成し、そのループ内で追跡番号を取得します。

foreach($orders as $order) {
    $trackings = Mage::getResourceModel('sales/order_shipment_track_collection')
            ->setOrderFilter($order)
            ->getData();

    for($i=0;$i<count($trackings);$i++) {
        $trackingNumber = $trackings[$i]['track_number'];
        //Make your php magic here
    }
}

この時点から、この情報を好きなように操作できます。API 経由で追跡番号のステータスを確認し、その配送サービスがメールを送信する関数を作成するか、想像することができます。

重要: Magento cron がアクティブかどうかを必ず確認してください。注:Magento 1.6.1.0で行いました

于 2012-09-05T17:47:23.710 に答える