my standard answer would be to create a stored proc.
Why?
because you can add in the rows for projected payments/amounts. The data doesn't have to exist in a destination table, but needs to exist in some table somewhere. Linking to it may cause duplications in the report, but in the stored proc you can filter that out and return just what you want.
Personally, I would dread having to create reports without stored procs (for that matter I am down to dreading having to create reports that pull the data from the database...I love creating the data, modifying it if need be in a data layer and pushing the resulting information to the report)
HTH