✅ You must modify a core method’s logic, add a new property/method to a core class, or change core controller flow.
/classes/Cart.php
public function getPackageShippingCost($id_carrier = null, $use_tax = true, Country $default_country = null, $product_list = null, $id_zone = null) // Get original cost $originalCost = parent::getPackageShippingCost($id_carrier, $use_tax, $default_country, $product_list, $id_zone); // Apply custom logic (e.g., free shipping over $100) if ($this->getOrderTotal(true, Cart::ONLY_PRODUCTS) > 100) return 0; return $originalCost; override prestashop