Добавить налог ниже общей суммы в деталях заказа WooCommerce - PullRequest
1 голос
/ 10 апреля 2019

В WooCommerce я пытаюсь добавить налог ниже суммы в деталях заказа. Я хочу добавить строку в итоги заказа. Однако приведенный ниже код не работает:

//Show tax in order details
add_action( 'woocommerce_checkout_create_order', 'func_new_total', 20, 1 );
function func_new_total( $order ) {
    // Get order total
    $total = $order->get_total();
    //Calculate tax
    $tax = $total * 0.2;

    //Add tax on new line below total
    $new_total = $total . '<br>' . 'herav Mva kr' . $tax;

    $order->set_total($new_total);
}

Я тоже это пробовал, но тоже не работает:

add_action('woocommerce_checkout_update_order_meta', function( $order_id, $posted ) {
    $order = wc_get_order( $order_id );

    $total_price = $order->get_total();
    $tax = $total_price * 0.2;
    $new_total = $total_price . '<br>' . 'herav Mva kr' . $tax;

    update_post_meta( $order_id, 'total', 'hallooo' );  
} , 10, 2);

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать следующее, которое отображает общую сумму налога в отдельной строке ниже общей суммы заказа (для заказов и уведомлений по электронной почте) :

// Add total taxes as a separated line before order total on orders and emails
add_filter( 'woocommerce_get_order_item_totals', 'insert_custom_line_order_item_totals', 10, 3 );
function insert_custom_line_order_item_totals( $total_rows, $order, $tax_display ){
    // Display only the gran total amount
    $gran_total = wc_price( $order->get_total() );
    $total_rows['order_total']['value'] = is_wc_endpoint_url() ? $gran_total : strip_tags( $gran_total );

    $total_tax_amount = wc_price( $order->get_total_tax() );
    $total_tax_amount = is_wc_endpoint_url() ? $total_tax_amount : strip_tags( $total_tax_amount );

    // Create a new row for total tax
    $tax_row = array( 'order_tax_total' => array(
        'label' => __('Herav MVA:','woocommerce'),
        'value' => $total_tax_amount
    ) );

    $total_rows['order_total']['value'] = $gran_total;

    return $total_rows + $tax_row;
}

Или с вашим обычным расчетом 20% налога:

// Add total taxes as a separated line before order total on orders and emails
add_filter( 'woocommerce_get_order_item_totals', 'insert_custom_line_order_item_totals', 10, 3 );
function insert_custom_line_order_item_totals( $total_rows, $order, $tax_display ){
    // Display only the gran total amount
    $gran_total = (float) $order->get_total();
    $total_rows['order_total']['value'] = is_wc_endpoint_url() ? $total_html : strip_tags( $total_html );

    // Custom tax calculation (for 20% tax rate)
    $total_tax_amount = wc_price(  $gran_total - $gran_total / 1.2 );
    $total_tax_amount = is_wc_endpoint_url() ? $total_tax_amount : strip_tags( $total_tax_amount );

    // Create a new row for total tax
    $tax_row = array( 'order_tax_total' => array(
        'label' => __('Herav MVA:','woocommerce'),
        'value' => $total_tax_amount
    ) );

    $total_rows['order_total']['value'] = wc_price( $gran_total );

    return $total_rows + $tax_row;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

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