Duas opções personalizadas combinadas: o preço da camada não funciona

11

Estou configurando produtos e preços de camada no Magento, mas notei que, no Produto Simples com Opções Personalizadas (exemplo: camiseta azul, camiseta vermelha), o Preço da Camada não funcionará se combiná-los para atingir a quantidade.

Os preços da camada parecem funcionar apenas quando a quantidade é alcançada a partir de uma variação do produto, mas não uma combinação de duas.

Eu li várias respostas nos Stack Overflow e nos fóruns Magento, e eles recomendam a criação de produtos configuráveis. No entanto, isso pode ser bem difícil se uma loja tiver muitos produtos ou muitas variações.

Você conhece alguma solução alternativa para aplicar o preço de camada - com uma combinação de variações?

Amendoim
fonte
você pode saber qual é o tipo de camiseta azul e vermelha? Eles são produtos únicos sem vínculo entre eles?
Christophe Ferreboeuf
Eles seriam opções personalizadas ("azul", "vermelho") de um produto simples "camiseta". No Magento atualmente, se o preço de camada fosse, digamos, "10 ou mais, você obtém um desconto", funcionaria ao comprar 10 vermelhos ou 10 azuis, mas não quando eu compraria 5 + 5 ...
Peanuts
Como o magento pode saber que esses dois produtos estão vinculados?
Christophe Ferreboeuf
Bem, no meu exemplo, há apenas 1 produto (Produto Simples), que possui duas opções personalizadas (variações): azul e vermelho. O Magento não calcula um preço básico quando você adiciona duas opções do mesmo Produto Simples (estamos falando de Produtos Simples aqui, não de Produtos Configuráveis). Para produtos configuráveis, há uma extensão que permite a combinação de preço de camada ( magentocommerce.com/magento-connect/… ), mas, novamente, esse não é o meu caso, temos muitas opções para criar um produto por opção).
Amendoins
Você precisará de um módulo personalizado para conseguir isso. Ou, se eu fosse você, consideraria o uso de produtos configuráveis ​​com o módulo de preço de camada que você mencionou.
paj

Respostas:

11

O problema aqui é que o Magento trata produtos com diferentes opções personalizadas como itens de linha diferentes no carrinho. Portanto, a quantidade das duas variantes de opções personalizadas nunca é suficiente para qualificar o item de cotação para um nível específico de preços em camadas.

Agora, fazer esse trabalho envolveria um trabalho personalizado. Eu posso lhe dar dicas de onde você pode procurar para fazê-lo funcionar no código.

Verificação de saída Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

Nesse método, você precisará percorrer todos os itens da cotação e vincular a quantidade em camadas aplicável a cada um dos itens da cotação. Digamos que você tenha duas variantes A e B com as quantidades 1 e 3. Você percorrerá os itens da cotação e fará algo como:

$quoteItemA->setTieredQty(1+3);
$quoteItemB->setTieredQty(1+3); //ofcourse 1 and 3 are dynamic here

Então em Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

ao invés de usar: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

$finalPrice = $product->getFinalPrice($quoteItem->getTieredQty());

Isso envolve trabalho personalizado, mas a abordagem que estou listando deve funcionar com alguns ajustes dinâmicos à medida que você trabalha com ela.

Paras Sood
fonte
4

Posso confirmar, isso funciona

        /* hard coded - start */ 
        $cart = Mage::getModel('checkout/cart')->getQuote();
        $total_qty = 0;
        foreach ($cart->getAllItems() as $item2) {
          if ($item2->getProductId() == $quoteItem->getProductId()) $total_qty+= $item2->getQty();    
        }
        $finalPrice = $product->getFinalPrice($total_qty);
        // $finalPrice = $product->getFinalPrice($quoteItem->getQty());
        /* hard coded - end */ 
user7286399
fonte