AddVatRequestParamsOrderComment.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Observer\Frontend;
  7. use Magento\Customer\Helper\Address as CustomerAddress;
  8. use Magento\Customer\Model\Address\AbstractAddress;
  9. use Magento\Framework\Event\Observer;
  10. use Magento\Framework\Event\ObserverInterface;
  11. use Magento\Sales\Model\Order;
  12. use Magento\Sales\Model\Order\Address;
  13. /**
  14. * Class AddVatRequestParamsOrderComment
  15. */
  16. class AddVatRequestParamsOrderComment implements ObserverInterface
  17. {
  18. /**
  19. * Customer address
  20. *
  21. * @var CustomerAddress
  22. */
  23. protected $customerAddressHelper;
  24. /**
  25. * @param CustomerAddress $customerAddressHelper
  26. */
  27. public function __construct(CustomerAddress $customerAddressHelper)
  28. {
  29. $this->customerAddressHelper = $customerAddressHelper;
  30. }
  31. /**
  32. * Add VAT validation request date and identifier to order comments
  33. *
  34. * @param Observer $observer
  35. * @return void
  36. */
  37. public function execute(Observer $observer)
  38. {
  39. /** @var $orderInstance Order */
  40. $orderInstance = $observer->getOrder();
  41. /** @var $orderAddress Address */
  42. $orderAddress = $this->_getVatRequiredSalesAddress($orderInstance);
  43. if (!$orderAddress instanceof Address) {
  44. return;
  45. }
  46. $vatRequestId = $orderAddress->getVatRequestId();
  47. $vatRequestDate = $orderAddress->getVatRequestDate();
  48. if (is_string($vatRequestId)
  49. && !empty($vatRequestId)
  50. && is_string($vatRequestDate)
  51. && !empty($vatRequestDate)
  52. ) {
  53. $orderHistoryComment = __('VAT Request Identifier')
  54. . ': ' . $vatRequestId . '<br />'
  55. . __('VAT Request Date') . ': ' . $vatRequestDate;
  56. $orderInstance->addStatusHistoryComment($orderHistoryComment, false);
  57. }
  58. }
  59. /**
  60. * Retrieve sales address (order or quote) on which tax calculation must be based
  61. *
  62. * @param Order $order
  63. * @param \Magento\Store\Model\Store|string|int|null $store
  64. * @return Address|null
  65. */
  66. protected function _getVatRequiredSalesAddress($order, $store = null)
  67. {
  68. $configAddressType = $this->customerAddressHelper->getTaxCalculationAddressType($store);
  69. $requiredAddress = $configAddressType === AbstractAddress::TYPE_SHIPPING
  70. ? $order->getShippingAddress()
  71. : $order->getBillingAddress();
  72. return $requiredAddress;
  73. }
  74. }