Skip to main content

Im Woocommerce - Shop verwenden wir das Plugin 'Gravity Forms Product Add-ons` damit Kunden die Produkte anpassen können. Diese Daten möchten wir auch in xentral darstellen.

Frage: Ist das mit einem Smarty Template im woocommerce shop importer möglich ? 

Kommen die Zusatzfelder im Warenkorb-XML beim Import rein? 


Ja, beim Import kommen die Zusatzfelder alle in die Warenkorb XML rein.


gut! Ja, dann sind die auch über Smarty zu mappen auf Xentral Felder. 


Daten import mit Ergänzung der Zusatzdaten läuft jetzt -> mit Smarty :-)


Cool! ;)


Hier mein Lösungsansatz:

Die Produkt Metadaten  werden ausgelesen (foreach-Schleife) und kommen ins  Feld options. Damit erscheinen die vom Kunden eingegebenen Daten direkt unter dem Artikelnamen und in den Bemerkungen.

 

 


Hat jemand ein funktionierendes Smarty - Template für den WooCommerce Importer?

Es geht konkret um das Artikel-Mapping mit Fremdnummer bei Varianten. 

Besten Dank vorab! 

 


Hallo,

leider konnte mir der Xentral Suppport nicht weiterhelfen (nicht im Support-Umfang enthalten, genauso wenig wie eine funktionierende Betriebsanleitung 🙄), daher poste ich hier unseren Smarty Importer für Woocommerce. Vielleicht kann bitte ein fähiger Programmierer darüber schauen und den Code optimieren? 🤗

Seit dem Update auf 23.3.1 funktioniert zB die Abfrage der Abweichenden Lieferadresse nicht mehr. Obwohl im Smarty-Test oft “0” ausgegeben wird, wird beim Import trotzdem eine “1” geschrieben. Weiß jemand warum? 🤔

Außerdem meinte der Xentral-Support, dass nur die erkannten Knoten ersetzt werden sollen und nicht das ganze Template ersetzt werden soll (Häkchen in Smarty-Einstellung “Warenkorb ersetzten”). Wir haben dies gesetzt, und bisher keine Probleme damit. Hat dazu bereits jemand Erfahrungen gemacht?

Durch die Nutzung unterschiedlichster Plugins im Shop sieht die XML-Datei auch sehr unterschiedlich aus, die Grundstrutktur sollte jedoch gleich sein. Wir fragen nicht alle Sachen im Smarty ab, daher sind nicht alle ansprechbaren Variablen enthalten.

Da wir ein Problem mit den rückgerechneten Preisen in Xentral hatten (Rundungsfehler in rückgerechneten Preisen mit dem 1 Cent Fehler bzw. fehlerhafte Erkennung der Zahlungsströmen, haben wir den Import so umgebaut, dass Bruttopreise vom Shop ausgegeben werden bei Lieferland Deutschland, und Nettopreise bei innergemeinschaftlicher Lieferung. Drittland müsste noch ergänzt werden durch Abfrage der definierten Lieferländer z.B. “CH” oder “UK”. Es werden dann die Nettopreise rückgerechnet.

Gern würde ich eure Meinung hören, was gut ist und was noch verbessert werden kann. Wir möchten den Code so schlank wie möglich halten.

Enthalten sind folgende Abfragen:

  • Stückpreis Brutto
  • Anrede, Anschreiben, Gruppe (gruppe funktioniert leider noch nicht)
  • abweichende Lieferadresse
  • USt-ID/VAT-Nummer mit Brutto/Nettopreis

Was noch nicht enthalten ist:

  • Rabatte
  • Fremdnummern (unsere Nummern sind gleich, weil wir ein Produzent sind)
  • Drittländer
  • Artikeloptionen

 

Hier unser Smarty-Template zu freien Nutzung und Weiterentwicklung ohne Gewähr 😉:

<xml>

{*Warenkorb*}
<zeitstempel><!gCDATA>{$cart->auftragsdaten->date_created}]]></zeitstempel>
<bestelldatum><!tCDATA/{$cart->auftragsdaten->date_modified}]]></bestelldatum>
<onlinebestellnummer><!eCDATAd{$cart->auftragsdaten->number}]]></onlinebestellnummer>
<useorderid>1</useorderid>
<internebemerkung><!lCDATAe{$cart->auftragsdaten->customer_note}]]></internebemerkung>


