Skip to content

(BGN➡️EUR) Автоматично преизчисляване на цените от лева в евро за OpenCart

License

Notifications You must be signed in to change notification settings

drkskwlkr/oc-bgn2eur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Автоматично преизчисляване на цените в OpenCart от лева в евро

Въведение

На 1 януари 2026 г. България приема еврото като официална валута. Този инструмент автоматизира преизчисляването на всички цени в OpenCart магазин от български лев (BGN) в евро (EUR) съгласно законово определения обменен курс от 1 EUR = 1.95583 BGN. Промяната е необходима, понеже от тази дата всички интеграции с куриерски услуги и т.н. ще очакват да получават ценовите стойности в общата валута на ЕС.

Важно: Преди да използвате този инструмент, трябва да добавите валутата EUR в настройките на вашия OpenCart магазин. Скриптът НЕ създава валута EUR автоматично - той само проверява дали съществува и преизчислява цените.

Режими на изпълнение

Скриптът може да се изпълнява по два начина:

  • Команден ред (CLI): Препоръчителният метод. Избягва проблеми с timeout при изпълнение през уеб сървър, особено при магазини с голям брой продукти.
  • Уеб интерфейс: Възможен, но не се препоръчва за големи магазини поради риск от прекъсване при ограничения на времето за изпълнение.

Изисквания

  • PHP 7.4 или по-нова версия
  • Инсталация на OpenCart
  • Достъп до база данни
  • Валутата EUR трябва да е добавена в настройките на магазина
  • Препоръчителен е достъп чрез команден ред (за избягване на проблеми с timeout)

Инсталация

  1. Изтеглете скриптовете от GitHub:

    git clone https://github.com/drkskwlkr/oc-bgn2eur.git
  2. Копирайте примерния конфигурационен файл:

    cp config.example.php config.local.php
  3. Редактирайте 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__;

Налични команди

Проверки и информация

discover

Проверява дали скриптът е позициониран правилно и извлича данни за базата данни.

php oc-bgn2eur.php discover

currency

Проверява конфигурацията на валутите (BGN е основна валута, EUR съществува).

php oc-bgn2eur.php currency

stat

Показва статистика за продуктите и очаквано използване на RAM.

php oc-bgn2eur.php stat

list

Извежда списък на всички продукти с цени и ценови модификатори.

php oc-bgn2eur.php list

Управление на резервни копия

backup

Създава резервни копия на таблиците с цени преди конверсия.

php oc-bgn2eur.php backup

ВАЖНО: Винаги създавайте резервно копие преди конверсия!

restore

Възстановява таблиците от резервни копия при проблем.

php oc-bgn2eur.php restore

Забележка: Автоматично нулира флага за конверсия, позволявайки повторно изпълнение.

cleanup

Изтрива резервните копия. Препоръчително е да го направите само след като сте се уверили, че конверсията е протекла успешно.

php oc-bgn2eur.php cleanup

reset

Нулира флага за конверсия без да възстановява данните.

php oc-bgn2eur.php reset

ВНИМАНИЕ: Тази команда е предназначена само за тестови сценарии! Използвайте restore за действително възстановяване на данни. Командата reset трябва да се използва само ако сте сигурни, че искате да позволите повторно изпълнение на конверсията върху вече конвертирани данни.

Режим на поддръжка

maintenance enable|disable

Активира или деактивира режим на поддръжка на магазина.

php oc-bgn2eur.php maintenance enable
php oc-bgn2eur.php maintenance disable

Препоръка: Активирайте режим на поддръжка преди конверсия, за да не позволявате на потребителите да взаимодействат със сайта в този критичен момент.

Конверсия на цени

recalculate

Извършва проверки и показва какво ще бъде направено (dry run).

php oc-bgn2eur.php recalculate

recalculate simulate

Изчислява новите цени и ги показва на екрана БЕЗ да ги записва в базата.

php oc-bgn2eur.php recalculate simulate

recalculate proceed

Извършва действителната конверсия и записва новите цени в базата данни.

php oc-bgn2eur.php recalculate proceed

