Ausschnitt aus dem Klassenmodell für Rechnungen, Beschreibung der Berechnung von Rechnungstotalen
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
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:
Auf das Total summiert werden die folgenden Werte jeder Leistung:
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:
Als WertExt zählt der PlanWertExt der Phase, als MinutenInt die Summe der MinutenInt auf den Leistungen der Phasen, als WertKosten wird PlanKostenLeistung verwendet.
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:
Als WertExt wird der Pauschalbetrag der Rechnung als MinutenInt wird die Summe der MinutenInt auf Leistungen der Rechnung verwendet.
WertKosten wird nicht verwendet.
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 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 "Spesen und Auslagen runden" ausgeschaltet ist), auch diese werden dem Total mit dem höchsten Wert zugeschlagen.