addons-cm/pos_payment_method_cashdro_fix/readme/DESCRIPTION.rst
GitHub Copilot 4615da6dae [ADD] pos_payment_method_cashdro_fix: 17.0 API leftovers in the OCA base module
The 18.0 migration of `pos_payment_method_cashdro` (OCA/pos@6a4c251d) kept
three uses of APIs removed in 18.0. The module has no tests nor tours and needs
a physical drawer to be exercised, so the OCA CI can't catch them:

* `_cashdro_url()` reads `order.selected_paymentline`, so `.payment_method` on
  the resulting `undefined` throws a TypeError on every payment, swallowed into
  a generic "An error occurred while connecting to the cashdro" dialog.
* The `add_paymentline()` patch checks `line.payment_method`, renamed to
  `payment_method_id`, so the line keeps the default due amount instead of
  waiting for the amount the customer inserts.
* `_loader_params_pos_payment_method()` is the 17.0 loading API, replaced by
  `_load_pos_data_fields()`. Dead code, so the CashDro credentials never reach
  the front end.

Patched from the outside, as OCA sources are not to be modified. Written to
stay harmless once fixed upstream: the Python override only adds the missing
fields and the JS patches are idempotent against the fixed code.

`upstream/pos_payment_method_cashdro-18.0-fixes.patch` holds the same fixes as
a ready to send `git format-patch`, verified with `git apply --check`. This
module is temporary and should be removed once that lands in OCA/pos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 13:31:11 +02:00

22 lines
1.2 KiB
ReStructuredText

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.