PDA

Orijinalini görmek için tıklayınız : Virtuemart Kur Çevirimi (1.1.x) Türk Lirası?


tutasteri
28-05-2009, 15:24:31
Arkadaşlar merhaba,
Belki de yüzlerce sayfa araştırdım ama halen daha YTL yi sabit tutup kur çevirisi yapan bir modül bulamadım.
Bir tane 1.0.x versiyonlar için mevcut fakat bu nerdeyse 2 yıl öncesinin altyapısına uygun.
Neden bu zamana kadar çeviri sisteminde kullanılacak bir türk modülü geliştirilmedi ?

http://www.tcmb.gov.tr/kurlar/today.xml
http://xml.altinkaynak.com.tr/doviz.xml

Üstteki 2 kaynak bilgisinden bilgi alacak bir modül yazmak çok zor olmasa gerek , hele bir de zaten mevcutta hazırı varken.

Avrupa Merkez Bankasından bilgi alan modül dosyası şu şekilde.

<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
* ECB Currency Converter Module
*
* @version $Id: convertECB.php 1095 2007-12-19 20:19:16Z soeren_nb $
* @package VirtueMart
* @subpackage classes
* @copyright Copyright (C) 2004-2007 soeren - All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/

/**
* This class uses the currency rates provided by an XML file from the European Central Bank
* Requires cURL or allow_url_fopen
*/
class convertECB {

var $archive = true;
var $last_updated = '';

var $document_address = 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml';

var $info_address = 'http://www.ecb.int/stats/eurofxref/';
var $supplier = 'European Central Bank';

/**
* Converts an amount from one currency into another using
* the rate conversion table from the European Central Bank
*
* @param float $amountA
* @param string $currA defaults to $vendor_currency
* @param string $currB defaults to $GLOBALS['product_currency'] (and that defaults to $vendor_currency)
* @return mixed The converted amount when successful, false on failure
*/
function convert( $amountA, $currA='', $currB='' ) {
global $mosConfig_cachepath, $mosConfig_live_site, $mosConfig_absolute_path,
$mosConfig_offset, $vendor_currency, $vmLogger;

// global $vendor_currency is DEFAULT!
if( !$currA ) {
$currA = $vendor_currency;
}
if( !$currB ) {
$currB = $GLOBALS['product_currency'];
}
// If both currency codes match, do nothing
if( $currA == $currB ) {
return $amountA;
}
if( $GLOBALS['converter_array'] == '') {
setlocale(LC_TIME, "en-GB");
$now = time() + 3600; // Time in ECB (Germany) is GMT + 1 hour (3600 seconds)
if (date("I")) {
$now += 3600; // Adjust for daylight saving time
}
$weekday_now_local = gmdate('w', $now); // week day, important: week starts with sunday (= 0) !!
$date_now_local = gmdate('Ymd', $now);
$time_now_local = gmdate('Hi', $now);
$time_ecb_update = '1415';
if( is_writable($mosConfig_cachepath) ) {
$store_path = $mosConfig_cachepath;
}
else {
$store_path = $mosConfig_absolute_path."/media";
}

$archivefile_name = $store_path.'/daily.xml';
$ecb_filename = $this->document_address;
$val = '';


if(file_exists($archivefile_name) && filesize( $archivefile_name ) > 0 ) {
// timestamp for the Filename
$file_datestamp = date('Ymd', filemtime($archivefile_name));

// check if today is a weekday - no updates on weekends
if( date( 'w' ) > 0 && date( 'w' ) < 6
// compare filedate and actual date
&& $file_datestamp != $date_now_local
// if localtime is greater then ecb-update-time go on to update and write files
&& $time_now_local > $time_ecb_update) {
$curr_filename = $ecb_filename;
}
else {
$curr_filename = $archivefile_name;
$this->last_updated = $file_datestamp;
$this->archive = false;
}
}
else {
$curr_filename = $ecb_filename;
}

if( !is_writable( $store_path )) {
$this->archive = false;
$vmLogger->debug( "The file $archivefile_name can't be created. The directory $store_path is not writable" );
}
if( $curr_filename == $ecb_filename ) {
// Fetch the file from the internet
require_once( CLASSPATH.'connectionTools.class.php');
$contents = vmConnector::handleCommunication( $curr_filename );
$this->last_updated = date('Ymd');
}
else {
$contents = @file_get_contents( $curr_filename );
}
if( $contents ) {
// if archivefile does not exist
if( $this->archive ) {
// now write new file
file_put_contents( $archivefile_name, $contents );
}

$contents = str_replace ("<Cube currency='USD'", " <Cube currency='EUR' rate='1'/> <Cube currency='USD'", $contents);

/* XML Parsing */
require_once( $mosConfig_absolute_path. '/includes/domit/xml_domit_lite_include.php' );
$xmlDoc =& new DOMIT_Lite_Document();
if( !$xmlDoc->parseXML( $contents, false, true ) ) {
$vmLogger->err( 'Failed to parse the Currency Converter XML document.');
$GLOBALS['product_currency'] = $vendor_currency;
return $amountA;
}

$currency_list = $xmlDoc->getElementsByTagName( "Cube" );
// Loop through the Currency List
for ($i = 0; $i < $currency_list->getLength(); $i++) {
$currNode =& $currency_list->item($i);
$currency[$currNode->getAttribute("currency")] = $currNode->getAttribute("rate");
unset( $currNode );
}
$GLOBALS['converter_array'] = $currency;
}
else {
$GLOBALS['converter_array'] = -1;
$vmLogger->err( 'Failed to retrieve the Currency Converter XML document.');
$GLOBALS['product_currency'] = $vendor_currency;
return $amountA;
}
}
$valA = isset( $GLOBALS['converter_array'][$currA] ) ? $GLOBALS['converter_array'][$currA] : 1;
$valB = isset( $GLOBALS['converter_array'][$currB] ) ? $GLOBALS['converter_array'][$currB] : 1;

$val = $amountA * $valB / $valA;
//$vmLogger->debug('Converted '.$amountA.' '.$currA.' to '.$val.' '.$currB);

return $val;
} // end function convertecb
}
?>


