PDF Lieferscheinerstellung aus eigenem Plugin heraus

Hallo zusammen,

ich versuche in einem selbst erstellten Plugin die PDF Erstellung eines Lieferscheins anzustossen. Dabei soll die Vorlage aus Shopware verwendet werden.

Aktuell zum testen nutze ich eine Action im Controller meines Plugins. Später soll die PDF Erstellung bei dem Event ‚Shopware_Modules_Order_SendMail_BeforeSend‘ angestossen werden.

In der Action habe ich nun folgenden Programmcode mir aus der Funktion ‚createDocument‘ der Datei ‚engine/Shopware/Controllers/Backend/Order.php‘ geholt:

        $renderer = „pdf“; // html / pdf
        $documentType = 2;
        $displayDate = date(„d.m.Y“);
        $document = Shopware_Components_Document::initDocument(
            20005,
            $documentType,
            array(
                ‚netto‘ => false,
                ‚bid‘ => null,
                ‚voucher‘ => null,
                ‚date‘ => $displayDate,
                ‚delivery_date‘ => null,
                // Don’t show shipping costs on delivery note #SW-4303
                ‚shippingCostsAsPosition‘ => (int)$documentType !== 2,
                ‚_renderer‘ => $renderer,
                ‚_preview‘ => false,
                ‚_previewForcePagebreak‘ => null,
                ‚_previewSample‘ => null,
                ‚docComment‘ => null,
                ‚forceTaxCheck‘ => false
            )
        );

Beim Aufruf der Action bricht der Vorgang irgendwo im Aufruf:

$document->setOrder(Enlight_Class::Instance(‚Shopware_Models_Document_Order‘, array($orderID, $config)));

der Funktion ‚initDocument‘ in ‚engine/Shopware/Components/Document.php‘ ab. Dabei wird mir im Browser folgende Meldung angezeigt ‚Ups! Ein Fehler ist aufgetreten!
Wir wurden bereits über das Problem informiert und arbeiten an einer Lösung, bitte versuchen Sie es in Kürze erneut.‘

Ist es aus einem Plugin heraus möglich, die PDF-Erstellung zu nutzen?

Wie stelle ich das an?

 

Gruß Peter

 

Hallo Peter,

etwas spät meine Antwort, aber vielleicht hilfts noch.

Vermutlich liegt es daran, dass du die ordernumber verwendest, initDocument() aber gerne die orderId hätte.

Beste Grüße,
Martin

1 Like

Hallo Martin,

danke für deine Antwort, diese hat zur Lösung beigetragen. Hatte tatsächlich die ordernumber verwendet, aber auch beim Rendern über “$document->render();” noch einen Parameter mit angegeben. Das hatte auch die Erstellung “verhindert”.

Vielen Dank und

Gruß Peter

etwas spät, … aber:
wie genau hast du jetzt die leiferscheingenerierung aus einem plugin heraus machen können?
mir ergibt sich das nicht so richtig aus dem oberen codebeispiel.

vg erik