Man kann einen Update-Endpoint für Bestellungen definieren, der angesprochen, wenn sich der Status einer Bestellung bei EDC-Wholesale ändert. Problem ist, dass das nicht immer funktioniert und Hilfe auch nicht immer kommt. Aber man hat Mail die man parsen kann. Die wichtigsten Regex dafür sind:
Betreff:
/Auslieferung Ihrer Bestellung/
Body-Trackingcode:
/>(\d+)<\/b>/
Body-Ordernumber:
/Kontrollnummer:<\/b>\s*(\d+)<br/
Damit kann man alle Daten bekommen und seine Bestellungen updaten. Mit einer Shopware 5 Lösung kann ich gerne auf Anfrage helfen.
Wer sich schon mal bei Shopware damit auseinander setzen musste, wie die Einstellung "Deaktiviere Steuern wenn eine USt-IdNr. angegeben wurde" funktioniert, ist sicher schnell im Checkout-Controller und in der Methode isTaxFreeDelivery($userData) gelandet.
Leider ist diese Methode in einem Stil geschrieben, der sie meiner Meinung nach extrem schwer lesbar macht. Die wieder negierten emptys und vielen return sorgen dafür, dass man den dahinter steckten logischen Ausdruck nur schwer erkennt, wobei der an sich ziemlich einfach ist.
Alles ist wie man man erwartet nur das bei fehlender VatID in der Shipping-Address auch die Billing-Address "einspringen" kann, muss man sich mehrmals durch den Kopf gehen lassen.
Ich habe die Methode noch mal in für mich besser lesbarer Form nieder geschrieben:
$shippingCountryTaxFree = !empty($userData['additional']['countryShipping']['taxfree']);
$shippingCountryTaxFreeVatID = !empty($userData['additional']['countryShipping']['taxfree_ustid']);
$billingCountryTaxFreeVatID = !empty($userData['additional']['country']['taxfree_ustid']);
$shippingVatID = !empty($userData['shippingaddress']['ustid'];
$billingVatID = !empty($userData['billingaddress']['ustid'];
return $shippingCountryTaxFree
||
($shippingCountryTaxFreeVatID &&
(
(!$shippingVatID && billingVatID && billingCountryTaxFreeVatID)
||
$shippingVatID
)
);
Die Logik stammt aus der Version 5.3.5