Hola, hoy me he dado cuenta de que en mi tienda no funciona correctamente el cambio de moneda automático.
Por ejemplo tengo un producto de 200.000 pesos que a día de hoy suponen 83 euros y 111 dólares.
Pues bien, al hacer el cambio de moneda en el front end esos 200.000 pesos se convierten en 76 euros y 101 dólares, lo cual significaría muchas pérdidas para mi por cada producto. Aparentemente está todo configurado perfectamente, el peso colombiano es la moneda principal, y pensaba que la cotización se iba actualizando diariamente mediante la tienda, pero mirando otras fuentes no coincide la cotización y la diferencia es como de 7 euros y 10 dólares, ¿les pasa a ustedes lo mismo?
Gracias.
Por ejemplo tengo un producto de 200.000 pesos que a día de hoy suponen 83 euros y 111 dólares.
Pues bien, al hacer el cambio de moneda en el front end esos 200.000 pesos se convierten en 76 euros y 101 dólares, lo cual significaría muchas pérdidas para mi por cada producto. Aparentemente está todo configurado perfectamente, el peso colombiano es la moneda principal, y pensaba que la cotización se iba actualizando diariamente mediante la tienda, pero mirando otras fuentes no coincide la cotización y la diferencia es como de 7 euros y 10 dólares, ¿les pasa a ustedes lo mismo?
Gracias.
la función que actualiza la moneda es updateCurrencies y lo hace en base a los resultados obtenidos en finance.yahoo.com/d el problema quizás es que solamente se actualiza cuando entras al admin pero si pasa una semana que no ingresas la actualización de las divisas no se realizan. Por otro lado en la configuración de tu opencart tenes que tener seteado que se actualice la moneda automáticamente.
Hola cofrán, gracias por la respuesta.
Así es como yo lo tengo, actualización automática, sí
monedas: prioritaria Peso Colombiano (COP) 1,0000
El resto de monedas son EUR, USD y LIBRAS
La fecha de última actualización es 23/09/2010
EUR = 0.00040000 pesos colombianos
USD = 0.00060000 pesos colombianos
GBP = 0.00040000 pesos colombianos
Está exactamente igual que Yahoo, en primera instancia.
Pero ahora viene el problema.
Artículo de valor 190.000 pesos colombianos. Según Yahoo eso deberían ser 79,20 euros y 105,49 dólares y 67,26 libras
En la tienda, sin embargo esos 190.000 pesos colombianos equivalen a 76 euros y 114 dólares y 76 libras esterlinas.
Es mucha diferencia. Si se paga en euros, yo pierdo 3,20 euros, si se paga en dólares yo gano 9 dólares de más
y si se paga en libras, gano otras 9 libras de más.
Creo que es un bug, o algo está fallando con las monedas de poco valor como el peso colombiano. Hmmm, puede que sea yahoo el que falla...
Ok, hay algo que opencart no ha tenido en cuenta...
Mirando las cotizaciones en yahoo veo lo siguiente.
http://es.finance.yahoo.com/divisas/con ... =EUR;amt=1
Si introduzco 1 peso colombiano aparece en primera instancia 0,0004 euros
Pero si doy click en 1 peso colombiano automáticamente vemos que lo que equivale a 0,0004 euros no es un peso colombiano sino 0,9595 pesos colombianos, por tanto Opencart está tomando 0,0004 euros = 1 peso, cuando lo que debería ser es 0,0004 = 0,9595 o lo que es lo mismo 1 peso es igual a 0,000417
Si hacemos lo mismo con los dólares, vemos que en principio yahoo nos muestra:
1 peso = 0,0006
Si hacemos click en cualquier parte, tanto en el número de dólares como en el de pesos, yahoo nos muestra la cotización real que es: 1,0806 pesos = 0,0006 dólares
o lo que es lo mismo: 1 peso = 0,000555
Esos pequeños desajustes provocan una enorme diferencia de precios cuando se convierten monedas de muy pequeño valor...
No sé qué solución puede tener esto pero en mi caso es grave...
Así es como yo lo tengo, actualización automática, sí
monedas: prioritaria Peso Colombiano (COP) 1,0000
El resto de monedas son EUR, USD y LIBRAS
La fecha de última actualización es 23/09/2010
EUR = 0.00040000 pesos colombianos
USD = 0.00060000 pesos colombianos
GBP = 0.00040000 pesos colombianos
Está exactamente igual que Yahoo, en primera instancia.
Pero ahora viene el problema.
Artículo de valor 190.000 pesos colombianos. Según Yahoo eso deberían ser 79,20 euros y 105,49 dólares y 67,26 libras
En la tienda, sin embargo esos 190.000 pesos colombianos equivalen a 76 euros y 114 dólares y 76 libras esterlinas.
Es mucha diferencia. Si se paga en euros, yo pierdo 3,20 euros, si se paga en dólares yo gano 9 dólares de más
y si se paga en libras, gano otras 9 libras de más.
Creo que es un bug, o algo está fallando con las monedas de poco valor como el peso colombiano. Hmmm, puede que sea yahoo el que falla...
Ok, hay algo que opencart no ha tenido en cuenta...
Mirando las cotizaciones en yahoo veo lo siguiente.
http://es.finance.yahoo.com/divisas/con ... =EUR;amt=1
Si introduzco 1 peso colombiano aparece en primera instancia 0,0004 euros
Pero si doy click en 1 peso colombiano automáticamente vemos que lo que equivale a 0,0004 euros no es un peso colombiano sino 0,9595 pesos colombianos, por tanto Opencart está tomando 0,0004 euros = 1 peso, cuando lo que debería ser es 0,0004 = 0,9595 o lo que es lo mismo 1 peso es igual a 0,000417
Si hacemos lo mismo con los dólares, vemos que en principio yahoo nos muestra:
1 peso = 0,0006
Si hacemos click en cualquier parte, tanto en el número de dólares como en el de pesos, yahoo nos muestra la cotización real que es: 1,0806 pesos = 0,0006 dólares
o lo que es lo mismo: 1 peso = 0,000555
Esos pequeños desajustes provocan una enorme diferencia de precios cuando se convierten monedas de muy pequeño valor...
No sé qué solución puede tener esto pero en mi caso es grave...
la verdad es que toma los resultados reales que arroja yahoo, en todo caso es yahoo el que esta ofreciendo mal la conversión de divisa... o al cambio lo pones a mano y te olvidas de la auto-conversión o lo otro que podes hacer es buscar por los foros en ingles las adaptaciones que han realizado otros usuario para tomar la conversión de divisas de otros sitios, por ejemplo: http://forum.opencart.com/viewtopic.php?t=4423
acá tenes un ejemplo de como obtener los datos desde google, obvio, habría que adaptarlo al opencart: http://www.chazzuka.com/blog/?p=104
La url de google es muy buena, miren
De pesos colombianos a euros
http://www.google.com/ig/calculator?hl=en&q=1COP=?EUR
De pesos colombianos a GBP
http://www.google.com/ig/calculator?hl=en&q=1COP=?GBP
De Euros a dólares
http://www.google.com/ig/calculator?hl=en&q=1EUR=?USD
Observen que las cotizaciones son correctísimas con más decimales cubiertos y evita los redondeos brutales de yahoo y los desajustes terribles en monedas de poco valor.
¿Cómo podría adaptarse esto a Opencart?
Es decir, cambiar el proveedor yahoo por google...
De pesos colombianos a euros
http://www.google.com/ig/calculator?hl=en&q=1COP=?EUR
De pesos colombianos a GBP
http://www.google.com/ig/calculator?hl=en&q=1COP=?GBP
De Euros a dólares
http://www.google.com/ig/calculator?hl=en&q=1EUR=?USD
Observen que las cotizaciones son correctísimas con más decimales cubiertos y evita los redondeos brutales de yahoo y los desajustes terribles en monedas de poco valor.
¿Cómo podría adaptarse esto a Opencart?
Es decir, cambiar el proveedor yahoo por google...
Lo malo es que mis conocimientos de php son absolutamente nulos.
Pero a simple vista veo que opencart lee un csv generado por yahoo que está pensado para los valores bursátiles, pero también funciona para las cotizaciones, colocando Divisa1Divisa2=X
por ejemplo COPUSD=X
http://download.finance.yahoo.com/d/quo ... sl1&e=.csv
eso es lo que usa opencart
y devuelve un csv con una línea así:
COPUSD=X,0.0006
y de ahí opencart toma la cotización, 0.0006
Para cambiar el proveedor a google, se trataría de que opencart en lugar de generar la variable COPUSD=X (moneda1moneda2=X) y colocarlo en el link de yahoo, debería introducir moneda1 y moneda2 en el link siguiente:
http://www.google.com/ig/calculator?hl= ... 1=?moneda2
que sería
http://www.google.com/ig/calculator?hl=en&q=COP=?USD
el cual devuelve
{lhs: "1 Colombian peso",rhs: "0.000555 U.S. dollars",error: "",icc: true}
y de ahí tomar el valor 0.000555
Lo que pasa es que es que hay cotizaciones con menos decimales y otras con 9 decimales, etc. Supongo que el conversor de google tiene una api con parámetros, etc.
Pero a simple vista veo que opencart lee un csv generado por yahoo que está pensado para los valores bursátiles, pero también funciona para las cotizaciones, colocando Divisa1Divisa2=X
por ejemplo COPUSD=X
http://download.finance.yahoo.com/d/quo ... sl1&e=.csv
eso es lo que usa opencart
y devuelve un csv con una línea así:
COPUSD=X,0.0006
y de ahí opencart toma la cotización, 0.0006
Para cambiar el proveedor a google, se trataría de que opencart en lugar de generar la variable COPUSD=X (moneda1moneda2=X) y colocarlo en el link de yahoo, debería introducir moneda1 y moneda2 en el link siguiente:
http://www.google.com/ig/calculator?hl= ... 1=?moneda2
que sería
http://www.google.com/ig/calculator?hl=en&q=COP=?USD
el cual devuelve
{lhs: "1 Colombian peso",rhs: "0.000555 U.S. dollars",error: "",icc: true}
y de ahí tomar el valor 0.000555
Lo que pasa es que es que hay cotizaciones con menos decimales y otras con 9 decimales, etc. Supongo que el conversor de google tiene una api con parámetros, etc.
Antes hace un backup!
anda a tu archivo: admin/model/localisation/currency.php y busca la función esta:
antes de esta función inserta esto:
ahora busca la función que se encarga de la actualización de la moneda:
busca el siguiente trozo de código:
y reemplazalo por este otro código:
esta chequeado así que es imposible que te falle, lo hice sobre la versión 1.4.9.1 y anda bien, acordate que la moneda se actualiza cuando ingresas en el admin, o sea que se va a actualizar cada ves que entres al Dashboard del Admin
Dejo también el archivo currency.php por si lo quieren descargar y no hacer los cambios a mano, dicho archivo debe estar dentro de la carpeta; admin/model/localisation/
Descarga:
anda a tu archivo: admin/model/localisation/currency.php y busca la función esta:
Code: Select all
public function getTotalCurrencies() {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "currency");
return $query->row['total'];
}
Code: Select all
private function currency($from, $to) {
$from = urlencode($from);
$to = urlencode($to);
$url = "http://www.google.com/ig/calculator?q=$from=?$to";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$content = curl_exec($ch);
curl_close($ch);
$data = explode('"', $content);
$data = explode(' ', $data[3]);
$var = $data[0];
return round($var,9);
}
Code: Select all
public function updateCurrencies()
Code: Select all
foreach ($query->rows as $result) {
$data[] = $this->config->get('config_currency') . $result['code'] . '=X';
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
$lines = explode("\n", trim($content));
foreach ($lines as $line) {
$currency = substr($line, 4, 3);
$value = substr($line, 11, 6);
if ((float)$value) {
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = '" . $this->db->escape($currency) . "'");
}
}
Code: Select all
foreach ($query->rows as $result) {
$value = $this->currency($this->config->get('config_currency'),$result['code']);
if ((float)$value) {
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
}
}
Dejo también el archivo currency.php por si lo quieren descargar y no hacer los cambios a mano, dicho archivo debe estar dentro de la carpeta; admin/model/localisation/
Descarga:
Muy bueno cofran!! Esto tendría que estar incluido en la 1.5.0
Hilde
Hilde
Commercial Contributions:Bulk Specials| Bulk Update Prices|Search Tyre Pro
Free Contributions: Youtube video (oc 1.5.x) | Search History Report (oc 1.5.x) | Product Filter by Category (oc 1.5.x)|Youtube Popup
More Free & commercial mods: www.fpress.com
Wow Cofran, es increible el conocimiento que tienes. Como dice Hildebrando, esto tenía que estar incluido en la próxima versión porque hay monedas de muy pequeño valor cuya cotización está mejor ajustada en google. Y no tiene sentido ofrecer la práctica mayoría de monedas mundiales si después el cambio da problemas o es incorrecto.
Mi gratitud total, cofran,te mandaba una cerveza por internet si pudiera
De todas formas, tengo una duda, yo uso la version 1.48b, ¿el currency.php es el mismo que en la versión 1.4.91 o se modificó y debo actualizarme a la última versión?
GRACIAS!!!!!!!!!!!!!
Mi gratitud total, cofran,te mandaba una cerveza por internet si pudiera
De todas formas, tengo una duda, yo uso la version 1.48b, ¿el currency.php es el mismo que en la versión 1.4.91 o se modificó y debo actualizarme a la última versión?
GRACIAS!!!!!!!!!!!!!
Probado y funciona perfecto, muy feliz.
Por ponerle un pero ahora, sería quizás redondear la cifra final al alza para que todos los precios no sean 4.52 10.81 9.04, etc. y así ya sería la máxima perfección. Pero de todas formas, así está tan próximo al cambio real que es genial y suficiente para mí.
Saludos.
Por ponerle un pero ahora, sería quizás redondear la cifra final al alza para que todos los precios no sean 4.52 10.81 9.04, etc. y así ya sería la máxima perfección. Pero de todas formas, así está tan próximo al cambio real que es genial y suficiente para mí.
Saludos.
Generalmente uso el conversor de moneda y a veces me sucede lo mismo que relatas. Igualmente supongo que las actualizaciones al ser automaticas pueden tener sus fallas... no sabia que provenia de yahoo la info.
caran, lo que ocurre es que de donde toma los datos opencart que es un .csv generado por yahoo, no aparecen muchos decimales en las monedas pequeñas y claro, las discrepancias con el cambio real son brutales. Sin embargo google es más preciso porque aporta bastantes más decimales y con esta modificación de cofran, ya no da esos problemas en monedas de poco valor como el peso colombiano.
Saludos
Bueno soy nuevo con Opencart y me parece super ! pues me gustaria saber que informacion debe ir cuando voy a ingresar una nueva moneda que es el peso colombiano
* Currency Title: Peso
* Code: COP
Symbol Left: $
Symbol Right: ?
Decimal Places: ???
Value: ???????? pues no se que valor Poner para que tome efecto. puse 1895.20 pero no funciona me hace una conversion extraña
Alguien puede ayudare:
email: tomas.zambrano@simbiotica.com.co
Bueno soy nuevo con Opencart y me parece super ! pues me gustaria saber que informacion debe ir cuando voy a ingresar una nueva moneda que es el peso colombiano
* Currency Title: Peso
* Code: COP
Symbol Left: $
Symbol Right: ?
Decimal Places: ???
Value: ???????? pues no se que valor Poner para que tome efecto. puse 1895.20 pero no funciona me hace una conversion extraña
Alguien puede ayudare:
email: tomas.zambrano@simbiotica.com.co
Buenas tardes Cofran.... El cron jobs se tiene que hacer con get a "system/library/currency.php" o a "/admin/model/localisation/currency.php"? no logré encontrar eso en ningun Foro..cofran wrote:cron jobs en el servidor, saludos!
Gracias desde ya muchas gracias..
Hola Amigos
Tengo un problema y es que me aparece un texto entre medio de la moneda. Tengo el sitio en español y me aparece el texto de las unidades en ingles entre medio del texto.
saben como corregir ese problema ?
Gracias
$2thousand_point567decimal_point00
Tengo un problema y es que me aparece un texto entre medio de la moneda. Tengo el sitio en español y me aparece el texto de las unidades en ingles entre medio del texto.
saben como corregir ese problema ?
Gracias
$2thousand_point567decimal_point00
Who is online
Users browsing this forum: Google [Bot], Semrush [Bot] and 63 guests