openjverein / jverein

Open JVerein - Open Source Vereinsverwaltung
https://openjverein.github.io
GNU General Public License v3.0
45 stars 17 forks source link

Rechnung erstellen von Versand trennen #418

Closed lenilsas closed 1 week ago

lenilsas commented 4 weeks ago

Ich habe eine Neue View und DB Tabelle Rechnung erstellt. Hier können, ähnlich wie bei Sendenbescheinigung, automatisch Rechnungen aus den Sollbuchungen erstellt werden. Im Druck/Mail werden diese vorhandenen Rechnungen nur noch versendet und nicht erstellt. Dadurch kann jede Sollbuchung auch nur auf einer Rechnung sein. Bildschirmfoto zu 2024-11-01 16-04-22 Bildschirmfoto zu 2024-11-01 16-17-04

Sollbuchungen über die eine Rechnung erstellt wurde können nicht mehr abgerechnet werden. Beim Formular gibt es zwei neue Felder: rechnung_datum und rechnung_nummer Bisher war die Rechnungsnummer ja über den Zähler, der bei jedem erstellten Formular hochgezählt wurde, der ist jetzt eigentlich nicht mehr nötig, stattdessen sollte man rechnung_nummer verwenden.

Bisher habe ich nicht umgesetzt: -erstellen von Rechnungen über das Kontextmenu von Sollbuchungen -den Export bei Rechnung und Mahnung Druck/Mail habe ich entfernt, diese müsste überarbeitet werden -Das Sortieren der Rechnungsausgabe

JohannMaierhofer commented 3 weeks ago

Ich bekomme bei Erstellen eine Exception weil Formular null ist. Es sollte geprüft werden ob eines gesetzt ist.

Dann kann man das Kontextmenü im Rechnungen View mit der rechten Maus öffnen auch wenn keine Einträge existieren. Zumindest gleich nach öffnen des View solange man nicht einmal links geklickt hat. Das gibt dann eine Exception wenn man Anzeigen wählt.

Ich habe den Kommentar korrigiert da ich nicht genau geschaut hatte, dass es das Formular Feld ja gibt.

JohannMaierhofer commented 3 weeks ago

Und das "ohne" im Filter gehört groß geschrieben wie bei den anderen auch. Das hatte ich mal mit einem PR korrigiert.

JohannMaierhofer commented 3 weeks ago

Könntest du dir die AbrechnungslaufDeleteAction anschauen. Ich habe da vor einiger Zeit einige Checks eingebaut. Das Löschen, löscht implizit auch vom Abrechnungslauf erzeugte Buchungen und Sollbuchungen. Die Buchung verweist auf Spendenbescheinigungen. Darum darf man sie nicht löschen ohne auch die Spendenbescheinigung zu löschen. Ich frage das am GUI ab. Entweder zusammen löschen oder gar nicht. Jetzt ist es dann auch so mit der Rechnung. Wenn also eine Sollbuchung des Abrechnungslauf eine Rechnung hat müsste man auch fragen ob sie mit gelöscht werden soll. Wenn nicht darf man den Abrechnungslauf nicht löschen. Jetzt kann es sein, dass sogar beide Bedingungen eintreten.

JohannMaierhofer commented 3 weeks ago

Ich hatte erst oben im Kommentar geschrieben, dass die Eingabe des Formular fehlt. Später habe ich es dann gesehen. Ich hätte nicht erwartet, dass es im Filter Bereich ist. Es wird ja nicht zu Filterung benutzt. Ich hätte da einen eigenen Input unterhalb des Filter erwartet, etwa so wie bei der Spendenbescheinigung. Halt ohne Jahr und nur für das Formular.

lenilsas commented 3 weeks ago

Dann kann man das Kontextmenü im Rechnungen View mit der rechten Maus öffnen auch wenn keine Einträge existieren. Zumindest gleich nach öffnen des View solange man nicht einmal links geklickt hat. Das gibt dann eine Exception wenn man Anzeigen wählt.

Bei mir sind in dem Fall alle Einträge disabled und man kann nicht darauf klicken

lenilsas commented 3 weeks ago

