Intereting Posts
PHP – Создать простой анимированный GIF из двух изображений JPEG? Написание запроса в php, который получает информацию из двух разных таблиц Как получить данные с помощью> = И <= в 12-часовой формат времени в php / mysql? Ресурс php mysql_connect всегда одинаковый Является ли ZF2 на основе MOVE? Backbone + RequireJS: файлы HTML, загруженные RequireJS, интерпретируются как файлы JS PHP MySQL query – возвращает результаты только для текущего пользователя Выбор раскрывающегося списка на основе записей в базе данных Слияние двух mp3-плееров WordPress paginate_links – как его использовать? Как использовать PHP для отправки формы и получения файла с другого сайта? JqueryAjax и php-логика Неперехваченное исключение: Ошибка: разрешение отклонено для <https://www.facebook.com>, чтобы получить свойство Proxy.InstallTrigger Новичок имеет проблемы с загрузкой файла с помощью ASIHTTPRequest Как мне диагностировать эту ошибку сегментации PHP?

Magento – добавить пользовательское массовое действие PDF

Быстрый вопрос (помните об этом при чтении):

Почему эта ошибка возникает ( в объяснении ) и как я могу редактировать pdfRmaAction() для правильной работы (Mass Action Printing) ???

** Работа в Magento v.1.10.1.0 которая совпадает с v.1.5.1.0

Долгосрочное объяснение:

