Вопрос

У меня есть требование, согласно которому заказ должен быть создан из существующего заказа, т.е. функция повторного заказа magento, но программно.Задание cron отправляет событие изменения порядка на основе определенных условий.Приведенный ниже код просматривает идентификатор заказа и успешно создает новый заказ.Однако в новом заказе выбирается обновленная цена товара, тогда как мне нужно, чтобы она была такой же, как в предыдущем заказе.Как я могу изменить его, чтобы установить цену по последнему заказу?

$order = Mage::getModel('sales/order')->loadByIncrementId($lastOrderId);
$order_model = Mage::getSingleton('adminhtml/sales_order_create');
try {
    $order->setReordered(true);
    $order->getPayment()->getMethodInstance()->getInfoInstance();

    $order_model->getSession()->setUseOldShippingMethod(true);            
    $reorder = $order_model->initFromOrder($order);
    $newOrder = $reorder->createOrder();
    $newOrderId = $newOrder->getIncrementId();
} catch (Exception $e) {
    Mage::log('Renewal for Profile #'.$profileId.': '.$e, null, 'prosub-debug.log');
    Mage::logException($e);
}   
Это было полезно?

Решение

Я думаю, вам следует повторить все позиции обоих заказов и скорректировать цены на каждый из них.(учитывайте row_total и скидки, примененные к первоначальному заказу)

Если вы хотите отобразить разницу, вы можете оставить price и примените скидку, в противном случае просто скопируйте все поля, связанные с ценой:

  • цена
  • базовая цена
  • первоначальная цена
  • базовая_оригинальная_цена

Этого должно быть достаточно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top