# Artikel

Wie Artikel in den Shop kommen: Freigabe, Preise, Bestand, Gruppen, Bilder und Dateien.

# Artikel im Shop veröffentlichen

Ein Artikel erscheint im Shop, sobald er freigegeben ist und die nötigen Angaben enthält.
Alles wird in der Artikelmaske gepflegt.

## Freigeben

Das bei der Einrichtung festgelegte **ShopAktiv-Feld** in der Artikelmaske setzen. Beim
nächsten Lauf der Aufgabe *geänderte Artikel exportieren* geht der Artikel in den Shop.

<!-- TODO Screenshot: images/artikel-kennzeichen.png -->

Wird das Kennzeichen wieder entfernt, verschwindet der Artikel nicht sofort. Er wird beim
nächsten Lauf als nicht mehr shopaktiv übertragen — der Shop nimmt ihn daraufhin aus dem
Angebot.

<p class="callout info">Vollständig entfernt werden verwaiste Artikel durch die Aufgabe <em>Artikelleichen entfernen</em>. Sie übergibt dem Shop die Liste aller freigegebenen Artikel; alles andere räumt der Shop auf.</p>

## Voraussetzungen

| Voraussetzung                      | Hinweis                                                       |
| ---------------------------------- | ------------------------------------------------------------- |
| ShopAktiv-Feld gesetzt              | sonst wird der Artikel übersprungen                              |
| Steuerschlüssel im Verkauf           | fehlt er, bricht der Export dieses Artikels mit einer Meldung ab   |
| Artikelgruppe nicht ausgeschlossen   | siehe [Artikelgruppen](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/artikelgruppen)                        |
| bei Fertigungsartikeln: Fertigungsliste | ein Fertigungsartikel ohne Arbeitsplan wird übersprungen        |

<p class="callout danger">Der fehlende Steuerschlüssel im Verkauf ist die häufigste Ursache für einen Fehler statt einer stillen Übergehung. Im Protokoll steht dann „SSVerkauf für &lt;Artikelnummer&gt; nicht vorhanden!".</p>

## Was zu einem Artikel übertragen wird

Weil der Shop die SelectLine-Struktur kennt, geht deutlich mehr mit als bei anderen
Shopanbindungen:

| Bereich                | Inhalt                                                        |
| ---------------------- | ------------------------------------------------------------- |
| Stammdaten             | Bezeichnung, Zusatz, Texte, Maße, Gewicht, Einheiten             |
| Preise                 | Preistabelle mit Staffeln, Kunden- und Aktionspreisen              |
| Fremdsprachen          | Bezeichnungen, Zusätze, Lang- und Bestelltexte je Sprache          |
| Lieferantendaten       | Bestellnummern, Einkaufspreise, Lieferfristen, Losgrößen           |
| Lagerdaten             | Standorte, Läger, Mindest- und Sollbestände                        |
| Stücklisten            | Set-Positionen mit Mengen und Auflösung                            |
| Varianten              | Merkmale und Ausprägungen                                          |
| Sachmerkmale           | Merkmal und Wert, samt Übersetzungen und Filterkennzeichen           |
| Zubehör                | mit Mengenformel, Einfügemodus und Verwendung                        |
| Zuschlagartikel        | mit Mengen- und Preisformel                                          |
| Alternativartikel      | und weitere Artikelverweise                                          |
| Mengenumrechnung       | Einheiten, Faktoren, Shopmengenbasis                                  |
| Kalkulation            | Kalkulationsschemata und -werte                                       |

<p class="callout info">Deshalb gibt es hier keine Zuordnungstabellen für Merkmale oder Kategorien. Was in der SelectLine gepflegt ist, steht im Shop zur Verfügung — wie es dargestellt wird, entscheidet das Shop-Template.</p>

## Wann die Übertragung läuft

| Aufgabe                                    | Umfang                                                      |
| ------------------------------------------ | ----------------------------------------------------------- |
| geänderte Artikel exportieren               | Artikel, die seit dem letzten Lauf angelegt oder geändert wurden |
| Alle Artikel exportieren                    | alle freigegebenen Artikel, mit Bildern                        |
| Alle Artikel exportieren (ohne Bilder)      | alle freigegebenen Artikel, ohne Bildübertragung                 |
| Alle Artikelbilder exportieren              | nur die Bilder                                                  |
| Artikelleichen entfernen                     | räumt im Shop auf, was nicht mehr freigegeben ist                 |

<p class="callout warning">Als geändert gilt ein Artikel, wenn sich der Artikelstamm geändert hat. Wird nur ein Preis oder eine Fremdbezeichnung angepasst, ohne den Artikel selbst anzufassen, erkennt der Änderungslauf das nicht. Deshalb gehören die Aufgaben <em>Preise exportieren</em> und ein nächtlicher Vollauf ohne Bilder in den Zeitplan.</p>

Nach jedem übertragenen Artikel stößt FINN.ghost dessen Neuindizierung im Shop an, damit
er sofort gefunden wird.

## Abgebrochene Läufe

Vor einem Vollauf werden alle zu übertragenden Artikelnummern vorgemerkt und nach
erfolgreicher Übertragung einzeln abgearbeitet. Findet der nächste Lauf dort noch
Einträge, arbeitet er diese ab statt neu zu beginnen:

```
Setze Artikelexport fort (1234 Artikel).
```

<p class="callout info">Bricht der Dienst also mitten im Vollexport ab, geht die Arbeit nicht verloren.</p>

## Weiter

- [Preise](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/preise)
- [Bestand](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/bestand)
- [Bilder und Dateien](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/bilder-und-dateien)

# Preise

Preise sind der Bereich, in dem sich der FINN.webshop am stärksten von anderen
Shopanbindungen unterscheidet. Es gibt zwei Betriebsarten, und die Wahl fällt über eine
einzige Einstellung.

## Betriebsart 1: Preistabelle übertragen

Ohne die Einstellung *Preisberechnung* überträgt FINN.ghost die **Preistabelle der
SelectLine unverändert** — alle Preistypen, Staffeln, Zeiträume, Währungen und Steuertypen.

Die Preisfindung rechnet dann der Shop, mit den Regeln der SelectLine: Grundpreis,
Preisgruppe des Kunden, Mengenstaffel, Rabattgruppe, Aktionszeitraum.

<p class="callout info">Das ist der Standardweg und der Grund, warum im Shop echte SelectLine-Preise erscheinen, ohne dass Preisregeln gepflegt werden müssen. Angemeldete Kunden sehen ihre eigenen Preise, inklusive Staffeln.</p>

Mit übertragen werden dafür auch die Rabattgruppen, Mengenrabatte, Preisgruppen und
Kalkulationsschemata — sie stecken in der Aufgabe, die die Zusatzdaten überträgt, und
laufen bei jedem Artikellauf mit.

## Betriebsart 2: Preisberechnung durch FINN.ghost

Mit eingeschalteter *Preisberechnung* ermittelt FINN.ghost die Preise vorab und überträgt
das **Ergebnis** statt der Tabelle. Berücksichtigt werden:

- der Grundpreis
- Kundenpreise
- Aktionspreise
- der Preis aus dem Kalkulationsschema
- Artikel ohne Kalkulationsschema über Marge, Rabatt und Preisbeeinflussung

<p class="callout info">Sinnvoll, wenn die Preisfindung Regeln enthält, die der Shop nicht nachbilden kann — etwa mehrstufige Kalkulationsschemata. Der Shop zeigt dann fertige Preise und rechnet selbst nicht mehr.</p>

<p class="callout warning">Die Umstellung verändert die Preise im Shop. Sie gehört an den Anfang eines Projekts oder in ein Wartungsfenster mit anschließender Preiskontrolle — nicht in den laufenden Betrieb.</p>

## Preisverweis

Ist in der Artikelmaske ein Preisverweis eingetragen, werden die Preise des verwiesenen
Artikels verwendet.

## Wann Preise übertragen werden

