OBS/Stammdaten/Artikel: Automatischer Bilder Import

Aus OBS Wiki
Version vom 8. Juli 2019, 15:52 Uhr von Nimz (Diskussion | Beiträge) (→‎Bilder in Datenbank speichern)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Stammdaten

Erlöskonten
Eingabemaske
Textbausteine
Tasten und Schaltflächen
Eingabemaske
Schnittstellen
Internet-Shop
Menü: VShop 3.2
  • A Shop-Stammdaten
  • B Datenbankzugang
  • C Personen übertragen
  • D Preise aktualisieren
  • E eigene Artikel übertragen
  • F Preislisten verwalten
  • G Warengruppen verwalten
  • H Bestellvorlagen übertragen
  • Y leere Passworte füllen
  • Z FTP-Protokoll
Menü: VShop 4.0
  • A Shop-Stammdaten
  • B Datenbankzugang
  • C Personen übertragen
  • D Preise aktualisieren
  • E eigene Artikel übertragen
  • F Preislisten verwalten
  • G Warengruppen verwalten
  • H Bestellvorlagen übertragen
  • I Kundengruppen
  • K Zugang für Bildübertragung
  • Y leere Passworte füllen
  • Z FTP-Protokoll
Faxverwaltung
SMS-Verwaltung

Dieses Fenster dient dem Import von Bildern aus einem Verzeichnis. Dazu gibt es verschiedene Einstellungen ein Makro-Funktionen, mit denen aus den Dateinamen z. B. die Artikelnummer ermittelt werden kann. In der Regel kann dieser Import für die Bilder eigener Lieferanten problemlos genutzt werden, da sich die Bestellnummer meist innerhalb des Dateinamens finden lässt.

Maske

Import-Maske


Die Maske kann in drei Bereiche unterteilt werden: Einstellungen (1), Bilddateien (2) und Makro (3). Die Einstellungen werden mit Standardwerten vorbelegt. Bilddateien werden erst angezeigt, nachdem über F7 das Verzeichnis, dass importiert werden soll, ausgewählt wurde. Als Makro wird immer das zuletzt verwendete geladen. Wenn Sie verschiedene Lieferanten importieren ist es daher ratsam die verwendeten Makros in einer Datei abzuspeichern, um dies nicht jedesmal neu eingeben zu müssen. Sie können dann den Inhalt einfach ersetzen.

Einstellungen

Klasse

Die Klasse wird für die Referenzierung innerhalb vom OBS benötigt. Zur Zeit gibt es nur die Verwendung als Artikelbilder und die Klasse sollte immer mit "AR" (Standard) gesetzt sein.

Typ

Es gibt für Bilder drei Standard-Typen. Dies sind 9000 (Freie Artikelbilder), 9001 (Shop Hauptbild) und 9002 (Shop Zusatzbild). Der Typ kann im Makro noch beeinflusst werden (mehr dazu unter Befehle). Wenn Sie eine Shop-Schnittstelle des Typs VShop 4, modified eCommerce oder DoubleM verwenden, können die Typen 9001 und 9002 verwendet werden, um die Bilder für die entsprechende Schnittstelle zum Export freizugeben. Innerhalb vom OBS ist der Typ nur relevant, wenn Sie über diesen in der Positionserfassung die manuelle Bilderauswahl beeinflussen möchten.

HINWEIS: Verfügen Sie nicht über eine der genannten Shop-Schnittstellen, so wird der Typ beim Import automatisch auf 9000 gesetzt.

Lieferanten-Nr.

Hier kann eine Lieferantennummer aus Ihrem Personenstamm eingetragen werden. Diese dient während des Imports dazu das Bild einem Artikel zuzuordnen. Sollte über die Artikelnummer kein Artikel gefunden werden, so wird die Artikelnummer als Bestellnummer interpretiert und die Artikelnummer über die in den Artikeln hinterlegten Lieferanten zusammen mit der Lieferantennummer ermittelt.

Artikel muss im Artikelstamm vorhanden sein

Aktivieren Sie diese Einstellung, um nur Bilder zu importieren, die auch einem Artikel Ihres Artikelstamms zugeordnet werden können.

Bilder in Datenbank speichern

Wenn Sie insgesamt nur wenig Bilder importieren, können diese auch direkt in der Datenbank gespeichert werden. Je nach Server und sonstiger Anwendungsbreiche kann hier die optimale Anzahl an Bildern stark variiren.

ACHTUNG: Generell sollte mit dieser Einstellung vorsichtig umgegangen werden. Verzichten Sie lieber darauf Bilder in der Datenbank zu speichern, um diese nicht zu groß werden zu lassen. Bei zu großer Datenmenge könnten sonst Probleme mit der Speicherkapazität oder Geschwindigkeit auftreten.

Bilder in Positionseingabe verwenden

Diese Einstellung sorgt dafür, dass Bilder beim Import auch für die Positionserfassung von Angeboten freigegeben werden. Es können mehrere Bilder pro Artikel freigegeben werden.

Standard

