InvoicepdfArticleSummary überladen

Guten Abend,

ich würde gerne ein paar Änderungen an dem Rechnungslayout des Moduls invoicepdf vornehmen und wollte hierzu die Klasse InvoicepdfArticleSummary in einem eigenen Modul überladen. Das klappt jedoch leider nicht.
Gibt es hier irgendwelche Besonderheiten zu beachten, da es sich hier um keine Original-Oxid-Klasse handelt, sonden um eine Klasse eines Moduls?

Viele Grüße und besten Dank vorab!

So ist es. Man muss die Klassen direkt ändern.

Wenn es nur eine kleine Änderung ist, muss ich da zustimmen.
Wenn es aber etwas komplizierter und an mehreren Stellen geändert werden soll, dann würde ich das Rechnungsmodul so ändern, dass eigene Module zur Erweiterung dieser Klassen funktionieren. So bleiben deine eigenen Anpassungen auch nach Update erhalten

Vorsicht, wenn man Paypal+ einsetzt. Das ändert auch an den PDF Invoice klassen rum.

Gruss
Marcel

Danke für die zahlreichen Rückmeldungen. :+1:

Grundsätzlich habe ich natürlich ein großes Interesse, so wenig an den Shopdateien zu ändern wie möglich, um die Updatefähigkeit zu erhalten. Schließlich steht ja kurz- bis mittelfristig das Update auf die Version 6 an.

Kannst Du das bitte noch mal ausführen? Wie kann man das bestehende Rechnungsmodul denn so ändern, dass man dieses mit einem eigenen Modul erweitern kann?

Diesen Thread hatte ich auch gefunden. Ich konnte das Szenario jedoch nicht 1:1 auf meinen Fall anwenden, da dort die Klasse invoicepdfoxorder überladen werden soll, welche aber von der Original-OXID-Klasse oxorder geerbt hat.
In meinem Fall geht es um das Erweitern einer nicht Original-OXID-Klasse.

prinzipiell sollte es ausreichen jedes new InvoicepdfArticleSummary() in invoicepdfoxorder.php durch oxNew("InvoicepdfArticleSummary") zu ersetzen, kann das allerdings gerade nicht testen.

Welche Version von Invoice PDF nutzt du denn?
Prinzipiell sollte die Überladung von Modulklassen möglich sein, soweit die Objekte mit “oxNew” erzeugt werden - hier hat vanilla recht.
Wenn ich das richtig sehe werden in der Version 2.0.1 die Objekt auch immer mit “oxNew” erzeugt.

Eventuell wäre es eine Überlegung wert das Modul upzudaten?

Das geht genauso (also analog) wie im genannten Bsp. Die angepasste Methode xxx(); sollte parent::xxx(); beinhalten, sofern sie nicht als letzte geladen wird, was durch die Reihenfolge beeinflusst werden kann.

So, Dank eurer Hilfe konnte ich das Geheimnis lüften. :grinning:

Gibt es denn für OXID 4.10.x ein aktuelleres Release für das Modul invoicepdf als die Version 1.0.0?
Die zwei jüngsten Releases des Moduls 2.0.0 und 2.0.1 auf GitHub funktionieren nur mit OXID 6.
Ich habe das Modul trotzdem versucht unter 4.10.3 einzusetzen, erhalte aber jede Menge Fehler.

Die Versionen 1.0.0 und 2.0.1 unterscheiden sich jedoch bei der Objekterstellung.

Version 1.0.0

$oArtSumm = new InvoicepdfArticleSummary($this, $oPdf);

Version 2.0.1

$oArtSumm = oxNew(‘InvoicepdfArticleSummary’, $this, $oPdf);

Wenn ich das Objekt in der Version 1.0.0 ebenfalls mit oxNew erzeuge, funktioniert auch das Überladen von Methoden der Klasse InvoicepdfArticleSummary.
Eine Objekterzeugung nur mit new führt dazu, dass ich keine Methoden der Klasse überladen kann.

Prinzipiell sollte es für dich möglich sein, die Erzeugung mit “new” durch “oxNew” zu ersetzen. Da es seitens OXID nicht mehr zu erwarten ist, dass das Modul für die OXID v4 noch ein Update bekommt.
Solltest du dann später mal auf die v6 umsteigen, sollte das auch kein Problem darstellen.
Mir ist keine aktuellere Version als die 1.0.0 für die v4 bekannt.

Ja, das ist kein Problem. Damit kann ich leben.
Mein Problem hat sich hiermit erledigt. :ok_hand: