Neu Bestand aus bestimmten Lager bei Auftragserstellung abfragen

Sizzoe

Neues Mitglied
29. Mai 2024
6
1
Hallo zusammen,

ich habe verschiedene WMS-Lager in Verwendung.
Grundsätzlich handelt es hierbei um zweierlei Lagertypen:
  1. "Vor-Ort-Lager"
  2. "Außenlager"
Zweck des Workflows ist es, eine Benachrichtigung zu erstellen, wenn der "Vor-Ort-Lagerbestand" einen gewissen Wert erreicht bzw. unterschreitet, damit man rechtzeitig eine Umlagerung anstoßen kann.

Quasi: Wenn Bestand von Artikel X in Lager "Vor-Ort" <= 100, dann sende E-Mail mit:

1. Artikelnamen der betroffenen Artikel
2. "Vor-Ort-Bestände" der betroffenen Artikel
3. Einem Hinweis, dass umgelagert werden soll

Ich habe verschiedene Scripte erstellt und getestet, leider erfolglos.

Wenn mir jemand sagen könnte, wie ich die Bestände der Auftragsartikel in einem bestimmten Lager (Per Nummer oder Kürzel identifizieren) abrufen kann - das würde mir sehr helfen und ausreichen.

Danke an Alle und viele Grüße!
Sizzoe
 

frankell

Sehr aktives Mitglied
9. September 2019
1.251
400
Flensburg
Hallo @Sizzoe,

bei der Bedingung eine Erweiterte Eigenschaft nutzen mit Rückgabetyp Boolean und dem folgenden Code:

Code:
{% assign Umlagerung = false -%}
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% capture query -%}
SELECT
    CASE WHEN fBestand < 100 THEN 'true'
    ELSE 'False'
    END
FROM
    tlagerbestandProLagerLagerartikel
WHERE
    kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
    AND kWarenlager = (
        SELECT
            kWarenlager
        FROM
            tWarenLager
        WHERE
            cName = 'Vor-Ort-Lager'
    );
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result == 'true' -%}
{% assign Umlagerung = true -%}
{% endif -%}
{% endfor -%}
{{ Umlagerung }}

Im Mailtext dann den Code in geänderter Form verwenden:

Code:
Umzulagern (ArtNr, ArtName, Bestand):
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% capture query -%}
SELECT
    CAST(fBestand AS INT)
FROM
    tlagerbestandProLagerLagerartikel
WHERE
    kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
    AND kWarenlager = (
        SELECT
            kWarenlager
        FROM
            tWarenLager
        WHERE
            cName = 'Vor-Ort-Lager'
    );
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result < 100 -%}
{{ Artikelbeschreibungen.Artikelnummer }}, {{ Artikelbeschreibungen.Artikelbezeichnung }}, {{ result }}
{% endif -%}
{% endfor -%}
 
  • Ich liebe es
Reaktionen: Sizzoe

Sizzoe

Neues Mitglied
29. Mai 2024
6
1
Hallo @Sizzoe,

bei der Bedingung eine Erweiterte Eigenschaft nutzen mit Rückgabetyp Boolean und dem folgenden Code:

Code:
{% assign Umlagerung = false -%}
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% capture query -%}
SELECT
    CASE WHEN fBestand < 100 THEN 'true'
    ELSE 'False'
    END
FROM
    tlagerbestandProLagerLagerartikel
WHERE
    kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
    AND kWarenlager = (
        SELECT
            kWarenlager
        FROM
            tWarenLager
        WHERE
            cName = 'Vor-Ort-Lager'
    );
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result == 'true' -%}
{% assign Umlagerung = true -%}
{% endif -%}
{% endfor -%}
{{ Umlagerung }}

Im Mailtext dann den Code in geänderter Form verwenden:

Code:
Umzulagern (ArtNr, ArtName, Bestand):
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% capture query -%}
SELECT
    CAST(fBestand AS INT)
FROM
    tlagerbestandProLagerLagerartikel
WHERE
    kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
    AND kWarenlager = (
        SELECT
            kWarenlager
        FROM
            tWarenLager
        WHERE
            cName = 'Vor-Ort-Lager'
    );
{% endcapture -%}
{% assign result = query | DirectQueryScalar -%}
{% if result < 100 -%}
{{ Artikelbeschreibungen.Artikelnummer }}, {{ Artikelbeschreibungen.Artikelbezeichnung }}, {{ result }}
{% endif -%}
{% endfor -%}
Guten Morgen frankell,

vielen lieben Dank (schon wieder :) )!

Habe es getestet - funktioniert!

Ich wünsche einen angenehmen Tag und sende viele Grüße!
Sizzoe
 

Sizzoe

Neues Mitglied
29. Mai 2024
6
1
Falls jemand ein ähnliches Anliegen hat. Ich habe hier die Prüfung auf einen bestimmten Kunden und gegen den Mindestbestand ergänzt:

Code:
{% assign Umlagerung = false -%}
{% if Vorgang.Stammdaten.Kunde.InterneKundennummer == 'Hier_die_interne_Kundennummer' -%}
    {% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
    {% capture query -%}
    SELECT
        CASE
            WHEN lb.fBestand < a.nMidestbestand THEN 'true'
            ELSE 'False'
        END AS BestandCheck
    FROM
        tlagerbestandProLagerLagerartikel lb
    JOIN
        tArtikel a ON lb.kArtikel = a.kArtikel
    WHERE
        lb.kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
        AND lb.kWarenlager = (
            SELECT
                kWarenlager
            FROM
                tWarenLager
            WHERE
                cName = 'Hier_der_Name_des_Lagers'
        );
    {% endcapture -%}
    {% assign result = query | DirectQueryScalar -%}
    {% if result == 'true' -%}
    {% assign Umlagerung = true -%}
    {% endif -%}
    {% endfor -%}
{% endif -%}   
{{ Umlagerung }}

Sodass der Mailcode dann wie folgt aussieht:
Code:
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
  {% capture queryBestand -%}
    SELECT CAST(fBestand AS INT)
    FROM tlagerbestandProLagerLagerartikel
    WHERE kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }}
      AND kWarenlager = (
        SELECT kWarenlager
        FROM tWarenLager
        WHERE cName = 'Hier_der_Name_des_Lagers'
      );
  {% endcapture -%}
  {% assign resultBestand = queryBestand | DirectQueryScalar | plus: 0 -%}

  {% capture queryMindestbestand -%}
    SELECT CAST(nMidestbestand AS INT)
    FROM tArtikel
    WHERE kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEscape }};
  {% endcapture -%}
  {% assign resultMindestbestand = queryMindestbestand | DirectQueryScalar | plus: 0 -%}

  {% if resultBestand < resultMindestbestand -%}
    <br><b>Artikelnummer:</b> {{ Artikelbeschreibungen.Artikelnummer }}<br>
    <b>Artikelname:</b> {{ Artikelbeschreibungen.Artikelbezeichnung }}<br>
    <b>Vor-Ort-Bestand:</b> {{ resultBestand }}<br>
    <b>Mindestbestand:</b> {{ resultMindestbestand }}<br>
  {% endif -%}
{% endfor -%}

VG
Sizzoe
 
  • Gefällt mir
Reaktionen: frankell

frankell

Sehr aktives Mitglied
9. September 2019
1.251
400
Flensburg
Guten Morgen frankell,

vielen lieben Dank (schon wieder :) )!

Habe es getestet - funktioniert!

Ich wünsche einen angenehmen Tag und sende viele Grüße!
Sizzoe

Gerne.

Noch eine Minikorrektur, die zwar im vorliegenden Fall egal ist, aber falls mal jemand die Logik umdrehen und mit False arbeiten möchte/muss:

Dann müsste aus "False" immer "false" werden.
 

frankell

Sehr aktives Mitglied
9. September 2019
1.251
400
Flensburg
Falls jemand ein ähnliches Anliegen hat. Ich habe hier die Prüfung auf einen bestimmten Kunden und gegen den Mindestbestand ergänzt:

{% if Vorgang.Stammdaten.Kunde.InterneKundennummer == 'Hier_die_interne_Kundennummer' -%}

Danke für die Erweiterung!

Die wenigsten dürften wissen, was die "interne" Kundennummer ist und wie man die herausfindet, daher vielleicht eher:

Code:
{% if Vorgang.Stammdaten.Kunde.Kundennummer == 'Hier_die_Kundennummer' -%}
 
Ähnliche Themen
Titel Forum Antworten Datum
Bestand verschiedener Chargen sehen JTL-Wawi 1.9 6
Neu Artikel ohne Bestand auf "Inaktiv" setzen Shopware-Connector 1
Neu Lieferantenbestellung bestand falsch User helfen Usern - Fragen zu JTL-Wawi 4
Neu SHOP 5.4.1: Absturz beim Ändern von Mengen im Warenkorb, wenn Menge > Bestand JTL-Shop - Fehler und Bugs 1
Neu Verfügbarer Bestand wird bei Onlinebestellung nicht reduziert JTL-Wawi - Fehler und Bugs 11
Neu Dropshipping - Lieferantenbestand vs eigener Bestand User helfen Usern 1
Neu Bestand pro Lager wird nicht angezeigt. Allgemeine Fragen zu JTL-Shop 3
Bestand in Aufträgen, obwohl es keine Aufträge gibt JTL-Wawi 1.9 3
Neu Bestand QuickSync funktioniert nicht Shopware 6 Shopware-Connector 1
Neu Der Amazon Bestand wird nicht übernommen/gespeichert. Worker setzt den vollen Lagerbestand wieder ein. JTL-Wawi - Fehler und Bugs 0
Neu eBay Bestellung aus der Schweiz MwST und DHL User helfen Usern - Fragen zu JTL-Wawi 1
Neu Eigenes Feld aus Auftrag in Rechnung ausgeben. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
Eigenes Datenfeld aus dem Artikelstamm in den Rechnungspositionen abbilden? JTL-Wawi 1.8 1
Neu Versandlabel direkt aus JTL WaWi JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu Fehlermeldung bei Synchronisation aus der WaWi: "Artikel "XYZ" kann nicht hochgeladen werden, da der Shop den Steuersatz '19' nicht unterstützt." WooCommerce-Connector 1
Produktdaten sind online - Wie jetzt aus JTL Angebotsdaten erstellen? kaufland.de - Anbindung (SCX) 0
Zahlung aus zwei "Quellen" JTL-Wawi 1.7 1
Neu Mediendateien aus Artikel sortimentsübergreifend entfernen JTL Ameise - Eigene Exporte 3
Neu Wie rufe ich Artikelbilder aus der Wawi im PowerBI Report Builder ab? User helfen Usern - Fragen zu JTL-Wawi 2
Änderungen aus Child-Template Einstellungen (Nova-child) werden nicht übernommen (Footer/Header) Einrichtung JTL-Shop5 3
Neu Kinderartikel aus bestehenden Artikeln JTL-Wawi 1.6 7
Neu Bild-URL per Workflow aus eigene Felder zuordnen – Geht das? User helfen Usern - Fragen zu JTL-Wawi 5
Neu Barauszahkungen etc aus POS im WaWi irgendwo sichtbar? Allgemeine Fragen zu JTL-POS 2
Neu Bestellbestätigung aus JTL SHOP mit Lieferadresse Dienstleistung, Jobs und Ähnliches 0
Neu Workflow-Bedingungen für Teillieferung aus zwei Lagern (Lager A & Lager B) User helfen Usern - Fragen zu JTL-Wawi 2
Neu Merkmale aus Globalen Angebotsvorlagen werden bei erstellen über Ameise nicht übernommen Wawi 1.10 eBay-Anbindung - Fehler und Bugs 0
Neu Packtisch+ erster Scan gibt keinen Erfolgston aus JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Beantwortet Packtisch liefert nicht nach FIFO aus Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 3
Neu Teillieferung aus Vorkommissionierung Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 6
Neu Newsletter Abonnenten export aus dem JTL Shop? Allgemeine Fragen zu JTL-Shop 1
In Diskussion Syntax für For-Schleife? For-Schleife im Workflow gibt Syntaxfehler aus ... JTL-Workflows - Fehler und Bugs 13
In Diskussion Gesamtgewicht aus mehreren Paketen je Auftrag JTL-Workflows - Ideen, Lob und Kritik 1
Neu Gratisartikel werden plötzlich aus Warenkorb entfernt Allgemeine Fragen zu JTL-Shop 5
Neu Artikelettikett drucken mit Eigenen Feldern aus dem Reiter Allgemein User helfen Usern - Fragen zu JTL-Wawi 2
Neu Inhalt / Menge aus der Wawi im JTL Shop anzeigen / ohne Funktion ? Allgemeine Fragen zu JTL-Shop 2
Gelöst Kann man aus einem Kassenbon nachträglich einen DIN A4-Beleg ausdrucken? Allgemeine Fragen zu JTL-POS 2
Neu Was passiert wenn ich Amazon Aufträge, Lieferscheine und Rechnungen per SQL aus der WAWI-Datenbank lösche? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Emails senden aus der Wawi an Bestellungen via Gastkonto (JTL Wawi 1.5.55.5 / JTL Shop 4.05) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu OSS-Zahlungsaufforderung aus Spanien erhalten Smalltalk 7
Neu Bei bestimmten Artikeln nur Palettenversand Allgemeine Fragen zu JTL-Shop 3

Ähnliche Themen