From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

Submitted by Trifon and Assigned to Trifon

Assigned to Trifon

Adempiere contributions

Functionality Contributions

EDI @ Adempiere - Sponsored Development: EDI Import/Export

  • Products for companies working with electronic documents in EDI X12, HIPAA, EDIFACT, XML, flat file and many other formats.
  • SmooksSmooks for Mule enables Message Transformation and Routing using the Smooks Engine. Smooks is a Java Framework/Engine for processing XML and non XML data (CSV, EDI etc).
  • EDIELThe EAN and Ediel project for invoicing in the downstream electricity power market

Replication @ Adempiere - Sponsored Development: Replication

  • HermesJMSA console that helps you interact with JMS providers making it easy to browse or seach queues and topics, copy messages around and delete them.


Swing POS @ Adempiere - Sponsored Development: Swing POS

Cash Payments @ Adempiere - Sponsored Development: Cash Payments

Simplify and Speedup Adempiere development

SF.NET forum post here

Feature Requests:

This enhancement allows Adempiere developers to:

  • Speedup thier day to day work and to have more Object friendly code.
  • Work with Java Interfaces instead of Java Classes.

For example:

    • Adempiere - Old code
Trx trx = Trx.get(Trx.createTrxName("Test"), true);

MAlert alertOldWay = new MAlert(Env.getCtx(), 100, trx.getTrxName());;
X_AD_AlertProcessor alertProcessorOldWay = new X_AD_AlertProcessor(Env.getCtx(), alertOldWay.getAD_AlertProcessor_ID(), trx.getTrxName());"alertProcessorOldWay.getAD_AlertProcessor_ID = " + alertProcessorOldWay.getAD_AlertProcessor_ID());

alertOldWay.setDescription("Trifon test");
//--- Save; 
resultSave =;"resultSave = " + resultSave);
System.out.println("New value of Description = " + alertOldWay.getDescription());

    • Adempiere - New code
Trx trx = Trx.get(Trx.createTrxName("Test"), true);

I_AD_Alert alert = new MAlert(Env.getCtx(), 100, trx.getTrxName());;

I_AD_AlertProcessor alertProcessor = alert.getI_AD_AlertProcessor();"I_AD_AlertProcessor.getAD_AlertProcessor_ID = " + alertProcessor.getAD_AlertProcessor_ID());

alert.setDescription("Trifon Description modified!");
//--- Save; must be static method!!! Two way of usage: or
//resultSave =; 
resultSave =;  // Overloaded save method; For simple usage!"resultSave = " + resultSave);
System.out.println("New value of Description = " + alert.getDescription());


This modificationas make Adempiere code closer to Hibernate

    • Hibernate code. Example code from here.
Session session = HibernateUtil.getSessionFactory().getCurrentSession();


Event theEvent = new Event();


Proposed by Hengsin modification:

Add second interface I_Persistent with one method save()

public interface I_Persistent {
	public boolean save();

  • Using the coding pattern below instead of the old new MAlert(Env.getCtx(), 100, trx.getTrxName()) approach would ensure your code always using the correct model class.

How to load:

// to load existing record
int AD_Alert_ID = 100;
MTable table = MTable.get(Env.getCtx(), I_AD_Alert.Table_ID);
I_AD_Alert alert = (I_AD_Alert)table.getPO(AD_Alert_ID, trxName);

How to create new record:

// to create new record
MTable table = MTable.get(Env.getCtx(), I_AD_Alert.Table_ID);
I_AD_Alert alert = (I_AD_Alert)table.getPO(0, trxName);

  • Classes which override save() method:

Generated Model class must implement both interfaces and extend PO.

Weak sides that need to be improved:

  • Hard coded Document Engine
  • Hard coded lookup of model class
  • Hard coded list of document type for new client
  • Incomplete Security Implementation
  • No plugin/module support. Both ADCK and 2Pack support dynamic deployment of AD changes but doesn't address the need to deploy java code extension ( especially problematic/messy if your extension needs to use additional third party library).
  • Incomplete web client port
  • Incomplete workflow engine implementation
  • Various swing client bug and limitation

Re-Organize Adempiere menu Items

Persistence of swing tables

Set proper Field Group of fields

Planned Contributions and Tasks

  • Restrict form "Generate Invoices (manual)" to show only public records (hide locked records) BUG - 1713337
  • Restrict form "Generate Shipments (manual)" to show only public records (hide locked records) BUG - 1713317

Interesting bugs/patches/Feature Requests

Feature Requests

Adempiere Open Office plug-in by Praneet