如何在“合计”中显示产品价格+运费增值税

时间:2018-03-23 18:40:47

标签: wordpress woocommerce

我有一个小小的问题,不知道如何解决自己。我已经在我的店里设置显示单独的价格和运费,但总的来说显示我的价格不好。

例如我的产品价格24.99€+运费:3,95€= 28.94€但在购物车页面的计算中计算:24.99€+ 3.95€ - 0.26€出了什么问题。

enter image description here

我发现通过此功能计算总价:

<td data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>

这是控制该部分的功能: 来自模板中的 cart-totals.php ,而下面的函数来自 wc-cart-functions.php

function wc_cart_totals_order_total_html() {
$value = '<strong>' . WC()->cart->get_total() . '</strong> ';

// If prices are tax inclusive, show taxes here.
if ( wc_tax_enabled() && WC()->cart->display_prices_including_tax() ) {
    $tax_string_array = array();
    $cart_tax_totals  = WC()->cart->get_tax_totals();

    if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
        foreach ( $cart_tax_totals as $code => $tax ) {
            $tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
        }
    } elseif ( ! empty( $cart_tax_totals ) ) {
        $tax_string_array[] = sprintf( '%s %s', wc_price( WC()->cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
    }

    if ( ! empty( $tax_string_array ) ) {
        $taxable_address = WC()->customer->get_taxable_address();
        $estimated_text  = WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping()
            ? sprintf( ' ' . __( 'estimated for %s', 'woocommerce' ), WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] )
            : '';
        $value .= '<small class="includes_tax">' . sprintf( __( '(includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) . $estimated_text ) . '</small>';
    }
}

echo apply_filters( 'woocommerce_cart_totals_order_total_html', $value );
}

所以我的问题是如何以总价格添加1.63E,所以会得到正确的价格。感谢

编辑:发现像我的here一样的问题,但答案似乎没有做出改变。

1 个答案:

答案 0 :(得分:0)

首先,感谢你的帖子,我几乎以为我是唯一有这种需求的人。

到目前为止,这适用于我的商店。我确保我的代码对于不同的商店设置不是非常通用。也许有人可以制作更通用的版本。

编辑:我添加了一张显示两种费率的图片。 Image of the result我发现了计算运费税的一个小错误,现在已经纠正。

/**
 * Change Tax Amount including Shipping Taxes
 * Referencing to wc-cart-functions.php starting from Line 296
 *
*/
add_filter( 'woocommerce_cart_totals_order_total_html', 'woo_rename_tax_inc_cart', 10, 1 );
function woo_rename_tax_inc_cart( $value ) {
    /* Get all infos needed */
    $shipping_total = WC()->cart->shipping_total;
    $taxes = WC()->cart->get_taxes_total( true, true );
    $taxrate = 7.7;
    $newtaxes = ($shipping_total/(100+$taxrate)*$taxrate) + $taxes; // Shipping is 100% + taxrate %, so we deduct both percentages.

    /* Check if Shipment total is active */
    if ( ! empty($shipping_total) && $shipping_total != 0 ) { 
        if ( ! empty( $value ) ) {
            // Show Price /wc-cart-functions.php Line 297
            $value = '<strong>' . WC()->cart->get_total() . '</strong> ';
            $value .= '<small class="includes_tax">' . '(inkl. ' . wc_price( $newtaxes ) . ' MWST)' . '</small>';
        }
    }

    // Attach Tax Info to Price (single line)
    $value = str_ireplace( 'Tax', 'GST', $value );

    return $value;
}