jnet Posted August 12, 2009 Share Posted August 12, 2009 Please help me with this after months still could not figure out I am making a product it has the price section two currencies Dollar and japanese yen I put dollar info but keep the japanese info empty I want if a client decides to pay in Yen he get's the conversion automatically what I should do ? put the price info in japanese yen section too? My main money be dollars and I want the conversion to yen be depending on the convert rate 0 Quote Link to comment Share on other sites More sharing options...
WHMCS Support Manager WHMCS John Posted August 12, 2009 WHMCS Support Manager Share Posted August 12, 2009 Enable both Currency Auto Update Settings in Setup > Automation Settings. 0 Quote Link to comment Share on other sites More sharing options...
jnet Posted August 12, 2009 Author Share Posted August 12, 2009 (edited) thanks John in automation setting ======= Exchange Rates: Tick this box to attempt to auto update exchange rates daily Product Prices: Tick this box to update product prices using the current exchange rate daily ====================== I have ticked both but when I go to products price the japanese yen is 0 should I put some money value in products price section first? --------------- the other question I have is this: some of my products the base money is US dollars some of my products the base money is Japanese yen in this case what should I do? Edited August 12, 2009 by jnet 0 Quote Link to comment Share on other sites More sharing options...
jnet Posted August 12, 2009 Author Share Posted August 12, 2009 what happened it seems I could not make myself clear? 0 Quote Link to comment Share on other sites More sharing options...
WHMCS Support Manager WHMCS John Posted August 13, 2009 WHMCS Support Manager Share Posted August 13, 2009 Click Update Product Prices in Setup > Currencies. The price will then be updated everyday when your cron runs. 0 Quote Link to comment Share on other sites More sharing options...
jnet Posted August 14, 2009 Author Share Posted August 14, 2009 I am sorry John I did not explain well. See. I have two prices in this condition. Right now my default currency is Japansed Yen throughout my site. in some of my packages the price is US dollars witch is not default currency. So I want Japanses Yen calculation is done according to my US dollars Currency . wonder if I could make myself clear this time:oops: 0 Quote Link to comment Share on other sites More sharing options...
thehost5968 Posted August 14, 2009 Share Posted August 14, 2009 Base Conv. Rate is global within WHMCS and you would be looking for it to be a per product base right? if so the only why you could do this is to make a script and cron run it. There is a script in this forum for doing some think like that but it was for domain's but could simple customed to your needs. if I find it I will post it here. 0 Quote Link to comment Share on other sites More sharing options...
jnet Posted August 14, 2009 Author Share Posted August 14, 2009 yes exactly that is what I mean! 0 Quote Link to comment Share on other sites More sharing options...
thehost5968 Posted August 14, 2009 Share Posted August 14, 2009 yes exactly that is what I mean! Well I can not find the thread in this forum any more and do not have the time now so I have found the file it is coded for use with v3 and not v4 so you will need to do a bit of coding on it also need to replace the currency exchange table etcc.. to use the WHMCS currency exchange. As this is a guide only. <?php /* * File: CurrencyConverter.php * Author: Simon Jarvis * Copyright: 2005 Simon Jarvis * Date: 10/12/05 * Link: http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details: * http://www.gnu.org/licenses/gpl.html * */ /* British Pounds = GBP, US Dollars = USD, Euros = EUR, Australian Dollars = AUD, Bulgarian Leva = BGN, Canadian Dollars = CAD, Swiss Francs = CHF, Chinese Yuan Renminbi = CNY, Cyprian Pounds = CYP, Czech Koruny = CZK, Danish Kroner = DKK, Estonian Krooni = EEK, Hong Kong, Dollars = HKD, Croatian Kuna = HRK, Hungarian Forint = HUF, Indonesian Rupiahs = IDR, Icelandic Kronur = ISK, Japanese Yen = JPY, South Korean Won = KRW, Lithuanian Litai = LTL, Latvian Lati = LVL, Malta Liri = MTL, Malaysian Ringgits = MYR, Norwegian Krone = NOK, New Zealand Dollars = NZD, Philippine Pesos = PHP, Polish Zlotych = PLN, Romanian New Lei = RON, Russian Rubles = RUB, Swedish Kronor = SEK, Singapore Dollars = SGD, Slovenian Tolars = SIT, Slovakian Koruny = SKK, Thai Baht = THB, Turkish New Lira = TRY, South African Rand = ZAR */ class CurrencyConverter { var $xml_file = "www.ecb.int/stats/eurofxref/eurofxref-daily.xml"; var $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_table; var $exchange_rates = array(); //Load Currency Rates function CurrencyConverter($host,$user,$pass,$db,$tb) { $this->mysql_host = $host; $this->mysql_user = $user; $this->mysql_pass = $pass; $this->mysql_db = $db; $this->mysql_table = $tb; $this->checkLastUpdated(); $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs = mysql_select_db($this->mysql_db,$conn); $sql = "SELECT * FROM ".$this->mysql_table; $rs = mysql_query($sql,$conn); while($row = mysql_fetch_array($rs)) { $this->exchange_rates[$row['currency']] = $row['rate']; } } /* Perform the actual conversion, defaults to £1.00 GBP to USD */ function convert($amount=1,$from="GBP",$to="USD",$decimals=2) { return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals)); } /* Check to see how long since the data was last updated */ function checkLastUpdated() { $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs = mysql_select_db($this->mysql_db,$conn); $sql = "SHOW TABLE STATUS FROM ".$this->mysql_db." LIKE '".$this->mysql_table."'"; $rs = mysql_query($sql,$conn); if(mysql_num_rows($rs) == 0 ) { $this->createTable(); } else { $row = mysql_fetch_array($rs); if(time() > (strtotime($row["Update_time"])+(12*60*60)) ) { $this->downloadExchangeRates(); } } } /* Download xml file, extract exchange rates and store values in database */ function downloadExchangeRates() { $currency_domain = substr($this->xml_file,0,strpos($this->xml_file,"/")); $currency_file = substr($this->xml_file,strpos($this->xml_file,"/")); $fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10); if($fp) { $out = "GET ".$currency_file." HTTP/1.1\r\n"; $out .= "Host: ".$currency_domain."\r\n"; $out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1. Gecko/20051111 Firefox/1.5\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $buffer .= fgets($fp, 128); } fclose($fp); $pattern = "{<Cube\s*currency='(\w*)'\s*rate='([\d\.]*)'/>}is"; preg_match_all($pattern,$buffer,$xml_rates); array_shift($xml_rates); for($i=0;$i<count($xml_rates[0]);$i++) { $exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i]; } $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs = mysql_select_db($this->mysql_db,$conn); foreach($exchange_rate as $currency=>$rate) { if((is_numeric($rate)) && ($rate != 0)) { $sql = "SELECT * FROM ".$this->mysql_table." WHERE currency='".$currency."'"; $rs = mysql_query($sql,$conn) or die(mysql_error()); if(mysql_num_rows($rs) > 0) { $sql = "UPDATE ".$this->mysql_table." SET rate=".$rate." WHERE currency='".$currency."'"; } else { $sql = "INSERT INTO ".$this->mysql_table." VALUES('".$currency."',".$rate.")"; } $rs = mysql_query($sql,$conn) or die(mysql_error()); } } } } /* Create the currency exchange table */ function createTable() { $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass); $rs = mysql_select_db($this->mysql_db,$conn); $sql = "CREATE TABLE ".$this->mysql_table." ( currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency) ) ENGINE=MyISAM"; $rs = mysql_query($sql,$conn) or die(mysql_error()); $sql = "INSERT INTO ".$this->mysql_table." VALUES('EUR',1)"; $rs = mysql_query($sql,$conn) or die(mysql_error()); $this->downloadExchangeRates(); } } ?> This is not my script and it may not work and I do not support it in any way. 0 Quote Link to comment Share on other sites More sharing options...
jnet Posted August 14, 2009 Author Share Posted August 14, 2009 Thanks for your time Is there any other way more stable? Hey I think I should request this feature 0 Quote Link to comment Share on other sites More sharing options...
thehost5968 Posted August 14, 2009 Share Posted August 14, 2009 1. There is no other "stable" way, as this is changing the price within the database?? 2. This will not and should not happen 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.