Zum Inhalt springen

Spesen konfigurieren

Mit dem Spesen-Prozess erfassen Mitarbeitende geschäftliche Ausgaben, entweder direkt im invoiceR (Ausgabe erfassen) oder mit der Mobile-App. Neben dem Foto oder Scan des Belegs fragt ein Spesen-Formular weitere Angaben zur Ausgabe ab. Dieses Formular lässt sich stark anpassen und je nach Rolle unterschiedlich gestalten.

TabelleInhalt
conf.ExpenseFormsdie Formulare, zum Beispiel „Standard“ und „Geschäftsleitung“. Jedes Formular gehört zu einer Rolle.
conf.ExpenseCategoriesdie Kategorien einer Ausgabe, zum Beispiel Mittagessen, Autofahrt, Zugfahrt
conf.ExpenseFieldsdie Formular-Felder, zum Beispiel Kostenstelle oder Anzahl Personen
conf.ExpenseFormFieldsverknüpft Formulare, Kategorien und Felder

So läuft eine Erfassung ab:

  1. Der Benutzer erhält das Formular, auf das er über seine Rollen Zugriff hat.
  2. Aus conf.ExpenseFormFields ergibt sich, welche Kategorien das Formular anbietet.
  3. Der Benutzer wählt eine Kategorie.
  4. Der invoiceR zeigt die Felder, die für diese Kategorie hinterlegt sind.

Die Kategorien eines Geschäftsbereichs pflegst du in der Oberfläche:

  1. Öffne Administration > Geschäftsbereiche.
  2. Klicke beim Geschäftsbereich auf das violette Kreditkarten-Symbol (Spesen-Optionen bearbeiten). Gibt es noch keine Spesen-Optionen, legst du sie per Rechtsklick über Spesen-Optionen an.

Pro Kategorie legst du unter anderem Titel, KI-Beschreibung, Standard-Konto, -Kostenstelle und -Projekt sowie die zugehörigen Felder fest.

Fenster „Spesen-Optionen“ eines Geschäftsbereichs mit der Liste der Kategorien und dem Bearbeitungsbereich einer Kategorie

Es kann ein oder mehrere Formulare geben, zum Beispiel ein Standard-Formular und eines für externe Mitarbeitende. Welche Rolle ein Formular nutzen darf, steht in conf.ExpenseForms.VisibleFilterRoleId.

Weitere Spalten in conf.ExpenseForms:

SpalteBedeutung
Name, DescriptionBezeichnung des Formulars
BackendUrlAdresse, an welche die Mobile-App die erfassten Daten sendet. So kann jedes Formular einen eigenen Empfänger haben, zum Beispiel ein Gateway in der DMZ.
CustomerTokenGUID, an welcher der Empfänger erkennt, zu welchem Kunden die Daten gehören
IrVersionVersion des Datenformats (zurzeit 0.1.0)

Der Typ eines Felds steht in conf.ExpenseFields.Type. Je nach Typ sind in conf.ExpenseFields.Options verschiedene Parameter als JSON möglich.

TypFeldOptionen
1 Inputeinzeiliger Freitext, zum Beispiel „Mittagessen mit Kunde“minLength, maxLength, default
2 DateDatum, zum Beispiel „Gültig ab“allowPast, allowToday, allowFuture (jeweils true/false)
3 RadioAuswahl aus festen Werten, zum Beispiel eine Kostenstelledie Auswahlwerte als Schlüssel und Text
4 NumberZahl, zum Beispiel Anzahl PersonenminValue, maxValue, default
5 KmKilometer, mit Hilfe zum Berechnen der StreckeminValue, maxValue, default
6 Textmehrzeiliger Text, zum Beispiel eine NotizminLength, maxLength
7 Hiddenverstecktes Feld, das nicht angezeigt wirdje nach Verwendung

Beispiele für Options:

{ "minLength": 5, "maxLength": 30, "default": "Essen" }
{ "allowPast": true, "allowToday": true, "allowFuture": false }
{ "1000": "Kasse", "1010": "Bank", "1020": "Drittkonto" }
{ "minValue": 0, "maxValue": 500, "default": 20 }

Manchmal sollen die Auswahlwerte nicht fest im Formular stehen, zum Beispiel weil jeder Benutzer andere Kostenstellen sieht. Statt für jeden Benutzer ein eigenes Formular anzulegen, füllst du conf.ExpenseFields.OptionsSource. Der invoiceR lädt dann zusätzlich zu Options weitere Werte.

OptionsSource hat die Form Methode://Parameter. Zurzeit gibt es die Methode SQL: Der Teil nach :// ist eine Abfrage auf die invoiceR-Datenbank. Die erste Spalte wird zum Schlüssel, die zweite zum angezeigten Text.

SQL://SELECT [Id], [EmailAddress] FROM [dbo].[AbpUsers] WHERE Id = @UserId

Diese Platzhalter ersetzt der invoiceR vor der Abfrage:

PlatzhalterWert
@UserIdId des aktuellen Benutzers
@UserNameBenutzername des aktuellen Benutzers
@ExpenseCategoryAdditionalStr1 bis @ExpenseCategoryAdditionalStr5Zusatzfelder 1 bis 5 der gewählten Kategorie