Moin Simone,
ich hab mir die Datenbank noch einmal auf Lösungsmöglichkeiten hin angeschaut und auch wenn ich bei meinem Featurevorschlag von oben (danke
@argy) bleibe, habe ich jetzt doch alle Versatzstücke gefunden, um mit eine bißchem SQL Gefummele eine ziemliche Näherung zur optimalen Lösung hinzubekommen.
Ich stelle Dir jetzt mal gleich zwei Workflows vor, erst einen der automatisch ausgelöst wird, wenn ein Artikel geändert wurde (eigentlich eher "auf Speichern geklickt" wurde) und dann noch einen, den Du manuell im Artikel-Bereich auslöst. Der automatisch bei einer Artikeländerung ausgelöste prüft, ob der geänderte Artikel Kundenspezifische Preise hat und falls ja, sammelt er die zugehörige Info aus der Datenbank ein und schickt sie Dir per Email.
Der manuell auszulösende
Workflow, respektive die zugrundeliegende SQL Query ist im Vergleich dazu deutlich komplexer, und damit diese Antwort nicht seitenlang wird, stelle ich den dann in einem Folgebeitrag vor, jetzt also erst einmal der automatische Workflow, here we go...
AUTOMATISCHER WORKFLOW NACH ARTIKELÄNDERUNG
1. Automatischen Workflow im Bereich
Artikel > Geändert anlegen.
2. Als Workflow Bedingung legst Du eine neue "Erweiterte Eigenschaft" an, mit folgendem Code
Code:
{% capture query -%}
SELECT t1.cArtNr, t2.cName, t5.cKundenNr, CASE t4.nAnzahlAb WHEN 0 THEN 1 END nAnzahlAb, t4.fNettoPreis FROM tArtikel as t1
INNER JOIN tArtikelBeschreibung AS t2 ON t1.kArtikel=t2.kArtikel
INNER JOIN tPreis AS t3 ON t1.kArtikel=t3.kArtikel
INNER JOIN tPreisDetail AS t4 ON t3.kPreis=t4.kPreis
INNER JOIN tkunde AS t5 ON t3.kKunde=t5.kKunde
WHERE t1.kArtikel = {{ Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }}
AND t2.kSprache = 1
AND t2.kPlattform = 1
AND t3.kKunde > 0
ORDER BY t1.cArtNr ASC, t5.cKundenNr
{% endcapture -%}
{% assign ArtikelKDIndPreise = query | DirectQuery -%}
{% for item in ArtikelKDIndPreise.Daten -%}
{{ item.cArtNr }} {{ item.cKundenNr}} {{ item.nAnzahlAb }} {{ item.fNettoPreis | FormatNumber: 'N2', 'de-DE' }} € {{ item.cName }}
{% endfor -%}
3. Als Operator gibst Du "Ist nicht leer" an.
4. Als Workflow Aktion wählst Du "E-Mail senden", Empfänger und alles bis "Text" ist Deins und dann...
5. Bei "Text" klickst Du auf den "..." Button und gibst folgenden Code ein...
Code:
Hallo Simone,
ein am {{ Vorgang.Allgemein.Zuletzt_aktualisiert | Date:'dd.MM.yyyy' }} um {{ Vorgang.Allgemein.Zuletzt_aktualisiert | Date:'HH:mm' }} aktualisierter Artikel besitzt kundenindividuelle Preise.
ArtNr Kd-Nr Ab Preis Beschreibung
---------------------------------------------------------------------------------------------
{% capture query -%}
SELECT t1.cArtNr, t2.cName, t5.cKundenNr, CASE t4.nAnzahlAb WHEN 0 THEN 1 END nAnzahlAb, t4.fNettoPreis FROM tArtikel as t1
INNER JOIN tArtikelBeschreibung AS t2 ON t1.kArtikel=t2.kArtikel
INNER JOIN tPreis AS t3 ON t1.kArtikel=t3.kArtikel
INNER JOIN tPreisDetail AS t4 ON t3.kPreis=t4.kPreis
INNER JOIN tkunde AS t5 ON t3.kKunde=t5.kKunde
WHERE t1.kArtikel = {{ Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }}
AND t2.kSprache = 1
AND t2.kPlattform = 1
AND t3.kKunde > 0
ORDER BY t1.cArtNr ASC, t5.cKundenNr
{% endcapture -%}
{% assign ArtikelKDIndPreise = query | DirectQuery -%}
{% for item in ArtikelKDIndPreise.Daten -%}
{{ item.cArtNr }} {{ item.cKundenNr}} {{ item.nAnzahlAb }} {{ item.fNettoPreis | FormatNumber: 'N2', 'de-DE' }} € {{ item.cName }}
{% endfor -%}
---------------------------------------------------------------------------------------------
Viele Grüße,
Deine Wawi
6. Workflow vielleicht noch einmal testen und dann OK.
Die eigentliche Arbeit oben machen die
INNER JOINS, die das Netz immer enger um nur noch die Artikel ziehen, die kundenspezifische Preise haben und unten im
WHERE Teil wird dann nur noch auf
Sprache=Deutsch und
Plattform=Wawi geprüft, aber dann mit
kKunde>0 auch noch die letztendliche Abfrage auf kundenspezifische Preise erledigt.
Wenn ein Artikel kundenspezifische Preise für mehrere Kunden hat, werden Dir in der Email alle Kunden mit ihren Preisen für diesen Artikel aufgelistet, was der Workflow aber nicht kann, weil die
Wawi das nicht hergibt (schönes Bild...) ist, sich nur dann aufrufen zu lassen, wenn es auch tatsächlich
eine Preisänderung gegeben hat. Der Workflow wird stattdessen
IMMER getriggert wenn
IRGDENDETWAS am Artikel geändert wurde und sogar, wenn gar nichts geändert wurde, aber "Speichern" geklickt wurde. - Unschön, aber so ist die Realität der Wawi ...
P.S. Die Formatierung oben in den Email-Texten kommt so wie sie da steht, nur rüber, wenn Dein Mailprogramm mit einem "fixed Font" wie z.B. "Courier New" arbeitet, was nich sooo wahrscheinlich ist. Falls nicht, dann könnte man das Ganze aber z.B. mit einer Umformatierung auf HTML-Emails ansprechend formatieren. - Dazu fehlt mir jetzt aber leider der Elan ...
Viele Grüße,
Ingmar