# Weitere Module

Was in den übrigen Modulen keine Maske hat — und die Einstellungen, die für die ganze
Installation gelten und deshalb ohne Abschnitt in der `config.json` stehen.

## FINN.webshop

Abschnitt `shop`.

| Schlüssel | Typ | Wirkung |
| ------------------------------ | -------- | ------------------------------------------- |
| `shopaktivArtikelGruppenFeld` | Feldname | Feld an der Artikelgruppe; nur Gruppen mit `True` werden übertragen. |

Die eigene Bestandsabfrage `shop.customStock` steht unter
[Bestand und Bestellmenge](https://wiki.dako-it.com/books/finnghost-systemhandbuch/page/bestand-und-bestellmenge).

## Bilder aus dem Dateisystem

Ohne Abschnitt — gilt für alle Module, die Artikelbilder übertragen.

| Schlüssel | Typ | Wirkung |
| ------------ | ---- | ------------------------------------------------------------ |
| `imagePath` | Wert | Ordner, aus dem die Artikelbilder gelesen werden — statt aus der SelectLine. |

Die Dateien werden dem Artikel über den Dateinamen zugeordnet: **Artikelnummer,
Unterstrich, laufende Nummer.**

```text
100815_1.jpg
100815_2.jpg
100815_10.jpg
```

Sortiert wird nach der Zahl hinter dem Unterstrich, und zwar numerisch — `_10` kommt also
nach `_2`, nicht dazwischen.

| | |
| ---------------------------------------- | ------------------------------------- |
| **Ordner enthält Bilder zum Artikel** | diese werden übertragen |
| **Ordner enthält keine passende Datei** | Rückfall auf die Bilder in der SelectLine |
| **Ordner nicht erreichbar** | Fehler; der Lauf bricht ab |

<p class="callout danger">Ist der Ordner nicht erreichbar, wird nicht auf die SelectLine zurückgefallen, sondern der Lauf bricht mit einem Fehler ab. Bei einem Netzwerkpfad braucht das Dienstkonto Leserechte darauf — läuft der Dienst als lokales Systemkonto, hat es auf einem Netzwerkpfad in der Regel keine.</p>

<p class="callout info">Der Rückfall auf die SelectLine gilt je Artikel: Für Artikel mit Dateien im Ordner gelten die Dateien, für alle anderen die Bilder aus der SelectLine. Beides lässt sich also mischen.</p>

<p class="callout warning">Bildformat und Bildqualität aus den Einstellungen gelten auch für diese Dateien — sie werden vor dem Übertragen umgewandelt. Siehe <a href="sys-server">Server und Oberfläche</a>.</p>

## Oberfläche

Ohne Abschnitt.

| Schlüssel | Typ | Wirkung |
| -------------- | -------- | ------------------------------------------------------- |
| `theme` | Wert | Farbe der Oberfläche, als Objekt mit dem Feld `primary`. Vorgabe `#AA1948`. |
| `disableBeep` | Schalter | Vorgabe `true`. Mit `false` gibt die Oberfläche bei einem Fehler einen **Signalton** aus. |
| `onlyCustom` | Schalter | zeigt **ausschließlich** die Seite der individuellen Anpassungen — ohne Menü, ohne Navigation. |

```json
{
  "theme": { "primary": "#1976D2" },
  "disableBeep": false
}
```

<p class="callout danger"><code>onlyCustom</code> verbirgt alle Module samt Einstellungen und Zeitsteuerung. Es ist für Installationen gedacht, die nur eine kundenspezifische Maske bereitstellen, und setzt eine Lizenz für individuelle Anpassungen voraus. Ohne Zugriff auf die <code>config.json</code> kommt man danach nicht mehr an die übrigen Masken.</p>

<p class="callout success">Der Signalton ist nützlich an Arbeitsplätzen, an denen die Oberfläche dauerhaft offen steht und Fehler auffallen sollen — etwa im Lager oder im Versand.</p>

## SelectLine

| Schlüssel | Typ | Wirkung |
| -------------------------------- | -------- | ------------------------------------------- |
| `skipVersionscheck` | Schalter | übergeht die Prüfung, ob die SelectLine-Version mindestens der geforderten entspricht. |
| `slsettings.warehouseCheckColum` | Feldname | Spalte in `LAGERPLATZ`, über die ein Lagerplatz zusätzlich anhand einer Nummer gefunden wird. |

<p class="callout danger"><code>skipVersionscheck</code> ist ausdrücklich ein Notbehelf. Die Mindestversion steht nicht ohne Grund: Fehlen der SelectLine-API Endpunkte, die FINN.ghost erwartet, laufen Übertragungen an unvorhersehbaren Stellen auf Fehler. Der Schalter hilft, eine Installation überhaupt zu starten — die richtige Abhilfe ist das Update der SelectLine.</p>

<p class="callout info"><code>slsettings.warehouseCheckColum</code> wird gebraucht, wenn Lagerplätze aus einem Drittsystem als reine Nummer kommen und nicht als die von der SelectLine erwartete Kombination aus Lager und Dimensionen. Zuerst wird immer regulär gesucht; erst wenn das nichts findet, greift diese Spalte.</p>

## GetMyInvoices

Abschnitt `gmi`.

| Schlüssel | Typ | Wirkung |
| ------------- | -------- | ------------------------------------------------------- |
| `statusField` | Feldname | Belegfeld, in das bei einer **Betragsabweichung** der Hinweis geschrieben wird. Vorgabe `FreierText1`. |

<p class="callout warning">Weicht der Bruttobetrag ab, wird der Beleg nicht als geprüft markiert und der Hinweis samt Abweichung in Prozent in dieses Feld geschrieben. Ist <code>FreierText1</code> im Mandanten anderweitig belegt, gehört hier ein anderes Feld hinterlegt — sonst überschreibt der Abgleich vorhandene Inhalte.</p>

## FINN.mail2SL

Abschnitt `mail2sl`.

| Schlüssel | Typ | Wirkung |
| --------- | ---- | -------------------------------------------------------------- |
| `limit` | Wert | Anzahl der Nachrichten, die je Lauf aus dem Postfach geholt werden. Vorgabe `10`. |

<p class="callout warning">Der Wert begrenzt die Nachrichten <strong>je Lauf</strong>, nicht je Tag. Bei einem Postfach mit hohem Aufkommen kann der Rückstand wachsen, wenn je Lauf weniger Nachrichten verarbeitet werden als neu eintreffen. Dann entweder den Wert erhöhen oder den Lauf häufiger einplanen.</p>

<p class="callout info">Ein höherer Wert verlängert den einzelnen Lauf entsprechend. Kommt es dabei zu Zeitüberschreitungen am Postfach, ist der häufigere Lauf der bessere Weg.</p>

## FINN.AI MCP

Abschnitt `mcp`. Ergänzt die Einstellungen, die die Oberfläche für den KI-Zugang anbietet.

| Schlüssel | Typ | Wirkung |
| ------------------------ | ---- | -------------------------------------------------------- |
| `maxSessions` | Wert | Höchstzahl gleichzeitiger Sitzungen. Vorgabe `50`. |
| `sessionTimeoutSeconds` | Wert | Zeit in Sekunden, nach der eine untätige Sitzung verworfen wird. Vorgabe `1800` (30 Minuten). |
| `bodyLimit` | Wert | Höchstgröße einer Anfrage. Vorgabe `"10mb"`. |

<p class="callout info">Diese drei Werte sind Schutzgrenzen und müssen im Normalbetrieb nicht angefasst werden. Sie sind gedacht für Installationen mit auffällig vielen gleichzeitigen Zugriffen oder mit knappem Speicher auf dem Server.</p>

<p class="callout warning">Bei <code>bodyLimit</code> gehört die Einheit mit in den Wert und der Wert in Anführungszeichen — <code>"10mb"</code>, nicht <code>10</code>.</p>

## Individuelle Anpassungen

Abschnitt `custom`. Diese Schlüssel gehören zu kundenspezifischen Erweiterungen und sind
nur dort gesetzt, wo die passende Anpassung ausgeliefert ist.

| Schlüssel | Typ | Wirkung |
| -------------------------- | ---- | ------------------------------------------------------ |
| `apiport` | Wert | Port einer zusätzlichen Schnittstelle für Fremdsysteme. Ohne die Angabe wird sie nicht gestartet. |
| `apiRechnungDruckvorlage` | Wert | Druckvorlage, mit der über diese Schnittstelle angeforderte Rechnungen erzeugt werden. |

<p class="callout warning">Der Port muss frei sein und darf nicht mit dem Port der Oberfläche zusammenfallen. Fehlt <code>apiRechnungDruckvorlage</code>, beantwortet die Schnittstelle Anfragen nach einer Rechnung mit einem Fehler.</p>

## Nächster Schritt

Zurück zu den [Häufigen Fragen](https://wiki.dako-it.com/books/finnghost-systemhandbuch/page/haufige-fragen) oder zur
[Zeitsteuerung der Module](https://wiki.dako-it.com/books/finnghost-systemhandbuch/page/zeitsteuerung-der-module-allgemein).