DefaultColumn.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Block\Adminhtml\Items\Column;
  7. use Magento\Sales\Model\Order\Creditmemo\Item as CreditmemoItem;
  8. use Magento\Sales\Model\Order\Invoice\Item as InvoiceItem;
  9. use Magento\Sales\Model\Order\Item;
  10. use Magento\Quote\Model\Quote\Item\AbstractItem as QuoteItem;
  11. /**
  12. * Adminhtml sales order column renderer
  13. *
  14. * @api
  15. * @author Magento Core Team <core@magentocommerce.com>
  16. * @since 100.0.2
  17. */
  18. class DefaultColumn extends \Magento\Sales\Block\Adminhtml\Items\AbstractItems
  19. {
  20. /**
  21. * Option factory
  22. *
  23. * @var \Magento\Catalog\Model\Product\OptionFactory
  24. */
  25. protected $_optionFactory;
  26. /**
  27. * @param \Magento\Backend\Block\Template\Context $context
  28. * @param \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry
  29. * @param \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration
  30. * @param \Magento\Framework\Registry $registry
  31. * @param \Magento\Catalog\Model\Product\OptionFactory $optionFactory
  32. * @param array $data
  33. */
  34. public function __construct(
  35. \Magento\Backend\Block\Template\Context $context,
  36. \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry,
  37. \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration,
  38. \Magento\Framework\Registry $registry,
  39. \Magento\Catalog\Model\Product\OptionFactory $optionFactory,
  40. array $data = []
  41. ) {
  42. $this->_optionFactory = $optionFactory;
  43. parent::__construct($context, $stockRegistry, $stockConfiguration, $registry, $data);
  44. }
  45. /**
  46. * Get item
  47. *
  48. * @return Item|QuoteItem
  49. */
  50. public function getItem()
  51. {
  52. $item = $this->_getData('item');
  53. if ($item instanceof Item || $item instanceof QuoteItem) {
  54. return $item;
  55. } else {
  56. return $item->getOrderItem();
  57. }
  58. }
  59. /**
  60. * Get order options
  61. *
  62. * @return array
  63. */
  64. public function getOrderOptions()
  65. {
  66. $result = [];
  67. if ($options = $this->getItem()->getProductOptions()) {
  68. if (isset($options['options'])) {
  69. $result = array_merge($result, $options['options']);
  70. }
  71. if (isset($options['additional_options'])) {
  72. $result = array_merge($result, $options['additional_options']);
  73. }
  74. if (!empty($options['attributes_info'])) {
  75. $result = array_merge($options['attributes_info'], $result);
  76. }
  77. }
  78. return $result;
  79. }
  80. /**
  81. * Return custom option html
  82. *
  83. * @param array $optionInfo
  84. * @return string
  85. */
  86. public function getCustomizedOptionValue($optionInfo)
  87. {
  88. // render customized option view
  89. $_default = $optionInfo['value'];
  90. if (isset($optionInfo['option_type'])) {
  91. try {
  92. $group = $this->_optionFactory->create()->groupFactory($optionInfo['option_type']);
  93. return $group->getCustomizedView($optionInfo);
  94. } catch (\Exception $e) {
  95. return $_default;
  96. }
  97. }
  98. return $_default;
  99. }
  100. /**
  101. * Get sku
  102. *
  103. * @return string
  104. */
  105. public function getSku()
  106. {
  107. return $this->getItem()->getSku();
  108. }
  109. /**
  110. * Calculate total amount for the item
  111. *
  112. * @param QuoteItem|Item|InvoiceItem|CreditmemoItem $item
  113. * @return mixed
  114. */
  115. public function getTotalAmount($item)
  116. {
  117. $totalAmount = $item->getRowTotal() - $item->getDiscountAmount();
  118. return $totalAmount;
  119. }
  120. /**
  121. * Calculate base total amount for the item
  122. *
  123. * @param QuoteItem|Item|InvoiceItem|CreditmemoItem $item
  124. * @return mixed
  125. */
  126. public function getBaseTotalAmount($item)
  127. {
  128. $baseTotalAmount = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
  129. return $baseTotalAmount;
  130. }
  131. }