0 Пользователей и 1 Гость просматривают эту тему.
  • 41 Ответов
  • 19321 Просмотров
*

Nemo31

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Давно пытаюсь сделать так, чтобы при оформлении заказа покупателю назначалась скидка, если сумма заказа превысила определенную сумму. Вот сегодня наткнулся на страничку http://alexrett.net.ru/page/sistema-skidok , где описывается как это реализовать.  Вродебы все просто - нужно внести только изменения в файл basket.php из папки administrator/components/com_virtuemart/html/.

Автор предлагает создать условие, которое применительно к моему случаю будет выглядеть так:
Код
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
 }
 else {
                          $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
      }

  }
   }

А в конце файла  перед

Код
/* Input Field for the Coupon Code */

вставить

Код
echo ($disk);

Я сделал все, как описывал автор (файл приколот к сообщению, правда, он с расширением txt, т.к. с php расширением форум не дает присоединить) и в результате при заходе в корзину для оформления заказа у меня появилось сообщение о предоставленной скидке и пресчиталась, с учетом этой скидки, сумма заказа:



Но после перехода по кнопке "Оформить заказ", в открывшемся окне результирующая сумма заказа опять показана без учета скидки:



И заказ, соответственно, формируется без учета скидки. И в связи с этим огромная просьба к людям разбирающимся в логике работы VirtueMart подскажите, пожалуйста, где нужно копать и что искать. Сам уже мозг сломал, нехватает моих скромных познаний в PHP и в устройстве самого скрипта магазина.



[вложение удалено Администратором]
« Последнее редактирование: 15.09.2009, 18:13:47 от Nemo31 »
*

Nemo31

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Блин, эту проблему победил. Нужно было прописать условие формирования скидки еще и в файл ro_basket.php, примерно в тоже место кода, что и в файле basket.php. Но, к сожалению, вылезла еще проблема. В письме отправляемом покупателю и продовцу указывается общая сумма заказа опять же без скидки. И в администрировании магазина, в разделе заказов, для этого заказа скидка опять же не учитывается.

Просьба все та же -  помогите понять, что еще нужно поменять, чтобы заработало. Самое обидное, что все так близко и вроде уже получилось.
*

Nemo31

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Все решил все проблемы. Все отлично работает. Заказчик доволен.
*

dezzor

  • Захожу иногда
  • 102
  • 10 / 0
  • Flahost.ru - доступный хостинг
не мог бы подробно описать как решил проблему и в каких файлах что менял?
*

Nemo31

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Код
В файле administrator/components/com_virtuemart/html/ basket.php примерно в строке 224 вставляется код:
// SHOW TAX
$tax_display = '';
if (!empty($_REQUEST['ship_to_info_id']) || ps_checkout::tax_based_on_vendor_address() ) {

$show_tax = true;

if ($weight_total != 0 or TAX_VIRTUAL=='1') {
$order_taxable = $ps_checkout->calc_order_taxable($vars);
$tax_total = $ps_checkout->calc_order_tax($order_taxable, $vars);
} else {
$tax_total = 0;
}
if( $auth['show_price_including_tax']) {
$tax_total *= $discount_factor;
}
$tax_total += $shipping_tax;
$tax_total = round( $tax_total, 5 );
$tax_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($tax_total);

$tax_display .= ps_checkout::show_tax_details( $order_tax_details );
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
/* COUPON DISCOUNT */
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']=="1" && PAYMENT_DISCOUNT_BEFORE != '1') {
$discount_after=true;
$total -= $_SESSION['coupon_discount'];
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}

а в строку 305  вставляется код:

echo '<font color="red" size="4">'.$disk.'</font>';
/* Input Field for the Coupon Code */
if( PSHOP_COUPONS_ENABLE=='1'

В файл administrator/components/com_virtuemart/html/ ro_basket.php примерно в строку 242 вставляется код:
>_('PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT');
}
else {
$discount_word = $VM_LANG->_('PHPSHOP_FEE');
}
$total -= $payment_discount;
$payment_discount_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($payment_discount-($payment_discount*2));
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
// COUPON DISCOUNT
$coupon_display = '';
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']==true ) {
$total -= $_SESSION['coupon_discount'];
$coupon_discount_after = true;
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}
}
 а в строку 323 вставляется код:
