Nov 25, 2009

Experimenting with HTML 5

by Adrián Romero
HTML 5 is the next mayor revision of the core language of the world wide web, the HTML language. Openbravo ERP and other enterprise applications are based on this language. This specification is still in draft status but newest versions of most popular web browsers, including Internet Explorer 8 :-), have support for some of the new features introduced by HTML 5. Even better, web browsers included in advanced smartphones and mobile devices like iPhone / iPod Touch or those based in Android 2.0 also have support for the most exciting features of HTML 5. At the moment of writing this article I tested HTML 5 with Firefox 3.5, Google Chrome, Safari 4 and the iPhone / iPod Touch OS version 3.0, and most of the features described in this article are ready for production deployment with no major impediments.

This new revision is a major step towards the support of full featured web applications. It includes features that aims to reduce the dependency on proprietary technologies like Adobe Flash, Microsoft Silverlight, Java applets and a long list of other web browser plug-ins. With HTML 5 combined with current techniques that combine AJAX, javascript and DHTML, developers can write cross-browser web applications with functionalities we were used to have only for desktop applications.

Mobile web applications will be easier to develop and deploy. Developers will not need to learn new technologies or create different applications depending whether the target platform is a mobile device or a desktop computer. They will have a full control whether the mobile device is on-line or off-line and with the increasing popularity of iPhone / iPod Touch touch and Android, they will be sure that their applications can reach a big slice of the mobile market.

If you browse the web searching for explanations and samples about the new features of HTML you will find a lot of articles with detailed information about it. I will only comment the most interesting features that in my opinion are focused for rich featured web applications. I recommend browse the samples published in HTML 5 Demos and Examples by Remy Sharp.
  • Off-line web applications. Properly configured, web applications will be able to work off-line using all application resources like html pages, javascript files, etc. cached in the client side. Web applications will be able to detect if the web browser is on-line or off-line and behave according this status.
  • Local Storage. With this feature web applications will be able to store locally in the client side data as application data or session data. This local storage can be very useful to let users work off-line and submit all the work done when the device is on-line again without losing any piece of data.
  • Input element improvements. For data centric web applications, data type input, and validation will be easier and integrated with the web browser without external libraries. Unfortunately, the support of this feature in current web browsers versions is very poor.
  • Geo-localization. Very interesting for mobile applications. With this feature, web applications will be able to offer data to the user contextualized in the place he or she is.
  • Canvas. This feature allows web applications to draw rich and dynamic graphics in the client side without having to generate these graphics in the server side. For example, there already exists impressive javascript libraries to render full featured charts using this new HTML 5 feature like RGraph.
  • Webworkers. Using this new feature developers will be able to implement background processes in the client side leaving the application responsive to user actions and without blocking him.



Nov 24, 2009

A Christmas Carol: Advanced Payables and Receivables Management Redesigns

by Rob Goris
In the novel A Christmas Carol by Charles Dickens, clerk Bob Cratchit famously spent his Christmas eve doing the final 'bank reconciliation' for his employer, Ebenezer Scrooge. Only when reconciliation was complete he was allowed to go home for Christmas dinner with his family. Nowadays bank reconciliation isn't such a punishment anymore thanks to accounting and ERP software but there is still a lot to improve. Too late for Bob now but for all other incumbent financial staff among you we have some good news.

We have been working on enhancing the user experience in Customer Payment (AR), Supplier Payment (AP) and Financial Account Management, including a full reconciliation process. We now want to validate our designs with you to make sure we are on the right track.

So make life better for all Bobs out there and have a look at our videos and give your feedback on the User Experience Lab forum

Happy Christmas in advance!

Rob Goris - User Experience Architect, Openbravo S.L.



Nov 24, 2009

How to create dataset announcement

by Anandan Narasimachari

In HowTos section, the How to Create Dataset document has been completed and it is available for the Community. This document explain how to create and install the dataset based on the different access level.

Please click the link to know more on How to create dataset in step by step flow. In this document the Indian State module is included as one of the example under Dataset of Regions.

Contribute to the Openbravo Community by developing an sharing modules of your country regions! :)




Nov 19, 2009

Ubiquity command for searching in Openbravo’s wiki

by Iván Perdomo

If you are a command-liner (like me) you should take a look the Ubiquity extension for Firefox.

Don’t just surf the web — command it!

Ubiquity is a time-saving Firefox extension that simplifies common web activities by letting you give commands to Firefox…

Ubiquity extension provides an API that allows you create your own commands. I took a moment and created a command to search some term in the wiki: obs.

You can see it in action:

You can grab the command’s code from here:
http://bitbucket.org/iperdomo/labs/raw/tip/ubiquity/obs.js

I hope it saves you some time.




Nov 19, 2009

ScrapBook

by Galder Romo

I would like to talk about a very useful tool I have just find out: ScrapBook.

ScrapBook is a Mozilla Firefox add-on to save web pages and have a look at them later offline. It is really useful when your Internet connectivity is very bad or slow.

It saves web pages, single or multiple. I mean, not just a single web page but all related links in the page you are saving. You can decide depth. You can later on highlight some text, add a sticky comment, remove some content you do not want to save from a page, etc. It also includes folder and page management for “scraped” items, importation and exportation tools, size calculation features, etc.

A really interesting for those who have limited connectivity and need to check some documentation web pages frequently.

For example, I have the Openbravo wiki (http://wiki.openbravo.com) “scraped” on my laptop. It is amazingly useful. I get the information as if I would have the wiki on my localhost. Here you have a screenshot:

Scrapbook

Do you have any similar interesting tools useful for Openbravo Community?




Nov 18, 2009

RM updates: Automation and upgrade of Mantis @ Openbravo

by Harpreet Singh Wadhwa
We are almost close to achieve milestone 2 of Continuous Integration. The team is working really hard on finding a solution for existing challenges as well as proposing ways to automate current repetitive tasks.

Last sprint we have completed one of the most challenging tasks "automated code migration from pi - main". Now we have obx generated from main branch if all the tests are successful. Plans to generate an obx on every commit are heavily debated within the team.

Now we have tecnicia14 resurrected. This will help our developers as well as our QA team to see the code changes in the live environment (live and liveqa).

Apart from the CI infrastructure, we have also upgraded the Issue Tracker version to 1.1.8 which is the latest stable mantis version available. We are also in the process of ensuring we have a hard backup of all the important instances running in Amazon ec2.

For a complete list of the on-going stories that we are working on, please check the Sprint 28 page of our Scrum spreadsheet



Nov 17, 2009

Shipments Awaiting Invoice report

by Rafa Roda Palacios

Mike is a bit stressed. Sarah, the accountant, just e-mailed him announcing that the company has invoiced 6% less than usual while orders remained stable. Were these orders properly shipped? Mike is 100% sure that last month he shipped the regular quantity of goods. Well, he is the warehouse manager, he is in charge of shipping what customers order, but how can he know if these shipments have been properly invoiced? “Actually, that’s not my job.”, he thinks. Sarah thinks exactly the same; she ensures that customers are invoiced but doesn’t have a clue which goods have been shipped or how.

Do they perhaps need a report that identifies the shipments not yet invoiced? How lucky they are: Openbravo ERP has a Shipment Awaiting Invoice report module.

Functionality

Shipments Awaiting Invoice report aims to answer the following business question: if we are receiving a regular quantity of orders for regular amounts, why are we collecting less money?

  • Is there a problem with the shipments?
  • Or are the goods correctly shipped, but these shipments are not properly invoiced?

Grouped by business partners and shipments, the Shipments Awaiting Invoice report will display in HTML or PDF format:

  • The shipment line product,
  • the ordered quantity,
  • the shipped quantity,
  • the quantity invoiced
  • and the pending amount to be invoiced (as the pending quantity to be invoiced multiplied by the product price).

Report

This data can be filtered by:

  • Shipment date
  • Business partner
  • Order document number (the complete or partial sales order document number in our Openbravo ERP system).
  • Shipment document number (the complete or partial goods shipment document number in our Openbravo ERP system).
  • Delivery terms
  • Form of Payment
  • Payment Terms
  • Organization

Filter Window

Technical design

Packaged in a module, this report is made of a manual filter window and a Jasper Report template.

This simple development was tackled component by component:

  1. Definition of the module,
  2. development of the Application Dictionary components,
  3. development of the filter and report user interfaces,
  4. development of the database query
  5. and development of the controller servlet.

You can find the technical documentation in the project’s Forge and the code versioned and publicly available in the Openbravo source code repositories.

Extension

Sarah and Mike do not really need all the filter fields:

  • Sarah does not need to know about Shipments Document No. or Delivery Terms filter fields
  • and Mike does not want to be confused by Form of Payment or Payment Terms.

In order to achieve these functional requirements:

  • Two new reports will extend the original Shipments Awaiting Invoice report. We will call them, for instance, Shipments Awaiting Invoice for Accountants and Shipments Awaiting Invoice for Warehouse Managers.
  • Accountant and Warehouse Manager roles will be granted access to the Shipments Awaiting Invoice for Accountants report and to the Shipments Awaiting Invoice for Warehouse Managers report respectively.
  • The filter window of the Shipments Awaiting Invoice for Accountants report will hide Shipments Document No. and Delivery Terms filter fields.
  • The filter window of the Shipments Awaiting Invoice for Warehouse Managers report will hide Form of Payment and Payment Terms filter fields.

Summary

Based on some business needs, we went through the functional and technical documentation of a simple report module, pointing to the relevant sections to develop it and presenting its extension possibilities.

Feel free to download and install the Shipments Awaiting Invoice report module. You are welcome to provide feedback in the project’s forum and log issues and feature requests in the issue tracker.

Mike and Sarah are now in a better mood: once the shipments that were not invoiced were identified, they could take action on them and the company is again following its regular income path.




Nov 17, 2009

Critical change in Openbravo 2.50 public API

by Ismael Ciordia
There has been a critical change in Openbravo 2.50 public API to be released in MP9 (November 30th, 2009). DAL implementation of columns referenced as Number in the Aplication Dictionary are mapped now to BigDecimal intead of Float. Getters and Setters for those columns are no longer using Float data type but BigDecimal. For example, instead of

java.lang.Float org.openbravo.model.common.currency.ConversionRate.getDivideRateBy()

now it is implemented as

java.math.BigDecimal org.openbravo.model.common.currency.ConversionRate.getDivideRateBy()

Main reason for this change is that original API (using Float) was wrong: arithmetic operations with Float properties might result in wrong results since java can not represent float-point precisely

As a result, modules and customizations using DAL getters or setters of columns with reference Number will need to be fixed before updating your instances to MP9. The fix is quite simple: just replace the Float method (in getters) or the Float parameter (in setters) by a BigDecimal one.

By November 15th 2009, from almost 100 published modules there are only three affected by this API change:

 

  • Invoice Register Book
  • POS Sync Webservice
  • IDL
  • 347 report
The four of them will be fixed by Openbravo team and a new versions including that fix will be published at the same time MP9 is published, so updates applied from Central Repository -using scan for updates in Openbravo Module Management window- will be transparently applied without errors. Openbravo team will continuously monitor new published modules during the next months to avoid an instance running MP9 or higher to use a module using old API. We will keep all of you updated on our findings.

You have to take care about your not published modules. It is very simple to check if your module is broken because of this change: update your development instance to current pi repository -or to MP9 after publishing- and build the system: the error will be clearly raised by your system.

Openbravo is strongly commited to keep its public API stable within major versions but there is no point to keep stable something if it is wrong. We have tried to minimize the pain by temporarily creating duplicated getters and setters using both data types (Float and BigDecimal) and setting the Float ones as deprecated to allow a gradual fix of the problem. But it is not possible to have two methods with identical signature and different return type and other approaches would have lead into a more painful solution of the problem.

I apologize for any inconvenience it might cause. This alert has been announced in Openbravo Developers forum:


Please monitor that thread to keep updated on the issue.
Thanks,
Ismael



Nov 16, 2009

The perfect fit

by Openbravo QA Team

Very often, people is using the term “QA” for grouping so many disciplines that the very concept of Quality Assurance has become something difficult to describe.

In a previous post, we were trying to describe what Quality is. If the concept of Quality is so diffuse, it is not surprising that the discipline that must assure it was also diffuse.

Quality Assurance or Quality Control?

No, we are not going to start a new QA vs QC debate here. We will try just to put some borderline that works with our objectives of improving Quality.

Software Development is a complex process. Generally speaking, you could say that is like if process of building a house started by designing and making plaster panels, cutting down the trees to make the wood you will need, and so on. And, as an industry, it is not mature enough to be fully reliable. Would you buy a car with a sticker in the steering wheel saying:

Enzo Ferrari car

An Enzo Ferrari (source Wikipedia)

ACarForYou ltd. do not represent or warrant to you that:

(a) your use of this car will meet your requirements,
(b) your use of this car will be uninterrupted, timely, secure or free from accidents,

(c) any information obtained by you as a result of your use of this car will be accurate or reliable, and
(d) that defects in the components provided to you as part of this car will be corrected.

However, Software industry makes millions while including a text like that in the EULAs.

A well established discipline in other industries like Quality Assurance is, in Software, a matter of opinion. But there are some basics to work with.

Nowadays, every development task has some kind of inherent quality process. There are spell checkers, autocompletion abilities, and other useful stuff. Even a basic task like compiling will take care of a number of issues.

A well-trained developer is also able to run the code (s)he just wrote to test a kind of flows and check that after fixing the compilation-time errors, the code actually do anything.

We cannot say this tasks do nothing for improving code’s quality, although we will say it is not Quality Assurance nor Quality Control. It is part of Coding Phase. Does it mean that not Quality Assurance exist during Coding Phase? Of course not.

Nice things as Peer Reviews happens while coding. If you see a programmer using Vim for developing Java (get it) code, probably you would suggest switching to Eclipse (get it) or other IDE.

We, as a Quality Assurance department, believe that no specific task adds quality per se. Peer reviews are not suitable for most of the projects. They are expensive since most valuable resources (experienced developers) are the bottleneck. And may be Vim is just what meet developer’s requirements about an IDE, so installing and fine-tuning Eclipse is basically a cool way to waste time.

So, the major goal is to find the perfect fit. A set of processes, tools and disciplines that maximize the quality of the developed code.

Continuing this set of posts we will go deep into some processes, like Black Box Testing (including automation), Unit Testing and User Acceptance Testing.

We will analyze some tools that helps us, like Defect Tracking System, Test Cases Manager and Shared Virtual Machines.

We expect also to cover disciplines such as Agile Development, Professional Testing and Project Management among others.




Nov 16, 2009

Orders Awaiting Delivery report

by Rafa Roda Palacios

Ring, ring, …
- “Hello?”
- “Hi Matt, it’s Tim.”
- “Hi Tim, how’s the family?”
- “Well, but what about the status of my order 89276523D?”
- “Uhmmm…, wait a second please.”
- “Sure.”
15 minutes later…
- “Tim? Are you still there?”
- “Yes! I am!”
- “OK, so I talked to the warehouse guy and he told me that there has been an inventory shortage. So I talked to the production guy and he told me that he did not receive the raw materials. Then I talked to the purchase guy and …”
- “Don’t tell me stories Matt… My components haven’t been shipped yet, right?”
- “No, Sir…”
- “Grrrr! Bye!”
- “Is this a definitive goodbye?”
Tu, tu, tu, …

Did you find it funny? Tim, the customer, did not… neither did Matt, the sales representative. Poor Matt, how easy would his life be if he could know, right away, the shipping status of any sales order. And how much easier if customers could directly check the status of their orders by themselves, without having to phone him. Fortunately, Openbravo ERP is here and the Orders Awaiting Delivery report module is what Matt needs.

Functionality

Orders Awaiting Delivery report aims to provide a meaningful piece of information to sales representatives and managers:

  • What is the status of this sales order?
  • Have all the order lines’ products been shipped yet or not?
  • If not, do we have enough stock to proceed with the shipment?

And this information can afterwards lead to more questions:

  • If there was enough stock, why have the order lines’ products not been shipped yet? Is there any problem with our shipping company?
  • If there was no stock, why are we in inventory shortage? Problems in our production chain or problems with our suppliers?

Grouped by business partners and orders, the Orders Awaiting Delivery report will display in HTML or PDF format:

  • The order line product,
  • the ordered quantity,
  • the pending quantity to be shipped (as the ordered quantity minus the already shipped quantity)
  • and the quantity available in stock.

Report

This data can be filtered by:

  • Order date
  • Business partner
  • Delivery terms
  • Order document number (the complete or partial sales order document number in our Openbravo ERP system).
  • Order reference (the complete or partial purchase order document number in the customer’s information system).
  • Organization

Filter Window

Technical design

Packaged in a module, this report is made of a manual filter window and a Jasper Report template.

The 3 steps of this simple development were:

  1. The definition of the module,
  2. the development of the filter window
  3. and the design of the report template.

You can find the technical documentation in the project’s Forge and the code versioned and publicly available in the Openbravo source code repositories.

Extension

This report may not fill all Matt’s needs, so let’s extend it.

From a functional side, Matt wants:

  • That customers can directly access Orders Awaiting Delivery report in his Openbravo ERP system, so they do not have to call him for the information.
  • The customers have only access to their orders, avoiding that they see others’ data.

In order to achieve these functional requirements:

  • A new report will extend the original Orders Awaiting Delivery report. We will call it, for instance, Orders Awaiting Delivery for Customers.
  • A new role will be created, having only access to the new Orders Awaiting Delivery for Customers report.
  • A new user will be created. This user is associated to a business partner.
  • The filter window for the Orders Awaiting Delivery for Customers report will only display order date, order document number and order reference filter fields.
  • Business partner filter field will not be displayed but will be defaulted. The default value will be the associated business partner of the logged user.

Summary

Based on some business needs, we went through the functional and technical documentation of a simple report module, pointing to the relevant sections to develop it and presenting its extension possibilities.

Feel free to download and install the Orders Awaiting Delivery report module. You are welcome to provide feedback in the project’s forum and log issues and feature requests in the issue tracker.

Ring, ring, …
- “Hello?”
- “Hi Matt, it’s Tim.”
- “Oh, Tim, it’s been a long time… Did you receive the components?”
- “Yes, I did. No problem. How’s the family?”
- “Uhmmm… Well, thanks.”
- “I’m just phoning you to tell you that your Orders Awaiting Delivery for Customers report just rocks.”
- “I’m glad to hear that.”
- “Bye! Take care!”
- “You too, bye!”