Pregunta

Tengo un requisito en el que se debe crear un pedido a partir de un pedido existente, es decir, la función Reordenar de magento pero mediante programación.Un trabajo cron envía un evento de reorden según ciertas condiciones.El siguiente código busca el ID del pedido y crea un nuevo pedido correctamente.Sin embargo, el nuevo pedido elige el precio actualizado del producto, mientras que necesito que sea el mismo que el pedido anterior.¿Cómo puedo modificarlo para establecer el precio del último pedido?

$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);
}   
¿Fue útil?

Solución

Supongo que deberías iterar todos los artículos de ambos pedidos y ajustar los precios de cada uno.(tener en cuenta el total_fila y los descuentos aplicados al pedido original)

Si desea mostrar la diferencia puede dejar el price y aplique un descuento; de lo contrario, simplemente copie todos los campos relacionados con el precio:

  • precio
  • precio base
  • precio original
  • precio_base_original

Esto debería ser suficiente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top