/** * @param OrderInterface $cart * @param OrderItemInterface $cartItem * * @return int */ private function getExistingCartItemQuantityFromCart(OrderInterface $cart, OrderItemInterface $cartItem) { foreach ($cart->getItems() as $existingCartItem) { if ($existingCartItem->equals($cartItem)) { return $existingCartItem->getQuantity(); } } return 0; }
/** * @param OrderInterface $order * @param OrderItemInterface $item */ private function resolveOrderItem(OrderInterface $order, OrderItemInterface $item) { foreach ($order->getItems() as $existingItem) { if ($item->equals($existingItem)) { $this->orderItemQuantityModifier->modify($existingItem, $existingItem->getQuantity() + $item->getQuantity()); return; } } $order->addItem($item); }
function it_changes_quantity_of_an_item_if_same_order_item_already_exists(OrderInterface $order, OrderItemInterface $existingItem, OrderItemInterface $newItem, OrderItemQuantityModifierInterface $orderItemQuantityModifier, OrderProcessorInterface $orderProcessor) { $order->getItems()->willReturn([$existingItem]); $newItem->equals($existingItem)->willReturn(true); $existingItem->getQuantity()->willReturn(2); $newItem->getQuantity()->willReturn(3); $order->addItem($existingItem)->shouldNotBeCalled(); $orderItemQuantityModifier->modify($existingItem, 5)->shouldBeCalled(); $orderProcessor->process($order)->shouldBeCalled(); $this->addToOrder($order, $newItem); }
/** * @param OrderInterface $order */ private function clearTaxes(OrderInterface $order) { $order->removeAdjustments(AdjustmentInterface::TAX_ADJUSTMENT); foreach ($order->getItems() as $item) { $item->removeAdjustmentsRecursively(AdjustmentInterface::TAX_ADJUSTMENT); } }