2012-01-12 2 views
6

Я пытаюсь проверить новые заказы в Magento, и если они существуют, отправьте счет-фактуру в формате PDF администраторам сайта. Все отлично, за исключением PDF.Формирование счета в формате PDF в Magento

При попытке создать 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 все еще ничего не возвращает.

ответ

2

Ну, надеюсь, это поможет кому-то еще. Иногда, когда вы задаете подробный вопрос, это заставляет вас думать более четко. Это было очень простое решение, без четкого сообщения об ошибке, указывающего на то, что проблема была!

Magento использует две папки для файлов шаблонов adminhtml и frontend. По умолчанию существует только .phtml для действия с данными о данных платежных данных в файле . Мой скрипт был , запущенный на front-end, не находя этот файл и выводивший пустую строку.

Короче говоря, если ваши PDF счета-фактуры в Magento < = 1.6.1 отсутствуют платежную информацию, когда вынесенное на переднем конце, возьмите этот файл:

app/design/adminhtml/default/default/template/paygate/info/pdf.phtml

Затем копировать/вставить его в :

app/design/frontend/base/default/template/paygate/info/pdf.phtml (Или, если вы предпочитаете, пользовательский каталог шаблонов)

В ретроспективе, я, вероятно, следует использовать серверную макет для моих хрон сценариев.

Редактировать: Сегодня я узнал о файле var/log/system.log в Magento ... (Повторное редактирование для ясности) Файл /var/log/system.log ясно указывал мне, в чем проблема, Я просто не прочитал его.

+0

Я просто столкнулся с той же проблемой. Когда я перешел в xdebug, я заметил, что PDF хочет загрузить информацию об оплате из этого файла шаблона: frontend/base/default/template/payment/info/pdf/purchaseorder.phtml, которого нет в Magento по умолчанию. –

0

Я попробовал решение Mahdi.Montgomery, но он никогда не работал для меня.

Моя проблема почти такая же, но вместо отсутствия платежной информации у меня отсутствует способ оплаты. Но моя внутренняя чувствительность заключается в том, что основная причина одна и та же - шаблон PDF для администратора и интерфейса отличается, что не очень интуитивно. Кажется, что я чувствую себя правильно.

Я видел эту ссылку от http://www.magentocommerce.com/boards/v/viewthread/463492/

Отвечая на мой собственный вопрос, это Magento ошибка, см http://www.magentocommerce.com/boards/{path:viewforum}/viewthread/270256/#t397540

Fix:

В фронтэнда/базы/по умолчанию/шаблон/оплаты/info, создайте папку pdf и скопируйте в нее все файлы .phtml.

Надеюсь, это поможет кому-то.

Смежные вопросы