Announcement

Collapse
No announcement yet.

Komplexe Abfrage zur (Miet-)Auftragsabrechnung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Komplexe Abfrage zur (Miet-)Auftragsabrechnung

    Hallo Forum!

    ich möchte eine Datenbank entwickeln, die es mir ermöglicht unsere Mieten abtzurechnen.

    Die Struktur soll folgendermaßen sein:
    • Es wird ein Auftrag angelegt mit Anfangs und Enddatum (Mietdauer)
    • Zu dem Auftrag werden Angebote erstellt, die die folgende Struktur haben:
      ID, AuftragsID, Stückzahl, Kaufpreis, Mietsonderzahlung
    • Jedes Angebot hat darüberhinaus noch Konditionen, die abhängig von der Mietdauer sind. Z.B. hat Angebot 1 die Kondition 1 "6 Wochen á 120€ pro Woche". Die Kondition 2 zu Angebot 1 könnte sein "für den Rest der Zeit 90€ pro Woche"
    • Damit diese Konditionen auch in der richtigen Reihenfolge abgerechnet werden hat die Tabelle "Kondition" für jeden Datensatz eine Priorität (ganze Zahlen von 0-X). Beim obigen Beispiel hätte Kondition 1 z.B. die Priorität 1 ("zuerst 100€ pro Woche") und Kondition 2, die Priorität 2 ("danach")
    • Ausserdem stehen in den Konditionen Einheiten, damit neben der Periode "Woche", auch Perioden "Tag", oder "Monat" möglich sind

    Zunächst erstmal ein Bild der Datenbankstruktur, die ich mir überlegt habe:


    In der Abfrage um die es eigentlich geht, soll nun ein Auftrag mit all seinen Angeboten und deren Konditionen korrekt abgerechnet werden. Bis jetzt habe ich eine Abfrage erstellt, die die Konditionen in Abhängigkeit der Mietdauer berechnet mit DateDiff():
    Code:
    Mietdauer: DatDiff("ww";[datLiefertermin];[datAbrechnungsdatum])
    Allerdings werden die Prioritäten der Konditionen nicht berücksichtigt.

    Leider kann ich aber die Brücke zur Abrechnung in der richtigen Reihenfolge nicht schlagen.
    Die korrekte Berechnung des Auftragswertes zu Auftrag "1" müsste eigentlich so aussehen:
    Code:
    Angebot 1: 6 Wochen á 120,00€ + 34 Wochen á 90,00€ = 3780,00€
    Angebot 3: 10 Wochen á 90,00€ + 30 Wochen á 80,00€ = 3300,00€
    Auftrag 1: Angebot 1 + Angebot 3 = 3780,00€ + 3300,00€ = 7080,00€
    Vielleicht hat hier einer die ZÜNDENDE IDEE. Wahrscheinlich fehlen mir einfach die grundlegenden DB kenntnisse.

    hier noch der SQl Code, der Abfrage:
    Code:
    SELECT
    tabAuftrag.IDAuftrag, tabAuftrag.datLiefertermin,
    tabAuftrag.datAbrechnungsdatum, tabAngebot.IDAngebot,
    tabKondition.IDKondition, tabEinheitKondition.IDEinheit,
    tabEinheitKondition.txtBezeichnung, tabKondition.intGültigkeitsdauer,
    tabKondition.curBetrag, tabKondition.intPriorität,
    DateDiff("ww",[datLiefertermin],[datAbrechnungsdatum]) AS Mietdauer, [curBetrag]*[Mietdauer] AS Abrechnungsbetrag
    FROM tabEinheitKondition
    INNER JOIN (tabAuftrag
    INNER JOIN (tabAngebot
    INNER JOIN tabKondition
    ON tabAngebot.IDAngebot=tabKondition.intAngebotsID)
    ON tabAuftrag.IDAuftrag=tabAngebot.intAuftragsID)
    ON tabEinheitKondition.IDEinheit=tabKondition.intEinheitsID
    GROUP BY tabAuftrag.IDAuftrag, tabAuftrag.datLiefertermin,
    tabAuftrag.datAbrechnungsdatum, tabAngebot.IDAngebot, 
    tabAngebot.numStückzahl, tabAngebot.curMietsonderzahlung, 
    tabKondition.IDKondition, tabEinheitKondition.IDEinheit, 
    tabEinheitKondition.txtBezeichnung, tabKondition.intGültigkeitsdauer, 
    tabKondition.curBetrag, tabKondition.intPriorität;
    Attached Files
Working...
X