In Diskussion Bestand aus bestimmten Lager bei Auftragserstellung abfragen

Sizzoe

Aktives Mitglied
29. Mai 2024
9
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
2.676
840
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

Aktives Mitglied
29. Mai 2024
9
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

Aktives Mitglied
29. Mai 2024
9
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
2.676
840
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
2.676
840
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
1.11.8 - Mengen aus FBA Umlagerungen werden nicht vom verfügbaren Bestand abgezogen JTL-Wawi 1.11 7
Neu Eigener Export - Kunden individuelle Preise + verfügbarer Bestand + VK netto der Kundengruppe User helfen Usern - Fragen zu JTL-Wawi 6
Neu Überverkäufer aktiviert, es wird aber kein Bestand zu Amazon übertragen Amazon-Anbindung - Fehler und Bugs 0
Neu Belege aus JTL Wawi zu Lexoffice Schnittstellen Import / Export 5
Neu Beta-Tester gesucht: Produktdaten aus Artikelfotos schneller für JTL/CSV vorbereiten Dienstleistung, Jobs und Ähnliches 0
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Wert aus „Eigenes Feld“ eines Artikels im Lieferschein unter der Artikelbezeichnung anzeigen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 0
OnPremise API: Keine Daten aus API-Anbindung mittels externer APP JTL-Wawi 1.11 19
Neu JTL → Shopify Connector: MappingTablesException / „Endpoint id is empty“ – betroffene Artikel aus Logs per SQL finden Shopify-Connector 2
Auftrag aus bestimmtem Lager JTL-Wawi 1.7 9
Neu Eignes Feld aus Auftrag in Rechnung anzeigen lassen JTL-WaWi 1.11.10 Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Eigenes Feld aus Artikel auf Lagerpackliste ausgeben JTL-Wawi 1.11 1
Neu Probleme beim Erstellen von Artikeln aus Angeboten von eBay User helfen Usern - Fragen zu JTL-Wawi 1
Ameise-Export: Umsatzsteuer stimmt nicht mit Differenz aus Netto und Brutto überein (insbesondere bei mehreren Steuersätzen) JTL-Wawi 1.11 0
Neu Gutscheincodes aus Shopware 6 in JTL Wawi als Anmerkung zeigen? Shopware-Connector 0
Neu nicht lieferbare Artikel aus Bestellung wieder auf die Einkaufsliste setzen ?! User helfen Usern - Fragen zu JTL-Wawi 1
Neu Komma aus Produktbezeichnung soll als Bindestrich in der URL sein Allgemeine Fragen zu JTL-Shop 1
Neu Merkmale Shop an oder Aus Allgemeine Fragen zu JTL-Shop 1
Globale Textbausteine aus alter WAWI 0.9 JTL-Wawi 1.10 0
Worker versendet keine E-Mails mehr aus der Workflow Queue JTL-Wawi 2.0 6
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Korrekturbuchung zu einer bestimmten Lieferung User helfen Usern - Fragen zu JTL-Wawi 1

Ähnliche Themen