Puedo convertir con éxito convertir un pedido en presupuesto, pero aún así no pude cargarlo en el carrito actual. Probé varios métodos pero fue en vano. Aquí está el más simple:
$_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save();
$_quote = Mage::getModel('sales/quote')->load($_quote->getId());
$_quote->setIsActive(true)->save();
Pude obtener el ID de presupuesto pero el objeto de presupuesto no se carga en el carrito actual.
También intenté
$_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save();
$_quote = Mage::getModel('sales/quote')->load($_quote->getId());
if ($_checkoutQuote->getId() != $_quote->getId() && $_quote->getId()) {
$_checkoutQuote->merge($_quote)->save();
Mage::getModel('checkout/session')
->setQuote($_checkoutQuote)
->init();
Mage::getSingleton('checkout/session')->getQuote()->setIsActive(true)->save();
}
y enfoques similares pero aún no carga la cotización. ¡Muchas gracias!
fuente
La respuesta anterior solo funciona si la cotización aún está disponible en la base de datos. Me encontré con una situación en la que este ya no era el caso, por lo que este código no funciona:
En cambio, podemos usar el
Mage_Sales_Model_Convert_Order
para convertir un pedido existente nuevamente en una nueva cotización usando eltoQuote(Mage_Sales_Model_Order $order)
método. Toma un pedido como entrada y genera un nuevo objeto de presupuesto.Es necesario llamar a funciones adicionales para convertir la dirección de facturación / envío, artículos, etc. Para cada objeto, encontrará una función en esta clase.
fuente