Estoy intentando implementar una lógica de descuentos acumulativos en mi tienda PrestaShop, pero me encuentro con un problema. He intentado modificar el método getPriceStatic para añadir un descuento adicional en ciertos productos, pero lo que consigo es que mi descuento sobrescribe a los que ya existen (reglas de catálogo o de carrito) en lugar de sumarse.
Estamos en PrestaShop 1.7.7.3 y con PHP 7.3. La idea es que un producto, además de sus descuentos normales, pueda tener otro descuento por alguna condición especial, y que todos se apliquen. Mi código actual en /override/classes/Product.php es algo así:
class Product extends ProductCore
{
public static function getPriceStatic($id_product, $usetax = true, $id_product_attribute = null, $decimals = 6,
$id_currency = null, $id_country = null, $id_shop = null, $quantity = 1, $with_reduction = true,
$id_customer = null, $id_cart = null, $id_address = null, &$specific_price_output = null, $use_group_reduction = true,
$id_customization = false, $use_customer_price = true, $real_quantity = 0)
{
$price = parent::getPriceStatic(...func_get_args());
// Intento de añadir un 5% de descuento adicional por alguna condición
if (self::hasCustomDiscountCondition($id_product, $id_customer)) { // Función hipotética
El problema es que si ya hay una regla de carrito del 10%, y este código aplica un 5%, el resultado no es un 15% o una acumulación adecuada, sino que a veces se pisa o el cálculo final es erróneo. ¿Alguna idea de cómo manejar esto correctamente para que los descuentos se sumen?