app/code/community/Techievolve/Freeproduct/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Techievolve_Freeproduct>
            <version>1.1.4</version>
        </Techievolve_Freeproduct>
    </modules>
    <global>
        <models>
            <freeproduct>
                <class>Techievolve_Freeproduct_Model</class>
            </freeproduct>         
        </models>     
        <helpers>
            <freeproduct>
                <class>Techievolve_Freeproduct_Helper</class>
            </freeproduct>
        </helpers>
        <resources>
            <freeproduct_setup>
                <setup>
                    <module>Techievolve_Freeproduct</module>
                    <class>Mage_Eav_Model_Entity_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </freeproduct_setup>
        </resources>
        <fieldsets>
            <sales_convert_quote_item>
                <is_free_product>
                    <to_order_item>is_free_product</to_order_item>
                </is_free_product>           
            </sales_convert_quote_item>
        </fieldsets>
    </global>
    <adminhtml>
        <events>    
            <adminhtml_block_salesrule_actions_prepareform>
                <observers>
                    <freeproduct>
                        <type>model</type>
                        <class>freeproduct/observer</class>
                        <method>adminhtmlBlockSalesruleActionsPrepareform</method>
                    </freeproduct>
                </observers>
            </adminhtml_block_salesrule_actions_prepareform>
            <adminhtml_controller_salesrule_prepare_save>
                <observers>
                    <freeproduct>
                        <type>model</type>
                        <class>freeproduct/observer</class>
                        <method>adminhtmlControllerSalesrulePrepareSave</method>
                    </freeproduct>
                </observers>
            </adminhtml_controller_salesrule_prepare_save>
        </events>
        <translate>
            <modules>
                <Techievolve_Freeproduct>
                    <files>
                        <default>Techievolve_Freeproduct.csv</default>
                    </files>
                </Techievolve_Freeproduct>
            </modules>
        </translate>
    </adminhtml>
    <frontend>
        <layout>
            <updates>
                <freeproduct>
                    <file>freeproduct.xml</file>
                </freeproduct>
            </updates>
        </layout>
        <events>
            <salesrule_validator_process>
                <observers>
                    <freeproduct>
                        <type>model</type>
                        <class>freeproduct/observer</class>
                        <method>salesruleValidatorProcess</method>
                    </freeproduct>
                </observers>
            </salesrule_validator_process>
            <sales_quote_load_after>
                <observers>
                    <freeproduct>
                        <type>model</type>
                        <class>freeproduct/observer</class>
                        <method>salesQuoteCollectTotalsBefore</method>
                    </freeproduct>
                </observers>
            </sales_quote_load_after>
            <catalog_product_type_prepare_full_options>
                <observers>
                    <freeproduct>
                        <class>freeproduct/observer</class>
                        <method>catalogProductTypePrepareFullOptions</method>
                    </freeproduct>
                </observers>
            </catalog_product_type_prepare_full_options>
            <sales_quote_product_add_after>
                <observers>
                    <freeproduct>
                        <class>freeproduct/observer</class>
                        <method>salesQuoteProductAddAfter</method>
                    </freeproduct>
                </observers>
            </sales_quote_product_add_after>
        </events>
    </frontend>
</config>

app/code/community/Techievolve/Freeproduct/Exception/InvalidQuantity.php

<?php
/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */
class Techievolve_Freeproduct_Exception_InvalidQuantity extends RuntimeException {

}

app/code/community/Techievolve/Freeproduct/Exception/ProductNotFound.php

<?php
/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */
class Techievolve_Freeproduct_Exception_ProductNotFound extends RuntimeException {

}

app/code/community/Techievolve/Freeproduct/Exception/ProductNotSalable.php

<?php
/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */
class Techievolve_Freeproduct_Exception_ProductNotSalable extends RuntimeException {

}

app/code/community/Techievolve/Freeproduct/Helper/Data.php

<?php

/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */
class Techievolve_Freeproduct_Helper_Data extends Mage_Core_Helper_Abstract {
    
}

app/code/community/Techievolve/Freeproduct/Model/Consts.php

<?php

/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */

class Techievolve_Freeproduct_Model_Consts {
    
    const ADD_GIFT_ACTION = 'add_gift';
}

