Estoy tratando de verificar si hay nuevos pedidos en Magento y si existen, envíe una factura en PDF a los administradores del sitio. Todo es genial a excepción del PDF.PDF Generación de facturas en Magento
Al tratar de crear externamente facturas PDF, toda la información de facturación falta en el PDF procesado. La creación de la factura es bastante sencilla, pero encontrar el motivo de la falta de información de facturación ha sido imposible para mí. Esto es lo que aprendí.
Mi código para crear la factura en PDF real se encuentra a continuación. Este es el mismo código utilizado en el predeterminado pdfinvoicesAction
para crear archivos PDF para el administrador back-end (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();
?>
Esto crea un archivo PDF válido, que contiene toda la información para menos de facturación. Aislando la causa de esto, encontré que en el siguiente archivo (predeterminado), la información de facturación de pedido es una cadena vacía: cuando recupero la factura a través del back-end de magento, esto devuelve una cadena formateada que contiene toda la información de facturación.
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);
Así que por qué está sucediendo. No tengo ni idea de cómo ni por qué. ¿El verdadero pateador? En mi script de trabajo cron, si ejecuto lo siguiente:
die(print_r($order->getPayment()->toArray()));
Toda la información de pago está allí.
Lo he pedido en el foro de desarrollo del sitio web de Magento sin suerte. Realmente espero que alguien pueda ayudar a arrojar luz sobre este tema, ya que he agotado mis esfuerzos de depuración. Muchas gracias.
Editar: Acaba de descubrir que, si bien Mage::helper('payment')->getInfoBlock($order->getPayment())->setIsSecureMode(true)->toHtml()
devuelve formato HTML correctamente. ->toPdf
todavía no devuelve nada.
Acabo de encontrarme con el mismo problema. Al avanzar en xdebug, noté que el PDF quiere cargar la información de pago de este archivo de plantilla: frontend/base/default/template/payment/info/pdf/purchaseorder.phtml que no existe en Magento por defecto. –