| Aufgabe                       | Umfang                                                     |
| ----------------------------- | ---------------------------------------------------------- |
| Preise exportieren            | Preise **aller** freigegebenen Artikel                        |
| geänderte Artikel exportieren  | Preise der geänderten Artikel, als Teil des Artikeldatensatzes  |

Die Aufgabe *Preise exportieren* arbeitet in Blöcken von 5.000 Artikeln und meldet den
Fortschritt im Protokoll.

<p class="callout danger">Preisänderungen in der Preistabelle ändern den Artikelstamm nicht. Der Änderungslauf bemerkt sie deshalb <strong>nicht</strong>. Ohne die regelmäßige Aufgabe <em>Preise exportieren</em> bleiben neue Preise und abgelaufene Aktionen im Shop stehen.</p>

## Steuer

Übertragen werden die Steuerschlüssel und Steuerdetails als Stammdaten, dazu je Artikel
der Steuerschlüssel im Verkauf. Der Shop rechnet die Steuer daraus selbst.

<p class="callout warning">Fehlt am Artikel der Steuerschlüssel im Verkauf, bricht der Export dieses Artikels ab. Siehe <a href="ws-artikel-veroeffentlichen">Artikel im Shop veröffentlichen</a>.</p>

## Weiter

[Bestand](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/bestand)

# Bestand

Der Bestand ist die Angabe, die sich im Tagesgeschäft am häufigsten ändert. Deshalb gibt
es dafür eigene Aufgaben, die schneller laufen als die vollständige Artikelübertragung.

| Aufgabe                                | Umfang                                                  |
| -------------------------------------- | ------------------------------------------------------- |
| Artikelbestand exportieren (geändert)   | Artikel mit Bestandsbewegung seit dem letzten Lauf         |
| Artikelbestand exportieren (komplett)   | alle freigegebenen Artikel                                 |

Beide Aufgaben übertragen ausschließlich Artikelnummer und Bestand — sie sind damit
deutlich günstiger als ein Artikellauf und dürfen häufig laufen.

## Wie der Bestand ermittelt wird

Standardmäßig gilt: **Bestand abzüglich reservierter Menge**. Negative Werte werden auf 0
gesetzt.

### Stücklisten

Bei Stücklisten ergibt sich der Bestand aus der knappsten Komponente — also aus der Menge,
die sich tatsächlich noch zusammenstellen lässt.

<p class="callout info">Set-, Behälter- und Bündelartikel werden dem Shop zusätzlich als Lagerartikel gemeldet, damit er sie wie bestandsgeführte Ware behandelt.</p>

### Eigene Bestandsermittlung

Für Sonderfälle kann eine eigene Bestandsabfrage hinterlegt werden, etwa um nur bestimmte
Läger zu berücksichtigen. Das richtet der Support gemeinsam mit Ihnen ein.

<p class="callout info">Eine Besonderheit beim Komplettlauf: Für Artikel ohne eigene Bestandsermittlung und ohne Stückliste wird der Bestand direkt in einem Zug ermittelt. Das macht den Lauf über große Sortimente erheblich schneller.</p>

## Bestand im Artikellauf

Auch der Artikelexport überträgt den Bestand mit — als Teil des Artikeldatensatzes. Ein
Artikellauf überschreibt also einen kurz vorher gelaufenen Bestandslauf, mit denselben
Werten, sofern sich zwischenzeitlich nichts geändert hat.

## Weiter

[Artikelgruppen](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/artikelgruppen)

# Artikelgruppen

Die Gruppenstruktur der SelectLine wird in den Shop gespiegelt — mit ihrer Hierarchie, den
Beschreibungstexten und den Gruppenbildern.

<!-- TODO Screenshot: images/artikel-gruppen.png -->

Übertragen werden nicht nur Artikelgruppen, sondern auch **Rabattgruppen, Preisgruppen und
Merkmalsgruppen**. Der Shop braucht sie für die Preisfindung und die Merkmalsdarstellung.

## Die Aufgabe läuft nur bei Änderungen

*Artikelgruppen exportieren* prüft zunächst, ob sich an den Gruppen überhaupt etwas
geändert hat, und überträgt nur dann.

