...Человеческий поиск в разработке...
- Модуль: 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); }