Extrafield in PDF - Sprung zu anderem Datensatz

Hallo liebe Dolibar Nutzer,

ich habe im Modul „Kundenauftrag“ ein ExtraFeld (Zeile) für einen geplanten Liefertermin beigefügt.
Nun möchte ich dieses in der Beschreibung ergänzen und habe dazu in der pdf.lib.php in der
function pdf_writelinedesc diesen Code erweitert:

	if (empty($reshook)) {
		$labelproductservice = pdf_getlinedesc($object, $i, $outputlangs, $hideref, $hidedesc, $issupplierline);
                
                $extrafields = new ExtraFields($db);
                $extralabels=$extrafields->fetch_name_optionals_label($object->lines[$i]->table_element);               
                $object->fetch($i);
                $object->fetch_optionals($i,$extralabels);
                
                $descriptionaddition = '';
                $liefertermin = '';        
                $liefertermin = $object->lines[$i]->array_options['options_ddmmyy'];
                if ($liefertermin != ''){
                    $descriptionaddition .= '<br>Liefertermin: '. date('d.m.Y',$liefertermin);
                } else {
                    $descriptionaddition .= '<br>Liefertermin: nach Vereinbarung';
                }                
                $labelproductservice .= $descriptionaddition;

Dies klappt soweit auch wie es soll, allerdings habe ich nun folgendes seltsames Verhalten:
Habe ich einen Kundenauftrag „12345“ geöffnet und erstelle ein PDF oder füge auch nur eine Position hinzu, springt mir die Anzeige im Browser auf eine andere Kundenauftragnummer, zB. 999999.
Die Browser URL bleibt aber unangetastet, also wenn ich F5 drücke zeigt es wieder die richtige Kundenauftrag an.
Leider konnte ich nicht nachvollziehen welche Kundenauftragnummer danach angezeigt wird.

Es kommt durch die Zeile

$object->fetch($i);

Kann mir da jemand helfen?

Danke

Hallo Lumb (schreibt man das nicht Lump ;-)),

ich habe mich in letzter Zeit etwas intensiver mit Dolibarr auseinander gesetzt und würde nun mit meinem bisherigen wissen sagen, dass Dein gewünschtes Verhalten über sogenannte „Hooks“ zu implementieren ist, siehe Hooks system - Dolibarr ERP CRM Wiki.
Ein guter Grund die Hooks zu verwenden ist, dass nicht bei jedem update auf eine neue Version der von Dir geschriebene Code wieder überschrieben wird.
Was mir bei deinem Code etwas komisch vorkommt, aber ich habe das ganze im original Code nicht nachvollzogen ist, dass mit $object->fetch($i) ein Line geladen wird mit der ID von $i ($i ist jedoch nur die Positionsangabe der Line in deinem Auftrag). Ich denke du musst bei dem fetch die rowid angeben also die einzigartige ID vom Datenbankeintrag. Meist ist die im Object als $id vorhanden.
Gruß Christian

1 „Gefällt mir“