Seite 1 von 1

Fakturierung [Konzept]

Verfasst: 15. September 2008 13:33
von chrootdev
Hallo,

ich bastle gerade an einer fakturierungssoftware, und jetzt stehe ich vor einem problem.

Und zwar:

Ich habe in einer tabelle alle artikel mit nettopreis, steuersatz, usw., und in der tabelle "rechnung" werden die erstellen rechnungen eingetragen, mit rechnungsnummer usw. Für die artikel wird nur die jeweilige "artikel id" eingetragen, damit der rest, fals die rechnung nachgedruckt werden muss, einfach aus der artikeltabelle genommen wird.

Das problem ist jetzt, wird ein artikel gelöscht, kann die rechnung nicht mehr nachgedruckt werden.

Wie löst man so etwas am professionellsten?
  • 1. Artikel kann nicht gelöscht werden (ist glaub ich schwachsinn)
    2. aktuelle artikeldaten werden komplett in die rechnungstabelle eingetragen (tendenz hierzu ist am größten)
    3. sontiges?
Ich hoffe bei diesem problem kann mir jemand helfen, danke!

Mfg

Verfasst: 15. September 2008 16:25
von upsala
Artikel deaktivieren... Dasselbe gilt ja auch für Kundendaten usw...

Verfasst: 15. September 2008 16:30
von chrootdev
Danke für die antwort!

Also artikel in der datenbank belassen und einfach deaktivieren? Genauso wie alles andere?

Danke!

Mfg

Verfasst: 15. September 2008 16:42
von FaS
Wird eine Rechnung gedruckt, werden alle referenzierten Artikel mit dem heutigen Datum versehen. Artikel werden dann nicht direkt gelöscht, sondern wie grad erwähnt deaktiviert. Nach einem Jahr oder so können die ja dann gelöscht werden oder so.

Aber das würde ich nicht machen. Artikelpreise beispielsweise können sich doch ändern, oder nicht? Dann würde ein Rechnungsnachdruck ja anders aussehen als das Original??

Verfasst: 15. September 2008 16:45
von chrootdev
Darum gehts mir ja, das die daten theoretisch geändert werden können, und dann sieht kein nachdruck mehr gleich aus!

Darum mein ansatz die daten in einer eigenen tabelle (rechnungen) zu speichern.

Eine redundanz wird ja dadurch ausgeschlossen, das auf die daten aus für den nachdruck nie zugegriffen wird.

Verfasst: 15. September 2008 17:06
von upsala
Meine Meinung:

In der Rechnung steht ArtikelNr, Anzahl, Preis.

Im Artikel steht ArtikelNr, Beschreibung(en), Gültigkeitsdatum, Preisvorschlag, Steuersatz, ...

Verfasst: 15. September 2008 21:05
von chrootdev
Ja, und damit bin ich wieder bei post #1.

Das kann doch nicht so schwierig sein oder?

Ich könnte auch jedes mal überprüfen ob dieser datensatz in der tabelle steht, und den kompletten datensatz kopieren wenn jemand dann was ändert, und dabei setze ich einen flag auf den neuen datensatz das das dann der aktuelle ist.

Aber ob das so sinnvoll ist? Wie wird das bei anderen ERPs gelöst?

Verfasst: 15. September 2008 23:33
von FaS
chrootdev hat geschrieben:Ja, und damit bin ich wieder bei post #1.
Nein, bist du nicht. Ich denke der von upsala genannte "Preis" ist stellvertretend für alle Rechnungsrelevanten Daten; diese dürfen natürlich ab Bestelldatum oder sowas nie mehr verändert werden, müssen also zusammen mit dem Auftrags-Datensatz gespeichert werden. Aus den Auftrags-Daten kann dann die Rechnung zusammengeschustert werden.
Speziellere Angaben, welche für die Rechnung irrelevant sind, residieren dann im Artikel-Datensatz.
Ob du nun sowas wie implicit sharing realisierst oder nicht, ist doch dir überlassen bzw. musst du mit den Anforderungen wie Speicherplatz (keine Ahnung wo sonst noch das Problem sein sollte) abwägen... Allerdings dürfte man die Daten dann ja nie ohne ein vorhergehendes Prüfen auf Auftragsverknüpfungen verändern/löschen (bspw. durch andere Programme oder manuell), was u.U. problematisch werden könnte, von daher musst du das doch eigentlich alles selbst entscheiden, oder etwa nicht?

MfG,
FaS

Verfasst: 16. September 2008 16:18
von methusalem
in einem mir nicht ganz unbekannten Warenwirtschaftssystem haben wir:

Auftragskopfdaten mit eindeutiger ID (enthält Lieferdatum, Kunde und sonstige Stammdaten)

Auftragspositionen mit eindeutiger ID und Verweis auf die ID des Auftragskopfes (enthält Artiklenummer, Preis, Stück, Steuersatz, ...)

Artiklestamm (Artikelnummer, Mwst, Aktiv, ...)
Kundenstamm

Preisliste (Artikelnummer, gueltig_von, gueltig_bis, Preis, ...)

Wird ein Eintrag aus einer Stammdatentabelle (z.B. Artikel) einmal benutzt darf er nie mehr gelöscht werden. Geändert werden kann er aber schon.

Verfasst: 17. September 2008 14:51
von chrootdev
Danke für eure Hilfe, ich habe mich jetzt dafür entschieden, das daten die verwendet wurden, erst dann gelöscht werden wenn die rechnung, nach der gesetzlichen aufbewahrungspflicht gelöscht werden kann.

Jetzt quält mich aber noch die fragen nach diesem beispiel:

Ich weiss es dürfen keine rechtsberatungen gemacht werden, aber geht eigentlich nur um einen hinweis oder so.

Was passiert wenn:
Ich eine rechnung ausstelle, diese drucke und dem kunde aushändige. Danach wird der artikelname geändert.
Nach einiger zeit kommt der kunde und hätte gern einen nachdruck seiner rechnung.

Dann wird die gleiche rechnung, jedoch mit einem anderen artikelnamen ausgedruckt.

Darf das sein?

Danke!

Verfasst: 17. September 2008 15:35
von methusalem
das sollte dir dein Auftraggeber beantworten.

Bei uns ist es auch so, das du aus Blumen Kekse machen kannst. Und ich denke, das wir das längst unterbunden hätten, wenn es nicht zuläßig ist. Aber ich kenne keine Stammdaten bei uns im System, wo eine Änderung der Bezeichnung nicht möglich wäre.

Verfasst: 17. September 2008 15:38
von chrootdev
Hmmm, das problem ist das der auftraggeber eben hier nachfragt! ;-)

Verstehe wie das gemeint ist, da du ja den jeweiligen posten anhand der artikelnummer identifizieren kannst, da ist die bezeichnung eher nebensächlich.

Danke!

Mfg

Verfasst: 17. September 2008 17:34
von upsala
Dann gibts es halt für die Artikel auch eine History:
Bis zum 1.4. heist Artikel 5 Blume
Ab dem 2.4. heist Artikel 5 Erde
Usw...