Ich verstehe die invoicepdfoxorder.php nicht

Guten Tag liebe Freunde des OXID-Systems.
Ich betreue für einen Kunden einen Shop der Cpommunity Edition 6.14
Dieser Kunde kam mit dem Wunsch auf mich zu anstelle der Kundennummer auf der Rechnung unter “Bei Zahlungen bitte immer angeben” (oben rechts) die Bestellnummer einzutragen.
“Das sollte kein Problem sein” verkündete ich.
Ha! Ich Großmaul!

Ich nahm mir also die invoicepdfoxorder.php vor und änderte die zeilen, in denen ich diese Angaben vermutete:


424        // customer number
425      $sCustNr = $this->translate('ORDER_OVERVIEW_PDF_CUSTNR') . ' ' . $oUser->oxuser__oxcustnr->value;
426        $oPdf->setFont($oPdfBlock->getFont(), '', 7);
427        $oPdf->text(195 - $oPdf->getStringWidth($sCustNr), 59, $sCustNr);

Was soll ich sagen?
Nix.

Ich spare euch jetzt einmal die Beschreibung sämtlicher Varianten die ich inzwischen probiert habe, nur soviel: ich habe sichergestellt, dass ich an der richtigen invoicepdfoxorder.php im richtigen Ordner arbeite (in dem ich an anderer Stelle Änderungen vorgenommen habe, die auch erschienen).

Ich finde keine Antwort auf die Frage "wo kommen die beiden Zeilen

Bei Zahlungen bitte immer angeben.
Kundennummer XXXX

her.

Naja schon genau daher würde ich sagen :wink:
Wenn ich z.B. folgendes ändere

    // customer number
    $sCustNr = "test";
    $oPdf->setFont($oPdfBlock->getFont(), '', 7);
    $oPdf->text(195 - $oPdf->getStringWidth($sCustNr), 59, $sCustNr);

Dannn steht das auch in der Rechnung.

Bei mir nicht!
Ich mache offenbar irgendetwas falsch.

Was allerdings passiert:
Wenn ich die Zeilen einfach lösche verschwindet die Kundennummer auf dem Lieferschein!

Lieferschein - nicht Rechnung?
→ ist function exportDeliveryNote() ab Zeile 580 in Modul-Version 2.2.1!

By the way: schau Dir mal unser kostenloses WaWi an:

Das ist mir schon klar.

Deshalb wundere ich mich ja auch.

Und ich würde ungern ein komplettes Warenwirtschaftssystem implementieren, wenn ich doch nur eine einzige Zeile in der Rechnung ändern will.

Ich versuche die Problematik noch einmal exakter und strukturierter darzulegen:

So sieht es aus:

Wenn ich in dem Bereich, in dem der Lieferschein aufgebaut wird, den Code von


568   // customer number
569   $sCustNr = $this->translate('ORDER_OVERVIEW_PDF_CUSTNR') . ' ' . 
570   $oUser->oxuser__oxcustnr->value; $oPdf->setFont($oPdfBlock->getFont(), '', 7);
571   $oPdf->text(195 - $oPdf->getStringWidth($sCustNr), 59, $sCustNr);

zu

568        // customer number -> order number
569        $sOrdnNr = $this->translate('ORDER_OVERVIEW_PDF_DELIVNOTE') . ' ' .$this->oxorder__oxordernr->value;
570        $oPdf->setFont($oPdfBlock->getFont(), '', 8);
571        $oPdf->text(195 - $oPdf->getStringWidth($sOrdnNr), 73, $sOrdnNr);

ändere, passiert das, was ich mir für die Rechnung wünsche:

Mache ich jetzt das gleiche im oberen Abschnitt, in dem die Rechnung generiert wird:

424        // customer number
425        $sCustNr = $this->translate('ORDER_OVERVIEW_PDF_CUSTNR') . ' ' . $oUser->oxuser__oxcustnr->value;
426        $oPdf->setFont($oPdfBlock->getFont(), '', 7);
427        $oPdf->text(195 - $oPdf->getStringWidth($sCustNr), 59, $sCustNr);

zu:

        // customer number -> order number
        $sOrdnNr = $this->translate('ORDER_OVERVIEW_PDF_DELIVNOTE') . ' ' . $this->oxorder__oxordernr->value;
        $oPdf->setFont($oPdfBlock->getFont(), '', 8);
        $oPdf->text(195 - $oPdf->getStringWidth($sOrdnNr), 73, $sOrdndNr);

ändert sich nichts:

Ich weiß nicht weiter.

Wenn garnichts passiert, wird vielleicht die Methode exportStandart durch ein anderes Modul überschrieben. Einfach in den Modulen nach invoicepdfoxorder suchen.

Oder die Methode exportStandart mal umbennen. Wenn kein Fehler auftritt, gibt es die Methode nochmal.

1 Like

Zu 1:
Gibt es nicht noch mal
zu 2:
Wenn ich exportStandart umbenenne verschwindet die Zeile “Kundennummer XXX”

Das Umbenennen sollte im Normalfall zu einem Fehler führen und das PDF nicht ausgegeben werden. Zum letzten Test kannst den Inhalt von exportStandart entfernen, d.h. nur die äußeren Klammern bleiben bestehen. Sollte in der Rechnung mehr als header und footer erscheinen, hast nicht die normale Version oder übersiehst etwas.

Hol Dir Hilfe!

public function exportStandart(){#leer#}

OK
Das hatte ich falsch verstanden.
Ich hatte sowohl die Definition, als auch den Aufruf umbenannt.

Wenn ich es so mache wie von dir vorgeschlagen, passiert das was du als “sollte” bezeichnet, es wird keine PDF generiert.

welche Version hat das Modul? Aktuell ist 2.2.1
Mach mal ein Update auf die aktuelle Version.

Wenn ich bei OXID das Wort Update höre krieg ich schon Stresspickel.
Gibt es einen einfachen Weg das Modul zu aktualisieren?
Ich habe Version 2.1.1

deine Zeilennummern stimmen nicht mit den Nummern des Originals überein
→ in deiner Version hat jemand etwas geändert ?!
Original Version 2.1.1:

kannst Du auch per zip-Datei updaten

Dass die Zeilennummern nicht übereinstimmen hängt damit zusammen, das oben der Footer definiert wird, und ich dort Änderungen vorgenommen habe.

Um jetzt einmal grundsätzlicher vorzugehen habe ich folgendes getan:
Ich habe die Original invoicepdfoxorder.php genommen.
In dieser Datei habe ich nur die Zeilen

424        // customer number -> order number
425        $sOrdnNr = $this->translate('ORDER_OVERVIEW_PDF_DELIVNOTE') . ' ' . $this->oxorder__oxordernr->value;
426        $oPdf->setFont($oPdfBlock->getFont(), '', 8);
427        $oPdf->text(195 - $oPdf->getStringWidth($sOrdnNr), 73, $sOrdndNr);

entsprechend dem Kundenwunsch geändert.

Diese habe ich temporär hochgeladen, Rechnung und Lieferschein erzeugt, überprüft ob das tatsächlich auf der Urversion aufbaut (also dass meine Änderungen im Layout verschwunden sind), und geschaut ob nun anstelle der Kundennummer die Ordernummer erscheint.
Was soll ich sagen?
Nein.

Es ist also irgendwo der Wurm drin.
Und ich habe nicht die geringste Ahnung wo der Kollege die Kundenummer herzaubert.
Der oxuser__oxcustnr taucht im gesamten Modul außer in der invoicepdfoxorder.php nirgends auf.

Stellt sich die Frage ob ich ein Update auf 2.2.1 machen soll (bedeutet alle Modifikationen für die PDF-Dateien neu einzubauen), ich befürchte eigentlich, dass das nichts ändern wird.
Und funktioniert diese Version auch mit meiner CE 6.14 (laut read.me ja)
Und könnte ich theoretisch auch downgraden?
Und wenn ja wie?

Bestimmt. Die Zeilenangabe 424-427 stimmt nicht. Das ist nicht original.

$oUser->oxuser__oxcustnr->value kommt über $oUser->load($this->oxorder__oxuserid->value). Damit ist der “ganze” User vorhanden.

Ja, funktioniert.

Weil es funktioniert, brauchst es nicht.

wird beim Erstellen der Rechnung diese Methode verwendet?
$this->exportStandart($oPdf);
(im Original Zeile 268)

1 Like

Was bringt dich zu dieser Annahme?
Ich habe die Original-Dateien der Version 2.1.1 noch einmal aus der pdf-invoice-module-master.zip extrahiert, und da steht dieser Aufruf genau an dieser Stelle.

Findest Du bei 448

Will ich hoffen. Das hatten wir ja oben bereits besprochen.

Am besten lade das gesamte Modul zum Download irgendwo hin. Jemand, der Zeit hat, wird den Fehler finden.

1 Like

Das ist ja auch eine aktuelle Version.
Kein Wunder, dass da die Zeilennummern nicht stimmen.
Ich habe auf der Version 2.1.1 augebaut.
Das schien mir sinnvoller, als die Versionen zu mischen.