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

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.462
702
Hückelhoven
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

1. Die erweiterte Eigenschaft "EintreffendeLieferungen":

1620204150016.png1620204185379.png

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

SELECT COUNT(*) AS Anzahl
FROM
(
    SELECT  vBestellPosLieferInfoFIFO2012.kBestellung,
            vBestellPosLieferInfoFIFO2012.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 VersandIntern.vBestellPosLieferInfoFIFO2012 ON ZulaufAnDatum.kArtikel = vBestellPosLieferInfoFIFO2012.kArtikel
    WHERE   vBestellPosLieferInfoFIFO2012.fAnzahlFehlbestand > 0.0
            AND vBestellPosLieferInfoFIFO2012.fAnzahlFehlbestand <= ZulaufAnDatum.fZulaufAnDatum       
    GROUP BY    vBestellPosLieferInfoFIFO2012.kBestellung,
                vBestellPosLieferInfoFIFO2012.kBestellPos,
                vBestellPosLieferInfoFIFO2012.kArtikel
) AS BestellposLieferung
WHERE BestellposLieferung.kBestellung = @kBestellung;
{% endcapture -%}
{{ query | DirectQueryScalar }}

2. Der Empfänger der E-Mail

1620204288332.png

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

1620204348909.png
Code:
{{ Vorgang.Stammdaten.Auftragsnummer }} - Lieferung verzögert sich

4. Der Inhalt / Text der E-Mail

1620204436706.png


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;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:normal;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 -%}
<br>
<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>
<table class="tg">
{% capture query -%}
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.fAnzahlOffen, 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  vBestellPosLieferInfoFIFO2012.kBestellung,
            vBestellPosLieferInfoFIFO2012.kBestellPos,
            vBestellPosLieferInfoFIFO2012.fAnzahlOffen,
            MIN(ZulaufAnDatum.dLieferdatum) AS dLieferungEingetroffen
    FROM VersandIntern.vBestellPosLieferInfoFIFO2012
    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 = vBestellPosLieferInfoFIFO2012.kArtikel
    WHERE   vBestellPosLieferInfoFIFO2012.fAnzahlFehlbestand <= ISNULL(ZulaufAnDatum.fZulaufAnDatum, vBestellPosLieferInfoFIFO2012.fAnzahlFehlbestand)
            AND vBestellPosLieferInfoFIFO2012.fAnzahlFehlbestand > 0.0
    GROUP BY    vBestellPosLieferInfoFIFO2012.kBestellung,
                vBestellPosLieferInfoFIFO2012.kBestellPos,
                vBestellPosLieferInfoFIFO2012.fAnzahlOffen,
                vBestellPosLieferInfoFIFO2012.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
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
{% for pos in Positionen.Daten -%}
{% if pos.Nummer == 1 -%}
<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 -%}
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  vBestellPosLieferInfoFIFO2012.kBestellung,
            vBestellPosLieferInfoFIFO2012.kBestellPos,
            vBestellPosLieferInfoFIFO2012.fAnzahlReserviertEigen           
    FROM VersandIntern.vBestellPosLieferInfoFIFO2012   
    WHERE vBestellPosLieferInfoFIFO2012.fAnzahlReserviertEigen > 0.0   
) 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
{% 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 -%}
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
JOIN dbo.tLieferscheinPos ON tbestellpos.kBestellpos = tLieferscheinPos.kBestellPos
JOIN dbo.tBestellung ON tbestellpos.tBestellung_kBestellung = tBestellung.kBestellung
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
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 class="MsoNormal" 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"

1620204560686.png

Manueller WF "Lieferverzögerungen mitteilen"

1620204604031.png

Workflow "Lieferverzögerungen mitteilen" bei Auftragserstellung

1620204676569.png

Hier meine eigenen Felder:

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

1620204785338.png

Kunde

1620204818813.png



Als JTL-Wawi Idee, also ohne diesen Workflow, habe ich es auch aufgenommen:


Gruß

Euer Manuel
 

swopper-shop

