vendor/shopware/core/Checkout/Cart/CartCalculator.php line 41

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Cart;
  3. use Shopware\Core\Framework\Log\Package;
  4. use Shopware\Core\Profiling\Profiler;
  5. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  6. /**
  7.  * @internal
  8.  * This class is used to recalculate a modified shopping cart. For this it uses the CartRuleLoader class.
  9.  * The rule loader recalculates the cart and validates the current rules.
  10.  */
  11. #[Package('checkout')]
  12. class CartCalculator
  13. {
  14.     /**
  15.      * @var CartRuleLoader
  16.      */
  17.     private $cartRuleLoader;
  18.     public function __construct(CartRuleLoader $cartRuleLoader)
  19.     {
  20.         $this->cartRuleLoader $cartRuleLoader;
  21.     }
  22.     public function calculate(Cart $cartSalesChannelContext $context): Cart
  23.     {
  24.         return Profiler::trace('cart-calculation', function () use ($cart$context) {
  25.             // validate cart against the context rules
  26.             $cart $this->cartRuleLoader
  27.                 ->loadByCart($context$cart, new CartBehavior($context->getPermissions()))
  28.                 ->getCart();
  29.             $cart->markUnmodified();
  30.             foreach ($cart->getLineItems()->getFlat() as $lineItem) {
  31.                 $lineItem->markUnmodified();
  32.             }
  33.             return $cart;
  34.         });
  35.     }
  36. }