Skip to main content

Automating Attachments process in Openbravo and the Newton's third law of Motion

Newton at times gets it right. I love his third law of motion. It’s the Newton’s third law that inspired to do something about which I am posting now. I had to work on a Excel processing scenario where data in the form of excel was to be transmitted between Openbravo and another legacy System (I prefer to call .N**  applications legacy systems). Filling the * is left to your imagination.

For data import, I first thought to create an import process like this, but then it was a day to day transaction, so thought it was not so efficient for auditing process. So I decided to use the Openbravo Attachments. So the user uploads an excels and saves the record and I process it accordingly. Part 1 complete. The next stage was creating a report for legacy system and providing it to the user. First I generated it in a particular drive and then users would access it. That was not proving to be good due to many access issues. Then I tried to create a File Dialog reference that would save the file in the location which user specifies. But then the question arises, what if the data is lost somewhere and an user tells he never downloaded it?
Then Newton came to my rescue. The attachments process in Openbravo has a cool feature that I decided to leverage. Not only can users attach files to a record, but they can also download files from an record. So in accordance to the Newton’s third law, if I could process an excel that user had uploaded, why can’t I create an excel and attach an record it to it and let the user download it? Having it operational was the only thing that occupied my mind for about an week.
How attachment works in Openbravo:
When you attach a file to a record, there is a folder created inside the attachment folder (the attachment folder is configured while setting up the instance as mentioned here). The name of the folder will be “tableid-recordid” , where tableid is the unique id of the corresponding table and recordid is the unique id of the record you are planning to attach.Then there is a record created in the C_File table with the File Name, Record Id, TableId. This is interpreted in the application and is presented to us in the application.
This is how my record will be (it’s in Classic UI).

Once the user clicks on the user clicks the Generate Process , a file is created, a folder with the recordid and tableid is created and an entry is made is in the C_File table. Easy. Done. We have attached the excel to the record. This is how the record looks now.

Now the user can just click the pointed button and download the corresponding excel file. :) .
May be it will be useful in any of your interactions with legacy systems…:)


Popular posts from this blog

My 10 years in Application Development

It's been around 10 years since I started programming. May be a bit more, if I have to include my first attempts at C programming in school. But it would be a grave insult to call remembering ten lines of code and just replicating it to put a star on the screen. I also did a course on Visual basic, but it was more gimmicks that Application development. But it was truly in the year 2007 when I started my Master in Computer Applications that I found a new flare for developing applications. 
I was very late to computers in general and even when I joined my Masters, computers were not really accessible to me. But when I joined my Masters where one is actually expected to hone the skills which they already have, but in case it was were I was learning the skills, initially it was very difficult. I was not sure what computers had for me nor I had a natural flair for programming. But the thing about computers that attracted me was the visual medium it gave. Initially it was just a door t…

Changing Timezone in Postgresql, Ubuntu

Timezone and locale are integral concepts that one should be aware of when implementing a System. For example. if you create a database in PostgreSql, it will use the default System settings for the database. Lets say you have a server in UK and your client is US. If the client tries to retrieve the current date or time, it is going to show the UK time and not the US one.
Today I encountered a different issue in our client place where the Ubuntu timezone and PostgreSql timezone were showing a incorrect values. Instead of Indian Standard Time (IST) it was showing Pacific Daylight Time(PDT). These are the steps that I followed to change the timezone to IST in PostgreSql and Ubuntu.
Changing timezone in Ubuntu:
sudo dpkg-reconfigure tzdataYou will be prompted to choose the continent and then the area. Provided screen shots where we configure the location.
Use TAB key to navigate to the OK button and then press Enter.

The changes will get reflected immediately. To check it you can open a n…

Dissecting Openbravo 3.0 UI Architecture

Having been worked on Openbravo 3.0 UI for more than a year now (right from RC1) , Openbravo has leaped ahead of most contemporary ERP's in terms of UX design and usability. And a part of the credit has to go to the community too as they were actively involved in finalizing the UX and also involved enthusiastically in tested out the RC versions and providing their feedback.

In this post, I have tried to draw limelight on the basic UI components that are being used in Openbravo and their corresponding smartclient components. This is just to provide a very high level idea on how the entire architecture is coupled together. I have tried to use a single screen shot of Openbravo interface and tried to map the base components here.

The hierarchy can be visualized in simple terms as follows:

Exhaustive information on these components are provided in the Openbravo Wiki here.

Most of these components are defined and managed from individual files (or code) thereby making it really easy to …