Создание курса валюты и вывод второй цены в грн. Ubercart + drupal 6

Главные вкладки

Аватар пользователя Nuc Nuc 24 ноября 2008 в 19:11

Ubercart + drupal 6.

Есть практически готовый интернет магазин.
Базовая единица - доллар, $.
Все цены соответственно указаны в долларах.

Нужно ввести понятие курса, который можно менять.
Курс нужен для вывода второй цены, в грн., которая будет расчитываться автоматически.

Например:
Ноутбук Asus F3KA
Цена: 100$ (628 грн).

Обязательно, вторая цена должна расчитываться автоматически, так как курс меняется часто, возможно несколько раз в день.

Подскажите, есть модуль, который можно взять за основу. Думаю, что данная проблема уже неоднократно поднималась.

Комментарии

Аватар пользователя glu2006 glu2006 24 ноября 2008 в 22:27

Модуль придется писать самому, поскольку Вам необходимо брать данные о курсе с какого нибудь банковского сайта.
Как хранить эти данные вы решили? в какой валюте будет вестись учет? Какими платежными методами сможет пользоваться покупатель?
Исходя из этого уже надо думать о модуле, ведь если Вам нужно только показывать цену в гривне, берете xml с любого бесплатно отдающего сайта украинского банка, поскольку не все банки отдают курсы валют бесплатно, загоняете курс в глобальную переменную и все, дальше на nodeapi добавляете в объект $node свою переменную $node->uah и в нее будет писаться значение: $node->uah = $node->sell_price * $kurs. если преследуются другие цели, то см. выше.

Аватар пользователя direqtor direqtor 25 ноября 2008 в 10:26

Если курс уже есть, можно обойтись только функцией темизации в шаблоне темы.
Но дербанить курс из банков - писать свой модуль. Слишком они разные эти форматы на банколвских сайтах.

Аватар пользователя glu2006 glu2006 25 ноября 2008 в 11:44

Все зависит от задач. Иногда необходимо отображать более менее оперативную информацию и тут уж без парсинга никуды )))

Аватар пользователя Nuc Nuc 25 ноября 2008 в 14:09

Нужно темизировать разные вещи.
1. Темизация страницы ноды (самого товара) - просто.
2. Темизация страницы каталога (Сделано через Views) - немного сложней.
3. Темизация корзины - спорный вопрос, также думаю, что не оч. слонжо.
4. Темизация внутренней системы хранения заказов - вот тут я еще не разбирался.

Фактически везде, где есть цена, нужно изменять функции темизации.

Аватар пользователя glu2006 glu2006 25 ноября 2008 в 16:14

Nuc wrote:
Нужно темизировать разные вещи.
4. Темизация внутренней системы хранения заказов - вот тут я еще не разбирался.

Что Вы понимаете под понятием темизации внутренней системы хранения заказов.

Хранить данные о заказах все равно придется в одной валюте, в противном случае возникнет путанка в отчетах - гарантировано.

Аватар пользователя direqtor direqtor 25 ноября 2008 в 14:32

Если ты темизируешь вывод одного поля, то достаточно одной функции: и views, и вывод страницы каталога будут использовать ее.
В том самом месте, где ты указываешь как выводить поле на вкладке Display fields или в настройках представлений, ты задаешь функцию типа theme_kakoe_to_pole_formatter. Перехватив её вывод в файле template.php ты изменяешь её во всех случаях.

Аватар пользователя fixit fixit 1 апреля 2010 в 12:48

Это что, еще один пробел в Уберкарте? в любом оскоммерсе это встроено, а здесь нужно писать модуль... То, что я видел у буржуев привязано к стране, тянет обновления с курсовых сайтов и не работает так просто как надо..

Или все-же есть готовое решение для простого вывода валюты, которую покупатель может выбрать из списка, и чтоб администратор мог выставить курс в админке ?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 1 апреля 2010 в 20:27

fixit: если вам нужно готовое,лёгкое решение для торговли в интернете - бегите от друпала и уберкарта как чёрт от ладана. Я серьёзно.

Или готовьте бабло/время. Драпал - это не бесплатное решение.

Аватар пользователя Енот Енот 19 апреля 2010 в 10:45

я например хочу ввести валюту в тенге, что бы долларовая не отображалась а шла только тенговая валюта (KZT) помосчь есть, не?

Аватар пользователя glu2006 glu2006 19 апреля 2010 в 23:39

<a href="mailto:venom280@drupal.org">venom280@drupal.org</a> wrote:
Вот сдал недавно www.afkart.ru Ubercart+Drupal 6. Очевидное рядом.

Курсы тянете откуда-то или ручками?
+ откройте завесу тайны при платеже он-лайн в какой валюте люди платят?

Аватар пользователя venom280@drupal.org venom280@drupal.org 20 апреля 2010 в 23:06

Так получилось, что для навигации писал свой модуль.
Немного позже была поставлена задача, добавить конвертацию.

