123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Block\Order\PrintOrder;
- use Magento\Framework\View\Element\AbstractBlock;
- /**
- * Sales order details block
- *
- * @api
- * @since 100.0.2
- */
- class Shipment extends \Magento\Sales\Block\Items\AbstractItems
- {
- /**
- * Tracks for Shippings
- *
- * @var array
- */
- protected $tracks = [];
- /**
- * Order shipments collection
- *
- * @var array|\Magento\Sales\Model\ResourceModel\Order\Shipment\Collection
- */
- protected $shipmentsCollection;
- /**
- * Core registry
- *
- * @var \Magento\Framework\Registry
- */
- protected $coreRegistry = null;
- /**
- * @var \Magento\Payment\Helper\Data
- */
- protected $paymentHelper;
- /**
- * @var \Magento\Sales\Model\Order\Address\Renderer
- */
- protected $addressRenderer;
- /**
- * @param \Magento\Framework\View\Element\Template\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param \Magento\Payment\Helper\Data $paymentHelper
- * @param \Magento\Sales\Model\Order\Address\Renderer $addressRenderer
- * @param array $data
- */
- public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
- \Magento\Framework\Registry $registry,
- \Magento\Payment\Helper\Data $paymentHelper,
- \Magento\Sales\Model\Order\Address\Renderer $addressRenderer,
- array $data = []
- ) {
- $this->paymentHelper = $paymentHelper;
- $this->coreRegistry = $registry;
- $this->addressRenderer = $addressRenderer;
- parent::__construct($context, $data);
- }
- /**
- * Load all tracks and save it to local cache by shipments
- *
- * @return $this
- */
- protected function _beforeToHtml()
- {
- $tracksCollection = $this->getOrder()->getTracksCollection();
- foreach ($tracksCollection->getItems() as $track) {
- $shipmentId = $track->getParentId();
- $this->tracks[$shipmentId][] = $track;
- }
- $shipment = $this->coreRegistry->registry('current_shipment');
- if ($shipment) {
- $this->shipmentsCollection = [$shipment];
- } else {
- $this->shipmentsCollection = $this->getOrder()->getShipmentsCollection();
- }
- return parent::_beforeToHtml();
- }
- /**
- * @return void
- */
- protected function _prepareLayout()
- {
- $this->pageConfig->getTitle()->set(__('Order # %1', $this->getOrder()->getRealOrderId()));
- $infoBlock = $this->paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
- $this->setChild('payment_info', $infoBlock);
- }
- /**
- * @return string
- */
- public function getBackUrl()
- {
- return $this->getUrl('*/*/history');
- }
- /**
- * @return string
- */
- public function getPrintUrl()
- {
- return $this->getUrl('*/*/print');
- }
- /**
- * @return string
- */
- public function getPaymentInfoHtml()
- {
- return $this->getChildHtml('payment_info');
- }
- /**
- * @return array|null
- */
- public function getOrder()
- {
- return $this->coreRegistry->registry('current_order');
- }
- /**
- * @return array|null
- */
- public function getShipment()
- {
- return $this->coreRegistry->registry('current_shipment');
- }
- /**
- * @param AbstractBlock $renderer
- * @return $this
- */
- protected function _prepareItem(AbstractBlock $renderer)
- {
- $renderer->setPrintStatus(true);
- return parent::_prepareItem($renderer);
- }
- /**
- * Retrieve order shipments collection
- *
- * @return array|\Magento\Sales\Model\ResourceModel\Order\Shipment\Collection
- */
- public function getShipmentsCollection()
- {
- return $this->shipmentsCollection;
- }
- /**
- * Getter for order tracking numbers collection per shipment
- *
- * @param \Magento\Sales\Model\Order\Shipment $shipment
- * @return array
- */
- public function getShipmentTracks($shipment)
- {
- $tracks = [];
- if (!empty($this->tracks[$shipment->getId()])) {
- $tracks = $this->tracks[$shipment->getId()];
- }
- return $tracks;
- }
- /**
- * Getter for shipment address by format
- *
- * @param \Magento\Sales\Model\Order\Shipment $shipment
- * @return string
- */
- public function getShipmentAddressFormattedHtml($shipment)
- {
- $shippingAddress = $shipment->getShippingAddress();
- if (!$shippingAddress instanceof \Magento\Sales\Model\Order\Address) {
- return '';
- }
- return $this->addressRenderer->format($shippingAddress, 'html');
- }
- /**
- * Getter for billing address of order by format
- *
- * @param \Magento\Sales\Model\Order $order
- * @return string
- */
- public function getBillingAddressFormattedHtml($order)
- {
- $billingAddress = $order->getBillingAddress();
- if (!$billingAddress instanceof \Magento\Sales\Model\Order\Address) {
- return '';
- }
- return $this->addressRenderer->format($billingAddress, 'html');
- }
- /**
- * Getter for billing address of order by format
- *
- * @param \Magento\Sales\Model\Order\Shipment $shipment
- * @return array
- */
- public function getShipmentItems($shipment)
- {
- $res = [];
- foreach ($shipment->getItemsCollection() as $item) {
- if (!$item->getOrderItem()->getParentItem()) {
- $res[] = $item;
- }
- }
- return $res;
- }
- }
|