2016-05-27 12 views
0

いくつかの計算に対処するいくつかの問題があります。私は製品ページを持っており、その製品ページには、割引価格でグループとして購入できる関連製品があります。私はすべてが機能していますが、計算/割引率から親製品を除外する問題があります。計算の親製品を省略します。

以下のコードは、親prodを割引から削除していますが、別のグループをカートに追加すると、最初に親を削除し、新しく追加した親は削除しません。

$ buy_together_idを確認し、一意のIDを持つ各製品の最初のものだけを確認する方法は、割引計算から除外されますか?

この問題に取り組むためにコードに最近追加されたのは、if($ k!= 0)の両方のインスタンスですが、最初の親だけですべての親ではありません。

はあなたが親製品にフラグを追加しようとすることができ、それはではなく、ループ

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

でより信頼性の高い状態を使用することができるようになる

セルジオ

<?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

これを解決するために必要な情報が不足しています。 – cmorrissey

+0

@cmorrisseyこれはX-Cartのプラグインのファイル部分です。あなたが必要とする他のデータ/情報は本当にわかりません。私はプラグインの売り手に連絡し、彼は変更を加えることはできないと言ったが、変更するファイルは上記のものだった。 – Sergio

+0

あなたの質問にこれらのタグを付ける!プラグインなどの名前を付けてください。 – cmorrissey

答えて

0

をありがとうif($ k!= 0)。

+0

あなたの例と私が含まれているものの違いを私は確信していません。ありがとうbtw。 – Sergio

+0

違いはありません。あなたの例のコードの一部です: 私の指摘は、親製品を示す製品情報に追加のフラグを追加することができるということです。製品アレイからforeach ($ k => $ vという$ products)if($ k!= 0)以外の条件を使うことができます。 modのコードがないので、より正確な指示をするのは難しいです。 – Tony

関連する問題