Reorden de Magento con precio de pedido existente
-
28-09-2020 - |
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);
}
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.