protected function loadFromDb(array $filter)
{
$select = [
"ID", "LID", "MODULE", "PRODUCT_ID", "QUANTITY", "WEIGHT",
"DELAY", "CAN_BUY", "PRICE", "CUSTOM_PRICE", "BASE_PRICE",
'PRODUCT_PRICE_ID', 'PRICE_TYPE_ID', "CURRENCY", 'BARCODE_MULTI',
"RESERVED", "RESERVE_QUANTITY", "NAME", "CATALOG_XML_ID",
"VAT_RATE", "NOTES", "DISCOUNT_PRICE","PRODUCT_PROVIDER_CLASS",
"CALLBACK_FUNC", "ORDER_CALLBACK_FUNC", "PAY_CALLBACK_FUNC",
"CANCEL_CALLBACK_FUNC", "DIMENSIONS", "TYPE", "SET_PARENT_ID",
"DETAIL_PAGE_URL", "FUSER_ID", 'MEASURE_CODE', 'MEASURE_NAME',
'ORDER_ID', 'DATE_INSERT', 'DATE_UPDATE', 'PRODUCT_XML_ID',
'SUBSCRIBE', 'RECOMMENDATION', 'VAT_INCLUDED', 'SORT',
'DATE_REFRESH', 'DISCOUNT_NAME', 'DISCOUNT_VALUE', 'DISCOUNT_COUPON',
'XML_ID', 'MARKING_CODE_GROUP'
];
$itemList = [];
$first = true;
$res = static::getList([
"select" => $select,
"filter" => $filter,
"order" => ['SORT' => 'ASC', 'ID' => 'ASC'],
]);
while ($item = $res->fetch())
{
if ($first)
{
$this->setSiteId($item['LID']);
$this->setFUserId($item['FUSER_ID']);
$first = false;
}
$itemList[$item['ID']] = $item;
}
foreach ($itemList as $id => $item)
{
if ($item['SET_PARENT_ID'] > 0)
{
$itemList[$item['SET_PARENT_ID']]['ITEMS'][$id] = &$itemList[$id];
}
}
$result = [];
foreach ($itemList as $id => $item)
{
if ($item['SET_PARENT_ID'] == 0)
{
$result[$id] = $item;
}
}
$this->loadFromArray($result);
return $this;
}