I'm surprised at the lack of relationship between opportunities, products and estimates/contracts/invoices.
In the world of CRMs for sales pipeline management, an opportunity represents a potential deal. These are managed and progressed through stages of the pipeline. The opportunity is where the follow-up is tracked and the deal is worked. The opportunity should contain details of the products which are looking to be purchased (upfront and monthly values ideally), which builds a dynamic value for the opportunity.
Upon reaching the required stage of the pipeline, an opportunity should then be able to be easily converted into a linked estimate, contract or proposal.
Unless I'm missing something, it feels like these entities exist almost independently.
It would be really helpful to have this replicate the sales lifecycle.