For some time now, i was wondering why callouts only get executed if there is a change in the field they belong to. Imagine the following example:
-You have a callout which depends on another field of the same tab (e. g. a custom field and the currency field on the order window).
-You enter some value in your own field and your callout gets executed.
-In your callout, you detect that the currency wasn't set yet and you return a message to the user
-The user sets the missing value and goes back to the field from which your callout got executed
-The user enters the same value again and leaves the field (but nothing happend since the callout only gets exectued if there is a change in the field)
-The DAU thinks everything is ok since he only knows that he has to enter something in the field and leave it
-Now you have an inconsistency
I understand that executing a callout everytime the field is left can lead to cycles if you
concatenate callouts with each other but here is my suggestion how we could fix that at least for the OSGi way (which is the best way anyway :)):
Extend IColumnCalloutFactory.getColumnCallouts() with a third parameter: "boolean executeAlways"
public interface IColumnCalloutFactory {
public IColumnCallout[] getColumnCallouts(String tableName, String columnName, boolean executeAlways);
}
What do you think? How would you handle my problem? Have you ever encountered something similar?
Regards
Jan