Я пытаюсь проверить наличие новых заказов в Magento и, если они существуют, отправить счет в формате PDF администраторам сайта.Все отлично, за исключением PDF.
При попытке внешнего создания счетов-фактур PDF вся информация о счетах отсутствует в визуализированном PDF.Создание счета-фактуры довольно просто, но найти причину недостающей платежной информации для меня было невозможно.Вот что я узнал.
Ниже приведен мой код для создания фактической PDF-накладной.Это тот же код, который используется по умолчанию pdfinvoicesAction
для создания PDF-файлов для администратора (app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php:459
).
cron/Invoice.php
<?php
/* $order is a valid Mage_Sales_Model_Order object */
$invoices = $order->getInvoiceCollection();
$pdfInvoice = Mage::getModel('sales/order_pdf_invoice');
$pdf = $pdfInvoice->getPdf($invoices);
$pdfFile = $pdf->render();
?>
Это создает действительный PDF-файл, содержащий всю информацию о заказе за вычетом счетов.Выяснив причину этого, я обнаружил, что в следующем (по умолчанию) файле информация о выставлении счета-заказа является пустой строкой - когда я получаю счет-фактуру через серверную часть magento, возвращается форматированная строка, содержащая всю платежную информацию.
app/core/Mage/Sales/Model/Order/Pdf/Abstract.php:221
/* Payment */
$paymentInfo = Mage::helper('payment')->getInfoBlock($order->getPayment())
->setIsSecureMode(true)
->toPdf();
// $paymentInfo is an empty string when rendering a PDF externally,
// and formatted as expected when rendering a PDF via the admin panel
$payment = explode('{{pdf_row_separator}}', $paymentInfo);
Так вот что происходит.Я понятия не имею, как и почему.Настоящий кикер?В моем скрипте работы cron, если я запускаю следующее:
die(print_r($order->getPayment()->toArray()));
Вся информация о платеже есть.
Я спросил об этом на форуме разработчиков сайта Magento, но не повезло.Я действительно надеюсь, что кто-нибудь сможет пролить свет на эту проблему, поскольку я исчерпал свои усилия по отладке.Большое вам спасибо.
Редактировать: Только что обнаружил, что пока Mage::helper('payment')->getInfoBlock($order->getPayment())->setIsSecureMode(true)->toHtml()
возвращает правильно отформатированный HTML.->toPdf
по-прежнему ничего не возвращает.