Reordenar Magento com preço de pedido existente
-
28-09-2020 - |
Pergunta
Eu tenho um requisito em que um pedido precisa ser criado a partir de um pedido existente, ou seja, o recurso Reordenar do magento, mas de forma programática.Um cron job despacha um evento de reordenação com base em determinadas condições.O código abaixo procura o ID do pedido e cria um novo pedido com sucesso.Porém, o novo pedido escolhe o preço atualizado do produto, mas preciso que seja igual ao pedido anterior.Como posso modificá-lo para definir o preço do ú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);
}
Solução
Acho que você deveria iterar todos os itens de ambos os pedidos e ajustar os preços de cada um.(leve em consideração o row_total e os descontos aplicados ao pedido original)
Se você quiser exibir a diferença, você pode deixar o price
e aplique um desconto, caso contrário basta copiar todos os campos relacionados ao preço:
- preço
- preço base
- preço original
- preço_base_original
Isso deveria ser suficiente.