Нужно генерировать цену исходя из закупочной цены.
Для этого решил воспользоваться событием "OnProductAdd" и вот что вышло:
раскрыть кодfunction ProductAddPriceHandler($id, $arFields)
{
$purchasePrice = $arFields['PURCHASING_PRICE'];
$id = $arFields['ID'];
if ($purchasePrice <= 100) {
$productPrice = ($purchasePrice / 100 * 100) + $purchasePrice;
} elseif ($purchasePrice >= 101 and $purchasePrice <= 500) {
$productPrice = ($purchasePrice / 100 * 75) + $purchasePrice;
} elseif ($purchasePrice >= 501 and $purchasePrice <= 1000) {
$productPrice = ($purchasePrice / 100 * 60) + $purchasePrice;
} elseif ($purchasePrice >= 1001 and $purchasePrice <= 2000) {
$productPrice = ($purchasePrice / 100 * 50) + $purchasePrice;
} elseif ($purchasePrice >= 2001 and $purchasePrice <= 4000) {
$productPrice = ($purchasePrice / 100 * 40) + $purchasePrice;
} elseif ($purchasePrice >= 4001) {
$productPrice = ($purchasePrice / 100 * 30) + $purchasePrice;
}
$arProductPriceFields = array(
'PRODUCT_ID' => $id,
'CATALOG_GROUP_ID' => 1,
'PRICE' => 500,
'CURRENCY' => 'RUB',
);
$result = \Bitrix\Catalog\Model\Price::add($arProductPriceFields);
}
Событие срабатывает, но цена не добавляется.
Нагуглил, оказывается есть
схожий баг от 2012 года. Решение оттуда не попробовал, потому что не понял, как его реализовать.
Вопрос: что не так? И актуален ли баг, кто сталкивался?