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);
}   
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top