CAllCrmProductRow::GetDiff

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmProductRow
  4. GetDiff
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_product_row.php
  • Класс: \CAllCrmProductRow
  • Вызов: CAllCrmProductRow::GetDiff
static function GetDiff(array $from, array $to)
{
	$map = array();
	foreach($from as $fromRows)
	{
		foreach($fromRows as $row)
		{
			unset($row['ID']);

			$row['QUANTITY'] = isset($row['QUANTITY']) ? (float)$row['QUANTITY'] : 0.0;
			if($row['QUANTITY'] <= 0.0)
			{
				continue;
			}

			$ID = isset($row['PRODUCT_ID']) ? $row['PRODUCT_ID'] : 0;
			$name = isset($row['PRODUCT_NAME']) ? $row['PRODUCT_NAME'] : '';
			$price = isset($row['PRICE']) ? number_format($row['PRICE'], 4) : '0';
			$key = md5($ID > 0 ? "{$ID}_{$price}" : "{$name}_{$price}");

			if(!isset($map[$key]))
			{
				$map[$key] = $row;
			}
			else
			{
				$map[$key]['QUANTITY'] += $row['QUANTITY'];
			}
		}
	}

	foreach($to as $toRows)
	{
		foreach($toRows as $row)
		{
			$quantity = isset($row['QUANTITY']) ? (float)$row['QUANTITY'] : 0.0;
			if($quantity <= 0.0)
			{
				continue;
			}

			$ID = isset($row['PRODUCT_ID']) ? $row['PRODUCT_ID'] : 0;
			$name = isset($row['PRODUCT_NAME']) ? $row['PRODUCT_NAME'] : '';
			$price = isset($row['PRICE']) ? number_format($row['PRICE'], 4) : '0';
			$key = md5($ID > 0 ? "{$ID}_{$price}" : "{$name}_{$price}");

			if(!isset($map[$key]))
			{
				continue;
			}

			if($map[$key]['QUANTITY'] > $quantity)
			{
				$map[$key]['QUANTITY'] -= $quantity;
			}
			else
			{
				unset($map[$key]);
			}
		}
	}
	return array_values($map);
}

Добавить комментарий