BeforeOrderPaymentSaveObserver.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * OfflinePayments Observer
  8. */
  9. namespace Magento\OfflinePayments\Observer;
  10. use Magento\Framework\Event\ObserverInterface;
  11. use Magento\OfflinePayments\Model\Banktransfer;
  12. use Magento\OfflinePayments\Model\Cashondelivery;
  13. use Magento\OfflinePayments\Model\Checkmo;
  14. class BeforeOrderPaymentSaveObserver implements ObserverInterface
  15. {
  16. /**
  17. * Sets current instructions for bank transfer account
  18. *
  19. * @param \Magento\Framework\Event\Observer $observer
  20. * @return void
  21. */
  22. public function execute(\Magento\Framework\Event\Observer $observer)
  23. {
  24. /** @var \Magento\Sales\Model\Order\Payment $payment */
  25. $payment = $observer->getEvent()->getPayment();
  26. $instructionMethods = [
  27. Banktransfer::PAYMENT_METHOD_BANKTRANSFER_CODE,
  28. Cashondelivery::PAYMENT_METHOD_CASHONDELIVERY_CODE
  29. ];
  30. if (in_array($payment->getMethod(), $instructionMethods)) {
  31. $payment->setAdditionalInformation(
  32. 'instructions',
  33. $payment->getMethodInstance()->getInstructions()
  34. );
  35. } elseif ($payment->getMethod() === Checkmo::PAYMENT_METHOD_CHECKMO_CODE) {
  36. $methodInstance = $payment->getMethodInstance();
  37. if (!empty($methodInstance->getPayableTo())) {
  38. $payment->setAdditionalInformation('payable_to', $methodInstance->getPayableTo());
  39. }
  40. if (!empty($methodInstance->getMailingAddress())) {
  41. $payment->setAdditionalInformation('mailing_address', $methodInstance->getMailingAddress());
  42. }
  43. }
  44. }
  45. }