Kommentare eingearbeitet

lenilsas commented 3 weeks ago

Bisher verwende ich alle Kontaktdaten aus der Mitgliedstabelle. Für mich ist die Frage, ob ich sie nicht alle auch in der Rechnung hinterlegen sollte damit sie erhalten beleiben auch wenn das Mitglied geändert wird. So ist es ja auch bei Spendenbescheinigungen und Lastschriften. Was meinst du dazu?

JohannMaierhofer commented 3 weeks ago

Bisher verwende ich alle Kontaktdaten aus der Mitgliedstabelle. Für mich ist die Frage, ob ich sie nicht alle auch in der Rechnung hinterlegen sollte damit sie erhalten beleiben auch wenn das Mitglied geändert wird. So ist es ja auch bei Spendenbescheinigungen und Lastschriften. Was meinst du dazu?

Ja, das wäre wahrscheinlich besser. So bleibt die Rechnung Dokumenten echt. Jetzt könnte beim neu ausdrucken etwas anderes als im Original drinnen stehen.

JohannMaierhofer commented 3 weeks ago

Dann kann man das Kontextmenü im Rechnungen View mit der rechten Maus öffnen auch wenn keine Einträge existieren. Zumindest gleich nach öffnen des View solange man nicht einmal links geklickt hat. Das gibt dann eine Exception wenn man Anzeigen wählt.

Bei mir sind in dem Fall alle Einträge disabled und man kann nicht darauf klicken

Das liegt wohl an meinem System. Ich verwende Linux mit KDE. Seit dem Wechsel zu Fedora mit Wayland statt X11 habe ich auch öfter das Problem, dass ich mit der rechten Maustaste einen Tabelleneintrag selektierte und auf bearbeiten klicke. Dann kommt die Meldung, dass nichts selektiert ist obwohl der Eintrag optisch selektiert erscheint. Das muss wohl ein Problem mit Wayland sein oder die Umsetzung von GTK auf Qt6. Jedenfalls bin ich dann froh, dass zumindest die Meldung erscheint und nichts böses passiert.

Es hilft dann oft wenn ich erst mit der linken Maustaste den Eintrag selektiere und dann mit der rechten Maustaste das Menü öffne.

JohannMaierhofer commented 3 weeks ago

Ich bekomme eine Exception beim Erstellen. Die Rechnung Tabelle in der DB hat kein Formular und Betrag. In Update 0449 wird nur Mitglied und Datum erzeugt.

[Sat Nov 02 09:14:09 CET 2024][ERROR][main][de.jost_net.JVerein.gui.control.RechnungControl$5.handleAction] unable to prepare insert sql statement; nested exception is: org.h2.jdbc.JdbcSQLSyntaxErrorException: Feld "FORMULAR" nicht gefunden Column "FORMULAR" not found; SQL statement: insert into RECHNUNG (DATUM,MITGLIED,FORMULAR,BETRAG) values (?,?,?,?) [42122-199]

lenilsas commented 3 weeks ago

Jetzt werden viele Daten aus dem Mitglied in die Rechnung übernommen, so dass diese erhalten bleibt, auch wenn sich das Mitglied ändert. Ganz geht das jedoch nicht, da auch Beitragsgruppen, Eigenschaften und Zusatzfelder in der Rechnung stehen können. Auch den Kontoinhaber mit allen Daten habe ich nicht kopiert. Der Nachteil dabei ist, dass in bestehenden Rechnungen die Felder von "mitglied...." zu "rechnung..." geändert werden müssten. Das könnte man mit einem DBUpdate machen, da bin ich jedoch nicht sicher ob wir das wirklich machen sollen.

JohannMaierhofer commented 2 weeks ago

In #408 habe ich die Menüs etwas angepasst. Dein Menü passt jetzt nicht ganz dazu. Möchtest du das analog strukturieren?

JohannMaierhofer commented 2 weeks ago

