Zum Inhalt springen

Kontierungs-Felder steuern

Jedes Feld im Kontierungs-Formular ist ein Eintrag in der Tabelle conf.AccountingFields (siehe Kontierung konfigurieren). Diese Seite beschreibt, wie du steuerst, ob ein Feld sichtbar und bearbeitbar ist, und wie Felder voneinander abhängen.

Ohne weitere Konfiguration gilt, was in conf.AccountingFields steht:

  • Visible: ob das Feld angezeigt wird.
  • Disabled: ob das Feld gesperrt ist.

Erlaubt sind die Werte "true" und "false", jeweils mit Anführungszeichen. Statt eines festen Werts kannst du auch einen einfachen Ausdruck hinterlegen, den das Formular im Browser auswertet, zum Beispiel:

!this.disableVat

Der Status eines Felds lässt sich auch während der Bearbeitung vom Backend aus ändern, zum Beispiel abhängig vom gewählten Konto. Dafür hat jede Kontierungs-Position Status-Eigenschaften wie AccountVisibility. Damit das Formular weiss, welches Feld zu welcher Eigenschaft gehört, trägst du in der Spalte VisibilityTarget von conf.AccountingFields den Namen der Eigenschaft ein, zum Beispiel accountVisibility beim Konto-Feld.

Folgende Werte sind möglich:

WertWirkung
default (oder leer)Es gilt die Konfiguration aus Visible und Disabled.
activatedFeld wird angezeigt und ist bearbeitbar.
deactivatedFeld wird angezeigt, ist aber gesperrt.
hiddenFeld ist unsichtbar, sein Platz im Formular bleibt aber frei.
removedFeld wird entfernt, die folgenden Felder rücken nach.
forceRequiredFeld wird angezeigt und muss ausgefüllt werden.
noValidationFeld wird angezeigt, alle Prüfungen auf dem Feld entfallen.
replacedBy:NAMEFeld wird durch eine im Frontend definierte Vorlage mit dem Namen NAME ersetzt.

Beispiel aus einem kundenspezifischen Validierungs-Plugin (Ableitung von IrValidationManager):

protected virtual void LinePropertyChangedCostcenterId(ref UpdateIrCase updateIrCase,
ref UpdateIrCaseResponse updateIrCaseResp, IrItemLine itemLine)
{
itemLine.AccountVisibility = IsSpecialCostcenter(itemLine.CostcenterId)
? "activated"
: "hidden";
updateIrCaseResp.ForceAccountingFormReload = true;
}

Die Methode läuft, wenn sich die Kostenstelle ändert. Je nach Kostenstelle wird das Konto-Feld angezeigt oder ausgeblendet, danach wird das Formular neu aufgebaut.

Ein häufiger Wunsch: Ist im Konto-Feld ein Bilanzkonto gewählt, soll das Kostenstellen-Feld verschwinden. Das geht ohne zusätzliches Formular.

  1. Stammdaten: Ob ein Konto ein Bilanzkonto ist, steht in Mstr.Accounts in der Spalte IsBalanceSheetAccount. Meist füllt der Stammdaten-Import diese Spalte über seine Mapping-Konfiguration.

  2. Kostenstellen-Feld: Trage beim Feld der Kostenstelle in der Spalte Visible ein:

    !this.isBilanzkonto

    Das Formular setzt isBilanzkonto automatisch, sobald ein Bilanzkonto gewählt ist.

  3. Konto-Feld (optional): Trage beim Feld des Kontos in der Spalte ColSpan ein:

    getColumnSpanDependingOnIsBilanzkonto

    Das Konto-Feld wird dann bei einem Bilanzkonto doppelt so breit (20 statt 10) und füllt den Platz der ausgeblendeten Kostenstelle.

Welche Konten und Kostenstellen im Formular zur Auswahl stehen, lässt sich über Stammdaten-Tabellen einschränken:

TabelleWirkung
Mstr.AccountCostCentersZu einem gewählten Konto stehen nur die zugeordneten Kostenstellen zur Auswahl.
Mstr.AccountGroupsFür eine Gruppe (zum Beispiel „Küche“) stehen nur die zugeordneten Konten zur Auswahl.
Mstr.CostCenterAccountGroupsFür eine Gruppe stehen nur die zugeordneten Kostenstellen zur Auswahl.

In der Spalte DropDownOptions von conf.AccountingFields legst du für eine Auswahlliste die Breite der aufklappenden Liste fest:

{
"minWidth": "15vw",
"width": "300",
"resizeEnabled": true
}

Mit resizeEnabled kann der Benutzer die Liste selbst grösser ziehen.