Измените цену по умолчанию в общении CART на основе пользовательского налогового классаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Измените цену по умолчанию в общении CART на основе пользовательского налогового класса

Сообщение Anonymous »

Мне нужно отфильтровать цену продукта для продуктов, которые используют пользовательский налоговый класс при добавлении продукта в корзину, чтобы я мог рассчитать налог на основе маржи = цена-цена покупки, а не цена.
add_filter( 'woocommerce_calc_tax', 'filter_woocommerce_calc_tax', 10, 5 );
function filter_woocommerce_calc_tax( $taxes, $price, $rates, $price_includes_tax, $suppress_rounding ) {
// Get the global cart object
$cart = WC()->cart;

// Loop through every item in the cart
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
// Get the product object
$product = $cart_item['data'];
$product_price = $price; // Current price of the product

// Get the purchase price (replace '_purchase_price' with the actual meta key)
$purchase_price = get_post_meta( $product->get_id(), '_purchase_price', true ); // Get the custom field for purchase price

// Ensure both values are floats to prevent type errors
$purchase_price = floatval($purchase_price);
$product_price = floatval($product_price);

// Calculate the margin (product price - purchase price)
$margin = $product_price - $purchase_price;

// Check if the product is using the custom tax class
if ( 'custom-tax-class' === $product->get_tax_class() ) {
// Get the tax rate for the custom tax class (Assuming you're using the first tax rate)
$custom_tax_rate = get_tax_rate_for_class( 'custom-tax-class' );

// echo $custom_tax_rate;
// Calculate the new price by multiplying tax rate with the margin
$modified_price = $custom_tax_rate * $margin; // Adjust the price as price = tax * margin

// Update the price for the tax calculation
$taxes[] = $modified_price; // Add modified price into taxes array, ensuring it's an array
}
}

// Return the modified taxes array
return $taxes;
}
< /code>
Я попробовал этот код, но 1. Он не изменяет пользовательский налог, он изменяет стандартный налог и 2. Расчеты все неправильно. < /p>
< P> Пример: если цена продукта = 200 долл. США и цена покупки = 100 долл. США. $ Margin = 100 долл. США < /p>
Если налоговая ставка для пользовательского налогового класса = 10%, налог должен быть 10 долларов, но он отображается как 20 долларов США и изменяет налог на продукт со стандартным классом налогов, когда он должен изменить налог на продукт с помощью пользовательского налогового класса. < /p>
Обновление: я думаю я Необходимо отфильтровать цену $, используемая в налоговом расчете, а не изменять переменную налогов $
Это похоже на правильный крюк, но, возможно, мне нужно использовать woocommerce_before_calculate_totals

Подробнее здесь: https://stackoverflow.com/questions/794 ... -tax-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»