Atención al cliente y empaquetado de pedidos en tu móvil: descubre la app PrestaShop Pocket 📦

- Tipos de cambio actuales del NBP en tu tienda PrestaShop
- Tipo de cambio actual del NBP en los pedidos
- Tipo de cambio manual: el precio que ve el cliente
- Todas las operaciones relacionadas con los tipos de cambio en un solo lugar
- Automatización en segundo plano: un token, dos opciones
- Seguridad
- ¿A quién va dirigido PrestaShop NBP?
- Facilidades para los programadores
- Hooks de PrestaShop
- Requisitos técnicos
Tipos de cambio directamente del NBP: fuente oficial
Por defecto, PrestaShop obtiene los tipos de cambio de su propia fuente externa, referenciada al euro, que no está vinculada al Banco Nacional de Polonia. Nuestro módulo los sustituye por la tabla oficial y pública de tipos de cambio del NBP.
Automatización en segundo plano: enlace URL y CRON
Un único token seguro es compatible con CRON; funciona tanto en alojamiento compartido como en servidores con acceso SSH.
Tipo de cambio adicional y manual para el cálculo del precio del producto: una solución lista para la factura
Independientemente del tipo de cambio del NBP, puedes establecer un tipo de cambio adicional que se utilice para convertir los precios de los productos. Se trata de un tipo de cambio invisible para el cliente. Cada pedido en moneda extranjera se asocia al tipo de cambio real del NBP vigente en la fecha de la compra.

Conformidad con el NBP
Los tipos de cambio se obtienen directamente de la API oficial y pública api.nbp.pl: tabla A (divisas principales, diariamente) o B (demás, una vez a la semana).
La moneda predeterminada de la tienda nunca se modifica: su tipo de cambio siempre es 1, de acuerdo con los requisitos de PrestaShop.
Control sobre el tipo de cambio para el cálculo de precios
Establece tu propio tipo de cambio fijo para cualquier moneda —por ejemplo, para promociones o pruebas— con una vista previa de la conversión en tiempo real en el navegador.
El tipo de cambio de referencia del Banco Nacional de Polonia (NBP) se sigue monitorizando en segundo plano, independientemente del tipo de cambio manual establecido.
Cero trabajo manual con las facturas
Cada pedido en moneda extranjera se asigna el tipo de cambio del NBP correspondiente al día de la compra o al día laborable anterior a la compra.
Es la única función de este tipo entre los módulos de tipos de cambio para PrestaShop.
- Al realizar un pedido en moneda extranjera, el módulo toma el tipo de cambio actual a partir del tipo de cambio de referencia del NBP descargado previamente; el proceso de pago no se conecta con el NBP, por lo que un fallo en el NBP no afecta al momento de realizar el pedido.
- El tipo de cambio actual sobrescribe el campo «conversion_rate» del pedido en PrestaShop, utilizado por los informes y las estadísticas.
- El importe que ha pagado el cliente nunca cambia: los datos se conservan en el momento en que se crea el pedido.
- El conjunto completo de datos se envía a una tabla independiente: el tipo de cambio del proceso de pago, el tipo de cambio real del NBP, la tabla y la fecha del NBP, y los importes brutos/netos convertidos a la moneda predeterminada de la tienda.
A veces, la tienda quiere mostrar al cliente precios distintos de los que se derivan de un tipo de cambio distinto al de mercado, ya sea por motivos de promoción, redondeos o pruebas.
- Introduce el tipo de cambio igual al del NBP o cualquier otro.
- Vista previa de la conversión en tiempo real en el navegador, incluso antes de guardar.
- Al borrar el campo, se restablece el cálculo automático a partir del tipo de cambio del NBP.
- El tipo de cambio de referencia del NBP permanece visible y se actualiza constantemente al lado, independientemente del tipo de cambio manual establecido.
- Se incluyen dos datos en el pedido: el tipo de cambio del NBP —para fines contables— y el tipo de cambio manual —para el cálculo de precios—.
El panel del módulo muestra cada moneda de la tienda en una sola línea: el tipo de cambio actual del NBP (punto de referencia), el tipo de cambio establecido manualmente —visible para el cliente— y un estado claro.
- Tipo de cambio actual: el tipo de cambio del NBP, independiente y actualizado constantemente, visible incluso para las divisas con un tipo de cambio manual establecido.
- Tipo de cambio visible para el cliente: lo que realmente se envía a conversion_rate de PrestaShop y determina los precios en la tienda.
- Estado: Predeterminado, Actualizado, Tipo de cambio manual, Excluido o Inactivo.
- El botón «Actualizar ahora» funciona siempre, independientemente de la automatización en segundo plano.

