Thomas-Mielke-Software / EasyCash

Eine Mini-Finanzbuchhaltung für Windows, Wine und ahnliche win32-basierten Systeme
GNU General Public License v3.0
12 stars 4 forks source link

Neues Feature: Währungsrechner #21

Open Darkwing371 opened 5 months ago

Darkwing371 commented 5 months ago

Es steht im Raum, ein neues Feature in EC&T zu integrieren: einen Währungsrechner – vorab besprochen hier.

mockup-icon-currencyconverter Anlass und Hintergrund: Auch wenn im Moment für viele das Thema vielleicht noch unter dem Radar fliegt, wird es in Zukunft für mehr und mehr Unternehmer vorteilhaft sein, Kryptowährungen wie Bitcoin als Zahlungsmethode direkt zu akzeptieren und selbstverwahrt zu halten. Erfahrungsgemäß besteht die größte Hürde im Akzeptieren von Bitcoin darin, dies in der jahrelang verwendeten, gewohnten und "liebgewonnenen" Buchhaltungssoftware zu verbuchen. Diese Hürde soll bei EC&T im ersten Schritt ein integrierter Währungsrechner abbauen.

Ein solches Währungsrechner-Tool, einmal existierend, würde sich natürlich auch allgemein auf jede andere Währung anwenden lassen; nicht nur Bitcoin, sondern sämtliche Kryptowährungen (z.B. Monero und Litecoin), sowie politisch kontrollierte Zentralbank-Währungen (wie Schweizer Franken, Dänische Krone, US-Dollar). Einnahmen in anderen Währungen könnten, umgerechnet in Euro, mit Leichtigkeit steuerlich korrekt verbucht werden.


Angedachtes Bedienungskonzept: In den Optionen von EC&T stellt man vorab ein, ob man das neue Feature "Währungsrechner" aktivieren möchte und mit welchen Währungen man gedenkt im Geschäftsverkehr in Kontakt zu treten. Hier trifft man seine Vorauswahl und das werden in der Praxis eventuell zwei, drei Währungen sein. Die Vorauswahl kann natürlich immer und jederzeit sofort erweitert werden.

mockup-einstellungen-waehrungsaktivierung

In der Eingabemaske für die Einnahmebuchung würde daraufhin ein neues Icon und eine Dropdown auftauchen, womit die Währungsumrechnung veranlasst werden kann.

mockup-eingabemaske-currencyconv_EUR

In der Dropdown, befüllt mit der Vorauswahl an gewünschten Währungen, wählt man eine von Euro abweichende Währung und signalisiert damit, dass eine Umrechnung stattfinden soll.

mockup-eingabemaske-currencyconv_Sats-dropdown

Nach Klick auf den Währungsrechner-Button, würde sich anschließend EC&T im Hintergrund den Tageseröffnungskurs am eingegebenen Buchungsdatum abholen und den eingegebenen Fremdwährungsbetrag in Euro umrechnen. (Eine Internetverbindung muss dafür bestehen, damit eine Verbindung zum EC&T-Server aufgebaut werden kann, welcher die Kurse liefert).

mockup-eingabemaske-currencyconv_EUR-done

Im Ergebnis steht daraufhin der entsprechende Euro-Betrag im Betragsfeld und netterweise vorausgefüllt im Beschreibungsfeld der zugrunde gelegte Originalbetrag samt Umrechnungskurs – einfach um die volle Dokumentation automatisch parat zu haben. Der Cursor steht am Anfang des Beschreibungsfeldes, sodass man seinen eigentlichen Buchungstext sofort wie gewohnt eintippen kann.

Dies wäre also die Idee.

Es wäre genial, wenn EC&T hier eine Pionierrolle einnimmt und Buchungen in Fremdwährungen (praktisch: Kryptowährungen wie Bitcoin) einfach, korrekt und nutzerfreundlich erfassbar macht.

😎👍

thomiel commented 5 months ago

Hab mal im Forum darauf verwiesen.

