Tres esdeveniments i quatre files, el mateix codi
| Esdeveniment | Causa | Text de GoCardless |
|---|---|---|
| payments · failed | mandate_cancelled | The customer cancelled their mandate at their bank. |
| payments · charged_back | mandate_cancelled | This payment was charged back by the customer's bank, because the customer disputed authorising the transaction. |
| payments · cancelled | authorisation_disputed | This payment has been cancelled because the payer disputes authorising its mandate. |
| payments · cancelled | mandate_cancelled | This payment has been cancelled because the payer disputes authorising its mandate. |
Les quatre files són de la taula de SEPA Core de la documentació de GoCardless i porten MD01; el pagament cancel·lat surt amb dues causes i el mateix text. El mandat també es cancel·la, i GoCardless ho comunica amb el seu propi esdeveniment: «A payment under this mandate failed, indicating that the mandate has been cancelled at the customer's bank. Any subscriptions and pending payments will also be cancelled.».

Què canvia segons el moment
Si el client anul·la el mandat abans que es cobri el rebut, el pagament falla: els diners no han arribat. Si ho disputa després de cobrat, és una devolució: els diners han arribat i se'n van. I si hi havia pagaments esperant a presentar-se, GoCardless els cancel·la abans d'enviar-los. El connector anota al seu codi que va veure la causa authorisation_disputed amb MD01 en un pagament de prova del sandbox, com a devolució d'un pagament ja liquidat.
Què fa Odoo amb el connector
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. En els tres casos, la transacció acaba en «Error» amb la causa a la vista. El missatge depèn de l'esdeveniment: «GoCardless could not collect this payment (mandate_cancelled).» per a un fallit, i «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.» per a una devolució. Si Odoo ja tenia la factura pagada amb aquest cobrament, el connector anul·la el pagament i la factura torna a estar pendent.
El important és el mandat. mandate_cancelled i authorisation_disputed són entre les quatre causes amb què el connector el dona per mort, així que:
- arxiva el mètode de pagament del client, que deixa d'oferir-se per cobrar;
- escriu a la seva fitxa «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.»;
- crea una activitat «GoCardless mandate lost».
Arriben diversos esdeveniments amb la mateixa notícia, el del pagament i el del mandat, però l'avís surt una sola vegada: el segon troba el mandat ja arxivat.
Tots aquests 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 (mandate_cancelled).», «GoCardless reported a chargeback for this payment (mandate_cancelled). The funds have been taken back and will be deducted from a future payout.», «The GoCardless direct debit mandate of … is no longer usable (mandate_cancelled). No further collection can be taken against it. Ask the customer to set up a new mandate.» i «GoCardless mandate lost».
Què fer
Abans de demanar un mandat nou, entén per què l'ha anul·lat. Un client que va deixar de voler el servei necessita una baixa, no una altra signatura. Si va ser un error seu o un canvi al seu banc, demana-li que torni a signar i cobra amb el mandat nou les factures que han quedat obertes. Si diu que mai va autoritzar el càrrec, revisa com es va signar el mandat abans de seguir cobrant-li.
Serveix de res reintentar un pagament amb MD01?
No. El mandat ja no existeix per al seu banc, i amb el mandat arxivat el botó «Retry collection» no surt a la transacció. Cal un mandat nou signat pel client.

Amb el nostre connector
A Odoo 17, 18, 19 i 20, el connector distingeix el fallit de la devolució, reobre la factura si cal, retira el mandat i et deixa la tasca de parlar amb el client a la seva fitxa. El que no fa és demanar el mandat nou pel seu compte: aquesta conversa és teva.
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: 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 71 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 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 713 a 17.0 (d203ee6), línia 713 a 18.0 (e2ab18b), línia 712 a 19.0 (ce7f5a3) i línia 736 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: 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_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: 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 529 a 17.0 (d203ee6), línia 529 a 18.0 (e2ab18b), línia 529 a 19.0 (ce7f5a3) i línia 531 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)
- docs.gocardless.com/docs/api-reference/events/mandate
- 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)
- github.com/odoo/odoo/blob/20.0/addons/payment/i18n/ca.po
- github.com/odoo/odoo/blob/17.0/odoo/http.py
- github.com/odoo/odoo/blob/20.0/addons/account_payment/views/account_move_views.xml