<p class="callout info">Das macht die Aufgabe billig genug, um sie regelmäßig laufen zu lassen. Beim manuellen Start über die Zeitsteuerung wird die Prüfung übergangen und in jedem Fall übertragen.</p>

## Einstellungen

### Gruppen

| Auswahl       | Bedeutung                                                       |
| ------------- | --------------------------------------------------------------- |
| Standard      | die Artikelgruppe aus der Artikelmaske                            |
| Alternativ    | nur Gruppen, die als zusätzliche Zuordnung an Artikeln hängen        |
| beide         | alle Gruppen                                                       |

Bei *Alternativ* werden nur die Gruppen übertragen, die tatsächlich als
Alternativzuordnung verwendet werden — die übrigen bleiben außen vor.

<p class="callout info">In beiden Fällen zieht FINN.ghost die übergeordneten Gruppen automatisch mit, damit der Baum vollständig bleibt und keine Gruppe ohne Elternteil im Shop landet.</p>

### Gruppen zu ignorieren

Artikelgruppen, die nicht in den Shop gehören. Sie werden nicht übertragen, ihre
Gruppenbilder nicht hochgeladen, und Artikel dieser Gruppen werden übersprungen.

### Freigabe je Gruppe

Über ein Feld an der Artikelgruppe lässt sich zusätzlich steuern, welche Gruppen in den
Shop gehören. Gruppen ohne gesetztes Kennzeichen werden übersprungen.

### Shopaktive Artikel ohne Gruppenfilterung übertragen

Hebt den Gruppenfilter für den Artikelexport auf: Ein freigegebener Artikel geht in den
Shop, auch wenn seine Gruppe auf der Ignorierliste steht.

## Gruppen ohne Bezeichnung

<p class="callout warning">Eine Artikelgruppe ohne Bezeichnung wird übersprungen und im Protokoll als Fehler gemeldet. Die übrigen Gruppen laufen weiter. Solche Gruppen entstehen leicht durch versehentlich angelegte Einträge im Gruppenstamm.</p>

## Gruppenbilder

Bei jedem Gruppenlauf werden die Gruppenbilder im Shop **zunächst entfernt** und dann neu
hochgeladen. Damit verschwinden auch Bilder von Gruppen, die nicht mehr übertragen werden.

Mit der Einstellung *Nur Daten exportieren, die mit 'Export' gekennzeichnet sind* gehen nur
entsprechend markierte Bilder mit.

## Weiter

[Bilder und Dateien](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/bilder-und-dateien)

# Bilder und Dateien

FINN.ghost überträgt Bilder aus vier Bereichen und Dateien aus zwei Quellen.

<!-- TODO Screenshot: images/artikel-bilder.png -->

## Bilder

| Bereich       | Wann sie übertragen werden                                    |
| ------------- | ------------------------------------------------------------- |
| Artikel       | beim Artikelexport und mit *Alle Artikelbilder exportieren*      |
| Artikelgruppen | beim Gruppenexport                                              |
| Lieferanten   | beim Stammdatenlauf                                              |
| Kunden        | beim Kundenexport                                                 |

### Maximale Bildgröße in Pixel

Bilder werden vor der Übertragung auf diese Kantenlänge verkleinert, voreingestellt 1920
Pixel. Kleinere Bilder werden nicht vergrößert.

### Nur Daten exportieren, die mit 'Export' gekennzeichnet sind

Berücksichtigt in allen vier Bereichen nur Bilder, die in der SelectLine das entsprechende
Kennzeichen tragen. So lässt sich steuern, welche Bilder in den Shop gehören und welche nur
intern sind.

<p class="callout info">Die Dateinamen werden aus Nummer und Reihenfolge gebildet, etwa <code>4711_0.jpg</code> für das erste Bild des Artikels 4711. Schrägstriche in Artikelnummern werden zu Unterstrichen — Dateinamen bleiben damit auf allen Systemen gültig.</p>

<p class="callout warning">Lässt sich ein Bild nicht umwandeln — etwa weil es beschädigt ist oder in einem exotischen Format vorliegt —, wird es übersprungen und im Protokoll gemeldet. Der Artikel selbst geht trotzdem in den Shop.</p>

