Как вычесть отрицательную комиссию из общей/промежуточной суммы корзины, чтобы программно установить стоимость доставки Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как вычесть отрицательную комиссию из общей/промежуточной суммы корзины, чтобы программно установить стоимость доставки

Сообщение Anonymous »

Я пытаюсь вычесть отрицательную скидку за общую/промежуточную сумму корзины в корзине WooCommerce, чтобы установить цену доставки равной 0 при достижении общей/промежуточной суммы 750 исключая купоны и сборы.
Однако я сталкиваюсь с некоторыми проблемами, из-за которых моя отрицательная комиссия не учитывается при расчете, независимо от того, использую ли я промежуточный или общий итог для своей логики.
Я пробовал использовать практически любые корзины->get (получатели корзины), и независимо от того, какие из них я использую или комбинирую, я просто не могу заставить свой код вычесть отрицательную комиссию. из общего/промежуточного итога, чтобы получить новый итог.
Мой код работает при использовании купонов, а также для итогов/промежуточного итога корзины без отрицательной комиссии, как вы можете видеть в примерах ниже. . В моем коде я использую промежуточную сумму для вычитания комиссий и скидок, но я также пытался использовать общую сумму, но безрезультатно.
Мой код для установки стоимости доставки равной 0 при достижении суммы X без учета скидки (купона или комиссии):

Код: Выделить всё

add_filter('woocommerce_package_rates', 'null_shipping_costs_conditionally', 10, 2 );
function null_shipping_costs_conditionally( $rates, $package ){
// Shipping method to change price
$methodprice_key_ids = array('flat_rate:4');
// Initialising variables for new shipping price
$found = false;
$min_amount = 750; // threshold

// Calculate Subtotal incl tax
$subtotal_excl_tax = WC()->cart->get_subtotal();
$subtotal_tax = WC()->cart->get_subtotal_tax();
$subtotal_incl_tax = $subtotal_excl_tax + $subtotal_tax;

// Calculate Discount Totals incl tax
$discount_total_excl_tax = WC()->cart->get_cart_discount_total();
$discount_tax_total = WC()->cart->get_cart_discount_tax_total();
$discount_incl_tax = $discount_total_excl_tax + $discount_tax_total;

// Calculate Fee Totals incl tax
$fee_total_excl_tax = WC()->cart->get_fee_total();
$fee_tax_total = WC()->cart->get_fee_tax();
$fee_incl_tax = $fee_total_excl_tax + $fee_tax_total;

// The new cart total value minus fee and coupons
$cart_total = $subtotal_incl_tax - $fee_incl_tax - $discount_incl_tax;

// Check if cart total is bigger than or equal to minimum threshold
if( $cart_total >= $min_amount) {
$found = true;
}
if( $found ) {
foreach( $rates as $rate_key => $rate ) {
// If shipping rate found then change shipping rate price.
if( in_array($rate_key, $methodprice_key_ids) ) {
// Set the rate cost to zero
$rates[$rate_key]->cost = 0;
// Append rate label title (free)
$rates[$rate_key]->label .= ' ' . __( '- gratis', 'woocommerce' );
// Taxes rate cost (if enabled)
$taxes = array();
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $rates[$rate_key]->taxes[$key] > 0 ){
$taxes[$key] = 0;
$has_taxes = true;
}
else {
$has_taxes = false;
}
}
if( isset($has_taxes) && $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
}
return $rates;
}
Как установить скидку:

Код: Выделить всё

// Discount percentage based on item count
if ($items_count >= 6) {
$percent   = 15; // Discount percentage
$discount -= $items_subtotal * $percent / 100; // Calculation
$cart->add_fee( __('Mix & Match rabat', 'woocommerce') . " - {$percent}%", $discount );
}
  • Полный код скидки можно найти в этой теме SO
Пример 1. Корзина без купонов и комиссий. Код работает:
  • Вот пример, где я иметь товары в моей корзине без применяемых скидок и комиссий. Как вы можете видеть, стоимость доставки устанавливается равной 0 при превышении порогового значения.
Изображение


Пример 2. Корзина с купоном. Код работает:
  • Вот пример, когда в моей корзине есть товары с примененной скидкой по купону. Как вы можете видеть, стоимость доставки равна 0 при превышении порогового значения, исключая скидки по купонам.

Изображение


Пример 3. Корзина с комиссией. Код не указан. Не работает:
  • Вот пример: в моей корзине есть товары, к которым применяется скидка. Как вы можете видеть, для стоимости доставки установлено значение 0, хотя общая сумма без учета скидок ниже порогового значения.
Изображение
.

Пример 4 – Корзина с комиссией и купон — код не работает:
  • Вот пример, где в моей корзине есть товары с примененной скидкой и купонами. Как вы можете видеть, для стоимости доставки установлено значение 0, хотя общая сумма без учета скидок ниже порогового значения.
Изображение


Чего я пытаюсь достичь:
  • Я ищу способ установить стоимость доставки равной 0, когда общая сумма корзины равна или превышает сумму порог 750 без учета скидок (комиссии и купона). Все, включая налоги.
Возможно, существует альтернативное решение для установки скидки, не предполагающее отрицательную комиссию. Или, может быть, я не обращаю внимания на что-то.

Список литературы:
  • Как получить сумму комиссий за доставку и способ оплаты в WooCommerce
  • Добавьте рассчитанную комиссию на основе общей суммы после скидок в WooCommerce
  • В общей сумме корзины WooCommerce не отображаются дополнительные комиссии, добавленные с помощью add_fee().
  • Корзина скидок WooCommerce без использования метода add_fee.
  • Вычитание промежуточной суммы корзины из общей суммы корзины. проблема с ошибкой в ​​WooCommerce
  • Пользовательский динамический расчет стоимости доставки в WooCommerce
  • Программная установка пользовательских тарифов на доставку в WooCommerce 3
  • Получите комиссию за заказ и суммы скидок для расчета общей суммы заказа в WooCommerce


Подробнее здесь: https://stackoverflow.com/questions/788 ... rates-prog
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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