else {
$basket_html = $tpl->fetch( 'basket/ro_basket_b2b.html.php');
}

}
echo '<font color="red" size="4">'.$disk.'</font>';
?>

В файл /administrator/components/com_virtuemart/classes/ps_checkout.php примерно в строке 1274 вставляется код:
/* sets _subtotal */

$totals['order_subtotal'] = $tmp_subtotal = $this->calc_order_subtotal($d);
if (($tmp_subtotal < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($tmp_subtotal >= 15000) && ($tmp_subtotal != 30000) && ($tmp_subtotal < 30000)) {
        $procent = 5;
        $totals2 = ($procent*$tmp_subtotal)/100;
        $tmp_subtotal = $tmp_subtotal - $totals2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($tmp_subtotal >= 30000) && ($tmp_subtotal != 50000) && ($tmp_subtotal < 50000)) {
               $procent = 10;
              $totals2 = ($procent*$tmp_subtotal)/100;
              $tmp_subtotal = $tmp_subtotal - $totals2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $totals2 = ($procent*$tmp_subtotal)/100;
                      $tmp_subtotal = $tmp_subtotal - $totals2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
$totals['order_taxable'] = $this->calc_order_taxable($d);

if( !empty($d['payment_method_id'])) {
$totals['payment_discount'] = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $totals['order_subtotal']);
} else {
$totals['payment_discount'] = $d['payment_discount'] = 0.00;
}

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$totals['coupon_discount'] = floatval($_SESSION['coupon_discount']);
}
else {
$totals['coupon_discount'] = 0.00;
}

В файле /components/com_virtuemart/themes/default/templates/order_emails/ confirmation_email.tpl.php примерно в строке 240 код видоизменяется следующим образом:

<tr class="Stil1">
          <td colspan=4 align=right><b><font color="red" size="4"><?php echo $VM_LANG->_('PHPSHOP_CART_TOTAL').": " ?></font></b></td>
          <td><font color="red" size="4"><?php echo $order_total ?></font></td> <td><?php echo '<font color="red" size="4">С учетом скидки за большую сумму заказа</font>'?></td>
        </tr>

удаляем в строке 48 код:
<tr class="Stil1">
    <td><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_STATUS')?>:</td><td><?php echo $order_status ?></td>
  </tr>
удаляем из строки 220 код:
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?> :</td>
          <td><?php echo $order_tax ?></td>
        </tr>
и код
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_SHIPPING')?> :</td>
          <td><?php echo $order_shipping ?></td>
        </tr>

в файле /htdocs/components/com_virtuemart/themes/default/templates/basket/ basket_b2b.html.php в строке 58 удаляем код:
<tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td colspan="3" align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 26 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?> / <?php echo $VM_LANG->_('PHPSHOP_CART_ACTION')?></th>
<th>Суммарная стомость</th>
  </tr>

в файле htdocs/components/com_virtuemart/themes/default/templates/ro_basket_b2b.html.php.php в строке 63 удаляем код:
  <tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 25 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?></th>
<th>Суммарная стомость</th>
  </tr>
В файле /administrator/components/com_virtuemart/languages/common/russian 2.php в строке 120 вставляем код:
'PHPSHOP_ORDER_PRINT_TOTAL' => 'Итого с учетом скидки',

в строке 53:
'PHPSHOP_CART_SUBTOTAL' => 'Общая стоимость заказа',

Сделал все по Вашей инструкции все проходит нормально вот только письмо все равно приходит без скидок и в заказнин ложится тоже без скидки
версия VirtueMart 1.1.3 или это у меня только не получается ? 
*

Nemo31

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Не,  у меня все нормально приходит и в заказах тоже нормалек. Версия 1.1.3 на Joomla 1.5.14
*

elsov

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
А сумма доставки прибавляется со скидкой или нормально ? Просто делал немного по другому, как описано здесь http://joomla-support.ru/archive/index.php/t-7887.html
Вроде бы работает, но меня не устраивает то, что сумма заказа ещё не дошла до скидки и система не пишет, что предоставлена скидка, а на последнем этапе плюсует сумму заказа и доставки, и если эта сумма достигает скидочного числа, делает скидку. А меня это не устраивает.

Код
В файле administrator/components/com_virtuemart/html/ basket.php примерно в строке 224 вставляется код:
// SHOW TAX
$tax_display = '';
if (!empty($_REQUEST['ship_to_info_id']) || ps_checkout::tax_based_on_vendor_address() ) {

$show_tax = true;

if ($weight_total != 0 or TAX_VIRTUAL=='1') {
$order_taxable = $ps_checkout->calc_order_taxable($vars);
$tax_total = $ps_checkout->calc_order_tax($order_taxable, $vars);
} else {
$tax_total = 0;
}
if( $auth['show_price_including_tax']) {
$tax_total *= $discount_factor;
}
$tax_total += $shipping_tax;
$tax_total = round( $tax_total, 5 );
$tax_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($tax_total);

$tax_display .= ps_checkout::show_tax_details( $order_tax_details );
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
/* COUPON DISCOUNT */
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']=="1" && PAYMENT_DISCOUNT_BEFORE != '1') {
$discount_after=true;
$total -= $_SESSION['coupon_discount'];
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}

а в строку 305  вставляется код:

echo '<font color="red" size="4">'.$disk.'</font>';
/* Input Field for the Coupon Code */
if( PSHOP_COUPONS_ENABLE=='1'

В файл administrator/components/com_virtuemart/html/ ro_basket.php примерно в строку 242 вставляется код:
>_('PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT');
}
else {
$discount_word = $VM_LANG->_('PHPSHOP_FEE');
}
$total -= $payment_discount;
$payment_discount_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($payment_discount-($payment_discount*2));
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
// COUPON DISCOUNT
$coupon_display = '';
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']==true ) {
$total -= $_SESSION['coupon_discount'];
$coupon_discount_after = true;
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}
}
 а в строку 323 вставляется код:
else {
$basket_html = $tpl->fetch( 'basket/ro_basket_b2b.html.php');
}

}
echo '<font color="red" size="4">'.$disk.'</font>';
?>

В файл /administrator/components/com_virtuemart/classes/ps_checkout.php примерно в строке 1274 вставляется код:
/* sets _subtotal */

$totals['order_subtotal'] = $tmp_subtotal = $this->calc_order_subtotal($d);
if (($tmp_subtotal < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($tmp_subtotal >= 15000) && ($tmp_subtotal != 30000) && ($tmp_subtotal < 30000)) {
        $procent = 5;
        $totals2 = ($procent*$tmp_subtotal)/100;
        $tmp_subtotal = $tmp_subtotal - $totals2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($tmp_subtotal >= 30000) && ($tmp_subtotal != 50000) && ($tmp_subtotal < 50000)) {
               $procent = 10;
              $totals2 = ($procent*$tmp_subtotal)/100;
              $tmp_subtotal = $tmp_subtotal - $totals2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $totals2 = ($procent*$tmp_subtotal)/100;
                      $tmp_subtotal = $tmp_subtotal - $totals2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
$totals['order_taxable'] = $this->calc_order_taxable($d);

if( !empty($d['payment_method_id'])) {
$totals['payment_discount'] = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $totals['order_subtotal']);
} else {
$totals['payment_discount'] = $d['payment_discount'] = 0.00;
}

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$totals['coupon_discount'] = floatval($_SESSION['coupon_discount']);
}
else {
$totals['coupon_discount'] = 0.00;
}

В файле /components/com_virtuemart/themes/default/templates/order_emails/ confirmation_email.tpl.php примерно в строке 240 код видоизменяется следующим образом:

<tr class="Stil1">
          <td colspan=4 align=right><b><font color="red" size="4"><?php echo $VM_LANG->_('PHPSHOP_CART_TOTAL').": " ?></font></b></td>
          <td><font color="red" size="4"><?php echo $order_total ?></font></td> <td><?php echo '<font color="red" size="4">С учетом скидки за большую сумму заказа</font>'?></td>
        </tr>

удаляем в строке 48 код:
<tr class="Stil1">
    <td><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_STATUS')?>:</td><td><?php echo $order_status ?></td>
  </tr>
удаляем из строки 220 код:
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?> :</td>
          <td><?php echo $order_tax ?></td>
        </tr>
и код
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_SHIPPING')?> :</td>
          <td><?php echo $order_shipping ?></td>
        </tr>

в файле /htdocs/components/com_virtuemart/themes/default/templates/basket/ basket_b2b.html.php в строке 58 удаляем код:
<tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td colspan="3" align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 26 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?> / <?php echo $VM_LANG->_('PHPSHOP_CART_ACTION')?></th>
<th>Суммарная стомость</th>
  </tr>

в файле htdocs/components/com_virtuemart/themes/default/templates/ro_basket_b2b.html.php.php в строке 63 удаляем код:
  <tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 25 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?></th>
<th>Суммарная стомость</th>
  </tr>
В файле /administrator/components/com_virtuemart/languages/common/russian 2.php в строке 120 вставляем код:
'PHPSHOP_ORDER_PRINT_TOTAL' => 'Итого с учетом скидки',

в строке 53:
'PHPSHOP_CART_SUBTOTAL' => 'Общая стоимость заказа',

Спасибо, все получилось, но вот как бы дописать данный код чтобы скидки действовали только для покупателей которые относятся к группе -default-.
Т.е. если на сайт заходит клиент (допустим который отнесен к группе "Оптовики"), то эти скидки (от суммы заказа) для него не действуют.
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
Не,  у меня все нормально приходит и в заказах тоже нормалек. Версия 1.1.3 на Joomla 1.5.14

а можете свои файлы выложить?
все сделал, но даже надпись о скидке не появилась
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
Код
В файле administrator/components/com_virtuemart/html/ basket.php примерно в строке 224 вставляется код:
// SHOW TAX
$tax_display = '';
if (!empty($_REQUEST['ship_to_info_id']) || ps_checkout::tax_based_on_vendor_address() ) {

$show_tax = true;

if ($weight_total != 0 or TAX_VIRTUAL=='1') {
$order_taxable = $ps_checkout->calc_order_taxable($vars);
$tax_total = $ps_checkout->calc_order_tax($order_taxable, $vars);
} else {
$tax_total = 0;
}
if( $auth['show_price_including_tax']) {
$tax_total *= $discount_factor;
}
$tax_total += $shipping_tax;
$tax_total = round( $tax_total, 5 );
$tax_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($tax_total);

$tax_display .= ps_checkout::show_tax_details( $order_tax_details );
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
/* COUPON DISCOUNT */
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']=="1" && PAYMENT_DISCOUNT_BEFORE != '1') {
$discount_after=true;
$total -= $_SESSION['coupon_discount'];
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}

а в строку 305  вставляется код:

echo '<font color="red" size="4">'.$disk.'</font>';
/* Input Field for the Coupon Code */
if( PSHOP_COUPONS_ENABLE=='1'

В файл administrator/components/com_virtuemart/html/ ro_basket.php примерно в строку 242 вставляется код:
>_('PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT');
}
else {
$discount_word = $VM_LANG->_('PHPSHOP_FEE');
}
$total -= $payment_discount;
$payment_discount_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue($payment_discount-($payment_discount*2));
}
if (($total < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($total >= 15000) && ($total != 30000) && ($total < 30000)) {
        $procent = 5;
        $total2 = ($procent*$total)/100;
        $total = $total - $total2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($total >= 30000) && ($total != 50000) && ($total < 50000)) {
               $procent = 10;
              $total2 = ($procent*$total)/100;
              $total = $total - $total2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $total2 = ($procent*$total)/100;
                      $total = $total - $total2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
// COUPON DISCOUNT
$coupon_display = '';
if( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']==true ) {
$total -= $_SESSION['coupon_discount'];
$coupon_discount_after = true;
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue( $_SESSION['coupon_discount'] );
}
}
 а в строку 323 вставляется код:
else {
$basket_html = $tpl->fetch( 'basket/ro_basket_b2b.html.php');
}

}
echo '<font color="red" size="4">'.$disk.'</font>';
?>