Diese Einstellung bezieht sich auf Bilder in Positionseingabe verwenden und gibt Ihnen die Möglichkeit ein Bild als Standard zu definieren. Bei mehreren Artikelbildern wird das Standard-Bild in der Positionserfassung automatisch gezogen.

Bilder im Shop verwenden

Um Bilder im Shop verwenden zu können, muss diese Einstellung aktiviert werden. Standardmäßig sollte dies der Fall sein.

Vorhandene Shop-Bilder löschen

Diese Einstellung gibt Ihnen die Möglichkeit über den Import die alten Bilder automatisch entfernen zu lassen.

Import Shop-Hauptbilder bei Artikel

Da es nur ein Hauptbild im Shop geben kann, können Sie hier über drei Möglichkeiten angeben, wie beim Importieren von neuen Shop-Hauptbildern verfahren werden soll, wenn bereits Eines existiert.

  • überspringen: Das vorhandenes Bild wird beibehalten. Das neue Bild wird nicht importiert.
  • ersetzen (vorhandenes Hauptbild wird Zusatzbild): Aus dem vorhandenen Bild wird ein Zusatzbild gemacht (Typ auf 9002 geändert).
  • ersetzen (Hauptbild überschreiben): Der Eintrag für das vorhandene Bild wird aus der Datenbank gelöscht.

Makro

Die Makros orientieren sich an der Syntax der Sprache Pascal. Alle vorgegebenen Funktionen haben den Parameter cBildname. Diese Variable enthält immer den vollen Bildpfad (z. B. c:\\OBS\DATA\BILDARCHIV\700000\AB123456_1.jpg).

Import-Funktionen

ArtikelNummer

Diese Funktion dient dazu die Artikelnummer zu ermitteln. Bedenken Sie, dass das Ergebnis auch die Bestellnummer bei Ihrem Lieferanten sein kann.

ArtikelEAN

Mit dieser Funktion können Sie die EAN ermitteln lassen. In der Regel stellen Lieferanten Ihre Bilder jedoch mit Bestellnummer und nicht mit EAN zur Verfügung.

ArtikelTyp

Dies setzt den Referenz-Typ im Bild-Eintrag. Dies wird für die weitere Nutzung nicht zwangsweise benötigt, daher kann die Rückgabe gerne leer gelassen werden.

ArtikelName

Die Rückgabe dieser Funktion beeinfluss die Bezeichnung des Bildes. Wenn die Rückgabe leer ist, so wird die Bezeichnung automatisch mit "Art-Nr.: " und der ermittelten Artikelnummer gefüllt.

BilderTyp

Hier kann der Typ des Bildes nachträglich beeinflusst werden. So können Sie z. B. auch bei Angabe 9001 in den Einstellungen Bilder trotzdem als 9002 importieren lassen.

Befehle

Hier finden Sie einige nützliche Befehle/Funktionen, die Sie verwenden können, um das Makro so zu verändern, dass Sie das gewünschte Ergebnis erzielen können. Dadurch dass Sie von der Datei selbst jedoch nur Zugriff auf den Dateinamen haben, sind die Möglichkeiten allerdings begrenzt.

HINWEIS: Im Normalfall werden Sie nur Variablen des Typs [string] benötigen.

ExtractFileName

Verwendung: Dateinamen aus Dateipfad auslesen. Parameter: string Rückgabe: string Beispiel:

