Fehler #644
Fehler bei Kontoauswahlt - Rechnung mit 0 Summe kann nicht geladen werden.
0%
Beschreibung
Eine neue Rechnung mit einer Position mit dem Preis 0 anlegen und buchen wirft beim Laden des gespeicherten Belegs den Fehler:
Can't call method "id" on an undefined value at bin/mozilla/is.pl line 273.
Das ist die Zeile:$form->{AR_chart_id} = $form->{id} ? SL::DB::Manager::Chart->find_by( accno => $chart_accno)->id : $::instance_conf->get_ar_chart_id || $form->{AR_links}->{AR}->[0]->{chart_id};
Der Fehler ist nach der Einführung des Chart-Picker in der Rechnungsmaske aufgetreten (Commit 2e2873a42d80ddc71bce709d710018cff3b26955). Dies sollte den Fehler https://www.kivitendo.de/redmine/issues/363 beheben.
Eine Idee für ein Fix ist:
Ein DB-Upgrade-Skript machen, dass den Anwender dazu zwingt einen Wert für defaults.ar_chart_id einzugeben, und es dann mit NOT NULL als Pflichtfeld zu versehen.
Historie
Von Jan Büren vor 11 Monaten aktualisiert
Also, Rechnungen mit Summe 0 können nicht gebucht werden und es erfolgt keine sinnvolle Rückmeldung an den Anwender.
Das Problem ist durch zwei Änderungen entstanden. Die Sammelkonto-Auswahl wurde auf einen Picker umgestellt und das Sammelkonto wird aus defaults gezogen.
Bei letzteren gab es schon einen Hotfix, da der Code irrtürmlich davon ausgeht, dass der Wert in defaults vorhanden ist. Das ist aber kein Pflichtfeld.
Die Idee ist prinizipell gut, nur etwas zuviel auf einmal.
Als erstes würde ich den Unterbau stabilisieren und zwingend einen Wert in den defaults setzen, falls es noch keinen gibt.
Die Werte kommen aus create_links und scheinen auch nur sortiert nach der Kontennummer ( ORDER BY c.accno) zu sein, von daher kann der Standardwert auch entsprechend gesetzt zu werden.
Da es sich auch nur um die 4 Sammelkonten handelt (Ehrlich gesagt verwirrt die Auswahl eher anstatt das sie hilfreich ist) braucht man auch keine Steuergültigkeit etc beachten.
Wenn das erledigt ist, müsste man nur noch den Picker in den Templates diesen default mitteilen und kann sich Fallunterschiede und komplexen Code in dem alten Code sparen.
Von Cem Aydin vor 11 Monaten aktualisiert
Ähnlicher Fehler passiert auch bei der Einkaufsrechnung, s.a.: https://www.kivitendo.de/redmine/issues/646?issue_count=10&issue_position=2&next_issue_id=618&prev_issue_id=569#note-2