diff --git a/base/src/org/compiere/model/GridTab.java b/base/src/org/compiere/model/GridTab.java
index 78d016d640..20ef74481c 100644
--- a/base/src/org/compiere/model/GridTab.java
+++ b/base/src/org/compiere/model/GridTab.java
@@ -74,6 +74,8 @@ import org.compiere.util.ValueNamePair;
*
BF [ 1742159 ] Editable number field for inactive record
* BF [ 1968598 ] Callout is not called if tab is processed
* BF [ 2104022 ] GridTab.processCallout: throws NPE if callout returns null
+ * FR [ 2846871 ] Add method org.compiere.model.GridTab.getIncludedTabs
+ * https://sourceforge.net/tracker/?func=detail&aid=2846871&group_id=176962&atid=879335
* @author Victor Perez , e-Evolution.SC [1877902] Implement JSR 223 Scripting APIs to Callout
* @author Carlos Ruiz, qss FR [1877902]
* @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1877902&group_id=176962 to FR [1877902]
@@ -2944,5 +2946,29 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
}
}
-
+
+ /**
+ *
+ * @return list of all tabs included in this tab
+ */
+ public List getIncludedTabs()
+ {
+ List list = new ArrayList(1);
+ for (GridField field : getFields())
+ {
+ if (field.getIncluded_Tab_ID() > 0)
+ {
+ for (int i = 0; i < m_window.getTabCount(); i++)
+ {
+ final GridTab detailTab = m_window.getTab(i);
+ if (detailTab.getAD_Tab_ID() == field.getIncluded_Tab_ID())
+ {
+ list.add(detailTab);
+ break;
+ }
+ }
+ }
+ }
+ return list;
+ }
} // GridTab