Impossibile caricare l'oggetto preventivo


24

L' sales/quoteoggetto funziona in modo diverso rispetto ad altri oggetti durante il caricamento? Vedi quanto segue ..

Lavori:

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

Non funziona:

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

Entrambi $quotesono della corretta della classe Mage_Sales_Model_Quote.


con 5 voti positivi non capisco come questa domanda sia contrassegnata come fuori tema e non riproducibile. questo problema può essere riprodotto. Basta caricare un preventivo nella pagina di visualizzazione dell'ordine frontend e nella pagina di visualizzazione dell'ordine di amministrazione, funzionerà in modo diverso. La risposta di webbiedave funziona perfettamente in questo scenario.
Reena Parekh,

Risposte:


29

Imposta prima il negozio:

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

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

2

No, Mage_Sales_Model_Quoteè come tutti gli altri modelli basati su db. Fai qualcosa di sbagliato. Forse hardcode il $quoteId? Sei sicuro che sia corretto? Entrambi i codici dovrebbero funzionare.


Sì, ho provato a usare un numero intero al posto di $quoteId. Sto iniziando a pensare che forse $quoteIddeve essere una stringa o qualcosa del genere. La mia sceneggiatura è attualmente in esecuzione, quindi controllerò domani.
musicliftsme,

Hmm, non funziona neanche su un'altra istanza, con l'ID entità di citazione con filo rigido in stringa o intero. Fabian, hai provato il pezzo di codice che ho pubblicato?
musicliftsme,

1
Mentre il modello è proprio come gli altri modelli db, il modello risorsa Mage_Sales_Model_Resource_Quote implementa un filtro codificato sull'ID negozio di _getLoadSelect (). Il modo per aggirare è da usare Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Ora, se solo posso dirgli di NON caricare un oggetto cliente completo e iniziare una sessione, sono un campeggiatore felice.
Melvyn,

3
Per chiunque si trovi di fronte lo stesso: è la SalesRule / Model / Observer.php che crea un'istanza di una sessione sul caricamento degli articoli di preventivo. Solo per arrivare al customerGroupId. Ho risolto questo problema riscrivendo Sales_Model_Quote e impostando l'id del gruppo di clienti in Mage :: register e insegnando a Mage_SalesRule_Model_Observer-> addProductAttributes a dare un'occhiata prima lì.
Melvyn,

2
Ho appena visto questo. Ho votato per riaprire. Grazie Melvyn.
musicliftsme,

0

Puoi usare

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

Funziona in Magnto Enterprise ver. 1.14.2.4

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.