Thursday, April 03, 2014

Modern Budget ERP

I am double happy to blog about my latest plugin done for iDempiere ERP suite, coupled with the fact that I did this while traveling around Vietnam for a month from February 16th., from up in Sapa highlands near China's border north of Vietnam until south in Saigon, hopping on and off trains to savour about 7 places in all.
(First two photos) Having my first working breakfast here with Hiep Le Q. He is one of the reasons I dare come to Vietnam as he has contributed good code reviews with working patches to our project. He is also a tremendous and awesome host who brought me to this Sapa, Hanoi, spent two weeks in his home town of Thanh Hoa, before I headed on my own by rail to Hue, then Da Nang, then Na Thrang and finally Saigon (third photo).
Vietnam is fantastic not just the exotic nature and rustic way of life, but the people are just simply too friendly and generous. And its conservative traditional culture is perfect for me to evolve the most modern of a budgetary system for iDempiere. Hiep has also given me ideas as I helped him look into his family business comprising of a sea clam export factory and a pig farm. Ensuite I helped put down the BOM Drop function for iDempiere.

Back to this plugin I just contributed in my forum here, about a modern budgetary forecast and control system, that can easily plug in into the iDempiere ERP suite without stopping it. And the plugin can be stopped without the users knowing the budgetary constraint is off. It really is a charm for ERP as there is no adverse impact.

This brilliant module allows revenue forecasting based on any number of past years and extrapolate in easy ready formulas. It tracks any item during purchase or Journal entry according to the criteria of Business Partner, Period, Accounting element, Product, and Project Activity.
This is a work in progress where my subsequent version shall allow month to month rolling forecasting for a budgetary control that cannot get more modern than this.  So do follow the links given in the text. I will update this blog with the final PDF guide. Meanwhile I post one final photo to assure travelers to Vietnam that their scooters are as robust as their long haul trains.

Friday, February 14, 2014

Ohloh Statistics Compares Compiere ADempiere iDempiere

It rhymes doesn't it? :) Well, you probably know what Ohloh is, but it can be fooled if you put blank lines into your source-code for its robot scripts to compare between the immediate descendants of Compiere. So what we can do is to check for non blank lines with,
cat `find . -type f -name "*.java" -a ! -name "[XI]_*.java" | fgrep -v org/apache/ec | fgrep -v posterita` | egrep -v '^[[:space:]]*$' | wc -l
We are also excluding the X and I generated classes as well Apache libraries above there. What we get are some graphics. Firstly all in the same pirate ship, followed by forking point of iDempiere from ADempiere (sorry for compear, i mean compair, compare, Compiere.):

This will tell you that the best free ERP in the world has no more than 700 thousand lines of pure logic code.

The last one above looks at the forking point more closely. Though real lines of code does not indicate quality of work of growth of project but we thought that this might be interesting to look at as well as further promote what Ohloh is fantastic at.
This study was conducted by Carlos Ruiz, GlobalQSS, COLOMBIA - a top maintainer of project code since ADempiere days. Note also the Ohloh stats for all three projects are linked above. Below is my own further looking at the Ohloh stats closer and noted that it does give blank lines information. Do not take my word for it. See for yourself:
The above is showing ADempiere has more than 1.2 million blanks.
iDempiere has about 701 thousand blanks whereas ADempiere somehow bloated 3 times. That does not seem right. Wonder who is maintaining them?

Sunday, February 09, 2014

Budgetary Control plugin for iDempiere ERP

Last week I was in Bangkok to train the ADempiere Localization contributor, Sureeraya Limpaibol's company how to migrate from their ADempiere v.3.5 to latest iDempiere which regard modules as decoupled plugins in the OSGi framework. While choosing any of their flagship apps as a sample plugin, we discovered their Budgetary Control system was very simple indeed. It is now forwarded as It is dead simple for the following process:

First you define a Budget Details template to later commit to a GL Journal which will then post to the 'Budget' type of the Acccounting Facts which is already there since Compiere days but hardly used until now.
Then you begin to make Purchase Requisitions as usual, but quietly the system will make sure you got the budget for it.

Screen Shot 2014-02-06 at 3.30.33 PM.png - Latest 06/Feb/14 3:49 AM - Redhuan D. Oon

