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.
Feld-Status aus der Datenbank
Abschnitt betitelt „Feld-Status aus der Datenbank“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.disableVatFeld-Status aus dem Backend steuern
Abschnitt betitelt „Feld-Status aus dem Backend steuern“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:
| Wert | Wirkung |
|---|---|
default (oder leer) | Es gilt die Konfiguration aus Visible und Disabled. |
activated | Feld wird angezeigt und ist bearbeitbar. |
deactivated | Feld wird angezeigt, ist aber gesperrt. |
hidden | Feld ist unsichtbar, sein Platz im Formular bleibt aber frei. |
removed | Feld wird entfernt, die folgenden Felder rücken nach. |
forceRequired | Feld wird angezeigt und muss ausgefüllt werden. |
noValidation | Feld wird angezeigt, alle Prüfungen auf dem Feld entfallen. |
replacedBy:NAME | Feld 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.
Kostenstelle bei Bilanzkonten ausblenden
Abschnitt betitelt „Kostenstelle bei Bilanzkonten ausblenden“Ein häufiger Wunsch: Ist im Konto-Feld ein Bilanzkonto gewählt, soll das Kostenstellen-Feld verschwinden. Das geht ohne zusätzliches Formular.
-
Stammdaten: Ob ein Konto ein Bilanzkonto ist, steht in
Mstr.Accountsin der SpalteIsBalanceSheetAccount. Meist füllt der Stammdaten-Import diese Spalte über seine Mapping-Konfiguration. -
Kostenstellen-Feld: Trage beim Feld der Kostenstelle in der Spalte
Visibleein:!this.isBilanzkontoDas Formular setzt
isBilanzkontoautomatisch, sobald ein Bilanzkonto gewählt ist. -
Konto-Feld (optional): Trage beim Feld des Kontos in der Spalte
ColSpanein:getColumnSpanDependingOnIsBilanzkontoDas Konto-Feld wird dann bei einem Bilanzkonto doppelt so breit (20 statt 10) und füllt den Platz der ausgeblendeten Kostenstelle.
Auswahl einschränken
Abschnitt betitelt „Auswahl einschränken“Welche Konten und Kostenstellen im Formular zur Auswahl stehen, lässt sich über Stammdaten-Tabellen einschränken:
| Tabelle | Wirkung |
|---|---|
Mstr.AccountCostCenters | Zu einem gewählten Konto stehen nur die zugeordneten Kostenstellen zur Auswahl. |
Mstr.AccountGroups | Für eine Gruppe (zum Beispiel „Küche“) stehen nur die zugeordneten Konten zur Auswahl. |
Mstr.CostCenterAccountGroups | Für eine Gruppe stehen nur die zugeordneten Kostenstellen zur Auswahl. |
Breite von Auswahllisten
Abschnitt betitelt „Breite von Auswahllisten“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.
