/** * @param \ActiveCollab\Payments\Gateway\GatewayInterface $gateway * @param OrderInterface $order * @param \ActiveCollab\Payments\Order\Refund\RefundInterface $refund */ public function triggerOrderPartiallyRefunded(GatewayInterface $gateway, OrderInterface $order, RefundInterface $refund) { if ($order->getTotal() <= $refund->getTotal()) { throw new LogicException("Refunded amount needs to be less than order's total amount"); } $this->trigger(self::ON_ORDER_PARTIALLY_REFUNDED, $gateway, $order, $refund); }
/** * Trigger order has been fully refunded. * * @param OrderInterface $order * @param DateTimeValueInterface|null $timestamp */ public function triggerOrderRefunded(OrderInterface $order, DateTimeValueInterface $timestamp = null) { $this->orders[$order->getReference()] = $order; if (empty($timestamp)) { $timestamp = new DateTimeValue(); } $refund = new Refund($order->getReference() . '-X', $order->getReference(), $timestamp, $order->getTotal()); $refund->setGateway($this); $this->refunds[$refund->getReference()] = $refund; $this->getDispatcher()->triggerOrderRefunded($this, $order, $refund); }