Problema de recolección de productos: datos de precios incorrectos o que no muestran artículos agotados

9

Estoy recuperando una colección de productos basada en la categoría actual. Necesito que esta colección contenga productos dentro y fuera de stock, y también necesito que los datos de precios se muestren correctamente.

Mi tienda está configurada para almacenar precios de productos como impuestos incluidos, y para mostrar precios tanto inclusivos como exclusivos en el frente de la tienda.

El código para obtener la colección es el siguiente:

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

El problema con lo anterior es que al cargar el bloque de precios utilizando el getPriceHtml()método, los precios inclusivos y exclusivos se muestran como el precio inclusivo.

Después de investigar un poco, descubrí que agregar un addFinalPrice()método a mi colección me da el precio esperado: un precio exclusivo correcto e inclusivo correcto.

Sin embargo, si incluyo el addFinalPrice()método, mi colección ya no contiene productos agotados.

¿Hay alguna manera de devolver los datos de precios correctos y hacer que la colección contenga productos vendibles y agotados?

BrynJ
fuente

Respuestas:

3

addFinalPrice()tambien llama applyProductLimitationFilters. Este método aplica varios filtros según la configuración de la colección, como el filtro de la tienda que solo muestra los productos que están visibles en la tienda actual.

Si desea cargar todos los productos, visibles o no, como sin el filtro de precios, puede eliminar el filtro de la tienda de esta manera, antes de llamar addFinalPrice():

$collection->setStoreId(null);
Fabian Schmengler
fuente
@fschmengler: gracias, esta parece una mejor opción.
BrynJ
1

He resuelto este problema ahora, y en realidad es bastante simple y lógico: solo necesitaba ir Configuration -> Catalog -> Inventoryy configurar 'Mostrar productos agotados' en Yes.

Con lo anterior establecido en Yesy el addFinalPrice()método agregado a la colección, ahora obtengo todos mis productos y los datos de precios correctos.

BrynJ
fuente
Esto está bien si desea mostrar productos agotados en todas partes . Si es solo para esta colección, vea mi respuesta a continuación
Fabian Schmengler