I never pass row objects to the client and I store only the info that needs to be stored. So I would get rid of the balance
and running_total
columns.
Then, when it’s time to you get the content for the datagrid, I would add the calculated columns:
rows = []
for row in app_tables.transactions.search():
row = dict(row)
row['balance'] = row['credit'] - row['debit']
As for the running totals per client, I would need more details, because I don’t see how you are doing that.
Please paste the code wrapped by ```, don’t use a snapshot, so I can copy/paste and edit your code instead of rewriting all from scratch.