We would like to support the following use case:
- User is entering data
- Then looking up something in a combo-box drop down list
- Then doesn’t find the desired record
- Then is allowed to create the record using a modal dialog
- Then continues working on data entry
The functionality should be set up by modelling a new lookup binding element and optionally a specific data entry screen.
This should contain the following properties:
When a new record binding exists for the current user (by evaluating Roles) the combo box should display a new button left to the drop down arrow. By clicking on this button a modal dialog is opened. Alternatively if filtering in the dropdown results in zero results a Add new… should be presented as the only drop down item.
- It should not load any data
- It should switch the root entity section to detail view and disable (+) and (-) buttons. This would allow reusing the standard data entry screens e.g. for simple one-field lists.
- It should add a new record automatically to the master entity (screens with multiple root entities should not be allowed by model consistency check).
- Potential action buttons should show as usual in the bottom of the modal dialog as standard buttons (we already do this in modal dialogs)
- Save and Cancel buttons should show
- After clicking on Save the
SAVEaction should be called on the server like with a standard data screens.
- All standard situations for saving should work (executing a validation rule before saving, handling exceptions after saving, e.g. displaying rule exceptions)
- The modal dialog should close
- An id of a record from the root entity should be selected in the combo-box
- Clicking on Cancel should simply close the screen without selecting anything in the combo-box
Everything should be standard and should work by the current responsive design rules (e.g. modal dialogs).
If the combo-box is filtered so adding a new record would require a specific value pre-filled, this can be handled using a default-set in the menu item specified in the binding. This way when a new record is added in the modal dialog it would also contain the right values.