📦 Pakowanie produktów z appką to mniej błędów i szybsza praca Twojego zespołu

- Bieżące kursy walut NBP w Twoim sklepie PrestaShop
- Aktualny kurs NBP na zamówieniach
- Ręczny kurs - cena widoczna dla klienta
- Wszystkie operacje związane z kursami w jednym miejscu
- Wszystkie ważne funkcje w krótkiej liście
- Automatyzacja w tle — jeden token, dwie opcje
- Bezpieczeństwo
- Dla kogo jest PrestaShop NBP?
- Ułatwienia dla programistów
- Hooki PrestaShop
- Wymagania techniczne
Kursy prosto z NBP — oficjalny feed
PrestaShop domyślnie pobiera kursy z własnego, zewnętrznego źródła zakotwiczonego w EUR — niezwiązanego z Narodowym Bankiem Polskim. Nasz moduł zastępuje je oficjalną, publiczną tabelą kursów NBP.
Automatyzacja w tle — link URL i CRON
Jeden, zabezpieczony token obsługuje CRON — pasuje zarówno do hostingu współdzielonego, jak i serwera z dostępem SSH.
Dodatkowy, ręczny kurs do przeliczenia ceny produktu — rozwiązanie gotowe pod fakturę
Niezależnie od kursu NBP możesz ustawić dodatkowy kurs używany do przeliczenia cen produktów. Jest to kurs niewidocznego dla klienta. Każde zamówienie w obcej walucie dostaje zapisany prawdziwy kurs NBP z dnia zakupu.

To jedyna funkcja tego typu wśród modułów kursowych do PrestaShop.
- Przy złożeniu zamówienia w obcej walucie moduł bierze aktualny kurs z wcześniej pobranego kursu referencyjnego NBP - checkout nie łączy się z NBP, więc awaria NBP nie wpływa na czas składania zamówienia.
- Aktualny kurs nadpisuje pole conversion_rate zamówienia w PrestaShop, używane przez raporty i statystyki.
- Kwota, którą zapłacił klient, nigdy się nie zmienia - dane są zachowane w chwili powstania zamówienia.
- Pełny zestaw danych trafia do osobnej tabeli: kurs z checkoutu, realny kurs NBP, tabela i data NBP, kwoty brutto/netto przeliczone na walutę domyślną sklepu.
Czasem sklep chce pokazać klientowi ceny inne, niż to wynika z przeliczenia innego, niż rynkowe - na potrzeby promocji, zaokrągleń albo testów.
- Wpisujesz kurs taki sam jak NBP lub dowolny inny.
- Podgląd przeliczenia na żywo w przeglądarce, jeszcze przed zapisaniem.
- Wyczyszczenie pola przywraca automatyczne przeliczanie z NBP.
- Kurs referencyjny NBP jest cały czas widoczny i aktualizowany obok — niezależnie od ustawionego kursu ręcznego.
- Do zamówienia idą dwie informacje: kurs NBP - na potrzeby księgowości i kurs ręczny - na potrzeby wyliczenia cen.
Panel modułu pokazuje każdą walutę sklepu w jednym wierszu: aktualny kurs NBP (punkt odniesienia), kurs ustawiany ręcznie - widoczny dla klienta oraz czytelny status.
- Aktualny kurs – niezależny, stale odświeżany kurs NBP, widoczny nawet dla walut z ustawionym kursem ręcznym.
- Kurs widoczny dla klienta – to, co faktycznie trafia do conversion_rate PrestaShop i decyduje o cenach na froncie.
- Status – Domyślna, Aktualizowana, Ręczny kurs, Wykluczona lub Nieaktywna.
- Przycisk „Aktualizuj teraz" działa zawsze, niezależnie od automatyzacji w tle.

