In some instances, deleting transactions is necessary. You can put a detective control to identify why the transaction was deleted.
1. Enable the Use Deletion Reason in the Enable Features (Setup > Company > Enable Features > Company subtab).
2. Add transaction deletion reasons (Setup > Accounting > Accounting Lists).
Notes:
1. The Original Document Damaged is a system deletion reason and does not require a memo (i.e., reason) when deleting a transaction. Consider inactivating this reason. Do the same for the option ‘Other’ since this reason is too general (even if the user types the reason in the memo).
2. The deletion reason also works when deleting transactions using inline edit but not when using a script. Inactivate the’ Other’ reason to prevent a script from deleting a transaction without a reason. The error will be “THIS_DELETION_REASON_HAS_BEEN_DEACTIVATED” if the script tries to delete a transaction and the ‘Other’ reason is disabled.
3. If the ‘Other’ reason is enabled, deleting a transaction using a script will show the Deletion Reason Memo as “This transaction was deleted by script or web service.”
4. Removing the reversal of a journal will show the Deletion Reason Memo as “Reversal date removed”.
5. Do not delete transactions as much as possible. Remove the Full transaction permissions on roles. You can also use alternatives such as voiding or creating a reversing transaction (e.g., setting a reversing date for journals or creating a credit memo from an invoice).
6. You can use translations for your transaction deletion reasons.
7. Using the deletion reason as a control is not enough. Always review the deletion of records in the Transaction Numbering Audit Log (Transactions > Management > Transaction Numbering Audit Log).
8. You can use additional controls such as GL Audit Numbering and GL Impact Locking (more on my future posts).