Как рассчитать сумму заказа после оформления заказа - PullRequest
0 голосов
/ 01 апреля 2019

Я рассчитал другую итоговую сумму в Woocommerce:

add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
    // Get order total
    $total = $order->get_total();

    $orderproduct = $order->get_items();
    $tax_rate     = WC_Tax::get_rates( $orderproduct );

    if ($tax_rate == "10") {
        $percent10 = $total * $tax_rate; 
    }

    if ( $tax_rate == "4" ){
        $percent4 = $total * $tax_rate;
    }

    ## -- fai check e calcoli -- ##
    $new_total = $total + $percent4 + $percent10; // <== Fake calculation

    // imposta un calcolo nuovo
    $order->set_total( $new_total );
}

Но мои расчеты не работают, и я не могу, например, сделать это.

Любой совет или помощь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Я думаю, что вы не инициировали переменные $percent10 и $percent4

попробуйте это:

add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
    // Get order total
    $total = $order->get_total();

    $orderproduct = $order->get_items();
    $tax_rate     = WC_Tax::get_rates( $orderproduct );
    $percent10 = 0; // if $tax_rate != "10", will sum zero in $new_total
    $percent4 = 0; // if $tax_rate != "4", will sum zero in $new_total

    if ($tax_rate == "10") {
        $percent10 = $total * $tax_rate; 
    }

    if ( $tax_rate == "4" ){
        $percent4 = $total * $tax_rate;
    }

    ## -- fai check e calcoli -- ##
    $new_total = $total + $percent4 + $percent10; // <== Fake calculation

    // imposta un calcolo nuovo
    $order->set_total( $new_total );
}
0 голосов
/ 01 апреля 2019

Потому что вы использовали неправильный параметр налоговой функции.Вы можете попробовать это

add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
    // Get order total
    $total = $order->get_total();

    $orderproduct = $order->get_items();
    foreach($orderproduct as $product){
        $tax_rates     = WC_Tax::get_rates( $product->get_tax_class() );
        if($tax_rate = $tax_rates[1]['rate']){
            if ($tax_rate   == 10) {
                $percent10[] = $total * $tax_rate; 
            }

            if ($tax_rate  == 4) {
                $percent4[] = $total * $tax_rate;
            }
        }

    }
   /* */

    ## -- fai check e calcoli -- ##
    $new_total = $total + floatval((is_array($percent4))? array_sum($percent4): 0) + floatval((is_array($percent10))? array_sum($percent10): 0); // <== Fake calculation
    // imposta un calcolo nuovo
    $order->set_total( $new_total );
}
0 голосов
/ 01 апреля 2019

Есть ли когда-нибудь время, когда у вас были бы обе налоговые ставки?В противном случае, я думаю, что одной переменной для налогов будет достаточно, например:

if ($tax_rate == "10") {
    $tax_total = $total * $tax_rate; 
}

if ( $tax_rate == "4" ){
    $tax_total = $total * $tax_rate;
}

## -- fai check e calcoli -- ##
$new_total = $total + $tax_total

Кроме того, что вы имеете в виду, ваши расчеты работают?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...