2012-01-12 18 views
6

Magentoで新しい注文を確認しようとしていますが、存在する場合は、サイト管理者にPDF請求書を送信します。 PDFを除いてすべてが素晴らしいです。PDF Magentoでの請求書作成

外部でPDF請求書を作成しようとすると、すべての請求情報がレンダリングされたPDFにありません。請求書の作成は簡単ですが、欠落している請求情報の理由を見つけることは不可能です。ここに私が学んだことがあります。

実際のPDF請求書を作成するためのコードは次のとおりです。これは、管理者のバックエンド(app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php:459)のPDFを作成するために、デフォルトのpdfinvoicesActionで使用されているのと同じコードです。

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を作成します。この原因を特定すると、次の(デフォルト)ファイルで注文請求情報が空の文字列であることがわかりました。私はマゼンタバックエンド経由で請求書を取り出すと、すべての請求情報を含む書式設定された文字列を返します。

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は、テンプレートファイルadminhtmlfrontendの2つのフォルダを使用します。デフォルトでは、バックエンドには、支払いデータヘルパーpdfアクションの.phtmlのみがあります。私のスクリプトはフロントエンドで実行しているでしたが、このファイルが見つからず、空の文字列を出力していました。短い中のSO

、フロントエンドに描画されたときにMagentoの< = 1.6.1でのPDFの請求書は、課金情報が欠落している場合は、このファイルを取る:

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

は、次に/にそれをコピー&ペースト:

後知恵で

app/design/frontend/base/default/template/paygate/info/pdf.phtml(またはあなたが好む場合は、カスタムテンプレートディレクトリ)

、私はおそらく私のcronスクリプトのためのバックエンドのレイアウトを使用する必要があります。

編集:今日私はMagentoのvar/log/system.logファイルについて学びました...(明確にするために再編集する)/var/log/system.logファイルは、問題が何であるか、私はちょうどそれを読むことに失敗した。

+0

私はちょうど同じ問題に遭遇しました。デフォルトMagentoの中に存在しないフロントエンド/ベース/デフォルト/テンプレート/支払/情報/ PDF/purchaseorder.phtml:xdebugの中をステップ実行するとき、私は、PDFは、このテンプレートファイルからの支払い情報をロードしようと気づきました。 –

0

私はMahdi.Montgomeryのソリューション@しようとしたが、それは私のために働いたことはありません。

私の問題はほぼ同じであるが、代わりに課金情報が不足して、私は支払方法が欠落しています。しかし、私の気持ちは根本的な原因は同じです - 管理者とフロントエンドのPDFテンプレートは異なっていますが、これは直感的ではありません。私のガット感は正しいと思います。

私は自分の質問に答えるhttp://www.magentocommerce.com/boards/v/viewthread/463492/

から、このリンクを見て、それはMagentoのバグで、 http://www.magentocommerce.com/boards/{path:viewforum}/viewthread/270256/#t397540

修正を参照してください。フロントエンド/ベース/デフォルト/テンプレート/支払いで

を/ infoには、フォルダpdf を作成し、すべての.phtmlファイルをコピーします。

が、これは誰かに役立ちます願っています。

関連する問題