[Disclaimer: I am not a fan of long posts, but to quote Mark Twain, if I had more time I would have written a shorter one]
There has been a lot of discussion around immutable ledgers, and how they specifically stop users post back dated entries. These entries potentially change the FIFO queue and can completely change the timelines, accounts and balances. In v13, we took the decision to stop editing stock value so that we don’t disturb the timeline.
If I were a manager, I would not want my team to post back dated entries because:
- Increase in chances of fraud and malpractice.
- Lack of incentive to post entries in real time.
- Lack of real time inventory leads to:
- Bad purchasing decisions
- Surprising stock-outs
- Excess inventory
- Poor quality of MIS.
From an software POV
- Back dated entries are computationally expensive
- Hard to investigate because previous queues are “overwritten” when a back dated entry is made.
A system that make it hard to make back dated decisions forces the user to do it correctly the next time. There is a concept in education where you don’t give an “eraser” to the learner, so the learner
- Learns to accept mistakes
- Understands the true cost of mistakes
- Expensive mistakes lead to faster behavioral correction
- Learns that mistakes can’t be hidden
This is the decision in front of us. The goal of an ERP (or any) software is to make the life better of the user. Back-dated entries are a bad thing, and they have to be hard.
The counter view is of course, you let the user decide. Who are you to judge on a good practice? If the user wants to make back dated entries, it is their problem.
Great products make the life of users better. I strongly feel that not having real time inventory data leads to poor decision making and wastage. ERPNext should not encourage users to follow such bad practices.
Correct data and Real time inventory is 90% of the value of using a perpetual inventory system in the first place. If you want to just count, then use periodic inventory!
Users (some?) may initially complain but learn to work around the system by making temporary inwards (a conscious decision to acknowledge a missing entry) and then move on in the forward direction. It is not impossible but a bit hard. This will ensure that the real time inventory is captured for better decision making. It will make companies much better. Isn’t this why you use software in the first place?
As software designers, what are the ethics around making such decisions?
I am strongly in favor of a system that allows real time inventory only. What are your thoughts?
Edit: The current implementation in v13 allows the following
- Accounting entries can be posted in any period on any date
- Stock entries can be cancelled, but the reversal will be in the forward direction.
This should ensure that from an accounting POV, there is no real impact other than ledgers not being deleted.