На событии применение скидок, вешаем функцию, которая отбирает максимальную скиду. Если максимальных скидок на товар более 1, то выбираем ту, что выше по ID
AddEventHandler("catalog", "OnGetDiscountResult", "getDiscountResultEvent");
static public function getDiscountResultEvent(&$arResult): array
{
if ($arResult) {
$values = array_column($arResult, 'VALUE');
$maxValue = max($values);
$maxValueElements = [];
foreach ($arResult as $key => $item) {
if ($item['VALUE'] == $maxValue) {
$maxValueElements[$key] = $item;
}
}
if (count($maxValueElements) > 1) {
$maxValueElementIds = array_keys($maxValueElements);
$lastMaxValueElementId = end($maxValueElementIds);
$arResult = [$lastMaxValueElementId => $maxValueElements[$lastMaxValueElementId]];
}
else{
$arResult = $maxValueElements;
}
}
return $arResult;
}