mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Fix rounding issue (WIP)
This commit is contained in:
parent
0a98d38891
commit
18490d76be
1 changed files with 5 additions and 11 deletions
|
@ -236,7 +236,7 @@ class PayUponInvoiceOrderEndpoint {
|
||||||
$product = $item->get_product();
|
$product = $item->get_product();
|
||||||
$currency = $wc_order->get_currency();
|
$currency = $wc_order->get_currency();
|
||||||
$quantity = $item->get_quantity();
|
$quantity = $item->get_quantity();
|
||||||
$unit_amount = $wc_order->get_item_subtotal( $item, false, false );
|
$unit_amount = $wc_order->get_item_subtotal( $item, false );
|
||||||
$tax_rates = WC_Tax::get_rates( $product->get_tax_class() );
|
$tax_rates = WC_Tax::get_rates( $product->get_tax_class() );
|
||||||
$tax_rate = reset( $tax_rates )['rate'] ?? 0;
|
$tax_rate = reset( $tax_rates )['rate'] ?? 0;
|
||||||
$tax = $unit_amount * ( $tax_rate / 100 );
|
$tax = $unit_amount * ( $tax_rate / 100 );
|
||||||
|
@ -244,7 +244,7 @@ class PayUponInvoiceOrderEndpoint {
|
||||||
|
|
||||||
return new Item(
|
return new Item(
|
||||||
mb_substr( $item->get_name(), 0, 127 ),
|
mb_substr( $item->get_name(), 0, 127 ),
|
||||||
new Money( $wc_order->get_item_subtotal( $item, false, false ), $currency ),
|
new Money( (float) $wc_order->get_item_subtotal( $item, false ), $currency ),
|
||||||
$quantity,
|
$quantity,
|
||||||
substr(
|
substr(
|
||||||
wp_strip_all_tags( $product instanceof WC_Product ? $product->get_description() : '' ),
|
wp_strip_all_tags( $product instanceof WC_Product ? $product->get_description() : '' ),
|
||||||
|
@ -301,7 +301,7 @@ class PayUponInvoiceOrderEndpoint {
|
||||||
$tax = (float) $item->tax()->value();
|
$tax = (float) $item->tax()->value();
|
||||||
$qt = $item->quantity();
|
$qt = $item->quantity();
|
||||||
|
|
||||||
$total += ( ( $unit_amount + $tax ) * $qt );
|
$total += ( ( round($unit_amount,2) + round($tax,2) ) * $qt );
|
||||||
$tax_total += $tax * $qt;
|
$tax_total += $tax * $qt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,19 +359,13 @@ class PayUponInvoiceOrderEndpoint {
|
||||||
foreach ($data['purchase_units'][0]['items'] as $item) {
|
foreach ($data['purchase_units'][0]['items'] as $item) {
|
||||||
$items_total += floatval($item['unit_amount']['value']) * $item['quantity'];
|
$items_total += floatval($item['unit_amount']['value']) * $item['quantity'];
|
||||||
}
|
}
|
||||||
$diff = round($items_total - $item_total, 2);
|
$data['purchase_units'][0]['amount']['breakdown']['item_total']['value'] = number_format( $items_total, 2, '.', '' );
|
||||||
if($diff === -0.01 || $diff === 0.01) {
|
|
||||||
$data['purchase_units'][0]['amount']['breakdown']['item_total']['value'] = number_format( $items_total, 2, '.', '' );
|
|
||||||
}
|
|
||||||
|
|
||||||
$items_tax_total = 0;
|
$items_tax_total = 0;
|
||||||
foreach ($data['purchase_units'][0]['items'] as $item) {
|
foreach ($data['purchase_units'][0]['items'] as $item) {
|
||||||
$items_tax_total += floatval($item['tax']['value']) * $item['quantity'];
|
$items_tax_total += floatval($item['tax']['value']) * $item['quantity'];
|
||||||
}
|
}
|
||||||
$diff = round($tax_total - $items_tax_total, 2);
|
$data['purchase_units'][0]['amount']['breakdown']['tax_total']['value'] = number_format( $items_tax_total, 2, '.', '' );
|
||||||
if($diff === -0.01 || $diff === 0.01) {
|
|
||||||
$data['purchase_units'][0]['amount']['breakdown']['tax_total']['value'] = number_format( $items_tax_total, 2, '.', '' );
|
|
||||||
}
|
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue