Valores do carrinho de compras

Escrito por Mario SAM

Obter informações referentes ao carrinho de compras pode ser muito interessante pra quem esta customizando páginas do frontend, ou até mesmo criando módulos para Magento.

Com estes valores do carrinho de compras podemos inventar muitas funcionalidades interessantes para o cliente. Pretendo mostrar alguns exemplos disso no futuro, em outros post’s.

A maioria dos campos citados neste post também podem ser recuperados nas variáveis de sessão do checkout. Para entender um pouco mais sobre sessão no Magento leia o post Controle de Sessão.

Um pouco de teoria

Dentro do módulo de checkout, existem duas classes que compartilham informações: Session e Cart.

Essas classes fazem referência aos mesmos atributos através do objeto Quote. Então se você acessar a sessão para recuperar o valor do carrinho de compras assim:

getQuote()->getGrandTotal(); ?>

Você consegue obter exatamente o mesmo resultado através do acesso ao carrinho:

getQuote()->getGrandTotal(); ?>

Algumas outras variáveis você consegue acessar diretamente, sem a necessidade de usar o objeto de referência Quote:

getItemsCount(); ?>

Então o código acima continuaria funcionando se a gente adicionar ->getQuote() antes do campo itemsCount.

Agora na prática

Na prática vamos ver como recuperar alguns valores importantes do carrinho de compras.

Vamos supor que você adicionou 2 (dois) produtos ao carrinho de compras, e 5 (cinco) itens de cada produto na quantidade. Então para recuperar essa informação podemos usar:

getQuote()->getItemsCount(); //resultado=2 ?>
getQuote()->getItemsQty(); //resultado=10 ?>

Agora vamos supor que estes 10 (dez) itens somem U$ 100 dólares, o equivalente a R$ 230 reais. E seu sistema utiliza o dólar como moeda base e o real como moeda padrão. Então para ler esses valores (produto x quantidade) podemos usar:

getQuote()->getSubtotal(); //resultado=230.00 ?>
getQuote()->getBaseSubtotal(); //resultado=100.00 ?>

Ainda usando os valores acima, vamos supor que você tenha uma regra promocional que aplica 10% de desconto em todo site automaticamente. Como obter estes mesmos valores já com o desconto aplicado:

getQuote()->getSubtotalWithDiscount(); //resultado=207.00 ?>
getQuote()->getBaseSubtotalWithDiscount(); //resultado=90.00 ?>

Mas como você deve ter observado, estes atributos retornam apenas o valor calculado sobre os produtos e suas quantidades (no máximo com desconto aplicado). Estes campos não incluem outras tarifas incluídas no carrinho de compras, como o cálculo de frete por exemplo.

Para recuperar o valor final à ser cobrado no fechamento do pedido, devemos usar:

getQuote()->getGrandTotal(); ?>

Isso já inclui frete, descontos, taxas, impostos, etc.

Outros valores

O carrinho de compras ainda conta com outras informações importantes, pois faz parte do processo de checkout. Caso queira continuar fazendo acesso a estas informações, abra o arquivo Cart.php que fica em:

app > code > core > Mage > Checkout > Helper > Cart.php

Você vai encontrar alguns métodos que podem ser utilizados sem a necessidade de fazer referência ao Quote. Para ver uma lista de métodos disponibilizados pelo objeto Quote, acesse:

app > code > core > Mage > Sales > Model > Quote.php

Logo no início do código você encontra um bloco de comentário com diversas funções disponíveis através do Quote.

Qualquer dúvida use o fórum da Escola Magento.

Sucesso!

O Autor

Mario SAM

Desenvolvedor Magento com certificação M1 Developer e M1 FrontEnd Developer. Graduado em Web Design e Programação, pós-graduado em Gestão de Projetos e TI. Não sou matemático mas estou aqui para somar.