2010-08-18 2 views
7

В настоящее время я создаю модуль, который требует от меня взять объект заказа и заставить его переупорядочить себя .. таким образом, создавая новый порядок в бэкэнд с точно такими же элементами и учетными данными.Magento - Programmatically reorder

Это код, который у меня есть до сих пор ... он, похоже, не изменяет порядок элемента или не создает и не добавляет другой бэкэнд-ордер.

$personsOrder = Mage::getModel(’sales/order’); 
$personsOrder->loadByIncrementId($order[’model_order_id’]); 

$order_model = Mage::getSingleton(’adminhtml/sales_order_create’); 
$personsOrder->setReordered(true); 

$order_model->initFromOrder($personsOrder); 

/* 
$order_model->save(); 

$order_model->place(); 
$order_model->sendNewOrderEmail(); 
*/ 

Любая помощь с благодарностью!

ответ

3

Моя первая мысль заключается в том, что вы должны использовать $order->getIncrementId() на линии 2, а не $order['model_order_id'], но я не уверен, откуда вы получаете $order. Вы проверили, что $order['model_order_id'] действительно возвращает действительный идентификатор приращения? Я не вижу model_order_id как поле в базе данных в любом месте ...

Я бы предположил, что вы получаете работу IDE и XDebug, чтобы вы могли проверять объекты во время работы с ними и понимать, что происходит ,

Приветствия, JD

7
$orderId= $YOUR_ORDER_NUMBER; 
$personsOrder = Mage::getModel('sales/order')->load($orderId); 
$order_model = Mage::getSingleton('adminhtml/sales_order_create'); 
$personsOrder->setReordered(true); 
$order_model->initFromOrder($personsOrder); 
$order_model->createOrder(); 
1

Если заказ который вы поместили в первый раз вокруг также создается за счет кодирования, а не из магазина фронта, то вам нужно, чтобы убедиться, что вы добавили запись в sales_flat_quote_item таблица. В противном случае этот порядок не может быть переупорядочен. Поэтому убедитесь, что это не относится к созданию вашего заказа.