Wenn man im Rechnungen View im Filter das Ohne Abbucher auswählt kommt es zu einer Exception. Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Mehrdeutiger Feldname "ID" Ambiguous column name "ID"; SQL statement: select RECHNUNG.* from RECHNUNG, mitglied where mitglied.id = rechnung.mitglied and mitglied.zahlungsweg <> ? and id in (1) [90059-199] at org.h2.message.DbException.getJdbcSQLException(DbException.java:573) at org.h2.message.DbException.getJdbcSQLException(DbException.java:427) at org.h2.message.DbException.get(DbException.java:205) at org.h2.message.DbException.get(DbException.java:181)

JohannMaierhofer commented 2 weeks ago

Wenn man im Sollbuchungen View auf Export klickt kommt es zu einer Fehlermeldung. Hier wird folgendes aufgerufen: new MitgliedskontoExportAction(EXPORT_TYP.MITGLIEDSKONTO, null)

Die Fehlermeldung ist dann: "Dieser Export wurde aus dem falschen Context aufgerufen!"

Das liegt daran, dass der Context ein MitgliedskontoControl ist und kein RechnungControl.

lenilsas commented 2 weeks ago

Menü angepasst Fehler behoben

JohannMaierhofer commented 2 weeks ago

Ich mache gerade etwas für #443. Bei den Umbenennungen wollte ich auch die View Titel an die Namen im Navigationsbaum anpassen. Also bei den Mail und Druck Views für Rechnungen und Mahnungen auch die Titel entsprechend in Mehrzahl.

Da du die Views umbenannt hast gibt es wahrscheinlich Merge Konflikte. Ich würde darum bei den beuden nichts ändern und dafü könntest du die Titel mit ändern.

Auch bei dem neuen Rechnungen View würde ich dann im Titel Rechnungen vorschlagen.

lenilsas commented 2 weeks ago

habe ich umbenannt

lenilsas commented 2 weeks ago

Ich habe den Fehlertext korrigiert

lenilsas commented 2 weeks ago

Ich finde die Views Rechnungen und Mahnungen unter Druck und Mail nicht sehr intuitiv, insbesondere fehlt hier die Auswahl für welche Rechnungen ich den Versand starten will.

Das sehe ich auch so, sollte aber in einem extra PR gemacht werden, hierdran habe ich ja nichts geändert

Es existieren keine Formularfelder für bspw. den Rechnungsbetrag. D.h. diese würde wieder aus den Mitgliedskonten gezogen werden, wodurch die Rechnung ja auch wieder nicht statisch ist.

Da ich das Ändern der Sollbuchungen verhindere wenn eine Rechnung darüber erstellt wurde kann sich der Betrag nicht ändern. Es werden ja alle Daten der Sollbuchungen für die Rechnung verwendet nicht nur die Endsumme.

Es wäre dann auch noch ganz praktisch wenn noch zusätzliche Infos gespeichert werden würde. Für mich bspw. wäre praktisch zu wissen, wann die Rechnung zuletzt verschickt wurde und insbesondere auch wie viele Mahnungen schon verschickt wurden. Das wäre im Falle eines Mahnverfahrens dann ja auch wichtig. Zusätzlich wäre auch eine Funktion gut, mit der ich beim Versand einer Mahnung zusätzlich noch Mahngebühren festlegen kann. (Da dies aber ein komplett neues Feature wäre kann man das auch in ein eigenes Issue auslagern)

Darüber habe ich auch schon nachgedacht, wäre aber ein extra PR

mbmueller commented 2 weeks ago

Da ich das Ändern der Sollbuchungen verhindere wenn eine Rechnung darüber erstellt wurde kann sich der Betrag nicht ändern. Es werden ja alle Daten der Sollbuchungen für die Rechnung verwendet nicht nur die Endsumme.

Ich kann der Sollbuchungen aber eine Istbuchung zuordnen, wodurch sich der Fehlbetrag ändern kann.

JohannMaierhofer commented 2 weeks ago

Ich finde die Views Rechnungen und Mahnungen unter Druck und Mail nicht sehr intuitiv, insbesondere fehlt hier die Auswahl für welche Rechnungen ich den Versand starten will.

Das sehe ich auch so, sollte aber in einem extra PR gemacht werden, hierdran habe ich ja nichts geändert