Bunca kişi türkçe VirtueMart kullanıyor , yok mu şu modülde Türk Lirası için modifikasyon yapabilecek?

Eminim vardır!
Saygılar...

turkerol
10-06-2009, 10:06:24
Aynen bende katılıyorum.bu modül banada çok lazım,merkez bankasından çekecek şekilde ayarlamayqa çalıştım ama nafile,bi el atan yokmudur arkadaşlar şu işe......

ANUH
10-06-2009, 17:59:23
bu özellik banada lazım..
ama ben mevcut kuru elle değiştirebilsem şimdilik onada razı olacağım. yeni hazırlıyorum ve bu sorunu en sona atmıştım 2 yıl önce hazırlanan dosyaları kaydettim genel olarak yapıyı bitirdiğimde denemeyi düşünüyordum. acaba sen bu önceki dosyaları kullanmayı denedinmi hiç. yani 1.1.x ile çalışmadığı şu anda kesinmi?

birde döviz seçim modülünü aktif edip döviz seçerken 1Tl = 1EURO = 1,35 USD şeklinde çalışıyor acaba bu katsayıları manuel olarakta değiştirebilmemin bir yolu varmıdır.

ANUH
14-06-2009, 17:46:29
anladığım kadarı ile henüz 1.5x için direk MB den alan bir eklenti yok.

peki virtuemarttaki döviz bileşeni mod_currencies i aktif ettiğimizde

1 TL= 1 EURO = 1.35 USD kuru ile çalışıyor bu katsayıyı el ile nasıl girebiliriz bunu bilen yada anlayabilecek biri varsa makbule geçecek

ilyask
26-06-2009, 14:39:40
Avrupa merkez bankasından alırak Fiyatları TL ye çevire bilirsiniz. bizim merkez bankası ile avrupamım ki arasında fazla bir fark yok zaten. 1 kaç kuruş oynuyo.

Denediniz de olmuyorsa sebebi büyük ihtimalle virtualmartaaki kurlar kısmındaki turk lirasıkısmınıda bulunan TRL uzantısından kaynaklanıyoru bunu TRY yaparsanız sorun ortadan kalkar. yaklaşık 1 senedir bu şekilde kullanıyorum hiç bir sorun yok.

Örnek olarak sitme bakabilirsiniz Ana Sayfa - Mekamak (www.mekamak.com.tr) deki fiyatlar tl euro ve dolar olarak karış şekilde girilmiş ama hepsi tl olarak çıkıyor.