Wszystkie ważne funkcje w krótkiej liście
- Kursy prosto z NBP – tabela A lub B pobierane bezpośrednio z api.nbp.pl
- Aktualizacja jednym kliknięciem – przycisk „Aktualizuj teraz" działa zawsze, niezależnie od automatyzacji
- Automatyzacja w tle (cron) – link URL dla hostingów bez PHP CLI (cron-job.org i podobne) lub CRON przez SSH
- Wykluczanie walut – wybrane waluty sklepu można całkowicie pominąć przy aktualizacji
- Waluta domyślna zawsze bezpieczna – nigdy nie jest ruszana, zgodnie z wymaganiami PrestaShop
- Ręczny kurs dla klienta – ustal własny, stały kurs dla dowolnej waluty z podglądem przeliczenia na żywo, bez utraty śledzenia realnego kursu NBP
- Realny kurs NBP na zamówieniach – niezależnie od kursu dla klienta, każde zamówienie w obcej walucie dostaje zapisany prawdziwy kurs NBP z dnia zakupu
- Podgląd stanu – czytelna tabela wszystkich walut sklepu ze statusem: domyślna / aktualizowana / ręczny kurs / wykluczona / nieaktywna
- Tłumaczenia PL i EN – pełna lokalizacja panelu, plus instrukcja obsługi PL/EN wbudowana w panel modułu
Zgodność z NBP
Kursy pobierane są bezpośrednio z oficjalnego, publicznego API api.nbp.pl — tabela A (główne waluty, codziennie) lub B (pozostałe, raz w tygodniu).
Waluta domyślna sklepu nigdy nie jest ruszana — jej kurs zawsze pozostaje 1, zgodnie z wymaganiami PrestaShop.
kontrola nad kursem do przeliczenia cen
Ustal własny, stały kurs dla dowolnej waluty — np. na potrzeby promocji albo testów — z podglądem przeliczenia na żywo w przeglądarce.
Kurs referencyjny NBP jest dalej śledzony w tle, niezależnie od ustawionego kursu ręcznego.
Zero ręcznej pracy przy fakturach
Każde zamówienie w obcej walucie dostaje zapisany kurs NBP z dnia zakupu lub z dnia roboczego poprzedzającego dzień zakupu.
- Opcja 1 — link URL – dla paneli typu home.pl, OVH, nazwa.pl czy cron-job.org, które uruchamiają cron tylko przez wywołanie adresu.
- Opcja 2 — crontab – gotowa linia dla serwerów z dostępem SSH.
- Token można w każdej chwili unieważnić i wygenerować nowy jednym przyciskiem.

Losowy, regenerowalny token
Link do automatycznej aktualizacji zawiera tajny token — bez niego serwer odpowiada 403 Forbidden. Token można w każdej chwili unieważnić i wygenerować nowy jednym przyciskiem w panelu.
Losowy, regenerowalny token
Link do automatycznej aktualizacji zawiera tajny token — bez niego serwer odpowiada 403 Forbidden. Token można w każdej chwili unieważnić i wygenerować nowy jednym przyciskiem w panelu.
Jeden endpoint, brak duplikatów
Obie opcje crona (link URL i crontab) trafiają w dokładnie to samo, zabezpieczone miejsce — nie ma osobnego skryptu, który mógłby ominąć weryfikację tokenu.


Biura rachunkowe i księgowość sklepu
Gotowe, udokumentowane dane pod fakturę w walucie obcej, zgodne z wymogiem stosowania kursu NBP — bez ręcznego wyszukiwania kursu z dnia zamówienia.

