GiftwrapExtensionLoader.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. /**
  3. * @copyright Vertex. All rights reserved. https://www.vertexinc.com/
  4. * @author Mediotype https://www.mediotype.com/
  5. */
  6. namespace Vertex\Tax\Observer;
  7. use Magento\Sales\Api\Data\CreditmemoExtensionFactory;
  8. use Magento\Sales\Api\Data\CreditmemoExtensionInterface;
  9. use Magento\Sales\Api\Data\InvoiceExtensionFactory;
  10. use Magento\Sales\Api\Data\InvoiceExtensionInterface;
  11. use Magento\Sales\Api\Data\OrderExtensionFactory;
  12. use Magento\Sales\Api\Data\OrderExtensionInterface;
  13. use Magento\Sales\Api\Data\OrderItemExtensionFactory;
  14. use Magento\Sales\Api\Data\OrderItemExtensionInterface;
  15. use Magento\Sales\Model\Order;
  16. use Magento\Sales\Model\Order\Creditmemo;
  17. use Magento\Sales\Model\Order\Invoice;
  18. use Magento\Sales\Model\Order\Item;
  19. use Vertex\Tax\Model\ModuleManager;
  20. /**
  21. * Loads Giftwrap extension attributes on recently-saved objects
  22. */
  23. class GiftwrapExtensionLoader
  24. {
  25. /** @var CreditmemoExtensionFactory */
  26. private $creditmemoExtensionFactory;
  27. /** @var InvoiceExtensionFactory */
  28. private $invoiceExtensionFactory;
  29. /** @var OrderItemExtensionFactory */
  30. private $itemExtensionFactory;
  31. /** @var ModuleManager */
  32. private $moduleManager;
  33. /** @var OrderExtensionFactory */
  34. private $orderExtensionFactory;
  35. /**
  36. * @param OrderExtensionFactory $orderExtensionFactory
  37. * @param InvoiceExtensionFactory $invoiceExtensionFactory
  38. * @param CreditmemoExtensionFactory $creditmemoExtensionFactory
  39. * @param OrderItemExtensionFactory $itemExtensionFactory
  40. * @param ModuleManager $moduleManager
  41. */
  42. public function __construct(
  43. OrderExtensionFactory $orderExtensionFactory,
  44. InvoiceExtensionFactory $invoiceExtensionFactory,
  45. CreditmemoExtensionFactory $creditmemoExtensionFactory,
  46. OrderItemExtensionFactory $itemExtensionFactory,
  47. ModuleManager $moduleManager
  48. ) {
  49. $this->orderExtensionFactory = $orderExtensionFactory;
  50. $this->invoiceExtensionFactory = $invoiceExtensionFactory;
  51. $this->creditmemoExtensionFactory = $creditmemoExtensionFactory;
  52. $this->itemExtensionFactory = $itemExtensionFactory;
  53. $this->moduleManager = $moduleManager;
  54. }
  55. /**
  56. * Load the Giftwrapping module Extension Attributes onto a Creditmemo
  57. *
  58. * @param Creditmemo $creditmemo
  59. * @return void
  60. */
  61. public function loadOnCreditmemo(Creditmemo $creditmemo)
  62. {
  63. $extensionAttributes = $creditmemo->getExtensionAttributes();
  64. if ($extensionAttributes !== null || !$this->moduleManager->isEnabled('Magento_GiftWrapping')) {
  65. return;
  66. }
  67. /** @var CreditmemoExtensionInterface $extensionAttributes */
  68. $extensionAttributes = $this->creditmemoExtensionFactory->create();
  69. $extensionAttributes->setGwBasePrice($creditmemo->getData('gw_base_price'));
  70. $extensionAttributes->setGwCardBasePrice($creditmemo->getData('gw_card_base_price'));
  71. $extensionAttributes->setGwItemsBasePrice($creditmemo->getData('gw_items_base_price'));
  72. $creditmemo->setExtensionAttributes($extensionAttributes);
  73. }
  74. /**
  75. * Load the Giftwrapping module Extension Attributes onto an Invoice
  76. *
  77. * @param Invoice $invoice
  78. * @return void
  79. */
  80. public function loadOnInvoice(Invoice $invoice)
  81. {
  82. $extensionAttributes = $invoice->getExtensionAttributes();
  83. if ($extensionAttributes !== null || !$this->moduleManager->isEnabled('Magento_GiftWrapping')) {
  84. return;
  85. }
  86. /** @var InvoiceExtensionInterface $extensionAttributes */
  87. $extensionAttributes = $this->invoiceExtensionFactory->create();
  88. $extensionAttributes->setGwBasePrice($invoice->getData('gw_base_price'));
  89. $extensionAttributes->setGwCardBasePrice($invoice->getData('gw_card_base_price'));
  90. $extensionAttributes->setGwItemsBasePrice($invoice->getData('gw_items_base_price'));
  91. $invoice->setExtensionAttributes($extensionAttributes);
  92. }
  93. /**
  94. * Load the Giftwrapping module Extension Attributes onto an Order
  95. *
  96. * @param Order $order
  97. * @return Order
  98. */
  99. public function loadOnOrder(Order $order)
  100. {
  101. if (!$this->moduleManager->isEnabled('Magento_GiftWrapping')) {
  102. return $order;
  103. }
  104. foreach ($order->getItems() as $item) {
  105. $this->loadOnOrderItem($item);
  106. }
  107. /** @var OrderExtensionInterface $extensionAttributes */
  108. $extensionAttributes = $order->getExtensionAttributes() ?: $this->orderExtensionFactory->create();
  109. $extensionAttributes->setGwBasePrice($order->getData('gw_base_price'));
  110. $extensionAttributes->setGwCardBasePrice($order->getData('gw_card_base_price'));
  111. $extensionAttributes->setGwItemsBasePrice($order->getData('gw_items_base_price'));
  112. $order->setExtensionAttributes($extensionAttributes);
  113. return $order;
  114. }
  115. /**
  116. * Load the Giftwrapping module Extension Attributes onto an Order Item
  117. *
  118. * @param Item $item
  119. * @return void
  120. */
  121. public function loadOnOrderItem(Item $item)
  122. {
  123. if (!$this->moduleManager->isEnabled('Magento_GiftWrapping')) {
  124. return;
  125. }
  126. /** @var OrderItemExtensionInterface $extensionAttributes */
  127. $extensionAttributes = $item->getExtensionAttributes() ?: $this->itemExtensionFactory->create();
  128. $extensionAttributes->setGwBasePrice($item->getData('gw_base_price'));
  129. $item->setExtensionAttributes($extensionAttributes);
  130. }
  131. }