Я загрузил это расширение ( http://www.magentocommerce.com/magento-connect/admin-order-printing-extension.html ), чтобы добавить кнопку в каждый заказ, чтобы при входе в заказ у вас был дополнительная кнопка для печати RMA (настраивается из этих расширений. Модель pdf – превращена в пользовательскую форму RMA на основе счета-фактуры)

Он отлично работает. Тем не менее, я хочу добавить печать Mass Action, чтобы вы могли проверить несколько заказов и выбрать « Печать RMA» из раскрывающегося списка и распечатать формы для этих заказов.

В файле расширения config.xml (app / code / local / Nastnet / OrderPrint / etc /) внутри тегов <config> :

 <modules> <Nastnet_OrderPrint> <version>0.1.3</version> </Nastnet_OrderPrint> </modules> <global> <blocks> <adminhtml> <rewrite> <sales_order_grid>Nastnet_OrderPrint_Block_Sales_Order_Grid</sales_order_grid> <!-- ADDED THIS FOR MASS ACTION PRINTING --> <sales_order_view>Nastnet_OrderPrint_Block_Sales_Order_View</sales_order_view> </rewrite> </adminhtml> </blocks> <rewrite> <Nastnet_OrderPrint_OrderController> <from><![CDATA[#/\w+/sales_order/print/#]]></from> <to>/orderprint/order/print/</to> </Nastnet_OrderPrint_OrderController> </rewrite> <models> <Nastnet_OrderPrint> <class>Nastnet_OrderPrint_Model</class> </Nastnet_OrderPrint> </models> <pdf> <order> <default>Nastnet_OrderPrint/order_pdf_items_order_default</default> <grouped>Nastnet_OrderPrint/order_pdf_items_order_grouped</grouped> </order> </pdf> </global> <admin> <routers> <Nastnet_OrderPrint> <use>admin</use> <args> <module>Nastnet_OrderPrint</module> <!-- This is used when "catching" the rewrite above --> <frontName>orderprint</frontName> </args> </Nastnet_OrderPrint> </routers> </admin> по <modules> <Nastnet_OrderPrint> <version>0.1.3</version> </Nastnet_OrderPrint> </modules> <global> <blocks> <adminhtml> <rewrite> <sales_order_grid>Nastnet_OrderPrint_Block_Sales_Order_Grid</sales_order_grid> <!-- ADDED THIS FOR MASS ACTION PRINTING --> <sales_order_view>Nastnet_OrderPrint_Block_Sales_Order_View</sales_order_view> </rewrite> </adminhtml> </blocks> <rewrite> <Nastnet_OrderPrint_OrderController> <from><![CDATA[#/\w+/sales_order/print/#]]></from> <to>/orderprint/order/print/</to> </Nastnet_OrderPrint_OrderController> </rewrite> <models> <Nastnet_OrderPrint> <class>Nastnet_OrderPrint_Model</class> </Nastnet_OrderPrint> </models> <pdf> <order> <default>Nastnet_OrderPrint/order_pdf_items_order_default</default> <grouped>Nastnet_OrderPrint/order_pdf_items_order_grouped</grouped> </order> </pdf> </global> <admin> <routers> <Nastnet_OrderPrint> <use>admin</use> <args> <module>Nastnet_OrderPrint</module> <!-- This is used when "catching" the rewrite above --> <frontName>orderprint</frontName> </args> </Nastnet_OrderPrint> </routers> </admin> по <modules> <Nastnet_OrderPrint> <version>0.1.3</version> </Nastnet_OrderPrint> </modules> <global> <blocks> <adminhtml> <rewrite> <sales_order_grid>Nastnet_OrderPrint_Block_Sales_Order_Grid</sales_order_grid> <!-- ADDED THIS FOR MASS ACTION PRINTING --> <sales_order_view>Nastnet_OrderPrint_Block_Sales_Order_View</sales_order_view> </rewrite> </adminhtml> </blocks> <rewrite> <Nastnet_OrderPrint_OrderController> <from><![CDATA[#/\w+/sales_order/print/#]]></from> <to>/orderprint/order/print/</to> </Nastnet_OrderPrint_OrderController> </rewrite> <models> <Nastnet_OrderPrint> <class>Nastnet_OrderPrint_Model</class> </Nastnet_OrderPrint> </models> <pdf> <order> <default>Nastnet_OrderPrint/order_pdf_items_order_default</default> <grouped>Nastnet_OrderPrint/order_pdf_items_order_grouped</grouped> </order> </pdf> </global> <admin> <routers> <Nastnet_OrderPrint> <use>admin</use> <args> <module>Nastnet_OrderPrint</module> <!-- This is used when "catching" the rewrite above --> <frontName>orderprint</frontName> </args> </Nastnet_OrderPrint> </routers> </admin> 

В (app / code / local / Nastnet / OrderPrint / Block / Sales / Order /) в Grid.php :

 class Nastnet_OrderPrint_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid { protected function _prepareMassaction() { parent::_prepareMassaction(); // Append new mass action option $this->getMassactionBlock()->addItem('rmaprint', array('label' => $this->__('Print RMA'), 'url' => $this->getUrl('orderprint/order/pdfRma'))); } } 

Это приводит к желаемому результату вставки « Print RMA » в раскрывающемся меню на экране «Продажи»> «Заказы».

В файле OrderController.php (app / code / local / Nastnet / OrderPrint / controllers /) я добавил это [скопировал и отредактировал pdfinvoicesAction() в app / code / core / Mage / Adminhtml / controller / Sales / OrderController .php:

 public function pdfRmaAction(){ $orderIds = $this->getRequest()->getPost('order_ids'); //print_r($orderIds); $flag = false; if (!empty($orderIds)) { foreach ($orderIds as $orderId) { $invoices = Mage::getResourceModel('sales/order_invoice_collection') ->setOrderFilter($orderId) ->load(); //print get_class($invoices); //print_r($invoices->getSize()); if ($invoices->getSize() > 0) { $flag = true; if (!isset($pdf)){ $pdf = Mage::getModel('Nastnet_OrderPrint/order_pdf_order')->getPdf(array($order)); } else { $pages = Mage::getModel('Nastnet_OrderPrint/order_pdf_order')->getPdf(array($order)); $pdf->pages = array_merge ($pdf->pages, $pages->pages); } } } if ($flag) { return $this->_prepareDownloadResponse( 'rma'.Mage::getSingleton('core/date')->date('Ym-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf' ); } else { $this->_getSession()->addError($this->__('There are no printable documents related to selected orders.')); $this->_redirect('*/*/'); } } $this->_redirect('*/*/'); } 

Это приводит к ошибке в фактическом pdf …

 Fatal error: Call to a member function getStore() on a non-object in /chroot/home/artizara/dev.artizara.com/html/app/code/local/Nastnet/OrderPrint/Model/Order/Pdf/Order.php on line 60 

Однако, если вы заходите в порядок и нажимаете кнопку « Печать RMA» (вместо того, чтобы пытаться передать Mass Action), тогда она работает Just Fine!

Мое длинное объяснение приводит к следующему: почему возникает эта ошибка и как я могу редактировать pdfRmaAction() для правильной работы (Mass Action Printing) ???

Проблема в том, что вы используете переменную $order которая не задана в качестве параметра для функции getPdf . Вы должны быть в порядке с этой функцией:

 public function pdfRmaAction() { $orderIds = $this->getRequest()->getPost('order_ids'); $flag = false; if (!empty($orderIds)) { foreach ($orderIds as $orderId) { $order = Mage::getModel('sales/order')->load($orderId); $flag = true; $order->setOrder($order); if (!isset($pdf)) { $pdf = Mage::getModel('Nastnet_OrderPrint/order_pdf_order')->getPdf(array($order)); } else { $pages = Mage::getModel('Nastnet_OrderPrint/order_pdf_order')->getPdf(array($order)); $pdf->pages = array_merge($pdf->pages, $pages->pages); } } if ($flag) { return $this->_prepareDownloadResponse( 'rma'.Mage::getSingleton('core/date')->date('Ym-d_H-i-s').'.pdf', $pdf->render(), 'application/pdf' ); } else { $this->_getSession()->addError($this->__('There are no printable documents related to selected orders.')); $this->_redirect('*/*/'); } } $this->_redirect('*/*/'); }