Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Shipment.php
Go to the documentation of this file.
1 <?php
7 
12 class Shipment extends AbstractPdf
13 {
17  protected $_storeManager;
18 
22  protected $_localeResolver;
23 
41  public function __construct(
42  \Magento\Payment\Helper\Data $paymentData,
43  \Magento\Framework\Stdlib\StringUtils $string,
44  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
45  \Magento\Framework\Filesystem $filesystem,
46  Config $pdfConfig,
47  \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory,
48  \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory,
49  \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
50  \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
53  \Magento\Framework\Locale\ResolverInterface $localeResolver,
54  array $data = []
55  ) {
56  $this->_storeManager = $storeManager;
57  $this->_localeResolver = $localeResolver;
58  parent::__construct(
59  $paymentData,
60  $string,
61  $scopeConfig,
63  $pdfConfig,
64  $pdfTotalFactory,
65  $pdfItemsFactory,
66  $localeDate,
69  $data
70  );
71  }
72 
79  protected function _drawHeader(\Zend_Pdf_Page $page)
80  {
81  /* Add table head */
82  $this->_setFontRegular($page, 10);
83  $page->setFillColor(new \Zend_Pdf_Color_Rgb(0.93, 0.92, 0.92));
84  $page->setLineColor(new \Zend_Pdf_Color_GrayScale(0.5));
85  $page->setLineWidth(0.5);
86  $page->drawRectangle(25, $this->y, 570, $this->y - 15);
87  $this->y -= 10;
88  $page->setFillColor(new \Zend_Pdf_Color_Rgb(0, 0, 0));
89 
90  //columns headers
91  $lines[0][] = ['text' => __('Products'), 'feed' => 100];
92 
93  $lines[0][] = ['text' => __('Qty'), 'feed' => 35];
94 
95  $lines[0][] = ['text' => __('SKU'), 'feed' => 565, 'align' => 'right'];
96 
97  $lineBlock = ['lines' => $lines, 'height' => 10];
98 
99  $this->drawLineBlocks($page, [$lineBlock], ['table_header' => true]);
100  $page->setFillColor(new \Zend_Pdf_Color_GrayScale(0));
101  $this->y -= 20;
102  }
103 
110  public function getPdf($shipments = [])
111  {
112  $this->_beforeGetPdf();
113  $this->_initRenderer('shipment');
114 
115  $pdf = new \Zend_Pdf();
116  $this->_setPdf($pdf);
117  $style = new \Zend_Pdf_Style();
118  $this->_setFontBold($style, 10);
119  foreach ($shipments as $shipment) {
120  if ($shipment->getStoreId()) {
121  $this->_localeResolver->emulate($shipment->getStoreId());
122  $this->_storeManager->setCurrentStore($shipment->getStoreId());
123  }
124  $page = $this->newPage();
125  $order = $shipment->getOrder();
126  /* Add image */
127  $this->insertLogo($page, $shipment->getStore());
128  /* Add address */
129  $this->insertAddress($page, $shipment->getStore());
130  /* Add head */
131  $this->insertOrder(
132  $page,
133  $shipment,
134  $this->_scopeConfig->isSetFlag(
135  self::XML_PATH_SALES_PDF_SHIPMENT_PUT_ORDER_ID,
136  \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
137  $order->getStoreId()
138  )
139  );
140  /* Add document text and number */
141  $this->insertDocumentNumber($page, __('Packing Slip # ') . $shipment->getIncrementId());
142  /* Add table */
143  $this->_drawHeader($page);
144  /* Add body */
145  foreach ($shipment->getAllItems() as $item) {
146  if ($item->getOrderItem()->getParentItem()) {
147  continue;
148  }
149  /* Draw item */
150  $this->_drawItem($item, $page, $order);
151  $page = end($pdf->pages);
152  }
153  if ($shipment->getStoreId()) {
154  $this->_localeResolver->revert();
155  }
156  }
157  $this->_afterGetPdf();
158  return $pdf;
159  }
160 
167  public function newPage(array $settings = [])
168  {
169  /* Add new table head */
170  $page = $this->_getPdf()->newPage(\Zend_Pdf_Page::SIZE_A4);
171  $this->_getPdf()->pages[] = $page;
172  $this->y = 800;
173  if (!empty($settings['table_header'])) {
174  $this->_drawHeader($page);
175  }
176  return $page;
177  }
178 }
__construct(\Magento\Payment\Helper\Data $paymentData, \Magento\Framework\Stdlib\StringUtils $string, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Filesystem $filesystem, Config $pdfConfig, \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory, \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Sales\Model\Order\Address\Renderer $addressRenderer, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\Locale\ResolverInterface $localeResolver, array $data=[])
Definition: Shipment.php:41
_drawItem(\Magento\Framework\DataObject $item, \Zend_Pdf_Page $page, \Magento\Sales\Model\Order $order)
$order
Definition: order.php:55
$storeManager
__()
Definition: __.php:13
$shipments
insertDocumentNumber(\Zend_Pdf_Page $page, $text)
$page
Definition: pages.php:8
drawLineBlocks(\Zend_Pdf_Page $page, array $draw, array $pageSettings=[])
_drawHeader(\Zend_Pdf_Page $page)
Definition: Shipment.php:79
$settings
Definition: bootstrap.php:29
$filesystem
foreach($order->getItems() as $orderItem) $shipment
insertOrder(&$page, $obj, $putOrderId=true)
const SIZE_A4
Definition: Page.php:54