Appl. dictionary m_movementline.M_AttributeSetInstanceTo_ID has allowCopy='Y'. When user copy existing Movement Line when ASI=AsiTo then ASITo copied and users are usually oversight/accidentally doesn't change ASIto. System Move Storage Levels from ASI1 to ASI2.
This make corrupt data.
solution: Setup Appl. dictionary m_movementline.M_AttributeSetInstanceTo_ID has allowCopy='N'.
If you need you can created callout & validation rule .
You can use your solution
IMO idempiere must be prepared to best practices. If such issue cause problems then confuse new implementor…we have changed in our db well.
In our PalichMos project, we immediately configure these checkmarks when introducing new functional.
There are a lot of similar places in the system.