## Dateien

Damit im Shop Datenblätter, Anleitungen und Zertifikate am Artikel hängen, überträgt die
Aufgabe *XDATZUORD exportieren* Dateien aus zwei Quellen.

### Aus der Dokumentenzuordnung

Aus der SelectLine-Tabelle der Dokumentenzuordnung, zusammen mit den Dateien aus dem
konfigurierten **Pfad für XDATZUORD**.

Unterschieden wird nach Art des Eintrags:

| Art        | Behandlung                                                      |
| ---------- | --------------------------------------------------------------- |
| Bild       | wird verkleinert und als Artikelbild hochgeladen                   |
| Datei      | wird unverändert als Artikeldatei hochgeladen                       |

<p class="callout danger">Ohne den Pfad werden aus dieser Quelle keine Dateien übertragen. Und fehlt eine dort verzeichnete Datei im Verzeichnis, erscheint sie als Fehler im Protokoll — die Zuordnung selbst geht trotzdem mit, die Datei fehlt dann aber im Shop.</p>

### Aus Artikeljournalen

Zusätzlich überträgt FINN.ghost PDF-Dateien aus den Artikeljournalen der Kategorie `XDAT`.
Dafür ist kein Pfad nötig — die Dateien liegen in der SelectLine-Datenbank.

<p class="callout info">Bereits vorhandene Dateien werden nicht erneut hochgeladen: FINN.ghost fragt vorher im Shop nach. Das macht wiederholte Läufe schnell.</p>

Am Ende erhält der Shop die vollständige Liste der Zuordnungen, sodass er entfallene
Einträge selbst aufräumen kann.

## Weiter

[Extratabellen](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/extratabellen)

# Extratabellen

Der FINN.webshop kennt die Standardtabellen der SelectLine bereits. Braucht der Shop
zusätzlich Daten aus einer **eigenen Tabelle** — etwa einer Extratabelle aus der
SelectLine-Toolbox —, lässt sich diese mit übertragen.

<!-- TODO Screenshot: images/einrichtung-extratabellen.png -->

## Einrichten

Unter **FINN.webshop → Einstellungen → Übertragung** stehen unter *Extratabellen zum
Exportieren* alle Tabellen des Mandanten zur Auswahl, die nicht ohnehin schon übertragen
werden.

<p class="callout info">Die Auswahlliste blendet die Standardtabellen und die SelectLine-Systemsichten aus. Was dort erscheint, ist also tatsächlich zusätzlich — Extratabellen, Zusatztabellen aus Projekten und selbst angelegte Tabellen.</p>

## Was übertragen wird

Die Aufgabe *Extratabellen exportieren* überträgt zu jeder ausgewählten Tabelle:

- die **Feldstruktur** samt Datentypen, damit der Shop die Tabelle passend anlegen kann
- den **vollständigen Inhalt**

Im Shop entsteht daraus eine Tabelle mit einem eigenen Namensvorsatz, sodass es keine
Verwechslung mit den Standardtabellen gibt.

<p class="callout warning">Es wird immer der komplette Inhalt übertragen, nicht nur Änderungen. Bei großen Tabellen dauert der Lauf entsprechend und sollte in die Nacht gelegt werden.</p>

Enthält eine ausgewählte Tabelle keine Daten, wird sie übersprungen und im Protokoll
vermerkt.

## Wofür man das braucht

Typische Fälle:

- zusätzliche Artikelinformationen aus einem Projektfeld, die im Shop-Template ausgegeben
  werden sollen
- eigene Klassifizierungen und Filterlisten
- Zuordnungstabellen aus der Toolbox, die der Shop für Auswahllisten braucht

<p class="callout info">Die Darstellung im Shop übernimmt das Template. Die Übertragung stellt die Daten nur bereit — was daraus wird, richten unsere Kollegen oder Ihre Agentur im Shop ein.</p>

## Weiter

[Kunden](https://wiki.dako-it.com/books/finnghost-fur-finnwebshop-0s8/page/kunden)