It will check of the budget reserved by other Requisitions be they completed or closed, and compare with the budget amount. When it exceeds the budget under the Project or Campaign or Activity your Requisition falls under, it will stop it and not allow to complete.
This module exists as a standalone OSGi plugin and does not impact the core iDempiere for two reasons:
1. It is an OSGi plugin outside the core (rather obvious)
2. Its new business logic is housed within the Document Event Validator (formerly ModelValidator) in a 'Spring'-like or known as the Inversion of Control pattern or also known as the Hollywood Principle, 'Don't call me, I call you' way of registering itself as a new intercepting rule when the plugin is active and not so when it is stopped or uninstalled. Both start and stopping of the plugin does not need the core stack to blink or brought down as ADempiere or other apps server have to do.
You can download the plugin here
SYSNOVA is sponsoring me to fully develop this with more features:
1. Cover any other document in use during operations such as Invoice, Payment, Order based on reservations by any other unassociated document subtracted from the budgeted amount;
b. Cover any scenario based on combination of Activity, Project, and/or Campaign.
c. Further budgeting dimension control based on Accounts ID, Product, BPartner, Sales Region, Period, Org and 2 other user defined elements
2. Fitnesse testing on budget operations
3. Specifications & Operational manual.
Further specifications or requirements from global users are welcome for me to consider before i fully develop this highly significant accounting and financial management feature for our best free ERP project in the world. Deadline of submission: March 1, 2014.
I am thinking of breaking this into two tier plugins:
A. Base plugin that just handle setting of the BudgetDetails and posting to GL Journal.
B. Client plugin with DocEvent logic that is not code and model dependent on the BudgetDetails for easier maintenance and different budgetary control logic in the form of interchangeable plugins.
[Due to an erroneous claim of novelty from a closed fork of ADempiere (concluding from comments below), i am starting from scratch the Budgetary System here in compliance with GPLv2]

Saturday, February 08, 2014

Info Window in ERP access multiple data stores

Let's say you want to access a Business Partner window but with other joined information in the display panel. Then let's say you want to search according to certain criteria. Well, that is what Compiere's Info-Window could do.  But it is hard-coded. In the ADempiere fork of the sold off Compiere, Libero introduced the Smart-Browser that is abstract, soft configurable without changing Java code. It even has an embedded Process button to take records that the users selected from the display of records to be processed.
In iDempiere, Low Heng Sin developed something similar but even more abstract and still allow hard-code customization by extending the Info-Window Java class. The records can individually look up its main record window by a Zoom function. It access its Sql JOIN tables in a single Application Dictionary window, unlike Smart Browser which does that in two different AD windows. Here it is shown below in the Warehourse Management System I converted as a plugin into iDempiere.
However iDempiere Info-Window lacks the Smart-Browser process button until Sysnova sponsored me to do that, and now we got that, now in the core source of iDempiere:
Now the Info-Window has a Process button that works similar to the Smart-Browser and tested successful in the WMS module.
At the same time, Xolali (Anthony Soosah) of Ghana also contributed sub-info tabs that allow any row to look up more related Info-Windows.
Now the Info-Window has children!

They can also work in combi, and does not impact or break anything else that was working before. It is backward compatible to your older Info Window definitions. Below is trying to be smart, using both Process and sub-info.
You can read in detail from a user and developer perspective in my full PDF guide here or do a cheat-sheet way here

Friday, October 25, 2013

Mobile Access to iDempiere ERP

Today I enhanced 2 more steps on ADAXA's iUIMobile contribution to the ADempiere project. Besides been iDempiere ready as another OSGi plugin, I have solved the multi-language display bug and today top it up with solving for above 255 char filtered languages such as for Russian. You can read the full manual on it. You can run this script directly in your iDempiere to instantly get this capability working on your mobile phone connected to your idempiere-server instance!
You can also test it live online here (Login as: 'superuser @' password: 'System')

Tuesday, October 22, 2013

Manufacturing ERP Plugin

Libero Manufacturing is now an OSGi plugin with embedded data model ready to use on the iDempiere ERP suite. Here is a full Technical Guide PDF and the repository to download for fast install. The developer repository space is in bitbucket.

The basic functionality is described in the ADempiere wiki. It has FitNesse testing ready for fast checking from bugs. Here is the testing setup in action:


