Im Script den Wert einer anderen Spalte übernehmen wenn leer

Hallo Team,

ich habe in Shopware-Orderdaten oft den Fall, daß es keine extra Angaben zur Lieferadresse gibt. In dem Fall würde ich gerne die Werte aus der Rechnungsadresse übernehmen. Um das nun nicht in jeder Spalte extra codieren zu müssen, dachte ich mir, es per Script zu lösen. Dabei soll erstmal der Spaltentitel erzeugt werden, aus dem im Leer-Fall der Wert geholt werden soll, anschließend soll er dann entweder einen vorhandenen Wert eintragen oder eben den aus der anderen Spalte holen. Das klappt so aber noch nicht, Beispiel:

<#assign s = _currentTitle?substring(8, _currentTitle?length)><#– Teil des Spaltennamens, der immer stimmt –>
<#if _currentValue! != ‘‘>${_currentValue!}<#else><#assign s = ‘Billing‘+s>${s}</#if>

Wenn also jetzt “ShippingSalutationId” leer ist, soll er den Wert aus “BillingSalutationId” holen. Macht er aber nicht, er schreibt als Ergebnis den String “BillingSalutationId”. Wie kann ich es erzwingen, daß er den Wert holt? Um es zu verdeutlichen: Ich habe nach dem </#if> noch geschrieben: ${s}|${BillingAddressSalutationId}, Ergebnis:

image

Gruß Micha

Hallo Micha,

der <#else><#assign s = ‘Billing‘+s>${s}</#if> Teil ist noch nicht ganz korrekt. Der Variable s wird immer der Spaltentitel mit „Billing“ davor zugewiesen und dann ausgegeben. Du möchtest aber den Wert dieser Spalte ausgeben. Wenn die Billing… Spalten alle vor den Shipping… Spalten im Mapping vorhanden sind, dann könntest du mit den Ergebnisspalten arbeiten:
...<#else><#assign s = ‘Billing‘+s>${result[s]}</#if>.

Noch ein allgemeiner Hinweis zu dieser Logik. Es könnte passieren, das die Rechnugsadressdaten und die Versandadressdaten vermischt werden. Beispiel: Die Hausnummer in den Versanddaten fehlt, alle anderen Versanddaten sind aber vorhanden. Dann wird die Hausnummer aus den Rechnungsdaten übernommen, alle andere Werte aus den "Shipping" Spalten.

VG Torsten

Hallo Micha,

du suchst das ?eval-Builtin.

Gruß
Gustav

Danke! Wegen der geforderten 20 Zeichen: Nochmal danke :wink:

Gruß Micha