Dynamically update attribute of a same name in different classes
For one thing, getCurrentSectionStatus(entity) is duplicated multiple times. It would be better to put that in a local variable and use that variable instead.
That way if at some point you change the way you get the current section status,
you can make the change in one place.

However,
there are clearly deeper problems with this code.
Most noticeably,
field names such as StatusPI1, StatusPI2, ..., and StatusSI1, StatusSI2, ..., stink, as variable names containing numbers usually do.

Translated to pseudocode, the method looks like this:


if the TransactionLine contains a HorsePurchase: update a field in it depending on the section field of the line
or else, if the TransactionLine contains a HorseSale: update a field in it depending on the section field of the line
or else, if the TransactionLine contains a HorseDivideProfit: update a field in it depending on the section field of the line


At the minimum, it would be better to have separate TransactionLine subclasses to handle each type, for example HorsePurchaseTransaction, HorseSaleTransaction, HorseDivideProfitTransaction.
Then you could have an HorsePurchase.update method that takes a HorsePurchaseTransaction as parameter and apply the necessary changes,
and do similarly for the other types too.

This is still not enough to treat the odd StatusPI1, StatusPI2, and other fields, but just based on the posted code, I don't think there is enough information to propose an alternative approach. After splitting the TransactionLine as I described above, you could post the revised version and some more of the rest of the code in a new question,
so that we can address these issues and suggest further improvements.