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.


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);

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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.