No se puede cargar el objeto de presupuesto

24

¿El sales/quoteobjeto funciona de manera diferente que otros objetos al cargar? Ver lo siguiente ...

Trabajos:

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

No funciona:

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

Ambos $quoteson de la clase correcta de, Mage_Sales_Model_Quote.

musicliftsme
fuente
con 5 votos a favor no entiendo cómo esta pregunta está marcada como fuera de tema y no reproducible. Este problema puede ser reproducido. Simplemente cargue una cotización en la página de vista de orden de la interfaz y en la página de vista de orden de administrador, funcionará de manera diferente. La respuesta de webbiedave funciona perfectamente en este escenario.
Reena Parekh

Respuestas:

29

Establecer la tienda primero:

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

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

No, Mage_Sales_Model_Quotees como todos los otros modelos basados ​​en db. Haces algo mal. Tal vez codificar el $quoteId? ¿Estás seguro de que es correcto? Ambos códigos deberían funcionar.

Fabian Blechschmidt
fuente
Sí, he intentado usar un entero en lugar de $quoteId. Estoy empezando a pensar que tal vez $quoteIdsea ​​una cuerda o algo así. Mi script se está ejecutando actualmente, así que lo revisaré mañana.
musicliftsme
Hmm, tampoco funciona en otra instancia, con el ID de la entidad de cotización con cable en cadena o entero. Fabian, ¿has probado el código que publiqué?
musicliftsme
1
Mientras que el modelo es igual que otros modelos de base de datos, el modelo de recursos Mage_Sales_Model_Resource_Quote implementa un filtro codificado en la identificación de la tienda por _getLoadSelect (). La forma de evitarlo es usar Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Ahora, si solo puedo decirle que NO cargue un objeto de cliente completo e inicie una sesión, soy un campista feliz.
Melvyn
3
Para cualquiera que se enfrente a lo mismo: es SalesRule / Model / Observer.php que crea una instancia sobre la carga de artículos de cotización. Solo para llegar al customerGroupId. He resuelto esto reescribiendo Sales_Model_Quote y configurando la identificación del grupo de clientes en Mage :: registro y enseñando Mage_SalesRule_Model_Observer-> addProductAttributes para mirar primero allí.
Melvyn
2
Acabo de ver esto. Voté para volver a abrir. Gracias Melvyn
musicliftsme
0

Podrías usar

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

Funciona en Magnto Enterprise ver. 1.14.2.4

Blaz
fuente