我正在尝试检查Magento中的新订单,如果存在,则向网站管理员发送PDF发票。除了PDF之外,一切都很顺利。
在尝试外部创建PDF发票时,所有的账单信息都没有出现在渲染后的PDF中。创建发票相当简单,但是找到缺失账单信息的原因对我来说是不可能的。以下是我所学到的内容。
下面是我用于创建实际PDF发票的代码。这是在默认的
这将创建一个有效的PDF,包含所有订单信息,但不包括账单信息。经过分析发现,在以下(默认)文件中,订单账单信息为空字符串 - 当通过Magento后端检索发票时,它返回一个格式化的字符串,其中包含所有账单信息。 < p > < code > app / core / Mage / Sales / Model / Order / Pdf / Abstract.php:221
所有的付款信息都在那里。
我已经在Magento网站的开发论坛上询问过,但没有得到帮助。我真的希望有人能够帮助解决这个问题,因为我已经尽力调试了。非常感谢。
编辑:刚刚发现,虽然
在尝试外部创建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后端检索发票时,它返回一个格式化的字符串,其中包含所有账单信息。 < p > < code > 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
仍然返回空白。