• Модуль: 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();
}