На 1 януари 2026 г. България приема еврото като официална валута. Този инструмент автоматизира преизчисляването на всички цени в OpenCart магазин от български лев (BGN) в евро (EUR) съгласно законово определения обменен курс от 1 EUR = 1.95583 BGN. Промяната е необходима, понеже от тази дата всички интеграции с куриерски услуги и т.н. ще очакват да получават ценовите стойности в общата валута на ЕС.
Важно: Преди да използвате този инструмент, трябва да добавите валутата EUR в настройките на вашия OpenCart магазин. Скриптът НЕ създава валута EUR автоматично - той само проверява дали съществува и преизчислява цените.
Скриптът може да се изпълнява по два начина:
- Команден ред (CLI): Препоръчителният метод. Избягва проблеми с timeout при изпълнение през уеб сървър, особено при магазини с голям брой продукти.
- Уеб интерфейс: Възможен, но не се препоръчва за големи магазини поради риск от прекъсване при ограничения на времето за изпълнение.
- PHP 7.4 или по-нова версия
- Инсталация на OpenCart
- Достъп до база данни
- Валутата EUR трябва да е добавена в настройките на магазина
- Препоръчителен е достъп чрез команден ред (за избягване на проблеми с timeout)
-
Изтеглете скриптовете от GitHub:
git clone https://github.com/drkskwlkr/oc-bgn2eur.git
-
Копирайте примерния конфигурационен файл:
cp config.example.php config.local.php
-
Редактирайте
config.local.phpи въведете:EUR_EXCHANGE_RATE- Обменен курс (по закон: 1.95583)OC_ROOT_PATH- Път към root директорията на OpenCart магазина
Пример за CLI изпълнение:
const EUR_EXCHANGE_RATE = 1.95583; const OC_ROOT_PATH = '/home/username/public_html';
Пример за уеб изпълнение (скриптът е в root на магазина):
const EUR_EXCHANGE_RATE = 1.95583; const OC_ROOT_PATH = __DIR__;
Проверява дали скриптът е позициониран правилно и извлича данни за базата данни.
php oc-bgn2eur.php discoverПроверява конфигурацията на валутите (BGN е основна валута, EUR съществува).
php oc-bgn2eur.php currencyПоказва статистика за продуктите и очаквано използване на RAM.
php oc-bgn2eur.php statИзвежда списък на всички продукти с цени и ценови модификатори.
php oc-bgn2eur.php listСъздава резервни копия на таблиците с цени преди конверсия.
php oc-bgn2eur.php backupВАЖНО: Винаги създавайте резервно копие преди конверсия!
Възстановява таблиците от резервни копия при проблем.
php oc-bgn2eur.php restoreЗабележка: Автоматично нулира флага за конверсия, позволявайки повторно изпълнение.
Изтрива резервните копия. Препоръчително е да го направите само след като сте се уверили, че конверсията е протекла успешно.
php oc-bgn2eur.php cleanupНулира флага за конверсия без да възстановява данните.
php oc-bgn2eur.php resetВНИМАНИЕ: Тази команда е предназначена само за тестови сценарии! Използвайте restore за действително възстановяване на данни. Командата reset трябва да се използва само ако сте сигурни, че искате да позволите повторно изпълнение на конверсията върху вече конвертирани данни.
Активира или деактивира режим на поддръжка на магазина.
php oc-bgn2eur.php maintenance enable
php oc-bgn2eur.php maintenance disableПрепоръка: Активирайте режим на поддръжка преди конверсия, за да не позволявате на потребителите да взаимодействат със сайта в този критичен момент.
Извършва проверки и показва какво ще бъде направено (dry run).
php oc-bgn2eur.php recalculateИзчислява новите цени и ги показва на екрана БЕЗ да ги записва в базата.
php oc-bgn2eur.php recalculate simulateИзвършва действителната конверсия и записва новите цени в базата данни.
php oc-bgn2eur.php recalculate proceed-
Проверка на средата:
php oc-bgn2eur.php discover php oc-bgn2eur.php currency php oc-bgn2eur.php stat
-
Активиране на режим на поддръжка:
php oc-bgn2eur.php maintenance enable -
Създаване на резервно копие:
php oc-bgn2eur.php backup
-
Проверка преди конверсия:
php oc-bgn2eur.php recalculate
-
Симулация (по избор):
php oc-bgn2eur.php recalculate simulate
-
Извършване на конверсия:
php oc-bgn2eur.php recalculate proceed
-
Проверка на резултатите:
- Разгледайте магазина
- Проверете цените на няколко продукта
- Тествайте процеса на поръчка
-
При успех:
php oc-bgn2eur.php cleanup php oc-bgn2eur.php maintenance disable
-
При проблем:
php oc-bgn2eur.php restore php oc-bgn2eur.php maintenance disable
Ако нямате достъп до команден ред, можете да изпълнявате командите през браузър.
Къде да поставите скриптовете:
- В root директорията на магазина (напр.
/public_html/): Достъпни наhttps://your-site.com/oc-bgn2eur.php - В поддиректория (напр.
/public_html/tools/): Достъпни наhttps://your-site.com/tools/oc-bgn2eur.php - Извън публичната директория (препоръчително за сигурност): Изисква CLI достъп
Примери за използване:
https://your-site.com/oc-bgn2eur.php?cmd=discover
https://your-site.com/oc-bgn2eur.php?cmd=stat
https://your-site.com/oc-bgn2eur.php?cmd=backup
https://your-site.com/oc-bgn2eur.php?cmd=recalculate¶m=simulate
https://your-site.com/oc-bgn2eur.php?cmd=recalculate¶m=proceed
https://your-site.com/oc-bgn2eur.php?cmd=maintenance¶m=enable
Внимание:
- Уеб изпълнението може да прекъсне при големи магазини поради ограничения на сървъра.
- След завършване на конверсията изтрийте скриптовете от публичната директория за сигурност.
- Винаги правете резервно копие преди конверсия!
- Конверсията може да се изпълни само веднъж - скриптът задава флаг в базата данни (
bgn_eur_converted = 1), който предотвратява повторно изпълнение - Флагът остава в базата данни като постоянен маркер, че конверсия е била извършена
- Командата
restoreавтоматично нулира флага (bgn_eur_converted = 0) и позволява повторна конверсия след възстановяване - Скриптът преизчислява цени в следните таблици:
product- основни цени на продуктиproduct_option_value- цени на опцииproduct_discount- отстъпки при количествоproduct_special- промоционални цени
- Всички цени се делят на 1.95583 и закръгляват до 2 десетични знака
- След конверсия трябва ръчно да:
- Активирате EUR като основна валута
- Зададете обменен курс EUR = 1.00000000
След успешна конверсия на цените трябва да преконфигурирате валутите в администрацията на OpenCart:
System → Localisation → Currencies → EUR:
- Title: Euro
- Code: EUR
- Symbol Left: €
- Symbol Right: (празно)
- Value: 1.00000000 (важно!)
- Status: Enabled
- Кликнете бутона "Set as default" (ако има такъв) или маркирайте като основна валута
System → Settings → [Вашият магазин] → Edit → Local:
- Currency: EUR
System → Localisation → Currencies → BGN:
- Value: 1.95583 (обратен курс EUR → BGN)
- Status: Disabled (препоръчително, за да не объркате клиенти)
System → Settings → [Вашият магазин] → Edit:
- Refresh бутон или изтрийте файловете в
system/storage/cache/
Проблем: Ако магазинът е настроен да работи с множество валути, OpenCart записва в бисквитката на всеки потребител работната валута за неговата сесия. След като основната валута бъде променена от лева на евро, и вие, и предишните посетители на сайта ще продължат да виждат BGN, докато бисквитката не бъде изтрита. Нови посетители няма да се сблъскат с този проблем. Възможно е да се извърши предварителна подготовка, която да минимизира ефекта от този проблем. Попитайте.
Решение:
- Новите посетители автоматично ще виждат EUR
- Съществуващите потребители трябва да:
- Изчистят cookies за вашия сайт
- Или да изчакате cookies да изтекат (обикновено 30 дни)
- Или да изберат ръчно EUR от валутния селектор (ако е активен)
Препоръка: Поставете съобщение на сайта, че сте преминали към EUR и потребителите трябва да изчистят cookies или да рефрешнат в incognito режим.
При определени обстоятелства е възможно е да извърша преизчисляването вместо вас. Най-големите фактори са времето, сложността на магазина и достъпността на платформата. Свържете се с мен за подробности, като запишете среща от този линк: https://tidycal.com/arnaudov/oc-bgn2eur
MIT License