@Swally

Как увеличить % в зависимости от id?

Добрый день всем!
Пожалуйста, помогите в вопросе увеличения цены для определенного id. При запуске php файла, формируется файл XML и выводятся данные по каждому товару.
Нам нужно сделать так, чтобы к каждой категории прибавлялся свой процент и выводилась новая стоимость.

Есть следующие данные:
$price = CPrice::GetBasePrice($arItem['ID']); // прайс вытягивается из базы.
$arBlocks = array(45, 44, 2, 43, 8, 9, 99); // цифры выступают как id категорий.
foreach ($arBlocks as $IBLOCK_ID)

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

$newPrice = $price;

switch ($IBLOCK_ID) {

case 45:
(int)$price = 1.10 * (int)$newPrice;
break;

case 44:
(int)$price = 1.20 * (int)$newPrice;
break;

case 2:
(int)$price = 1.30 * (int)$newPrice;
break;

case 43:
(int)$price = 1.25 * (int)$newPrice;
break;

case 8:
(int)$price = 1.30* (int)$newPrice;
break;

case 9:
(int)$price = 1.20 * (int)$newPrice;
break;

case 99:
(int)$price = 1.10 * (int)$newPrice;
break;
}

write_to_file($file, ' '.$price['PRICE'].'');

Пробовали вариант выше, не выходит. Посоветуйте, что в такой ситуации можно сделать?
Спасибо!
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
foreach ($arBlocks as $IBLOCK_ID) {
  $multiplier = getPriceMultiplierByBlock($IBLOCK_ID);
  $newPrice = $price * $multiplier;
  // сохраняйте
}

function getPriceMultiplierByBlock($blockId) {
  $multipliers = [
    2 => 1.30,
    8 => 1.30,
    9 => 1.20,
    43 => 1.25,
    44 => 1.20,
    45 => 1.10,
    99 => 1.10,
    // ...
  ];
  return isset($multipliers[$blockId])
    ? $multipliers[$blockId]
    : 1; // если множитель не указан - единица
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы