public function testDefaultIfNotFound() { $accountUser = new AccountUser(); $accountUser->setAccount($this->getAccount('account.level_1')); $this->websiteManager->expects($this->once())->method('getCurrentWebsite')->willReturn(null); $this->assertTrue($this->handler->getPriceList($accountUser)->isDefault()); }
/** * {@inheritDoc} */ public function getPriceList() { $priceList = $this->priceListTreeHandler->getPriceList($this->getAccountUser()); if (!$priceList) { throw new \RuntimeException('PriceList not found'); } return $priceList; }
/** * @param QueryBuilder $queryBuilder * @param string|null $currency */ public function applyPriceListLimitations(QueryBuilder $queryBuilder, $currency = null) { $token = $this->tokenStorage->getToken(); /** @var AccountUser $user */ if ($token && ($user = $token->getUser()) instanceof AccountUser) { $priceList = $this->priceListTreeHandler->getPriceList($user); if ($priceList) { $rootAliases = $queryBuilder->getRootAliases(); $rootAlias = $rootAliases[0]; // Select only products that are in specific price list $limitationQb = $queryBuilder->getEntityManager()->createQueryBuilder(); $limitationQb->from('OroB2BPricingBundle:ProductPrice', '_productPrice')->select('IDENTITY(_productPrice.product)')->where($limitationQb->expr()->eq('_productPrice.priceList', ':_priceList'))->andWhere($limitationQb->expr()->eq('_productPrice.product', $rootAlias)); if ($currency) { $limitationQb->andWhere($queryBuilder->expr()->eq('_productPrice.currency', ':currency')); $queryBuilder->setParameter('currency', strtoupper($currency)); } $queryBuilder->andWhere($queryBuilder->expr()->exists($limitationQb))->setParameter('_priceList', $priceList); } } }