SergeyKH Опубликовано 7 августа, 2012 Жалоба Поделиться Опубликовано 7 августа, 2012 Проблема заключается в следущем. Разные поставщики присылают оптовые прайсы в разных валютах, доллары, евро, гривны. Вывожу на сайте гривны. Заливается и хранится в базе только одна валюта. Но курсы меняются каждый день, поэтому возникает проблема. Потому что, например, один товар стоил 100 грн., а другой 100 евро, курс евро был, допустим, 9,94. Поэтому в админке харнится цена 10,06 на первый товар и 100 на второй. Потом курс меняется и становится, например, 10,24 (грн. за евро). В итоге на сайте выводится уена на первый товар 103,01 грн. (!вот тут проблема цена на товар не менялась, а он подорожал на 3 грн., а все из-за того, что валюта админки не та в которой оптовый прайс!), а на второй 1024 грн. (как и должно быть).Думаю было бы целесообразно в при добавлении товара указывать валюту и в админке выводить ту валюту, в которой был добавлен товар, и ничего не конвертировать для админки, но на сайте выводить те валюты которые попросит покупатель, соответветственно по курсу валют, который может меняться каждый день.Как мне кажется это очень ценная доработка и не сложно реализуемая, единственная проблема будет с сортировкой товара (например, по цене), там надо будет на лету пересчитывать.Вобщем кто-то делал такое? Есть решения этой проблемы? Или мысли как это сделать? Цитата Ссылка на сообщение Поделиться на другие сайты
rand Опубликовано 8 августа, 2012 Жалоба Поделиться Опубликовано 8 августа, 2012 Есть решение, добавляете в базе к вариантам 2 колонки в одной валюты в другой суммы. В симпла продакт.тпл в 2-ух местах добавляешь:<li class="variant_priceval"> <input name="variants[priceval][{$variant->id}]" type="text" value="{$variant->priceval|escape}" /> <input name="variants[val][{$variant->id}]" type="text" value="{$variant->val|escape}" style="width:50px;"/> </li>и для пустых:<li class="variant_priceval"> <input name="variants[priceval][]" type="text" value="0.00" /> <input name="variants[val][]" type="text" value="EUR" style="width:50px;"/> </li>создаете отдельный скрипт, который узнает текущий курс, и проставляет цены в нужной валютеи ставите его в крон, каждое утро. Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Немного не то. Я сам смогу менять курсы, это не важно, а конвертацию делать на ходу исходя из выбранной пользоваьтелем валюты и валюты товара. В это и загвоздка. Раньше конвертация происходила только исходя из выбранной пользователем валюты.Добавил столбец cur_id в базу s__variants, ну и вытащил его с помощью функции get variants и get variant, добавил поля в импорт, экспорт. Осталось только изменить функцию convert в Money.php, формулу я придумал: вместо$result = $result*$currency->rate_from/$currency->rate_to;пишем$result = $result*$rate_to(варианта товара)/$rate_from(варианта товара)*$currency->rate_from/$currency->rate_to;Но вот как инициализировать нужный вариант (т.е. цену которого сейчас будем конвертировать)? Пробовал$this->product->variant->rate_to;Не работает.Знатоки симплы помогайте, осталось один шаг сделать и будет новая доработка, которой все смогут пользоваться.Повторяю вопрос: как обратиться к варианту товара, который мы сейчас конвертируем из файла Money.php? Цитата Ссылка на сообщение Поделиться на другие сайты
pikusov Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 Никак, в эту функцию передается только сумма и, опционально, валюта в которую нужно конвертировать. Эта функция никакого отношения к вариантам не имеет, всё что она делает - это умножает переданные ей числа между собой. Но этого достаточно, просто передавайте туда валюту варианта {$v->price|convert:$v->cur_id} Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 просто передавайте туда валюту варианта {$v->price|convert:$v->cur_id}Простите, это работает для 202? А то что-то какая-то ерунда все время выскакивает, даже не могу понять что нужно на что умножать. чтоб получить такие странные результаты. Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Пробовал при вытяжке вариантов добавить(cur.rate_to/cur.rate_from) as con_priceа потом в шаблоне {$product->variant->price|convert/$product->variant->con_price}В результате получалось какое-то число очень длинное, причем до запятой только один знак, а потом все остальные, например, 5.45653123565.Пробовал и ваш вариант, но в результате всегда 44 !? Цитата Ссылка на сообщение Поделиться на другие сайты
pikusov Опубликовано 10 августа, 2012 Жалоба Поделиться Опубликовано 10 августа, 2012 извините, я перепутал - нужно же конвертировать из валюты варианта, а не в неё, так что так не получится. Прийдется переделывать convert и передавать в нее дополнительным параметром id валюты варианта Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Вот а как? Как передать этот параметр?Кстати, а через шаблон нельзя? Просто формулу там вставить price|convert разделить на мой con_price и вывести результат с двумя знаками после запятой, там можно как то формулы в смарти писать? Так было бы проще.. Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Ура получилось!! Использовал такую конструкцию:{math equation="x*y" x=$product->variant->price y=$product->variant->con_price assign="conv"}<span>{$conv|convert}</span>Правда в мануале смрти написано, что это ресурсоемкая функция, поэтому ее лучше не использовать. Но что поделаешь? По другому как сделать я не заню.Осталось поправить сортировку, корзину, заказы..(( Цитата Ссылка на сообщение Поделиться на другие сайты
SergeyKH Опубликовано 10 августа, 2012 Автор Жалоба Поделиться Опубликовано 10 августа, 2012 Странно, после того как добавил эти доработки перестала работать корзина, нажимаю на купить, переходит в корзину и говорит мол товаров нет... Никто не знает что такое? Цитата Ссылка на сообщение Поделиться на другие сайты
Linkanoid Опубликовано 24 сентября, 2013 Жалоба Поделиться Опубликовано 24 сентября, 2013 Подскажите, а можно сделать так чтобы в админке можно было вводить цены в долларах и менять самостоятельно курс, а на сайте цену товаров отображать в рублях? Это актуально для магазинов работающих по системе дропшиппинг, когда у поставщика цена в долларах, приходится постоянно корректировать все цены на сайте при изменении курса доллара - это мега гемор, если товаров много... Цитата Ссылка на сообщение Поделиться на другие сайты
oks Опубликовано 15 апреля, 2014 Жалоба Поделиться Опубликовано 15 апреля, 2014 Подскажите, а можно сделать так чтобы в админке можно было вводить цены в долларах и менять самостоятельно курс, а на сайте цену товаров отображать в рублях? Это актуально для магазинов работающих по системе дропшиппинг, когда у поставщика цена в долларах, приходится постоянно корректировать все цены на сайте при изменении курса доллара - это мега гемор, если товаров много...Можно. Но на сайте такая забавная арифметика получается, без внесения правок!)) Я ставлю в админке у.е. и задаю курс, посетители видят к примеру гривну целым числом. Сайт округляет и снимает копейки сам. Итоговая сумма заказа у меня в админке и у посетителя одинаковая, но вот если проверять по каждой позиции в корзине, конечно хохма. Разница может гулять в 20-50 грн, если позиций много. Что-то типа 5шт. * 20 грн. = 107 грн.Пришлось пару раз оправдываться перед клиентами и объяснять " Понимаете, у нас в админке сайта на всем товаре курс в долларах...")) Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 15 апреля, 2014 Жалоба Поделиться Опубликовано 15 апреля, 2014 Ставите гривне "Показывать копейки" и ваша проблема решена. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.