Я пытаюсь проверить наличие новых заказов в 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
по-прежнему ничего не возвращает.