2016-08-17 11 views
2

Ich baue eine Anwendung für Lagerverwaltung und Abrechnung. Das Lager ist alles Paletten, also ist das sehr einfach, eine Palette = $ X pro Monat. Aber ich habe Mühe, durch das beste Datenbankdesign zu denken, um zu verfolgen, welche Bedürfnisse wann berechnet werden. Eine Palette könnte einen Tag pro Monat im Jahr sitzen usw. Sie kommen und gehen in scheinbar zufälligen Intervallen. Ein Kunde kann über 1000 Paletten haben, die alle zu unterschiedlichen Zeiten angekommen sind.
Wie kann ich die Datenbank und die Logik am besten strukturieren, um zu verfolgen, was in Rechnung gestellt wurde und was in Rechnung gestellt wird?Lagerverwaltung wiederkehrende Abrechnung Datenbank Design und Logik

Antwort

1

Tabelle 1: Paletten (PalletID (PKey), Kosten pro Monat)

Tabelle 2: Holdings (HoldingID (PKey), Kundennummer, Kundenname, PalletsID, Startdatum, das Rückgabedatum)

Sie benötigen einen Java/.net basierte Benutzeroberfläche Daten aus diesen beiden Tabellen zu ziehen, wo durch Paletten-Tabelle Bezug genommen wird, können Sie Menge wie unten

  1. Kunde X berechnen:

  2. Startdatum: XXXX: XX: XX

  3. Return Datum: XXXX: XX: XX

  4. Anzahl erhalten Monaten zwischen diesen beiden Terminen.

5. Rechnungsbetrag wird Anzahl * Kosten der Paletten

hoffe, das hilft

+0

Vielen Dank für die Antwort sein. Einige spezifischere Fragen. Nehmen wir an, eine Palette kommt am 15. Juli an und geht am 20. August. Das sind 2 Abrechnungszyklen. Ich muss es irgendwie als versendet markieren, aber es muss immer noch für den zusätzlichen Monat in Rechnung gestellt werden, dann natürlich im nächsten Monat nicht berechnet. Wie würde ich das schaffen? – bairdmar

+0

Sie haben zwei Daten 2016: 07: 15 und 2016: 08: 20. Mit vielen eingebauten Methoden können Sie die Anzahl der unterschiedlichen Monate zwischen diesen 2 Daten berechnen. und einfach noOfMonths * Kosten für Paletten –

+0

Gute Antwort. Einige Tipps ... [Standard-Datumsformat] (https://en.m.wikipedia.org/wiki/ISO_8601) verwendet Bindestriche anstelle von Doppelpunkten, JJJJ-MM-TT wie 2016-01-23. Verwenden Sie die Klasse 'java.time.LocalDate', um die Daten darzustellen, wenn Sie nur einen Standort haben und sich nicht um Zeitzonen kümmern (zu einem bestimmten Zeitpunkt variiert das Datum je nach Zeitzone). –