Fehlermeldung bei der Auswahl einer Lieferbedingung bei Angeboten und Rechnungen

Von Klaus Vietzke vor 12 Monaten hinzugefügt

Hallo,

seit dem Update von 3.4.0 auf 3.4.1 taucht bei uns, falls wir eine Lieferbedingung ausgewählt haben, eine Fehlermeldung beim Drucken von Angeboten und Rechnungen auf.
Die Fehlermeldung lautet (bei den Angeboten:
Invalid attribute 'description_long.invoice' at /var/www/kivitendo-erp/SL/OE.pm line 1599
Wenn wir nichts ändern im Angebot, nur die Lieferbedingungen in der Maske auf " " (nichts auswählen) setzen, taucht der Fehler nicht auf.

Die Fehlermeldung lautet (bei den Rechnungen):
Invalid attribute 'description_long_invoice' at /var/www/kivitendo-erp/SL/IS.pm line 539
Wenn wir nichts ändern in der Rechnung, nur die Lieferbedingungen in der Maske auf " " (nichts auswählen) setzen, taucht der Fehler nicht auf.

Ich habe jetzt das folgende getan:
- Geschaut, ob es mit allen Lieferbedingungen dasselbe Ergebnis hat.
Ja, auch bei neu angelegten Lieferbedingungen taucht der Fehler auf. Also scheint es nicht an den alten Lieferbedingungen zu liegen.
- Probehalber die Zeile 1599 in /SL/OE.pm auskommentiert, dann taucht der Fehler auch nicht mehr auf. Das ist keine endgültige Lösung, weil die Zeile ja wahrscheinlich eine Bedeutung hat.
- In der Demoversion von Kivitendo taucht der Fehler nicht auf. Also liegt der Fehler bei uns (zumindest wahrscheinlich).

Was kann ich als nächstes noch tun?

Viele Grüße,
Klaus


Antworten (2)

RE: Fehlermeldung bei der Auswahl einer Lieferbedingung bei Angeboten und Rechnungen - Von Jan Büren vor 12 Monaten hinzugefügt

So ...

i) Das kann ich bei Neuanlegen eines Angebots nicht reproduzieren.
ii) Im Demo-Mandanten sind keine Lieferbedingungen hinterlegt, wenn ich nachträglich eine definiere und die bei einem Auftrag hinzufüge, läuft der Druck und das Speichern auch sauber durch.

In Zeile 1599 steht bei mir in der OE.pm

    $form->{delivery_term}->description_long_invoice($form->{delivery_term}->translated_attribute('description_long_invoice', $form->{language_id}));

Ich denke, das ist dann nur ein Tippfehler: description_long.invoice statt description_long_invoice

Ich würd jetzt überprüfen was in der Tabelle delivery_terms wirklich steht und ob es hierfür eine Übersetzung gibt.

Die Foliennummer 8 von der Entwicklerschulung könnte hier weiterhelfen.

Bei der Demo steht da aktuell sowas drin:

steigmann=# select * from delivery_terms;
  id  | description | description_long | sortkey |           itime            | mtime 
------+-------------+------------------+---------+----------------------------+-------
 1947 | test        | test             |       1 | 2016-07-12 11:30:50.160738 | 

An der Stelle nix, das sieht danach aus, dass hier ein Dusel-Fehler uns durch die Lappen gegangen ist.

Du kannst die beiden Zeilen rauslöschen.

Hintergrund:
In delivery_terms gibt es in der Tat kein Attribut description_long_invoice, sondern nur description_long.
Ich vermute, dass ist ein Copy & Paste Fehler aus der Erweiterung für payment_terms (payment_terms != delivery_terms).

Hier die Konsolen-Ausgabe:

my $term =  SL::DB::Manager::DeliveryTerm->find_by(id => 1947);
re.pl(main):011:0> pp $term->translated_attribute('description_long');
$VAR1 = 'test';

re.pl(main):012:0> pp $term->translated_attribute('description_long_invoice');
Runtime error: Invalid attribute 'description_long_invoice' at (eval 1121) line 5.

Falls es per git installiert wurde, geb ich zeitnah noch die commit-Nummern zum cherry-picken durch ...

RE: Fehlermeldung bei der Auswahl einer Lieferbedingung bei Angeboten und Rechnungen - Von Moritz Bunkus vor 12 Monaten hinzugefügt

Yikes, Sorry, das war mein Bock. Die Lieferbedingungen hätten an den drei Stellen nicht angefasst werden dürfen.

Das Problem sollte mit Commit 2134f89abb07c18b07b3121e80d243af03ede0e0 nun behoben sein. Er sollte problemlos auf eine 3.4.1er Installation anwendbar sein.

(1-2/2)