app/code/community/Techievolve/Freeproduct/Model/Observer.php

<?php

/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */

class Techievolve_Freeproduct_Model_Observer {

    /**
     * @param $giftSku
     * @return string[]
     */
    protected static function _getSkuList($giftSku) {
        
        return array_map('trim', explode(',', $giftSku));
    }

    /**
     * Delete all free products that have been added through this module before.
     * This is done before discounts are given in on the event
     * 'sales_quote_collect_totals_before'.
     *
     * @param Varien_Event_Observer $observer
    */
    public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer) {
        
        /** @var Mage_Sales_Model_Quote $quote */
        $quote = $observer->getEvent()->getQuote();
        /**
         * The quote store is set to current store temporarily because of a possible problem in Enterprise v1.14.2.4.
         * If the following conditions are true:
         * - Multiple stores
         * - The store is being switched from A to B
         * - the product flat index is not set as build (see table core_flag) in store A but it is in store B (or vice-versa)
         *
         * When the quote_item collection is loaded, products are assigned to it. When the collection is instantiated, either flat
         * or EAV resource is set based on availability of the index per store. Here, the current store is being used to determine
         * flat availability. The Flat/EAV resource models are not interface-compatible, once it is set it should not change
         * otherwise there will be missing methods which cause fatal errors.
         * After instantiation, the store of the quote is being set which might have different flat availability and the collection
         * model will try to use the wrong resource model which will result in fatal errors.
         *
         * @see Flat and EAV product resource models are not interface compatible
         * @see Mage_Sales_Model_Resource_Quote_Item_Collection::_assignProducts()
         * @see Mage_Catalog_Model_Resource_Product_Collection:::_construct()
         * @see Mage_Catalog_Model_Resource_Product_Collection::isEnabledFlat()
         */
        $originalStore = $quote->getStoreId();
        $quote->setStoreId(Mage::app()->getStore()->getId());

        foreach ($quote->getAllItems() as $item) {
            if ($item->getIsFreeProduct()) {
                $quote->removeItem($item->getId());
            }
        }

        $quote->setStoreId($originalStore);
    }

    /**
     * Add gifts to the cart, if the current salesrule is of simple action
     * ADD_GIFT_ACTION. The rule has been validated before the event
     * 'salesrule_validator_process' is thrown that we catch.
     *
     * @param Varien_Event_Observer $observer
     */
    public function salesruleValidatorProcess(Varien_Event_Observer $observer) {
        
        /* @var $quote Mage_Sales_Model_Quote */
        $quote = $observer->getEvent()->getQuote();
        /* @var $item Mage_Sales_Model_Quote_Item */
        $item = $observer->getEvent()->getItem();
        /* @var $rule Mage_SalesRule_Model_Rule */
        $rule = $observer->getEvent()->getRule();

        if ($rule->getSimpleAction() != Techievolve_Freeproduct_Model_Consts::ADD_GIFT_ACTION || $item->getIsFreeProduct() || $rule->getIsApplied()) {
            return;
        }

        try {
            $qty = (int)$rule->getDiscountAmount();
            $skus = static::_getSkuList($rule->getGiftSku());
            foreach ($skus as $sku) {
                /** @var Mage_Sales_Model_Quote_Item $freeItem */
                $freeItem = static::_getFreeQuoteItem($rule->getId(), $sku, $quote->getStoreId(), $qty);
                $quote->addItem($freeItem);
                static::_setQuoteItemTaxPercent($freeItem);
                $freeItem->setApplyingRule($rule);
            }
            $rule->setData('is_applied', true);
        } catch (RuntimeException $e) {
            Mage::logException($e);
        }
    }

    /**
     * Add a new simple action to the salesrule in the backen. In the combo-box
     * you can now select 'Add a Gift' as one possible result of the given rule
     * evaluation positive. Additionally you have to enter a sku of the gift that
     * you want to make.
     *
     * @param Varien_Event_Observer $observer
     */
    public function adminhtmlBlockSalesruleActionsPrepareform($observer) {
        
        $field = $observer->getForm()->getElement('simple_action');
        $options = $field->getValues();
        $options[] = array(
            'value' => Techievolve_Freeproduct_Model_Consts::ADD_GIFT_ACTION,
            'label' => Mage::helper('freeproduct')->__('Add a Gift')
        );
        $field->setValues($options);

        $fieldset = $observer->getForm()->getElement('action_fieldset');
        $fieldset->addField('gift_sku', 'text', array(
            'name' => 'gift_sku',
            'label' => Mage::helper('freeproduct')->__('Gift SKU'),
            'title' => Mage::helper('freeproduct')->__('Gift SKU'),
            'note' => Mage::helper('freeproduct')->__('Enter the SKU of the gift that should be added to the cart. You can enter a comma separated list for multiple gifts.'),
        ));
    }

    /*
     * Check if the given free product SKU is not empty and references a valid product.
     * @param Varien_Event_Observer $observer
     * @throws Mage_Core_Exception
    */
    public function adminhtmlControllerSalesrulePrepareSave($observer) {
        
        $request = $observer->getRequest();
        if ($request->getParam('simple_action') == Techievolve_Freeproduct_Model_Consts::ADD_GIFT_ACTION) {
            $giftSku = $request->getParam('gift_sku');
            if (! static::_isValidGiftSku($giftSku)) {
                // make sure that unsaved data is not lost
                $data = $request->getPost();
                Mage::getSingleton('adminhtml/session')->setPageData($data);
                // just throw an exception, Mage_Adminhtml_Promo_QuoteController::saveAction will do the rest
                throw new Mage_Core_Exception('The free product SKU must be a valid product.');
            }
        }
    }

    /**
     * Detect free products based on buyRequest object and set it as temporary attribute to
     * the product. Relevant for reordering. See also: salesQuoteProductAddAfter()
     *
     * @param Varien_Event_Observer $observer
     */
    public function catalogProductTypePrepareFullOptions(Varien_Event_Observer $observer)
    {
        if ($observer->getBuyRequest()->getData('is_free_product')) {
            $observer->getProduct()->setIsFreeProduct(true);
        }
    }

    /**
     * Adds is_free_product attribute to quote model if set to product. Relevant for reordering.
     * See also: catalogProductTypePrepareFullOptions()
     *
     * @param Varien_Event_Observer $observer
     */
    public function salesQuoteProductAddAfter(Varien_Event_Observer $observer)
    {
        foreach ($observer->getEvent()->getItems() as $quoteItem) {
            $quoteItem->setIsFreeProduct($quoteItem->getProduct()->getIsFreeProduct());
        }
    }

    /**
     * Create a free item. It has a value of 0$ in the cart no matter what the price was
     * originally. The flag is_free_product gets saved in the buy request to read it on
     * reordering, because fieldset conversion does not work from order item to quote item.
     *
     * @param int $ruleId
     * @param string $sku
     * @param int $storeId
     * @param int $qty
     * @return bool|Mage_Sales_Model_Quote_Item
     * @throws Techievolve_Freeproduct_Exception_InvalidQuantity
     * @throws Techievolve_Freeproduct_Exception_ProductNotSalable
     * @throws Techievolve_Freeproduct_Exception_ProductNotFound
     */
    protected static function _getFreeQuoteItem($ruleId, $sku, $storeId, $qty)
    {
        if ($qty < 1) {
            throw new Techievolve_Freeproduct_Exception_InvalidQuantity(sprintf(
                'Techievolve_Freeproduct: Invalid Gift product qty. Rule ID: %d, Gift Qty: %d',
                $ruleId, $qty
            ));
        }

        /** @var Mage_Catalog_Model_Product $product */
        $product = Mage::getModel('catalog/product');
        $product->setStoreId($storeId);
        $product->load($product->getIdBySku($sku));

        if ($product == false) {
            throw new Techievolve_Freeproduct_Exception_ProductNotFound(sprintf(
                'Techievolve_Freeproduct: Gift product not found. Rule ID: %d, Gift SKU: %s, Store ID: %d',
                $ruleId, $sku, $storeId
            ));
        }

        Mage::getModel('cataloginventory/stock_item')->assignProduct($product);

        if ($product->isSalable() == false) {
            throw new Techievolve_Freeproduct_Exception_ProductNotSalable(sprintf(
                'Techievolve_Freeproduct: Gift product not saleable. Rule ID: %d, Gift SKU: %s, Store ID: %d',
                $ruleId, $sku, $storeId
            ));
        }

        $quoteItem = Mage::getModel('sales/quote_item')->setProduct($product);
        $quoteItem
            ->setQty($qty)
            ->setCustomPrice(0.0)
            ->setOriginalCustomPrice($product->getPrice())
            ->setIsFreeProduct(true)
            ->setWeeeTaxApplied('a:0:{}') // Set WeeTaxApplied Value by default so there are no "warnings" later on during invoice creation
            ->setStoreId($storeId);

        $quoteItem->addOption(new Varien_Object(array(
            'product' => $product,
            'code' => 'info_buyRequest',
            'value' => serialize(array('qty' => $qty, 'is_free_product' => true))
        )));
        // With the freeproduct_uniqid option, items of the same free product won't get combined.
        $quoteItem->addOption(new Varien_Object(array(
            'product' => $product,
            'code' => 'freeproduct_uniqid',
            'value' => uniqid(null, true)
        )));

        return $quoteItem;
    }

    /**
     * @param $storeId
     * @param $quoteItem
     */
    protected static function _setQuoteItemTaxPercent(Mage_Sales_Model_Quote_Item $quoteItem)
    {
        $taxCalculationModel = Mage::getSingleton('tax/calculation');
        $quote = $quoteItem->getQuote();
        /* @var $taxCalculationModel Mage_Tax_Model_Calculation */
        $request = $taxCalculationModel->getRateRequest(
            $quote->getShippingAddress(),
            $quote->getBillingAddress(),
            $quote->getCustomerTaxClassId(),
            $quoteItem->getStore()
        );
        $rate = $taxCalculationModel->getRate(
            $request->setProductClassId($quoteItem->getProduct()->getTaxClassId())
        );
        $quoteItem->setTaxPercent($rate);
    }

    /**
     * @param $giftSku
     * @return bool
     */
    protected static function _isValidGiftSku($giftSku)
    {
        if (trim($giftSku) === '') {
            return false;
        }
        $skus = self::_getSkuList($giftSku);
        foreach ($skus as $sku) {
            if (! Mage::getModel('catalog/product')->getIdBySku($sku)) {
                return false;
            }
        }
        return true;
    }
}

app/code/community/Techievolve/Freeproduct/sql/freeproduct_setup/mysql4-install-0.1.0.php

<?php
/**
 * Freeproduct Module
 *
 * @category     Techievolve
 * @package      Techievolve_Freeproduct
 * @author       Sushant <sushant.vishwas1990@gmail.com>
 * @version      1.1.4
 */

/**
 * @var $installer Mage_Sales_Model_Mysql4_Setup
 */
$installer = $this;
$installer->startSetup();
$installer->getConnection()->addColumn(
    $installer->getTable('sales/quote_item'), 'is_free_product', "tinyint(4) NOT NULL default '0'"
);
$installer->getConnection()->addColumn(
    $installer->getTable('sales/order_item'), 'is_free_product', "tinyint(4) NOT NULL default '0'"
);
$installer->getConnection()->addColumn(
    $installer->getTable('salesrule'), 'gift_sku', "varchar(255) NOT NULL default ''"
);
$installer->endSetup();

app/etc/modules/Techievolve_Freeproduct.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Techievolve_Freeproduct>
            <active>false</active>
            <codePool>community</codePool>
            <depends>
                <Mage_Sales />    
            </depends>            
        </Techievolve_Freeproduct>
    </modules>
</config>

app/design/frontend/smartwave/porto/layout/freeproduct.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="1.0.0">
    <checkout_cart_index>
        <reference name="checkout.cart">
            <action method="addItemRender">
                <type>simple</type>
                <block>checkout/cart_item_renderer</block>
                <template>freeproduct/checkout/cart/item/default.phtml</template>
            </action>
            <action method="addItemRender">
                <type>virtual</type>
                <block>checkout/cart_item_renderer</block>
                <template>freeproduct/checkout/cart/item/default.phtml</template>
            </action>
        </reference>
    </checkout_cart_index>
</layout>

app/design/frontend/smartwave/porto/template/freeproduct/checkout/cart/item/default.phtml

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magentocommerce.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    design
 * @package     base_default
 * @copyright   Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */
?>
<?php
$_item = $this->getItem();
// BEGIN CHANGE Techievolve_Freeproduct: Set gift items to not visible, so edit and wishlist are hidden
$isVisibleProduct = $_item->getProduct()->isVisibleInSiteVisibility() && $_item->getIsFreeProduct() == false;
// END CHANGE Techievolve_Freeproduct
$canApplyMsrp = Mage::helper('catalog')->canApplyMsrp($_item->getProduct(), Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type::TYPE_BEFORE_ORDER_CONFIRM);
$store = Mage::app()->getStore();
$code  = $store->getCode();
$aspect_ratio = Mage::getStoreConfig("porto_settings/category/aspect_ratio",$code);
$ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settings/category/ratio_width",$code) == 0))?1:(Mage::getStoreConfig("porto_settings/category/ratio_height",$code)/Mage::getStoreConfig("porto_settings/category/ratio_width",$code));
?>
<tr>
    <!--BEGIN CHANGE Techievolve_Freeproduct: Gift items are not deletable-->
    <td class="action-td">
        <?php if (!$_item->getIsFreeProduct()) : ?>    
            <a href="<?php echo $this->getDeleteUrl()?>" title="<?php echo $this->__('Remove item')?>" class="btn-remove btn-remove2"><?php echo $this->__('Remove item')?></a>
        <?php endif; ?>        
    </td>
    
    <td class="pr-img-td"><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="<?php echo $this->getProductThumbnail()->resize(80,80*$ratio); ?>" width="80" height="<?php echo 80*$ratio ?>" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?></td>
    
    <td class="product-name-td">
        <h2 class="product-name">
        <?php if ($this->hasProductUrl()):?>
            <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape($this->getProductName()) ?></a>
        <?php else: ?>
            <?php echo $this->htmlEscape($this->getProductName()) ?>
        <?php endif; ?>
        </h2>
        <?php if ($_options = $this->getOptionList()):?>
        <dl class="item-options">
            <?php foreach ($_options as $_option) : ?>
            <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
            <dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
            <dd<?php if (isset($_formatedOptionValue&#91;'full_view'&#93;)): ?> class="truncated"<?php endif; ?>><?php echo $_formatedOptionValue&#91;'value'&#93; ?>
                <?php if (isset($_formatedOptionValue&#91;'full_view'&#93;)): ?>
                <div class="truncated_full_value">
                    <dl class="item-options">
                        <dt><?php echo $this->htmlEscape($_option['label']) ?></dt>
                        <dd><?php echo $_formatedOptionValue&#91;'full_view'&#93; ?></dd>
                    </dl>
                </div>
                <?php endif; ?>
            </dd>
            <?php endforeach; ?>
        </dl>
        <?php endif;?>
        <?php if ($messages = $this->getMessages()): ?>
        <?php foreach ($messages as $message): ?>
            <p class="item-msg <?php echo $message&#91;'type'&#93; ?>">* <?php echo $message&#91;'text'&#93; ?></p>
        <?php endforeach; ?>
        <?php endif; ?>
        <?php if ($addtInfoBlock = $this->getProductAdditionalInformationBlock()):?>
            <?php echo $addtInfoBlock->setItem($_item)->toHtml() ?>
        <?php endif;?>
    </td>
    
    <?php if ($this->helper('wishlist')->isAllowInCart()) : ?>
    <td>
        <?php if ($isVisibleProduct): ?>
            <a href="<?php echo $this->helper('wishlist')->getMoveFromCartUrl($_item->getId()); ?>" class="link-wishlist use-ajax"><?php echo $this->__('Move'); ?></a>
        <?php endif ?>
    </td>
    <?php endif ?>

    <?php if ($canApplyMsrp): ?>
        <td<?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>>
            <span class="cart-price">
                <span class="cart-msrp-unit"><?php echo $this->__('See price before order confirmation.'); ?></span>
                <?php $helpLinkId = 'cart-msrp-help-' . $_item->getId(); ?>
                <a id="<?php echo $helpLinkId ?>" href="#" class="map-help-link"><?php echo $this->__("What's this?"); ?></a>
                <script type="text/javascript">
                    Catalog.Map.addHelpLink($('<?php echo $helpLinkId ?>'), "<?php echo $this->__("What's this?") ?>");
                </script>
            </span>
        </td>
    <?php else: ?>

        <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
        <td>
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                <span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
            <?php else: ?>
                <span class="cart-price">
            <?php endif; ?>
                <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?>
                <?php else: ?>
                    <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()) ?>
                <?php endif; ?>

            </span>


            <?php if (Mage::helper('weee')->getApplied($_item)): ?>

                <div class="cart-tax-info" id="eunit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
                    <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>

                <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <div class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
                        <span class="weee"><?php echo Mage::helper('weee')->__('Total'); ?>: <?php echo $this->helper('checkout')->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()); ?></span>
                    </div>
                <?php endif; ?>
            <?php endif; ?>
        </td>
        <?php endif; ?>
        <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
        <td>
            <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
            <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                <span class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
            <?php else: ?>
                <span class="cart-price">
            <?php endif; ?>

                <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?>
                <?php else: ?>
                    <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxDisposition()) ?>
                <?php endif; ?>

            </span>
            <?php if (Mage::helper('weee')->getApplied($_item)): ?>

                <div class="cart-tax-info" id="unit-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
                    <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                        <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                            <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['amount_incl_tax'],true,true); ?></span>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>

                <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <div class="cart-tax-total" onclick="taxToggle('unit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
                        <span class="weee"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>: <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
                    </div>
                <?php endif; ?>
            <?php endif; ?>
        </td>
        <?php endif; ?>
    <?php endif; ?>
    <td>
        <?php // BEGIN CHANGE Techievolve_Freeproduct: The qty of gift items is not editable ?>
        <?php if ($_item->getIsFreeProduct()) : ?>
            <?php echo $this->getQty() ?>
        <?php else: ?>
            <div class="qty-holder">
                <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart&#91;<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a>
                <?php if ($isVisibleProduct): ?>
                    <a class="edit-qty" href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><i class="icon-pencil"></i></a>
                <?php endif ?>
            </div>
            <?php /* <input name="cart&#91;<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty" maxlength="12" /> */ ?>
        <?php endif; ?>
        <?php // END CHANGE Techievolve_Freeproduct ?>
    </td>
    <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
    <td class="td-total">
        <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
            <span class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
        <?php else: ?>
            <span class="cart-price">
        <?php endif; ?>

            <?php if ($canApplyMsrp): ?>
                <span class="cart-msrp-subtotal">--</span>
            <?php else: ?>
                <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?>
                <?php else: ?>
                    <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()) ?>
                <?php endif; ?>
            <?php endif; ?>

        </span>
        <?php if (Mage::helper('weee')->getApplied($_item)): ?>

            <div class="cart-tax-info" id="esubtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
                <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>

            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                <div class="cart-tax-total" onclick="taxToggle('esubtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
                    <span class="weee"><?php echo Mage::helper('weee')->__('Total'); ?>: <?php echo $this->helper('checkout')->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?></span>
                </div>
            <?php endif; ?>
        <?php endif; ?>
    </td>
    <?php endif; ?>
    <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
    <td>
        <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
        <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
            <span class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
        <?php else: ?>
            <span class="cart-price">
        <?php endif; ?>

            <?php if ($canApplyMsrp): ?>
                <span class="cart-msrp-subtotal">--</span>
            <?php else: ?>
                <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
                <?php else: ?>
                    <?php echo $this->helper('checkout')->formatPrice($_incl-$_item->getWeeeTaxRowDisposition()) ?>
                <?php endif; ?>
            <?php endif; ?>

        </span>


        <?php if (Mage::helper('weee')->getApplied($_item)): ?>

            <div class="cart-tax-info" id="subtotal-item-tax-details<?php echo $_item->getId(); ?>" style="display:none;">
                <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                    <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
                        <span class="weee"><?php echo $tax&#91;'title'&#93;; ?>: <?php echo Mage::helper('checkout')->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>

            <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
                <div class="cart-tax-total" onclick="taxToggle('subtotal-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
                    <span class="weee"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>: <?php echo $this->helper('checkout')->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
                </div>
            <?php endif; ?>
        <?php endif; ?>
    </td>
    <?php endif; ?>
    <?php // END CHANGE Techievolve_Freeproduct ?>
</tr>


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *