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);
         }
     }
 }