1. Основные цены в евро и оплата в евро.
2. Для хранения и изменения курса используется variable_get и variable_set, соответственно таблица variable.
Для ручного изменения курса добавил MENU_LOCAL_TASK страницу.
Crontab запускает wget файла php, который с адреса (как видно в параметрах дата):

http://export.rbc.ru/free/cb.0/free.fcgi?period=DAILY&tickers=EUR&d1=20&m1=04&y1=2010&d2=20&m2=04&y2=2010&lastdays=0&separator=|&data_format=BROWSER

берет значение и ставит его. Поройтесь на сайте РБК там валют туева хуча.

3. Предупреждая вопросы о файле.php
Поместите две строчки в начале пустого php файла:

  include_once './includes/bootstrap.inc';
  drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

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

4. Вывод цен. Валюта хранится в куках у юзера. Я считаю расточительством держать это в базе, когда каждый запрос на счету.
Для вывода используется своя функция-обертка. Тупо, где вывод цены, стоит функция с параметром цены из базы (евро). Функция берет куки, если надо конвертировать берет значение из variable.

Аватар пользователя kodo kodo 21 апреля 2010 в 6:02

Поделюсь и я своим опытом.
Все когда-то подробно расписал у себя в блоге - http://dovbysh.com/ru/blogs/kodo/dengi-na-drupale
Использую модуль Money CCK field
Посмотреть в работе можно http://knife-life.jp/ru/shop/master/rockstead
Основной смысл - дать возможность пользователям оценить стоимость товара в удобной для них валюте. В примере я убрал все экзотические валюты, оставил только валюты для потенциальных клиентов.
Основной минус - базовая валюта - иены, и счет будет выстален в иенах, соответственно курс валют Яхо не будет совпадать с курсом ПайПала + (если не ошибаюсь)% за перевод валюты.
Да, используя модуль можно и сразу вывести несколько валют по товару - в моем случае этого не надо.

Аватар пользователя glu2006 glu2006 21 апреля 2010 в 9:44

Значит, как говорится воз и ныне там. Тогда ТС вам нужен мини модуль с всего лишь 1 переменной для курса валют которую можно задавать либо руками в админке, либо тащить из какого-то внешнего ресурса, а дальше просто в шаблоне вывода $node->price * vafiable_get('kurs', 29);
либо на лету (динамически в зависимости от даты и времени) создавать http запрос на РБК, распарсивать значение, писать его в static и тут-же умножать $node->price на это значение. во втором варианте в админку вообще лазить не придется главное чтоб сайт РБК не упал Wink

Аватар пользователя la_speranza la_speranza 18 июня 2010 в 11:12

glu2006 wrote:
нужен мини модуль с всего лишь 1 переменной для курса валют которую можно задавать либо руками в админке, либо тащить из какого-то внешнего ресурса

Сколько будет стоить написание модуля, чтобы в админке ручками вводился курс доллара, а для пользователей была видна цена всех товаров в рублях?

Аватар пользователя glu2006 glu2006 18 июня 2010 в 11:30

la_speranza wrote:
Сколько будет стоить написание модуля, чтобы в админке ручками вводился курс доллара, а для пользователей была видна цена всех товаров в рублях?

А в ордера какую цену писать?
А оплачивать покупку пользователь должен в какой валюте?
Нужно ли хранить цену проданного товара в долларах?
Нужно ли хранить курс на момент продажи?

Вот как-бы несколько первых составляющих для оценки работы.

ЗЫ. контакты в профиле пишите попробуем пообщаться.

Аватар пользователя venom280@drupal.org venom280@drupal.org 22 апреля 2010 в 13:54

Если сайт РБК упадет,то функция variable_get('kurs', 29); как раз содержит дефолтное значения для подстраховки.
А парсится вывод сайта РБК $rbk=explode("|",$переменная); А переменная $rbk[5] будет равна курсу.

Аватар пользователя RASSEL RASSEL 22 сентября 2011 в 17:51

Sywooch, большое спасибо за модуль (uc_alt_price.zip), но ...

Он выводит вторую цену только в каталоге товаров! А как допилить, чтоб и в самом товаре тоже выводилась 2-я цена ?!?!?
Копался-копался понять не могу.

Сборка OpenStore.

Аватар пользователя RASSEL RASSEL 24 сентября 2011 в 23:10

Ура, решил!

Заменил строки в файле preprocess_common.inc модуля general: sites\all\modules\general\preprocess\preprocess_common.inc !!!

920 и 931 строка.

920 $vars['show_cat_product_price'] = '

('.$alt_price. $suffix.')

931 $vars['show_cat_product_price'] = '

'.$node->content['sell_price']['#value']. $alt_price.'

';

Вывелтв в node-product-left-right.tpl.php. темы.

18 строка.

<?php print $show_cat_product_price; ?>

Может кому и пригодится. Пока работает отлично !

Аватар пользователя Sywooch Sywooch 24 октября 2011 в 17:17

sight писал Вам в личку, продублирую сюда. Может кому поможет.
Вставлять куда хочется )))
<?php print uc_alt_price_format($node->sell_price);?>