PDF Создание счетов в Magento - PullRequest
6 голосов
/ 12 января 2012

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

Ответы [ 2 ]

2 голосов
/ 12 января 2012

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

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

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

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

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

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

Оглядываясь назад, я, вероятно, должен был бы использовать внутреннюю разметку для своих скриптов cron.

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

0 голосов
/ 08 сентября 2014

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

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

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

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

Fix:

В frontend / base / default / template / payment / info создайте папку pdf и скопируйте в него все файлы .phtml.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...