Què diu GoCardless
| Esdeveniment | Codi SEPA Core | Text de GoCardless |
|---|---|---|
| payments · failed | AC04 | The bank account for this payment has been closed. The mandate will also be cancelled. |
| payments · failed | MD07 | This payment failed because the customer is deceased. |
| mandates · cancelled | AC04 | The bank account for this mandate has been closed. Any subscriptions and pending payment will also be cancelled. |
| mandates · cancelled | MD07 | This mandate has been cancelled because the customer is deceased. |
La causa és la mateixa en les quatre files, bank_account_closed; el codi distingeix el motiu. Fixa't en la tercera: a més del mandat, GoCardless cancel·la els pagaments pendents d'aquest mandat, que et arribaran com a pagaments cancel·lats amb la mateixa causa.

Dos esdeveniments per a un mateix fet
Un tancament de compte arriba a Odoo dues vegades: amb el pagament que falla i amb el mandat que es cancel·la. El connector atén els dos: el primer que arriba arxiva el mandat i avisa, i el segon ja el troba arxivat, sense repetir l'avís. Si algun no arriba pel webhook, la tasca que cada hora demana a GoCardless els esdeveniments perduts el recupera, fins a 100 per passada.
Què fa el connector
- Passa la transacció a error amb «GoCardless could not collect this payment (bank_account_closed).» i guarda la causa.
- Si la factura ja estava pagada amb aquest cobrament, anul·la el pagament a Odoo i la factura torna a estar pendent.
- Arxiva el mètode de pagament del client:
bank_account_closedés una de les quatre causes amb les quals el connector dona el mandat per mort, juntament ambmandate_cancelled,mandate_expirediauthorisation_disputed. - Ho escriu a la fitxa del client: «The GoCardless direct debit mandate of … is no longer usable (bank_account_closed). No further collection can be taken against it. Ask the customer to set up a new mandate.»
- Crea una activitat «GoCardless mandate lost» perquè algú se n'encarregui abans de la següent factura.
El mandat arxivat es queda a Odoo com a històric, però ja no s'ofereix per cobrar. La transacció s'obre 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.
Aquests tres textos els escriu el connector 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: «GoCardless could not collect this payment (bank_account_closed).», «The GoCardless direct debit mandate of … is no longer usable (bank_account_closed). No further collection can be taken against it. Ask the customer to set up a new mandate.» i «GoCardless mandate lost».
Com saber si és AC04 o MD07
Des d'Odoo no es distingeix. La causa és la mateixa, el connector guarda la causa i no el codi SEPA, i la nota del client i l'activitat diuen el mateix en els dos casos. El codi el veus a GoCardless. Segons el seu centre d'ajuda, el motiu de cada fallada surt a la cronologia del pagament, al Dashboard («You are able to view the reason for a payment failure in the status timeline of the payment in your GoCardless dashboard.»). En el mode avançat, el codi exacte també va a l'esdeveniment (details.reason_code), i el Dashboard guarda els enviaments dels últims 3 mesos a Developers > Webhooks, amb el seu contingut.
Si el codi és MD07
MD07 no és un problema tècnic. El titular del compte ha traspassat i el mandat es cancel·la. Les factures pendents d'aquest client no es cobraran per domiciliació, i com reclamar-les és una qüestió que té a veure amb la teva assessoria, no amb el connector. El prudent és revisar els seus cobraments programats i subscripcions a Odoo perquè no se'n generin més. La nota d'Odoo demana un mandat nou també en aquest cas, perquè només coneix la causa: amb MD07, no el demanis.
Què fer amb AC04
- Contacta amb el client: té un compte nou, o el tindrà, i necessita signar un mandat amb ell.
- Quan signi, el mandat nou serà un altre mètode de pagament a Odoo; el vell continua arxivat.
- Cobra amb el mandat nou les factures que han quedat pendents.

Puc reintentar un pagament amb bank_account_closed?
No té sentit: el compte no existeix. A més, el connector arxiva el mandat, i amb el mandat arxivat el botó «Retry collection» no surt a la transacció.
I si el client ha canviat de banc amb el servei de traspàs de comptes?
Això no és un tancament: GoCardless ho comunica com a mandat transferit, amb la causa bank_account_transferred, i el mandat continua valent.
Amb el nostre connector
El connector de GoCardless per a Odoo 17, 18, 19 i 20 fa amb bank_account_closed el que faria una persona atenta: dona el cobrament per fallit, reobre la factura, retira el mandat mort perquè ningú el torni a fer servir i deixa un avís amb la causa a la fitxa del client.
Continua llegint
Comprovat al codi del connector (versió 17.0, 18.0, 19.0 i 20.0) i a les fonts enllaçades
Fonts
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 15 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 442 a 17.0 (d203ee6), línia 442 a 18.0 (e2ab18b), línia 441 a 19.0 (ce7f5a3) i línia 456 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 83 a 17.0 (d203ee6), línia 83 a 18.0 (e2ab18b), línia 83 a 19.0 (ce7f5a3) i línia 82 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 145 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/events/mandate
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 76 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 33 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_token.py, línia 131 a 17.0 (d203ee6), línia 131 a 18.0 (e2ab18b), línia 131 a 19.0 (ce7f5a3) i línia 130 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 725 a 17.0 (d203ee6), línia 725 a 18.0 (e2ab18b), línia 724 a 19.0 (ce7f5a3) i línia 748 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: models/payment_transaction.py, línia 754 a 17.0 (d203ee6), línia 754 a 18.0 (e2ab18b), línia 753 a 19.0 (ce7f5a3) i línia 777 a 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)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 436 a 17.0 (d203ee6), línia 436 a 18.0 (e2ab18b), línia 436 a 19.0 (ce7f5a3) i línia 438 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 1148 a 17.0 (d203ee6), línia 1148 a 18.0 (e2ab18b), línia 1148 a 19.0 (ce7f5a3) i línia 1155 a 20.0 (688d86b)
- Codi del mòdul: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, línia 495 a 17.0 (d203ee6), línia 495 a 18.0 (e2ab18b), línia 495 a 19.0 (ce7f5a3) i línia 497 a 20.0 (688d86b)
- 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)
- docs.gocardless.com/docs/api-reference/events/payment
- Codi del mòdul: flexigo_payment_gocardless: views/payment_transaction_views.xml, línia 13 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 63 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 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: i18n/flexigo_payment_gocardless.pot, línia 1016 a 17.0 (d203ee6), línia 1016 a 18.0 (e2ab18b), línia 1016 a 19.0 (ce7f5a3) i línia 1031 a 20.0 (688d86b)
- docs.gocardless.com/docs/api-reference/webhooks
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- support.gocardless.com/hc/en-gb/articles/360001467265
- Codi del mòdul: flexigo_payment_gocardless: const.py, línia 66 a 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) i 20.0 (688d86b)
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
