O cálculo do preço é um tópico muito complexo no Magento. Aqui está uma visão geral de como isso é feito para um produto simples:
- Magento recebe o preço "base". Este é o preço que você definiu na coluna de preços
- O preço do "grupo" é aplicado. Essa é a parte em que o preço do nível é levado em consideração com base na quantidade solicitada, no site e no grupo de clientes.
- O preço especial é aplicado se um preço especial for definido para a data atual.
- O evento " catalog_product_get_final_price " é disparado. É aqui que o módulo personalizado que mexe com o preço deve entrar. Como um exemplo prático, o módulo CatalogRule captura esse evento e altera o preço com base nas regras de catálogo definidas.
- Os preços das opções selecionadas são levados em consideração
Como esse processo é extremamente demorado, o Magento cria um índice de preços e passará pelos itens acima apenas quando reindexar. O índice de preços utiliza várias tabelas com informações sobre o preço "final" (calculado usando as etapas acima), além de preços mínimos / máximos para configuráveis e pacotes configuráveis. Esta tabela possui uma entrada para cada combinação de site / produto / grupo de clientes; portanto, o sistema precisará selecionar apenas a linha correta com base nos dados do cliente, fazendo com que todo o processo seja executado em tempo decente.
Quanto à parte do frontend, a maneira como o preço é aumentado e diminuído dinamicamente, tudo isso é feito em javascript, que começa com uma matriz json com todos os "níveis de preços" e diminui / aumenta o preço com base nas suas seleções.