0

Let's keep it simple so I have my code in View.phtml to display javascript element

    $Abowl = '<p id="finalprice"></p>';
    echo $Abowl; 

And now i want to pass this to another PHP name's DATA.php, I tried but it's not working

 public function formatPrice($price)
{
    include'view.phtml';
    return $this->getQuote()->getStore()->formatPrice($Abowl); 
}

UPDATE 1: I tried something like this :

public function formatPrice($price)
{
    require_once(Mage::getBaseDir() . '\app\design\frontend\neighborhood\default\template\catalog\product\view.‌​phtml');
    return $this->getQuote()->getStore()->formatPrice($Abowl); //this is the source
}

UPDATE 2 : I had asked a question which said DATA.php do not accept any outsource variable in here : How can I get access to modify this price function in Magento Does it affect me?

UPDATE 3 : I have modified the function under \magento\js\varien\product.js in order to satisfy my client's requirement. It works fine, the discount will apply due to the users information from our database. enter image description here

But when the customer add an item to cart, it only shows the original price which is $549.47 in this example.

enter image description here

Therefore, i want to pass the javascript result to the DATA.php as well since It is contain the formatPrice function which apply to the shopping cart section

Here's part of my javascript codes(\magento\js\varien\product.js) which generate the discounted price:

var subPrice = 0; //is the price inside the option
            var subPriceincludeTax = 0;
            var discountRate = discountRateUrl; //discount base on database
            var price = priceUrl;//get the product price
            var discountedPrice = price*discountRate; // price * ourdiscount
            //var discountedSubPrice = subPrice*((100-test)/100); // custom option addition price * ourdiscounted prices
            //console.log(discountedPrice); //display the prices as int
            //console.log(discountedSubPrice);
            //console.log(test);
            Object.values(this.customPrices).each(function(el){
                if (el.excludeTax && el.includeTax) {
                    subPrice += parseFloat(el.excludeTax); // use the var factor && this will affect the price when changing option *important
                    subPriceincludeTax += parseFloat(el.includeTax);

                } else {
                    subPrice += parseFloat(el.price);
                    subPriceincludeTax += parseFloat(el.price);

                }
                var finalprice = (subPrice*discountRate+discountedPrice);//checking if getting the php
                var fomattedprice = finalprice.toFixed(2); //Convert a number into a string, keeping only two decimals
                console.log(finalprice); //tester of the final prices
                console.log(discountRate);//tester discount rate in string
                document.getElementById("finalprice").innerHTML = "<small>Your price is </small>"+ "$" + fomattedprice + "*" +"<br/><small><em>*Discount will be applied during check out</em></small>";
          });

You can ignore these bunch of codes, i just want to know where should i pass my document.getElementById("finalprice"); result in order to show the discounted price.

The follow is my view.html for reference:

  <?php 
        //SQL to identify ones email and discount
        $prices = Mage::helper('core')->currency($_product->getPrice(), $formatPrice, $html);
        echo $this->getChildHtml('product_type_data');
        if(Mage::getSingleton('customer/session')->isLoggedIn()) {
        $customerData = Mage::getSingleton('customer/session')->getCustomer();

        $conn = Mage::getModel('core/resource')->getConnection('core_read');

        //need to change this sql statment to other table, took up and sl.is_active = 1 for test only
        //it won't work by now because method is changed and not connecting to the right DB table
        $sql = 'select sl.discount_amount, scg.customer_group_id, sl.stop_rules_processing from salesrule sl
                join salesrule_customer_group scg on scg.rule_id = sl.rule_id
                join customer_entity ce on ce.group_id = scg.customer_group_id
                where ce.email = "'.$customerData->getemail().'" 
                order by sl.discount_amount desc';
        //and sl.is_active = 1

        //'select sl.discount_amount from salesrule sl 
                //  join salesrule_customer_group scg on scg.rule_id = sl.rule_id
                //  join customer_entity ce on ce.group_id = scg.customer_group_id
                //  where ce.email = "'.$customerData->getemail().'";';

        $results = $conn->fetchAll($sql);

        $Abowl = '<p id="finalprice"></p>';
        echo $Abowl; //only applied when not logged in

        $discountRate = 1;
        foreach ($results as $result)
        {   

            $currentRate = $result['discount_amount'];
            //print_r($currentRate);
            $discountRate = $discountRate*(100 - $currentRate)/100;

            if($result['stop_rules_processing']==1){
                break;
            }

        }

        }   ?>
4
  • where you have keep this file ? Commented Mar 26, 2015 at 7:07
  • View.phtml store in : \magento\app\design\frontend\neighborhood\default\template\catalog\product\view.phtml Commented Mar 26, 2015 at 7:11
  • DATA.php store in : \magento\app\code\core\Mage\Checkout\Helper\DATA.php Commented Mar 26, 2015 at 7:12
  • it should be like require_once(Mage::getBaseDir() . ''/app\design\frontend\neighborhood\default\template\catalog\product\view.‌​phtml'); Commented Mar 26, 2015 at 7:17

1 Answer 1

2

you can do this by the folloeing code

require_once(Mage::getBaseDir() . 'path to your file');

Mage::getBaseDir() this will give you the magento base directory url

Sign up to request clarification or add additional context in comments.

3 Comments

Having the same error even copy and pasta the codes u edited, i think yours code is right but seem it can't solve my issues. P.S: I voted you up already
can you tell me wht you are including the whole product view file in another file ?
I had some additional information updated, please have a look, you can ignore some needless information. Thank you !

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.