Neu Kunden automatisiert über Lieferverzögerungen informieren (Video)

wwwSANPROde

Aktives Mitglied
26. August 2013
2
0
Hi,

wichtig ist die exakt gleiche Benennung des Feldes. Im SQL siehst du welches eigene Feld da abgefragt wird. Sollte genauso heißen.

Gruß

Manuel

Die Attribute sind exaxt nach der SQL benannt.
Der Mailbereich, welcher sich auf nicht verfügbare Artikel bezieht, funktioniert einwandfrei. Leider aber nicht im Teil der reservierten bzw. bereits versendeten Artikel.
 

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.874
1.047
Hückelhoven

Harry_

Gut bekanntes Mitglied
11. Juni 2019
151
23
Servus,
es wäre gut wenn nicht sogar hervorragend wenn man das ganze auch auf Dropshipping ausweiten könnte.
Einige unserer Dropshipping-Artikel haben momentan leider einiges an Lieferzeit, und so könnten wir auch die einfach benachrichtigen.
Oder geht das bereits und das ging an mir vorbei?

ciao
Harry
 

Fabxyz123

Mitglied
7. März 2023
6
1
Moin,
Ist es denn möglich, die Stücklistenartikelnummer, die der Kunde eigentlich erworben hat, abbilden zu können? Da bei uns ansonsten die Artikelnummer nur von der Komponente angezeigt wird. Ansonsten führt es immer zur Verwirrung der Kunden.

MfG
Fabrizio
 

Solarpeak

Aktives Mitglied
1. April 2021
15
4
Wir haben das Problem gelöst, indem wir bei der "Lieferverzögerungen Queue" im Zeitplan "nur letzten ausführen" angewählt haben.
Interessieren würde uns aber immer noch warum das Problem entsteht, und warum es so behoben wird:)
 
  • Gefällt mir
Reaktionen: Fabxyz123

Fabian507

Neues Mitglied
28. Juni 2024
8
0
@Manuel Pietzsch

Der Workflow ist mega.:thumbsup:
Aktuell haben wir ein kleines Problem damit.
Bei Vielen Artikeln sind Überverkäufe möglich bei uns, dies bereitet uns mit diesem Workflow einige Probleme.

Ist noch gar kein Zulauf da erscheint der Artikel mit "Lieferdatum offen"
Ist ein zulauf eingetragen erscheint das richtige Datum.
Soweit so gut.

Ist aber der Zulauf bereits eingetragen und kleiner als die Bestellte Menge, so wird dieser Artikel in der Mail nicht mehr aufgelistet.

Dies führt dazu, dass einige Kunden Mails mit unvollwtändigen Updates oder bei nur einem Bestellten Artikel sogar leere Mails erhalten.


Kennt jemand dieses Problem und hat allenfalls eine Lösung gefunden?
 

aero

Neues Mitglied
2. Januar 2024
4
0
<style type="text/css"> .tg {border-collapse:collapse;border-spacing:0;border-color:#aaa;} .tg td{font-family:Verdana, sans-serif;font-size:13px;padding:10px 5px;text-align:center;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#333;background-color:#fff;} .tg th{font-family:Verdana, sans-serif;font-size:13px;font-weight:bold;text-align:center;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#fff;background-color:#f67f00;} .tg .tg-0lax{text-align:left;vertical-align:top} .tg .tg-dg7a{background-color:#FCFBE3;text-align:left;vertical-align:top} .tg .tg-open{background-color:#ff8181;text-align:left;vertical-align:top} .tg .tg-part{background-color:#fffe65;text-align:left;vertical-align:top} </style> <span style="font-size: 10pt"> <p /></span><span style="font-family: Verdana"><span style="font-size: 10pt; font-family: Verdana"> {% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%} Hi {{ Vorgang.Stammdaten.Kunde.Adresse.Vorname }}. {% else -%} Hallo {{ Vorgang.Stammdaten.Kunde.Adresse.Vorname }}, {% endif -%} <br> <br>

Hi Freunde,

in meinem neuen Video zeige ich euch wie ihr eure Kunden automatisiert über Lieferverzögerungen informieren könnt.


Hier der dazu verwendete Code:

Achtung: In der JTL-Wawi muss FiFo in den globalen Einstellungen aktiviert sein, sonst macht das hier keinen Spaß:

Den Anhang 70062 betrachten

1. Die erweiterte Eigenschaft "EintreffendeLieferungen":

Den Anhang 63742 betrachtenDen Anhang 63745 betrachten

Code:
{% capture query -%}
DECLARE @kBestellung AS INT = {{ Vorgang.Stammdaten.InterneAuftragsnummer }};

SELECT COUNT(*) AS Anzahl
FROM
(
    SELECT  vBestellPosLieferInfo.kBestellung,
            vBestellPosLieferInfo.kBestellPos,
            MIN(ZulaufAnDatum.dLieferdatum) AS dLieferungEingetroffen
    FROM
    (
        SELECT  tLieferantenBestellungPos.kArtikel,
                tLieferantenBestellungPos.dLieferdatum,
                SUM(tLieferantenBestellungPos.fAnzahlOffen) OVER (PARTITION BY tLieferantenBestellungPos.kArtikel ORDER BY tLieferantenBestellungPos.dLieferdatum ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS fZulaufAnDatum
        FROM tLieferantenBestellungPos
        JOIN dbo.tLieferantenBestellung ON tLieferantenBestellungPos.kLieferantenBestellung = tLieferantenBestellung.kLieferantenBestellung
        WHERE   tLieferantenBestellung.nStatus IN (20, 30) -- Lieferantenbestellung mit Zuläufen berücksichtigen
                AND tLieferantenBestellungPos.kArtikel > 0
    ) ZulaufAnDatum
    JOIN Versand.vBestellPosLieferInfo ON ZulaufAnDatum.kArtikel = vBestellPosLieferInfo.kArtikel
    LEFT JOIN
    (
        --
        -- Artikel ausschließen mit dem Eigenen Feld LieferverzögerungKeineMail = 1
        --
        SELECT DISTINCT tArtikel.kArtikel
        FROM dbo.tAttributSprache
        JOIN dbo.tArtikelAttribut ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
        JOIN dbo.tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
        JOIN dbo.tArtikel ON tArtikelAttribut.kArtikel = tArtikel.kArtikel
        WHERE    tAttributSprache.cName = 'LieferverzögerungKeineMail'
                AND tArtikelAttributSprache.nWertInt = 1
    ) AS ausgeschlosseneArtikel ON ZulaufAnDatum.kArtikel = ausgeschlosseneArtikel.kArtikel
    WHERE   vBestellPosLieferInfo.fAnzahlFehlbestandEigen > 0.0
            AND vBestellPosLieferInfo.fAnzahlFehlbestandEigen <= ZulaufAnDatum.fZulaufAnDatum         
            AND ausgeschlosseneArtikel.kArtikel IS NULL
    GROUP BY    vBestellPosLieferInfo.kBestellung,
                vBestellPosLieferInfo.kBestellPos,
                vBestellPosLieferInfo.kArtikel
) AS BestellposLieferung
JOIN dbo.tbestellung ON BestellposLieferung.kBestellung = tbestellung.kBestellung
WHERE   BestellposLieferung.kBestellung = @kBestellung
        --AND ISNULL(tbestellung.dLieferdatum, DATEADD(dd, 2, GETDATE())) < dLieferungEingetroffen; --Einkommentieren wenn das vor. Lieferdatum von Aufträgen vor der eintreffenden Lieferung liegen soll
{% endcapture -%}
{{ query | DirectQueryScalar }}

2. Der Empfänger der E-Mail

Den Anhang 63748 betrachten

Code:
{% if Vorgang.Lieferung.Lieferadresse.EMail != empty -%}
{{ Vorgang.Lieferung.Lieferadresse.EMail }}\
{% if Vorgang.Lieferung.Lieferadresse.EMail != Vorgang.Zahlungen.Rechnungsadresse.EMail -%}
;{{ Vorgang.Zahlungen.Rechnungsadresse.EMail }}\
{% endif -%}
{% else -%}
{{ Vorgang.Zahlungen.Rechnungsadresse.EMail }}
{% endif -%}

3. Der Betreff der E-Mail

Den Anhang 63751 betrachten
Code:
{{ Vorgang.Stammdaten.Auftragsnummer }} - Lieferung verzögert sich

4. Der Inhalt / Text der E-Mail

Den Anhang 63754 betrachten


Code:
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;border-color:#aaa;}
.tg td{font-family:Verdana, sans-serif;font-size:13px;padding:10px 5px;text-align:center;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#333;background-color:#fff;}
.tg th{font-family:Verdana, sans-serif;font-size:13px;font-weight:bold;text-align:center;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#fff;background-color:#f67f00;}
.tg .tg-0lax{text-align:left;vertical-align:top}
.tg .tg-dg7a{background-color:#FCFBE3;text-align:left;vertical-align:top}
.tg .tg-open{background-color:#ff8181;text-align:left;vertical-align:top}
.tg .tg-part{background-color:#fffe65;text-align:left;vertical-align:top}
</style>
<span style="font-size: 10pt">
<p /></span><span style="font-family: Verdana"><span style="font-size: 10pt; font-family: Verdana">
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
Hi {{ Vorgang.Stammdaten.Kunde.Adresse.Vorname }}.
{% else -%}
Hallo {{ Vorgang.Stammdaten.Kunde.Adresse.Vorname }},
{% endif -%}
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
With this e-mail you will receive the current status of your order.
{% else -%}
mit dieser E-Mail erhältst du den aktuellen Status zu deiner Bestellung.
{% endif -%}
<table class="tg">
{% capture query -%}
-- Artikel nicht verfügbar
DECLARE @kBestellung AS INT = {{ Vorgang.Stammdaten.InterneAuftragsnummer }};
SELECT ROW_NUMBER() OVER (ORDER BY tbestellpos.cArtNr) AS Nummer,
tbestellpos.cArtNr AS Artikelnummer,
tbestellpos.cString AS Bezeichnung,
IIF(ISNULL(BestellposLieferung.fAnzahlFehlbestandEigen, 0.0) > tbestellpos.nAnzahl, tbestellpos.nAnzahl, ISNULL(BestellposLieferung.fAnzahlFehlbestandEigen, 0.0)) AS OffeneMenge,
CONVERT(DATE, ISNULL(BestellposLieferung.dLieferungEingetroffen, CASE WHEN ISNULL(tBestellung.dLieferdatum, GETDATE()) <= GETDATE() THEN GETDATE() ELSE tBestellung.dLieferdatum END)) AS VoraussichtlichVerfügbarAm,
CASE WHEN CONVERT(DATE, ISNULL(BestellposLieferung.dLieferungEingetroffen, CASE WHEN ISNULL(tBestellung.dLieferdatum, GETDATE()) <= GETDATE() THEN GETDATE() ELSE tBestellung.dLieferdatum END)) < GETDATE() THEN 1 ELSE 0 END AS nIstVergangenheit,
ISNULL(tArtikelAttributSpracheDE.cWertVarchar, '') AS cAttributDE,
ISNULL(tArtikelAttributSpracheEN.cWertVarchar, '') AS cAttributEN
FROM dbo.tbestellpos
JOIN dbo.tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
-- Eigenes Feld 'Text Lieferzeit DE' ermitteln
LEFT JOIN dbo.tAttributSprache AS tAttributSpracheDE ON tAttributSpracheDE.cName = 'Text Lieferzeit DE'
AND tAttributSpracheDE.kSprache = 0
LEFT JOIN dbo.tArtikelAttribut AS tArtikelAttributDE ON tbestellpos.tArtikel_kArtikel = tArtikelAttributDE.kArtikel
AND tArtikelAttributDE.kAttribut = tAttributSpracheDE.kAttribut
LEFT JOIN dbo.tArtikelAttributSprache AS tArtikelAttributSpracheDE ON tArtikelAttributDE.kArtikelAttribut = tArtikelAttributSpracheDE.kArtikelAttribut
AND tArtikelAttributSpracheDE.kSprache = 0
LEFT JOIN dbo.tAttributSprache AS tAttributSpracheEN ON tAttributSpracheEN.cName = 'Text Lieferzeit ENG'
AND tAttributSpracheDE.kSprache = 0
LEFT JOIN dbo.tArtikelAttribut AS tArtikelAttributEN ON tbestellpos.tArtikel_kArtikel = tArtikelAttributEN.kArtikel
AND tArtikelAttributEN.kAttribut = tAttributSpracheEN.kAttribut
LEFT JOIN dbo.tArtikelAttributSprache AS tArtikelAttributSpracheEN ON tArtikelAttributEN.kArtikelAttribut = tArtikelAttributSpracheEN.kArtikelAttribut
AND tArtikelAttributSpracheEN.kSprache = 0
JOIN
(
SELECT vBestellPosLieferInfo.kBestellung,
vBestellPosLieferInfo.kBestellPos,
vBestellPosLieferInfo.fAnzahlOffen,
vBestellPosLieferInfo.fAnzahlFehlbestandEigen,
MIN(ZulaufAnDatum.dLieferdatum) AS dLieferungEingetroffen
FROM Versand.vBestellPosLieferInfo
LEFT JOIN
(
SELECT tLieferantenBestellungPos.kArtikel,
tLieferantenBestellungPos.dLieferdatum,
SUM(tLieferantenBestellungPos.fAnzahlOffen) OVER (PARTITION BY tLieferantenBestellungPos.kArtikel ORDER BY tLieferantenBestellungPos.dLieferdatum ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS fZulaufAnDatum
FROM tLieferantenBestellungPos
JOIN dbo.tLieferantenBestellung ON tLieferantenBestellungPos.kLieferantenBestellung = tLieferantenBestellung.kLieferantenBestellung
WHERE tLieferantenBestellung.nStatus IN (20, 30) -- Lieferantenbestellung mit Zuläufen berücksichtigen
AND tLieferantenBestellungPos.kArtikel > 0
) ZulaufAnDatum ON ZulaufAnDatum.kArtikel = vBestellPosLieferInfo.kArtikel
LEFT JOIN
(
--
-- Artikel ausschließen mit dem Eigenen Feld LieferverzögerungKeineMail = 1
--
SELECT DISTINCT tArtikel.kArtikel
FROM dbo.tAttributSprache
JOIN dbo.tArtikelAttribut ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN dbo.tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
JOIN dbo.tArtikel ON tArtikelAttribut.kArtikel = tArtikel.kArtikel
WHERE tAttributSprache.cName = 'LieferverzögerungKeineMail'
AND tArtikelAttributSprache.nWertInt = 1
) AS ausgeschlosseneArtikel ON ZulaufAnDatum.kArtikel = ausgeschlosseneArtikel.kArtikel
WHERE vBestellPosLieferInfo.fAnzahlFehlbestandEigen <= ISNULL(ZulaufAnDatum.fZulaufAnDatum, vBestellPosLieferInfo.fAnzahlFehlbestandEigen)
AND vBestellPosLieferInfo.fAnzahlFehlbestandEigen > 0.0
AND ausgeschlosseneArtikel.kArtikel IS NULL
GROUP BY vBestellPosLieferInfo.kBestellung,
vBestellPosLieferInfo.kBestellPos,
vBestellPosLieferInfo.fAnzahlOffen,
vBestellPosLieferInfo.fAnzahlFehlbestandEigen,
vBestellPosLieferInfo.kArtikel
) AS BestellposLieferung ON BestellposLieferung.kBestellPos = tbestellpos.kBestellPos
WHERE tbestellpos.tBestellung_kBestellung = @kBestellung
AND tbestellpos.nType IN (0, 1, 11, 17, 18) -- die Typen hab ich aus spReservierungenAktualisieren kopiert + 0 für Freipositionen
--AND ISNULL(tbestellung.dLieferdatum, DATEADD(dd, 2, GETDATE())) < dLieferungEingetroffen --Einkommentieren wenn das vor. Lieferdatum von Aufträgen vor der eintreffenden Lieferung liegen soll
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
{% for pos in Positionen.Daten -%}
{% if pos.Nummer == 1 -%}
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
The following items are unfortunately not yet available:
{% else -%}
Folgende Artikel sind leider noch nicht verfügbar:
{% endif -%}
<br>
<br>
<tr>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
<th class="tg-0lax">Quantity</th>
<th class="tg-0lax">Item number </th>
<th class="tg-0lax">Name</th>
<th class="tg-0lax">Expected to be available from</th>
{% else -%}
<th class="tg-0lax">Anzahl</th>
<th class="tg-0lax">Artikelnummer</th>
<th class="tg-0lax">Bezeichnung</th>
<th class="tg-0lax">Voraussichtlich lieferbar ab</th>
{% endif -%}
</tr>
{% endif -%}
<tr>
<td class="{{tg-part}}">{{pos.OffeneMenge | FormatNumber: 'N0', 'de-DE'}}</td>
<td class="{{tg-part}}">{{pos.Artikelnummer}}</td>
<td class="{{tg-part}}">{{pos.Bezeichnung}}</td>
{% if pos.OffeneMenge == 0 -%}
<td class="{{tg-part}}">geliefert</td>
{% else -%}
{% if pos.nIstVergangenheit == 1 -%}
<td class="{{tg-part}}">{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}Delivery date open (will be submitted later){% else -%}Liefertermin offen (wird nachgereicht){% endif -%}</td>
{% else -%}
{% if pos.cAttributDE != "" -%}
<td class="{{tg-part}}">{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}{{pos.cAttributDEN}}{% else -%}{{pos.cAttributDE}}{% endif -%}</td>
{% else -%}
<td class="{{tg-part}}">{{pos.VoraussichtlichVerfügbarAm | FormatDate: 'dd.MM.yyyy', 'de-DE' }}</td>
{% endif -%}
{% endif -%}
{% endif -%}
</tr>
{% endfor -%}
</table>
{% capture query -%}
-- Artikel reserviert
DECLARE @kBestellung AS INT = {{ Vorgang.Stammdaten.InterneAuftragsnummer }};
SELECT ROW_NUMBER() OVER (ORDER BY tbestellpos.cArtNr) AS Nummer,
tbestellpos.cArtNr AS Artikelnummer,
tbestellpos.cString AS Bezeichnung,
ISNULL(BestellposLieferung.fAnzahlReserviertEigen, 0.0) AS fMengeReserviert
FROM dbo.tbestellpos
JOIN dbo.tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
JOIN
(
SELECT reservierteMengen.kBestellPos,
SUM(reservierteMengen.fAnzahlReserviertEigen) AS fAnzahlReserviertEigen
FROM
(
SELECT vBestellPosLieferInfo.kBestellPos,
vBestellPosLieferInfo.fAnzahlReserviertEigen
FROM Versand.vBestellPosLieferInfo
WHERE vBestellPosLieferInfo.fAnzahlReserviertEigen > 0.0
UNION ALL
SELECT tPicklistePos.kBestellPos,
tPicklistePos.fAnzahl AS fAnzahlReserviertEigen
FROM dbo.tPicklistePos
LEFT JOIN dbo.tLieferscheinPos ON tPicklistePos.kLieferscheinPos = tLieferscheinPos.kLieferscheinPos
WHERE tLieferscheinPos.kLieferscheinPos IS NULL
) AS reservierteMengen
GROUP BY reservierteMengen.kBestellPos
) AS BestellposLieferung ON BestellposLieferung.kBestellPos = tbestellpos.kBestellPos
LEFT JOIN
(
--
-- Artikel ausschließen mit dem Eigenen Feld LieferverzögerungKeineMail = 1
--
SELECT DISTINCT tArtikel.kArtikel
FROM dbo.tAttributSprache
JOIN dbo.tArtikelAttribut ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN dbo.tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
JOIN dbo.tArtikel ON tArtikelAttribut.kArtikel = tArtikel.kArtikel
WHERE tAttributSprache.cName = 'LieferverzögerungKeineMail'
AND tArtikelAttributSprache.nWertInt = 1
) AS ausgeschlosseneArtikel ON tbestellpos.tArtikel_kArtikel = ausgeschlosseneArtikel.kArtikel
WHERE ausgeschlosseneArtikel.kArtikel IS NULL
AND tbestellpos.tBestellung_kBestellung = @kBestellung
AND tbestellpos.nType IN (0, 1, 11, 17, 18) -- die Typen hab ich aus spReservierungenAktualisieren kopiert + 0 für Freipositionen
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
{% for pos in Positionen.Daten -%}
{% if pos.Nummer == 1 -%}
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
We have reserved these items for you:
{% else -%}
Folgende Artikel sind für dich reserviert:
{% endif -%}
<br>
<br>
<table class="tg">
<tr>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
<th class="tg-0lax">Quantity</th>
<th class="tg-0lax">Item Number</th>
<th class="tg-0lax">Name</th>
{% else -%}
<th class="tg-0lax">Menge</th>
<th class="tg-0lax">Artikelnummer</th>
<th class="tg-0lax">Bezeichnung</th>
{% endif -%}
</tr>
{% endif -%}
<tr>
<td class="{{tg-part}}">{{pos.fMengeReserviert | FormatNumber: 'N0', 'de-DE'}}</td>
<td class="{{tg-part}}">{{pos.Artikelnummer}}</td>
<td class="{{tg-part}}">{{pos.Bezeichnung}}</td>
</tr>
{% endfor -%}
</table>
{% capture query -%}
-- Artikel unterwegs
DECLARE @kBestellung AS INT = {{ Vorgang.Stammdaten.InterneAuftragsnummer }};
SELECT ROW_NUMBER() OVER (ORDER BY tbestellpos.cArtNr) AS Nummer,
tbestellpos.cArtNr AS Artikelnummer,
tbestellpos.cString AS Bezeichnung,
SUM(tLieferscheinpos.fAnzahl) AS fGeliefert
FROM dbo.tbestellpos
LEFT JOIN
(
--
-- Artikel ausschließen mit dem Eigenen Feld LieferverzögerungKeineMail = 1
--
SELECT DISTINCT tArtikel.kArtikel
FROM dbo.tAttributSprache
JOIN dbo.tArtikelAttribut ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN dbo.tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
JOIN dbo.tArtikel ON tArtikelAttribut.kArtikel = tArtikel.kArtikel
WHERE tAttributSprache.cName = 'LieferverzögerungKeineMail'
AND tArtikelAttributSprache.nWertInt = 1
) AS ausgeschlosseneArtikel ON tbestellpos.tArtikel_kArtikel = ausgeschlosseneArtikel.kArtikel
JOIN dbo.tLieferscheinpos ON tbestellpos.kBestellPos = tLieferscheinpos.kBestellPos
JOIN dbo.tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
WHERE ausgeschlosseneArtikel.kArtikel IS NULL
AND tbestellpos.tBestellung_kBestellung = @kBestellung
AND tbestellpos.nType IN (0, 1, 11, 17, 18) -- die Typen hab ich aus spReservierungenAktualisieren kopiert + 0 für Freipositionen
GROUP BY tbestellpos.cArtNr,
tbestellpos.cString
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
{% for pos in Positionen.Daten -%}
{% if pos.Nummer == 1 -%}
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
The following items have already been delivered or are on their way:
{% else -%}
Folgende Artikel wurden bereits geliefert oder sind auf dem Weg:
{% endif -%}
<br>
<br>
<table class="tg">
<tr>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
<th class="tg-0lax">Quantity</th>
<th class="tg-0lax">Item number</th>
<th class="tg-0lax">Name</th>
{% else -%}
<th class="tg-0lax">Menge</th>
<th class="tg-0lax">Artikelnummer</th>
<th class="tg-0lax">Bezeichnung</th>
{% endif -%}
</tr>
{% endif -%}
<tr>
<td class="{{tg-part}}">{{pos.fGeliefert | FormatNumber: 'N0', 'de-DE'}}</td>
<td class="{{tg-part}}">{{pos.Artikelnummer}}</td>
<td class="{{tg-part}}">{{pos.Bezeichnung}}</td>
</tr>
{% endfor -%}
</table>
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
The delivery times are current statements from our suppliers and manufacturers.<br>
We will keep you informed about the delivery status on a weekly basis.<br>
<br>
We apologise for the delay and thank you for your patience.<br>
If you have any questions about your order, please reply directly to this email.
{% else -%}
Bei den angegebenen Lieferzeiten handelt es sich um aktuelle Aussagen von Lieferanten und Herstellern.<br>
Wir halten dich mit Informationen zum Lieferstatus wöchentlich auf dem Laufenden.<br>
<br>
Wir entschuldigen uns für die mögliche Verzögerung der Lieferung und bedanken uns für deine Geduld.<br>
Solltest du Fragen zu deiner Bestellung haben, antworte bitte direkt auf diese E-Mail.
{% endif -%}
<br>
<br>
{% if Vorgang.Stammdaten.Kunde.Kundensprache.ISO == "eng" -%}
Best regards
{% else -%}
Viele Grüße
{% endif -%}
<br>JTL-Software-GmbH
<br>
<br>
<p style="margin: 0cm 0cm 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" /><span style="color: #3b3838"><img alt="" src="https://www.webneo.de/wp-content/uploads/2018/08/logo_jtl-software-e1562846396632-520x130.png" width="384" height="81" />
<p />
<p><span style="font-size: 8pt; font-family: Verdana; color: #767171">JTL-Software-GmbH | Rheinstra&szlig;e 7 | 41836 Hückelhoven | Germany<br /><a href="" target="_blank">info@jtl-software.de</a>&nbsp;| +49-(0)2433 8056801<br /><br />Registergericht: Amtsgericht Mönchengladbach, HRB 12450<br />Geschäftsführer: Janusch Lisson, Thomas Lisson COO: Ralph Schweiker<br />Umsatzsteuer-Identifikationsnummer: DE257864472<br /><br /></span></p></span>


Hier meine verwendeten Workflows:

Manueller WF "Lieferverzögerungen Queue"

Den Anhang 63757 betrachten

Manueller WF "Lieferverzögerungen mitteilen"

Den Anhang 63760 betrachten

Workflow "Lieferverzögerungen mitteilen" bei Auftragserstellung

Den Anhang 63763 betrachten

Hier meine eigenen Felder:

Artikel (außer dem Namen sind ENG und DE gleich)

Den Anhang 63766 betrachten

Kunde

Den Anhang 63769 betrachten





Changelog:

11.07.2022:
  • Artikel ausschließen: Mit dem eigenen Feld "LieferverzögerungKeineMail" vom Typ Checkbox können Artikel jetzt aus dem Mailing ausgeschlossen werden.

Gruß

Euer Manuel
Ich habe jetzt alles so ausgefüllt wie oben beschrieben. Doch leider sind meine E- Mail so aus


Ich weiß nicht was ich falsch mache.

Desweiteren wird keine E- Mail versendet. Seit zwei Tage sitze ich jetzt an der Workflows und bekomme es nicht hin.

Kann mir jemand helfen?
 

Anhänge

  • JTL.jpg
    JTL.jpg
    118,2 KB · Aufrufe: 19
Zuletzt bearbeitet:

Fabian507

Neues Mitglied
28. Juni 2024
8
0
Ich habe jetzt alles so ausgefüllt wie oben beschrieben. Doch leider sind meine E- Mail so aus


Ich weiß nicht was ich falsch mache.

Desweiteren wird keine E- Mail versendet. Seit zwei Tage sitze ich jetzt an der Workflows und bekomme es nicht hin.

Kann mir jemand helfen?
Hallo Aero

Ich habe das selbe Problem wie du.

Aber das Problem tritt bei mir nur unter einer Bedingung auf.

Sobald die Bestellte Menge grösser ist als der Zulauf und der Zulauf nicht 0 ist tritt das Problem auf.
Schau mal ob du die gleiche Grundlage als Problem hast.

Grüsse
 

aero

Neues Mitglied
2. Januar 2024
4
0
Ich habe ein Artikel bestellt und es soll auch nur ein Artikel ausgeliefert werden. Ich verstehe nicht, warum meine Maske ganz anderes aussieht wie bei Manuel obwohl ich seinen Code kopiert habe.
 

ckoppe

Aktives Mitglied
6. August 2021
37
6
Moin,

folgende Rückfrage noch zum Workflow.

Wir haben den Code von Manuel übernommen und schon getestet.

Wir haben aber zwei Fälle, den wir gerne auch noch mit abdecken wollen.

Wenn ein Kunde mehrere Artikel in einer Bestellung hat, kann es vorkommen, dass er nicht für alle Artikel eine Benachrichtigung erhält:

  • Für einen bestellten Artikel gibt es keine Lieferantenbestellung, die sich im Status in Bearbeitung befindet. Hier wird derzeit der Artikel nicht aufgeführt.
  • Und ein bestellter Kundenartikel wird nicht aufgeführt, für den es keinen verfügbaren Zulauf beim Lieferanten gibt.
Wie könnte man das abgreifen, um den Kunden besser zu informieren, eben über alle seine bestellten Artikel? Man könnte ja bei den Artikeln, die jetzt noch nicht abgedeckt sind, hinzuschreiben: Liefertermin offen (wird nachgereicht)

Hat da jemand evtl eine Lösung?



Gruß

Christian
 

Fabian507

Neues Mitglied
28. Juni 2024
8
0
Hallo Christian

Wenn du den Code von Manuel komplett übernommen hast, sollten diese Fälle abgedeckt sein.

Bei einer Bestellung ohne Zulauf wird Liefertermin offen angegeben und bereits ausgelieferte oder Lagerartikel werden als bereits versendet und reserviert aufgelistet.

Der einzige Fall der mir bekannt ist, wo etwas schief gehen kann ist wenn ein Zulauf vorhanden ist, jedoch die Kundenbestellungen diesen übersteigen.
In diesem speziellen Fall verschwindet der Artikel in der auflistung leider.
Habe da auch den Fehler bzw. die Lösung noch nicht gefunden.

Schau nochmal ob du wirklich alles genau so übernommen hast.
Von mir aus gesehen könnte der Fehler im Mail Text oder in der Bedignung Lieferung grösser 0 liegen.

Gruss
Fabian
 

JTL4Tom

Gut bekanntes Mitglied
15. November 2016
155
14
Hallo in die Runde,
cooler Thread, danke Manuel.
Leider hat die Nutzung bei uns einen Haken.
Wir arbeiten fast ausschließlich mit Dropshippiing.

Mit der Lieferantenbestellung wird auch gleich der Lieferschein erstellt und mitgesendet.
Dadurch gelangt der Auftrag unter "komplett geliefert".
Somit past die Abfrage "istkomplettausgeliefert gleich false" nicht mehr und der WF "Lieferverzögerung mitteilen" wird nicht gestartet.
Nehme ich das raus, wird hier die Darstellung mit Trackingcode gezeigt, der zu dem Zeitpunkt noch gar nicht existiert. -->Challenge 1
Wir haben DS-Produkte, welche erst gefertigt werden. Also bekommen wir wenige Tage nach der Lieferantenbestellung vom Lieferant/Hersteller den Liefertermin.
Diesen trage ich dann unter Beschaffung als LT für die einzelnen Positionen ein.

Jetzt wäre mein Wunsch, dass diese Eintragung den WF triggert "LT mitteilen". --> Challenge 2

Also müsste in dem WF der code und die Bedingung angepasst werden (und etwas Text von "Lieferverzögerung" auf "aktueller Lieferstatus" oder so)
Versuch mich gerade als Nicht-Programmierer, aber vielleicht hat hier jemand eine Lösung aus der Schublade.

viele Grüße, Tom
 

JTL4Tom

Gut bekanntes Mitglied
15. November 2016
155
14
Hallo in die Runde,
cooler Thread, danke Manuel.
Leider hat die Nutzung bei uns einen Haken.
Wir arbeiten fast ausschließlich mit Dropshippiing.

Mit der Lieferantenbestellung wird auch gleich der Lieferschein erstellt und mitgesendet.
Dadurch gelangt der Auftrag unter "komplett geliefert".
Somit past die Abfrage "istkomplettausgeliefert gleich false" nicht mehr und der WF "Lieferverzögerung mitteilen" wird nicht gestartet.
Nehme ich das raus, wird hier die Darstellung mit Trackingcode gezeigt, der zu dem Zeitpunkt noch gar nicht existiert. -->Challenge 1
Wir haben DS-Produkte, welche erst gefertigt werden. Also bekommen wir wenige Tage nach der Lieferantenbestellung vom Lieferant/Hersteller den Liefertermin.
Diesen trage ich dann unter Beschaffung als LT für die einzelnen Positionen ein.

Jetzt wäre mein Wunsch, dass diese Eintragung den WF triggert "LT mitteilen". --> Challenge 2

Also müsste in dem WF der code und die Bedingung angepasst werden (und etwas Text von "Lieferverzögerung" auf "aktueller Lieferstatus" oder so)
Versuch mich gerade als Nicht-Programmierer, aber vielleicht hat hier jemand eine Lösung aus der Schublade.

viele Grüße, Tom
Da bisher leider keine Antwort :(, also selbst ist der Mann.
Auch wenn ich kein Programmierer bin und keinen Programmcode selbst schreiben kann, aber angelehnt an die Idee von Manuel, hab ich mir selbst mit Unterstützung von KI etwas gebastelt.

Ausgangslage:
Wir versenden fast ausschließlich über Dropshipping. Hierbei wird gleichzeitig mit der Lieferantenbestellung (DS) auch gleich der Lieferschein erstellt. (Es wurde immer nur der Abschnitt "geliefert" ausgegeben. (s.o.)
Und das war das K.O.-Kriterium, warum das Script von Manuell nicht funktioniert. Inbesondere, weil wohl bei DS die Felder Vorgang.Positionen.geliefert nicht verwendbar sind.

Ziel: Nach Erhalt eines voraussichtlichen Liefertermins vom Dropshipper, soll sofort eine Mail erzeugt werden, die den Kunden über diesen Termin informiert. Ggf. wird er dabei über bereits gelieferte Sendungen mit Trackingcode informiert. (wie bei Manuel)

Umsetzung:
Lieferantenbestellung - Manuell (oder _geändert) mit Bedingung "Ist Dropshipping = True" (via erweiterte Eigenschaften gelöst) wird dann eine Mail an {{ Vorgang.Dropshipping-Kunde.EMail }}versendet.

Betreff:
{% if Vorgang.Dropshipping-Kunde.Kundensprache.ISO == "eng" -%} Current status of your order at LEDclusive.de {{ Vorgang.Bezugsauftragsnummer }}
{% else -%} Lieferstatus zu Ihrer Bestellung bei LEDclusive.de {{ Vorgang.Bezugsauftragsnummer }} {% endif -%}

Inhalt Mailtext im Anhang.

---> Vielleicht hat jemand ein ähnliches Problem und der Beitrag hilft.
oder aber jemand hat noch Verbesserungsvorschläge.
Hab hier nämlich noch ein Problem, dass die bestellte Anzahl in der ersten Spalte immer Null ist.
Ohne for-Schleife und nur für einen Artikel hatte ich da zuerst erfolgreich {{ Vorgang.Positionen.Anzahl }} stehen. Weiss jemand Rat?

vg Tom
 

Anhänge

  • workflow Lieferterminmail aus Bestellbestätigung.txt
    6,1 KB · Aufrufe: 8
  • Gefällt mir
Reaktionen: Weedmaster-Flash
Ähnliche Themen
Titel Forum Antworten Datum
Kunden im JTL Shop sichtbar ? Einrichtung JTL-Shop5 7
Workflow: Neue Kunden direkt einer Kundengruppe zuordnen JTL-Wawi 1.10 4
Neu Kunden Zusammenführen automatisieren User helfen Usern - Fragen zu JTL-Wawi 3
Neu ebay.co.uk Verkauf an europäischen Kunden - falscher MWST Satz JTL-Wawi - Fehler und Bugs 0
Neu Alle Wawi Kunden im Shop registrieren User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Workflow zur Zählen von Retouren und Bestellungen von einem Kunden JTL-Workflows - Ideen, Lob und Kritik 1
Neu Ist es nicht möglich unter Plattformen - Neukunden sich die Mobilnummer anzeigen zu lassen, mit der die Kunden sich regsitriert haben? User helfen Usern - Fragen zu JTL-Wawi 2
Rechnungen an Schweizer Kunden JTL-Wawi 1.10 5
Export aller Kunden mit über xxx € Umsatz in xxx Tagen JTL-Wawi 1.10 15
Kunden UStID wird nicht aus Amazon in JTL übermittelt Amazon-Anbindung - Fehler und Bugs 4
Neu Kunden E-Mail korrigieren User helfen Usern - Fragen zu JTL-Wawi 1
Neu Fehlermeldung bei Rechnungserstellung "Sie haben keinen Kunden ausgewählt" JTL-POS - Fehler und Bugs 0
Neu Kunden im Shop Backend anzeigen Allgemeine Fragen zu JTL-Shop 5
Neu Lokale Abholung, Kunden werden nicht mehr benachrichtigt Shopify-Connector 0
Neu Import erfolgreich aber 0 Kunden import??? JTL-Ameise - Fehler und Bugs 4
Zahlungen von Kunden eintragen JTL-Wawi 1.10 6
Kunden können im Warenkorb Artikell nicht löschen JTL-Wawi 1.10 2
Neu Kunden in den Shop übernehmen Umstieg auf JTL-Shop 8
Neu Kunden auf WAWI in Shop übertragen Allgemeine Fragen zu JTL-Shop 12
Neu E-Mail Adressänderung beim Kunden zieht nicht für den Mailversand JTL-Ameise - Fehler und Bugs 4
Defekt-Artikel nach Retoure über WMS nicht mehr in JTL-Wawi sichtbar JTL-Wawi 1.10 2
Neu Kompakte Kasse gesucht mit der auch Kartenzahlung über 50 € funktioniert? JTL-POS - Fragen zu Hardware 4
Neu Zahlungsimport über CSV ... Ausgangszahlung ? JTL-Wawi - Fehler und Bugs 0
Datenbank ist über 800gb groß Hilfe !!! JTL-Wawi 1.9 23
Neu Hat jemand Erfahrung mit der Anbindung von TikTok Shop über Shopify? Einrichtung und Installation von JTL-eazyAuction 0
Artikel ändert über Nacht den Preis JTL-Wawi 1.10 3
Neu Einkaufspreis bei Ameise-Import über "Lagerbestände" ergänzen JTL-Ameise - Ideen, Lob und Kritik 9
Neu Amazon Lister 2.0 - Status auf "Wartet auf Hochladen" seit über einer Woche Amazon-Lister - Fehler und Bugs 7
Rechnungsdatenübertragung an Datev über Daten Rechnungsdatenservice 2.0 funktioniert nicht JTL-Wawi 1.9 0
Neu Betreff: CMD-Import überspringt Artikel bei Bestandsüberschreibung - Über den GUI-Import keine Probleme JTL-Ameise - Fehler und Bugs 2
Neu feinere WMS Rechte über Benutzergruppen für gängige WMS Vorgänge JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Verkäufe von Stücklistenartikel über FBA werden im Lager nicht abgezogen Amazon-Anbindung - Fehler und Bugs 0
Beantwortet Workflow Auftrag über FFN ausliefern wenn Ware eingelagert JTL-Workflows - Ideen, Lob und Kritik 6
Neu Retourenlabel für DHL Selbstzahler über Retouren erstellen geht nicht JTL-ShippingLabels - Fehler und Bugs 0
Neu Bilder über Amazon-Lister 2.0 lassen sich nicht dauerhaft ändern Amazon-Lister - Fehler und Bugs 0
Neu Mehrere Bankverbindungen bei Nachnahme über DHL Versenden 3.0 User helfen Usern - Fragen zu JTL-Wawi 2
Export WaWi Daten von EcomData über BackUp Funktion - Wiedereinspielen am PC JTL-Wawi 1.10 7
Neu WF Kunde über Weiterleitung in Filiale benachrichtigen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Optionalen Artikel NUR über einen anderen Artikel kaufbar anbieten Arbeitsabläufe in JTL-Wawi 10
Neu Otto Import über Eazyauction - Fehler 100096 - SWITCH_API_VERSION User helfen Usern - Fragen zu JTL-Wawi 16
Neu Ebay Bestellungen über OrangeConnex Fullfilment - Versanddatenaustausch Schnittstellen Import / Export 0
Neu Nach updatet auf 5.5.1 - erscheinen über dem Header 3 links Zum Hauptinhalt springen Zur Suche springen Zum Menü springen Installation / Updates von JTL-Shop 19
Neu Volumen berechnen über dotliquid User helfen Usern 7

Ähnliche Themen