Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Creditmemo.php
Go to the documentation of this file.
1 <?php
7 
12 class Creditmemo extends AbstractPdf
13 {
17  protected $_storeManager;
18 
37  public function __construct(
38  \Magento\Payment\Helper\Data $paymentData,
39  \Magento\Framework\Stdlib\StringUtils $string,
40  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
41  \Magento\Framework\Filesystem $filesystem,
42  Config $pdfConfig,
43  \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory,
44  \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory,
45  \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
46  \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
49  \Magento\Framework\Locale\ResolverInterface $localeResolver,
50  array $data = []
51  ) {
52  $this->_storeManager = $storeManager;
53  $this->_localeResolver = $localeResolver;
54  parent::__construct(
55  $paymentData,
56  $string,
57  $scopeConfig,
59  $pdfConfig,
60  $pdfTotalFactory,
61  $pdfItemsFactory,
62  $localeDate,
65  $data
66  );
67  }
68 
75  protected function _drawHeader(\Zend_Pdf_Page $page)
76  {
77  $this->_setFontRegular($page, 10);
78  $page->setFillColor(new \Zend_Pdf_Color_Rgb(0.93, 0.92, 0.92));
79  $page->setLineColor(new \Zend_Pdf_Color_GrayScale(0.5));
80  $page->setLineWidth(0.5);
81  $page->drawRectangle(25, $this->y, 570, $this->y - 30);
82  $this->y -= 10;
83  $page->setFillColor(new \Zend_Pdf_Color_Rgb(0, 0, 0));
84 
85  //columns headers
86  $lines[0][] = ['text' => __('Products'), 'feed' => 35];
87 
88  $lines[0][] = [
89  'text' => $this->string->split(__('SKU'), 12, true, true),
90  'feed' => 255,
91  'align' => 'right',
92  ];
93 
94  $lines[0][] = [
95  'text' => $this->string->split(__('Total (ex)'), 12, true, true),
96  'feed' => 330,
97  'align' => 'right',
98  ];
99 
100  $lines[0][] = [
101  'text' => $this->string->split(__('Discount'), 12, true, true),
102  'feed' => 380,
103  'align' => 'right',
104  ];
105 
106  $lines[0][] = [
107  'text' => $this->string->split(__('Qty'), 12, true, true),
108  'feed' => 445,
109  'align' => 'right',
110  ];
111 
112  $lines[0][] = [
113  'text' => $this->string->split(__('Tax'), 12, true, true),
114  'feed' => 495,
115  'align' => 'right',
116  ];
117 
118  $lines[0][] = [
119  'text' => $this->string->split(__('Total (inc)'), 12, true, true),
120  'feed' => 565,
121  'align' => 'right',
122  ];
123 
124  $lineBlock = ['lines' => $lines, 'height' => 10];
125 
126  $this->drawLineBlocks($page, [$lineBlock], ['table_header' => true]);
127  $page->setFillColor(new \Zend_Pdf_Color_GrayScale(0));
128  $this->y -= 20;
129  }
130 
137  public function getPdf($creditmemos = [])
138  {
139  $this->_beforeGetPdf();
140  $this->_initRenderer('creditmemo');
141 
142  $pdf = new \Zend_Pdf();
143  $this->_setPdf($pdf);
144  $style = new \Zend_Pdf_Style();
145  $this->_setFontBold($style, 10);
146 
147  foreach ($creditmemos as $creditmemo) {
148  if ($creditmemo->getStoreId()) {
149  $this->_localeResolver->emulate($creditmemo->getStoreId());
150  $this->_storeManager->setCurrentStore($creditmemo->getStoreId());
151  }
152  $page = $this->newPage();
153  $order = $creditmemo->getOrder();
154  /* Add image */
155  $this->insertLogo($page, $creditmemo->getStore());
156  /* Add address */
157  $this->insertAddress($page, $creditmemo->getStore());
158  /* Add head */
159  $this->insertOrder(
160  $page,
161  $order,
162  $this->_scopeConfig->isSetFlag(
163  self::XML_PATH_SALES_PDF_CREDITMEMO_PUT_ORDER_ID,
164  \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
165  $order->getStoreId()
166  )
167  );
168  /* Add document text and number */
169  $this->insertDocumentNumber($page, __('Credit Memo # ') . $creditmemo->getIncrementId());
170  /* Add table head */
171  $this->_drawHeader($page);
172  /* Add body */
173  foreach ($creditmemo->getAllItems() as $item) {
174  if ($item->getOrderItem()->getParentItem()) {
175  continue;
176  }
177  /* Draw item */
178  $this->_drawItem($item, $page, $order);
179  $page = end($pdf->pages);
180  }
181  /* Add totals */
182  $this->insertTotals($page, $creditmemo);
183  }
184  $this->_afterGetPdf();
185  if ($creditmemo->getStoreId()) {
186  $this->_localeResolver->revert();
187  }
188  return $pdf;
189  }
190 
197  public function newPage(array $settings = [])
198  {
199  $page = parent::newPage($settings);
200  if (!empty($settings['table_header'])) {
201  $this->_drawHeader($page);
202  }
203  return $page;
204  }
205 }
_drawItem(\Magento\Framework\DataObject $item, \Zend_Pdf_Page $page, \Magento\Sales\Model\Order $order)
__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: Creditmemo.php:37
$order
Definition: order.php:55
$storeManager
__()
Definition: __.php:13
insertDocumentNumber(\Zend_Pdf_Page $page, $text)
$page
Definition: pages.php:8
drawLineBlocks(\Zend_Pdf_Page $page, array $draw, array $pageSettings=[])
$settings
Definition: bootstrap.php:29
$filesystem
insertOrder(&$page, $obj, $putOrderId=true)