Rechnungsnummer erzeugen in abhängigkeit vom Datum

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von echnaton.

    Rechnungsnummer erzeugen in abhängigkeit vom Datum

    Hallo
    Ich habe mal eine Frage an die Experten unter euch.
    Ich habe ein Prog geschrieben zur Verwaltung der verkauften Artikel und meinen Einkäufen. Es ist nur ein Kleingewerbe.
    Trotzdem bekam ich die Nachricht vom Finanzamt das ich in Zukunft eine "Rechnungsnummer" auf den Rechnungen angeben muss.
    Bisher war es nicht nötig (da Kleingewerbe)
    Soweit sogut.
    Nun stehe ich vor dem Problem mit der Nummer.
    Die Daten liegen in einer Access DB und sind gebunden an Eingabe-Textboxen und DGV.

    Die fortlaufende Nummer sollte bei " Me.DatenBindingSource.AddNew()automatisch in der Textbox stehen was eigentlich nicht das Problem ist.
    Einfach letzen Datensatz holen und ( textbox.text +1) aber so einfach ist es nicht.
    Ich möchte gerne das Eingabedatum mit einfließen lassen und das nur innerhalb eines Monats hochgezählt wird.Somit kann Ich später nach der Nr. besser filtern
    also z.b "25.04.2020/1", "27.04.2020/2", "29.04.2020/3" usw..................
    Folgemonat "25.05.2020/1", "27.05.2020/2", "29.05.2020/3" usw..................
    Eine Spalte "Rechnungsnummer" ist in der DB vorhanden "String" die allerdings noch DBNull ist.
    Die Spalte "Datum" ist ebenfalls vorhanden
    so, nun die Frage an euch. Ist soetwas machbar wenn ja. wie wäre euer Ansatz??
    SA
    Moin,

    ich löse das etwas anders.
    Es gibt bei mir eine interne Vorgangsnummer (!= Rechnungsnummer), welche als Autoincrement deklariert ist. Über diese läuft eigentlich alles im Programm ab.
    Weiterhin gibt es eine Tabelle mit Zahlenspalten (Rechnungsnummer, Lieferscheinnummer, Auftragsnummer ...) welche sich beim Drucken des Vorgangs automatisch erhöht.

    Sobald eine Rechnung also gedruckt wird, bekommt diese eine fortlaufende Nummer, die vom Anwender auch nicht geändert werden kann.
    Der Vorgang bekommt zusätzlich zur internen Vorgangsnummer auch noch Felder für Rechnungsnummer, Lieferscheinnummer, Auftragsnummer ect. In diesen stehen dann die reellen Werte, die das Finanzamt haben will.

    Fortlaufend wird ein wichtiger Punkt sein, wenn da Rechnungsnummer zwischen fehlen, gibts Ärger vom Finanzamt, wenn du nicht nachweisen kannst, warum die fehlen.

    Ein Datum mit irgendetwas als Rechnungsnummer zu verwenden halte ich für unsinnig, da daran nichts Fortlaufend ist.
    Hallo,

    1.) Möchtest du, dass das von der DB automatisch hochgezählt wird oder das programmseitig vergeben.
    2.) Meiner Erfahrung nach steht das Finanzamt auf forlaufende, nicht unterbrochene Nummernkreise. Es geht zwar auch anders, aber man sollte sich immer bemühen den Wünschen des Finanzamtes zu entsprechen ;)
    3.) Wie lauten die Tabellen und Feldnamen die hier relevant sind?


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.
    Tja, es soll möglichst Automatisch ablaufen. Das in der DB automatisch hochzählen hört sich gut an
    Wie funktioniert das ?? Einstellung in der Access DB??
    Programmtechnisch genauso möglich. Einmal Programmiert läuft es ja auch Automatisch.
    Ja, Fortlaufend ist ein wichtiger Punkt (Darf nix zwischen fehlen.)
    Lieferscheinnummer,oder ähnl wird nicht benötigt. wie gesagt Kleingewerbe. Wir wollen das Finanzamt nicht verwöhnen und auch nicht mit Kanonen auf Spatzen schießen
    Wir haben ein Kleingewerbe mit ca. 200 Transaktionen im Monat. Viel mehr wirds es kam werden.
    und wie gesagt stelle ich es mir so vor:

    Letzten Datensatz holen
    celle "Rechnungsnummer" Auslesen
    Nr um "1" erhöen und in Textbox schreiben.

    Wenn das mit dem Datum keine gute Idee ist dann lasse Ich das Datum weg. (Gibt es Bestimmungen wie eine Nummer auszusehen hat??
    Ich meine, Ich hab noch nie eine Rechnung bekommen mit Rechnungsnummer 1,2,3,4,5,usw.
    Im Programm ist das Ausdrucken der Rechnung nicht integriert. Das mach ich mit Office
    Wäre aber für Später noch ein Projekt. (Mit Drucken und Ansteuerung, report usw. stehe ich auf Kriegsfuß)
    Es gibt nur eine Tabelle "Daten"



    ID
    Datum...................................... Datetime
    Rechnungsnummer.........................String
    Bezeichnung................................String
    Einnahmen.................................currency
    Einnahmen_gesamt.......................currency
    Ausgaben_Verkäufer.......................currency
    Ausgaben_Material........................String
    Ausgaben_Versandkosten.................currency
    Ausgaben_Versandkosten_Verkauf.......currency
    Ausgaben_Kaufpreis.......................currency
    Ausgaben_Kaufpreis_gesamt.............currency
    Vorname.....................................String
    Nachname...................................String
    Strasse.......................................String
    Hausnummer................................String
    Ort...........................................String.

    Gruß
    SA
    Möglicher Lösungsweg

    Folgende 3 Felder:
    1. Präfix (String) z.B. R-20-03-
    2. Nummer (Integer) z.B. 1234
    3. Rechnungsnummer (String) z.B. R-20-03-1234

    bei der Anlage einer Rechnung den Max/Letzten Wert für 'Nummer' aus der Datenbank abfragen, bei welcher der 'Präfix' identisch ist mit dem momentan gültigen Präfix (dieser basiert auf dem aktuellen Monat). Wenn man dann keine Ergebnisse bekommt, bei 1 Anfangen zu Nummerieren. Ansonsten das Ergebnis +1 verwenden.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ja, dieser Lösungsweg gefällt mir.
    da muss ich aber das Präfix variabel gestalten in abhängigkeit vom Datum
    1. Eingabedatum aufgliedern
    2. Jahr und Monat auslesen und daraus ein neues Präfix erstellen (für jeden neuen Monat und auch jahr)
    im aktuellen Monat dann den eigentlichen Zähler um 1 erhöhen

    da bleib ich mal dran....
    vielen Dank für den guten Tip
    SA
    So mit dem präfix funktioniert schonmal


    VB.NET-Quellcode

    1. Private Sub dtp_Datum_ValueChanged(sender As Object, e As EventArgs) Handles dtp_Datum.ValueChanged
    2. tbx_Datum.Text = dtp_Datum.Value.ToShortDateString
    3. Dim Datum As Date = tbx_Datum.Text
    4. tbx_Rechnungsnummer.Text = "R-" & CStr(Datum.Year) & "-" & CStr(Datum.Month) & "-" & 123
    5. End Sub

    jetzt noch einbinden und hochzählen
    Vielen dank euch allen
    SA
    Hey,

    eine dringende Empfehlung für Dich => Mach Option Strict On

    vb-paradise.de/index.php/Threa…?postID=908193#post908193
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o