Перейти к содержанию
Aleksandr1

[Решено] Как для ОС 2.1 сделать +3% к курсу?

Рекомендуемые сообщения

А как для ОС 2.1 сделать +3% к курсу? К примеру евро берется с цб рф и при конвертации +3% к курсу добавляется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В модели currency умножьте value на 1,03

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Модель currency (это файл) нашли у админки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А подумать немного? Это же совсем элементарная задача.

В функции refresh после $value = utf8_substr($line, 11, 6); добавить $value = $value * 1.03; и всё)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<?php
class ModelLocalisationCurrency extends Model {
	public function addCurrency($data) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "currency SET title = '" . $this->db->escape($data['title']) . "', code = '" . $this->db->escape($data['code']) . "', symbol_left = '" . $this->db->escape($data['symbol_left']) . "', symbol_right = '" . $this->db->escape($data['symbol_right']) . "', decimal_place = '" . $this->db->escape($data['decimal_place']) . "', value = '" . $this->db->escape($data['value']) . "', status = '" . (int)$data['status'] . "', date_modified = NOW()");

		if ($this->config->get('config_currency_auto')) {
			$this->refresh(true);
		}

		$this->cache->delete('currency');
	}

	public function editCurrency($currency_id, $data) {
		$this->db->query("UPDATE " . DB_PREFIX . "currency SET title = '" . $this->db->escape($data['title']) . "', code = '" . $this->db->escape($data['code']) . "', symbol_left = '" . $this->db->escape($data['symbol_left']) . "', symbol_right = '" . $this->db->escape($data['symbol_right']) . "', decimal_place = '" . $this->db->escape($data['decimal_place']) . "', value = '" . $this->db->escape($data['value']) . "', status = '" . (int)$data['status'] . "', date_modified = NOW() WHERE currency_id = '" . (int)$currency_id . "'");

		$this->cache->delete('currency');
	}

	public function deleteCurrency($currency_id) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "currency WHERE currency_id = '" . (int)$currency_id . "'");

		$this->cache->delete('currency');
	}

	public function getCurrency($currency_id) {
		$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "currency WHERE currency_id = '" . (int)$currency_id . "'");

		return $query->row;
	}

	public function getCurrencyByCode($currency) {
		$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "currency WHERE code = '" . $this->db->escape($currency) . "'");

		return $query->row;
	}

	public function getCurrencies($data = array()) {
		if ($data) {
			$sql = "SELECT * FROM " . DB_PREFIX . "currency";

			$sort_data = array(
				'title',
				'code',
				'value',
				'date_modified'
			);

			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];
			} else {
				$sql .= " ORDER BY title";
			}

			if (isset($data['order']) && ($data['order'] == 'DESC')) {
				$sql .= " DESC";
			} else {
				$sql .= " ASC";
			}

			if (isset($data['start']) || isset($data['limit'])) {
				if ($data['start'] < 0) {
					$data['start'] = 0;
				}

				if ($data['limit'] < 1) {
					$data['limit'] = 20;
				}

				$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
			}

			$query = $this->db->query($sql);

			return $query->rows;
		} else {
			$currency_data = $this->cache->get('currency');

			if (!$currency_data) {
				$currency_data = array();

				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency ORDER BY title ASC");

				foreach ($query->rows as $result) {
					$currency_data[$result['code']] = array(
						'currency_id'   => $result['currency_id'],
						'title'         => $result['title'],
						'code'          => $result['code'],
						'symbol_left'   => $result['symbol_left'],
						'symbol_right'  => $result['symbol_right'],
						'decimal_place' => $result['decimal_place'],
						'value'         => $result['value'],
						'status'        => $result['status'],
						'date_modified' => $result['date_modified']
					);
				}

				$this->cache->set('currency', $currency_data);
			}

			return $currency_data;
		}
	}

	public function refresh($force = false) {
		if (extension_loaded('curl')) {
			$data = array();

			if ($force) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
			} else {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
			}

			foreach ($query->rows as $result) {
				$data[] = $this->config->get('config_currency') . $result['code'] . '=X';
			}

			////// Курсы по ЦБ РФ //////
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, 'http://www.cbr.ru/scripts/XML_daily.asp');
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$content = curl_exec($ch);
			curl_close($ch);

			$doc = new DOMDocument();
			$doc->loadXML($content);
			$valute = $doc->getElementsByTagName("Valute");
			
			$cur_val = $this->config->get('config_currency') == 'RUB' ? 'RUB' : $this->config->get('config_currency');
	
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");

			$ret = array();

			foreach( $valute as $value )
			{
				$icn = $value->childNodes;
				$code = $icn->item(3)->nodeValue;
				$nom = intval($icn->item(5)->nodeValue);
				$value = floatval(str_replace(",", "." , $icn->item(9)->nodeValue));
				$ret[$code] = ($value/$nom);
			}

			if ($cur_val == 'RUB') {
				foreach ($query->rows as $result) {
					 if($ret[$result['code']]){
						$value = 1 / $ret[$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']) . "'");
						}
					 }
				}
			}

			if ($cur_val != 'RUB') {
				foreach ($query->rows as $result) {
					if($result['code'] == 'RUB') {
					$value = $ret[$cur_val];
					if ((float)$value) {
						$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = 'RUB'");
					}
					} else {
						$value = $ret[$result['code']];
						if ((float)$value) {
						$val = (float)$ret[$cur_val] / (float)$value;
							$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $val . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
						}
					}
				}
			}		
			
			/////////			
			

			$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");

			$this->cache->delete('currency');
		}
	}

	public function getTotalCurrencies() {
		$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "currency");

		return $query->row['total'];
	}
}

У меня модифицирован файл под курсы с ЦБ РФ, и строчек нужных нет ;((( Что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После 159 строчки добавляете умножение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как именно не выходит и что глюки при входе в админку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вставляю строчку, обновляю курс и меня выбрасывает из админки и на странице пишется: имя сайта.ru не может обработать запрос;((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 Лучше тогда сделайте так (добавив в два места). 

А выброс тут ни причём, в чём редактируете код, как закачиваете на сервак или локалхост?

					if($result['code'] == 'RUB') {
					$value = $ret[$cur_val];
					if ((float)$value) {
						$value = $value * 1.03;
						$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = NOW() WHERE code = 'RUB'");
					}
					} else {
						$value = $ret[$result['code']];
						if ((float)$value) {
							$value = $value * 1.03;
						$val = (float)$ret[$cur_val] / (float)$value;
							$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $val . "', date_modified = NOW() WHERE code = '" . $this->db->escape($result['code']) . "'");
						}
					}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не подскажите по обновлению курсов валют: судя по моему коду в какое время обновляются валюты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это происходит, когда в админке нажимаете кнопку обновить,так у всех по умолчанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если стоит автообновление, то при каждом заходе в админку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×