/** * {@inheritdoc} */ public function cancel(OrderInterface $order) { if (OrderPaymentStates::STATE_PAID === $order->getPaymentState()) { $this->giveBack($order); return; } $this->release($order); }
function it_does_not_mark_order_as_fulfilled_when_it_has_been_shipped_but_not_paid(FactoryInterface $stateMachineFactory, OrderInterface $order, StateMachineInterface $stateMachine) { $order->getShippingState()->willReturn(OrderShippingStates::STATE_SHIPPED); $order->getPaymentState()->willReturn(Argument::not(OrderPaymentStates::STATE_PAID)); $stateMachineFactory->get($order, OrderTransitions::GRAPH)->willReturn($stateMachine); $stateMachine->can(OrderTransitions::TRANSITION_FULFILL)->willReturn(true); $stateMachine->apply(OrderTransitions::TRANSITION_FULFILL)->shouldNotBeCalled(); $this->resolve($order); }
function it_marks_order_as_partially_paid_if_one_of_the_payment_is_processing(FactoryInterface $stateMachineFactory, StateMachineInterface $stateMachine, OrderInterface $order, PaymentInterface $payment1, PaymentInterface $payment2) { $payment1->getAmount()->willReturn(6000); $payment1->getState()->willReturn(PaymentInterface::STATE_PROCESSING); $payment2->getAmount()->willReturn(4000); $payment2->getState()->willReturn(PaymentInterface::STATE_COMPLETED); $payments = new ArrayCollection([$payment1->getWrappedObject(), $payment2->getWrappedObject()]); $order->hasPayments()->willReturn(true); $order->getPayments()->willReturn($payments); $order->getPaymentState()->willReturn(OrderPaymentStates::STATE_AWAITING_PAYMENT); $order->getTotal()->willReturn(10000); $stateMachineFactory->get($order, OrderPaymentTransitions::GRAPH)->willReturn($stateMachine); $stateMachine->can(OrderPaymentTransitions::TRANSITION_PARTIALLY_PAY)->willReturn(true); $stateMachine->apply(OrderPaymentTransitions::TRANSITION_PARTIALLY_PAY)->shouldBeCalled(); $this->resolve($order); }
function it_does_nothing_if_variant_is_not_tracked_and_order_is_paid_during_cancelling(OrderInterface $order, OrderItemInterface $orderItem, ProductVariantInterface $variant) { $order->getPaymentState()->willReturn(OrderPaymentStates::STATE_PAID); $order->getItems()->willReturn([$orderItem]); $orderItem->getVariant()->willReturn($variant); $variant->isTracked()->willReturn(false); $variant->setOnHand(Argument::any())->shouldNotBeCalled(); $this->cancel($order); }