Kugelschubser
Mitglied
Moin JTL-Gemeinde,
ich habe leider zu folgendem Thema nur ältere Posts ohne wirkliche Lösung gefunden. Vielleicht kann mir hier wer weiterhelfen.
Generell bin ich in Software-Entwicklung nicht ganz unbewandert, ich hocke im 6 Semester Software-Engineering und schreibe mir aktuell selber auch einen Python-Webcrawler, der Lieferantendaten für mich ausliest sofern ich von den Lieferanten keine CSV oder XML erhalte.
Nur ist es auch so, dass mein SQL-Modul damit schon zwei Jahre her ist und ich dort eher auf Prüfungsbestehen als auf wirkliches Verständnis gelernt habe. Ich weiß also generell was SQL macht und kenne grob den Syntax, das war es dann aber auch schon. Mit Microsoft SQL-Datenbanken habe ich aber noch nie gearbeitet, nur mit MariaDB / mySQL.
Mit JTL-Workflows habe ich mich außerdem nur bedingt und mit DotLiquid an der Stelle noch gar nicht auseinandergesetzt, benötige dort also definitiv Hinweise.
Auch bin ich mir sicher, dass man das ganze auch nicht unbedingt per Workflow lösen sollte, weil dies pro Artikel einfach eine längere Bearbeitungszeit bedeutet und das bei aktuell 10.000 und angedacht 100.000+ Artikeln einfach zu lange dauern würde. Die beste Lösung wäre also meiner Meinung nach, per Workflow bei Ameisen-Import ein externes SQL-Skript anzustoßen, was die Bearbeitung deutlich schneller erledigt.
Alternativ würde es reichen, wenn
Ausgangssituation:
Geschäftsmodell ist eine Mixtur aus normalem Lagerversand und Dropshipping.
Für Artikel sind häufig mehrere Lieferanten eingepflegt, welche unterschiedliche Preise und Bestände haben.
Wir gehen als Beispiel einfach mal von folgenden Daten aus:
Lieferant A - 5 Stk. - 15.00
Lieferant B - 20 Stk. - 10.00
Lieferant C - 100 Stk. - 25.00
Was ich gerne hätte, wäre eine automatische Änderung des Standardlieferanten, wenn kein Lagerbestand mehr vorhanden ist auf den günstigsten Lieferanten mit Bestand.
Heißt anhand des Beispieles wäre es Lieferant B. Hat dieser keinen Bestand mehr, soll auf A ausgewichen werden, danach auf C. Wenn kein Lieferant den Artikel hat, soll der günstigste als Standard gesetzt werden bis irgendwo wieder Bestand vorhanden ist.
Hier habe ich bis auf die Grundlogik dahinter noch keine Idee, wie ich das angehen könnte.
Der zweite Schritt wäre dann, einmal stündlich die Preise aller Artikel auf Basis des Standardlieferanten anzupassen.
Es gibt zwar die Funktion für Preiskalkulation in der Wawi, aber diese kann nichtg auf XX.90€-Werte runden.
Hier wäre also die Grundidee, die Preise des Standardlieferanten per SQL zu exportieren, in einem Python-Script zu berechnen, und dann per SQL den Brutto-VK wieder in die Datenbank zu jagen. Das ganze dann halt einmal Stündlich als Service.
Die Grundfunktion als Pseudocode ist ja schnell geschrieben (ohne jetzt die DB-Struktur von JTL zu kennen)
Jetzt die Frage: Habe ich hier einen Denkfehler, oder ist die Lösung wirklich so einfach (natürlich dann mit mit richtigem Syntax und ordentlich in Python)?
Und wie würde ich am besten das Problem mit dem setzen des Standard-Lieferanten bei Import durch die Ameise angehen. Da komme ich noch nicht ganz auf die Lösung.
ich habe leider zu folgendem Thema nur ältere Posts ohne wirkliche Lösung gefunden. Vielleicht kann mir hier wer weiterhelfen.
Generell bin ich in Software-Entwicklung nicht ganz unbewandert, ich hocke im 6 Semester Software-Engineering und schreibe mir aktuell selber auch einen Python-Webcrawler, der Lieferantendaten für mich ausliest sofern ich von den Lieferanten keine CSV oder XML erhalte.
Nur ist es auch so, dass mein SQL-Modul damit schon zwei Jahre her ist und ich dort eher auf Prüfungsbestehen als auf wirkliches Verständnis gelernt habe. Ich weiß also generell was SQL macht und kenne grob den Syntax, das war es dann aber auch schon. Mit Microsoft SQL-Datenbanken habe ich aber noch nie gearbeitet, nur mit MariaDB / mySQL.
Mit JTL-Workflows habe ich mich außerdem nur bedingt und mit DotLiquid an der Stelle noch gar nicht auseinandergesetzt, benötige dort also definitiv Hinweise.
Auch bin ich mir sicher, dass man das ganze auch nicht unbedingt per Workflow lösen sollte, weil dies pro Artikel einfach eine längere Bearbeitungszeit bedeutet und das bei aktuell 10.000 und angedacht 100.000+ Artikeln einfach zu lange dauern würde. Die beste Lösung wäre also meiner Meinung nach, per Workflow bei Ameisen-Import ein externes SQL-Skript anzustoßen, was die Bearbeitung deutlich schneller erledigt.
Alternativ würde es reichen, wenn
Ausgangssituation:
Geschäftsmodell ist eine Mixtur aus normalem Lagerversand und Dropshipping.
Für Artikel sind häufig mehrere Lieferanten eingepflegt, welche unterschiedliche Preise und Bestände haben.
Wir gehen als Beispiel einfach mal von folgenden Daten aus:
Lieferant A - 5 Stk. - 15.00
Lieferant B - 20 Stk. - 10.00
Lieferant C - 100 Stk. - 25.00
Was ich gerne hätte, wäre eine automatische Änderung des Standardlieferanten, wenn kein Lagerbestand mehr vorhanden ist auf den günstigsten Lieferanten mit Bestand.
Heißt anhand des Beispieles wäre es Lieferant B. Hat dieser keinen Bestand mehr, soll auf A ausgewichen werden, danach auf C. Wenn kein Lieferant den Artikel hat, soll der günstigste als Standard gesetzt werden bis irgendwo wieder Bestand vorhanden ist.
Hier habe ich bis auf die Grundlogik dahinter noch keine Idee, wie ich das angehen könnte.
Der zweite Schritt wäre dann, einmal stündlich die Preise aller Artikel auf Basis des Standardlieferanten anzupassen.
Es gibt zwar die Funktion für Preiskalkulation in der Wawi, aber diese kann nichtg auf XX.90€-Werte runden.
Hier wäre also die Grundidee, die Preise des Standardlieferanten per SQL zu exportieren, in einem Python-Script zu berechnen, und dann per SQL den Brutto-VK wieder in die Datenbank zu jagen. Das ganze dann halt einmal Stündlich als Service.
Die Grundfunktion als Pseudocode ist ja schnell geschrieben (ohne jetzt die DB-Struktur von JTL zu kennen)
Code:
for x in artikel:
ekNetto = SELECT ek_stdLieferant FROM artikel WHERE id = 'x';
vkNetto = ekNetto * 1.25
vkBrutto = math.ceil(vkNetto) - 0.10
UPDATE artikel SET vk_brutto = vkBrutto WHERE id = 'x';
Jetzt die Frage: Habe ich hier einen Denkfehler, oder ist die Lösung wirklich so einfach (natürlich dann mit mit richtigem Syntax und ordentlich in Python)?
Und wie würde ich am besten das Problem mit dem setzen des Standard-Lieferanten bei Import durch die Ameise angehen. Da komme ich noch nicht ganz auf die Lösung.