Zum Thema
Kaufland:
Übertragungsfehler
Wir hatten auch das Problem, dass die Kontaktdaten nicht an Kaufland übermittelt wurden. Ich hatte heute Kontakt zum JTL-Support. Es gab noch einen Bug, der dazu führte, dass auch die Telefonnummer angegeben werden musste. Das Problem wurde heute gelöst. Jetzt sollte es funktionieren.
Hersteller vs. verantwortliche Person
Dass die Lösung von Kaufland, nur eine Kontaktadresse zu ermöglichen ggf. zu rechtlichen Problemen beim Verkauf von Ware aus Drittländern führen kann ist das eine Problem. Das andere Problem ist der Lösungsvorschlag im
JTL-Guide (
https://guide.jtl-software.com/jtl-...-an-kaufland-global-marketplace-uebermitteln/) für alle Produkte die eigentlich keine verantwortliche Person benötigen, den Hersteller als verantwortliche Person anzulegen, damit die vorgeschlagenen
DotLiquid-/SQL-Abfragen richtig funktionieren. Man kann das aber auch sauberer lösen und - falls vorhanden - die verantwortliche Person ausgeben und wenn keine verantwortliche Person angelegt ist, dann eben den Hersteller. Darüber hinaus wünscht sich Kaufland eine bestimmte Syntax für die Adressen, die in den Snippets im JTL-Guide auch nicht respektiert wird.
Hier meine erste funktionierende Variante dazu (bitte korrigiert, optimiert, verbessert):
NAME
{% capture query -%}
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT tAddress.cCompanyName
FROM tArtikel
JOIN tHersteller ON tHersteller.kHersteller = tArtikel.kHersteller
JOIN Contact.tAddress ON Contact.tAddress.kContact = tHersteller.kContact
WHERE kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Hersteller = query | DirectQueryScalar -%}\
{% capture query -%}\
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT tAddress.cCompanyName
FROM Contact.tProductComplianceContact
JOIN Contact.tAddress ON tAddress.kContact = tProductComplianceContact.kContact
JOIN Artikel.tArtikelComplianceContact ON tArtikelComplianceContact.kProductComplianceContact = tProductComplianceContact.kProductComplianceContact
WHERE tArtikelComplianceContact.kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Verantwortlicher = query | DirectQueryScalar -%}\
{% if Verantwortlicher -%}
{{ Verantwortlicher }}{% else -%}{{ Hersteller }}{% endif -%}
E-MAIL
{% capture query -%}
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT tAddress.cEmail
FROM tArtikel
JOIN tHersteller ON tHersteller.kHersteller = tArtikel.kHersteller
JOIN Contact.tAddress ON Contact.tAddress.kContact = tHersteller.kContact
WHERE kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Hersteller = query | DirectQueryScalar -%}\
{% capture query -%}\
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT tAddress.cEmail
FROM Contact.tProductComplianceContact
JOIN Contact.tAddress ON tAddress.kContact = tProductComplianceContact.kContact
JOIN Artikel.tArtikelComplianceContact ON tArtikelComplianceContact.kProductComplianceContact = tProductComplianceContact.kProductComplianceContact
WHERE tArtikelComplianceContact.kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Verantwortlicher = query | DirectQueryScalar -%}\
{% if Verantwortlicher -%}
{{ Verantwortlicher }}{% else -%}{{ Hersteller }}{% endif -%}
ADRESSE
{% capture query -%}
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT CONCAT(tAddress.cStreet, ' ', tAddress.cHouseNumber, ', ' ,tAddress.cCity, ', ', tAddress.cPostalCode, ', ', tAddress.cCountryIso2)
FROM tArtikel
JOIN tHersteller ON tHersteller.kHersteller = tArtikel.kHersteller
JOIN Contact.tAddress ON Contact.tAddress.kContact = tHersteller.kContact
WHERE kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Hersteller = query | DirectQueryScalar -%}\
{% capture query -%}\
DECLARE @kArtikel AS INT = {{Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }};
SELECT CONCAT(tAddress.cStreet, ' ', tAddress.cHouseNumber, ', ' ,tAddress.cCity, ', ', tAddress.cPostalCode, ', ', tAddress.cCountryIso2)
FROM Contact.tProductComplianceContact
JOIN Contact.tAddress ON tAddress.kContact = tProductComplianceContact.kContact
JOIN Artikel.tArtikelComplianceContact ON tArtikelComplianceContact.kProductComplianceContact = tProductComplianceContact.kProductComplianceContact
WHERE tArtikelComplianceContact.kArtikel = @kArtikel \
{% endcapture -%}\
{% assign Verantwortlicher = query | DirectQueryScalar -%}\
{% if Verantwortlicher -%}
{{ Verantwortlicher }}{% else -%}{{ Hersteller }}{% endif -%}