Libero Manufacturing has the classic Make To Kit for a BOM (Build of Materials) product that will make a production schedule according to a defined plant machine. It will process the production plan according to processes controlled by the production shop-floor crew. Costing processes are also included automatically during Issue and Receipt of the finished goods into the On Hand Storage locators.

IDempiere now at version 1.0.c has matured features to handle a huge plugin such as this to be loosely coupled yet tightly cohesive and responsive and accurate when first deployed via an embedded 2Pack.

However Libero MFG's customised panel forms works mostly from the Swing client but the server plugin is there for the ZK WebUI to handle its data model and main processes. That is useful during the FitNesse testing.

FitNesse FIT and SLiM in iDempiere

FitNesse is a great way to test and it now comes as OSGi plugins in server and fixture format for iDempiere, the best free ERP software and probably the first ever made with IBM Equinox OSGi framework.
I have made videos to showcase this amazing new feature of iDempiere

while doing another plugin Libero MFG:

I myself have adapted the SLiM flavour (while Carlos Ruiz has worked out a full fledge fully abstracted FIT flavour to test anything in iDempiere) from the interfaces that Low Heng Sin provided in the plugins.

My SLiM reuses back what tests I wrote before for the Libero Manufacturing module, and they now work equally well in OSGi workspace. (See another blog I will be writing after this about Libero MFG successful conversion to iDempiere).

I was a bit stuck at first at the Root page definition to get the SLiM working due to the way it sets its listening port. You can see all the final successful sample scripts in my forum on it.

Wednesday, July 31, 2013

iDempiere vs SAP and my mantra

In Caracas on June 26, 2013, I was asked to present our Free ERP project to a packed audience at the Expotic conference under the auspices of the Venezuelan government. As usual I keep my presentation short (I was given 15 minutes anyway!) and invited questions. I could do that as I came out in the press that morning! Prefect timing from the interview some days ago by an IT feature writer, Rebecca Hung who spent three days interrogating me why I said this iDempiere Free ERP software project can reverse Venezuela's brain drain as well as make ERP sustainable on a larger scale for public and private sector use there.

During the Q&A session, one person raised his hand and asked, "I am an SAP consultant. I have 3 questions. SAP has modularity and its componentized. Is iDempiere like that too?" I set to answer that sweet first question by demonstrating our Felix console but using the iUIMobile as a more dramatic and speedy example.
That chap was impressed. Some mouths were gaping. I was gasping with relief because my local Macbook iDempiereServer did not hang up on me (there was no WiFI in that room to connect to Germany's demo site). Everything went like an F1 car without the pit stop - the Felix installed the mobile plugin for me with one touch and /mobile was up and running. And I exactly described it as that, "Look at how this F1 car can change its wheels without the pit stop! Can your SAP do that?"

"No, SAP can't", came the reply that upsets me abit that SAP gave up too easily in this post-Hugo Chavez country, "Now my second question. How do I migrate from an SAP instance to iDempiere?"

That is my sweetest question because it cuts into the crux of the whole essence of my being. "No, you do not do that!" came my surprising answer. "This is the crux of the whole essence of why I am here appealing to your institutions, your universities, your youth, your government that ERP does not mean software but a consulting process. It involves experience with large business needs and constraints. It means building an eco-system to sustain any effort to implement ERP".

"Thus before you migrate, you have to conduct a study, an analysis on the impact but better still to inter-operate with the SAP system in the case that its running fine and stable. This is the name of the game in the 21st century. Software must be fast, loosely coupled and not bog you down for ages with constant never-ending changes."

And that is the essence of my struggle and battle-cry. That we sell people expertise that answers such questions in a better light than just some downloader who has no idea what ERP is. That is what will sell our longer consulting years at higher value in years to come and for the young and restless minds in IT today, that is their calling. To save the brain-drain from ever thinking of leaving for greener pastures in proprietary software. This is the freedom to own, innovate and be an expensive part of a new blue ocean.

From Caracas, I returned to Malaysia for hardly a week before I am in the air again this time to Japan where I again preached the same mantra to the user group there. I just returned from Tokyo last week and now recouping before heading out again this November to Slovakia's ITAPA conference on E-Govt. You guess it, the same mantra - sell your ERP expertise, not ERP software. Logo