diff --git a/app/code/Magento/SalesGraphQl/Model/OrderItem/DataProvider.php b/app/code/Magento/SalesGraphQl/Model/OrderItem/DataProvider.php index 037e588dc663b..4fc09c3361e7a 100644 --- a/app/code/Magento/SalesGraphQl/Model/OrderItem/DataProvider.php +++ b/app/code/Magento/SalesGraphQl/Model/OrderItem/DataProvider.php @@ -10,11 +10,12 @@ use Magento\Catalog\Api\Data\ProductInterface; use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Framework\Api\SearchCriteriaBuilder; +use Magento\Framework\App\ObjectManager; use Magento\Sales\Api\Data\OrderInterface; use Magento\Sales\Api\Data\OrderItemInterface; use Magento\Sales\Api\OrderItemRepositoryInterface; use Magento\Sales\Api\OrderRepositoryInterface; -use Magento\Framework\App\ObjectManager; +use Magento\SalesRule\Api\Data\DiscountAppliedToInterface as DiscountAppliedTo; use Magento\Tax\Helper\Data as TaxHelper; /** @@ -240,6 +241,7 @@ private function getDiscountDetails(OrderInterface $associatedOrder, OrderItemIn } else { $discounts [] = [ 'label' => $associatedOrder->getDiscountDescription() ?? __('Discount'), + 'applied_to' => $this->getAppliedTo($associatedOrder), 'amount' => [ 'value' => abs((float) $orderItem->getDiscountAmount()), 'currency' => $associatedOrder->getOrderCurrencyCode() @@ -248,4 +250,18 @@ private function getDiscountDetails(OrderInterface $associatedOrder, OrderItemIn } return $discounts; } + + /** + * Get entity type the discount is applied to + * + * @param OrderInterface $order + * @return string + */ + private function getAppliedTo($order) + { + if ((float) $order->getShippingDiscountAmount() > 0) { + return DiscountAppliedTo::APPLIED_TO_SHIPPING; + } + return DiscountAppliedTo::APPLIED_TO_ITEM; + } }