Ich mache ein BI System für eine Bank-ähnliche Institution. Dieses System sollte Kreditverträge, Rechnungen, Zahlungen, Strafen und Zinsen verwalten.Wie werden Transaktionen, Schulden, Zinsen und Strafzahlungen verwaltet?
Jetzt muss ich eine Methode erstellen, die eine Rechnung erstellt. Ich muss berechnen, wie viel der Kunde gerade bezahlen muss. Er hat eine Schuld, für die er bezahlen muss. Er muss auch für die Zinsen bezahlen. Wenn er mit der fälligen Zahlung zu spät kam, werden für jeden Tag, an dem er sich verspät, Strafen verhängt.
Ich dachte, gab es 2 Möglichkeiten dies zu tun:
- von nur 1 ursprünglichem Zustand mit - dem ursprünglichen Zustand Vertrag. Und jedes Mal, um die monatliche Zahlung zu berechnen, die der Kunde vornehmen muss, berücksichtigen Sie die tatsächlich getätigten Zahlungen.
- Indem man ständig Zwischenzustände macht, vom letzten Zwischenzustand ausgeht und nur die Ereignisse berücksichtigt, die zwischen der Zeit dieser beiden Zwischenstaaten stattgefunden haben. Dies bedeutet, einen Job zu haben, der periodisch (täglich, monatlich) arbeitet, den letzten gespeicherten Status übernimmt, die Änderungen anwendet (fällige Zahlungen, tatsächliche Zahlungen, Änderungen in globalen Konstanten wie der von der Zentralbank kontrollierte Strafzins) und speichert der resultierende Zustand.
Die Vorteile der ersten Variante:
- Immer aktuell. Wenn Änderungen mit einem Datum aus der Vergangenheit vorgenommen wurden (ein Typ kam mit einer bezahlten Rechnung 5 Tage, nachdem er die Zahlung an die Bank geleistet hat), werden sie korrekt in den Ergebnissen wiedergegeben.
Die Mängel der ersten Variante:
- nimmt lange
- Dokumente mit den aktuellen Ergebnissen gedruckt berechnen abweichen können, wenn die richtigen Datenänderungen aufgrund Operationen mit einem Rück Datum eingegeben.
Die Vorteile der zweiten Variante:
- Arbeitet schnell und aggregierten Daten für die Suche und Berichte jederzeit zur Verfügung.
- Anfällig für Fehlgeschlagene Jobs:
- Einfachere
die Mängel der zweiten Variante zu berechnen.
- Fehler in der Vergangenheit propagieren bis zum Ende, zu den endgültigen Ergebnissen.
- Ein Zwischenergebnis kann nicht geändert werden, wenn neue Daten aus früheren Transaktionen eintreffen (es kann, aber es ist schwer und mit vielen Implikationen, also würde ich es lieber als Tabu markieren)
- Jobs können nicht erfolgreich und ohne Probleme ausgeführt werden Wenn eine noch nicht abgeschlossene Transaktion vorliegt (eine ausgestellte Rechnung, die noch nicht bezahlt wurde)
Gibt es einen anderen Weg? Kann ich die Vorteile dieser beiden kombinieren? Welche wird in anderen ähnlichen Systemen verwendet, die Sie kennengelernt haben? Bitte teilen Sie jede Erfahrung.
Nun, diese Art von beantwortet die Frage. Zumindest fühle ich mich viel selbstsicherer. Vielen Dank :) – AlexanderMP