- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/orderdiscountbase.php
- Класс: BitrixSaleOrderDiscountBase
- Вызов: OrderDiscountBase::updateRoundBlock
static function updateRoundBlock($order, array $block)
{
$result = new Result();
$order = (int)$order;
if ($order <= 0)
{
$result->addError(new MainError(
Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_BAD_ORDER_ID'),
self::ERROR_ID
));
return $result;
}
$deleteList = array();
$iterator = static::getRoundResultIterator([
'select' => ['ID'],
'filter' => ['=ORDER_ID' => $order]
]);
while ($row = $iterator->fetch())
{
$row['ID'] = (int)$row['ID'];
$deleteList[$row['ID']] = $row['ID'];
}
unset($row, $iterator);
if (!empty($block))
{
foreach ($block as $row)
{
$id = null;
if (isset($row['RULE_ID']) && $row['RULE_ID'] > 0)
$id = $row['RULE_ID'];
if ($id === null)
{
$result->addError(new MainError(
Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_ROUND_ROW_ID_IS_ABSENT'),
self::ERROR_ID
));
continue;
}
if (!isset($deleteList[$id]))
{
$result->addError(new MainError(
Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_BAD_ROUND_ROW_ID'),
self::ERROR_ID
));
continue;
}
unset($deleteList[$id]);
unset($row['RULE_ID']);
$resultInternal = static::updateRoundResultInternal($id, $row);
if (!$resultInternal->isSuccess())
$result->addErrors($resultInternal->getErrors());
}
unset($resultInternal, $row);
}
if (!$result->isSuccess())
return $result;
if (!empty($deleteList))
self::deleteRowsByIndex(static::getRoundTableNameInternal(), 'ID', $deleteList);
return $result;
}