Rundungsfehler Produktpreis
-
Hallo,
bei Verwendung Ihres PayPal Plugins sind wir auf ein Problem Preis-Rundungen gesto?en. Das Plugin benutzt nicht direkt die von WooCommerce bereitgestellten Klassen WC_Cart / WC_Order und die darin berechneten Summen, sondern berechnet den Gesamtpreis noch einmal selbst erneut. Da WooCommerce aber intern Produktpreise mit mehr als zwei Dezimalstellen unterstützt und das Plugin die selbst berechneten Preise auf zwei Dezimalstellen rundet, kommt es auf eine andere Gesamtsumme und die PayPal-Verarbeitung schl?gt fehl mit dem Fehler:
Validierungsfehler: PayPal-Betr?ge stimmen nicht überein (brutto XXX,XX, sollte YYY,YY sein). [..]
Beispiel: 15 Stück eines Produktes zum Nettopreis von 67,226 €
Die Utility-Klassen
CartItemData.php
OrderItemData.php
?rekonstruieren” den Preis der einzelnen Produkte, indem Sie die von WooCommerce gelieferte Gesamtsumme der 15 Produkte (1008,39 €) durch 15 teilen und anschlie?end auf zwei Dezimalstellen runden:return $this->format( $this->data['subtotal'] / $this->get_quantity() ); // bzw. return $this->format( $this->data['line_subtotal'] / $this->get_quantity() );
Damit steht hier der gerundete Preis von 67,23 für die einzelnen Produkte.
Daraus wird dann in der Methode get_item_list() der Datei
OrderDataCommon.php
eine ItemList der zu bezahlenden Produkte für die PayPal Transaktion erzeugt.Das Payment-Objekt für die Abwicklung der Zahlung wird in
WCPayPalPayment.php
erzeugt und nutzt dazu die Methode get_total() aus OrderDataCommon.php.
Die Methode get_total() nutzt aber nicht die von WooCommerce in WC_Cart/WC_Order berechneten Summen, sondern summiert alle gerundeten Elemente der ItemList.Dadurch erwartet WooCommerce eine eingehende Zahlung von 1008,39 € (67,226 * 15), w?hrend das Plugin die Summe auf 1008,45 € (67,23 * 15) berechnet hat.
Mir ist nicht ganz klar, warum das Plugin überhaupt Summen neu ausrechnet und nicht die von WooCommerce bereitgestellten Klassen nutzt. über die Verwendung von mehreren Dezimalstellen in Preisen l?sst sich streiten, aber wenn WooCommerce diese unterstützt sollte sich das Plugin auch daran halten.
Ich freue mich über eine Rückmeldung und ggf. einen Ausblick, ob dies Plugin-seitig korrigiert wird.
Viele Grü?e
Benno L.
- The topic ‘Rundungsfehler Produktpreis’ is closed to new replies.