UML Modell Rechnungen

Klassenmodell

 

umlmodell_rechnung.gif

RechnungsTotale

Berechnung der Totale

Eine Rechnung hat 3 Listen von Totalen: totaleLeistungen, totaleSpesen, totaleAuslagen. Das sind alles derived ObjectLists. Dahinter stehen die persistenten Listen xTotaleLeistungen, xTotaleSpesen, xTotaleAuslagen.

Der Aufruf einer der derived Objectlists berechnet bei einer offenen Rechung die Totale neu. Bei einer verrechneten Rechnung wird der Inhalt der persistenten x-Liste verwendet.

Die Totale werden aufgrund der Leistungen, Spesen und Auslagen auf der Rechnung erstellt. Die folgende Beschreibung behandelt die Berechnung der totaleLeistungen, der Fall bei Spesen und Auslagen ist analog.

Es werden alle Leistungen der Rechnung, sowie von allfälligen Pauschalphasen auf der Rechnung durchgegangen.

Bei jeder Leistung werden die Gruppierungseigenschaften für Rechnunstotale zusammengestellt und ein entsprechendes Total angefordert. Angefordert heisst in diesem Zusammenhang, es wird nach einem bereits bestehenden (aufgrund einer Leistung weiter vorne in der Liste bereits erstellten) Total gesucht. Falls keines gefunden wird, wird ein neues angelegt.

Die Gruppierungseigenschaften sind folgende:

  • MWSTCode
  • MWSTSatz
  • Ertragskonto
  • Kostenstelle

Auf das Total summiert werden die folgenden Werte jeder Leistung:

  • wertExt
  • wertInt
  • MinutenInt
  • MinutenExt
  • WertKosten

Pauschalphasen mit Summe 0

Wenn die Summe der Leistungen auf einer Pauschalphase 0 ist (z.B. keine Leistungen auf der Phase), dann wird für die Pauschalphase ein eigenes Total angefordert mit folgenden Gruppiereigenschaften:

  • Rechnung.leistMWSTCode,
  • Rechnung.leistMWSTSatz,
  • Phase.ertragskontoLeistungen, falls angegeben, sonst Projekt.ertragskontoLeistungen
  • Phase.kostenstelleLeistungen, falls angegeben, sonst Projekt.kostenstelleLeistungen

Als WertExt zählt der PlanWertExt der Phase, als MinutenInt die Summe der MinutenInt auf den Leistungen der Phasen, als WertKosten wird PlanKostenLeistung verwendet.

Pauschale Rechnungen

Wenn eine Rechnung pauschal ist, mit Pauschalbetrag <> 0, aber die Summe ihrer Leistungen 0 ist, dann wird für die Rechnung ein Leistungs-Total mit folgenden Gruppiereigenschaften angefordert:

  • Rechnung.leistMWSTCode,
  • Rechnung.leistMWSTSatz,
  • Projekt.ertragskontoLeistungen,
  • Projekt.kostenstelleLeistungen

Als WertExt wird der Pauschalbetrag der Rechnung als MinutenInt wird die Summe der MinutenInt auf Leistungen der Rechnung verwendet.

WertKosten wird nicht verwendet.

Behandlung von Rabatt auf Rechnung

Hat eine Rechnung Rabatt drauf und der LeistWertExt der Rechnung ist <> 0, dann wird der Rabattbetrag anteilmässig auf alle Leistungs-Totale verteilt, jeweils gemäss Rundungsregel der Währung gerundet. Dabei wird der Wertext abzüglich Rabatt in den separaten Attributen WertextRabatt und MWSTBetragRabatt des Totals gespeichert. Die Verwendung der separaten Attribute ist wegen rückwärtskompatibilität notwendig.

Durch die Rundung der Rabattanteile gibt es Rundungsdifferenzen, diese werden anschliessend noch dem Rechnungtotal mit dem höchsten Leistungswert zugeschlagen.

Es gibt noch den Spezialfall, wo eine Rechnung keinen Leistungswert, aber einen Rabatt hat. Auch das behandeln wir. Dann wird ein Total wie bei pauschaler Rechnung angefordert und dort nur WertExtRabatt und MWSTBetragRabatt gesetzt.

Damit Rabatt immer korrekt berücksichtigt werden, sollte bei Leistungs-Totalen immer WertExtRabatt und MWSTBetragRabatt verwendet werden.

Behandlung von Spesen und Auslagen

Behandlung von Spesen und Auslagen ist analog, ausser dass keine Minutenwerte summiert und keine Rabatte berücksichtigt werden.

Bei Spesen und Auslagen können bei den MWSTBeträgen Rundungsdifferenzen auftreten (wenn die Systemeinstellung "MWST auf Spesen und Auslagen runden" ausgeschaltet ist), auch diese werden dem Total mit dem höchsten Wert zugeschlagen.


04.07.2008 | 12.03.2014: Screenshot RechnungsTotale ausgetauscht: Zugriff über derived Totale (ohne x).
Produktlinien: Diverse
Module: Leistung & CRM