So ganz verstehe ich den Kommentar nicht. Man kann in dem View ja doch nach einigem filtern. Also z.B. nur Leute die nicht per Lastschrift zahlen, oder Mails haben. Mit Differenz auch ob die Rechnungen noch offen sind.

Und wenn man noch genauer auswählen will kann man das ja im Rechnungen View machen. Da gibts die gleichen Filter und man sieht die Liste der Rechnungen. Da kann man dann gezieht auswählen und den Dialog über das Kontextmenü öffnen.

Was wären denn die Filter die man hier noch bräuchte?

JohannMaierhofer commented 2 weeks ago

Da ich das Ändern der Sollbuchungen verhindere wenn eine Rechnung darüber erstellt wurde kann sich der Betrag nicht ändern. Es werden ja alle Daten der Sollbuchungen für die Rechnung verwendet nicht nur die Endsumme.

Ich kann der Sollbuchungen aber eine Istbuchung zuordnen, wodurch sich der Fehlbetrag ändern kann.

Das Zuordnen eine Istbuchung ändert ja nichts an der Rechnung und am Rechnungsbetrag. Der Fehlbetrag kann sich ja ändern. Der ist ja dann für die Mahnungen relevant. Die Mahnung basiert halt auf dem Stand zum Tag der Erstellung. Ist ein Teilbetrag bezahlt wird die nächste Mahnung dann anders.

lenilsas commented 2 weeks ago

So ganz verstehe ich den Kommentar nicht. Man kann in dem View ja doch nach einigem filtern. Also z.B. nur Leute die nicht per Lastschrift zahlen, oder Mails haben. Mit Differenz auch ob die Rechnungen noch offen sind.

Da hatte ich den Kommentar falsch gelesen. Ich meinte es wäre gut die Rechnungen aufzulisten bevor sie verschickt werden, da man sonst nicht sieht ob der Filter so gefilter hat wie man es gewollt hat.

JohannMaierhofer commented 2 weeks ago

So ganz verstehe ich den Kommentar nicht. Man kann in dem View ja doch nach einigem filtern. Also z.B. nur Leute die nicht per Lastschrift zahlen, oder Mails haben. Mit Differenz auch ob die Rechnungen noch offen sind.

Da hatte ich den Kommentar falsch gelesen. Ich meinte es wäre gut die Rechnungen aufzulisten bevor sie verschickt werden, da man sonst nicht sieht ob der Filter so gefilter hat wie man es gewollt hat.

Ja, sowas könnte Sinn machen.

mbmueller commented 2 weeks ago

Das Zuordnen eine Istbuchung ändert ja nichts an der Rechnung und am Rechnungsbetrag. Der Fehlbetrag kann sich ja ändern. Der ist ja dann für die Mahnungen relevant. Die Mahnung basiert halt auf dem Stand zum Tag der Erstellung. Ist ein Teilbetrag bezahlt wird die nächste Mahnung dann anders.

Ich verstehe jetzt was ihr meint. Mein Workflow ist da einfach anders als es durch die Änderung hier noch möglich sein wird. Wir haben bei uns oft Mitglieder die nur einen Teil bezahlen und ich möchte sie ja vor allem daran erinnern, was sie noch zu bezahlen haben. Ich habe deswegen folgendes Formular: image

Dadurch ergibt sich vor dem Zuordnen einer Istbuchung folgende Ausgabe: RECHNUNG-20241114-205334.pdf

Und nach Zuordnung bspw.: RECHNUNG-20241114-205435.pdf

In dem man statt "mitgliedskonto_differenz" einfach "mitgliedskonto_betrag" verwendet bleibt das natürlich gleich. Durch die Änderung fällt für mich aber die Möglichkeit einer "Zahlungserinnerung" weg, in der nur die Differenz angezeigt wird. Wäre aber auch etwas, was man in einem anderen Issue behandeln könnte, falls das überhaupt als sinnvoll erachtet wird.

mbmueller commented 2 weeks ago

Da hatte ich den Kommentar falsch gelesen. Ich meinte es wäre gut die Rechnungen aufzulisten bevor sie verschickt werden, da man sonst nicht sieht ob der Filter so gefilter hat wie man es gewollt hat.

