【问题标题】:Display custom tax total row based on user roles in WooCommerce orders根据 WooCommerce 订单中的用户角色显示自定义税收总计行
【发布时间】:2021-05-28 21:01:05
【问题描述】:

我正在 WooCommerce 中建立一个网上商店,我需要在订单电子邮件中显示正确的税金。我有 2 个不同的用户角色:“私人”和“企业”

以下代码进行税收计算并将其添加到新行。但是,对于“商业”用户角色,我需要输出为 0DKK(因为他们支付的价格不含税)

// 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.25 );
    $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' => __('Moms udgør:','woocommerce'),
        'value' => $total_tax_amount
    ) );

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

    return $total_rows + $tax_row;
}

任何帮助将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce orders user-roles


    【解决方案1】:

    以下内容会将“企业”用户角色的自定义总税行更改为零:

    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 ){
        $user  = $order->get_user(); // Gets WP_User Object from order
        $total = $order->get_total(); // Gets order grand total. incl. taxes
    
        // Clean total row displayed taxes
        $total_rows['order_total']['value'] = is_wc_endpoint_url() ? wc_price($total) : strip_tags(wc_price($total));
    
        // Get total tax formatted from a defined tax rate based on user roles
        $total_tax = in_array('business', $user->roles) ? wc_price(0) : wc_price($total - ($total / 1.25));
    
        // Insert total tax row
        $total_rows['order_tax_total'] = array(
            'label' => __('Moms udgør:','woocommerce'),
            'value' => is_wc_endpoint_url() ? $total_tax : strip_tags($total_tax),
        );
    
        return $total_rows;
    }
    

    它应该可以工作。

    【讨论】:

    • 非常感谢!!这就像一个魅力!:)
    • 当然 :) 再次感谢!
    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 2022-01-11
    • 2019-07-13
    • 2020-11-17
    • 2017-06-17
    • 1970-01-01
    • 2017-08-14
    • 2021-01-30
    相关资源
    最近更新 更多