The note was not initialised, so a failed client setup raised a
TypeError on note += ...; and functional errors were not caught, showing
a raw traceback. Initialise the note and report EbicsFunctionalError
like EbicsTechnicalError.
The pain.002 unlink hook raised NotImplementedError, so no EBICS file
with that processing method could be deleted. Make it a no-op
placeholder like the other formats.
ZZZZ is accepted by the order number constraint, but the next number was
computed as 0000, which the constraint then rejects, blocking H003
uploads. Wrap it to A000 like ZZZY already does.
The ondelete guard checked state "active", which ebics.config does not
have (draft/confirm), so confirmed configurations could be deleted.
Same check as on 19.0.
_process_bank_statement_oe commits after each statement. Under tests this
left the test transaction. Skip the commit when the registry is in test
mode or the current thread is a test thread.
The xpath result was indexed before the emptiness check, so a statement
without IBAN or other account id raised an IndexError instead of the
"No bank account number found." notification.
The error was noted but processing went on with root.nsmap, raising an
AttributeError. Unparseable content now also yields the "Invalid XML
file." notification instead of an XMLSyntaxError.