Página 1 de 1

Dolar do dia - Moeda Automática

Enviado: 03 Nov 2016, 08:36
por wellington09
O opencart atualiza a moeda de forma automática, porem ele pega a variação do dolar a cada X "minutos".

Alguem sabe o que precisa fazer no arquivo abaixo, para que ele pegue o dolar do dia(que no caso é o dolar fechado no dia anterior)

admin/model/location/currency.php

Linha 123
curl_setopt($curl, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv');


Utilizando Opencart Versão 2.3.0.2

Re: Dolar do dia - Moeda Automática

Enviado: 05 Nov 2016, 10:09
por valdeir2000
Substitua essas linhas https://github.com/opencart/opencart/bl ... #L111-L115 por
Código: Selecionar todos

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND DATE(`date_modified`) < '" .  date('Y-m-d') . "'");

Isso vai fazer ele a fazer atualização apenas no dia seguinte da última modificação.

*Não testei

Re: Dolar do dia - Moeda Automática

Enviado: 07 Nov 2016, 08:36
por wellington09
Obrigado pela dica valdeir2000 .

Só uma dúvida.

A mudança esta no model de admin, se eu não acessar o admin a atualização no valor da loja(catalog) são afetados ?
ou seja, a atualização é de forma automática ou preciso acessar o painel para que o dolar seja atualizado ?

Re: Dolar do dia - Moeda Automática

Enviado: 07 Nov 2016, 16:56
por valdeir2000
É necessário acessar o admin para atualizar (talvez não seja, mas pelo que lembro é somente assim).

Alguém me corrija se estiver errado.

Re: Dolar do dia - Moeda Automática

Enviado: 08 Nov 2016, 07:49
por wellington09
Ok, vou fazer alguns testes para verificar esta questão.
Pq o correto é atualizar quando alguém acessar a loja, ou seja, toda vez que a loja for acessada independente da página que o internauta estiver navegando.

Re: Dolar do dia - Moeda Automática

Enviado: 09 Nov 2016, 08:07
por wellington09
Só atualiza a moeda caso o administrador acesse o painel e va até a página de MOEDAS, não precisa nem clicar no botão atualizar pois o mesmo já é atualizado.
Então se uma loja virtual aonde o administrador não acessa a loja ao sábado ou ao domingo já viu a confusão nos valores neh ?

Pensei em criar uma CRON para a página admin MOEDAS mas como ela necessita de um login, não vai dar certo.
O que pode ser feito é criar uma página separada que atualiza a moeda que utiliza uma cron em determinado horário
EX:
http://www.minhalojavirtual.com.br/atualiza-moeda.php

Como o HEADER é acessado em todas as páginas da loja, o que pode ser feito tb é atualizar a moeda a partir deste controlador
C:\wamp\www\azetiquetas.com.br\catalog\controller\common\header.php

Não sei se existe um módulo que atualiza a moeda de forma automatica, se alguem souber deixe aqui a dica.

Re: Dolar do dia - Moeda Automática

Enviado: 10 Nov 2016, 12:36
por valdeir2000
Coloca esse arquivo na pasta catalog/controller/localisation/currency.php

https://gist.github.com/valdeir2000/2b0 ... 8d841e79d9

Depois basta configurar o cron com o comando
Código: Selecionar todos
curl --url https://www.SUA-LOJA.com.br/index.php?route=localisation/currency

Re: Dolar do dia - Moeda Automática

Enviado: 10 Nov 2016, 16:20
por wellington09
Boa valdeir2000, legal você ter disponibilizado no git, vai ajudar a galera.

A unica forma por enquanto é deste jeito mesmo, pq mesmo que ninguém acesse o site a cron estará acessando.

A outra opção, fica na questão do arquivo catalog\controller\common\header.php criando uma função por lá como você fez com catalog/controller/localisation/currency.php e deixar que assim que o usuário acessar a loja a consulta da moeda é feita pelo acesso do internauta, porem ai fica a questão de que toda vez que o usuário der um refresh a função sera executada e vai acessar o site finance.yahoo.com e fazer a "atualização"

No arquivo que esta no git fica só a questão da linha 9, isso para quem quiser pegar o DOLAR do dia anterior, para quem não quiser basta deixar como esta.

Atualiza no git e coloca um comentário pra galera.
Código: Selecionar todos
// MOEDA ATAULIZADA A CADA X minutos
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'"); // linha 9

// MOEDA FECHADA NO DIA ANTEIOR
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND DATE(`date_modified`) < '" .  date('Y-m-d') . "'");
Se eu estiver falando bobeira me corrija.

E obrigado novamente.