El cálculo de precios es un tema muy complejo en Magento. Aquí hay una vista panorámica de cómo se hace esto para un producto simple:
- Magento obtiene el precio "base". Este es el precio que ha definido en la columna de precios.
- Se aplica el precio "grupal". Esta es la parte en la que se tiene en cuenta el precio del nivel según la cantidad pedida, el sitio web y el grupo de clientes.
- El precio especial se aplica si se define un precio especial para la fecha actual.
- Se activa el evento " catalog_product_get_final_price ". Aquí es donde debe entrar el módulo personalizado que juega con el precio. Como ejemplo de trabajo, el módulo CatalogRule detecta este evento y cambia el precio según las reglas definidas del catálogo
- Se tienen en cuenta los precios de las opciones seleccionadas.
Dado que este proceso consume mucho tiempo, Magento crea un índice de precios y solo revisará lo anterior cuando reindexe. El índice de precios utiliza un montón de tablas que tienen información sobre el precio "final" (calculado usando los pasos anteriores) junto con cosas como precios mínimos / máximos para configuraciones y paquetes. Esta tabla tiene una entrada para cada combinación de sitio web / producto / grupo de clientes, por lo que el sistema solo tendrá que seleccionar la fila adecuada en función de los datos del cliente, haciendo que todo el proceso se ejecute en un tiempo decente.
En cuanto a la parte frontend, la forma en que el precio aumenta y disminuye dinámicamente, todo esto se hace en javascript que comienza con una matriz json con todos los "niveles de precios" y disminuirá / aumentará el precio según sus selecciones.