Ich möchte beim Produktimport / dem Preisabgleich eine Währungsumrechnung vornehmen

Hinweis

Dieser Artikel thematisiert Anpassungen am Produktimport / Preisabgleich und richtet sich primär an Entwickler oder erfahrene WordPress Benutzer mit grundlegenden Programmierkenntnissen.

 

Vorgehen

Ab Version 2.11.0 des WooCommerce Bexio Automator Plugins stehen sowohl beim Import, als auch beim Preisabgleich, Filter zur Verfügung, um Änderungen an den Daten vorzunehmen. Zusammen mit der Anpassung im Plugin-Dienst vom 13.01.2026, damit auch der Name der jeweiligen Währung mitgeschickt wird, erlaubt dies, bei Bedarf eine Währungsumrechnung vorzunehmen.

 

Dazu gibt es grundsätzlich 2 mögliche Vorgehensweisen.

Fix hinterlegte Umrechnungsfaktoren Umrechnungsfaktoren extern abfragen

Die Umrechnungsfaktoren werden in einem fixen Mapping hinterlegt. Dies kann z.B. direkt im Code, oder in einer Bearbeitungsmaske im Shop, inkl. Speicherung in der Datenbank, erfolgen. Dies ist im Detail dem Anwender überlassen.

Das Prinzip bleibt jedoch das gleiche: die Umrechnungsfaktoren werden fix hinterlegt und periodisch von Hand aktualisiert.

Die Umrechnungsfaktoren können dann verwendet werden, um über die Filter im Plugin den von Bexio ausgelesenen Preis, je nach Währung, zu überschreiben.

 

Beispiel

Anbei ist ein Beispiel, wie eine Währungsumrechnung beim Import vorgenommen werden könnte. Das Beispiel verwendet die bestehenden Filter für Produktimport & Preisabgleich (hier beschrieben) und geht von einer Einfügung im functions.php eines aktiven Child-Themes aus. Das Beispiel geht davon aus, dass die abweichenden Währungen in CHF konvertiert werden.

Hinweis: für die beiden Filter bei der Erstellung neuer / Aktualisierung bestehender Produkte während dem Import, kann der gleiche Callback verwendet werden - die notwendige Logik sowie die erhaltenen Parameter sind gleich.

$conversions = [
    'EUR' => 0.93,
    'GBP' => 1.08
];

add_filter('raptus_wc_bexio_connector_synced_bexio_price', 'currency_conversion', 10, 3);
function currency_conversion($price, $currency, $wc_product) {
    global $conversions;
    if ($currency != 'CHF' && array_key_exists($currency, $conversions)) {
        $price = $price * $conversions[$currency];
    }
    return $price;
}

add_filter('raptus_wc_bexio_connector_import_product_before_save', 'currency_conversion_import', 10, 2);
add_filter('raptus_wc_bexio_connector_create_product_before_save', 'currency_conversion_import', 10, 2);
function currency_conversion_import($wc_product, $product) {
    $currency = $product['currency'];
    global $conversions;
    if ($currency != 'CHF' && array_key_exists($currency, $conversions)) {
        $wc_product->set_regular_price($product['sale_price'] * $conversions[$currency]);
    }
    return $wc_product;
}

 

Bei Bedarf könnte auch im Shop in unterschiedliche Währungen umgerechnet werden - das WC-Product Objekt wird im Filter jeweils übergeben. Dies ist im Detail der Implementation des Anwenders überlassen.

War dieser Beitrag hilfreich?
0 von 0 fanden dies hilfreich

Kommentare

0 Kommentare

Zu diesem Beitrag können keine Kommentare hinterlassen werden.

Haben Sie noch Fragen?
Anfrage einreichen