/** * @param OrmResultAfter $event */ public function onResultAfter(OrmResultAfter $event) { $currencies = $this->getCurrencies(); if (!$currencies) { return; } /** @var ResultRecord[] $records */ $records = $event->getRecords(); $productIds = []; foreach ($records as $record) { $productIds[] = $record->getValue('id'); } /** @var ProductPriceRepository $priceRepository */ $priceRepository = $this->doctrineHelper->getEntityRepository('OroB2BPricingBundle:ProductPrice'); $priceList = $this->getPriceList(); $showTierPrices = $this->priceListRequestHandler->getShowTierPrices(); $prices = $priceRepository->findByPriceListIdAndProductIds($priceList->getId(), $productIds, $showTierPrices); $groupedPrices = $this->groupPrices($prices); foreach ($records as $record) { $record->addData(['showTierPrices' => $showTierPrices]); $productId = $record->getValue('id'); $priceContainer = []; foreach ($currencies as $currencyIsoCode) { $columnName = $this->buildColumnName($currencyIsoCode); if (isset($groupedPrices[$productId][$currencyIsoCode])) { $priceContainer[$columnName] = $groupedPrices[$productId][$currencyIsoCode]; } else { $priceContainer[$columnName] = []; } } if ($priceContainer) { $record->addData($priceContainer); } } }
/** * @param ProductGridWidgetRenderEvent $event */ public function onWidgetRender(ProductGridWidgetRenderEvent $event) { $params = $event->getWidgetRouteParameters(); $params[PriceListRequestHandler::PRICE_LIST_KEY] = $this->priceListRequestHandler->getPriceList()->getId(); $params[PriceListRequestHandler::PRICE_LIST_CURRENCY_KEY] = $this->priceListRequestHandler->getPriceListSelectedCurrencies(); $params[PriceListRequestHandler::TIER_PRICES_KEY] = $this->priceListRequestHandler->getShowTierPrices(); $event->setWidgetRouteParameters($params); }