cDatei := 'c:\\Ordner\Datei.txt';
cDatei := ExtractFileName(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert c:\\Ordner\Datei.txt zugewiesen. Mit ExtractFileName wird der Dateiname herausgesucht und zurückgegeben. Danach enthält cDatei nur noch den Wert Datei.txt.

StrTran

Verwendung: Sucht einen Text innerhalb eines Textes und ersetzte diesen durch einen andren Text (Suchen und ersetzen). Parameter: string, string, string Rückgabe: string Beispiel:

cDatei := 'Datei.txt';
cName  := StrTran(cDatei ,'.txt','');

Erklärung: Der String-Variable cDatei wird der Wert Datei.txt zugewiesen. Mit StrTran wird im Text der Variable cDatei nach .txt gesucht. Der gefundene Teil wird mit einer leeren Zeichenkette ersetzt. Danach enthält cDatei nur noch den Wert Datei.

Length

Verwendung: Ermittelt die Länge einer Zeichenkette. Parameter: string Rückgabe: integer Beispiel:

cDatei  := 'Datei';
nLaenge := Length(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit Length wird die Länge ermittelt. Das Wort "Datei" hat 5 Buchstaben. nLaenge hat also den Wert 5.

LeftStr/RightStr

Verwendung: Gibt den linken/rechten Teil einer Zeichenketten zurück. Es werden dabei maximal soviele Zeichen zurückgegeben, wie im zweiten Parameter angegeben. Parameter: string, integer Rückgabe: string Beispiel:

cDatei := 'Datei';
cLeft  := LeftStr(cDatei,2);
cRight := RightStr(cDatei,2);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit LeftStr und RightStr werden jeweils die ersten zwei Zeichen von Links und Rechts zurückgegeben. cLeft enthält danach den Wert Da und cRight den Wert ei.

HINWEIS: Sollten mehr Zeichen ermittelt werden, als der ursprüngliche Wert Zeichen hat, so ist das Ergbenis gleich dem Ursprung. LeftStr(cDatei,8) hätte z. B. dazu geführt, dass cLeft ebenfalls Datei enthält.

UpperCase/LowerCase

Verwendung: Umwandeln einer Zeichenkette in Großbuchstaben/Kleinbuchstaben. Parameter: string Rückgabe: string Beispiel:

cDatei := 'Datei';
cUpper := UpperCase(cDatei);
cLower := LowerCase(cDatei);

Erklärung: Der String-Variable cDatei wird der Wert Datei zugewiesen. Mit UpperCase und LowerCase wird die Zeichenkette umgewandelt. cUpper enthält danach den Wert DATEI und cLower den Wert datei.

Token

Verwendung: Teilt eine Zeichenkette anhand eines Zeichens auf und gibt den engebenen Teil zurück. Parameter: string, string, integer Rückgabe: string Beispiel:

cDatei := 'Datei_Name_Mit_Unterstrichen.txt';
cTeil  := Token(cDatei,'_',2);

Erklärung: Der String-Variable cDatei wird der Wert Datei_Name_Mit_Unterstrichen.txt zugewiesen. Mit Token wird die Zeichenkette aufgeteilt. Als Teiler ist ein Unterstrich angeben. Dies führt im angegebenen Beispiel zu vier Teilen: Datei, Name, Mit und Unterstrichen.txt. Es wird der zweite Teil gefordert. Die Variable cTeil enthält demnach den Wert Name.

Beispiele

Nachfolgend finden Sie Beispiele zu einigen bekannten Lieferanten.

HINWEIS: Funktionalität der Makros ohne Gewähr. Es kann passieren, dass ein Lieferant Anpassungen seiner Daten vornimmt. Daher können wir die Funktionalität der angegebenen Makros nicht garantieren. Prüfen Sie nach dem Import die Daten stichprobenartig.

Büroring

    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cNr       := Token(cBildName,'_',1);
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildTyp  := '';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cTmp      := LeftStr(Token(cBildName,'_',2),2);
        if (cTmp = 'a1') then begin
            cBildTyp  := '9001';
        end else begin
            if (LeftStr(cTmp,1) = 'a') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 'p') then begin
                cBildTyp  := '9002';
            end else if (LeftStr(cTmp,1) = 's') then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;

Alka

    function ArtikelNummer(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',1);
        Result    := StrTran(cBildName,'_',' ');
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Art-Nr:'+cBildName;
    end;
     
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := Token(cBildName,'-',2);
        cBildTyp  := '9001';
        if (not Empty(cBildName)) then begin
            cBildTyp := '9002';
        end;
        Result := cBildTyp;
    end;

Adveo

    function ArtikelNummer(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := ExtractFileName(cBildName);
        cArtNr := LeftStr(cArtNr,6);
        Result := cArtNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    var cArtNr : String;
    begin
        cArtNr := UpperCase(ExtractFileName(cBildName));
        cArtNr := LeftStr(cArtNr,6);
        Result := 'Art-Nr:'+cArtNr;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    begin
        Result := '';
    end;

Intos

    function ArtikelNummer(cBildName : String) : String;
    var cNr : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cNr       := LeftStr(cBildName,6);
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        cTmp      : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildTyp  := '9001';
        if (Length(cBildName)>6) then begin
            cBildTyp  := '9002';
        end;
        Result := cBildTyp;
    end;

Rössler

HINWEIS: Die uns bekannten Bildnamen sind nicht eindeutig strukturiert. Es kann daher sein, dass nicht alle Bilder über diesen Import zugeordnet werden können.
    function ArtikelNummer(cBildName : String) : String;
    var cNr  : String;
        nCnt : integer;
        i    : integer;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        cNr       := '';
        if (nCnt = 1) then begin
            cNr := cBildName;
        end else begin
            for i := 1 to nCnt-1 do begin
                if (not Empty(cNr)) then begin
                    cNr := cNr + '-';
                end;
                cNr := cNr + Token(cBildName,'_',i);
            end;
        end;
        Result    := cNr;
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelEAN(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelTyp(cBildName : String) : String;
    begin
        Result := '';
    end;
    
    //------------------------------------------------------------------------------
    
    function ArtikelName(cBildName : String) : String;
    begin
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        Result    := 'Bildname:'+cBildName;
    end; 
    
    //------------------------------------------------------------------------------
    
    function BilderTyp(cBildName : String) : String;
    var cBildTyp  : String;
        nTmp      : Integer;
        nCnt      : Integer;
    begin
        cBildTyp  := '9001';
        cBildName := LowerCase(ExtractFileName(cBildName));
        cBildName := StrTran(cBildName,'.jpg','');
        cBildName := StrTran(cBildName,'.png','');
        nCnt      := NumToken('_',cBildName);
        if (nCnt > 1) then begin
            nTmp := iVal(Token(cBildName,'_',nCnt));
            if (nTmp > 1) then begin
                cBildTyp  := '9002';
            end;
        end;
        Result := cBildTyp;
    end;