Darkwing371 commented 3 months ago

Ok, also das war's denn jetzt, sozusagen? Eine Rückmeldung gab es dazu?

Deswegen hat Steve Jobs nie die Nutzer gefragt, was sie denken was sie denn möchten, sondern hat einfach gebaut was er gedacht hat. 😅 Kann ja sein, dass die aktuellen Nutzer das nicht brauchen (Survivorship-Bias), aber vielleicht zukünftige Nutzer, die genau aufgrund dessen sich für EC&T entscheiden.

Meinetwegen können wir das Riesenkonstrukt mit den historischen Kursen und der automatischen Kursabfrage verwerfen ... das ist zum jetzigen Zeitpunkt Overkill. Ein kleiner Schritt wäre aber doch: der Eingabemaske noch ein Input-Feld hinzufügen, für den Kurs, sodass sich die Fremdwährungsumrechnung und der hintere Teil des Buchungstextes dann bequem per Knopfdruck ergeben. Ein allgemeiner Rechner ist ja schon da, es müsste jetzt bloß speziell für Kursumrechnungen eine Eingabemaske existieren, dass das Ganze etwas intuitiver und fummelfrei wird. Die nötigen Werte für die Buchung sucht man sich dann halt händisch selbst raus.

Es könnte ähnlich wie oben auf den Screenshots aussehen, freigeschaltet durch das Optionsmenü, oder aber es gibt einen neuen Rechnerknopf, der speziell eine Input-Maske, geeignet für Währungsumrechnungen, öffnet.

Wäre das ein kleiner, feiner Kompromiss?

thomiel commented 3 months ago

Muss nichts heißen. Die Interaktion im Forum konzentriert sich meist darauf, dass Leute konkrete Probleme haben, nicht so sehr, dass es den Wunsch auf aktive Beteiligung gibt, wo es hingeht.

Da ist signifikanter, dass ich ja schon länger um Feature-Vorschläge im Bugtracker gebeten habe und Du der Erste mit dem Währungsumrechner-Wunsch bist, wenn ich mich richtig erinnere.

Das manuelle Eingeben des Währungskurses halte ich für witzlos. Da könntest Du genau so gut einfach eine Formel im Formelrechner anlegen.

Ich halte übrigens weder was vom egozentrischen Steve-Jobs-Ansatz, noch davon alles 1:1 umzusetzen was an Nutzerwünschen reinkommt. Beides führt zu dysfunktionaler Software. Nutzerwünsche müssen erst mal durch eine Abstraktionsmaschine und es muss klar werden, was der Nutzer "eigentlich" will. Das ist eine Kunst. Ich habe zu lange in Läden gesessen wo "Kundenwünsche" direkt aus der Verkaufs- oder Marketingabteilung kamen, das umgesetzt wurde, was regelmäßig zu eierlegenden Wollmilchsäuen führte, Systemen die irgendwann niemand mehr verstehen konnte.

Aber es ist ja freie Software. So what! :D Deal: Wenn Du mir ein kleines PHP-Script baust, das a) täglich einmal die Kurse abfragt und speichert und b) einen API-Zugang für die Abfrage eines Tageskurses erlaubt (d.h. ein JSON mit den Kursen ausspuckt), würde ich einen Knopf in der Buchungsmaske einfügen, der die API-Abfrage macht und die Kursberechnung durchführt. Ich könnte Dir als Vorlage mein Script für die Fahrtenbuch-Synchronisation zur Verfügung stellen. Da ist alles drin, was Du brauchst, im Wesentlichen Queryparameter-Verarbeitung und Datenbankzugriff -- naja, abgesehen von der Abfrage der Dritt-APIs... aber da gibt es sicher Beispiele für, wie man das macht.

Darkwing371 commented 3 months ago