- Opción 1 — enlace URL: para paneles como home.pl, OVH, nombre.pl o cron-job.org, que ejecutan el cron simplemente al acceder a la dirección.
- Opción 2 — crontab — línea lista para usar en servidores con acceso SSH.
- El token se puede invalidar en cualquier momento y generar uno nuevo con solo pulsar un botón.

Token aleatorio y regenerable
El enlace para la actualización automática contiene un token secreto; sin él, el servidor devuelve el código de error 403 Forbidden. El token se puede invalidar en cualquier momento y generar uno nuevo con solo pulsar un botón en el panel.
Token aleatorio y regenerable
El enlace para la actualización automática contiene un token secreto; sin él, el servidor devuelve el código de error 403 Forbidden. El token se puede invalidar en cualquier momento y generar uno nuevo con solo pulsar un botón en el panel.
Un único punto de acceso, sin duplicados
Ambas opciones de cron (enlace URL y crontab) conducen exactamente al mismo lugar protegido: no hay ningún script independiente que pueda eludir la verificación del token.


Asesores fiscales y contabilidad de la tienda
Datos listos y documentados para la factura en moneda extranjera, conformes con el requisito de aplicar el tipo de cambio del NBP —sin necesidad de buscar manualmente el tipo de cambio vigente el día del pedido—.

Tiendas de prueba y de desarrollo
Control total sobre el tipo de cambio que se muestra al cliente, independiente del tipo de cambio real del NBP que se sigue en segundo plano: muy práctico a la hora de probar precios y conversiones.
Facilidades para los programadores
- Toda la lógica de los tipos de cambio se encuentra en servicios independientes (NbpClient, CurrencyRateUpdater, OrderRealRateApplier), fáciles de ampliar y reutilizar.
- Tabla dedicada ps_pshownbp_order_rate (una fila por pedido): carga mínima en la base de datos, lista para ser leída por tu propio generador de facturas.
- Cubierto por pruebas unitarias de PHPUnit: introducción segura de modificaciones propias.
Hooks de PrestaShop
- actionValidateOrder: registro del tipo de cambio actual del Banco Nacional de Polonia (NBP) y de los datos de la factura al realizar el pedido.

-----
* 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.
Requisitos técnicos
Requisitos técnicos
- PHP 7.1 - 8.x
- Extensión de servidor ionCube Loader
Más información sobre requisitos técnicos en la base de conocimientos
Soporte = Actualizaciones + HelpDesk
Obtendrá 90 días (3 meses) de acceso al paquete completo de soporte de PrestaShow.
Actualizaciones de módulos
Los módulos le informarán de las actualizaciones disponibles. Lea el registro de cambios y realice una actualización del módulo con 1 clic directamente desde su tienda.
Panel HelpDesk
Este es el panel donde le proporcionamos ayuda. En el HelpDesk puede informar de problemas, solicitar la instalación gratuita de módulos y actualizaciones, y encargar modificaciones y trabajos de desarrollo individuales.
Ampliar el soport e
Una vez finalizado el soporte, puede utilizar el módulo sin restricciones. Puede ampliar su acceso al soporte en cualquier momento que lo necesite.
Base de conocimientos y FAQ
Gratis para siempre
La base de conocimientos está disponible para todo el mundo. Encontrará documentación sobre el módulo, así como instrucciones, vídeos y respuestas a las preguntas más frecuentes.
Licencia de por vida para el módulo
- Puede utilizar el módulo sin limitación para 1 tienda = 1 dominio.
- Puede utilizar un dominio adicional, por ejemplo, para una copia de desarrollador.
- Por un módico precio puede cambiar usted mismo el dominio para el módulo.
Dominios adicionales para Multitienda
- Todos nuestros módulos son compatibles con PrestaShop Multitienda.
- El soporte para un número ilimitado de dominios para PrestaShop Multitienda requiere la compra del soporte multitienda para el módulo.
Modificación del código
- El código del módulo relacionado con la integración con la tienda y el diseño (.tpl, .css, .js) es de código abierto y puede modificarlo libremente.
- El código fuente del módulo (.php) está encriptado con ionCube y modificarlo anulará la garantía.
Demo
Demo - probar el módulo
- Este módulo no tiene tienda demo
Todavía no hay entradas.










Por el momento, no hay comentarios de los clientes.