Gut bekanntes Mitglied
10. Mai 2010
201
12
Es ist ganz nett, aber das ist doch keine Automatik für ein Lieferverzug.
Eigentlich sollte der Shop ja die richtigen Lieferzeiten anzeigen, erst wenn diese laut WaWi Berechnung (Voraussetzung richtige Pflege des voraussichtlichen Lieferdatums vom Hersteller) überschritten wird sollte eine Email mit einer "Verzögerung" rausgehen.

In Deinem Beispiel @Manuel Pietzsch bekommt er diese auch, obwohl die Ware auch rechtzeitig versendet werden kann.
Beispiel Kunde kauft ein Bett im Shop stehen 6-8 Wochen, nach der ersten Woche bekommt er schon eine Email das sich die Lieferung verzögert?
Ihr oder ich haben ein Gedankenfehler.

Die Vorrausetzung sollte sein, wenn das Datum vom Zulauf aller Artikel dem im Auftrag gesetzten voraussichtlichem Lieferdatum übersteigt.

Der Ansatz ist gut aber in meinen Augen nicht zu Ende gedacht. Somal dem Kunden ja nicht zu interessieren hat wie viele Stück ich beim Hersteller bestellt habe (aber das kann man ja gut anpassen)
 

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.462
702
Hückelhoven
Hi,

danke für das Feedback. Ich warte mal noch mehr ab und schau dann, dass ich den Code nochmal erweitere.
Gerne auch noch mehr Ideen dazu, das Teil kann ich ja weiter ausbauen damit es zu allen Fällen passt. Hatten das jetzt zusammen mit einem Kunden entwickelt bei dem mehr als 7 Tage immer eine Verzögerung sind, das passt nicht für alle und werde ich anpassen.

Das hier ist erstmal unabhängig von einer nativen Implementierung in Shop und Wawi, kostet nix und ist quasi sofort einsetzbar.

Gruß

Manuel
 

Sven83

Gut bekanntes Mitglied
26. Februar 2017
120
6
Erst einmal ein großes Lob. Wirklich fantastisch!

Ist das auch so anpassbar, dass man nicht über eine Bestellung beim Lieferanten das ganze abgleicht, sondern über den hinterlegten Liefertermin im Artikel?
 

Truckstyler

Sehr aktives Mitglied
15. Oktober 2010
266
29
Wir haben da bei uns einen manuellen Worflow der nach Bedarf im Einkauf auf eine offene Bestellung gesetz wird und im Verkauf die betroffenen Aufträge markiert.
Dann können wir alle Kunden die markiert sind benachrichtigen.

Ich stell das mal zur Verfügung.
@Manuel Pietzsch vielleicht auch für euch inetressant

Code:
@echo off
setlocal EnableDelayedExpansion

set server="SERVERIP\JTLWAWI"
set database="eazybusiness"

rem Query to get all Orders which are affected by late deliveries of lieferanten
set query="SET NOCOUNT ON; UPDATE tBestellung SET cStatus = 'Im Verzug' WHERE cBestellNr IN ( SELECT be.cBestellNr from tBestellung as be left join tZahlungsart as za on be.kZahlungsArt = za.kZahlungsart left join tbestellpos as bp on be.kBestellung = bp.tBestellung_kBestellung left join tArtikel as art on art.kArtikel = bp.tArtikel_kArtikel where nStorno = 0 and dLieferdatum IS NOT NULL and nKomplettAusgeliefert = 0 and dVersandt IS NULL and (dBezahlt IS NOT NULL OR nAusliefernVorZahlung = 1) and nType = 1 and art.nMidestbestand < bp.nAnzahl and art.cArtNr <> 'Prospekt' and bp.tArtikel_kArtikel IN (select kArtikel from tLieferantenBestellung as lbe right join tLieferantenBestellungPos as lbp on lbe.kLieferantenBestellung = lbp.kLieferantenBestellung where lbe.cEigeneBestellnummer = '%1' and lbp.fAnzahlOffen > 0));"  
sqlcmd -S %server% -d %database% -I -Q %query%

rem Debug output of all found Orders
rem for /f "skip=2"  %%a in ('sqlcmd -S %server% -d %database% -I -Q %query%') do echo %%a
 

Marcellus

Neues Mitglied
6. April 2021
1
1
Erst einmal ein großes Lob. Wirklich fantastisch!

Ist das auch so anpassbar, dass man nicht über eine Bestellung beim Lieferanten das ganze abgleicht, sondern über den hinterlegten Liefertermin im Artikel?


Das wäre auch unser großer Wunsch.
Wir erhalten von unseren Lieferanten voraussichtliche Verfügbarkeitstermine auf Einzelartikelbasis und steuern das Ganze über die Möglichkeit der Vorbestellung.
Die Termine updaten wir dann jede Woche und das System sollte wöchentlich den dort hinterlegten Liefertermin an den Kunden übermitteln oder eben halt nichts wenn kein Termin eingetragen ist.

Die Möglichkeit über die Lieferantenbestellungen zu gehen ist bei uns nicht umsetzbar weil Bestellungen teilwiese hunderte Artikel enthalten die zu den unterschiedlichsten Terminen an uns ausgeliefert werden, oft auch erst wenn diese wieder verfügbar sind.
 
  • Gefällt mir
Reaktionen: Sven83

Truckstyler

Sehr aktives Mitglied
15. Oktober 2010
266
29
Ich bin der Meinung, man sollte auch prüfen, ob Auftrag lieferbar vor Zahlungseingang ist bzw bezahlt.
Zudem die Kontrolle, ob der Auftrag überhaupt in den Rückstand kommt (Vorrauss. Lieferdatum überschritten)
Was denkst du darüber @Manuel Pietzsch

Die erweiterte Eigenschaft für den Check der Zahlungsart wäre:

Code:
{% if Vorgang.Zahlungen.IstBezahlt or Vorgang.Zahlungen.Zahlungsart.IstAuslieferungVorZahlungMöglich %}true{% else %}false{%endif%}
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: urmelimurlaub

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.462
702
Hückelhoven
Hi,

bisher hab ich hier nur gutes Feedback gelesen. Ich denke wenn die Feiertage durch sind komm ich dazu und werde die bisherige Lösung auf ein neues Level bringen mit eurem Input.

Danke und Gruß

Manuel
 

urmelimurlaub

Gut bekanntes Mitglied
14. August 2013
120
4
Zwickau
Wir bestücken unsere Einkaufsliste nur per Workflow. In das Hinweisfeld trägt der Workflow die entsprechende Auftragsnummer ein.
Dadurch haben wir eine exakte Zuordnung der Lieferantenbestellung zum Auftrag.
Wenn nun das in der Auftragsbestätigung des Lieferanten rückgemeldeten und eingetragenen Lieferdatum in der Lieferantenbestellung außerhalb des Bestelldatums des Auftrag plus des Lieferstatus des jeweiligen Artikels liegt schicken wir eine Lieferverzögerungsmail raus in der wir dem Kunden über den neuen voraussichtlichen Liefertermin des jeweiligen Artikels informieren.
 

AMZ-FUX

Neues Mitglied
23. September 2020
2
0
Super gemacht. Es wäre klasse, wenn es eine alternative Code-Version gäbe für User, die FIFO nicht nutzen, bei uns geht das prozessbedingt nicht. Da die Liefer-Termin-Prüfung per aktueller Abfrage fehlschlägt, steht dann immer "Liefertermin offen (wird nachgereicht)" als Ergebnis drin. Einfach stets das nächsteingetragene Zulieferdatum auf der Artikelnummer auszugeben wäre hier zwar kein perfektes, aber ein deutlich besseres Ergebnis als stets "offen" .
 

dotnetpower

Gut bekanntes Mitglied
22. Dezember 2006
200
9
Ich hab ein paar Problemchen mit dem Workflow. Es scheint so als werden Artikel die sich in einer Versandbox befinden nicht als "für dich reserviert" angezeigt. Es funktioniert nur dann offenbar korrekt wenn der Auftrag NICHT vorkommissioniert wurde. Kann das jemand von euch bestätigen?
 

PAO1908

Sehr aktives Mitglied
11. Oktober 2012
426
25
Schweiz
Hallo zusammen
Geniale Sache, wirklich! Herzlichen Dank Manuel.
Ein kleines Problem habe ich noch, das Mail welches der Kunde bekommt, ist irgendwie nicht HTML...

<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;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:normal;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;}
.
.
.

