Техническое задание: Исправление логики применения скидок в платежном модуле Opencart 3

В текущей версии платежного модуля (робокасса) существует проблема с распределением скидки при передаче данных в платежную систему. Скидка, примененная к заказу, распределяется пропорционально между всеми позициями, включая стоимость доставки, что является некорректным.

Цель доработки

Изменить логику работы модуля таким образом, чтобы общая скидка по заказу применялась только к товарным позициям в корзине. Стоимость доставки должна оставаться неизменной и не участвовать в расчете скидки.

Требования к изменениям:

  • Скидка (купон, промокод, акция) должна вычитаться только из общей суммы товаров.
  • Стоимость доставки должна передаваться в платежную систему в исходном, полном размере.
  • Итоговая сумма к оплате, отправляемая в платежный шлюз, должна корректно формироваться: (Сумма товаров - Скидка) + Стоимость доставки.
  • Изменения не должны нарушать работу других функций магазина и модуля.

Технические детали

  • Платформа: Opencart 3.x.
  • Объект доработки: Платежный модуль (робокасса).
  • Требуется глубокое понимание структуры Opencart, работы с корзиной (cart) и заказом (order), а также механизмами применения скидок.

В результате предоставьте исправленные файлы модуля с комментариями о внесенных изменениях.