0

Rechnungsnummer Jahreswechsel

Hallo,

ich bin dabei die Vorlage "Rechnungen" in meine bestehende Datenbank zu integrieren. Bisher habe ich für alle meine vielen Haken und Probleme damit die Lösung hier im Forum gefunden, danke dafür.

Leider komme ich bei der Rechnungsnummer nicht weiter, in der Vorlage ist der Script ja:

 

let myYear := year(today());

let myRN := last(((select Rechnungen where year(today()) = myYear and substr('ID-Nr', 0, 2) like "re") order by substr('ID-Nr', 2)).'ID-Nr');

'ID-Nr' := "RE" + myYear + "-" + format(number(substr(myRN, 7)) + 1, "0000");

'Datum der Rechnungsstellung' := today()

 

Anhand dessen wird die Nummer fortlaufend gesetzt, das Jahr ändert sich dann beim Jahreswechsel.

Sprich letzte RE-2019008, nächste dann RE-2020009

Mein Ziel wäre es das es beim Jahreswechsel dann auf RE2020-0001 springt. ( Satzzeichen "-" habe ich bei mir etwas verschoben als in der Vorlage)

Habe das mit mehren Varianten versucht, aber irgendwie nicht hinbekommen. Hat jemand einen Tip für mich?

15 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

    versuch es mal so:

    ---

    let myTable := (select Rechnungen where year('Datum der Rechnungsstellung') = year(today()));
    let myNumber := max(myTable.number(substr('ID-Nr', 7))) + 1;
    'ID-Nr' := "RE" + year(today()) + "-" + format(myNumber, "0000");
    'Datum der Rechnungsstellung' := today() 

    ---

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, die DB-Vorlage ist wirklich sehr einfach gehalten und dient im Grunde nur der Demonstration und dem Einstieg in die Thematik. Eine jährlich neu bei 1 beginnende Nummer nach dem Schema "RE-YYYY9999" könnte man z. B. folgendermaßen generieren:

    let myYear := "RE-" + text(year(today()));
    let myRN := last(((select Rechnungen where substr('ID-Nr', 0, 7) = myYear) order by 'ID-Nr').'ID-Nr');
    'ID-Nr' := myYear + format(number(substr(myRN, 7)) + 1, "0000")

    Eine weitere Möglichkeit wäre, die bereits erstellten Rechnungen im angegebenen Zeitraum (hier: Jahr) zu zählen und das Ergebnis um 1 zu erhöhen:

    let myYear := "RE-" + text(year(today()));
    let myRN := cnt(select Rechnungen where substr('ID-Nr', 0, 7) = myYear) + 1;
    'ID-Nr' := myYear + format(myRN, "0000")

    Diese Vorgehensweise setzt allerdings voraus, dass keine Rechnung gelöscht wird (was aber eigentlich sowie nicht passieren dürfte), sondern ggf. ordnungsgemäß storniert (Stornorechnung mit eigener Rechnungsnummer).

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Tja, oder halt so, wie Leo es vorschlägt. ;)

    • pnora
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Perfekt, vielen Dank euch beiden. Dann bastel ich mal fröhlich weiter... wird aber vermutlich nicht die letzte Frage bleiben ;-)

    • pnora
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das hat jetzt alles super funktioniert, bis heute, jetzt springt er von Rechnungsnummer RE2020-0030 auf RE2020-0097...

    bin echt ein bisschen hilflos grad :-(

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich auch. Es dürfte eigentlich bei keiner der oben angebotenen Varianten so ohne weiteres passieren, dass die laufende Nummer plötzlich von 30 auf 97 springt. Habe ich auch noch nie gehört, geschweige denn selbst gesehen. Irgendwas muss sich da geändert haben, entweder an den Daten oder am Code.

     

    Um der Ursache überhaupt auf die Spur kommen zu können, müsste man aber mindestens wissen, welche der Varianten du genommen hattest, also wie der Code konkret aussieht, und ob es seit der letzten Rechnung irgendwelche Änderungen gegeben hat.

    • pnora
    • vor 4 Jahren
    • Gemeldet - anzeigen

    let myTable := (select Rechnungen where year('Datum der Rechnungsstellung') = year(today()));
    let myNumber := max(myTable.number(substr('ID-Nr', 7))) + 1;
    'ID-Nr' := "RE" + year(today()) + "-" + format(myNumber, "0000");
    'Datum der Rechnungsstellung' := today()

    ist der Code bei neuem Datensatz.

    Veränderungen sind bewusst keine gemacht worden, was mich jetzt stutzig gemacht hat sind 55 Einträge in der Änderungshistorie um 17.56 Uhr gestern abend, jedoch war ich gestern um 17.56 gar nicht an meinem Rechner, hatte zwar das Ipad dabei jedoch nicht die App benutzt. Es sind auch keine neuen Rechnungen erstellt worden, es sind Rechnungen aus 2019 bearbeitet worden (sehe aber keine veränderungen).

    • pnora
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2020-02-14 um 15.38.05

    Bildschirmfoto 2020-02-14 um 15.39.01

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hm. Seltsam. Wenn er als neue Nummer die "0097" berechnet, dann muss es auch eine "0096" geben. Schon mal mit der Tabellenansicht bei den Rechnungen geschaut, ob da doch irgendwelche (wie auch immer entstandene) Datensätze mit entsprechenden Nummern liegen? Oder mal nach "RE2020-0096" gesucht? Denn die Einträge in der Historie geben natürlich zu denken.

     

    Vielleicht hat jemand anderes noch eine Idee?

     

    Ansonsten mal beim Support um einen kurzfristigen Zoom-Termin bitten, damit die mal reinschauen können. Ich hätte ja gesagt "Lass mir die DB mal zukommen", aber das ist natürlich aus Datenschutzgründen schwierig.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ah, die Screenshots sehe ich jetzt erst. Da steht ja irgendwas von "RE2020-0091" usw. bearbeitet. Es muss sie also geben.

    • pnora
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Rechnungsnummern bearbeitet sind RE2019-0091 ich hatte auch zuerst gedacht: da sind sie doch... aber ist halt 2019.

     

    Jedoch habe ich gerade selbst das Problem gelöst. Bei durchsicht der 2019er Rechnungen ist mir ja nix aufgefallen, durch deine Anmerkung hab ich es noch mal geprüft und mir gedacht, wenn muss der fehler ja von der Nummer 0096 kommen... und siehe da, dort war auch das Datum der Rechnungsstellung auf 05.05.2020 (statt 2019) geändert.... das habe ich nun korrigiert und siehe da, schon funktioniert es wieder richtig.

    Sorry für die Umstände und mal wieder vielen Dank für die Hilfe!

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Puh ... 🙏 😉

    • Benjamin_Kunzmann_pr
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen,

    weis von Euch jemand ob sich seit dem Ninox Update vor ein paar Tagen etwas an der Funktion format() etwas geändert hat?

    format(number(substr(myRN, 7)) + 1, "0000");

    Diese Formel hat mir immer schön die Rechnungsnummern mit Nullen vor der Ziffer ausgegeben. Das hat sich nun ohne unser Zutun geändert und eine neue Rechnung hat zwar die richtige Zahl aber ohne die richtige Anzahl Nullen davor. 
    Bspw kommt nun raus: RE2020-21 anstatt der gewünschten RE2020-0021

     

    Habt ihr eine Idee oder habt/hattet ihr dasselbe Problem?

     

    LG

    Benjamin

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Benjamin,

    habe ich auch festgestellt. Bei mir hat folgendes geholfen:

    ---

    let myZahl:=(number(substr(myRN, 7)) + 1;

    format(myZahl, "0000")

    ---

    Leo

    • Benjamin_Kunzmann_pr
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke für den Tipp du hast die Erstellung der Nummer aus der Formatdunktion herausgenommen.

     

    funktioniert bei mir nun auch wieder

    danke nochmal 

     

    Gruß Benjamin 

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 15Antworten
  • 2229Ansichten