<?php
include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Остатки по складам");
use \Bitrix\Iblock\PropertyEnumerationTable;
use Bitrix\Main\Grid\Options as GridOptions;
use Bitrix\Main\UI\PageNavigation;
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
$list_id = 'skladOstatok';
$grid_options = new GridOptions($list_id);
$sort = $grid_options->GetSorting(['sort' => ['DATE_CREATE' => 'DESC'], 'vars' => ['by' => 'by', 'order' => 'order']]);
$nav_params = $grid_options->GetNavParams();
$nav = new PageNavigation($list_id);
$nav->allowAllRecords(true)
->setPageSize($nav_params['nPageSize'])
->initFromUri();
if ($nav->allRecordsShown()) {
$nav_params = false;
} else {
$nav_params['iNumPage'] = $nav->getCurrentPage();
}
$columns = [];
$columns[] = ['id' => 'ID', 'name' => 'ID', 'sort' => 'ID', 'default' => true];
$columns[] = ['id' => 'NAME', 'name' => 'Название', 'sort' => 'NAME', 'default' => true];
// получаем все склады по базе
$allStore = [];
$dbResult = CCatalogStore::GetList(
['PRODUCT_ID'=>'ASC','ID' => 'ASC'],
['ACTIVE' => 'Y'],
false,
false,
[]
);
while ($store = $dbResult->Fetch()){
$allStore['store'.$store['ID']] = $store['ADDRESS'];
$columns[] = ['id' => 'store'.$store['ID'], 'name' => $store['ADDRESS'], 'sort' => 'STORE'.$store['ID'], 'default' => true];
}
$ui_filter = [
['id' => 'ID', 'name' => 'ID', 'type'=>'text', 'default' => true],
['id' => 'NAME', 'name' => 'Название', 'type'=>'text', 'default' => true],
];
?>
<h2>Фильтр</h2>
<div>
<?$APPLICATION->IncludeComponent('bitrix:main.ui.filter', '', [
'FILTER_ID' => $list_id,
'GRID_ID' => $list_id,
'FILTER' => $ui_filter,
'ENABLE_LIVE_SEARCH' => true,
'ENABLE_LABEL' => true
]);?>
</div>
<div style="clear: both;"></div>
<hr>
<h2>Склад</h2>
<?php
$filterOption = new Bitrix\Main\UI\Filter\Options($list_id);
$filterData = $filterOption->getFilter([]);
if(isset($filterData['NAME']) && !empty($filterData['NAME'])) {
$filterData['NAME'] = "%".$filterData['NAME']."%";
}
if(isset($filterData['FIND']) && !empty($filterData['FIND'])) {
$filterData = [
[
"LOGIC" => "OR",
["ID" => "%".$filterData['FIND']."%", "!=PROPERTY_CONDITION" => "Y"],
["NAME" => "%".$filterData['FIND']."%", "=PROPERTY_CONDITION" => "Y"],
],
];
}
$filterData['IBLOCK_ID'] = 27;
$filterData['ACTIVE'] = "Y";
$res = \CIBlockElement::GetList($sort['sort'], $filterData, false, $nav_params,
["ID", "IBLOCK_ID", "NAME", "CODE", "PROPERTY_MANAGER", "PROPERTY_AIM_OF_REQUEST", "DATE_CREATE",
"PROPERTY_LAST_NAME", "PROPERTY_E_MAIL", "PROPERTY_FIRST_NAME", "PROPERTY_STATUS_OF_REQUEST"]
);
$nav->setRecordCount($res->selectedRowsCount());
while($row = $res->GetNext()) {
$list[] = [
'data' => [
"ID" => $row['ID'],
"NAME" => $row['NAME'],
],
'actions' => [
[
'text' => 'Просмотр',
'default' => true,
'onclick' => 'document.location.href="?op=view&id='.$row['ID'].'"'
], [
'text' => 'Удалить',
'default' => true,
'onclick' => 'if(confirm("Точно?")){document.location.href="?op=delete&id='.$row['ID'].'"}'
]
]
];
}
/*i_custom получение кол. и на каких складах*/
function getSclad($id){
// $items = array("id1","id2","id3"...);
$items = array($id);
$dbResult = CCatalogStore::GetList(
array('PRODUCT_ID'=>'ASC','ID' => 'ASC'),
array('ACTIVE' => 'Y','PRODUCT_ID'=>$items),
false,
false,
// array("*")
array("ID","TITLE","ACTIVE","PRODUCT_AMOUNT","ELEMENT_ID")
);
$arStoreProduct = [];
while($arStoreProduct1=$dbResult->fetch())
{
$arStoreProduct[] = $arStoreProduct1;
}
return $arStoreProduct;
}
/*i_custom получение кол. и на каких складах*/
foreach ($list as $key => &$value) {
foreach ($allStore as $keyStore => $valueStore) {
$value['data'][$keyStore] = $valueStore;
}
$skladCol = getSclad($value['data']['ID']);
foreach ($skladCol as $keySklad => $valueSklad) {
$value['data']['store'.$valueSklad['ID']] = $valueSklad['PRODUCT_AMOUNT'] == 0 ? '' : $valueSklad['PRODUCT_AMOUNT'];
}
}
$APPLICATION->IncludeComponent('bitrix:main.ui.grid', '', [
'GRID_ID' => $list_id,
'COLUMNS' => $columns,
'ROWS' => $list,
'SHOW_ROW_CHECKBOXES' => false,
'NAV_OBJECT' => $nav,
'AJAX_MODE' => 'Y',
'AJAX_ID' => \CAjax::getComponentID('bitrix:main.ui.grid', '.default', ''),
'PAGE_SIZES' => [
['NAME' => '20', 'VALUE' => '20'],
['NAME' => '50', 'VALUE' => '50'],
['NAME' => '100', 'VALUE' => '100']
],
'AJAX_OPTION_JUMP' => 'N',
'SHOW_CHECK_ALL_CHECKBOXES' => false,
'SHOW_ROW_ACTIONS_MENU' => false,
'SHOW_GRID_SETTINGS_MENU' => true,
'SHOW_NAVIGATION_PANEL' => true,
'SHOW_PAGINATION' => true,
'SHOW_SELECTED_COUNTER' => true,
'SHOW_TOTAL_COUNTER' => true,
'SHOW_PAGESIZE' => true,
'SHOW_ACTION_PANEL' => true,
'ALLOW_COLUMNS_SORT' => true,
'ALLOW_COLUMNS_RESIZE' => true,
'ALLOW_HORIZONTAL_SCROLL' => true,
'ALLOW_SORT' => true,
'ALLOW_PIN_HEADER' => true,
'AJAX_OPTION_HISTORY' => 'N'
]);
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> |