В файл /administrator/components/com_virtuemart/classes/ps_checkout.php примерно в строке 1274 вставляется код:
/* sets _subtotal */

$totals['order_subtotal'] = $tmp_subtotal = $this->calc_order_subtotal($d);
if (($tmp_subtotal < 15000)) {
$disk = 'Скидка не досупна';}
else {
        if (($tmp_subtotal >= 15000) && ($tmp_subtotal != 30000) && ($tmp_subtotal < 30000)) {
        $procent = 5;
        $totals2 = ($procent*$tmp_subtotal)/100;
        $tmp_subtotal = $tmp_subtotal - $totals2;
        $disk = 'Сумма Вашего заказа превысила 15 т.р., поэтому Вам предоставляется скидка 5%. Спасибо за покупку!';
      }
        else {
                if (($tmp_subtotal >= 30000) && ($tmp_subtotal != 50000) && ($tmp_subtotal < 50000)) {
               $procent = 10;
              $totals2 = ($procent*$tmp_subtotal)/100;
              $tmp_subtotal = $tmp_subtotal - $totals2;
              $disk = 'Сумма Вашего заказа превысила 30 т.р., поэтому Вам предоставляется скидка 10%. Спасибо за покупку!';
  }
  else {
                           $procent = 20;
                     $totals2 = ($procent*$tmp_subtotal)/100;
                      $tmp_subtotal = $tmp_subtotal - $totals2;
                      $disk = 'Сумма Вашего заказа превысила 50 т.р., поэтому Вам предоставляется скидка 20%. Спасибо за покупку!';
 
       }

  }
   }
$totals['order_taxable'] = $this->calc_order_taxable($d);

if( !empty($d['payment_method_id'])) {
$totals['payment_discount'] = $d['payment_discount'] = $this->get_payment_discount($d['payment_method_id'], $totals['order_subtotal']);
} else {
$totals['payment_discount'] = $d['payment_discount'] = 0.00;
}

/* DISCOUNT HANDLING */
if( !empty($_SESSION['coupon_discount']) ) {
$totals['coupon_discount'] = floatval($_SESSION['coupon_discount']);
}
else {
$totals['coupon_discount'] = 0.00;
}

В файле /components/com_virtuemart/themes/default/templates/order_emails/ confirmation_email.tpl.php примерно в строке 240 код видоизменяется следующим образом:

<tr class="Stil1">
          <td colspan=4 align=right><b><font color="red" size="4"><?php echo $VM_LANG->_('PHPSHOP_CART_TOTAL').": " ?></font></b></td>
          <td><font color="red" size="4"><?php echo $order_total ?></font></td> <td><?php echo '<font color="red" size="4">С учетом скидки за большую сумму заказа</font>'?></td>
        </tr>

удаляем в строке 48 код:
<tr class="Stil1">
    <td><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_STATUS')?>:</td><td><?php echo $order_status ?></td>
  </tr>
удаляем из строки 220 код:
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?> :</td>
          <td><?php echo $order_tax ?></td>
        </tr>
и код
<tr class="Stil1">
          <td colspan=4 align=right><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_SHIPPING')?> :</td>
          <td><?php echo $order_shipping ?></td>
        </tr>

в файле /htdocs/components/com_virtuemart/themes/default/templates/basket/ basket_b2b.html.php в строке 58 удаляем код:
<tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td colspan="3" align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 26 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?> / <?php echo $VM_LANG->_('PHPSHOP_CART_ACTION')?></th>
<th>Суммарная стомость</th>
  </tr>