Sehe ich auch so, ansonsten würde es eigentlich immer nur Sinn ergeben im Rechnungen-View (bei Mitglieder) zu filtern, dann alle auszuwählen und dann die Rechnung zu verschicken.

mbmueller commented 2 weeks ago

Ich habe jeweils extra Issues erstellt, dann kann man da drüber sprechen, was sinnvoll ist und was nicht. Das soll aber natürlich nicht diesen PR noch weiter verzögern, denn eigentlich sind die Änderungen absolut sinnvoll und gut umgesetzt.

JohannMaierhofer commented 2 weeks ago

In dem man statt "mitgliedskonto_differenz" einfach "mitgliedskonto_betrag" verwendet bleibt das natürlich gleich. Durch die Änderung fällt für mich aber die Möglichkeit einer "Zahlungserinnerung" weg, in der nur die Differenz angezeigt wird. Wäre aber auch etwas, was man in einem anderen Issue behandeln könnte, falls das überhaupt als sinnvoll erachtet wird.

Ich habe noch nie Rechnungen erstellt und kenne mich da jetzt auch nicht so aus. Mein Verständnis war jetzt, dass eine Rechnung Buchungen enthält und diese dann auch nicht mehr geändert wird.

Was du haben willst sind aber doch keine Rechnungen sondern Mahnungen. Mein Verständnis wäre jetzt, dass das was du willst funktionieren sollte aber eben nicht als Rechnung sondern Mahnung. Dafür gibt es ja den Menüeintrag "Mahnung Druck und Mail".

mbmueller commented 2 weeks ago

Was du haben willst sind aber doch keine Rechnungen sondern Mahnungen. Mein Verständnis wäre jetzt, dass das was du willst funktionieren sollte aber eben nicht als Rechnung sondern Mahnung. Dafür gibt es ja den Menüeintrag "Mahnung Druck und Mail".

Das stimmt, wenn aber meine Vorschläge aus #457 implementiert werden würden wäre das (s. #459) eine Zwischenstufe zwischen Mahnung und Rechnung. Sehe aber ein, dass das evtl. dann trotzdem nicht erforderlich ist.

dippeal commented 2 weeks ago

Wenn ich das Richtig sehe, sind hier die Steuerklassen nicht berücksichtigt. Brutto/Netto müsste bitte noch rein, damit die optierten Vereine das nutzen können.

lenilsas commented 2 weeks ago

Wenn ich das Richtig sehe, sind hier die Steuerklassen nicht berücksichtigt. Brutto/Netto müsste bitte noch rein, damit die optierten Vereine das nutzen können.

Da habe ich nichts geändert, das kann nach wie vor genutzt werden. Oder ich verstehe nicht wo du meinst.

lenilsas commented 2 weeks ago

Wir haben bei uns oft Mitglieder die nur einen Teil bezahlen und ich möchte sie ja vor allem daran erinnern, was sie noch zu bezahlen haben.

Das kannst du nach wie vor machen, es ist ja aber eher eine Mahnung als eine Rechnung. Du solltest dann nur die Felder mitgliedskonto_betrag, mitgliedskonto_ist, mitgliedskonto_summe_offen verwenden, dann ist alles ersitlich was gezahlt und was noch zu zahlen ist.

dippeal commented 2 weeks ago

Magst du in der Rechnungen detail view noch die Buttons "Druck/Mail" und "Mahnung Druck/Mail" oder so ähnlich hinzufügen.

lenilsas commented 1 week ago

Schreibfehler habe ich behoben, ich habe auch noch zwei andere bei Abrechnugslauf gefunden

lenilsas commented 1 week ago

Magst du in der Rechnungen detail view noch die Buttons "Druck/Mail" und "Mahnung Druck/Mail" oder so ähnlich hinzufügen.

Das haben wir sonst eigentlich nicht einen Exportbutton im DetailView (Außer bei Spendenbescheinigung, da hatten wir aber auch schon mal die Diskussion ob der entfernt werden soll.) Über Das Kontextmenü im ListView kann "Druck/Mail" erfolgen.