Sto cercando di verificare la presenza di nuovi ordini in Magento e, se esistono, inviare una fattura PDF agli amministratori del sito. Tutto è grande tranne il PDF.Generazione fattura PDF in Magento
Quando si tenta di creare esternamente fatture PDF, tutte le informazioni di fatturazione mancano dal PDF sottoposto a rendering. Creare la fattura è abbastanza semplice, ma trovare il motivo per cui mancano i dati di fatturazione è stato impossibile per me. Ecco cosa ho imparato.
Il mio codice per la creazione della fattura PDF reale è di seguito. Questo è lo stesso codice utilizzato nell'impostazione predefinita pdfinvoicesAction
per creare PDF per il back-end di amministrazione (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();
?>
Questo crea un PDF valido, contenente tutte le informazioni meno di fatturazione ordine. Isolando la causa di ciò, ho trovato che nel seguente file (predefinito), l'ordine delle informazioni di fatturazione è una stringa vuota - quando recupero la fattura tramite il back-end di Magento restituisce una stringa formattata contenente tutte le informazioni di fatturazione.
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);
Ecco, questo è quello che accade. Non ho idea di come o perché. Il vero kicker? Nel mio script di cron job, se eseguo quanto segue:
die(print_r($order->getPayment()->toArray()));
Tutte le informazioni di pagamento sono disponibili.
L'ho chiesto nel forum di sviluppo del sito Magento senza fortuna. Spero davvero che qualcuno possa contribuire a far luce su questo problema, in quanto ho esaurito i miei sforzi di debug. Grazie mille.
Modifica: Ho appena scoperto che mentre Mage::helper('payment')->getInfoBlock($order->getPayment())->setIsSecureMode(true)->toHtml()
restituisce un codice HTML formattato correttamente. ->toPdf
non restituisce ancora nulla.
Ho appena avuto lo stesso problema. Durante l'esecuzione di xdebug, ho notato che il PDF desidera caricare le informazioni di pagamento da questo file modello: frontend/base/default/template/payment/info/pdf/purchaseorder.phtml che non esiste in Magento predefinito. –