Hi everybody!
I ended up taking a mix of Cindy's and Jim's advice.
Created a bizobj that opens a view (where the data is), and also creates a cursor (based on the view), to which I added a few fields to apply payments, etc.
Then I added some custom methods to the bizobj that allow me to populate the cursor with all the records from the view or just one at a time, a few other methods to apply payments, and one final method that commits the payments (updates the view's contents and creates records in yet another table that serves as link between invoices and payments - many to many).
Thanks for all the excellent ideas!
Alex
Low-carb diet not working? Try the Low-food diet instead!