Problema na coleta de produtos - dados incorretos de preço ou itens que não estão em estoque

9

Estou recuperando uma coleção de produtos com base na categoria atual. Preciso que essa coleção contenha produtos dentro e fora de estoque e também os dados de preços para serem exibidos corretamente.

Minha loja está configurada para armazenar preços de produtos como impostos, e mostrar preços como inclusivos e exclusivos na frente da loja.

O código para obter a coleção é o seguinte:

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

O problema com o exposto acima é que, ao carregar o bloco de preços usando o getPriceHtml()método, os preços inclusivos e exclusivos são exibidos como o preço inclusivo.

Após algumas pesquisas, descobri que adicionar um addFinalPrice()método à minha coleção me dá o preço esperado - um preço exclusivo e inclusivo correto correto.

No entanto, se eu incluir o addFinalPrice()método, minha coleção não conterá mais produtos fora de estoque.

Existe uma maneira de retornar os dados de preços corretos e fazer com que a coleção contenha produtos vendáveis ​​e fora de estoque?

BrynJ
fonte

Respostas:

3

addFinalPrice()também chama applyProductLimitationFilters. Esse método aplica vários filtros de acordo com a configuração da coleção, como o filtro da loja, que mostra apenas os produtos visíveis na loja atual.

Se você deseja carregar todos os produtos, visíveis ou não, como sem o filtro de preços, remova o filtro da loja assim, antes de chamar addFinalPrice():

$collection->setStoreId(null);
Fabian Schmengler
fonte
@ fschmengler - obrigado, esta parece ser uma opção melhor.
perfil completo de BrynJ
1

Resolvi esse problema agora, e é realmente bastante simples e lógico - eu só precisava acessar Configuration -> Catalog -> Inventorye definir 'Exibir produtos em falta ' Yes.

Com o conjunto acima definido Yese o addFinalPrice()método adicionado à coleção, agora recebo todos os meus produtos e os dados de preços corretos.

BrynJ
fonte
Isso é bom se você quiser exibir produtos esgotados em qualquer lugar . Se for apenas para esta coleção, veja minha resposta abaixo #
Fabian Schmengler