【发布时间】:2015-01-19 16:18:50
【问题描述】:
我想通过 cronjob 以编程方式重新排序特定订单,并通过邮件发送订单确认。我的根目录中有一个简单的 php 文件,它由 cronjob 每隔一段时间触发一次:
<?php
include_once 'app/Mage.php';
Mage::app();
//some existing order ids
$orderIds= array('911', '1106', '926');
foreach($orderIds as $orderId){
Mage::unregister('rule_data');
Mage::getModel('adminhtml/session_quote')
->clear();
/* @var Mage_Sales_Model_Order $order */
$order = Mage::getModel('sales/order')->load($orderId)
->setReordered(true);
/* @var Mage_Sales_Model_Quote $quote */
$quote = Mage::getModel('sales/quote')
->setStoreId($order->getStoreId())
->assignCustomer(Mage::getModel('customer/customer')->load($order->getCustomerId()))
->setUseOldShippingMethod(true);
/* @var Mage_Adminhtml_Model_Sales_Order_Create $model */
$model = Mage::getModel('adminhtml/sales_order_create')
->initFromOrder($order)
->setQuote($quote);
/* @var Mage_Sales_Model_Order $newOrder */
$newOrder = $model->createOrder();
$newOrder->setQuoteId($quote->getId())
->sendNewOrderEmail();
$model->getSession()
->clear();
}
到目前为止,它似乎工作正常,新订单已下达并已发送电子邮件。但是我遇到的问题是新订单中的客户始终是第一个旧订单中的客户(在本例中是 id 为 911 的订单)。当然,这也会影响订单确认邮件,所以它们都被发送到同一个电子邮件地址......另外,订单项目似乎在购物车中添加,所以最后一个重新订购的订单包含所有订单项目之前的命令……我做错了什么?
感谢我能得到的每一个帮助!谢谢!
【问题讨论】:
-
说清楚:我想要的是通过他们的 id 从现有订单创建新订单。新订单需要包含旧订单的所有信息(商品、客户、运输信息等)。不幸的是,Magento 在遍历订单 ID 时保留了客户信息,因此电子邮件都发送给了第一个订单的客户。
标签: magento-1.6