shows the percentage discount


  • Default avatar
    ostebe    
     3 years ago  last edited 4 days ago
    0

    Try the free version on my website to find an answer to the next question:


    is possible that after applying coupon I can see in the shopping cart and the percentage that is applied to the final price?


    example:


    I have a coupon for 50% percentage discount


    an order of $ 100

    Product prices result 100

    50

    $ 50 and 50% (and adding a label here - like "discount")

    Thank you

    Ostebe

  • Your avatar
    seyi    
     3 years ago
    0

    Hello,

    If using Virtuemart 2, you would have to edit the template
    www/components/com_virtuemart/views/cart/tmpl/default_pricelist.php
    or
    www/templates/[your_template]/html/com_virtuemart/cart/default_pricelist.php

    For Virtuemart 1, you would have to edit your virtuemart template,
    www/components/com_virtuemart/themes/[your theme]/templates/basket/basket_b2c.html.php

  • Default avatar
    ostebe    
     3 years ago
    0

    I resumed this project, but please be more specific in the explanation. I use Virtuemart 2 and do not know exactly what to change in ...views/cart/tmpl/default_pricelist.php

    Thanks

    ostebe
  • Your avatar
    seyi    
     3 years ago
    0

    Hello,

    For awocoupon 2, the discount for each line item in the cart is stored in a session variable, and here is how it can be accessed within your template using Virtuemart as an example
    <?php
        $session 
    JFactory::getSession();
        
    $coupon_row $session->get('coupon''''awocoupon');
        if(!empty(
    $coupon_row)) { 
            
    $coupon_row unserialize($coupon_row); 
            
    $track_salesprice 0;
            foreach(
    $this->cart->products as $pkey=>$prow) {
                
                foreach(
    $coupon_row['cart_items'] as $item) {
                    if(
    $item['cartpricekey'] == $pkey) {
                        
    //edit the prices
                        
    $this->cart->pricesUnformatted[$pkey]['discountAmount'] += $item['totaldiscount']/$prow->quantity;
                        
    $this->cart->pricesUnformatted[$pkey]['salesPrice'] = $this->cart->pricesUnformatted[$pkey]['basePrice']-$this->cart->pricesUnformatted[$pkey]['discountAmount'];
                        
    $track_salesprice += $this->cart->pricesUnformatted[$pkey]['salesPrice']*$prow->quantity;
                        break;
                    }
                }
                
            }
            
    $this->cart->pricesUnformatted['billDiscountAmount'] += (float)$this->cart->pricesUnformatted['salesPriceCoupon'];
            
    $this->cart->pricesUnformatted['salesPrice'] = $track_salesprice;
        }
    ?>


    This would be called before the foreach loop that displays the cart. One other note, this only changes the totals in the cart. Once the order has been saved it will revert back to show the discount on a separate line.
  • Default avatar
    ostebe    
     3 years ago
    0

    Thanks for the reply, but do not know in which file you need to copy the new code. I tried in www/components/com_virtuemart/views/cart/tmpl/default_pricelist.php but it did not work.
  • Your avatar
    seyi    
     3 years ago
    0

    it might be in your template
    templates/[your template]/html/com_virtuemart/cart/default_pricelist.php
  • Default avatar
    ostebe    
     3 years ago  last edited 3 days ago
    0

    ....I'm really sorry, but it does not work...

    i crete the folder templates/[your template]/html/com_virtuemart/cart/default_pricelist.php... but nothing


    this is my code:


    <?php defined('_JEXEC') or die('Restricted access');
    /**
     *
     * Layout for the shopping cart
     *
     * @package    VirtueMart
     * @subpackage Cart
     * @author Max Milbers
     * @author Patrick Kohl
     * @link http://www.virtuemart.net
     * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
     * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
     * VirtueMart is free software. This version may have been modified pursuant
     * to the GNU General Public License, and as distributed it includes or
     * is derivative of works licensed under the GNU General Public License or
     * other free or open source software licenses.
     *
     */

    // Check to ensure this file is included in Joomla!

    // jimport( 'joomla.application.component.view');
    // $viewEscape = new JView();
    // $viewEscape->setEscape('htmlspecialchars');


    ?>
    <div class="billto-shipto">
        <div class="width50 floatleft">

            <span><span class="vmicon vm2-billto-icon"></span>
            <?php echo JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL'); ?></span>
            <?php // Output Bill To Address ?>
            <div class="output-billto">
            <?php

            
    foreach($this->cart->BTaddress['fields'] as $item){
                if(!empty($item['value'])){
                    if($item['name']==='agreed'){
                        $item['value'] =  ($item['value']===0) ? JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO'):JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES');
                    }
                    ?><!-- span class="titles"><?php echo $item['title'?></span -->
                        <span class="values vm2<?php echo '-'.$item['name'?>" ><?php echo $this->escape($item['value']) ?></span>
                    <?php if ($item['name'] != 'title' and $item['name'] != 'first_name' and $item['name'] != 'middle_name' and $item['name'] != 'zip') { ?>
                        <br class="clear" />
                    <?php
                    
    }
                }
            ?>
            <div class="clear"></div>
            </div>

            <a class="details" href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=BT',$this->useXHTML,$this->useSSL?>">
            <?php echo JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); ?>
            </a>

            <input type="hidden" name="billto" value="<?php echo $this->cart->lists['billTo']; ?>"/>
        </div>

        <div class="width50 floatleft">

            <span><span class="vmicon vm2-shipto-icon"></span>
            <?php echo JText::_('COM_VIRTUEMART_USER_FORM_SHIPTO_LBL'); ?></span>
            <?php // Output Bill To Address ?>
            <div class="output-shipto">
            <?php
            
    if(empty($this->cart->STaddress['fields'])){
                echo JText::sprintf('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_EXPLAIN',JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL') );
            } else {
                if(!class_exists('VmHtml'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'html.php');
                echo JText::_('COM_VIRTUEMART_USER_FORM_ST_SAME_AS_BT'). VmHtml::checkbox('STsameAsBT',$this->cart->STsameAsBT).'
    '
    ;
                foreach($this->cart->STaddress['fields'] as $item){
                    if(!empty($item['value'])){ ?>
                        <!-- <span class="titles"><?php echo $item['title'?></span> -->
                        <?php
                        
    if ($item['name'] == 'first_name' || $item['name'] == 'middle_name' || $item['name'] == 'zip') { ?>
                            <span class="values<?php echo '-'.$item['name'?>" ><?php echo $this->escape($item['value']) ?></span>
                        <?php } else { ?>
                            <span class="values" ><?php echo $this->escape($item['value']) ?></span>
                            <br class="clear" />
                        <?php
                        
    }
                    }
                }
            }
             ?>
            <div class="clear"></div>
            </div>
            <?php if(!isset($this->cart->lists['current_id'])) $this->cart->lists['current_id'] = 0?>
            <a class="details" href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=user&task=editaddresscart&addrtype=ST&virtuemart_user_id[]='.$this->cart->lists['current_id'],$this->useXHTML,$this->useSSL?>">
            <?php echo JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); ?>
            </a>

        </div>

        <div class="clear"></div>
    </div>

    <fieldset>
        <table
            class="cart-summary"
            cellspacing="0"
            cellpadding="0"
            border="0"
            width="100%">
            <tr>
                <th align="left"><?php echo JText::_('COM_VIRTUEMART_CART_NAME'?></th>
                <th align="left"><?php echo JText::_('COM_VIRTUEMART_CART_SKU'?></th>
                <th
                    align="center"
                    width="60px"><?php echo JText::_('COM_VIRTUEMART_CART_PRICE'?></th>
                <th
                    align="right"
                    width="140px"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'?>
                    / <?php echo JText::_('COM_VIRTUEMART_CART_ACTION'?></th>


                                            <?php if ( VmConfig::get('show_tax')) { ?>
                                    <th align="right" width="60px"><?php  echo "<span  class='priceColor2'>".JText::_('COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT') ?></th>
                    <?php ?>
                                    <th align="right" width="60px"><?php echo "<span  class='priceColor2'>".JText::_('COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT'?></th>
                    <th align="right" width="70px"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL'?></th>
                </tr>



            <?php
            $i
    =1;
    //         vmdebug('$this->cart->products',$this->cart->products);
            foreach( $this->cart->products as $pkey =>$prow ) { ?>
                <tr valign="top" class="sectiontableentry<?php echo $i ?>">
                    <td align="left" >
                        <?php if ( $prow->virtuemart_media_id) {  ?>
                            <span class="cart-images">
                             <?php
                             
    if(!empty($prow->image)) echo $prow->image->displayMediaThumb('',false);
                             ?>
                            </span>
                        <?php ?>
                        <?php echo JHTML::link($prow->url$prow->product_name).$prow->customfields?>

                    </td>
                    <td align="left" ><?php  echo $prow->product_sku ?></td>
                    <td align="center" >
                    <?php
    //                     vmdebug('$this->cart->pricesUnformatted[$pkey]',$this->cart->pricesUnformatted[$pkey]['priceBeforeTax']);
                        echo $this->currencyDisplay->createPriceDiv('basePrice',''$this->cart->pricesUnformatted[$pkey],false);
    //                     echo $prow->salesPrice ;
                        ?>
                    </td>
                    <td align="right" ><form action="<?php echo JRoute::_('index.php'); ?>" method="post" class="inline">
                    <input type="hidden" name="option" value="com_virtuemart" />
                    <input type="text" title="<?php echo  JText::_('COM_VIRTUEMART_CART_UPDATE'?>" class="inputbox" size="3" maxlength="4" name="quantity" value="<?php echo $prow->quantity ?>" />
                    <input type="hidden" name="view" value="cart" />
                    <input type="hidden" name="task" value="update" />
                    <input type="hidden" name="cart_virtuemart_product_id" value="<?php echo $prow->cart_item_id  ?>" />
                    <input type="submit" class="vmicon vm2-add_quantity_cart" name="update" title="<?php echo  JText::_('COM_VIRTUEMART_CART_UPDATE'?>" align="middle" value=" "/>
                  </form>
                        <a class="vmicon vm2-remove_from_cart" title="<?php echo JText::_('COM_VIRTUEMART_CART_DELETE'?>" align="middle" href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=cart&task=delete&cart_virtuemart_product_id='.$prow->cart_item_id  ?>"> </a>
                    </td>

                    <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"><?php echo "<span class='priceColor2'>".$this->currencyDisplay->createPriceDiv('taxAmount',''$this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity)."</span>" ?></td>
                                    <?php ?>
                    <td align="right"><?php echo "<span class='priceColor2'>".$this->currencyDisplay->createPriceDiv('discountAmount',''$this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity)."</span>" ?></td>
                    <td colspan="1" align="right">
                    <?php
                    
    if (VmConfig::get('checkout_show_origprice',1) && !empty($this->cart->pricesUnformatted[$pkey]['basePriceWithTax']) && $this->cart->pricesUnformatted[$pkey]['basePriceWithTax'] != $this->cart->pricesUnformatted[$pkey]['salesPrice'] ) {
                        echo '<span class="line-through">'.$this->currencyDisplay->createPriceDiv('basePriceWithTax',''$this->cart->pricesUnformatted[$pkey],true,false,$prow->quantity) .'</span>
    ;
                    }
                    echo $this->currencyDisplay->createPriceDiv('salesPrice',''$this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity?></td>
                </tr>
            <?php
                $i 
    1;
            ?>
            <!--Begin of SubTotal, Tax, Shipment, Coupon Discount and Total listing -->
                      <?php if ( VmConfig::get('show_tax')) { $colspan=3; } else { $colspan=2; } ?>
            <tr>
                <td colspan="4"> </td>

                <td colspan="<?php echo $colspan ?>"><hr /></td>
            </tr>
              <tr class="sectiontableentry1">
                <td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL'); ?></td>

                            <?php if ( VmConfig::get('show_tax')) { ?>
                <td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('taxAmount',''$this->cart->pricesUnformatted,false)."</span>" ?></td>
                            <?php ?>
                <td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('discountAmount',''$this->cart->pricesUnformatted,false)."</span>" ?></td>
                <td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPrice',''$this->cart->pricesUnformatted,false?></td>
              </tr>

                <?php
            
    if (VmConfig::get('coupons_enable')) {
            ?>
                <tr class="sectiontableentry2">
                    <td colspan="4" align="left">
                        <?php if(!empty($this->layoutName) && $this->layoutName=='default') {
                           // echo JHTML::_('link', JRoute::_('index.php?view=cart&task=edit_coupon',$this->useXHTML,$this->useSSL), JText::_('COM_VIRTUEMART_CART_EDIT_COUPON'));
                            echo $this->loadTemplate('coupon');
                        }
                    ?>

                    <?php if (!empty($this->cart->cartData['couponCode'])) { ?>
                         <?php
                            
    echo $this->cart->cartData['couponCode'] ;
                            echo $this->cart->cartData['couponDescr'] ? (' (' $this->cart->cartData['couponDescr'] . ')' ): '';
                            ?>

                    </td>
                        <?php
        $session 
    JFactory::getSession();
        $coupon_row $session->get('coupon''''awocoupon');
        if(!empty($coupon_row)) { 
            $coupon_row unserialize($coupon_row); 
            $track_salesprice 0;
            foreach($this->cart->products as $pkey=>$prow) {
                
                
    foreach($coupon_row['cart_items'] as $item) {
                    if($item['cartpricekey'] == $pkey) {
                        //edit the prices
                        $this->cart->pricesUnformatted[$pkey]['discountAmount'] += $item['totaldiscount']/$prow->quantity;
                        $this->cart->pricesUnformatted[$pkey]['salesPrice'] = $this->cart->pricesUnformatted[$pkey]['basePrice']-$this->cart->pricesUnformatted[$pkey]['discountAmount'];
                        $track_salesprice += $this->cart->pricesUnformatted[$pkey]['salesPrice']*$prow->quantity;
                        break;
                    }
                }
                
            
    }
            $this->cart->pricesUnformatted['billDiscountAmount'] += (float)$this->cart->pricesUnformatted['salesPriceCoupon'];
            $this->cart->pricesUnformatted['salesPrice'] = $track_salesprice;
        }
    ?>
                         <?php if ( VmConfig::get('show_tax')) { ?>
                        <td align="right"><?php echo $this->currencyDisplay->createPriceDiv('couponTax',''$this->cart->pricesUnformatted['couponTax'],false); ?> </td>
                         <?php ?>
                        <td align="right"> </td>
                        <td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPriceCoupon',''$this->cart->pricesUnformatted['salesPriceCoupon'],false); ?> </td>
                    <?php } else { ?>
                        <td colspan="6" align="left"> </td>
                    <?php }

                    ?>
                </tr>
            <?php ?>


            <?php
            
    foreach($this->cart->cartData['DBTaxRulesBill'] as $rule){ ?>
                <tr class="sectiontableentry<?php echo $i ?>">
                    <td colspan="4" align="right"><?php echo $rule['calc_name'?> </td>

                                       <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"> </td>
                                    <?php ?>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?></td>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
                </tr>
                <?php
                
    if($i$i=1; else $i=0;
            ?>

            <?php

            
    foreach($this->cart->cartData['taxRulesBill'] as $rule){ ?>
                <tr class="sectiontableentry<?php echo $i ?>">
                    <td colspan="4" align="right"><?php echo $rule['calc_name'?> </td>
                    <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
                     <?php ?>
                    <td align="right"><?php ?> </td>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
                </tr>
                <?php
                
    if($i$i=1; else $i=0;
            }

            foreach($this->cart->cartData['DATaxRulesBill'] as $rule){ ?>
                <tr class="sectiontableentry<?php echo $i ?>">
                    <td colspan="4" align="right"><?php echo   $rule['calc_name'?> </td>

                                         <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"> </td>

                                    <?php ?>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?>  </td>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff',''$this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
                </tr>
                <?php
                
    if($i$i=1; else $i=0;
            ?>


        <tr class="sectiontableentry1">
                        <?php if (!$this->cart->automaticSelectedShipment) { ?>

            <?php    /*    <td colspan="2" align="right"><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_SHIPPING'); ?> </td> */?>
                    <td colspan="4" align="left">
                    <?php echo $this->cart->cartData['shipmentName']; ?>
                        

                    <?php
                    
    if(!empty($this->layoutName) && $this->layoutName=='default' && !$this->cart->automaticSelectedShipment  )
                        echo JHTML::_('link'JRoute::_('index.php?view=cart&task=edit_shipment',$this->useXHTML,$this->useSSL), $this->select_shipment_text,'class=""');
                    else {
                        JText::_('COM_VIRTUEMART_CART_SHIPPING');
                    }
                    } else { ?>
                                    <td colspan="4" align="left">
                    <?php echo $this->cart->cartData['shipmentName']; ?>
                    </td>
                                     <?php ?>

                                         <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('shipmentTax',''$this->cart->pricesUnformatted['shipmentTax'],false)."</span>"?> </td>
                                    <?php ?>
                    <td></td>
                    <td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPriceShipment',''$this->cart->pricesUnformatted['salesPriceShipment'],false); ?> </td>
            </tr>

            <tr class="sectiontableentry1">
                              <?php if (!$this->cart->automaticSelectedPayment) { ?>

                    <td colspan="4" align="left">
                    <?php echo $this->cart->cartData['paymentName']; ?>
                         

                    <?php if(!empty($this->layoutName) && $this->layoutName=='default') echo JHTML::_('link'JRoute::_('index.php?view=cart&task=editpayment',$this->useXHTML,$this->useSSL), $this->select_payment_text,'class=""'); else JText::_('COM_VIRTUEMART_CART_PAYMENT'); ?> </td>

                    </td>
                             <?php } else { ?>
                                        <td colspan="4" align="left"><?php echo $this->cart->cartData['paymentName']; ?> </td>
                                     <?php ?>
                                         <?php if ( VmConfig::get('show_tax')) { ?>
                    <td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('paymentTax',''$this->cart->pricesUnformatted['paymentTax'],false)."</span>"?> </td>
                                    <?php ?>
                    <td align="right"><?php // Why is this commented? what is with payment discounts? echo "<span  class='priceColor2'>".$this->cart->pricesUnformatted['paymentDiscount']."</span>"; ?></td>
                    <td align="right"><?php  echo $this->currencyDisplay->createPriceDiv('salesPricePayment','', $this->cart->pricesUnformatted['salesPricePayment'],false); ?> </td>
                </tr>
              <tr>
                <td colspan="4"> </td>
                <td colspan="<?php echo $colspan ?>"><hr /></td>
              </tr>
              <tr class="sectiontableentry2">
                <td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL'?>: </td>

                            <?php if ( VmConfig::get('show_tax')) { ?>
                <td align="right"> <?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('billTaxAmount',''$this->cart->pricesUnformatted['billTaxAmount'],false)."</span>" ?> </td>
                            <?php ?>
                <td align="right"> <?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('billDiscountAmount',''$this->cart->pricesUnformatted['billDiscountAmount'],false)."</span>" ?> </td>
                <td align="right"><strong><?php echo $this->currencyDisplay->createPriceDiv('billTotal',''$this->cart->pricesUnformatted['billTotal'],false); ?></strong></td>
              </tr>
                <?php
                
    if ( $this->totalInPaymentCurrency) {
                ?>

                   <tr class="sectiontableentry2">
                            <td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL_PAYMENT'?>: </td>

                            <?php if ( VmConfig::get('show_tax')) { ?>
                            <td align="right">  </td>
                            <?php ?>
                            <td align="right">  </td>
                            <td align="right"><strong><?php echo $this->totalInPaymentCurrency;   ?></strong></td>
                          </tr>
                          <?php
                
    }
                ?>


        </table>
    </fieldset>




    Thank you

  • Default avatar
    ostebe    
     3 years ago
    0

    no idea? is very important to me!!!

    Thank you
  • Your avatar
    seyi    
     3 years ago
    0

    Hello,

    I do not.

    If it does not work in your template file or your default file, then I do not know where your cart is pulling from.
  • Your avatar
    seyi    
     3 years ago  last edited 4 days ago
    0

    the code should be outside the foreach loop

    <?php
    foreach( $this->cart->products as $pkey =>$prow ) {
    ?>


    not inside.


Error (#128)
An internal server error occurred.

The above error occurred while the Web server was processing your request.

Please contact us if you think this is a server error. Thank you.