- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/orderdiscountbase.php
- Класс: BitrixSaleOrderDiscountBase
- Вызов: OrderDiscountBase::updateResultBlock
static function updateResultBlock($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::getResultIterator(array(
'select' => array('ID'),
'filter' => array('=ORDER_ID' => $order),
'order' => array('ID' => 'ASC')
));
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'];
unset($row['RULE_ID']);
if ($id === null)
{
$result->addError(new MainError(
Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_RESULT_ROW_ID_IS_ABSENT'),
self::ERROR_ID
));
continue;
}
if (!isset($deleteList[$id]))
{
$result->addError(new MainError(
Loc::getMessage('SALE_ORDER_DISCOUNT_ERR_BAD_RESULT_ROW_ID'),
self::ERROR_ID
));
continue;
}
unset($deleteList[$id]);
$resultInternal = static::updateResultRow($id, $row);
if (!$resultInternal->isSuccess())
$result->addErrors($resultInternal->getErrors());
}
unset($resultInternal, $row);
}
if (!$result->isSuccess())
return $result;
if (!empty($deleteList))
{
self::deleteRowsByIndex(static::getResultTableNameInternal(), 'ID', $deleteList);
self::deleteRowsByIndex(static::getResultDescriptionTableNameInternal(), 'RULE_ID', $deleteList);
}
return $result;
}