Organise Data to Tree Structure

From iDempiere en
(Redirected from Organise Tree Structure)

This document try to describe based on available wiki pages, and issues how Tree working in iDempiere including alternative parent/child data structure without tree.

1. Tree - "standard iDempiere way"

https://wiki.idempiere.org/en/Tree_(Window_ID-163)

Tree can be maintained in window/tab by drag and drop or in special form Tree Maintenance

NF2.1 Tree Driven by Search Key example 01 parent child (01A, 01B) -> Tree's can be organised automagically into tree - when admin mark it as Driven by Search Key and run verify tree button - tree engine find parent node based on search key and write into tree database note: the tree structure is updated on each change after user change search key in window as well.

Purpose> idempiere zk components allow display data in tree and user can modify tree structure.

A. Predefined Trees (table/area)

these trees are predefined in iDempiere, ready to use
  • Menu - Primary Menu - AD_Menu (isSummary)
    • usage 1. https://wiki.idempiere.org/en/Reference
    • usage 2. https://wiki.idempiere.org/en/Reference-System
  • Element Value - (Primary Account Element Value) - C_Element (has AD_Tree) +C_ElementValue (isSummary)
    • this can be imported.
    • note: C_Element has AD_Tree which allow select tree filter (this looks me same as Parent_Column_ID for custom table)
  • Bpartner - (Primary Business Partner) - IsSummary, BPartner_Parent_ID
  • Organization - (Primary Organization) - IsSummary
  • Product - (Primary Product) - IsSummary
  • Project - (Primary Project) - IsSummary
  • Sales Region - (Primary Sales Region) - IsSummary

B. Tree for custom table

Allow define tree for any window/tab per tenant has field isSummary=Y

more: https://wiki.idempiere.org/en/NF3.0_Tree_On_Any_Table link

custom tables displayed by dynamic validation:

  • ad_menu
  • ad_org
  • ad_pinstance
  • ad_tree_favorite
  • c_activity
  • c_bpartner
  • c_campaign
  • c_elemenvalue
  • c_project
  • s_salesregion
  • c_tax
  • i_elementvalue - exclude ?
  • i_reportline - exclude ?
  • m_product_category
  • m_product
  • pa_goal

2. Hierarchy without tree definition

iDempiere has defined on some tables %parent% and isSummary columns. This allow define hierarchical structure without iDempiere standard tree component. The next elements are defines on a table as Parent column:

  • A_Parent_Asset_ID,
  • PA_GoalParent_ID
  • ParentValue_Parent Key - used for import element value
  • Parent_Org_ID
  • Parent_Tax_ID
  • BPartner_Parent_ID
  • SalesRep_BP_BPartner_Parent_ID
  • M_Product_Category_Parent_ID

SQL snippets

1--- get trees
2
3SELECT * FROM ad_tree WHERE TreeType = 'TL'
1-- find tree for a specific tree
2SELECT t.ad_tree_id, treetype, node_id, parent_id, seqno
3FROM ad_tree t
4LEFt JOIN ad_treenode tn ON  tn.ad_tree_id=t.ad_tree_id
5WHERE TreeType = 'TL' and t.ad_tree_id=?
6order by t.ad_tree_id, node_id, parent_id, seqno

Specific Use case

We would like show to customer M_Product_Category as tree (ZK) and same time allow get data from REST API to build from M_Product_Category+M_Product_Category_Parent_ID+isSummary+SeqNo tree - flat (TREE API :) )

xref

https://www.chuckboecking.com/adempiere-idempiere-tree-management/

https://docs.mckayerp.com/introduction/system-administration/general-rules/system-settings#trees-and-tree-maintenance

Cookies help us deliver our services. By using our services, you agree to our use of cookies.