WebAsyst, встановлення за замовчуванням різних валют для адміністратора і користувачів |
|||
09.11.2015 в 00:24 | NARDO | Теги: WebAsyst, Shop-Script, валюта, встановлення валют, вебасіст |
|||
|
Tweet |
Всім привіт. У сьогоднішній статті поговоримо про проблему,
яка актуальна для більшості бівалютних магазинів на платформі WebAsyst
Shop-Script версій від 280-й, та пізніших, а саме про те які є інструменти для
встановлення за замовчуванням різної валюти для адміністраторів магазину так і
для покупців.
Сучасні реалії такі, що нестабільність на валютному ринку багатьох
країн безпосередньо впливає на ціну
імпортованого товару, відповідно продавець
хоче мати гнучкий та простий
інструмент для коригування вартості
товару в максимально зручний та
простий спосіб.
Проблема э в тому, що функція валюти в WebAsyst Shop-Script реалізована трохи непродумано для пострадянських реалій. У версіях 280 та вище
встановлена валюта за замовчуванням є такою як для адмінки,
так і для веб морди
яка доступною користувачам
і клієнтам магазину. І в цьому є два головних
недоліки. Перший - це можливість
оформляти замовлення в декількох
валютах, а це в принципі суперечить законодавству України. Другий -
це неможливість швидкого коригування
курсу гривні по відношенню до долара,
якщо останній не є основною валютою. Ідеальним вирішенням була б
можливість для адміністратора
використовувати валюту за замовчуванням
долар, а для клієнта валютою за замовчуванням виступала б гривня. Але,
на жаль, базовий функціонал не
надає такої можливості. Звичайно
можливо звернутися до програміста,
що б переписав код, але я думаю ті, хто читають даний
блог хочуть рішення просте
і найголовніше халявне;)
Вихід
є, представляю два робочі рішення, обидва
не є ідеальні, але у випадку бівалютної системи функціонують повноцінно та без збоїв. Приклади розв'язання проблеми дані для задачі, у якій внутрішньою
основною валютою за замовчуванням
є долар, а основною валютою для клієнтів повинна стати гривня.
Переконайтеся що в
адмінці у вас встановлено дві валюти, гривня і долар. Валютою за замовчуванням є долар. Для початку знайдемо
файл «class.currency.php», його нам
необхідно буде редагувати, він розташований у директорії «published\SC\html\scripts\classes\»
Огляд рішень:
- Рішення підійде для тих, хто хоче, що б була
можливість оформляти замовлення і
виставляти рахунок як у гривні,
так і в доларі.
Для початку зайдіть у БД вашого магазину до таблиці SC_currency_types і визначте CID для майбутньої основної валюти клієнтської частини сайту, в моєму випадку ГРН, це цифра «3» (у вас може відрізнятися). У таблиці SC_settings створіть новий рядок де settings_value відповідає значенню «3», settings_constant_name відповідає значенню «CONF_TWO_CURRENCY». Далі у файлі «class.currency.php» шукаємо рядок «$defaultCurrencyInstance->loadByCID(CONF_DEFAULT_CURRENCY);» його змінюємо на «$defaultCurrencyInstance->loadByCID(CONF_TWO_CURRENCY);». Усе )
Недолік цього рішення у тому що в адмінці магазину ціни будуть відображатися за замовчуванням у доларах, але підпис біля них буде UAH або ГРН (залежно від того як ви обізвали вашу валюту при створенні) Це варто пам'ятати при редагуванні цін та під час виставлення нового товару.
- Це рішення більш елегантне, але в цьому випадку оформляти замовлення
та виставляти рахунок можна тільки в тій валюті, яка є
основною для клієнтської частини сайту. Знаходимо рядок
«$selectedCurrencyInstance->loadByCID($customerEntry->CID);» та міняємо на «$selectedCurrencyInstance->loadByCID(3);» де «3» це є ваш CID для гривні. Далі знаходимо рядок «$selectedCurrencyInstance = Currency::getDefaultCurrencyInstance();» та міняємо на «$selectedCurrencyInstance->loadByCID(3);» де «3» це є ваш CID для гривні.
У адмінці всі валюти відображаються коректно. Також за допомогою CSS ви можете приховати відображення долара в клієнтській частині сайту, залишивши тільки гривню, але при цьому в адмінці у вас буде основна валюта долар, яка дозволить оперативно коригувати курс, а значить і всі ціни на вашому сайті.
Повторюся, ці обидва рішення не є ідеальними. Особливість стандартного движка у тому, що функціонал який дозволяє розділяти основні валюти для морди і адмінки не передбачений розробниками та потребує для коректної та зручної роботи з такою функцією прямо з адмінки значної переробки великого обсягу коду.
comments powered by Disqus