| Current Path : /home/rtorresani/www/vendor/magento/module-sales/Block/Order/PrintOrder/ |
| Current File : //home/rtorresani/www/vendor/magento/module-sales/Block/Order/PrintOrder/Shipment.php |
<?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;
}
}