99 */
1010namespace Magento \Sales \Block \Order ;
1111
12+ use Magento \Framework \App \ObjectManager ;
13+ use Magento \Framework \Registry ;
14+ use Magento \Framework \View \Element \AbstractBlock ;
15+ use Magento \Framework \View \Element \Template \Context ;
16+ use Magento \Sales \Block \Items \AbstractItems ;
17+ use Magento \Sales \Model \Order ;
18+ use Magento \Sales \Model \ResourceModel \Order \Item \Collection ;
19+ use Magento \Sales \Model \ResourceModel \Order \Item \CollectionFactory ;
20+ use Magento \Theme \Block \Html \Pager ;
21+
1222/**
1323 * Sales order view items block.
1424 *
1525 * @api
1626 * @since 100.0.2
1727 */
18- class Items extends \ Magento \ Sales \ Block \ Items \ AbstractItems
28+ class Items extends AbstractItems
1929{
2030 /**
2131 * Core registry
2232 *
23- * @var \Magento\Framework\ Registry
33+ * @var Registry
2434 */
2535 protected $ _coreRegistry = null ;
2636
@@ -32,30 +42,30 @@ class Items extends \Magento\Sales\Block\Items\AbstractItems
3242 private $ itemsPerPage ;
3343
3444 /**
35- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory
45+ * @var CollectionFactory
3646 */
3747 private $ itemCollectionFactory ;
3848
3949 /**
40- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ Collection|null
50+ * @var Collection|null
4151 */
4252 private $ itemCollection ;
4353
4454 /**
45- * @param \Magento\Framework\View\Element\Template\ Context $context
46- * @param \Magento\Framework\ Registry $registry
55+ * @param Context $context
56+ * @param Registry $registry
4757 * @param array $data
48- * @param \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory|null $itemCollectionFactory
58+ * @param CollectionFactory|null $itemCollectionFactory
4959 */
5060 public function __construct (
51- \ Magento \ Framework \ View \ Element \ Template \ Context $ context ,
52- \ Magento \ Framework \ Registry $ registry ,
61+ Context $ context ,
62+ Registry $ registry ,
5363 array $ data = [],
54- \ Magento \ Sales \ Model \ ResourceModel \ Order \ Item \ CollectionFactory $ itemCollectionFactory = null
64+ CollectionFactory $ itemCollectionFactory = null
5565 ) {
5666 $ this ->_coreRegistry = $ registry ;
57- $ this ->itemCollectionFactory = $ itemCollectionFactory ?: \ Magento \ Framework \ App \ ObjectManager::getInstance ()
58- ->get (\ Magento \ Sales \ Model \ ResourceModel \ Order \ Item \ CollectionFactory::class);
67+ $ this ->itemCollectionFactory = $ itemCollectionFactory ?: ObjectManager::getInstance ()
68+ ->get (CollectionFactory::class);
5969 parent ::__construct ($ context , $ data );
6070 }
6171
@@ -68,18 +78,12 @@ public function __construct(
6878 protected function _prepareLayout ()
6979 {
7080 $ this ->itemsPerPage = $ this ->_scopeConfig ->getValue ('sales/orders/items_per_page ' );
81+ $ this ->itemCollection = $ this ->createItemsCollection ();
7182
72- $ this ->itemCollection = $ this ->itemCollectionFactory ->create ();
73- $ this ->itemCollection ->setOrderFilter ($ this ->getOrder ());
74-
75- /** @var \Magento\Theme\Block\Html\Pager $pagerBlock */
83+ /** @var Pager $pagerBlock */
7684 $ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
7785 if ($ pagerBlock ) {
78- $ pagerBlock ->setLimit ($ this ->itemsPerPage );
79- //here pager updates collection parameters
80- $ pagerBlock ->setCollection ($ this ->itemCollection );
81- $ pagerBlock ->setAvailableLimit ([$ this ->itemsPerPage ]);
82- $ pagerBlock ->setShowAmounts ($ this ->isPagerDisplayed ());
86+ $ this ->preparePager ($ pagerBlock );
8387 }
8488
8589 return parent ::_prepareLayout ();
@@ -122,18 +126,47 @@ public function getItems()
122126 */
123127 public function getPagerHtml ()
124128 {
125- /** @var \Magento\Theme\Block\Html\ Pager $pagerBlock */
129+ /** @var Pager $pagerBlock */
126130 $ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
127131 return $ pagerBlock ? $ pagerBlock ->toHtml () : '' ;
128132 }
129133
130134 /**
131135 * Retrieve current order model instance
132136 *
133- * @return \Magento\Sales\Model\ Order
137+ * @return Order
134138 */
135139 public function getOrder ()
136140 {
137141 return $ this ->_coreRegistry ->registry ('current_order ' );
138142 }
143+
144+ /**
145+ * Prepare pager block
146+ *
147+ * @param AbstractBlock $pagerBlock
148+ */
149+ private function preparePager (AbstractBlock $ pagerBlock ): void
150+ {
151+ $ collectionToPager = $ this ->createItemsCollection ();
152+ $ collectionToPager ->addFieldToFilter ('parent_item_id ' , ['null ' => true ]);
153+ $ pagerBlock ->setCollection ($ collectionToPager );
154+
155+ $ pagerBlock ->setLimit ($ this ->itemsPerPage );
156+ $ pagerBlock ->setAvailableLimit ([$ this ->itemsPerPage ]);
157+ $ pagerBlock ->setShowAmounts ($ this ->isPagerDisplayed ());
158+ }
159+
160+ /**
161+ * Create items collection
162+ *
163+ * @return Collection
164+ */
165+ private function createItemsCollection (): Collection
166+ {
167+ $ collection = $ this ->itemCollectionFactory ->create ();
168+ $ collection ->setOrderFilter ($ this ->getOrder ());
169+
170+ return $ collection ;
171+ }
139172}
0 commit comments