в файле htdocs/components/com_virtuemart/themes/default/templates/ro_basket_b2b.html.php.php в строке 63 удаляем код:
  <tr class="sectiontableentry1">
        <td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX')?>: </td>
        <td align="right"><?php echo $tax_display ?></td>
  </tr>

а в строке 25 заменяем на:
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY')?></th>
<th>Суммарная стомость</th>
  </tr>
В файле /administrator/components/com_virtuemart/languages/common/russian 2.php в строке 120 вставляем код:
'PHPSHOP_ORDER_PRINT_TOTAL' => 'Итого с учетом скидки',

в строке 53:
'PHPSHOP_CART_SUBTOTAL' => 'Общая стоимость заказа',

скажите а как переместить эту надпись о скидках, та которая красным цветом написана ниже скажем под заказ?
*

Petrvictorovich

  • Новичок
  • 6
  • 0 / 0
Коллеги!
Давайте продолжим тему!

Предложенный способ РАБОТАЕТ (Nemo31 - спасибо!), но его нужно дорабатывать.

Так, например, в письме клиенту "confirmation_email.tpl.php" В ЛЮБОМ случае, выводится "С учетом скидки за большую сумму заказа".
Даже если я куплю на меньшую стоимость, чем минимальная сумма скидки, я всё равно увижу эту надпись.

Я попробовал добавать условие:
Код
<!-- В файле: /components/com_virtuemart/themes/default/templates/order_emails/ confirmation_email.tpl.php -->

          <td colspan=4 align=right><b><?php echo $VM_LANG->_('PHPSHOP_CART_TOTAL').": " ?></b></td>
          <?php
          if ($order_subtotal > 5000) {
  ?>
          <td><font color="red" size="4"> <?php echo $order_total ?></font></td>
          <td><font color="red" size="2">С учётом скидки!</font></td>
          <?php
  }
  else { ?>
          <td><?php echo $order_total ?> БЕЗ!</td>
          <?php } ?>

Внимание - вопрос!
Почему это (код выше) не работает? 
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0
а можно добавить ссылку рядом с надписью ос скидками на старницу скидок и как это сделать?

есть $disk
но как добавить код не знаю
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
спасибо за идею! но письма пока придется отключить...

ещё предлагаю использовать другую формулу для скидки
не такую: $procent = 20;
               $total2 = ($procent*$total)/100;
               $total = $total - $total2;

а попроще:  $total = $total*0.8;
                

ещё хотел узнать как реализовать скидку от количества товара в корзине, кто знает?
    
« Последнее редактирование: 17.03.2010, 19:38:04 от skyscraper »
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
ещё косяк в админке, в заказах показывает обычные цены... в ручную что ли считать =)
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
ребят мож confirmation_email.tpl.php добъем?
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
есть модуль хороший итальянский, вот его описание:

Цитировать
Sconto sul totale dell'ordine PLUS

    * Активизация / дезактивация функциональности в единственном щелчке
    * Возможность многочисленной скидки на ценности имела обыкновение. Impostabili до максимума 6 ценностей имел обыкновение (в 100 ? он убавляет с 10 % до 200 ? 15 % и так далее и так далее)
    * Выбор типа скидки, если процентный или твердый (2 % или 2 ?)
    * Возможность выбирать, если делать сообщение типа видимым "тебе не хватает 2 ?, чтобы иметь 10 %-ную скидку"
    * Возможность исключать / включать расходы из отправки из скидки
    * Возможность выбирать тип клиента в котором продавать, если Распространители или Частные лица (для правильного расчета iva)
    * Многоязык (уже включенный итальянский язык и английский язык)
    * Скидка получена во всех step вагонетки после login пользователя
    * Скидка получена в копии приказа visualizzabile в администрации
    * Скидка получена в электронных почтах приказа, которые прибывают к пользователю и к администратору
    * Скидка получена в странице резюме приказ для пользователя

что поделаешь, ща куплю =)
« Последнее редактирование: 23.03.2010, 22:12:00 от skyscraper »

