LC.WpfInterface: Lagerbestandsimport-Schnittstellen (StockImport)

Übersicht

Die Lagerbestandsimport-Funktionalität ermöglicht den automatisierten Import von Lagerbeständen aus CSV-Dateien in das Taskcenter/ERP-System. Alle konkreten Lagerbestandsimport-Schnittstellen leiten von der gemeinsamen Basisklasse StockImportBaseInterface ab und überschreiben lieferantenspezifische Einstellungen (z. B. Spaltenpositionen in der CSV-Datei).

Architektur

StockImportBaseInterface (Basisklasse)
│
├── Definiert Standard-Konfiguration (virtuelle Properties)
├── Stellt Autostart-Logik bereit (Datei-Download, Import, Fehlerbehandlung)
└── Wird von firmenspezifischen Klassen abgeleitet

Firmenspezifische Klasse (z. B. XyzStockImportInterface)
│
├── Überschreibt Spalten-Indizes (EAN, Artikelnummer, Menge, ...)
├── Überschreibt Title/Key/StockInterfaceName
└── Überschreibt HasLicense()

Funktionsweise

Ablauf des Imports

  1. Konfiguration laden (LoadInterfaceSettings): Lädt die gespeicherten und lieferantenspezifischen Standardeinstellungen

  2. Autostart (Autostart):
    • Command-Line-Parameter werden ausgewertet und überschreiben ggf. gespeicherte Einstellungen
    • Datei wird per FTP heruntergeladen oder aus einem lokalen Verzeichnis ausgewählt
    • Optional: Prüfung auf fehlende Artikel (CheckMissingItems)
    • Import der Lagerbestände in die Datenbank
    • Protokollierung von Erfolg/Fehler

Datenquelle

Lagerbestände werden aus CSV-Dateien eingelesen, die entweder:
• von einem FTP-Server heruntergeladen werden, oder
• aus einem lokalen Importverzeichnis ausgewählt werden


Konfigurierbare Eigenschaften der Basisklasse

Allgemeine Schnittstellen-Eigenschaften

Property

Beschreibung

Title

Anzeigename der Schnittstelle

Key

Eindeutiger Schlüssel der Schnittstelle

StockInterfaceName

Interner Name zur Zuordnung der Lagerimport-Konfiguration

HasLicense

Prüft, ob die Lizenz für diese Schnittstelle vorhanden ist

CanLockInterface

Gibt an, ob die Schnittstelle gesperrt werden kann (Standard: false)

SupportsAutostart

Gibt an, ob die Schnittstelle automatisiert gestartet werden kann (Standard: true)

CSV-Spaltenzuordnung

Property

Beschreibung

EANIndex

Spaltenindex des EAN-Codes

ItemNumberIndex

Spaltenindex der Artikelnummer

ManufacturerNumberIndex

Spaltenindex der Herstellerartikelnummer

ManufacturerNameIndex

Spaltenindex des Herstellernamens

QuantityIndex

Spaltenindex des Lagerbestands

Quantity2Index

Spaltenindex eines zweiten Lagerbestands (z. B. reservierte Menge)

ColumnsCount

Erwartete Gesamtanzahl der Spalten in der CSV-Datei

HeaderRows

Anzahl der zu überspringenden Kopfzeilen (Standard: 1)

Artikelsuche

Property

Beschreibung

SearchItemNumber

Artikel wird über die Artikelnummer gesucht

SearchEAN

Artikel wird über den EAN-Code gesucht

SearchManufacturerNumber

Artikel wird über die Herstellerartikelnummer gesucht

Formatierung & Sonderbehandlung

Property

Beschreibung

NumberFormatInfo

Zahlenformat für die Interpretation von Mengenangaben (z. B. Dezimaltrennzeichen)

TrimBeginAndEnd

Zeichen, die am Anfang/Ende von Werten entfernt werden

SplitStocks

Gibt an, ob ein Feld mehrere Lagerorte/Bestände enthält, die aufgeteilt werden müssen

SplitSign

Trennzeichen für SplitStocks (Standard: ;)

Mengen-Multiplikation

Einige Lieferanten liefern Bestände in Verpackungseinheiten (z. B. Kartons), die in Stückzahlen umgerechnet werden müssen:

Property

Beschreibung

MultiplicationColumnIndex

Spaltenindex, der den Multiplikationsfaktor enthält

MultiplicationValue

Fester Wert, mit dem multipliziert wird (falls kein Spaltenbezug)

MultiplicationMinQuantity / MultiplicationMaxQuantity

Mengenbereich, für den die Multiplikation gilt

MultiplicationFactorFixed

Gibt an, ob ein fixer Multiplikationsfaktor verwendet wird

MultiplicationFactor

Der feste Multiplikationsfaktor

Sonstiges

Property

Beschreibung

LogImport

Aktiviert eine detaillierte Protokollierung des Imports

Unterstützte Kommandozeilenparameter

Die Basisklasse unterstützt folgende Parameter für den Autostart-Betrieb (überschreiben die gespeicherten Einstellungen):

Parameter

Beschreibung

/StockNumber

Lagernummer, in die der Bestand importiert wird

/TransferOpenOrders

Offene Bestellmengen werden mit übernommen

/FtpUrl

FTP-Server-URL zum Download der Datei

/FtpUser

FTP-Benutzername

/FtpPassword

FTP-Passwort

/FtpPort

FTP-Port

/FtpProtocol

FTP-Protokoll (z. B. FTP, SFTP)

/FtpFilename

Dateiname auf dem FTP-Server

/Folder

Lokales Verzeichnis für die Bestandsdateien

/MoveOnlySelectedFile

Nur die ausgewählte Datei wird ins Backup verschoben

/CheckMissingItems

Prüft, ob Artikel aus der CSV im System fehlen

/EAN_Index

Spaltenindex des EAN im CSV

/Manufacturer_Index

Spaltenindex der Herstellerartikelnummer

/Itemnumber_Index

Spaltenindex der Artikelnummer

/Quantity_Index

Spaltenindex des Lagerbestands

/Quantity2_Index

Spaltenindex des zweiten Lagerbestands

/ColumnsCount

Anzahl der Spalten in der CSV-Datei

/No_Stock_Clearing

Artikel, die nicht in der Datei enthalten sind, werden nicht auf Bestand 0 gesetzt

/No_Stock_Delete

Deaktiviert das Löschen von Bestandseinträgen

Fehlende Artikel prüfen

Über den Parameter /CheckMissingItems kann geprüft werden, ob Artikel aus der Importdatei im System nicht gefunden werden können:

  1. Es wird eine CSV-Datei MissingItems_<Key>.csv im Verzeichnis MissingItems erstellt

  2. Die Datei enthält EAN, Herstellerartikelnummer, Artikelnummer und die jeweiligen Mengen der nicht gefundenen Artikel

  3. Optional wird die Datei automatisch per E-Mail versendet (siehe unten)

E-Mail-Benachrichtigung

Über die Methode SendMail können Benachrichtigungen (z. B. bei fehlenden Artikeln) versendet werden. Voraussetzung sind folgende Einstellungen:

Einstellung

Beschreibung

EmailSenderEmail

Absenderadresse

EmailReceiverEmail

Empfängeradresse

EmailHost

SMTP-Server

EmailPort

SMTP-Port

EmailUsername / EmailPassword

Zugangsdaten (optional, sonst Standardanmeldeinformationen)

EmailUseSSL

Verschlüsselte Verbindung verwenden

Liste der vorhandenen Lagerbestandsimporte

  • Achilles

  • Alcar

  • Autec

  • Barracuda

  • BBS

  • Bohnenkamp

  • Borbet

  • Breyton

  • Bridgestone

  • Brock

  • CMS

  • Continental

  • CWG

  • Denzel

  • Diewe

  • Falken

  • Fondmetal

  • Fosab

  • Goodyear

  • Hankook

  • Heuver

  • Interpneu

  • Kumho

  • MBDesign

  • Michelin

  • MW

  • Nokian

  • OZ

  • Pirelli

  • PrimeTire

  • PrimeTireHankook

  • Proline

  • Remus

  • Rhenag

  • Semperit

  • Seng

  • Steffny

  • SuperiorInustries

  • Tomason

  • Toyo

  • TyrolPneu

  • Vredestein

  • Yokohama

Erstellung einer neuen Lagerbestandsimport-Schnittstelle

Um einen neuen Import zu erstellen, muss lediglich eine neue Klasse erstellt werden, die von StockImportBaseInterface erbt:

Java
public class BeispielStockImportInterface : StockImportBaseInterface
{
    public override string Title { get { return "Lagerstandsimport Beispiel"; } }
    public override string Key { get { return "StockImport-Beispiel"; } }
    public override string StockInterfaceName { get { return "Beispiel"; } }

    public override bool HasLicense(LC.Globals.DTO.InstalledProgramModules modules)
    {
        return modules.Interfaces.StockImportBeispiel;
    }

    public override int EANIndex { get { return 2; } }
    public override int QuantityIndex { get { return 13; } }
    public override int ColumnsCount { get { return 13; } }
    public override bool SearchEAN { get { return true; } }
}

Support

Bei Fragen zur Konfiguration oder Einrichtung eines neuen Lagerbestandsimports wenden Sie sich bitte an Ihren Systemadministrator oder das Entwicklungsteam.


Zusatzinformation zum Import:

Bei Lagerbestandsimporten (z.B. Goodyear) gibt es einen GRUNDLAGEN_WERTE Eintrag mit Namen "GoodyearQuantitiyIndex" mit Wert = X. Der Wert X gibt an in welcher Spalte in der Excel der Bestand übergeben wird (erste Spalte hat Index 0).
Sollte beim Import also keine Menge übergeben werden kann hier geprüft werden was in den GRUNDLAGEN_WERTE eingetragen ist und ob dies mit der Importdatei übereinstimmt.
Sollte dies plötzlich auftreten ist nicht auszuschließen dass die Importdateien nun anders aufgebaut sind.