Skip to content

Commit 1a1a1e2

Browse files
author
Prabhu Ram
committed
MC-20637: MyAccount :: Order Details :: Invoice Details by Order Number
- modified implementation to suit schema
1 parent 80437ec commit 1a1a1e2

File tree

2 files changed

+46
-10
lines changed

2 files changed

+46
-10
lines changed

app/code/Magento/SalesGraphQl/Model/Resolver/InvoiceItem.php

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,40 @@
1010
use Magento\Framework\Exception\LocalizedException;
1111
use Magento\Framework\GraphQl\Config\Element\Field;
1212
use Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException;
13+
use Magento\Framework\GraphQl\Query\Resolver\ValueFactory;
1314
use Magento\Framework\GraphQl\Query\ResolverInterface;
1415
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1516
use Magento\GraphQl\Model\Query\ContextInterface;
1617
use Magento\Sales\Api\Data\InvoiceInterface as Invoice;
18+
use Magento\Sales\Api\Data\OrderItemInterface;
1719
use Magento\Sales\Model\Order;
20+
use Magento\SalesGraphQl\Model\Resolver\OrderItem\DataProvider as OrderItemProvider;
1821

1922
/**
2023
* Resolver for Invoice Item
2124
*/
2225
class InvoiceItem implements ResolverInterface
2326
{
27+
/**
28+
* @var ValueFactory
29+
*/
30+
private $valueFactory;
31+
32+
/**
33+
* @var OrderItemProvider
34+
*/
35+
private $orderItemProvider;
36+
37+
/**
38+
* @param ValueFactory $valueFactory
39+
* @param OrderItemProvider $orderItemProvider
40+
*/
41+
public function __construct(ValueFactory $valueFactory, OrderItemProvider $orderItemProvider)
42+
{
43+
$this->valueFactory = $valueFactory;
44+
$this->orderItemProvider = $orderItemProvider;
45+
}
46+
2447
/**
2548
* @inheritdoc
2649
*/
@@ -49,16 +72,28 @@ public function resolve(
4972
$invoiceItems = [];
5073
$parentOrder = $value['order'];
5174
foreach ($invoiceModel->getItems() as $invoiceItem) {
52-
$invoiceItems[] = [
53-
'product_sku' => $invoiceItem->getSku(),
54-
'product_name' => $invoiceItem->getName(),
55-
'product_sale_price' => [
56-
'currency' => $parentOrder->getOrderCurrencyCode(),
57-
'value' => $invoiceItem->getPrice()
58-
],
59-
'quantity_invoiced' => $invoiceItem->getQty()
60-
];
75+
$this->orderItemProvider->addOrderItemId((int)$invoiceItem->getOrderItemId());
6176
}
62-
return $invoiceItems;
77+
return $this->valueFactory->create(function () use ($invoiceModel, $parentOrder) {
78+
$itemsList = [];
79+
foreach ($invoiceModel->getItems() as $invoiceItem) {
80+
$orderItem = $this->orderItemProvider->getOrderItemById((int)$invoiceItem->getOrderItemId());
81+
/** @var OrderItemInterface $orderItemModel */
82+
$orderItemModel = $orderItem['model'];
83+
if (!$orderItemModel->getParentItem()) {
84+
$itemsList[$orderItemModel->getItemId()] = [
85+
'product_name' => $invoiceItem->getName(),
86+
'product_sku' => $invoiceItem->getSku(),
87+
'product_sale_price' => [
88+
'value' => $invoiceItem->getPrice(),
89+
'currency' => $parentOrder->getOrderCurrency()
90+
],
91+
'product_type' => $orderItem['product_type'],
92+
'quantity_invoiced' => $invoiceItem->getQty()
93+
];
94+
}
95+
}
96+
return $itemsList;
97+
});
6398
}
6499
}

app/code/Magento/SalesGraphQl/etc/schema.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ type InvoiceItem implements InvoiceItemInterface {
139139
}
140140

141141
type BundleInvoiceItem implements InvoiceItemInterface {
142+
bundle_options: [SelectedBundleOptionItems]
142143
child_items: [InvoiceItemInterface] @doc(description: "A list of child products that are assigned to the bundle product")
143144
}
144145

0 commit comments

Comments
 (0)