Оказалось, модуль корзины в шапке берет информацию о стоимости доставки не из переменной $method_data, которую модуль доставки возвращает, а из $quote_data
Итоговая функция в файле конкретного способа доставки будет примерно такая (здесь пример для фиксированной стоимости доставки):
if ($status) {
if ($this->cart->getSubTotal() < 3000) {
$quote_data = array();
$quote_data['flat'] = array(
'code' => 'flat.flat',
'title' => $this->language->get('text_description'),
'cost' => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text' => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);
$method_data = array(
'code' => 'flat',
'title' => $this->language->get('text_title'),
'quote' => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error' => false
);
} else {
$quote_data = array();
$quote_data['flat'] = array(
'code' => 'flat.flat',
'title' => $this->language->get('text_description'),
'cost' => '0', //Это как раз сумма доставки
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text' => $this->currency->format('0') //Это значение для суммы в названии способа доставки
);
$method_data = array(
'code' => 'flat',
'title' => $this->language->get('text_title'),
'quote' => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error' => false
);
}
}