купил модуль, смотрю никому не интересно =)
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Ну так выкладывай, все тебе только рады будут!
Смотрю....
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
замутил у себя такую вещь:
1. разовые скидки от суммы заказа в корзине при помощи итальянского хака...
2. автоматические накопительные скидки при помощи этого хака

« Последнее редактирование: 30.03.2010, 01:48:52 от skyscraper »
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
skyscraper а вы решили проблему с хитро-умными описаними в хаке, чтоб получить большую скидку?
*

SolopoV

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
замутил у себя такую вещь:
1. разовые скидки от суммы заказа в корзине при помощи итальянского хака...
2. автоматические накопительные скидки при помощи этого хака



Позвольте спросить: скидки между собой не суммируются случайно?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Спасибо, все получилось, но вот как бы дописать данный код чтобы скидки действовали только для покупателей которые относятся к группе -default-.
Т.е. если на сайт заходит клиент (допустим который отнесен к группе "Оптовики"), то эти скидки (от суммы заказа) для него не действуют.

да. нужно сделать SQL запрос в базу данных (#__{vm}_shopper_vendor_xref), к какой группе пользователей относится клиент и прописать условия.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Позвольте спросить: скидки между собой не суммируются случайно?
нет. в каждый момент срабатывает только одна (действующая) скидка.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

SolopoV

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Нет, в итоге срабатывают обе скидки. Сначала, когда пользователь уже в категории выше чем по дефолту, и потом, когда набрал в корзину товаров больше определенной суммы. Так что использовать нужно какую-то одну (либо нашу http://www.eco-money.ru/forum/topic?id=10, либо итальянскую). Ибо можно только головную боль заработать.

Или переделывать, скорее, итальянскую версию, на предмет выщемления пользователей из группы выше default.
« Последнее редактирование: 24.11.2010, 13:32:51 от SolopoV »
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Такой простой вопрос есть, как надпись о предоставление скидки выводить в нужных местах?
А то на всех шагах в самом верху торчит.
*

SolopoV

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Такой простой вопрос есть, как надпись о предоставление скидки выводить в нужных местах?
А то на всех шагах в самом верху торчит.
Там, в скрипте убрать просто вывод этих слов. А вот как вывести - похоже из базы вытягивать надо.. но это гиморно..
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Там, в скрипте убрать просто вывод этих слов. А вот как вывести - похоже из базы вытягивать надо.. но это гиморно..
Убрать то это понятно. Вывел вместе с суммой скидки дописав условие
Код
<?php
if($subtotal_display >= 50000) {
echo '<tr class="sectiontableentry1"><td colspan="3" align="right">'.$VM_LANG->_('SKIDKA').'</td><td align="right"><strong>'.$total2.' руб</strong></td></tr>';}
elseif($subtotal_display < 20000){
echo '<tr class="sectiontableentry1"><td colspan="3" align="right">'.$VM_LANG->_('SKIDKA2').'</td><td align="right"><strong>'.$total2.' руб</strong></td></tr>';}
?>
плюс в файлах ro_basket.php и basket.php где на трехсотых строках, под $tpl->set_vars( Array( дописал 'total2' => $total2,

Теперь другой вопрос. Как вывести сумму скидки в письме?
Если на сайт, в корзине, выводится через $total2, то в письме надо выводить через totals2 которая используется в ps_checkout.php, правильно? не работает. Что надо сделать, чтобы сумма выводилась? Тоже где-то дополнительно прописать totals2 ?

спасибо за идею! но письма пока придется отключить...
             

ещё хотел узнать как реализовать скидку от количества товара в корзине, кто знает?
   
количества товара в корзине, кто знает?
    $vars["zone_qty"]   Это и есть количество... все остальное аналогично
*

kunev

  • Захожу иногда
  • 118
  • 0 / 0
блин никак не могу понять почему на ящик приходят письма с ценой без скидки, в файле confirmation_email.tpl.php всё исправил по примеру. Жумла 1.5.15 +Вирт 1.1.4
« Последнее редактирование: 14.03.2011, 17:54:04 от kunev »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться