User should have flexibility to open multiple windows at a time.$0$03.All forms wherever relevant should have shortcuts to open.e.g. User should have facility to create new customers from
quotation itself or wherever cutomer selection take place.
You are free to keep all customer related information on single form or you can split it in multiple form it is all depends on your requirement or your
preference or even you can customize it, but will talk about it later. First we take point 1
Your point is true that user should have flexibility to open multiple views (windows) at a time and the views should open from anywhere. We could have
a thousand of approach for doing same, but best one as per my understanding create a service that would be responsible for A to Z operations that take place when u add, Edit or delete customer including methods responsible for opening and closing customer
views. Once If you have created such kind of service you can call it from anywhere depends on the visibility of service. Suppose you have kept customer master and quotation in different modules and you don’t want to keep the direct reference between both,
in this case the above given approach is the best one.
First of all you need to identify all the views that could be called from different views of different modules and create services. And one final important
point keep the instance of service in root container or a container that is equally accessible by respected modules. If you want code clip, will try to provide you.
In your point you have also mentioned that user should have flexibility to open multiple views at a time, one more addition I would like to do in this
point is that user should have flexibility to work on multiple views at same time.
The solution is very much street forward if you are using Tab workspace or region, each view occur on different tab page.
But if you are using Deck workspace or Item control instead of tab, situation goes complex. At this point you could maintain and show a list of opened
view to the user.
See, when user ask for customer master view, you simply create an instance of customer view register it in container and show it to user. During working
on customer master you switch to purchase contract view without saving or closing the customer master. Once if you have finished working on purchase contract and you want to come back to customer master, just go to the open list and find the object of customer
master from container and show in again, NOTE here we are not creating new instance of customer master.
Best approach: Before creating any instance check it in Container.