Noch mal zur Eingabemaske: Für diese Währungssache den Formelrechner zu missgebrauchen würde praktisch nicht wirklich funktionieren, da sich ja der Kurs täglich ändert und eventuell für jede Buchung anders ist. Da bringt es nichts so direkt, eine Formel dafür anzulegen. Man müsste in der kleinen Eingabezeile eh alles einzeln eintragen. Und irgendwann entstehen dann halt Vertipper oder man rechnet plötzlich Durch statt Mal, oder sowas. Um hier einfach sicher zu sein, dass man die richtigen Werte und Rechenarten benutzt, wäre so eine dedizierte Währungsrechnermaske gedacht (als eigenes Pop-up-Fenster). Das Feature soll auch gleichzeitig noch den Vorteil haben, dass die getätigte Rechnung noch einmal als vorbereiteter String mit in den Buchungstext eingefügt wird – siehe letzter Screenshot oben. Das müsste dann schon sein, für die Dokumentation. Also wenigstens das wäre als Minimalfeature schon cool, damit könnte man schon was anfangen.

PHP-Script: Ich würde mal sehen, was ich da tun kann. Im Moment überschlagen sich wieder mal die Projekte bei mir, aber prinzipiell hätte ich da schon Bock drauf. Stell mir gern mal das Fahrtenbuch-Script zur Verfügung, wenn Du meinst, das wäre hilfreich. Ich weiß jetzt nicht in welcher Form am besten, als Gist oder als ganzes Repo? Ich würde mir das alles mal ansehen.

Aber: Angenommen das existiert dann alles ... da finden ja dann von EC&T aus Online-Abfragen statt. Wie wäre denn der Fallback, wenn keine Internetverbindung vorhanden ist und der Server nicht erreichbar ist? Müsste nicht wenigstens dann das obige Minimalfeature einspringen und eine händische Eingabe vorschlagen? Ich würde auch noch mal einen Mockup-Screenshot machen, wie ich denke, müsste dieses Währungsrechner-Popup aussehen. Das wir einfach wissen, das wir über das gleiche reden.

Und: Ich weiß nicht, wie viele Währungen es gibt, 200 vielleicht? Und bei den Kryptowährungen noch mal 100× mehr. Die können wir ja nicht alle abfragen, in einer eigenen Datenbank speichern und auf der GUI darstellen. Ich würde vorschlagen, wir beginnen mit einer Vorauswahl von "sane defaults" und wenn sich dann jemand melden sollte der irgendwas vermisst, wird dann eben mal wieder eine hinzugefügt.

Bist Du soweit einverstanden? Müssen wir noch irgend etwas bedenken?

thomiel commented 3 months ago

Für diese Währungssache den Formelrechner zu ~miss~gebrauchen würde praktisch nicht wirklich funktionieren, da sich ja der Kurs täglich ändert und eventuell für jede Buchung anders ist.

Aber Du schlugst doch vor auf die automatische Kursabfrage zu verzichten...? Ok, dann haben wir wohl doch einen Konsens.

Wie wäre denn der Fallback, wenn keine Internetverbindung vorhanden ist und der Server nicht erreichbar ist? Müsste nicht wenigstens dann das obige Minimalfeature einspringen und eine händische Eingabe vorschlagen?

Es gibt keinen vertretbaren Fallback. Wer nicht bereit ist zu warten bis Internet wieder verfügbar ist und zu seiner Bankfiliale oder Wechselstube läuft, um historische Wechselkurse zu ermitteln, der weiß auch ob er Division oder Multiplikation anwenden muss. Und bei Kryptowährungen merkst Du doch selbst, wenn Du drüber nachdenkst, wie unwahrscheinlich es ist, dass jemand ohne Internetverbindung unterwegs ist, oder? ;)

Ich würde vorschlagen, wir beginnen mit einer Vorauswahl von "sane defaults"

Welches da wären die Kryptowährungen, die an den großen Kryptobörsen gehandelt werden. Das sind auch die, für die es eine vernünftige API geben dürfte und für die es einen halbwegs realen Bedarf an Umrechnung geben könnte. Ich glaube, diese Auswahl erledigt sich von selbst.