In der Vorschau (Browser) des Workflows, wird es richtig angezeigt.

Habe ich irgendwo eine falsche Einstellung?

Herzliche Grüsse
 

dotnetpower

Gut bekanntes Mitglied
22. Dezember 2006
200
9
Werden bei euch denn alle Positionen aufgeführt? Bei uns ist die Mail leider immer noch Fehlerhaft, es werden nämlich definitiv keine Artikel angezeigt die bereits auf Versandbox sind. Somit fragen die Kunden jedes mal nach ob die Artikel nicht lieferbar sind...

Leider hat mich der Support trotz Gold-Support abgewürgt mit der Information das die Workflows im Forum nicht supportet werden und man im Thread selbst nachfragen soll. Leider kommt hier nix mehr :(

Der Workflow ist eine super Sache nur Schade das er halt nicht richtig funktioniert und es keinen Support gibt. Ich denke wir werden es wieder abschalten.....
 

Maekaey

Sehr aktives Mitglied
11. November 2016
251
54
@Manuel Pietzsch seit 2 Jahren steht das auf der ToDo!! Und immer wieder im Backlog, aber dann war doch immer etwas anderes dringender wodurch wir es immer wieder verschoben haben.

Und da kommt ihr um die Ecke und haut des SQL Code raus! HAMMER!!! :love:

Vielen Dank!

Werde das jetzt ins backlog packen und wir werden ggf. Anpassungen für uns machen (falls die für andere sinnvoll sein könnten dann auch teilen).

Genial Echt! Bin sehr dankbar für die Arbeit die ihr euch hier gemacht und uns abgenommen habt! 👏 🥳

Gruß,
Micha
 

Kulikov Kristina

Neues Mitglied
22. Februar 2021
4
0
Irgendwie wird keine Verknüpfung zum eigenen Feld für die Lieferzeiten hergestellt. Egal was ich im Artikel bei den Lieferzeiten eingebe die Daten werden in der Mail nicht berücksichtigt. Lediglich die Info "Liefertermin offen (wird nachgereicht)". Hab ich irgendwas übersehen?
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Template Anzeige nach Selektion der Kundengruppe am Kunden Templates für JTL-Shop 0
Neu Preise für EU Kunden im Shop netto Allgemeine Fragen zu JTL-Shop 2
Neu Aktivierung von Neukunden in der WAWI - ungewollte Mail an Kunden Allgemeine Fragen zu JTL-Shop 4
Kunden schließen Bestellung nach Bezahlung mit PayPal Plus Plugin nicht ab Einrichtung JTL-Shop5 1
Neu ACHTUNG! DE Kunden müssen EFSTA sofort updaten. Fragen rund um LS-POS 5
Neu Kunden-Guthaben wird im Shop nicht übertragen JTL-Shop - Fehler und Bugs 2
Kostenlos Einsteigerschulung: Tag 3 - Einkauf, Lager (nicht JTL-WMS), Kunden & Verkauf Messen, Stammtische und interessante Events 0
Neu Anrede und Land des Kunden werden auf Lieferschein und Rechnung nicht auf Englisch ausgegeben User helfen Usern - Fragen zu JTL-Wawi 3
Neu Kunden - Eigene Felder durchsuchen User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL Shop 5: Pflichtfreitext-Angabe des Kunden verschwindet im Warenkorb & demnach auch in Bestellung + WAWI JTL-Shop - Fehler und Bugs 2
Neu suche Setup Template für Logistikabwicklung mit 4 Kunden (B2B-Business) Starten mit JTL: Projektabwicklung & Migration 23
Neu Click to Call bei Kunden telefonnummern JTL-Wawi - Ideen, Lob und Kritik 0
Neu Erstellen von Tickets außer von JTL-Wawi von den Kunden direkt Servicedesk (Beta) 3
Neu Multishop Abgleich - Bestellungen werden aus einem Shop immer dem gleichen Kunden zugeordnet Gambio-Connector 0
Neu Verkaufte Seriennummer Artikel in der Kunden Übersicht Individuelle Listenansichten in der JTL-Wawi 2
Neu Kunden von Lieferung per Nachnahme ausschließen Allgemeine Fragen zu JTL-Shop 0
Neu Steuerdarstellung für Kunden mit Ust ID Nr Allgemeine Fragen zu JTL-Shop 0
Neu Kunden über Schnelltaste auswählen? Fragen rund um LS-POS 1
Neu Kunden -> Kundenindividuelle Sonderpreise Individuelle Listenansichten in der JTL-Wawi 6
Kostenlose Einsteigerschulung: Tag 3 - Einkauf, Lager (nicht JTL-WMS), Kunden & Verkauf Messen, Stammtische und interessante Events 0
Neu Kunden Login Fehler Undefined index: kundenlogin_max_loginversuche in ... JTL-Shop - Fehler und Bugs 1
Neu Keine Versandart für B2B Kunden im JTL Auswählbar... User helfen Usern - Fragen zu JTL-Wawi 9
Neu FinTS Benutzerkennung Kunden-Id Hypovereinsbank User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kunden sollen aktualisierte Webseiten änderungen neu laden! Allgemeine Fragen zu JTL-Shop 4
Neu Plötzlich echte Mailadressen bei Amazon-Kunden zu sehen?! Amazon-Anbindung - Fehler und Bugs 2
Neu Paypal Kosten an Kunden weitergeben User helfen Usern - Fragen zu JTL-Wawi 8
Neu GLS Nachnahme mehrere Pakete werden dem Kunden mit dem vollen Betrag berechnet JTL-ShippingLabels - Fehler und Bugs 3
Neu Kundenkonto: Kein Zugriff des Kunden möglich, Fehlfunktionen, keine Anmeldung JTL-Shop - Fehler und Bugs 9
Neu [Shop 4.06 (Build: 11)] Kunden können ausverkaufte Artikel kaufen JTL-Shop - Fehler und Bugs 4
Neu Skonto für einzelne Kunden einrichten User helfen Usern - Fragen zu JTL-Wawi 0
Neu USt.-ID / VAT-ID für Amazon-Kunden automatisch prüfen bei steuerfreien innergemeinschaftlichen Lieferungen (IGL) nicht möglich? Amazon-Anbindung - Fehler und Bugs 0
Beantwortet Individuelle Zahlungsarten von Kunden im Shop JTL-Workflows - Ideen, Lob und Kritik 2
Neu DHL Versenden druckt Telefonnummer des Kunden User helfen Usern - Fragen zu JTL-Wawi 2
Neu Kunden UStID auf Rechnung ausgeben User helfen Usern - Fragen zu JTL-Wawi 6
Neu Bestellung versendt - keine eMail bei unregestrierten Kunden Allgemeine Fragen zu JTL-Shop 0
Ist die UST-ID Abfrage auch exklusiv für ausländische Kunden möglich? Einrichtung JTL-Shop5 4
Neu Attribute, Merkmale automatisiert in Wawi einpflegen? Arbeitsabläufe in JTL-Wawi 0
Neu Merkmale automatisiert hinterlegen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Top Artikel über Slider Technische Fragen zu Plugins und Templates 0
Neu Schriftänderung über Plesk Templates für JTL-Shop 3
Neu Artikel über Import (Ameise) mehreren Kategorien zuweisen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Suche jemanden,der uns Client an Server über Internet anbindet Dienstleistung, Jobs und Ähnliches 4
Gelöst Versandbestätigung per Mail versenden über einen Eintrag unter Versand => Packtisch/WMS-Ausgabe Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 3
Neu Dringend: ebay - Arikel über 18 mit VerifyMyAge eBay-Anbindung - Ideen, Lob und Kritik 11
Neu Dreiecksgeschäfte über JTL / UPS Arbeitsabläufe in JTL-Wawi 0
Neu Wawi über SSH-Tunnel nach außen hin verfügbar machen. Installation von JTL-Wawi 2
Neu Artikel über die Ameise Minusbuchen JTL-Ameise - Ideen, Lob und Kritik 2
Neu Konfigurationsgruppen Zuordnung über Ameise entfernen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Neue E-Mail über Service Desk erstellen Servicedesk (Beta) 2
Neu Retoure anlegen - Zahlung erstatten über Zahlungsmodul viele Schritte nötig Arbeitsabläufe in JTL-Wawi 3

Ähnliche Themen