The OCA sources living outside this repo were mounted from a hardcoded /media/snt/data/odoo in a local, untracked docker-compose.override.yml. The host root now comes from ODOO_SRC in .env (gitignored, .env.example added), so the mounts can live in docker-compose.yml itself and be shared. Also parameterized: the published ports (ODOO_HTTP_PORT / ODOO_LONGPOLLING_PORT) and the in-container addons path (ODOO_ADDONS_PATH), the latter being the single source of truth for the `command` and for manual `docker-compose run odoo odoo ...` invocations. Missing variables fail with an explicit message instead of mounting empty paths. `docker-compose config` resolves exactly as before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
86 lines
3.5 KiB
ReStructuredText
86 lines
3.5 KiB
ReStructuredText
======================
|
|
POS CashDro 18.0 Fixes
|
|
======================
|
|
|
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
:target: https://odoo-community.org/page/development-status
|
|
:alt: Beta
|
|
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
:alt: License: AGPL-3
|
|
|
|
|badge1| |badge2|
|
|
|
|
The 18.0 migration of ``pos_payment_method_cashdro``
|
|
(`OCA/pos@6a4c251d <https://github.com/OCA/pos/commit/6a4c251d>`_) left three
|
|
uses of the 17.0 API that stop the CashDro integration from working. The module
|
|
has no tests nor tours and needs a physical drawer to be exercised, so nothing
|
|
in the OCA CI catches them.
|
|
|
|
This module patches the three of them from the outside, without touching the
|
|
OCA sources:
|
|
|
|
#. ``_cashdro_url()`` reads ``order.selected_paymentline``, replaced in 18.0 by
|
|
``order.get_selected_paymentline()``. Reading ``.payment_method`` on the
|
|
resulting ``undefined`` raises a ``TypeError`` on every payment, which the
|
|
caller swallows into a generic *"An error occurred while connecting to the
|
|
cashdro"* message.
|
|
#. The ``add_paymentline`` patch checks ``line.payment_method``, renamed to
|
|
``line.payment_method_id`` in 18.0. The condition is never true, so the
|
|
payment line keeps the default due amount instead of waiting for the amount
|
|
the customer inserts in the drawer.
|
|
#. ``pos.session._loader_params_pos_payment_method`` is the 17.0 loading API,
|
|
replaced in 18.0 by ``_load_pos_data_fields`` on each model. The override is
|
|
dead code, so ``cashdro_host``, ``cashdro_user`` and ``cashdro_password``
|
|
never reach the front end.
|
|
|
|
**Table of contents**
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Usage
|
|
=====
|
|
|
|
There is nothing to configure: installing the module is enough.
|
|
|
|
To check the three fixes on a PoS with a CashDro terminal:
|
|
|
|
#. Open a PoS session, add a product and go to the payment screen.
|
|
#. Select the CashDro payment method. The payment line must show **0**, not the
|
|
due amount (fix 2).
|
|
#. The drawer must start the operation and ask for the amount, instead of the
|
|
*"An error occurred while connecting to the cashdro"* dialog (fixes 1 and 3).
|
|
#. With no CashDro at hand, the browser console tells fix 1 from fix 3 apart:
|
|
without this module the failure is a ``TypeError: Cannot read properties of
|
|
undefined (reading 'payment_method')``; with it, a network error against the
|
|
configured host.
|
|
|
|
The Python side is covered by the tests. The base module lives outside this
|
|
repo, so the OCA sources have to be on the addons path (mounted by
|
|
``docker-compose.yml`` from ``ODOO_SRC``, set in your local ``.env``)::
|
|
|
|
docker-compose run --rm odoo odoo -c /etc/odoo/odoo.conf \
|
|
--addons-path=/mnt/extra-addons,/mnt/oca/pos,/usr/lib/python3/dist-packages/odoo/addons \
|
|
-d odoo -u pos_payment_method_cashdro_fix --test-enable --stop-after-init
|
|
|
|
Known issues / Roadmap
|
|
======================
|
|
|
|
This module is meant to be temporary. The fixes are proposed upstream in
|
|
``upstream/pos_payment_method_cashdro-18.0-fixes.patch``; once they are merged
|
|
in ``OCA/pos`` this module can be uninstalled and removed.
|
|
|
|
It is written to stay harmless in the meantime: the Python override only adds
|
|
the credential fields that are missing from the loader, and the JavaScript
|
|
patches are idempotent with respect to the fixed upstream code.
|
|
|
|
The JavaScript side can't be covered by automated tests, as it needs a CashDro
|
|
terminal answering on the network.
|
|
|
|
Contributors
|
|
============
|
|
|
|
* `Criptomart <https://criptomart.net>`_:
|
|
|
|
* Criptomart
|