Jump to content

simpel Q price in products different currency


jnet

Recommended Posts

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

Link to comment
Share on other sites

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 by jnet
Link to comment
Share on other sites

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:

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated