Исключение родительского продукта из расчета

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

Приведенный ниже код удаляет родительский продукт из скидки, но если я добавлю в корзину еще одну группу, он пропустит только первого родителя, а не вновь добавленного родителя.

Как я могу проверить $ buy_together_id и убедиться, что только первый из каждого продукта с уникальным идентификатором не включен в расчет скидки?

Моим последним дополнением к коду для решения этой проблемы являются оба случая if ($ k! = 0), но опять же это проверка только для первого родителя, а не для всех родителей.

Спасибо,

Sergio

<?php

global $config, $current_area;

if ($current_area != 'C' || !function_exists('func_bt_distribute_discount')){
return;
}

$discount_to_add = 0;
$group_discounts = array();

$bts_in_cart = array();
foreach ($products as $k => $v){
if ($k != 0) {
if ($v['buy_together_id']){
foreach ($v['buy_together_id'] as $gid){
$bts_in_cart[$gid][] = $v['productid'];
}
}
}
}

// Go through each product and calculate discount to be applied. //

foreach ($products as $k => $v){

if ($k != 0) {

if ($v['buy_together_id']){

foreach ($v['buy_together_id'] as $buy_together_id){

$_discount = 0;

if (!isset($GLOBALS['group_bt_discounts'][$buy_together_id])){
$GLOBALS['group_bt_discounts'][$buy_together_id] = func_query_first('SELECT * FROM xcart_buy_together_groups
WHERE groupid='.intval($buy_together_id));
}

$g_discount = $GLOBALS['group_bt_discounts'][$buy_together_id];
$price = defined('BT_ADD_TAXES') && BT_ADD_TAXES && $v['taxed_price'] ? $v['taxed_price'] : $v['price'];

// Discount //
if ($g_discount['discount']){
if ($g_discount['discount_type'] == 'P'){
$_discount = ($price / 100) * $g_discount['discount'];
} else {
$_discount = $g_discount['discount']/count($bts_in_cart[$buy_together_id]);
}
}

if ($_discount > 0){

/* Add to discount for the quantity */
if ($config['Buy_Together']['bt_apply_to_all'] == 'Y'){
$_discount *= $v['amount'];
}

// Change the product discount //
$products[$k] = func_bt_distribute_discount($products[$k], $_discount);

}

/* Cumulative total */
$discount_to_add += $_discount;
}
}
}

}

$return['products'] = $products;
$return['discount'] = $discount+$discount_to_add;
$return['discount_orig'] = $discount+$discount_to_add;
?>

0

Решение

Вы можете попытаться добавить флаг к родительским продуктам, и это позволит использовать более надежное условие в цикле.

foreach ($products as $k => $v){
if ($k != 0) {
// ......
}
}

а не если ($ k! = 0).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]