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

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.473
717
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
JOIN dbo.tbestellung ON BestellposLieferung.kBestellung = tbestellung.kBestellung
WHERE   BestellposLieferung.kBestellung = @kBestellung
        AND tbestellung.dLieferdatum < dLieferungEingetroffen;
{% 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
AND tbestellung.dLieferdatum < dLieferungEingetroffen
{% 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 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
 
Zuletzt bearbeitet:

swopper-shop

Gut bekanntes Mitglied
10. Mai 2010
201
13
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)
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.473
717
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
5
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?
 
  • Gefällt mir
Reaktionen: Marcellus

Truckstyler

Sehr aktives Mitglied
15. Oktober 2010
268
35
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
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

Marcellus

Neues Mitglied
6. April 2021
1
2
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.
 

Truckstyler

Sehr aktives Mitglied
15. Oktober 2010
268
35
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:

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.473
717
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
6
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.
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

AMZ-FUX

Mitglied
23. September 2020
3
1
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" .
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

dotnetpower

Gut bekanntes Mitglied
22. Dezember 2006
202
11
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?
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

PAO1908

Sehr aktives Mitglied
11. Oktober 2012
427
27
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
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

dotnetpower

Gut bekanntes Mitglied
22. Dezember 2006
202
11
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.....
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

Maekaey

Sehr aktives Mitglied
11. November 2016
251
55
@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
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch

Kulikov Kristina

Neues Mitglied
22. Februar 2021
7
1
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?
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch
Ähnliche Themen
Titel Forum Antworten Datum
Neu Falscher Steuersatz (19%) bei ungültiger VAT-ID eines ausländischen Kunden (VCS lite Rechnung) seit OSS Umstellung Amazon-Anbindung - Fehler und Bugs 1
Neu USTID-Nr. von Lieferadresse von einem Kunden werden im Auftrag nicht gezogen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Umstellung Prestashop - JTL Shop - Kunden sollen ihre alten Bestellungen sehen können Allgemeine Fragen zu JTL-Shop 1
Neu Kunden Lieferung über Außendienst ermöglichen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Amazon entscheidet A-Z Garantieantrag zu Gunsten des Kunden unberechtigt Smalltalk 10
JTL Shop 5: Warenkorb - Fehler bei Steuer B2B-Kunden? Ausblenden der Versandkosten, wenn 0,00 € möglich? Einrichtung JTL-Shop5 2
Neu Verknüpfung von DB-Tabellen in SQL-Abfrage für Retouren zur Ermittlung des Kunden User helfen Usern - Fragen zu JTL-Wawi 1
Neu AUfträge nur unter "Kunden" und nicht bei Verkäufe User helfen Usern - Fragen zu JTL-Wawi 2
Neu Shop Teilen oder zusammen machen für Endverbraucher und Gewerbliche Kunden usw. Allgemeine Fragen zu JTL-Shop 4
Neu Amazon erstattet Kunden Kaufpreis aus Kullanz und JTL erstellt eine Gutschrift in der Wawi ? Amazon-Anbindung - Fehler und Bugs 17
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 6
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 Produktpreise automatisiert mit Batch kalkulieren Arbeitsabläufe in JTL-Wawi 0
Neu Onlineshop-Abgleich automatisiert starten/stoppen Shopware-Connector 3
Neu Merkmale automatisiert hinterlegen? User helfen Usern - Fragen zu JTL-Wawi 2
Beantwortet Tracken von Warenpost International jetzt über DHL Sendungssuche möglich - Implementierung in JTL Track & Trace auch? JTL-Track&Trace - Ideen, Lob und Kritik 2
Neu Ausgabe Rechnung über Mail User helfen Usern - Fragen zu JTL-Wawi 2
Neu Erfahrungen mit Otto Anbindung über OSCware Schnittstellen Import / Export 1
Neu Rechnungsdatenexport über Ameise für Datev User helfen Usern - Fragen zu JTL-Wawi 5
Neu Rechnung nur über gelieferte Artikel Arbeitsabläufe in JTL-Wawi 7
Neu Erzeugung der Standard Rechnung unterdrücken da Rechnung über Workflow generiert wird (druckt aktuell 2 Rechnungen) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Textfeld im Lieferschein über Variable istDropshipping anzeigen User helfen Usern - Fragen zu JTL-Wawi 2
In Bearbeitung Eigenverbrauch über JTL-POS Allgemeine Fragen zu JTL-POS 5
Neu Test Kauf über Molli und Fehlermeldung bekommen. Plugins für JTL-Shop 0
In Bearbeitung Falsche Umsatzsteuer beim setzten der Versandart über Workflow JTL-Workflows - Fehler und Bugs 1
Neu Workflows bei Verbindung über Vodafone laufen deutlich länger als über Telekom User helfen Usern - Fragen zu JTL-Wawi 17
Neu Amazon Prime As Seller - Versandlabel über API mit JTL in "Probezeit"? Amazon-Anbindung - Fehler und Bugs 1
Neu Freelancer mit über 10 Jahren SP Erfahrung Dienstleistung, Jobs und Ähnliches 0
Neu Wieviel wäre euch eine autom. OSS Steuereinstellung inkl. Zuordnung der Steuern über Taric wert ? JTL-Wawi - Ideen, Lob und Kritik 23
Neu Bankkonten über das Zahlungsmodul in JTL-Wawi einbinden (Schweiz) Schnittstellen Import / Export 1
Bilder und Text über Link laden Einrichtung JTL-Shop5 3
Beantwortet JTL-WMS Mobile über LTE möglich? Installation von JTL-WMS / JTL-Packtisch+ 6
Neu Top Artikel über Slider Technische Fragen zu Plugins und Templates 1
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 6
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 12
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

Ähnliche Themen