Information from the founders Jorg Janke and Kathy Pink

September 2008

09/27/2008

Compiere is designed to support the user interface in multiple languages - and to support multiple document languages. Example: the users of the system with English or Spanish windows/reports - while you are sending invoices (documents) to your customers in English, German and Russian.

Out of the box, Compiere provides the infrastructure for 28 languages including the two Chinese, Japanese, Thai, Spanish (and Mexian), as well as British and Australian. The language infrastructure is based on Unicode and handles all languages and dialects.

The bulk of the translation is exported and imported via XML files to allow the use of translation tools like Trados. Even though it might seem easier to "just translate" the system, you will realize significant savings for maintaining the translation with a translation tool - and the initial translation also will be less effort and with higher consistency.

Compiere at this very moment has about 106,000 words to translate. You can reduce that volume to about 98,000 if you only translate the parts a user of the system would see (i.e. not system administrator functionality). If you skip the translation of the Help text (i.e. only labels and bubble help), the word count is reduced to 46,000.

Compiere offers "Language Packs" which are a good base for a translation. Here I want to outline, what steps are necessary to create and maintain a Language pack efficiently:

09/22/2008

Compiere allows to define security rules based on Table, Column or Field and Record level. Here, we discuss your options of Field or Column level security.

There may be situations where you do not want specific users to have access to certain data. For example, for some of your data entry clerks you do not want them to update the price list on Sales Orders. When entering Sales Orders, the price list will default to the default sales price list defined for the entered Business Partner (if no default it defined then the default price list is used). The data entry clerks should be able to see the price list, but the field should be read only. The data entry managers, however, should be allowed to update the price list.

09/13/2008

Aspect Oriented Programming (AOP) is an approch to manage functionality (aspects) of crosscutting concerns. The dedicated development environments allow the user of a developed functionality to add join points in method calls, etc. to add new behavior or even overwrite current behavior. Aspects are a great way to isolate customisations and extension functionality.

Compiere is developed in a "classic" non-aspect oriented Java environment, but allows the user to "plug-in" their extension quickly without the need to modify or extend the underlying class. This eases development and certainly migraion of that functionality to new versions or distributing that functionality to multiple sites.

Compiere provided the following join points for quite some time:

Before Save (new or update) or Delete of any Persistent Object (PO)

Before the workflow step Prepare or After the workflow step Complete

After the user and role is identified in the Login process

Before a Info window is displayed to modify or add information columns

09/06/2008

Compiere has the ability to dynamically create default field values when a new record is created (SQL, constant, preferences). In addition to this, Automatic Assignments allow to set values after the user pressed save, just before a record is saved. This could be used to create a default value without user intervention or if the user fails to define a value. Another use is to assign a certain value based on other fields.

Automatic Assignments are basically declerative before-insert/update/delete trigger and the main use is to complete records based on user entered values, set status, routing. It is an easy alternative to extending the business class and modifying the beforeSave method.

Examples include: In a Lead assign the sales rep based on the country/region of the lead;

The Automatic Assignment allows you to add business logic without programming nor impact on migration to new versions and with that an ideal Customization tool. It acts like a Trigger and it's execution is logged.

You define the auto assignment for a certain table and select the situation the assignment should take place: e.g., when a record is Created and/or Updated. You can add the restriction that the record cannot modified if processed (for documents are assumed to be read/only after processing).