Erstellt vor 4 Jahren
Geschlossen vor 4 Jahren
#1660 closed Fehler (fixed)
Mehrfaches Einlagern eines Lieferscheins möglich
| Erstellt von: | demofreak@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 2.6.3 unstable |
| Schweregrad: | normal | Stichworte: | Einkauf |
| Beobachter: | information@… |
Beschreibung
Dass man einen ungespeicherten Lieferschein (mit leerem Lieferscheinnummer-Feld) mehrfach einlagern kann, ist klar und nicht zu vermeiden, man erzeugt damit jedes mal einen neuen Lieferschein.
Mit 088bf5a0 ist es jedoch wieder möglich, auch einen bereits gespeicherten Lieferschein mehrfach einzulagern.
Grund:
my ($delivered) = selectfirst_array_query($form, $dbh, qq|SELECT delivered FROM delivery_orders WHERE id = ?|, conv_i($params{id}));
$delivered ist (zumindestens bei mir) immer '0', egal ob das Feld 'delivered' in der Datenbank TRUE oder FALSE ist.
Änderungshistorie (8)
comment:1 Geändert vor 4 Jahren durch information@…
- Beobachter information@… hinzugefügt
comment:2 Geändert vor 4 Jahren durch information@…
Ggf. benutzt du die fcgi-Variante und hast nach Einspielen des patchs den Webserver nicht neugestartet?
comment:3 Geändert vor 4 Jahren durch demofreak@…
(In reply to comment #1)
sobald ich auf auslagern drücke, verschwindet bei mir der Knopf auslagern.
Ja, aber wenn man nach dem Auslagern auf den Zurück-Knopf des Browsers drückt und in der vorherigen Maske (wo der Auslagern-Knopf ja noch da ist) wieder Auslagern drückt, dann lagert es halt nochmal aus.
Das sollte eigentlich abgefangen werden (zumindestens verstehe ich den Code in transfer_out so, die oben gepostete DB-Abfrage zielt meiner Ansicht nach darauf).
comment:4 Geändert vor 4 Jahren durch information@…
Hi,
back-button-abuse-alarm ;-)
Ist okay, ich glaube, dass das aber dem normalen Anwender klar ist, dass dies über den zurück-knopf einen "undefinierten" status bekommt.
Bzw., andersrum, zumindestens für die Einkaufsseite, können Lieferscheinnummern doppelt vergeben werden. Eindeutig ist hier ja dann Lieferschein Nummer und Lieferant.
Leider verhält sich die Verkaufsseite genauso, deswegen zielt die DB-Abfrage auf die ID des Lieferscheins, die nichts mit der Lieferscheinnummer zu tun hat.
Die super-saubere Lösung wäre:
Lieferscheinnummer UND Lieferant werden Primärschlüssel.
Alle Abfrage die bisher auf Lieferschein ID gehen, gehen jetzt auf den neuen Primärschlüssel.
Also so:
Grund:
(...)
WHERE vendor|customer = ? AND donumber = ?, conv_i($params{vendor_id} {$params{donumber})
Folgeproblem:
Es ist ferner auch nicht verboten Lieferscheinnummern doppelt zu vergeben und sicherlich wird der eine oder andere dies auch irgendwie nutzen ...
Deshalb, lohnt es sich nicht meiner Meinung an dieser Stelle für den Standard weiterzuoptimieren ...
Vielleicht sieht Moritz das anders, ansonsten würde ich auf WORKSFORME tendieren ...
comment:5 Geändert vor 4 Jahren durch demofreak@…
(In reply to comment #4)
Ist okay, ich glaube, dass das aber dem normalen Anwender klar ist, dass dies
über den zurück-knopf einen "undefinierten" status bekommt.
Vielleicht sieht Moritz das anders, ansonsten würde ich auf WORKSFORME
tendieren ...
Jaja... klar. Aber wozu dann überhaupt die Abfrage in sub transfer_in, ob der Lieferschein bereits eingelagert ist?
if (DO->is_marked_as_delivered('id' => $form->{id})) {
$form->show_generic_error($locale->text('The parts for this delivery order have already been transferred in.'), 'back_button' => 1);
}
Das ist doch genau dafür da, dass man den nicht mehr vorhandenen Einlagern-Button nicht benutzen kann? Und genau diese Abfrage funktioniert aber nicht, weil sie immer FALSE liefert.
comment:6 Geändert vor 4 Jahren durch m.bunkus@…
- Status von new nach assigned geändert
Hannes hat Recht, dass ich die Abfrage genau für den "Zurück"-Button-Fall eingebaut habe. Dass sie nicht funktioniert, ist interessant; muss ich mir anschauen.
comment:7 Geändert vor 4 Jahren durch information@…
Vielleicht weil $form->{id} nicht gesetzt ist?
Die ist ja, meiner Meinung nach, erst nach update oder Speichern vorhanden.
comment:8 Geändert vor 4 Jahren durch m.bunkus@…
- Lösung auf fixed gesetzt
- Status von assigned nach closed geändert
Ist in Revision 251dc385 behoben.

Hi Hannes,
sobald ich auf auslagern drücke, verschwindet bei mir der Knopf auslagern.
Das verhält sich auch so, wenn ich nur Teilmengen auslagere.
Betrifft: 2.7 Verkaufslieferschein.
Kannst Du hier genauer beschreiben, wie du das machst?