Standardkontierung

Im Invoice können Standardkontierungen angelegt werden und diese können mit Kreditoren verknüpft werden.

Standardkontierung aus der Rechnung heraus erstellen

Eine Standardkontierung kann direkt aus einer Rechnung heraus erzeugt werden und es können Standardkontierungen angewendet werden. Die Anzeige der Aktionen kann projektspezifisch gesteuert werden.

image-1668165178082.png

Die benutzerdefinierten Aktion "Kontierung anwenden" (technisch "UDA_StandardAccounting") wird standardmäßig als Aktionslisten-Eintrag angezeigt. Über die Aktion öffnet sich ein Pop-Up mit der Auswahl der Standardkontierungen. Der Anwender wählt eine Standardkontierung über den Namen aus und drückt auf "OK". Die Standardkontierung wird direkt angewendet.

Über die Aktion "Kontierung erstellen" (technisch "UDA_CreateAccounting") kann die Kontierung zur aktuellen Rechnung als Kontierungsvorlage gespeichert werden. Im folgenden Pop-Up-Fenster muss zunächst eine Beschreibung für die Standardkontierung angegeben werden. Hier sollte ein möglichst sprechender Name mit vielen Informationen gewählt werden. Auch wenn im System viele Standardkontierungen erzeugt werden sollte der Anwender seine gewünschte Standardkontierung schnell wieder finden können.

Beim Kontierungstypen muss der Anwender zunächst entscheiden, ob bei der Anwendung der Standardkontierung die Ausgangsbeträge in den Positionen neu gesetzt werden sollen. Der Standard-Ausgangsbetrag ist Netto. Der Ausgangsbetrag kann über einen Parameter ("StandardAccounting_GrossCalculation") auf Brutto geändert werden.

Beträge prozentual berechnen

Die Beträge können bei Anwendung der Standardkontierung prozentual vom Kopfbetrag berechnet werden. Hierfür wird pro Position der Anteil des Positionsbetrags am Kopfbetrag berechnet.

Fixe Beträge übernehmen

Der Positionsbetrag (Netto oder Brutto) kann aus der aktuellen Rechnung als Vorlage verwendet werden. Dies eignet sich bei wiederkehrenden Rechnungen mit gleichen Beträgen wie Mietrechnungen.

MwSt-Zuordnung

In diesem Fall werden die Ausgangsbeträge nicht berechnet oder aus der Standardkontierung übernommen. Die Beträge aus den bestehenden Positionen bleiben bestehen und anhand der MwSt wird zum Beispiel ausgehend vom Nettobetrag der Brutto betrag und die Steuer berechnet.

image-1668172287962.png

Zuletzt muss gewählt werden bei welchen Rechnungen die Standardkontierung angezeigt werden soll. Hierfür stehen 3 Auswahl-Optionen zur Verfügung. Hierzu ist ergänzend zu erwähnen, dass Mandant und Buchungskreis der aktuellen Rechnung zusätzlich in der Standardkontierung gespeichert werden und als Filter bei der Anzeige verwendet werden.

Kontierung mit Kreditor verknüpfen

Die Kontierung wird fest mit einem Kreditor verknüpft. Bei der Auswahl einer Standardkontierung wird immer auf Kontierungen mit übereinstimmenden Mandanten und Buchungskreis gefiltert. Kontierungen, die zu einem Kreditor verknüpft sind, werden dem Anwender nur angezeigt, wenn in der Rechnung derselbe Kreditor ausgewählt wurde.

Kontierung als Standard für den Kreditor festlegen

Die aktuelle Kontierung kann als Standard für den in der aktuellken Rechnung ausgewählten Kreditor definiert werden. Zu einem Kreditor kann nur eine Kontierung als Standard definiert werden (genauer gesagt muss die Kombination aus Kreditor, Mandant und Buchungskreis eindeutig sein). Wenn in einem UserExit - zum Beispiel initial bei Eingang einer Rechnung - die Funktion "DocFile.useCreditorDefaultAccounting()" aufgerufen wird, dann wird diese Kontierung automatisch angewendet.

Kontierung global für alle Kreditoren freigeben

Wenn eine Kontierung als "global" markiert wird, dann greifen bei der Anzeige der Auswahlliste nur noch die Filter für Mandant und Buchungskreis.

image-1668172317361.png

WEB-Konfiguration

Standardkontierungen können über die WEB-Administration gepflegt werden. Im Standard wird der Konfigurations-Ordner auf der Invoice-Administrations-Outbar als Unterordner unter "Feldkonfigurationen" ausgeliefert. Projektspezifisch kann sich der Ordner an anderer Stelle befinden.

image-1668150548099.png

In der initialen Ansicht kann der Anwender über den Button "Neuer Eintrag" Standardkontierungen hinzufügen. Bestehende Einträge können über das Stift-Symbol am Ende der Zeile editiert werden und über das Mülleimer-Symbol können Standardkontierungen gelöscht werden. Durch einen Doppelklick auf einen Eintrag öffnen sich die gespeicherten Positions-Einträge auf dem zusätzlichen Register "Positionen" und zusätzlich wird das Register "Kreditoren" mit den verknüpften Kreditoren eingeblendet.

image-1668150934302.png

Über das Register "Kreditoren" kann der Standardkontierung ein Kreditor zugeordnet werden. Über die Checkbox kann festgelegt werden, dass diese Kontierung zum gegebenen Zeitpunkt automatisch angewendet werden soll. Dieser Zeitpunkt kann bei den Projekten variieren. Daher muss die Funktion "docFile.useCreditorDefaultAccounting()" in das passende User-Exit hinzugefügt werden. Die Funktion liefert "true" oder "false" zurück. Im UserExit "ue_Initialization()" wird die Funktion bereits auskommentiert ausgeliefert.

image-1668151195002.png

Die Standardkontierung kann in der Auslieferung alle üblichen Kontierungs-Spalten speichern. Viele aktiven Standard-Feld-Spalten werden automatisch eingeblendet. Über das Register "Benutzerdef. Felder" können bis zu 10 zusätzliche Feld-Spalten über eine Auswahlliste zugeordnet werden.

image-1668152288195.png

 

Verarbeitung der Beträge

Bei der Anlage der Kontierungs-Zeilen gibt es die Spalten "Netto (fix)" und "Netto (prozentual)". Über den Parameter "StandardAccounting_GrossCalculation" kann die Berechnung auf Brutto geändert werden.

Prozentuale Aufteilung

Wenn aus einer Rechnung heraus eine neue Standardkontierung erstellt wird, dann muss die Summe der Netto-Zeilenbeträge dem Kopfbetrag entsprechen. Pro Zeile wird der prozentuale Anteil zum Kopfbetrag ausgerechnet. Bei einem Netto-Kopfbetrag von 100€ und 2 Zeilen zu 30€ und 70€ würde die erste Zeile mit 30% und die zweite Zeile mit 70% bewertet. Bei manueller Anlage der Positionen über die WEB-Konfiguration muss der Anwender darauf achten, dass die Summe 100% Prozent ergibt.

Bei Anwendung dieser Beispiel-Standardkontierungen wird der Kopfbetrag entsprechend prozentual aufgeteilt. Bei einem Betrag von 200€ würden 60€ (30%) in die erste Zeile eingetragen und 140€ (70%) in die zweite Zeile.

Fixe Beträge übernehmen

Alternativ zur prozentualen Aufteilung können Beträge fix festgelegt werden. Ein Anwendungsbeispiel wären zum Beispiel Mietrechnungen, wo jeden Monat ein Betrag von zum Beispiel 170€ auf mit einer definierten Kontierung versehen wird und ein Betrag von 60€ auf eine abweichende Kontierung.

MwSt-Zuordnung

In diesem Fall werden keine Beträge gespeichert. Bei Anwendung der Kontierung werden die Beträge abhängig vom Ausgangswert (Netto oder Brutto) über den MwSt-Satz neu berechnet. Der Ausgangswert wird bei dieser Option nicht neu gesetzt! Es werden lediglich die abhängigen Beträge Brutto und Steuer neu berechnet. Sollen weitere abhängige Beträge neu berechnet werden, dann muss dies in der UserExit-Funktion "gentable.ue_AfterStandardAccounting()" umgesetzt werden.

UserExit-Funktionen

Um die UserExit-Funktionen nutzen zu können werden sehr gute PortalScripting-Kenntnisse und Kenntnisse der im Invoice verwendeten JavaScript-Objekte vorausgesetzt.

Eine fix zu einem Kreditor verknüpfte Standardkontierung kann automatisch über eines der bestehenden UserExits aufgerufen werden. Im Skript "DEXPRO__UserExit_WorkflowLib" befindet sich zum Beispiel die UserExit-Funktion "ue_Initialization" und hier wird die Funktion "DocFile.useCreditorDefaultAccounting()" bereits auskommentiert ausgeliefert. Für den folgenden Screenshot wurde der Part einkommentiert.

image-1668173091685.png

Bei der Anwendung einer Standardkontierung werden die Rechnungspositionen neu erstellt. Hierfür wird ein Gentable-Objekt erstellt und nach der Ausführung und vor dem Schreiben des Gentable ("Gentable.createGentableStr()") wird die User-Exit-Funktion "Gentable.ue_AfterStandardAccounting()" ausgeführt. Die Funktion kann verwendet werden um zum Beispiel zusätzliche Betragswerte zu berechnen. Die Funktion wird bereits im Skript "DEXPRO__UserExit_GentableAdd" ausgeliefert.

Erläuterungen zum Gentable-Objekt finden sich an anderer Stelle der WEB-Dokumentation.

/** Before standard accounting execution
 * @since Invoice 1.1.300
**/
Gentable.prototype.ue_BeforeStandardAccounting = function(standardAccountingObj){
    /* example: cut Gentable to standard accounting position size *
    accObj.getAccountingPositions(accObj.AccountingName);
    var accPos = accObj.Accounting[accObj.AccountingName];
    if( this.Rows.length>accPos.length ){
        for( r=this.Rows.length-1; r>=accPos.length ;r-- ){
            if( this.Logg instanceof Log ){
                this.Logg.info("["+r+"] this.Rows.pop();");
            }
            this.Rows.pop();
        }
    }
    */
}

/** Before standard accounting execution
**/
Gentable.prototype.ue_AfterStandardAccounting = function(standardAccountingObj){
    ;
}