Sklepy testowe i deweloperskie
Pełna kontrola nad kursem wyświetlanym klientowi, niezależna od realnego kursu NBP śledzonego w tle — wygodne przy testowaniu cen i przeliczeń.
Ułatwienia dla programistów
- Cała logika kursów znajduje się w niezależnych serwisach (NbpClient, CurrencyRateUpdater, OrderRealRateApplier) — łatwe do rozbudowy i ponownego użycia.
- Dedykowana tabela ps_pshownbp_order_rate (jeden wiersz na zamówienie) — minimalne obciążenie bazy danych, gotowa do odczytu przez własny generator faktur.
- Pokryty testami jednostkowymi PHPUnit — bezpieczne wprowadzanie własnych modyfikacji.
Hooki PrestaShop
- actionValidateOrder – zapis aktualnego kursu NBP i danych pod fakturę przy złożeniu zamówienia.
-----
* Fix: `OrderRealRateApplier::apply()` now checks the excluded-currencies list — an excluded
currency is left completely untouched, including a rate that was cached before it got excluded.
* Fix: excluding a currency (or leaving its manual-rate field blank on submit) no longer silently
discards a previously-saved manual rate for a *different*, still-excluded currency.
* Fix: `saveManualRates()` now validates the cached reference rate (numeric, > 0) before writing
it to `Currency::conversion_rate`, matching the same guard already used elsewhere.
* Fix: `Db::insert()`/`Db::update()` now pass `$null_values = true` — an empty
`nbp_effective_date` was being stored as `''` instead of `NULL`, which fails under strict SQL
mode against the `DATE NULL` column and silently dropped the whole audit write.
* A failed cron sync (NBP unreachable, or no default currency configured) is now logged via
`PrestaShopLogger` and answers with a non-200 HTTP status, instead of a silent HTTP 200 —
previously nothing told the seller the cron had stopped working while orders kept getting an
increasingly stale cached rate.
* Replaced `PSHOWNBP_LAST_SYNC_SUMMARY` (a pre-rendered, already-translated string) with
`PSHOWNBP_LAST_SYNC_STATS` (raw numbers) — the "last sync" summary is now built in the current
viewer's admin language every time the page renders, instead of being frozen in whichever
language was active when the sync ran (an issue for cron-triggered syncs).
* Source strings for `trans()`/`{l s=}` are now English (translated PL/EN via the usual
`translations/*.php` files), matching the convention used by the module's other language files.
* `composer.json`'s `test` script no longer depends on PHPUnit (not present in the CI's
`--no-dev` build) — added `tests/run.php`, a dependency-free integration test that
actually runs in CI, covering `CurrencyRateUpdater::run()` and `OrderRealRateApplier::apply()`.
The PHPUnit suite stays available for local development via `composer run test:unit`
(equivalent to the existing `composer run phpunit`).
* Fixed a PHP 7.4-only typed property in a test file that failed to parse on the declared PHP 7.1
minimum.
* Fix: `Currency::resetStaticCache()`, used to make the new multistore sync loop below work
correctly, doesn't exist before PrestaShop 1.7.4.0 — calling it directly would fatal on the
1.7.0.0–1.7.3.x range this module declares support for. Now guarded with `method_exists()`.
* Multistore: a single cron hit now syncs every active shop, not just whichever shop's domain
received the request — `conversion_rate` and the reference-rate cache are per-shop, so one
shop's sync could otherwise never refresh another's. Excluded currencies and manual rates are
also independent per shop. The cron secret, the "auto update" switch and the NBP table choice
remain a single, installation-wide setting. `Order`-side behaviour is unaffected —
`OrderRealRateApplier::apply()` already runs in the placing order's own shop context, so it
always reads that shop's own reference rate. The "Update now" button is unchanged — it still
only syncs the shop currently selected in the admin, matching the rates table shown right below
it on the same page.
## 1.2.1 - 2026-09-04
-----
* Fix: `pshownbp_order_rate.nbp_effective_date` now stores the actual NBP-published date of the
applied rate table, instead of the date the sync happened to run on — the two could differ
after a weekend/holiday or when cron fires before NBP's daily publication.
* Checkout is now resilient to any unexpected error while recording the real-rate audit data
(e.g. a database hiccup) — the order is always saved normally; the error is only logged.
* The suggested crontab example moved from 8:30 to 13:00 — NBP typically publishes Table A by
12:15, so an earlier cron run was silently fetching the previous business day's rate.
## 1.2.0 - 2026-09-02
-----
* New: when an order is placed in a currency other than the shop's default one, the module
overwrites `Order::conversion_rate` with the real NBP reference rate (never the seller's manual
display rate) and records a full audit trail in the new `pshownbp_order_rate` table — checkout
vs. real rate, NBP table/date, and gross/net totals converted to the default currency, ready for
invoicing. The amount the customer paid never changes.
* Checkout never makes a live call to NBP — the real rate is read from the already-cached
reference rate kept fresh by "Update now"/cron, so a slow or unavailable NBP cannot affect
checkout time.
* Both cron delivery options (URL link and real crontab) now hit the exact same token-protected
front controller — no separate standalone script to keep in sync.
* Extracted all remaining inline CSS/JS from admin templates into dedicated files.
* In-admin manual (PL/EN) and README updated to document the new feature.
## 1.1.0 - 2026-08-19
-----
* New "Rate visible to customers" column on the main "Currency rates" table: type your own rate
(e.g. "4.5" for EUR, meaning 1 EUR = 4.5 PLN) and it's converted live, in the browser, to the
PrestaShop `conversion_rate` that actually applies on the storefront.
* The "Current rate" column now also shows the reciprocal (1/rate) next to the raw PrestaShop
value, so it reads in both directions at a glance.
* The automatic NBP sync (button and cron) keeps tracking the real market rate as a reference
even for currencies with a manual rate set — it just stops overwriting the applied rate for
those, until the manual rate is cleared.
* Extracted the last remaining inline `` blocks (main page, in-admin manual) into
dedicated CSS files — no CSS/JS left inline in templates.
* Added a module sanity test suite (`ModuleTest`) matching the other PrestaShow modules.
## 1.0.0 - 2026-08-18
-----
* init module
* Fetch currency exchange rates directly from the official NBP (Narodowy Bank Polski) API,
replacing PrestaShop's default EUR-anchored external feed.
* Manual "Update now" button plus optional cron/HTTP automation with a secret-token link.
* Per-currency exclusion list; default shop currency is never touched (its rate always stays 1).
* Status table showing every shop currency's current rate and update state.
* PL/EN in-admin manual and translations.
Wymagania techniczne
Wymagania techniczne
- PHP 7.1 - 8.x
- Rozszerzenie serwera ionCube Loader
Wsparcie = Aktualizacje + HelpDesk
Otrzymujesz 90 dni (3 miesiące) dostępu do kompletnego pakietu wsparcia PrestaShow.
Aktualizacje modułów
Moduły poinformują Cię o dostępnych aktualizacjach. Zapoznaj się z listą zmian (changelog) i wykonaj aktualizację modułu 1-kliknięciem bezpośrednio w Twoim sklepie.
Panel HelpDesk
To panel, w którym dostarczymy Ci pomoc. Na HelpDesk możesz zgłaszać problemy, zamówić darmową instalację i aktualizację modułu oraz zamawiać modyfikacje i indywidualne prace programistyczne.
> > > Wydłuż wsparcie
Po wygaśnięciu wsparcia możesz korzystać z modułu bez żadnych ograniczeń. Dostęp do wsparcia możesz odnowić w dowolnym momencie, gdy będziesz tego potrzebował.
Baza Wiedzy & FAQ
Za darmo na zawsze
Baza wiedzy
Jest dostępna dla wszystkich. Znajdziesz w niej dokumentacje modułów oraz instrukcje, filmy i odpowiedzi na najczęściej zadawane pytania.
Dożywotnia licencja na moduł
- Moduł możesz używać bez ograniczeń w 1 sklepie = 1 domena.
- Możesz używać dodatkowej domeny, np. dla kopi developerskiej.
- Za niewielką opłatą możesz samodzielnie zmienić domenę dla modułu.
Dodatkowe domeny dla Multistore
- Wszystkie nasze moduły obsługują PrestaShop Multistore.
- Obsługa nielimitowanej liczby domen dla PrestaShop Multistore wymaga zakupienia obsługi multistore dla modułu.
Modyfikowanie kodu
- Kod modułu związany z integracją ze sklepem oraz z wyglądem (.tpl, .css, .js) ma otwarty kod źródłowy i możesz go dowolnie modyfikować.
- Kod źródłowy modułu (.php) szyfrowany jest ionCube, a jego modyfikacja wiąże się z utratą gwarancji.
Demo
Demo - przetestuj moduł
- Ten moduł nie posiada sklepu demo
Brak powiązanych wpisów blogowych.










Brak komentarzy.