Transaction revert (roll-back)

Created on 14 April 2018, over 6 years ago
Updated 25 January 2023, over 1 year ago

Problem/Motivation

Currently there is not a roll-back function to "undo" executed transactions. Executed transactions can not be updated or deleted to preserve the integrity of the transaction flow. The right way to revert a transaction is by creating a new one that does the same as the first, but in the opposite direction. For example, a payment refund is the reverse transaction for a executed payment transaction.

Proposed resolution

Add reverse transaction generation support.

Remaining tasks

The basic implementation steps would be:

  1. add methods to the transactor plugin interface and its implementations to create a reverse transaction for a given one
  2. link each transactions with the #2960958: Related transactions support
  3. add the "revert" action to the transaction entity type
  4. add a new flag in the transactor plugin annotation indicating that the transactor allows transaction reversion
  5. update the page that talks about transaction execution in the documentation guide
  6. update README.txt and project page to mention this feature

Additional notes:

User interface changes

The action link to revert a transaction.

API changes

New methods in transaction entity type interface to revert the transaction.

Data model changes

None.

Contribution needed

Please, read the contribute section in the documentation guide to find out how you or your organization can support this planned feature.

🌱 Plan
Status

Active

Version

1.0

Component

Code

Created by

🇪🇸Spain manuel.adan 🌌

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • 🇮🇹Italy sepa_cleversoft

    Maybe it's easier to just think about a simple logic to recalculate the balance in transaction executed later than the modified or deleted one.

    In this case a simple hook or event subscriber would be enought.

Production build 0.71.5 2024