Impossible de charger l'objet devis


24

L' sales/quoteobjet fonctionne-t-il différemment des autres objets lors du chargement? Voir ce qui suit ..

Travaux:

$quote = Mage::getModel('sales/quote')->getCollection()
    ->addFieldToFilter('entity_id', $quoteId)
    ->getFirstItem();
print_r($quote->getData()); // shows right data

Ne marche pas:

$quote = Mage::getModel('sales/quote')->load($quoteId);
print_r($quote->getData()); // empty

Les deux $quotesont de la bonne de la classe, Mage_Sales_Model_Quote.


avec 5 votes positifs, je ne comprends pas comment cette question est marquée comme hors sujet et non reproductible. ce problème peut être reproduit. Chargez simplement un devis sur la page de vue de la commande frontale et sur la page de vue de la commande administrateur, cela fonctionnera différemment. La réponse de webbiedave fonctionne parfaitement dans ce scénario.
Reena Parekh

Réponses:


29

Réglez d'abord le magasin:

$store = Mage::getSingleton('core/store')->load(1);

$quote = Mage::getModel('sales/quote')->setStore($store)->load($quoteId);

2

Non, Mage_Sales_Model_Quotec'est comme tous les autres modèles basés sur db. Vous faites quelque chose de mal. Peut-être coder en dur le $quoteId? Êtes-vous sûr que c'est correct? Les deux codes devraient fonctionner.


Oui, j'ai essayé d'utiliser un entier à la place de $quoteId. Je commence à penser que peut-être $quoteIddoit être une chaîne ou quelque chose. Mon script est en cours d'exécution, je vérifierai donc demain.
musicliftsme

Hmm, cela ne fonctionne pas non plus sur une autre instance, avec l'ID d'entité de devis en chaîne ou en entier. Fabian, as-tu essayé le morceau de code que j'ai publié?
musicliftsme

1
Alors que le modèle est comme les autres modèles de base de données, le modèle de ressource Mage_Sales_Model_Resource_Quote implémente un filtre codé en dur sur l'ID de magasin par _getLoadSelect (). Le moyen de le contourner est d'utiliser Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Maintenant, si seulement je peux lui dire de ne PAS charger un objet client complet et de démarrer une session, je suis un campeur heureux.
Melvyn

3
Pour tous ceux qui sont confrontés au même: c'est SalesRule / Model / Observer.php qui instancie une session sur le chargement des articles de devis. Juste pour arriver au customerGroupId. J'ai résolu ce problème en réécrivant Sales_Model_Quote et en définissant l'ID du groupe de clients dans Mage :: Registry et en enseignant à Mage_SalesRule_Model_Observer-> addProductAttributes à y regarder d'abord.
Melvyn

2
Je viens de voir ça. J'ai voté pour rouvrir. Merci Melvyn.
musicliftsme

0

Vous pourriez utiliser

$quote = Mage::getModel('sales/quote')->loadByIdWithoutStore($quoteId);

Il fonctionne dans Magnto Enterprise ver. 1.14.2.4

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.