- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Sale/Reservation/ReservationService.php
- Класс: Bitrix\Crm\Service\Sale\Reservation\ReservationService
- Вызов: ReservationService::fillCrmReserves
public function fillCrmReserves(array $productRows): array
{
$productRowIds = array_filter(
array_column($productRows, 'ID')
);
$crmReserves = [];
if (!empty($productRowIds))
{
$rows = ProductRowReservationTable::getList([
'select' => [
'ROW_ID',
'STORE_ID',
'DATE_RESERVE_END',
'RESERVE_QUANTITY',
'RESERVE_ID' => 'PRODUCT_RESERVATION_MAP.BASKET_RESERVATION_ID',
],
'filter' => [
'=ROW_ID' => $productRowIds,
],
]);
foreach ($rows as $row)
{
$rowId = (int)$row['ROW_ID'];
$crmReserves[$rowId] = [
'STORE_ID' => isset($row['STORE_ID']) ? (int)$row['STORE_ID'] : null,
'RESERVE_ID' => isset($row['RESERVE_ID']) ? (int)$row['RESERVE_ID'] : null,
'RESERVE_QUANTITY' => isset($row['RESERVE_QUANTITY']) ? (float)$row['RESERVE_QUANTITY'] : null,
'DATE_RESERVE_END' => isset($row['DATE_RESERVE_END']) ? (string)$row['DATE_RESERVE_END'] : null,
];
}
}
$defaulValues = [
'STORE_ID' => null,
'RESERVE_ID' => null,
'DATE_RESERVE_END' => null,
'RESERVE_QUANTITY' => null,
];
foreach ($productRows as &$row)
{
$rowId = $row['ID'];
$reserve = $crmReserves[$rowId] ?? null;
if ($reserve !== null)
{
foreach ($defaulValues as $key => $defaulValue)
{
$row[$key] = $reserve[$key] ?? $defaulValue;
}
}
else
{
$row += $defaulValues;
}
}
unset($row);
return $productRows;
}