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

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

Сообщение Anonymous »

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

if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
// Get the global cart
$cart = WC()->cart;
if (!$cart) return $taxes; // Ensure cart exists

// Loop through each cart item
foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
$product = $cart_item['data'];

// Check if the product uses the custom tax class
if ( 'custom-tax-class' === $product->get_tax_class() ) {
// Get the purchase price (replace '_purchase_price' with actual meta key)
$purchase_price = 100;

// Ensure product price is a float
$product_price = floatval( $product->get_price() );

$quantity = intval($cart_item['quantity']);

// Calculate the margin (product price - purchase price)
$margin = max(($product_price - $purchase_price) * $quantity, 0); // Ensure margin is not negative

// Apply tax rates to margin instead of the product price
foreach ( $rates as $rate_id => $rate ) {

// Loop through each cart ite

$rate_percentage = floatval( $rate['rate']); // Convert rate to decimal
$modified_price = round( $margin * $rate_percentage, 2 ); // Apply margin-based tax calculation

// Set modified tax amount
$taxes[$rate_id] = $modified_price;
}
}
}

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

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

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

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

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

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

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