- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/invoice/internals/invoicediscount.php
- Класс: Bitrix\Crm\Invoice\Internals\InvoiceDiscountDataTable
- Вызов: InvoiceDiscountDataTable::saveBasketItemData
static function saveBasketItemData($order, $basket, $data, $clear = false)
{
$order = (int)$order;
$basket = (int)$basket;
if ($order < 0 || $basket <= 0 || empty($data) || !is_array($data))
return false;
$clear = ($clear === true);
$id = 0;
$fields = array(
'ENTITY_DATA' => $data
);
$dataIterator = self::getList(array(
'select' => array('ID', 'ENTITY_DATA'),
'filter' => array('=ORDER_ID' => $order, '=ENTITY_TYPE' => self::ENTITY_TYPE_BASKET_ITEM, '=ENTITY_ID' => $basket)
));
if ($oldData = $dataIterator->fetch())
{
if (!$clear && !empty($oldData['ENTITY_DATA']))
$fields['ENTITY_DATA'] = array_merge($oldData['ENTITY_DATA'], $fields['ENTITY_DATA']);
$id = (int)$oldData['ID'];
}
unset($oldData, $dataIterator);
if ($id > 0)
{
$result = self::update($id, $fields);
}
else
{
$fields['ORDER_ID'] = $order;
$fields['ENTITY_TYPE'] = self::ENTITY_TYPE_BASKET_ITEM;
$fields['ENTITY_ID'] = $basket;
$fields['ENTITY_VALUE'] = $basket;
$result = self::add($fields);
if ($result->isSuccess())
$id = (int)$result->getId();
}
unset($fields, $id);
return $result->isSuccess();
}