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
eighborhood\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.
But when the customer add an item to cart, it only shows the original price which is $549.47 in this example.
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;
}
}
} ?>