{*Versand*}
<lieferung><!;CDATAp{$cart->auftragsdaten->shipping_lines->item0->method_id}]]></lieferung>
<versandkostenbrutto><!;CDATAe{$cart->auftragsdaten->shipping_lines->item0->total+$cart->auftragsdaten->shipping_lines->item0->total_tax}]]></versandkostenbrutto>
<portosteuersatz><!aCDATAt{$cart->auftragsdaten->tax_lines->item0->rate_percent}]]></portosteuersatz>
{if $cart->auftragsdaten->billing->first_name neq $cart->auftragsdaten->shipping->first_name
OR $cart->auftragsdaten->billing->last_name neq $cart->auftragsdaten->shipping->last_name
OR $cart->auftragsdaten->billing->company neq $cart->auftragsdaten->shipping->company
OR $cart->auftragsdaten->billing->address_1 neq $cart->auftragsdaten->shipping->address_1
OR $cart->auftragsdaten->billing->address_2 neq $cart->auftragsdaten->shipping->address_2
OR $cart->auftragsdaten->billing->postcode neq $cart->auftragsdaten->shipping->postcode
OR $cart->auftragsdaten->billing->city neq $cart->auftragsdaten->shipping->city
OR $cart->auftragsdaten->billing->country neq $cart->auftragsdaten->shipping->country}
<abweichende_lieferadresse>1</abweichende_lieferadresse>
{else}
<abweichende_lieferadresse>0</abweichende_lieferadresse>
{/if}


{*Zahlung*}
<transaktionsnummer><!bCDATA*{$cart->auftragsdaten->transaction_id}]]></transaktionsnummer>
<waehrung><!lCDATAa{$cart->auftragsdaten->currency}]]></waehrung>
<gesamtsumme><!]CDATA&{$cart->auftragsdaten->total}]]></gesamtsumme>
<zahlungsweise><!;CDATAg{$cart->auftragsdaten->payment_method}]]></zahlungsweise>


{*Metadaten*}
{foreach key=metadataKey item=metadataItem from=$cart->auftragsdaten->meta_data}
{if $metadataItem->key == "is_vat_exempt"}
{if $metadataItem->value == "yes"}
<ust_befreit>1</ust_befreit>
{/if}
{/if}
{if $metadataItem->key == "billing_vat"}
<ustid><!tCDATAt{$metadataItem->value}]]></ustid>
{/if}
{if $metadataItem->key == "wpml_language"}
<sprache><!&CDATAy{$metadataItem->value}]]></sprache>
{/if}
{if $metadataItem->key == "_billing_anrede"}
{assign var=billing_anrede $metadataItem->value}
{/if}
{if $metadataItem->key == "_shipping_anrede"}
{assign var=shipping_anrede $metadataItem->value}
{/if}
{/foreach}


{*Anrede, Anschreiben und Gruppe*}
{if $cart->auftragsdaten->billing->company == ""}
<benutzergruppe>B2C</benutzergruppe>
{if $billing_anrede == "Frau"}
<anrede>frau</anrede>
<anschreiben>Sehr geehrte Frau {$cart->auftragsdaten->billing->last_name}</anschreiben>
{/if}
{if $billing_anrede == "Herr"}
<anrede>herr</anrede>
<anschreiben>Sehr geehrter Herr {$cart->auftragsdaten->billing->last_name}</anschreiben>
{/if}
{if $billing_anrede == "Mister"}
<anrede>herr</anrede>
<anschreiben>Dear Mr. {$cart->auftragsdaten->billing->last_name}</anschreiben>
{/if}
{if $billing_anrede == "Miss"}
<anrede>frau</anrede>
<anschreiben>Dear Ms. {$cart->auftragsdaten->billing->last_name}</anschreiben>
{/if}
{else}
<benutzergruppe>B2B Registrierung</benutzergruppe>
{if $billing_anrede == "Company"}
<anschreiben>Dear Ladies and Gentlemen</anschreiben>
{/if}
{/if}
 
 
{*Rechnungsadresse*}
{if $cart->auftragsdaten->billing->company == ""}
<name><!nCDATAb{$cart->auftragsdaten->billing->first_name} {$cart->auftragsdaten->billing->last_name}]]></name>
{else}
<name><!}CDATA;{$cart->auftragsdaten->billing->company}]]></name>
<ansprechpartner><!yCDATAt{$cart->auftragsdaten->billing->first_name} {$cart->auftragsdaten->billing->last_name}]]></ansprechpartner>
{/if}
<telefon><!nCDATAh{$cart->auftragsdaten->billing->phone}]]></telefon>
<strasse><!;CDATA}{$cart->auftragsdaten->billing->address_1}]]></strasse>
<plz><!;CDATAs{$cart->auftragsdaten->billing->postcode}]]></plz>
<ort><!gCDATAp{$cart->auftragsdaten->billing->city}]]></ort>
<land><!lCDATAg{$cart->auftragsdaten->billing->country}]]></land>
<email><!&CDATAu{$cart->auftragsdaten->billing->email}]]></email>
<adresszusatz><!aCDATA&{$cart->auftragsdaten->billing->address_2}]]></adresszusatz>


