Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2023 fxtransaction bugs 5 #258

Merged
merged 17 commits into from
Feb 21, 2024
Merged

2023 fxtransaction bugs 5 #258

merged 17 commits into from
Feb 21, 2024

Conversation

jbueren
Copy link
Contributor

@jbueren jbueren commented Feb 21, 2024

Rückmeldung von Sven:

Ich habe das jetzt versucht minimalinvasiv zum laufen zu kriegen. Was ich gemacht habe ist:

Form::create_links erkennt jetzt Fremdwährungszahlungen, berechnet defaultcurrency_paid aus den alten Buchungen, und reicht fx_transaction flag weiter.
Ich basiert auf Geoffrey’s Branch, aber jetzt so geändert, dass die Rückrechnung nur dann passiert, wenn das eine Fremdwährungszahlung aus der Datenbank ist.
Alles auf master rebased.
Ich habe eine paar Tests dazugeworfen, und dafür eine kleine DSL geschrieben, mit der man einfache bin/mozilla Flows in Tests werfen kann, dafür wird HTML::Query als neue Abhängigkeit benötigt.

Getestet und hoffentlich nicht kaputt sind:

  • Kreditorenbuchung im Frontend anlegen, erneuern, speichern
    
  • Einkaufsrechnung im Frontend anlegen, erneuern, speichern
    
  • Kreditorenbuchung per Banktransaction ohne Fremdwährung bezahlen, in der alten Maske aufmachen, erneuern – die werden dann im Frontend wie Fremdwährungszahlungen behandelt. Das nimmt an, dass die Zahlung hinterher nicht nochmal gespeichert wird, was vorausgesetzt hattest.
    

Das ist trotzdem alles fragil wie Hölle. Ich fasse die ganzen anderen Randfälle da nicht an. Unter anderem ist mir aufgefallen, dass die Preise beim Laden von Waren in Fremdwährung übersetzt werden, wenn eine Fremdwährung gesetzt wird und schon ein Wechselkurs bekannt ist, aber NICHT wenn der Wechselkurs nicht bekannt ist. Was dazu führt dass wenn man 2x exakt die gleiche Rechnung anlegt, die Artikelpreise auf einmal anders sind.

Beim rumklickern habe ich gleich noch 2 andere Bugs in der Fremdwährungsbehandlung gesehen:

  • Wie erwartet geht die Maske kaputt, wenn man in einer gebuchten Zahlung anfängt zu editieren
    
  • Rechnung -> Währung auf USD stellen -> Artikel aus dem Beleg erfassen -> zurück in die Rechnung scheint den Wechselkurs kaputt zu formatieren (2,5 -> 25)..
    

Ich würde nach und nach noch mehr Tests dafür schreiben, bei der Hälfte der Fälle bin ich mir aber nichtmal sicher was das erwartete Verhalten ist. Vor allem bei Teilzahlungen, Steuern, oder Skontobuchungen.

grichardson and others added 17 commits February 2, 2024 16:43
siehe Ticket #563, Währung und Fremdwährung war vertauscht.
 siehe Ticket #563, Währung und Fremdwährung waren vertauscht.
 siehe Ticket #563, Währung und Fremdwährung waren vertauscht.
siehe Ticket #563, Währung und Fremdwährung waren vertauscht.
t/fxtransaction/ap_transactions.t enthält ein Mini-Framework für
bin/mozilla Integration-Tests. Grobes Muster:

  # simuliert einen call zu $script.pl?action=$action + form_params
  my ($out, $err, @ret) = make_request($script, \%form_params, $action);

  # liest sucht alle <input> und <select> elemente die in der html ausgabe
  # vorkommen
  %form = form_from_html($out);

Wird hier benutzt um simple Flows durch das programm zu simulieren.
Bei Fremdwährungszahlungen wird jetzt zusätzlich:

- fx_transaction gesetzt
- defaultcurrency_paid gesetzt
Es wird jetzt das fx_transaction flag durchgereicht, wenn die Zahlung im
FGrontend angelegt wurde, oder in Fremdwährung in der Datenbank gefunden
wurde.

Interne Währungszahlungen werden initial ohne fx_transaction geladen,
dann aber wie "normale" Fremdbuchungen durchgereicht
Es wird jetzt das fx_transaction flag durchgereicht, wenn die Zahlung im
FGrontend angelegt wurde, oder in Fremdwährung in der Datenbank gefunden
wurde.

Interne Währungszahlungen werden initial ohne fx_transaction geladen,
dann aber wie "normale" Fremdbuchungen durchgereicht
Es wird jetzt das fx_transaction flag durchgereicht, wenn die Zahlung im
FGrontend angelegt wurde, oder in Fremdwährung in der Datenbank gefunden
wurde.

Interne Währungszahlungen werden initial ohne fx_transaction geladen,
dann aber wie "normale" Fremdbuchungen durchgereicht

Im Gegensatz zu AP/AR wird hier direkt create_links aufgerufen.
Es wird jetzt das fx_transaction flag durchgereicht, wenn die Zahlung im
FGrontend angelegt wurde, oder in Fremdwährung in der Datenbank gefunden
wurde.

Interne Währungszahlungen werden initial ohne fx_transaction geladen,
dann aber wie "normale" Fremdbuchungen durchgereicht

Im Gegensatz zu AP/AR wird hier direkt create_links aufgerufen.
Dieser Commit implementiert die template Anpassungen von Geoffrey für
die design40 templates
@jbueren
Copy link
Contributor Author

jbueren commented Feb 21, 2024

Erstmal wieder so "funktionsfähig wie vorher auch", Anmerkungen von Sven hier noch ergänzt:

https://www.kivitendo.de/redmine/issues/656

@jbueren jbueren merged commit c2ab617 into master Feb 21, 2024
1 check passed
@bblessmann bblessmann deleted the 2023-fxtransaction-bugs-5 branch March 15, 2024 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants