Standardkontierung
Im Invoice können Standardkontierungen angelegt werden und diese können mit Kreditoren verknüpft werden.
- Standardkontierung aus der Rechnung heraus erstellen
- WEB-Konfiguration
- Verarbeitung der Beträge
- UserExit-Funktionen
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.
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.
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.
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.
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.
Ü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.
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.
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.
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){
;
}