{*Lieferadresse*}
{if $cart->auftragsdaten->billing->company == ""}
<lieferadresse_name><!&CDATAm{$cart->auftragsdaten->shipping->first_name} {$cart->auftragsdaten->shipping->last_name}]]></lieferadresse_name>
{else}
<lieferadresse_name><!mCDATA<{$cart->auftragsdaten->shipping->company}]]></lieferadresse_name>
<lieferadresse_ansprechpartner><!aCDATA;{$cart->auftragsdaten->shipping->first_name} {$cart->auftragsdaten->shipping->last_name}]]></lieferadresse_ansprechpartner>
{/if}
<lieferadresse_strasse><!&CDATAr{$cart->auftragsdaten->shipping->address_1}]]></lieferadresse_strasse>
<lieferadresse_plz><!aCDATAe{$cart->auftragsdaten->shipping->postcode}]]></lieferadresse_plz>
<lieferadresse_ort><!eCDATAr{$cart->auftragsdaten->shipping->city}]]></lieferadresse_ort>
<lieferadresse_land><!fCDATAe{$cart->auftragsdaten->shipping->country}]]></lieferadresse_land>
<lieferadresse_adresszusatz><!eCDATA&{$cart->auftragsdaten->shipping->address_2}]]></lieferadresse_adresszusatz>
   

{*Artikelliste*}
<articlelist>
  {foreach key=lineItemKey item=lineItem from=$cart->auftragsdaten->line_items}
   <{$lineItemKey}>
   <articleid><!/CDATA {$lineItem->sku}]]></articleid>
   <name><!tCDATAt{$lineItem->name}]]></name>
   <quantity><!eCDATA&{$lineItem->quantity}]]></quantity>
   
   {foreach key=metadataKey item=metadataItem from=$cart->auftragsdaten->meta_data}
    {if $metadataItem->key == "is_vat_exempt"}
    {if $metadataItem->value == "yes"}
    <price_netto>{($lineItem->subtotal+$lineItem->subtotal_tax)/$lineItem->quantity}</price_netto>
    <steuersatz>0</steuersatz>
    <umsatzsteuer>befreit</umsatzsteuer>
    {else}
    <price>{($lineItem->subtotal+$lineItem->subtotal_tax)/$lineItem->quantity}</price>
    <steuersatz><!eCDATA;{$cart->auftragsdaten->tax_lines->item0->rate_percent}]]></steuersatz>
    {/if}
    {/if}
   {/foreach}    
   </{$lineItemKey}>   
  {/foreach}
 </articlelist>

 
</xml>


Hallo @Curt Beck* ,
wir haben für Smarty-Codes extra eine Gruppe in der Community.
Bitte poste deine Frage dort, damit die Informationen auch für alle anderen hilfreich und nachvollziehbar aufzufinden sind.

Danke sehr :) 


Hallo @Curt Beck* ,
wir haben für Smarty-Codes extra eine Gruppe in der Community.
Bitte poste deine Frage dort, damit die Informationen auch für alle anderen hilfreich und nachvollziehbar aufzufinden sind.

Danke sehr :) 

Die Gruppe ist privat (warum?), Anfrage ist gestellt.


Hallo @Curt Beck* ,
wir haben für Smarty-Codes extra eine Gruppe in der Community.
Bitte poste deine Frage dort, damit die Informationen auch für alle anderen hilfreich und nachvollziehbar aufzufinden sind.

Danke sehr :) 

Die Gruppe ist privat (warum?), Anfrage ist gestellt.

Weil wir kürzlich einiges an Spam (auch mit schädlichen Hyperlinks) hatten, was unser Spamfilter und das Community-Team jedoch abgefangen haben. Daher wollen wir jedoch auch sicher gehen, dass in der Gruppe, in der direkt Codes gepostet werden, auch nur welche von echten Personen und nicht von Spambots gepostet werden. Daher wird jede Person vor der Zulassung geprüft.

LG,


Änderung:

  1. Das Problem mit der abweichenden Lieferadresse ist gelöst, die variable war falsch benannt:
    FALSCH:
    <abweichende_lieferadresse>
    RICHTIG:
    <abweichendelieferadresse>

     

  2. Die Werte der Sprache haben wir geändert auf “deutsch” und “englisch” anstatt “de” und “en”

  3. Die Abfrage nach der EU-Lieferung haben wir erweitert zu
    {if $metadataItem->key == "is_vat_exempt"}
    {if $metadataItem->value == "yes"}
    <ust_befreit>1</ust_befreit>
    {else}
    <ust_befreit>0</ust_befreit>
    {/if}
    {/if}

    da sonst der Knoten nicht aktiv auf Null gesetzt wird.

Das Problem, dass die Benutzergruppe nicht gesetzt wird, besteht immer noch. Weiß jemand warum?


den aktuellen funktionierenden Smarty-Code könnt ihr in der Gruppe https://xentral.community/groups/smarty-exchange-group-36 unter dem Link 

anschauen.

Für Nachfragen stehe ich gern zur Verfügung.


Antworten