@raulonline, entiendo perfectamente tu frustración. Manejar una lógica de límites tan específica directamente en Cart.php en PrestaShop 1.7.1.2 es un camino lleno de complejidades. El método updateQty es fundamental y cualquier imprecisión puede corromper el carrito o generar inconsistencias de precios. Como comenta @lorenapro48, inyectar mensajes de error amigables al usuario desde ese punto es complicado sin alterar mucho el flujo.
Para este tipo de validaciones personalizadas en PrestaShop 1.7, especialmente si queremos interceptar la acción antes de que se complete y mostrar un error, una opción más viable es intervenir en el CartController. Podemos sobreescribir el método postProcess para añadir nuestra validación antes de que se llame al parent::postProcess() que finalmente gestiona el añadido al carrito.
Aquí te dejo una aproximación que podrías implementar en un override de CartController.php (crea el archivo override/controllers/front/CartController.php si no existe):
class CartController extends CartControllerCore
{
public function postProcess()
{
if (Tools::isSubmit('add') || Tools::isSubmit('update')) {
$id_product = (int)Tools::getValue('id_product');
$quantity = (int)Tools::getValue('qty');
$id_manufacturer = Product::getIdManufacturerByIdProduct($id_product);
$max_value_for_manufacturer_id_1 = 100; // Límite para fabricante ID 1
if ($id_manufacturer === 1 && $quantity > 0) {
Este código intercepta la adición en CartController. Si el límite se excede, añade un mensaje de error y, crucialmente, establece $_POST['qty'] = 0; para que la llamada posterior a parent::postProcess() no añada el producto al carrito. Recuerda que después de crear el override, debes borrar la caché de PrestaShop (normalmente en var/cache/prod o var/cache/dev) y regenerar los class_index (a veces borrando el archivo class_index.php en cache/class_index o yendo a Parámetros Avanzados -> Rendimiento y guardando).
Aunque este override es más controlable que tocar Cart.php directamente, para una solución más robusta y sin preocupaciones por futuras actualizaciones o conflictos, siempre es mejor optar por un módulo dedicado. Existe una solución para valor máximo de compra que gestiona esta funcionalidad de forma profesional y con una interfaz de Back Office.