Element and Synchronize Terminology
Elements define the text in the label to be displayed for each field in the application as well as its related help. Each column in the Application Dictionary is linked to an element, note that more than one column can be linked to a single element, this is the way to reuse the same text for different columns (and finally fields) in the application. For example, C_BPartner_ID is the name for a number of columns in the application, all of them are a reference to a business partner, thus the text to be displayed as well as the help for all of them is the same; instead of maintaining that information redundantly in each column all these columns use the same element.
Elements can be edited in Application Dictionary || Setup || Element window (as System Administrator); but, usually, elements are not directly created using this window but by the Synchronize terminology. Once the element is created this window is used to edit its contents.
It is the process that creates the elements for the columns that do not already have an associated one and copies the information in the elements to the columns and fields which are linked to them.
To run it go to Application Dictionary || Synchronize Terminology as System Administrator. Basically this process looks for all the columns that have no linked element, in case the there is an element with the same column name that the orphan column's one this element is linked to that column, other case a new element is created with the same column name the column has. All that is done taking into account module, thus an element is only reused if it is defined in the same module as the column's one or in another one dependent from the column's module. It also copies the text in the elements to the fields that represent the columns for those elements.
Here are all the steps the Synchronize Terminology process executes.
- For all the columns and process parameters in the dictionary without element, create an element in case there is no element with the same column name in the same module or in a dependent one, copying to the new element name, help and description from the column/parameter.
- Delete all the elements that are not used anymore.
- For the rest of columns and process parameters without elements associate the existent element in the same module or in a dependent one having the same column name.
- Update columns and process parameters with the name, help and description values in their associated elements.
- Update centrally maintained fields with the name, help and description for the elements associated with their associated columns.
- Update workflow nodes with the name and description in their linked windows.
- Update menu entries with the name and description in their linked windows, processes, forms or workflows.
Central Maintenance for fields
In most cases the previously defined process fits all the requirements for field labels. But in some occasions, it is wanted to have a field with a different set of label, help and description than the rest of fields associated to the same column. For these cases it is possible to set no to the Central Maintenance check in Application Dictionary || Windows, Tabs, and Fields || Window >> Tab >> Field , doing so name, help and description in the field will not be overwritten with the element's ones.
Let's see how it is used in with an example. A very common column name is AD_Language, these columns are a reference to languages stored in AD_Language table. The name for the AD_Language element is Language and its help is The Language identifies the language to use for display which is very general. Modules have a language (which might be different to English) which they have the UI defined in, the label and help for AD_Language field in Application Dictionary || Module are Module Language and This language defines the language used as base for the user interface elements in the module, this is done by setting the field for AD_Language column in Module tab as not centrally maintained and writing directly in the field the name and help.
As elements are used to define text to be displayed in UI they can be translated to different languages. The text in the element must be written in the language its module defines, and the it can be translated to other ones. The standard way to translate is by creating a new module with no additional functionality but just translations for the module.
If you look the fields in the Application Dictionary || Setup || Element you will notice there are standard fields (name, help...) and the sames ones but for purchases.
In Openbravo ERP there are some tables that are used for sales and purchases transactions, for example C_Invoice table contains both sales and purchases invoices. This means that Purchase Invoice || Header and Sales Invoice || Header tabs use the same table. But it is very usual to label fields for the same column in a different way depending on whether it is a sales or purchase window. Instead of doing it setting all the fields in the purchase windows as not centrally maintained this is achieved by populating in the correspondent elements the standard names and the purchase ones. Then the windows are distinguished between sales and purchases using the Sales Transaction check in the Application Dictionary || Windows, Tabs, and Fields || Window tab.