123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Payment\Observer;
- use Magento\Framework\Event\ObserverInterface;
- /**
- * Verify order payment observer
- */
- class SalesOrderBeforeSaveObserver implements ObserverInterface
- {
- /**
- * Set forced canCreditmemo flag
- *
- * @param \Magento\Framework\Event\Observer $observer
- * @return $this
- * @throws \Magento\Framework\Exception\LocalizedException in case order has no payment specified.
- */
- public function execute(\Magento\Framework\Event\Observer $observer)
- {
- /** @var \Magento\Sales\Model\Order $order */
- $order = $observer->getEvent()->getOrder();
- if (!$order->getPayment()) {
- throw new \Magento\Framework\Exception\LocalizedException(
- __('Please provide payment for the order.')
- );
- }
- if ($order->getPayment()->getMethodInstance()->getCode() != 'free') {
- return $this;
- }
- if ($order->canUnhold()) {
- return $this;
- }
- if ($order->isCanceled() || $order->getState() == \Magento\Sales\Model\Order::STATE_CLOSED) {
- return $this;
- }
- /**
- * Allow forced creditmemo just in case if it wasn't defined before
- */
- if (!$order->hasForcedCanCreditmemo()) {
- $order->setForcedCanCreditmemo(true);
- }
- return $this;
- }
- }
|