Skip to content

Commit

Permalink
handle shop groups
Browse files Browse the repository at this point in the history
  • Loading branch information
FabienPapet committed Aug 8, 2022
1 parent eb2bcba commit 993dc92
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ final class UpdateCombinationStockHandler implements UpdateCombinationStockHandl
* @var MovementReasonRepository
*/
private $movementReasonRepository;

/**
* @var StockAvailableRepository
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
use PrestaShop\PrestaShop\Core\Exception\CoreException;
use PrestaShop\PrestaShop\Core\Grid\Query\ProductCombinationQueryBuilder;
use PrestaShop\PrestaShop\Core\Repository\AbstractObjectModelRepository;
use PrestaShop\PrestaShop\Core\Repository\ShopConstraintTrait;
use PrestaShop\PrestaShop\Core\Search\Filters\ProductCombinationFilters;
use PrestaShopException;
use Product;
Expand All @@ -53,6 +54,8 @@
*/
class CombinationRepository extends AbstractObjectModelRepository
{
use ShopConstraintTrait;

/**
* @var Connection
*/
Expand Down Expand Up @@ -379,13 +382,6 @@ public function updateCombinationStock(ProductId $productId, OutOfStockType $out
->setParameter('productId', $productId->getValue())
;

if ($shopConstraint !== null && $shopConstraint->getShopId() !== null) {
$qb
->andWhere('id_shop = :shop')
->setParameter('shop', $shopConstraint->getShopId()->getValue())
;
}

$qb->execute();
$this->applyShopConstraint($qb, $shopConstraint)->execute();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ final class UpdateProductStockInformationHandler implements UpdateProductStockIn
* @var MovementReasonRepository
*/
private $movementReasonRepository;

/**
* @var CombinationRepository
*/
Expand All @@ -58,6 +59,7 @@ final class UpdateProductStockInformationHandler implements UpdateProductStockIn
/**
* @param ProductStockUpdater $productStockUpdater
* @param MovementReasonRepository $movementReasonRepository
* @param CombinationRepository $combinationRepository
*/
public function __construct(
ProductStockUpdater $productStockUpdater,
Expand Down
60 changes: 60 additions & 0 deletions src/Core/Repository/ShopConstraintTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/

declare(strict_types=1);

namespace PrestaShop\PrestaShop\Core\Repository;

use Doctrine\DBAL\Query\QueryBuilder;
use PrestaShop\PrestaShop\Core\Domain\Shop\ValueObject\ShopConstraint;

trait ShopConstraintTrait
{
protected function applyShopConstraint(
QueryBuilder $queryBuilder,
?ShopConstraint $shopConstraint = null
): QueryBuilder {
if (null === $shopConstraint) {
return $queryBuilder;
}

if ($shopConstraint->getShopId() !== null) {
$queryBuilder
->andWhere('id_shop' . ' = :shop')
->setParameter('shop', $shopConstraint->getShopId()->getValue())
;
}

if ($shopConstraint->getShopGroupId() !== null) {
$queryBuilder
->andWhere('id_shop_group' . ' = :shop_group')
->setParameter('shop_group', $shopConstraint->getShopGroupId()->getValue())
;
}

return $queryBuilder;
}
}

0 comments on commit 993dc92

Please sign in to comment.