Què diu GoCardless
| Reason | Tipus | Text de GoCardless |
|---|---|---|
refund_payment_invalid_state | invalid_state | Payment must be confirmed or paid_out before it can be refunded. |
A la referència dels reemborsaments, GoCardless afegeix un termini: «A refund can only be created once it is outside the safer refund period (7 calendar days after the charge date) otherwise an error is returned.». Aquest període es pot treure: «The safer refund period can be disabled by contacting GoCardless.». I recorda per què existeix: «A payment that has been (partially) refunded can still receive a late failure or chargeback from the customer's bank.».
Els reemborsaments per l'API, a més, vénen desactivats: «This endpoint is disabled by default. To enable it, you will need to enable refunds on your GoCardless Dashboard.».

Les regles de termini, d'un cop d'ull
| Dies des del cobrament | GoCardless, per defecte | El connector |
|---|---|---|
| Menys de 2 | dins del període segur: retorna un error | no envia el reemborsament |
| 2 o més, però menys de 7 | dins del període segur: retorna un error | l'envia i deixa un avís al registre del servidor |
| 7 o més | fora del període segur | l'envia |
Els dos no comptin des del mateix lloc. GoCardless compta des de la data de càrrec del pagament. El connector compta des de l'últim canvi d'estat de la transacció del cobrament a Odoo. Si GoCardless t'ha tret el període segur, entre 2 i 7 dies el reemborsament pot tirar endavant.
Quan surt refund_payment_invalid_state amb el connector
Odoo només deixa reemborsar una transacció confirmada, i el connector la confirma quan GoCardless diu confirmed o paid_out. Així que, amb el connector, aquest reason vol dir que el pagament ha canviat a GoCardless i Odoo encara no ho sap: una fallada tardana, que GoCardless pot comunicar amb el pagament ja confirmat, o una devolució del client l'esdeveniment de la qual encara no ha arribat.
Què fa el connector
- Amb menys de 2 dies, no envia res: Odoo s'atura amb «GoCardless cannot refund a collection until it has settled. This one was charged … day(s) ago; refunds are possible after 2 days.».
- Si no, envia el reemborsament a GoCardless amb la seva clau d'idempotència. Si GoCardless el rebutja, per aquest reason, pel període segur o per qualsevol altre motiu, la transacció del reemborsament passa a «Error» amb «GoCardless rejected the request.» i, a sota, el missatge de GoCardless amb el reason i el
request_id. - Si l'accepta, la transacció queda en «Pendent» amb «Refund submitted. GoCardless will deduct it from a future payout.», i passa a «Confirmat» quan GoCardless el paga o el descompta d'una liquidació.
Des de la versió 1.1.5, un reemborsament en error no mostra el botó «Retry collection»: un reemborsament no és un cobrament, i no hi ha res que GoCardless pugui reintentar. Si GoCardless no aconsegueix que els diners arribin al client, el connector passa el reemborsament a error amb «GoCardless could not pay this refund back (…).». Aquest text l'escriu en aplicar l'esdeveniment, sense ningú davant. El connector no està traduït al català: aquests textos surten sempre en anglès, també en un Odoo en català, tant si els llança un usuari com una tasca programada.

Què fer
- Obre la transacció del cobrament des de la factura, amb el botó «Transacció de pagament» de dalt; el menú de transaccions només surt en mode desenvolupador, i a Odoo 20 no existeix. Des d'allí, el botó de reemborsaments porta a la transacció del reemborsament i al seu missatge.
- Si el reason és
refund_payment_invalid_state, mira el pagament al Dashboard de GoCardless. Si ha fallat tard o el client l'ha retornat, no hi ha res a reemborsar: els diners ja no són amb tu. Odoo ho reflectirà quan arribi l'esdeveniment; la tasca que cada hora recupera els esdeveniments perduts el porta. - Si el rebuig ve del període segur, espera que passin 7 dies des de la data de càrrec, o demana a GoCardless que el tregui.
- Per tornar a reemborsar, fes-ho des del pagament del cobrament, amb el seu botó de reemborsament. El connector admet reemborsaments parcials.
Per què el connector deixa reemborsar des dels 2 dies si GoCardless parla de 7?
Els 2 dies són el mínim del connector: per sota no envia res. GoCardless permet treure el seu període segur, i mentre és actiu és GoCardless qui rebutja el reemborsament abans de 7 dies. Entre 2 i 7 dies el connector avisa al registre, perquè una fallada SEPA encara pot arribar.
Un cobrament reemborsat pot fallar després?
Sí. GoCardless ho advereix: un pagament reemborsat, del tot o en part, encara pot rebre una fallada tardana o una devolució del banc del client. En aquest cas hauries retornat uns diners que no arribaves a quedar-te.
Amb el nostre connector
A Odoo 17, 18, 19 i 20 el connector no envia reemborsaments de cobraments de menys de 2 dies, deixa en error amb el seu request_id els que GoCardless rebutja i no ofereix reintentar un reemborsament, que no és un cobrament.
Continua llegint
Comprovat al codi del connector (versió 17.0, 18.0, 19.0 i 20.0) i a les fonts enllaçades
Fonts
- docs.gocardless.com/docs/api-reference/responses-and-errors
- docs.gocardless.com/docs/api-reference/refund
- support.gocardless.com/hc/en-gb/articles/360001467265
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 41 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/models/payment_transaction.py
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_payment_views.xml
- Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 256 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 106 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 361 a 17.0 (d203ee6), línia 361 a 18.0 (e2ab18b), línia 360 a 19.0 (ce7f5a3) i línia 375 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 365 a 17.0 (d203ee6), línia 365 a 18.0 (e2ab18b), línia 364 a 19.0 (ce7f5a3) i línia 379 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 414 a 17.0 (d203ee6), línia 414 a 18.0 (e2ab18b), línia 414 a 19.0 (ce7f5a3) i línia 416 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 371 a 17.0 (d203ee6), línia 371 a 18.0 (e2ab18b), línia 370 a 19.0 (ce7f5a3) i línia 385 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 397 a 17.0 (d203ee6), línia 397 a 18.0 (e2ab18b), línia 396 a 19.0 (ce7f5a3) i línia 411 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 397 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 462 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 521 a 17.0 (d203ee6), línia 521 a 18.0 (e2ab18b), línia 521 a 19.0 (ce7f5a3) i línia 523 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 413 a 17.0 (d203ee6), línia 413 a 18.0 (e2ab18b), línia 412 a 19.0 (ce7f5a3) i línia 427 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 605 a 17.0 (d203ee6), línia 605 a 18.0 (e2ab18b), línia 604 a 19.0 (ce7f5a3) i línia 625 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_provider.py, línia 352 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 987 a 17.0 (d203ee6), línia 987 a 18.0 (e2ab18b), línia 987 a 19.0 (ce7f5a3) i línia 1002 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 611 a 17.0 (d203ee6), línia 611 a 18.0 (e2ab18b), línia 610 a 19.0 (ce7f5a3) i línia 631 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 442 a 17.0 (d203ee6), línia 442 a 18.0 (e2ab18b), línia 442 a 19.0 (ce7f5a3) i línia 444 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 424 a 17.0 (d203ee6), línia 424 a 18.0 (e2ab18b), línia 423 a 19.0 (ce7f5a3) i línia 438 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 418 a 17.0 (d203ee6), línia 418 a 18.0 (e2ab18b), línia 417 a 19.0 (ce7f5a3) i línia 432 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 63 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 117 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.po
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- Codi del mòdul: flexigo_payment_gocardless: __manifest__.py, línia 31 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
