Thanks Andre for your time and comments.
I totally accept it is dangerous. Inputs from expert community are very valuable here.
I am thinking, when voucher line is created, if conditions meet then split value and create two voucher lines instead of one.
E.g. Original would have created one voucher line - Amount - 10.
Now create two voucher lines. Line - 1: Amount - 80. Line - 2: Amount - 20.
Hence the voucher balances overall.
class - LedgerVoucherObject, method - addTrans(). calls transactionCollection.add(_transaction), and Adds voucher lines.
so, based on condition, I call this twice, manipulate the ReportingCurrencyAmount (80+20)
transactionCollection.add(_transaction);
transactionCollection.add(_transaction);
Voucher overall will balance.
Want to try this in a prototype.
Do comment your view please.