Erstellt vor 3 Jahren
Geschlossen vor 14 Monaten
#1838 closed Fehler (fixed)
Lieferantennamen mit Bindstrich am Ende des Namens erzeugen Fehlermeldung bei Kreditorenbuchung
| Erstellt von: | andreas.rudin@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | 3.1.0 |
| Komponente: | kivitendo ERP | Version: | 2.6.3 |
| Schweregrad: | schwerwiegend | Stichworte: | Stammdaten |
| Beobachter: | andreas.rudin@… |
Beschreibung (zuletzt geändert von s.schoeling@…)
Wenn der Lieferantenname mit einem Bindstrich endet, z.B. XYZ -der- wird dieser Name zwar bei der Stammdatenverwaltung akzeptiert.
Er erzeugt aber bei Kreditorenbuchungen eine Fehlermeldung.
Grund ist, dass der Bindestrich vom Programm als Minuszeichen vor der Lieferantennummer interpretiert wird und das Programm deshalb den Lieferanten mit der negativen Nummer nicht in der Tabelle vendor finden kann.
(Vermutlich passiert das gleiche mit Kundennamen und Debitorenbuchungen.)
==> Lösungsvorschlag:
Ich würde vorschlagen, dass weder Kunden- noch Lieferantennamen mit einem Bindestrich enden dürfen.
Das heisst, wenn ein solcher Lieferant oder Kunde erfasst wird, sollte dies vom Programm nicht akzeptiert werden mit dem Hinweis, dass ein Bindestrich am Ende des Namens nicht erlaubt ist.
Änderungshistorie (8)
comment:1 Geändert vor 3 Jahren durch bibi@…
comment:2 Geändert vor 3 Jahren durch s.schoeling@…
- Beschreibung geändert (Diff)
Korrekt wäre der Regex wahrscheinlich so:
$form->{oldvcname} =~ s/--\d*$//;
So ist es am Ende geankert, und zerstört zum Beispiel nicht Kundennamen mit einen --0 in der Mitte. Ausserdem muss es * sein wenn ich mich recht erinnere, weil die id auch nicht gesetzt sein kann, und dann sind steht da einfach "name--" drin, und die zwei - müssen auch korrekt abgezogen werden. Trotzdem bleibt das Problem bestehen. Der Code da ist Schrott.
Mein langfristiger Plan ist, dass die ganzen Kunden und Lieferantenauswahlfelder durch einen direkten Picker ausgetauscht werden, der nicht mehr darauf angewiesen ist, die ID mit im Namen zu kodieren, und auch nicht mehr 200 Kunden in eine Drop Downbox packt. Das was ich für die Kunden CVars gemacht hatte, sollte eigentlich ein Vorläufer davon sein, ist aber noch nicht flexibel genug um in Belegen alles abzudecken.
Wenn Du das in allen Instanzen austauschen willst, das sind nicht wenige, das sind alle Belegmasken, dazu kommen noch alle Suchmasken, die Stammdaten, und die Hälfte der Fibumasken. Und dazu noch alle Masken die die Multibox benutzen.
comment:3 Geändert vor 2 Jahren durch m.bunkus@…
- Meilenstein auf 3.0.0 gesetzt
comment:4 Geändert vor 2 Jahren durch m.bunkus@…
- Typ von defect nach Fehler geändert
comment:5 Geändert vor 2 Jahren durch m.bunkus@…
- Meilenstein von 3.0.0 nach 3.1.0 geändert
comment:6 Geändert vor 14 Monaten durch m.bunkus@…
- Lösung auf fixed gesetzt
- Status von new nach closed geändert
Das funktioniert inzwischen.
comment:7 Geändert vor 14 Monaten durch m.bunkus@…
- Lösung fixed gelöscht
- Status von closed nach reopened geändert
Wenn die Drop-Down-Box angezeigt wird, dann funktioniert es in der Tat weiterhin noch nicht.
comment:8 Geändert vor 14 Monaten durch rfluehmann
- Lösung auf fixed gesetzt
- Status von reopened nach closed geändert

Das selbe oder ein ähnliches Problem tritt an mehreren Stellen auf.
Eine ist der Workflow von Auftragsbestätigung zum Lieferschein, wenn die Listenbegrenzung greift, man also den Kundennamen im Textfeld eingibt. Allerdings wird keine Fehlermeldung angezeigt, sondern der Lieferschein wird ohne Meldung gar nicht erst gespeichert. Für diesen Fall ist folgender Patch möglich:
diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index d18378a..5123309 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -298,7 +298,7 @@ sub form_header { $form->{SHOW_VC_DROP_DOWN} = $myconfig{vclimit} > scalar @{ $form->{ALL_VC} }; $form->{oldvcname} = $form->{"old$form->{vc}"}; - $form->{oldvcname} =~ s/--.*//; + $form->{oldvcname} =~ s/--[0-9]+//; $form->{onload} = ""; if ($form->{resubmit}) {So ähnlich auch bei den splits. Oder Suche von hinten im String.
Aber ich denke, generell sollte die id nicht so kodiert werden.
Die Suche nach Aufträgen geht dann auch nicht, wenn man den Kunden mit Bindestrich am Ende eingibt.
Den Vorschlag, solche Namen nicht zu vergeben, finde ich nicht ganz so gut.