6 declare(strict_types=1);
35 private $stockRepository;
40 private $searchResultFactory;
45 private $getStockSourceLinks;
50 private $sourceRepository;
55 private $apiSearchCriteriaBuilder;
60 private $sortOrderBuilder;
64 private $getSourcesAssignedToStockOrderedByPriority;
115 $this->searchResultFactory = $searchResultFactory;
116 $this->getStockSourceLinks = $getStockSourceLinks;
118 $this->apiSearchCriteriaBuilder = $apiSearchCriteriaBuilder;
119 $this->sortOrderBuilder = $sortOrderBuilder;
120 $this->getSourcesAssignedToStockOrderedByPriority = $getSourcesAssignedToStockOrderedByPriority;
128 $data = parent::getData();
129 if (
'inventory_stock_form_data_source' === $this->
name) {
132 if (
$data[
'totalRecords'] > 0) {
134 $stockGeneralData =
$data[
'items'][0];
135 $dataForSingle[$stockId] = [
136 'general' => $stockGeneralData,
138 'assigned_sources' => $this->getAssignedSourcesData($stockId),
141 $data = $dataForSingle;
145 }
elseif (
'inventory_stock_listing_data_stock' === $this->
name) {
146 if (
$data[
'totalRecords'] > 0) {
148 $data[
'items'][
$index][
'assigned_sources'] = $this->getAssignedSourcesById(
$stock[
'stock_id']);
164 $searchResult = $this->searchResultFactory->create(
170 return $searchResult;
177 private function getAssignedSourcesData(
int $stockId): array
179 $sortOrder = $this->sortOrderBuilder
181 ->setAscendingDirection()
185 ->addSortOrder($sortOrder)
190 if ($searchResult->getTotalCount() === 0) {
194 $assignedSourcesData = [];
195 foreach ($searchResult->getItems() as
$link) {
196 $source = $this->sourceRepository->get(
$link->getSourceCode());
198 $assignedSourcesData[] = [
205 return $assignedSourcesData;
214 private function getAssignedSourcesById(
int $stockId): array
216 $sources = $this->getSourcesAssignedToStockOrderedByPriority->execute($stockId);
218 foreach ($sources as
$source) {
220 'sourceCode' =>
$source->getSourceCode(),
elseif(isset( $params[ 'redirect_parent']))
__construct( $name, $primaryFieldName, $requestFieldName, ReportingInterface $reporting, SearchSearchCriteriaBuilder $searchCriteriaBuilder, RequestInterface $request, FilterBuilder $filterBuilder, StockRepositoryInterface $stockRepository, SearchResultFactory $searchResultFactory, GetStockSourceLinksInterface $getStockSourceLinks, SourceRepositoryInterface $sourceRepository, SearchCriteriaBuilder $apiSearchCriteriaBuilder, SortOrderBuilder $sortOrderBuilder, GetSourcesAssignedToStockOrderedByPriorityInterface $getSourcesAssignedToStockOrderedByPriority, array $meta=[], array $data=[])