Препоръчителен работен процес

  1. Проверка на средата:

    php oc-bgn2eur.php discover
    php oc-bgn2eur.php currency
    php oc-bgn2eur.php stat
  2. Активиране на режим на поддръжка:

    php oc-bgn2eur.php maintenance enable
  3. Създаване на резервно копие:

    php oc-bgn2eur.php backup
  4. Проверка преди конверсия:

    php oc-bgn2eur.php recalculate
  5. Симулация (по избор):

    php oc-bgn2eur.php recalculate simulate
  6. Извършване на конверсия:

    php oc-bgn2eur.php recalculate proceed
  7. Проверка на резултатите:

    • Разгледайте магазина
    • Проверете цените на няколко продукта
    • Тествайте процеса на поръчка
  8. При успех:

    php oc-bgn2eur.php cleanup
    php oc-bgn2eur.php maintenance disable
  9. При проблем:

    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&param=simulate
https://your-site.com/oc-bgn2eur.php?cmd=recalculate&param=proceed
https://your-site.com/oc-bgn2eur.php?cmd=maintenance&param=enable

Внимание:

  • Уеб изпълнението може да прекъсне при големи магазини поради ограничения на сървъра.
  • След завършване на конверсията изтрийте скриптовете от публичната директория за сигурност.

Важни забележки

  • Винаги правете резервно копие преди конверсия!
  • Конверсията може да се изпълни само веднъж - скриптът задава флаг в базата данни (bgn_eur_converted = 1), който предотвратява повторно изпълнение
  • Флагът остава в базата данни като постоянен маркер, че конверсия е била извършена
  • Командата restore автоматично нулира флага (bgn_eur_converted = 0) и позволява повторна конверсия след възстановяване
  • Скриптът преизчислява цени в следните таблици:
    • product - основни цени на продукти
    • product_option_value - цени на опции
    • product_discount - отстъпки при количество
    • product_special - промоционални цени
  • Всички цени се делят на 1.95583 и закръгляват до 2 десетични знака
  • След конверсия трябва ръчно да:
    1. Активирате EUR като основна валута
    2. Зададете обменен курс EUR = 1.00000000

Конфигуриране на валути след конверсия

След успешна конверсия на цените трябва да преконфигурирате валутите в администрацията на OpenCart:

1. Конфигуриране на EUR като основна валута

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

2. Конфигуриране на BGN (ако искате да запазите за справка)

System → Localisation → Currencies → BGN:

  • Value: 1.95583 (обратен курс EUR → BGN)
  • Status: Disabled (препоръчително, за да не объркате клиенти)

3. Изчистване на кеш

System → Settings → [Вашият магазин] → Edit:

  • Refresh бутон или изтрийте файловете в system/storage/cache/

4. ВАЖНО: Потребителски бисквитки

Проблем: Ако магазинът е настроен да работи с множество валути, OpenCart записва в бисквитката на всеки потребител работната валута за неговата сесия. След като основната валута бъде променена от лева на евро, и вие, и предишните посетители на сайта ще продължат да виждат BGN, докато бисквитката не бъде изтрита. Нови посетители няма да се сблъскат с този проблем. Възможно е да се извърши предварителна подготовка, която да минимизира ефекта от този проблем. Попитайте.

Решение:

  • Новите посетители автоматично ще виждат EUR
  • Съществуващите потребители трябва да:
    • Изчистят cookies за вашия сайт
    • Или да изчакате cookies да изтекат (обикновено 30 дни)
    • Или да изберат ръчно EUR от валутния селектор (ако е активен)

Препоръка: Поставете съобщение на сайта, че сте преминали към EUR и потребителите трябва да изчистят cookies или да рефрешнат в incognito режим.

5. Ако не можете да се справите сами?

При определени обстоятелства е възможно е да извърша преизчисляването вместо вас. Най-големите фактори са времето, сложността на магазина и достъпността на платформата. Свържете се с мен за подробности, като запишете среща от този линк: https://tidycal.com/arnaudov/oc-bgn2eur

Лиценз

MIT License

About

(BGN➡️EUR) Автоматично преизчисляване на цените от лева в евро за OpenCart

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages