Je peux réussir à convertir une commande en devis mais je ne pouvais toujours pas la charger dans le panier actuel. J'ai essayé plusieurs méthodes mais en vain. Voici le plus simple:
$_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save();
$_quote = Mage::getModel('sales/quote')->load($_quote->getId());
$_quote->setIsActive(true)->save();
J'ai pu obtenir l'ID de devis mais l'objet de devis ne se charge pas dans le panier actuel.
J'ai aussi essayé
$_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();
}
et des approches similaires, mais ne charge toujours pas le devis. Merci beaucoup!
la source
La réponse précédente ne fonctionne que si le devis est toujours disponible dans la base de données. J'ai rencontré une situation où ce n'était plus le cas, donc ce code ne fonctionne pas:
Au lieu de cela, nous pouvons utiliser le
Mage_Sales_Model_Convert_Order
pour reconvertir une commande existante en un nouveau devis en utilisant latoQuote(Mage_Sales_Model_Order $order)
méthode. Il prend une commande en entrée et sort un nouvel objet devis.Vous devez appeler des fonctions supplémentaires pour convertir l'adresse de facturation / d'expédition, les articles, etc. Pour chaque objet, vous trouverez une fonction dans cette classe.
la source