Dentalkiosk

Beschreibung

Der Source-Code der Schnittstelle ist über GitHub verfügbar: https://github.com/mr-pixel-kg/dental-kiosk-schnittstelle

Gehostet ist das Projekt auf unserem Cloud-Server (=> Zugänge sind in KBMPro hinterlegt). Das Root-Verzeichnis ist /mpx/_scripts/dental-kiosk. Die auszuführenden PHP Dateien liegen hier direkt im Root-Ordner.

Dentalkiosk hat per FTP Zugriff auf den Server und legt die Dateien hier ab: /mpx/files/ftp/ftp_dentalkioskDateien aus diesem Verzeichnis werden später für den Import Prozess verwendet.

Konfiguration des Imports

Aus welchen CSV Dateien der Import sich zusammensetzt, wird über eine .env Datei im Root-Verzeichnis der Schnittstelle gespeichert. Im GitHub Projekt gibt es eine .env.dist Datei die als Beispiel genutzt werden kann, um die Schnittstelle zu definieren. Jeder Eintrag der .env.dist Datei muss später in der .env Datei hinterlegt sein.

API_SHOP_URL=###Complete url of the shop API_USER=###Username of the admin (API) account API_PASSWORD=###Password of the admin (API) account SALES_CHANNEL_NAME=###Name of the sales channel PROPERTY_GROUP_NAME=###Name of the property group, which defines the variants TAG_NAMES=###Defines the columns, which later will create the tags SW_ACCESS_KEY=###Sales channel access key API_ACCESS_KEY=###The access key of an admin account API_SECURITY_KEY=###The security of an admin account ### # Forces the product creation and ignores creation/update separation rules. # Do NOT force the creation in a live environment # Possible values to set: 0 (= false) / 1 (= true) ### DEV_FORCE_CREATE=0 ### # Forces the split of the import file and ignores all restriction logic ### FORCE_SPLIT_IMPORT=0 ### # Forces the the patching of the configurator on the update process ### FORCE_CONFIGURATOR_UPDATE=1 ###We need to split the csv import file to prevent memory exhaustion STACK_SIZE=###Defines the stack size ### On live environment it likely will be /mpx/files/ftp/ftp_dentalkiosk/products/Bilder/ PRODUCT_IMAGES_PATH=###Path to product images CLOUD_BASE_URL=###URL of cloud instance CLOUD_IMAGE_PATH=###Path to product images CLOUD_ARTICLE_INFO_PATH=###Path to Artikelinfo.csv/dentalkiosk.csv file CLOUD_ONLINE_KATALOG_PATH=###Path to the catalogue csv file CUSTOM_FIELDS_CONFIG=###Configuration of custom field mapping in json format. E.g.: '[{"customField": "someName", "mappingColumn": "Some Column"}]'

Bedingungen für den initialen Import

Artikelnummer in der exported_products.csv vorhanden > Nein => Import, > Ja => Update

Update Prozess

Bedingungen für ein Update

Ein Produkt wird nur dann geupdated, wenn er in der exported_products.csv vorhanden ist. Zusätzlich muss die dentalkiosk.csv innerhalb der letzten 24 Stunden geändert worden sein. Beim Split wird geprüft, ob sich Dinge wie Preise, Tags, Eigenschaften, … geändert haben. Sollte das Produkt identisch sein, wird kein Update durchgeführt.

Daten des Updates

  • Stock

  • Tags

  • Preis

  • EK

  • Abverkauf

  • Such Keywörter

  • Custom-Fields

Import Trigger (alt)

  • (Art_Status = 0 || Art_Status == 8) && Lagerart = B

  • Lagertart == B => Lagergeführt

  • Lagertart == B && Art_Status == 8 => Abverkaufartikel

  • Art_Status == 0 || Art_Status == 8 => Artikel aktiv

  • Artikelnummer in exported_products.csv && Gelöscht == 1 => Artikel wird im Shop gelöscht

Import Trigger (neu)

  • Lagerart == Dentalkiosk => aktiv

  • Lagerart == C => inaktiv

  • Artikelnummer in exported_products.csv && Gelöscht == 1 => Artikel wird im Shop gelöscht

Datei Splitter

Katalog Splitting

Das Skript split_online_catalog_csv.php splitted die Katalogdatei auf. Die Daten für den Import werden aus der dentalkiosk.csv, sowie den aufgesplitteten Katalog Dateien zusammengesetzt.

Import Datei Split

Vor dem Import wird die dentalkiosk.csv in kleinere CSV Dateien aufgesplittet. Pro Durchlauf werden die Daten aus einer gesplitteten Datei ausgelesen und an den Shop übertragen. Vor Start des Imports, werden die ausgelesenen Dateien in Update und initialer Import aufgesplittet.

Beim Splitten der Dateien werden noch Artikel ausgewählt, die Daten im Katalog enthalten, die Import Trigger erfüllen und nicht gelöscht werden sollen.

Lösch Datei Split

Ähnlich wie der Import Datei Split, werden die zu löschenden Artikel aus der dentalkiosk.csv ausgelesen. Diese werden in kleinere CSV Dateien geschrieben und anschließend über das run-deletion.sh Skript gelöscht.

 

Shopware Sync

Um nicht bei jedem Import Durchlauf die Daten mit der Shopware API abgleichen zu müssen, wird vor dem Import bereits ein Abgleich durchgeführt und in Cache Dateien geschrieben. Folgende Daten werden dabei abgeglichen:

  • Steuern

  • Währungen

  • Hersteller

  • Sales Channel

  • Eigenschaften / Properties für Varianten

  • Eigenschaftsgruppen

  • Tags

  • Media-Folder

  • Kategorien

Die gecacheden Daten werden unter <project_root>/ProductInterface/cache/ gespeichert. Für jeden Cache existiert eine *_RAW.csv Datei bereit, die die Struktur vorgibt.

 

Patch der Varianten (Konfigurator)

Beim Update können wir nachträglich einen Patch für die Varianten/Konfigurator einspielen.

Dazu muss der Force-Split, sowie der Configurator Patch aktiv sein. Beide Variablen sind in der .env Datei setzbar

FORCE_CONFIGURATOR_UPDATE=1 # Konfigurator Update FORCE_SPLIT_IMPORT=1 # Split des Import Files

Der Patch kann beispielsweise bei fehlender Konfigurator bzw. zugewiesener Varianten ausgeführt werden.

ACHTUNG: Der Patch wird für ALLE Artikel ausgeführt