Cosa dice GoCardless
| Reason | Tipo | Testo di GoCardless |
|---|---|---|
mandate_not_inactive | invalid_state | «Mandate could not be reinstated» e «it is already active or being submitted.» |
GoCardless separa le due parti del testo con un trattino. Nel riferimento dell'API lo specifica: «This will fail with a mandate_not_inactive error if the mandate is already being submitted, or is active.». È un errore invalid_state e, per questi casi, GoCardless chiede di avvisare l'utente senza consentire nuovi tentativi («invalid_state → inform the end user, do not allow retry.»).

Quali mandati si possono riattivare
La riattivazione ha condizioni più restrittive dello stato:
- È una funzione limitata: «Restricted this endpoint requires approved custom payment pages».
- Vale solo per un mandato annullato dalla Dashboard o dall'API: «A mandate can only be reinstated if it has been cancelled through the dashboard or the API.». Un mandato annullato dalla banca no: «Any mandate that has been cancelled by the bank cannot be reinstated.».
- Serve per mandati annullati o scaduti («Reinstates a cancelled or expired mandate to the banks.»), e un mandato può essere ripresentato fino a 10 volte («Mandates can be resubmitted up to 10 times.»).
Dopo la richiesta il processo è quello di una nuova attivazione: arriva resubmission_requested e poi, come dice GoCardless, «so you will receive a submitted webhook, followed by a reinstated or failed webhook up to two working days later.».
Cosa fa Odoo con il connettore
Nella scheda del metodo di pagamento del cliente, il connettore mostra il pulsante «Reinstate mandate (sandbox)». Compare solo se il mandato è di GoCardless, il provider non è in produzione (in Odoo 17, 18 e 19, lo stato del provider; in Odoo 20, la casella di produzione) e «Mandate Status» è cancelled, failed o expired.
Premendolo:
- Il connettore chiede a GoCardless la riattivazione di quel mandato.
- Se GoCardless l'accetta, lo stato passa a
reinstate_requestede nella scheda del cliente compare «Reinstatement of the GoCardless mandate requested. It stays unusable until the bank confirms it.». Il metodo di pagamento resta archiviato. - Quando arriva
reinstated, il connettore lo considera di nuovo valido: lo riattiva e scrive «The GoCardless mandate is usable again (reinstated).».
Se GoCardless risponde mandate_not_inactive, il connettore non lo intercetta: Odoo mostra «GoCardless rejected the request.» con il messaggio di GoCardless, il reason e il request_id, e il mandato resta com'era. Succede quando Odoo ritiene il mandato non più valido mentre in GoCardless è già attivo o in invio, perché i suoi eventi non sono ancora arrivati a Odoo. Dopo una richiesta accettata il pulsante non compare più, perché lo stato passa a reinstate_requested.
La nota che il mandato è di nuovo utilizzabile la scrive il connettore nell'applicare l'evento, senza intervento di nessuno. Il connettore non è tradotto in italiano: questi testi compaiono sempre in inglese, anche in un Odoo in italiano, sia che li avvii un utente sia un'azione pianificata: «The GoCardless mandate is usable again (reinstated).».

Cosa fare
- Se compare
mandate_not_inactive, cerca il mandato nella Dashboard di GoCardless. Se è attivo o in invio, non c'è nulla da riattivare: attendi l'arrivo dei suoi eventi. L'azione pianificata che ogni ora recupera gli eventi persi li porta. - Se il mandato è stato annullato dalla banca, non provarci: GoCardless non riattiva questi mandati. Chiedi al cliente un nuovo mandato.
- In produzione, il connettore non offre la riattivazione: la strada è un nuovo mandato firmato dal cliente.
- Per provarlo, usa il sandbox di GoCardless con il provider in test.
Perché il pulsante compare solo fuori dalla produzione?
Perché GoCardless limita la riattivazione a chi dispone di pagine di pagamento personalizzate approvate, e il connettore la offre solo fuori dalla produzione.
Quanto tempo serve perché il mandato torni valido?
Il tempo necessario alle banche: secondo GoCardless, prima avvisa che è stata richiesta la riattivazione, poi che il mandato è stato presentato e, fino a due giorni lavorativi dopo, se è stato riattivato o se è fallito. Fino ad allora, il connettore non lo utilizza.
Con il nostro connettore
In Odoo 17, 18, 19 e 20 il connettore offre la riattivazione di un mandato annullato, fallito o scaduto solo fuori dalla produzione e non lo riutilizza finché GoCardless non conferma la riattivazione con il suo evento.
Continua a leggere
Verificato nel codice del connettore (versione 17.0, 18.0, 19.0 e 20.0) e nelle fonti collegate
Fonti
- docs.gocardless.com/docs/api-reference/responses-and-errors
- docs.gocardless.com/docs/api-reference/mandate
- docs.gocardless.com/docs/api-reference/events/mandate
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 134 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: views/payment_token_views.xml, riga 23 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: views/payment_token_views.xml, riga 22 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 998 in 17.0 (d203ee6), riga 998 in 18.0 (e2ab18b), riga 998 in 19.0 (ce7f5a3) e riga 1013 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 176 in 17.0 (d203ee6), riga 176 in 18.0 (e2ab18b), riga 176 in 19.0 (ce7f5a3) e riga 175 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 173 in 17.0 (d203ee6), riga 173 in 18.0 (e2ab18b), riga 173 in 19.0 (ce7f5a3) e riga 172 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1004 in 17.0 (d203ee6), riga 1004 in 18.0 (e2ab18b), riga 1004 in 19.0 (ce7f5a3) e riga 1019 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 170 in 17.0 (d203ee6), riga 170 in 18.0 (e2ab18b), riga 170 in 19.0 (ce7f5a3) e riga 169 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 397 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_provider.py, riga 462 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 521 in 17.0 (d203ee6), riga 521 in 18.0 (e2ab18b), riga 521 in 19.0 (ce7f5a3) e riga 523 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 158 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: models/payment_token.py, riga 77 in 17.0 (d203ee6), riga 77 in 18.0 (e2ab18b), riga 77 in 19.0 (ce7f5a3) e riga 76 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 1157 in 17.0 (d203ee6), riga 1157 in 18.0 (e2ab18b), riga 1157 in 19.0 (ce7f5a3) e riga 1164 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: views/payment_token_views.xml, riga 15 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: i18n/flexigo_payment_gocardless.pot, riga 785 in 17.0 (d203ee6), riga 785 in 18.0 (e2ab18b), riga 785 in 19.0 (ce7f5a3) e riga 800 in 20.0 (688d86b)
- Codice del modulo: flexigo_payment_gocardless: const.py, riga 117 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
- 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
- Codice del modulo: flexigo_payment_gocardless: __manifest__.py, riga 31 in 17.0 (d203ee6), 18.0 (e2ab18b), 19.0 (ce7f5a3) e 20.0 (688d86b)
